From b60ba63efe8f74e064344302a80031e1eb98f780 Mon Sep 17 00:00:00 2001 From: Karel Picman Date: Tue, 10 Dec 2013 09:40:47 +0100 Subject: [PATCH] #187 - Approval workflow permissions --- app/controllers/dmsf_files_controller.rb | 3 +- app/models/dmsf_mailer.rb | 6 ++-- app/views/dmsf_files/show.html.erb | 36 +++++++++---------- config/locales/cs.yml | 4 +-- config/locales/de.yml | 4 +-- config/locales/en.yml | 4 +-- config/locales/es.yml | 4 +-- config/locales/fr.yml | 4 +-- config/locales/ja.yml | 4 +-- config/locales/ru.yml | 4 +-- config/locales/sl.yml | 4 +-- config/locales/zh.yml | 4 +-- .../dmsf_workflow_controller_test.rb | 4 +-- 13 files changed, 41 insertions(+), 44 deletions(-) diff --git a/app/controllers/dmsf_files_controller.rb b/app/controllers/dmsf_files_controller.rb index acc0b6a2..ad1b0b88 100644 --- a/app/controllers/dmsf_files_controller.rb +++ b/app/controllers/dmsf_files_controller.rb @@ -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'] diff --git a/app/models/dmsf_mailer.rb b/app/models/dmsf_mailer.rb index 5d3d9ed3..cba1d8cc 100644 --- a/app/models/dmsf_mailer.rb +++ b/app/models/dmsf_mailer.rb @@ -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 diff --git a/app/views/dmsf_files/show.html.erb b/app/views/dmsf_files/show.html.erb index 6c373114..4723eab3 100644 --- a/app/views/dmsf_files/show.html.erb +++ b/app/views/dmsf_files/show.html.erb @@ -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? %>   <%= 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) %> -   - <% 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 %> +   + <% 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 %>   <%= 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 @@
" 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) %>
@@ -165,8 +163,8 @@

<%= pagination_links_full @revision_pages, @file.revisions.visible.count %>

<% - 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.*/) %> diff --git a/config/locales/cs.yml b/config/locales/cs.yml index ff2c9f5d..ff59de4f 100644 --- a/config/locales/cs.yml +++ b/config/locales/cs.yml @@ -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 diff --git a/config/locales/de.yml b/config/locales/de.yml index 1a100e01..830def49 100644 --- a/config/locales/de.yml +++ b/config/locales/de.yml @@ -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 diff --git a/config/locales/en.yml b/config/locales/en.yml index 1bc99d72..656414c2 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -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 diff --git a/config/locales/es.yml b/config/locales/es.yml index 751317ee..93e35c7c 100644 --- a/config/locales/es.yml +++ b/config/locales/es.yml @@ -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 diff --git a/config/locales/fr.yml b/config/locales/fr.yml index efc6bb9c..f534e193 100644 --- a/config/locales/fr.yml +++ b/config/locales/fr.yml @@ -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 diff --git a/config/locales/ja.yml b/config/locales/ja.yml index 9388eaad..e5bfffc3 100644 --- a/config/locales/ja.yml +++ b/config/locales/ja.yml @@ -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: フォルダの依存関係が循環しています diff --git a/config/locales/ru.yml b/config/locales/ru.yml index beb9a84c..b1512595 100644 --- a/config/locales/ru.yml +++ b/config/locales/ru.yml @@ -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: создать циклическую зависимость в папке diff --git a/config/locales/sl.yml b/config/locales/sl.yml index c5845b00..34af6ac8 100644 --- a/config/locales/sl.yml +++ b/config/locales/sl.yml @@ -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 diff --git a/config/locales/zh.yml b/config/locales/zh.yml index ef2d9fc7..08127eeb 100644 --- a/config/locales/zh.yml +++ b/config/locales/zh.yml @@ -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 diff --git a/test/functional/dmsf_workflow_controller_test.rb b/test/functional/dmsf_workflow_controller_test.rb index 3f0573b2..31531d30 100644 --- a/test/functional/dmsf_workflow_controller_test.rb +++ b/test/functional/dmsf_workflow_controller_test.rb @@ -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