#187 - Approval workflow permissions

This commit is contained in:
Karel Picman 2013-12-10 09:40:47 +01:00
parent 28d7b8d07a
commit b60ba63efe
13 changed files with 41 additions and 44 deletions

View File

@ -52,13 +52,14 @@ class DmsfFilesController < ApplicationController
begin
send_revision
rescue ActionController::MissingFile => e
logger.error e.message
render_404
end
return
end
@revision = @file.last_revision
# TODO: line bellow is to handle old instalations with errors in data handling
# TODO: line bellow is to handle old installations with errors in data handling
@revision.name = @file.name
@revision_pages = Paginator.new self, @file.revisions.visible.count, params['per_page'] ? params['per_page'].to_i : 25, params['page']

View File

@ -90,10 +90,8 @@ class DmsfMailer < Mailer
true
when 'selected'
notify_member.mail_notification?
when 'only_my_events'
notify_user.allowed_to?(:file_approval, project) ? true : false
when 'only_owner'
notify_user.allowed_to?(:file_approval, project) ? true : false
when 'only_my_events', 'only_owner'
notify_user.allowed_to?(:file_manipulation, project) ? true : false
else
false
end

View File

@ -39,24 +39,22 @@
:title => l(:title_lock_file)) %>
<% end %>
<% end %>
<% if User.current.allowed_to?(:file_manipulation, @project) && !@file.locked_for_user? %>
<% unless @file.locked_for_user? %>
&nbsp;
<%= link_to_function(image_tag('delete.png', :plugin => 'redmine_dmsf'),
"confirmation_link('#{url_for(:action => 'delete', :id => @file)}', '#{l(:question_do_you_really_want_to_delete_this_entry)}')",
:title => l(:title_delete)) %>
<% end %>
<% if User.current.allowed_to?(:file_approval, @project) %>
&nbsp;
<% if @file.notification %>
<%= link_to_function(image_tag('notify.png', :plugin => 'redmine_dmsf'),
"manipulation_link('#{url_for(:action => 'notify_deactivate', :id => @file, :current => request.url)}')",
:title => l(:title_notifications_active_deactivate)) %>
<% else %>
<%= link_to_function(image_tag('notifynot.png', :plugin => 'redmine_dmsf'),
"manipulation_link('#{url_for(:action => 'notify_activate', :id => @file, :current => request.url)}')",
:title => l(:title_notifications_not_active_activate)) %>
<% end %>
<% end %>
<% end %>
&nbsp;
<% if @file.notification %>
<%= link_to_function(image_tag('notify.png', :plugin => 'redmine_dmsf'),
"manipulation_link('#{url_for(:action => 'notify_deactivate', :id => @file, :current => request.url)}')",
:title => l(:title_notifications_active_deactivate)) %>
<% else %>
<%= link_to_function(image_tag('notifynot.png', :plugin => 'redmine_dmsf'),
"manipulation_link('#{url_for(:action => 'notify_activate', :id => @file, :current => request.url)}')",
:title => l(:title_notifications_not_active_activate)) %>
<% end %>
<% end %>
&nbsp;
<%= link_to(image_tag('copy.png'), {:controller => :dmsf_files_copy, :action => 'new', :id => @file }, :title => l(:title_copy_or_move)) %>
@ -89,7 +87,7 @@
<%= link_to(image_tag('rev_download.png', :plugin => 'redmine_dmsf'),
{:action => 'show', :id => @file, :download => revision},
:title => l(:title_title_version_version_download, :title => h(revision.title), :version => revision.version)) %>
<% if User.current.allowed_to?(:file_approval, @project) %>
<% if User.current.allowed_to?(:file_manipulation, @project) %>
<%= link_to_function(image_tag('rev_delete.png', :plugin => 'redmine_dmsf'),
"confirmation_link('#{url_for(:action => 'delete_revision', :id => revision)}', '#{l(:question_do_you_really_want_to_delete_this_revision)}')",
:title => l(:title_delete_revision)) %>
@ -154,7 +152,7 @@
</div>
<br/>
<div id="<%= "revision_access-#{revision.id}" %>" style="display:none">
<%= render(:partial => 'revision_access', :locals => {:revision => revision}) if User.current.allowed_to?(:file_approval, @file.project) %>
<%= render(:partial => 'revision_access', :locals => {:revision => revision}) if User.current.allowed_to?(:file_manipulation, @file.project) %>
</div>
</div>
</div>
@ -165,8 +163,8 @@
<p class="pagination"><%= pagination_links_full @revision_pages, @file.revisions.visible.count %></p>
<%
sUrl = 'jquery.dataTables/en.json'
sUrl = "jquery.dataTables/#{I18n.locale.to_s.downcase}.json" if I18n.locale && !I18n.locale.to_s.match(/^en.*/)
url = 'jquery.dataTables/en.json'
url = "jquery.dataTables/#{I18n.locale.to_s.downcase}.json" if I18n.locale && !I18n.locale.to_s.match(/^en.*/)
%>
<script type="text/javascript">
@ -200,7 +198,7 @@
jQuery('.access-table').dataTable({
'bJQueryUI': true,
'oLanguage': {
'sUrl': '/plugin_assets/<%= :redmine_dmsf %>/javascripts/<%= sUrl%>'
'sUrl': '/plugin_assets/<%= :redmine_dmsf %>/javascripts/<%= url %>'
}
});
</script>

View File

@ -147,9 +147,9 @@ cs:
permission_user_preferences: Nastavení uživatele
permission_view_dmsf_files: Zobrazit dokumenty
permission_folder_manipulation: Manipulace se složkami
permission_file_manipulation: Manipulace se soubory
permission_file_approval: Schválení souboru
permission_file_manipulation: Manipulace se soubory
permission_force_file_unlock: Vynucené odemknutí souboru
permission_manage_workflows: Spravovat schvalovací procesy
label_file: Soubor
field_folder: Složka
error_create_cycle_in_folder_dependency: vytvořit smyčku v závislostech složky

View File

@ -147,9 +147,9 @@ de:
permission_user_preferences: Benutzereinstellungen
permission_view_dmsf_files: Betrachte Dateien
permission_folder_manipulation: Ordner manipulation
permission_file_manipulation: Datei manipulation
permission_file_approval: Datei approval
permission_file_manipulation: Datei manipulation
permission_force_file_unlock: Erzwinge Aufhebung der Dateisperre
permission_manage_workflows: Manage workflows
label_file: Datei
field_folder: Ordner
error_create_cycle_in_folder_dependency: schaffen Zyklus in Abhängigkeit Ordner

View File

@ -148,9 +148,9 @@ en:
permission_user_preferences: User preferences
permission_view_dmsf_files: View documents
permission_folder_manipulation: Folder manipulation
permission_file_manipulation: File manipulation
permission_file_approval: File approval
permission_file_manipulation: File manipulation
permission_force_file_unlock: Force file unlock
permission_manage_workflows: Manage workflows
label_file: File
field_folder: Folder
error_create_cycle_in_folder_dependency: create cycle in folder dependency

View File

@ -148,9 +148,9 @@ es:
permission_user_preferences: User preferences
permission_view_dmsf_files: View documents
permission_folder_manipulation: Folder manipulation
permission_file_manipulation: File manipulation
permission_file_approval: File approval
permission_file_manipulation: File manipulation
permission_force_file_unlock: Force file unlock
permission_manage_workflows: Manage workflows
label_file: File
field_folder: Folder
error_create_cycle_in_folder_dependency: create cycle in folder dependency

View File

@ -146,9 +146,9 @@ fr:
permission_user_preferences: Préférences utilisateur
permission_view_dmsf_files: Afficher documents
permission_folder_manipulation: Gestion des dossiers
permission_file_manipulation: Gestion des documents
permission_file_approval: Validation du document
permission_file_manipulation: Gestion des documents
permission_force_file_unlock: Forcer le déverrouillage du document
permission_manage_workflows: Manage workflows
label_file: Fichier
field_folder: Dossier
error_create_cycle_in_folder_dependency: create cycle in folder dependency

View File

@ -146,9 +146,9 @@ ja:
permission_user_preferences: ユーザ設定
permission_view_dmsf_files: 文書の表示
permission_folder_manipulation: フォルダの操作
permission_file_manipulation: ファイルの操作
permission_file_approval: ファイルの承認
permission_file_manipulation: ファイルの操作
permission_force_file_unlock: ファイルの強制ロック解除
permission_manage_workflows: Manage workflows
label_file: ファイル
field_folder: フォルダ
error_create_cycle_in_folder_dependency: フォルダの依存関係が循環しています

View File

@ -146,9 +146,9 @@ ru:
permission_user_preferences: Настройки пользователя
permission_view_dmsf_files: Просматривать документы
permission_folder_manipulation: Управление папками
permission_file_manipulation: Управление файлами
permission_file_approval: Утверждение файлов
permission_file_manipulation: Управление файлами
permission_force_file_unlock: Разблокировка любых файлов
permission_manage_workflows: Manage workflows
label_file: Файл
field_folder: Папка
error_create_cycle_in_folder_dependency: создать циклическую зависимость в папке

View File

@ -146,9 +146,9 @@ sl:
permission_user_preferences: Uporabniške nastavitve
permission_view_dmsf_files: Preglej dokumente
permission_folder_manipulation: Upravljanje z mapami
permission_file_manipulation: Upravljanje z datotekami
permission_file_approval: Odobritev datotek
permission_file_manipulation: Upravljanje z datotekami
permission_force_file_unlock: Prisilno odkleni datoteko
permission_manage_workflows: Manage workflows
label_file: Datoteka
field_folder: Pod mapo
error_create_cycle_in_folder_dependency: naredi ciklično odvisnost med mapami

View File

@ -146,9 +146,9 @@ zh:
permission_user_preferences: 用户偏好设定
permission_view_dmsf_files: 查看文档
permission_folder_manipulation: 文件夹操作
permission_file_manipulation: 文件操作
permission_file_approval: 批准文件
permission_file_manipulation: 文件操作
permission_force_file_unlock: 强制文件解锁
permission_manage_workflows: Manage workflows
label_file: 文件
field_folder: 件夹
error_create_cycle_in_folder_dependency: create cycle in folder dependency

View File

@ -31,7 +31,7 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase
@user_non_member = User.find_by_id 3 #Dave Lopper
@request.session[:user_id] = @user_member.id
@role_manager = Role.where(:name => 'Manager').first
@role_manager.add_permission! :file_approval
@role_manager.add_permission! :file_manipulation
@wfs1 = DmsfWorkflowStep.find_by_id 1 # step 1
@wfs2 = DmsfWorkflowStep.find_by_id 2 # step 2
@wfs3 = DmsfWorkflowStep.find_by_id 3 # step 1
@ -77,7 +77,7 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase
assert_response :forbidden
# Without permissions
@project5.enable_module!(:dmsf)
@role_manager.remove_permission! :file_approval
@role_manager.remove_permission! :file_manipulation
get :index, :project_id => @project5.id
assert_response :forbidden
end