From af2f9e0a3e1f78b257ae5b1a0a84cc7b09e469fb Mon Sep 17 00:00:00 2001 From: wolfc01 Date: Mon, 5 Apr 2021 17:58:49 +0200 Subject: [PATCH 1/4] added zero minor version allowance for approval workflows --- app/models/dmsf_file.rb | 8 ++++++++ .../dmsf_context_menus/_approval_workflow.html.erb | 2 +- app/views/settings/_dmsf_settings.html.erb | 10 ++++++++++ config/locales/en.yml | 3 ++- 4 files changed, 21 insertions(+), 2 deletions(-) diff --git a/app/models/dmsf_file.rb b/app/models/dmsf_file.rb index a38533f4..ac623933 100644 --- a/app/models/dmsf_file.rb +++ b/app/models/dmsf_file.rb @@ -110,6 +110,14 @@ class DmsfFile < ActiveRecord::Base visible.find_by project_id: project_id, dmsf_folder_id: folder&.id, name: name 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 unless defined?(@last_revision) @last_revision = deleted? ? dmsf_file_revisions.first : dmsf_file_revisions.visible.first diff --git a/app/views/dmsf_context_menus/_approval_workflow.html.erb b/app/views/dmsf_context_menus/_approval_workflow.html.erb index c3889e8b..5d743d77 100644 --- a/app/views/dmsf_context_menus/_approval_workflow.html.erb +++ b/app/views/dmsf_context_menus/_approval_workflow.html.erb @@ -22,7 +22,7 @@ <% workflows_available = DmsfWorkflow.where(['project_id = ? OR project_id IS NULL', project.id]).exists? %> <% 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) && (dmsf_file.approval_allowed_zero_minor)%> <% allowed = User.current && (dmsf_file.last_revision.dmsf_workflow_assigned_by_user == User.current) && wf %> <% if file_approval_allowed %> diff --git a/app/views/settings/_dmsf_settings.html.erb b/app/views/settings/_dmsf_settings.html.erb index 8dedab1b..90f619ee 100644 --- a/app/views/settings/_dmsf_settings.html.erb +++ b/app/views/settings/_dmsf_settings.html.erb @@ -200,6 +200,14 @@

+

+ <%= 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 %> + + <%= l(:only_approval_zero_minor_version) %>
<%= l(:label_default) %>: <%= l(:general_text_No)%> +
+

+
<%= l(:label_webdav) %> @@ -315,3 +323,5 @@ <%= l(:text_enable_cjk_ngrams) %>

+ + diff --git a/config/locales/en.yml b/config/locales/en.yml index dc324a7c..04dc3f84 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -421,4 +421,5 @@ en: activerecord: errors: messages: - error_contains_invalid_character: contains invalid character(s) \ No newline at end of file + error_contains_invalid_character: contains invalid character(s) + only_approval_zero_minor_version: only approval zero minor version \ No newline at end of file From 85f41efd18040eaffe1077c15e8a669cd278cd64 Mon Sep 17 00:00:00 2001 From: wolfc01 Date: Mon, 5 Apr 2021 19:35:25 +0200 Subject: [PATCH 2/4] better context menu's when minor version is not zero --- .../_approval_workflow.html.erb | 30 ++++++++++++++++--- config/locales/en.yml | 5 +++- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/app/views/dmsf_context_menus/_approval_workflow.html.erb b/app/views/dmsf_context_menus/_approval_workflow.html.erb index 5d743d77..e205a87d 100644 --- a/app/views/dmsf_context_menus/_approval_workflow.html.erb +++ b/app/views/dmsf_context_menus/_approval_workflow.html.erb @@ -22,8 +22,9 @@ <% workflows_available = DmsfWorkflow.where(['project_id = ? OR project_id IS NULL', project.id]).exists? %> <% 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) && (dmsf_file.approval_allowed_zero_minor)%> +<% 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_minor = dmsf_file.approval_allowed_zero_minor %> <% if file_approval_allowed %> <% case dmsf_file.last_revision.workflow %> @@ -32,22 +33,43 @@ <% assignments = wf.next_assignments(dmsf_file.last_revision.id) %> <% index = assignments.find_index{ |assignment| assignment.user_id == User.current.id } if assignments %> <% 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 allowd_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_file_revision_id: dmsf_file.last_revision.id), remote: true, class: 'icon icon-ok', id: 'dmsf-cm-workflow', 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 %> <% when DmsfWorkflow::STATE_ASSIGNED %> - <%= context_menu_link l(:title_start), start_dmsf_workflow_path(id: dmsf_file.last_revision.dmsf_workflow_id, + <% if allowd_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), 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 %> <%# %> <% 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), remote: true, class: 'icon icon-ok', id: 'dmsf-cm-workflow', 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 %> diff --git a/config/locales/en.yml b/config/locales/en.yml index 04dc3f84..dc0b379d 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -254,10 +254,13 @@ en: title_rejection: Rejection title_delegation: Delegation title_assignment: Assignment + title_assignment_minor: Assignment not allowed, minor != 0 title_start: Start + title_start_minor: Start not allowed, minor != 0 title_dmsf_workflow_log: Approval Workflow Log title_assigned: Assigned title_approval: Approval + title_approval_minor: Approval not allowed, minor != 0 title_rejected: Rejected title_obsolete: Obsolete dmsf_and: AND @@ -422,4 +425,4 @@ en: errors: messages: error_contains_invalid_character: contains invalid character(s) - only_approval_zero_minor_version: only approval zero minor version \ No newline at end of file + only_approval_zero_minor_version: only approval zero minor version From 9bd26160229d2e4b5a795904bade82819e22f81a Mon Sep 17 00:00:00 2001 From: wolfc01 Date: Mon, 5 Apr 2021 19:46:30 +0200 Subject: [PATCH 3/4] better context menu's when minor version is not zero --- app/views/dmsf_context_menus/_approval_workflow.html.erb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/dmsf_context_menus/_approval_workflow.html.erb b/app/views/dmsf_context_menus/_approval_workflow.html.erb index e205a87d..cf787eff 100644 --- a/app/views/dmsf_context_menus/_approval_workflow.html.erb +++ b/app/views/dmsf_context_menus/_approval_workflow.html.erb @@ -33,7 +33,7 @@ <% assignments = wf.next_assignments(dmsf_file.last_revision.id) %> <% index = assignments.find_index{ |assignment| assignment.user_id == User.current.id } if assignments %> <% assignment_id = (index && assignments && assignments[index]) ? assignments[index].id : nil %> - <% if allowd_minor %> + <% 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_file_revision_id: dmsf_file.last_revision.id), @@ -48,7 +48,7 @@ <% end %> <% end %> <% when DmsfWorkflow::STATE_ASSIGNED %> - <% if allowd_minor %> + <% 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), class: 'icon icon-ok', disabled: !allowed %> From 0e4c7dfbc809f77eb16d5adac7be9ef9ebe3bfdc Mon Sep 17 00:00:00 2001 From: wolfc01 Date: Mon, 5 Apr 2021 19:51:49 +0200 Subject: [PATCH 4/4] better context menu's when minor version is not zero --- config/locales/en.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/config/locales/en.yml b/config/locales/en.yml index dc0b379d..1f095e57 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -254,13 +254,13 @@ en: title_rejection: Rejection title_delegation: Delegation title_assignment: Assignment - title_assignment_minor: Assignment not allowed, minor != 0 + title_assignment_minor: Assignment not allowed, minor must be zero title_start: Start - title_start_minor: Start not allowed, minor != 0 + title_start_minor: Start not allowed, minor must be zero title_dmsf_workflow_log: Approval Workflow Log title_assigned: Assigned title_approval: Approval - title_approval_minor: Approval not allowed, minor != 0 + title_approval_minor: Approval not allowed, minor must be zero title_rejected: Rejected title_obsolete: Obsolete dmsf_and: AND