Keep documents locked after the approval workflow is finished as an option #675

This commit is contained in:
Karel Picman 2017-02-17 13:32:56 +01:00
parent b5977343fa
commit 4dbf6cc487
21 changed files with 106 additions and 19 deletions

View File

@ -22,6 +22,8 @@ Changelog for Redmine DMSF
Global title format for downloading
New columns in the main DMSF view; columns are configurable from the plugin settings
* New: #675 - Keep documents locked after the approval workflow is finished as an option
* Bug: #671 - Webdav: MOVE returns incorrect response
* Bug: #663 - Locked documnts on My page
* Bug: #662 - Broken paging on the Add approver form
* New: #655 - ERROR: Couldn't find Project with identifier=desktop.ini

View File

@ -55,7 +55,7 @@ class DmsfWorkflowsController < ApplicationController
if @dmsf_workflow.try_finish revision, action, (params[:step_action].to_i / 10)
if revision.dmsf_file
begin
revision.dmsf_file.unlock! true
revision.dmsf_file.unlock!(true) unless Setting.plugin_redmine_dmsf['dmsf_keep_documents_locked'].present?
rescue DmsfLockError => e
flash[:info] = e.message
end
@ -205,6 +205,10 @@ class DmsfWorkflowsController < ApplicationController
def log
end
def edit
redirect_to dmsf_workflow_path(@dmsf_workflow)
end
def new
@dmsf_workflow = DmsfWorkflow.new

View File

@ -61,7 +61,7 @@ module DmsfWorkflowsHelper
if wf.project_id
options << [wf.name, wf.id]
else
options << ["#{wf.name} (global)", wf.id]
options << ["#{wf.name} #{l(:note_global)}", wf.id]
end
end
options_for_select(options, :selected => dmsf_workflow_id)
@ -83,7 +83,7 @@ module DmsfWorkflowsHelper
end
else
# Global approval workflows
options << [wf.name, wf.id]
options << ["#{wf.name} #{l(:note_global)}", wf.id]
end
end
options_for_select(options, :selected => dmsf_workflow_id)

View File

@ -135,6 +135,20 @@
<%= render(:partial => 'settings/dmsf_columns', :locals => { :settings => @settings }) %>
<hr/>
<em class="info">
<%= l(:field_label_dmsf_workflow) %>
</em>
<p>
<%= content_tag(:label, l(:label_dmsf_keep_documents_locked)) %>
<%= check_box_tag('settings[dmsf_keep_documents_locked]', false, @settings['dmsf_keep_documents_locked']) %>
<em class="info">
<%= l(:note_dmsf_keep_documents_locked) %><br/>
<%= l(:label_default)%>: <%= l(:general_text_No)%>
</em>
</p>
<hr/>
<em class="info">
<%= l(:label_webdav) %>

View File

@ -351,3 +351,7 @@ cs:
label_webdav_disable_versioning: No versioning files patterns
note_webdav_disable_versioning: A regular expression that disables versioning for matching files. The default pattern matches temporary files created by MsOffice.
label_dmsf_keep_documents_locked: Ponechat dokumenty zamčené
note_dmsf_keep_documents_locked: Dokumenty zůstanou i po schválení zamčené.
note_global: (globální)

View File

@ -348,3 +348,7 @@ de:
label_webdav_disable_versioning: No versioning files patterns
note_webdav_disable_versioning: A regular expression that disables versioning for matching files. The default pattern matches temporary files created by MsOffice.
label_dmsf_keep_documents_locked: Keep documents locked
note_dmsf_keep_documents_locked: Documents will be kept locked when approved
note_global: (global)

View File

@ -351,3 +351,7 @@ en:
label_webdav_disable_versioning: No versioning files patterns
note_webdav_disable_versioning: A regular expression that disables versioning for matching files. The default pattern matches temporary files created by MsOffice.
label_dmsf_keep_documents_locked: Keep documents locked
note_dmsf_keep_documents_locked: Documents will be kept locked when approved
note_global: (global)

View File

@ -351,3 +351,7 @@ es:
label_webdav_disable_versioning: No versioning files patterns
note_webdav_disable_versioning: A regular expression that disables versioning for matching files. The default pattern matches temporary files created by MsOffice.
label_dmsf_keep_documents_locked: Keep documents locked
note_dmsf_keep_documents_locked: Documents will be kept locked when approved
note_global: (global)

View File

@ -351,3 +351,7 @@ fr:
label_webdav_disable_versioning: No versioning files patterns
note_webdav_disable_versioning: A regular expression that disables versioning for matching files. The default pattern matches temporary files created by MsOffice.
label_dmsf_keep_documents_locked: Keep documents locked
note_dmsf_keep_documents_locked: Documents will be kept locked when approved
note_global: (global)

View File

@ -351,3 +351,7 @@ it: # Italian strings thx 2 Matteo Arceci!
label_webdav_disable_versioning: No versioning files patterns
note_webdav_disable_versioning: A regular expression that disables versioning for matching files. The default pattern matches temporary files created by MsOffice.
label_dmsf_keep_documents_locked: Keep documents locked
note_dmsf_keep_documents_locked: Documents will be kept locked when approved
note_global: (global)

View File

@ -351,3 +351,7 @@ ja:
label_webdav_disable_versioning: No versioning files patterns
note_webdav_disable_versioning: A regular expression that disables versioning for matching files. The default pattern matches temporary files created by MsOffice.
label_dmsf_keep_documents_locked: Keep documents locked
note_dmsf_keep_documents_locked: Documents will be kept locked when approved
note_global: (global)

View File

@ -351,3 +351,7 @@ pl:
label_webdav_disable_versioning: No versioning files patterns
note_webdav_disable_versioning: A regular expression that disables versioning for matching files. The default pattern matches temporary files created by MsOffice.
label_dmsf_keep_documents_locked: Keep documents locked
note_dmsf_keep_documents_locked: Documents will be kept locked when approved
note_global: (global)

View File

@ -351,3 +351,7 @@ pt-BR:
label_webdav_disable_versioning: No versioning files patterns
note_webdav_disable_versioning: A regular expression that disables versioning for matching files. The default pattern matches temporary files created by MsOffice.
label_dmsf_keep_documents_locked: Keep documents locked
note_dmsf_keep_documents_locked: Documents will be kept locked when approved
note_global: (global)

View File

@ -351,3 +351,7 @@ ru:
label_webdav_disable_versioning: No versioning files patterns
note_webdav_disable_versioning: A regular expression that disables versioning for matching files. The default pattern matches temporary files created by MsOffice.
label_dmsf_keep_documents_locked: Keep documents locked
note_dmsf_keep_documents_locked: Documents will be kept locked when approved
note_global: (global)

View File

@ -351,3 +351,7 @@ sl:
label_webdav_disable_versioning: No versioning files patterns
note_webdav_disable_versioning: A regular expression that disables versioning for matching files. The default pattern matches temporary files created by MsOffice.
label_dmsf_keep_documents_locked: Keep documents locked
note_dmsf_keep_documents_locked: Documents will be kept locked when approved
note_global: (global)

View File

@ -351,3 +351,7 @@ zh-TW:
label_webdav_disable_versioning: No versioning files patterns
note_webdav_disable_versioning: A regular expression that disables versioning for matching files. The default pattern matches temporary files created by MsOffice.
label_dmsf_keep_documents_locked: Keep documents locked
note_dmsf_keep_documents_locked: Documents will be kept locked when approved
note_global: (global)

View File

@ -351,3 +351,7 @@ zh:
label_webdav_disable_versioning: No versioning files patterns
note_webdav_disable_versioning: A regular expression that disables versioning for matching files. The default pattern matches temporary files created by MsOffice.
label_dmsf_keep_documents_locked: Keep documents locked
note_dmsf_keep_documents_locked: Documents will be kept locked when approved
note_global: (global)

Binary file not shown.

View File

@ -50,7 +50,8 @@ Redmine::Plugin.register :redmine_dmsf do
'dmsf_columns' => %w(title size modified version workflow author),
'dmsf_memcached_servers' => '',
'dmsf_webdav_ignore' => '^(\._|\.DS_Store$|Thumbs.db$)',
'dmsf_webdav_disable_versioning' => '^\~\$|\.tmp$'
'dmsf_webdav_disable_versioning' => '^\~\$|\.tmp$',
'dmsf_keep_documents_locked' => false
}
menu :project_menu, :dmsf, { :controller => 'dmsf', :action => 'show' }, :caption => :menu_dmsf, :before => :documents, :param => :id
@ -95,7 +96,7 @@ Redmine::Plugin.register :redmine_dmsf do
{:dmsf_workflows => [:action, :new_action, :autocomplete_for_user, :start, :assign, :assignment]}
permission :manage_workflows,
{:dmsf_workflows => [:index, :new, :create, :destroy, :show, :new_step, :add_step, :remove_step, :reorder_steps,
:update, :update_step, :delete_step]}
:update, :update_step, :delete_step, :edit]}
end
# Administration menu extension

View File

@ -1,4 +1,4 @@
#/bin/bash
#!/bin/bash
#
# This script is almost entirely built on the build script from redmine_backlogs
# Please see: https://github.com/backlogs/redmine_backlogs

View File

@ -279,19 +279,16 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase
end
def test_action_approve
post(
:new_action,
:commit => l(:button_submit),
:id => @wf1.id,
:dmsf_workflow_step_assignment_id => @wfsa2.id,
:dmsf_file_revision_id => @revision1.id,
:step_action => DmsfWorkflowStepAction::ACTION_APPROVE,
:user_id => nil,
:note => '')
assert_redirected_to dmsf_folder_path(:id => @project1.id)
assert DmsfWorkflowStepAction.where(
:dmsf_workflow_step_assignment_id => @wfsa2.id,
:action => DmsfWorkflowStepAction::ACTION_APPROVE).first
approve
assert !@revision1.dmsf_file.locked_for_user?
end
def test_action_approve
Setting.plugin_redmine_dmsf['dmsf_keep_documents_locked'] = '1'
approve
if Setting.plugin_redmine_dmsf['dmsf_keep_documents_locked'] == '1'
assert @revision1.dmsf_file.locked_for_user?
end
end
def test_action_reject
@ -397,4 +394,21 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase
assert_response :redirect
end
private
def approve
post(
:new_action,
:commit => l(:button_submit),
:id => @wf1.id,
:dmsf_workflow_step_assignment_id => @wfsa2.id,
:dmsf_file_revision_id => @revision1.id,
:step_action => DmsfWorkflowStepAction::ACTION_APPROVE,
:user_id => nil,
:note => '')
assert_redirected_to dmsf_folder_path(:id => @project1.id)
assert DmsfWorkflowStepAction.where(
:dmsf_workflow_step_assignment_id => @wfsa2.id,
:action => DmsfWorkflowStepAction::ACTION_APPROVE).first
end
end