Merge pull request #1232 from wolfc01/master
Allow approval workflow actions only on x.0 file versions
This commit is contained in:
commit
9dcda992cb
@ -110,6 +110,14 @@ class DmsfFile < ActiveRecord::Base
|
|||||||
visible.find_by project_id: project_id, dmsf_folder_id: folder&.id, name: name
|
visible.find_by project_id: project_id, dmsf_folder_id: folder&.id, name: name
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def approval_allowed_zero_minor
|
||||||
|
if Setting.plugin_redmine_dmsf['only_approval_zero_minor_version']
|
||||||
|
return last_revision.minor_version == 0
|
||||||
|
else
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
def last_revision
|
def last_revision
|
||||||
unless defined?(@last_revision)
|
unless defined?(@last_revision)
|
||||||
@last_revision = deleted? ? dmsf_file_revisions.first : dmsf_file_revisions.visible.first
|
@last_revision = deleted? ? dmsf_file_revisions.first : dmsf_file_revisions.visible.first
|
||||||
|
|||||||
@ -24,6 +24,7 @@
|
|||||||
<% wf = DmsfWorkflow.find_by(id: dmsf_file.last_revision.dmsf_workflow_id) if dmsf_file.last_revision.dmsf_workflow_id %>
|
<% wf = DmsfWorkflow.find_by(id: dmsf_file.last_revision.dmsf_workflow_id) if dmsf_file.last_revision.dmsf_workflow_id %>
|
||||||
<% file_approval_allowed = User.current.allowed_to?(:file_approval, project) %>
|
<% file_approval_allowed = User.current.allowed_to?(:file_approval, project) %>
|
||||||
<% allowed = User.current && (dmsf_file.last_revision.dmsf_workflow_assigned_by_user == User.current) && wf %>
|
<% allowed = User.current && (dmsf_file.last_revision.dmsf_workflow_assigned_by_user == User.current) && wf %>
|
||||||
|
<% allowed_minor = dmsf_file.approval_allowed_zero_minor %>
|
||||||
|
|
||||||
<% if file_approval_allowed %>
|
<% if file_approval_allowed %>
|
||||||
<% case dmsf_file.last_revision.workflow %>
|
<% case dmsf_file.last_revision.workflow %>
|
||||||
@ -32,22 +33,43 @@
|
|||||||
<% assignments = wf.next_assignments(dmsf_file.last_revision.id) %>
|
<% assignments = wf.next_assignments(dmsf_file.last_revision.id) %>
|
||||||
<% index = assignments.find_index{ |assignment| assignment.user_id == User.current.id } if assignments %>
|
<% index = assignments.find_index{ |assignment| assignment.user_id == User.current.id } if assignments %>
|
||||||
<% assignment_id = (index && assignments && assignments[index]) ? assignments[index].id : nil %>
|
<% assignment_id = (index && assignments && assignments[index]) ? assignments[index].id : nil %>
|
||||||
<%= context_menu_link l(:title_approval), action_dmsf_workflow_path(project_id: project.id, id: wf.id,
|
<% if allowed_minor %>
|
||||||
|
<%= context_menu_link l(:title_approval), action_dmsf_workflow_path(project_id: project.id, id: wf.id,
|
||||||
dmsf_workflow_step_assignment_id: assignment_id,
|
dmsf_workflow_step_assignment_id: assignment_id,
|
||||||
dmsf_file_revision_id: dmsf_file.last_revision.id),
|
dmsf_file_revision_id: dmsf_file.last_revision.id),
|
||||||
remote: true, class: 'icon icon-ok', id: 'dmsf-cm-workflow',
|
remote: true, class: 'icon icon-ok', id: 'dmsf-cm-workflow',
|
||||||
disabled: !assignments || !index %>
|
disabled: !assignments || !index %>
|
||||||
|
<% else %>
|
||||||
|
<%= context_menu_link l(:title_approval_minor), action_dmsf_workflow_path(project_id: project.id, id: wf.id,
|
||||||
|
dmsf_workflow_step_assignment_id: assignment_id,
|
||||||
|
dmsf_file_revision_id: dmsf_file.last_revision.id),
|
||||||
|
remote: true, class: 'icon icon-ok', id: 'dmsf-cm-workflow',
|
||||||
|
disabled: true %>
|
||||||
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% when DmsfWorkflow::STATE_ASSIGNED %>
|
<% when DmsfWorkflow::STATE_ASSIGNED %>
|
||||||
<%= context_menu_link l(:title_start), start_dmsf_workflow_path(id: dmsf_file.last_revision.dmsf_workflow_id,
|
<% if allowed_minor %>
|
||||||
|
<%= context_menu_link l(:title_start), start_dmsf_workflow_path(id: dmsf_file.last_revision.dmsf_workflow_id,
|
||||||
dmsf_file_revision_id: dmsf_file.last_revision.id),
|
dmsf_file_revision_id: dmsf_file.last_revision.id),
|
||||||
class: 'icon icon-ok', disabled: !allowed %>
|
class: 'icon icon-ok', disabled: !allowed %>
|
||||||
|
<% else %>
|
||||||
|
<%= context_menu_link l(:title_start_minor), start_dmsf_workflow_path(id: dmsf_file.last_revision.dmsf_workflow_id,
|
||||||
|
dmsf_file_revision_id: dmsf_file.last_revision.id),
|
||||||
|
class: 'icon icon-ok', disabled: true %>
|
||||||
|
<% end %>
|
||||||
<% when DmsfWorkflow::STATE_APPROVED, DmsfWorkflow::STATE_REJECTED, DmsfWorkflow::STATE_OBSOLETE %>
|
<% when DmsfWorkflow::STATE_APPROVED, DmsfWorkflow::STATE_REJECTED, DmsfWorkflow::STATE_OBSOLETE %>
|
||||||
<%# %>
|
<%# %>
|
||||||
<% else %>
|
<% else %>
|
||||||
<%= context_menu_link l(:title_assignment), assign_dmsf_workflow_path(id: project.id, project_id: project.id,
|
<% if allowed_minor %>
|
||||||
|
<%= context_menu_link l(:title_assignment), assign_dmsf_workflow_path(id: project.id, project_id: project.id,
|
||||||
dmsf_file_revision_id: dmsf_file.last_revision.id),
|
dmsf_file_revision_id: dmsf_file.last_revision.id),
|
||||||
remote: true, class: 'icon icon-ok', id: 'dmsf-cm-workflow',
|
remote: true, class: 'icon icon-ok', id: 'dmsf-cm-workflow',
|
||||||
disabled: locked || !workflows_available %>
|
disabled: locked || !workflows_available %>
|
||||||
|
<% else %>
|
||||||
|
<%= context_menu_link l(:title_assignment_minor), assign_dmsf_workflow_path(id: project.id, project_id: project.id,
|
||||||
|
dmsf_file_revision_id: dmsf_file.last_revision.id),
|
||||||
|
remote: true, class: 'icon icon-ok', id: 'dmsf-cm-workflow',
|
||||||
|
disabled: true %>
|
||||||
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
@ -209,6 +209,14 @@
|
|||||||
</em>
|
</em>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<%= content_tag(:label, l(:only_approval_zero_minor_version)) %>
|
||||||
|
<%= check_box_tag 'settings[only_approval_zero_minor_version]', false, @settings['only_approval_zero_minor_version'], size: 50 %>
|
||||||
|
<em class="info">
|
||||||
|
<%= l(:only_approval_zero_minor_version) %><br/> <%= l(:label_default) %>: <%= l(:general_text_No)%>
|
||||||
|
</em>
|
||||||
|
</p>
|
||||||
|
|
||||||
<hr/>
|
<hr/>
|
||||||
<em class="info">
|
<em class="info">
|
||||||
<%= l(:label_webdav) %>
|
<%= l(:label_webdav) %>
|
||||||
@ -331,3 +339,5 @@
|
|||||||
<%= l(:text_enable_cjk_ngrams) %>
|
<%= l(:text_enable_cjk_ngrams) %>
|
||||||
</em>
|
</em>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -255,10 +255,13 @@ en:
|
|||||||
title_rejection: Rejection
|
title_rejection: Rejection
|
||||||
title_delegation: Delegation
|
title_delegation: Delegation
|
||||||
title_assignment: Assignment
|
title_assignment: Assignment
|
||||||
|
title_assignment_minor: Assignment not allowed, minor must be zero
|
||||||
title_start: Start
|
title_start: Start
|
||||||
|
title_start_minor: Start not allowed, minor must be zero
|
||||||
title_dmsf_workflow_log: Approval Workflow Log
|
title_dmsf_workflow_log: Approval Workflow Log
|
||||||
title_assigned: Assigned
|
title_assigned: Assigned
|
||||||
title_approval: Approval
|
title_approval: Approval
|
||||||
|
title_approval_minor: Approval not allowed, minor must be zero
|
||||||
title_rejected: Rejected
|
title_rejected: Rejected
|
||||||
title_obsolete: Obsolete
|
title_obsolete: Obsolete
|
||||||
dmsf_and: AND
|
dmsf_and: AND
|
||||||
@ -431,4 +434,5 @@ en:
|
|||||||
activerecord:
|
activerecord:
|
||||||
errors:
|
errors:
|
||||||
messages:
|
messages:
|
||||||
error_contains_invalid_character: contains invalid character(s)
|
error_contains_invalid_character: contains invalid character(s)
|
||||||
|
only_approval_zero_minor_version: only approval zero minor version
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user