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