From ea5fedcb4c5af6d5411405d4857b161aaf62ae86 Mon Sep 17 00:00:00 2001 From: "karel.picman@lbcfree.net" Date: Thu, 4 Mar 2021 10:29:21 +0100 Subject: [PATCH] #1217 Global DMS --- after_init.rb | 3 +- app/controllers/dmsf_controller.rb | 28 +++++++++---------- app/controllers/dmsf_files_controller.rb | 14 +++++----- .../dmsf_folders_copy_controller.rb | 4 +-- app/controllers/dmsf_links_controller.rb | 4 +-- app/controllers/dmsf_workflows_controller.rb | 10 +++---- app/models/dmsf_query.rb | 4 +-- 7 files changed, 34 insertions(+), 33 deletions(-) diff --git a/after_init.rb b/after_init.rb index 32b9529f..388b87d7 100644 --- a/after_init.rb +++ b/after_init.rb @@ -40,7 +40,8 @@ def dmsf_init # Main menu extension Redmine::MenuManager.map :top_menu do |menu| menu.push :dmsf, { controller: 'dmsf', action: 'index' }, caption: :menu_dmsf, - html: { class: 'icon-dmsf' }, if: Proc.new { User.current.logged? } + html: { class: 'icon-dmsf' }, + if: Proc.new { User.current.allowed_to?(:view_dmsf_folders, nil, global: true) } end Redmine::AccessControl.map do |map| diff --git a/app/controllers/dmsf_controller.rb b/app/controllers/dmsf_controller.rb index 562744f5..23f2a3a2 100644 --- a/app/controllers/dmsf_controller.rb +++ b/app/controllers/dmsf_controller.rb @@ -152,7 +152,7 @@ class DmsfController < ApplicationController selected_dir_links.blank? && selected_file_links.blank? && selected_url_links.blank? flash[:warning] = l(:warning_no_entries_selected) - redirect_back fallback_location: dmsf_path(id: @project, folder_id: @folder) + redirect_back_or_default dmsf_path(id: @project, folder_id: @folder) return end @@ -171,13 +171,13 @@ class DmsfController < ApplicationController email_entries(selected_folders, selected_files) elsif params[:restore_entries].present? restore_entries(selected_folders, selected_files, selected_dir_links, selected_file_links, selected_url_links) - redirect_back fallback_location: dmsf_path(id: @project, folder_id: @folder) + redirect_back_or_default dmsf_path(id: @project, folder_id: @folder) elsif params[:delete_entries].present? delete_entries(selected_folders, selected_files, selected_dir_links, selected_file_links, selected_url_links, false) - redirect_back fallback_location: dmsf_path(id: @project, folder_id: @folder) + redirect_back_or_default dmsf_path(id: @project, folder_id: @folder) elsif params[:destroy_entries].present? delete_entries(selected_folders, selected_files, selected_dir_links, selected_file_links, selected_url_links, true) - redirect_back fallback_location: dmsf_path(id: @project, folder_id: @folder) + redirect_back_or_default dmsf_path(id: @project, folder_id: @folder) else download_entries(selected_folders, selected_files) end @@ -188,7 +188,7 @@ class DmsfController < ApplicationController rescue StandardError => e flash[:error] = e.message Rails.logger.error e.message - return redirect_back(fallback_location: dmsf_folder_path(id: @project, folder_id: @folder)) + return redirect_back_or_default(dmsf_folder_path(id: @project, folder_id: @folder)) end end @@ -199,7 +199,7 @@ class DmsfController < ApplicationController return redirect_to dmsf_folder_path id: @project, folder_id: @folder, custom_field_id: key, custom_value: value end end - redirect_back fallback_location: dmsf_path(id: @project, folder_id: @folder) + redirect_back_or_default dmsf_path(id: @project, folder_id: @folder) end def entries_email @@ -294,7 +294,7 @@ class DmsfController < ApplicationController respond_to do |format| format.html do if commit - redirect_back fallback_location: dmsf_path(id: @project, folder_id: @folder) + redirect_back_or_default dmsf_path(id: @project, folder_id: @folder) else redirect_to dmsf_folder_path(id: @project, folder_id: @parent) end @@ -309,7 +309,7 @@ class DmsfController < ApplicationController else flash[:error] = @folder.errors.full_messages.to_sentence end - redirect_back fallback_location: trash_dmsf_path(@project) + redirect_back_or_default trash_dmsf_path(@project) end def edit_root @@ -339,7 +339,7 @@ class DmsfController < ApplicationController end flash[:notice] = l(:notice_folder_notifications_activated) end - redirect_back fallback_location: dmsf_path(id: @project, folder_id: @folder) + redirect_back_or_default dmsf_path(id: @project, folder_id: @folder) end def notify_deactivate @@ -354,7 +354,7 @@ class DmsfController < ApplicationController end flash[:notice] = l(:notice_folder_notifications_deactivated) end - redirect_back fallback_location: dmsf_path(id: @project, folder_id: @folder) + redirect_back_or_default dmsf_path(id: @project, folder_id: @folder) end def lock @@ -366,7 +366,7 @@ class DmsfController < ApplicationController @folder.lock! flash[:notice] = l(:notice_folder_locked) end - redirect_back fallback_location: dmsf_path(id: @project, folder_id: @folder) + redirect_back_or_default dmsf_path(id: @project, folder_id: @folder) end def unlock @@ -382,7 +382,7 @@ class DmsfController < ApplicationController flash[:error] = l(:error_only_user_that_locked_folder_can_unlock_it) end end - redirect_back fallback_location: dmsf_path(id: @project, folder_id: @folder) + redirect_back_or_default dmsf_path(id: @project, folder_id: @folder) end def add_email @@ -472,7 +472,7 @@ class DmsfController < ApplicationController link&.delete true end end - redirect_back_or_default trash_dmsf_path(id: @project.id) + redirect_back_or_default_or_default trash_dmsf_path(id: @project.id) end private @@ -645,7 +645,7 @@ class DmsfController < ApplicationController end end unless not_deleted_files.empty? - flash[:warning] = l(:warning_some_entries_were_not_deleted, entries: not_deleted_files.map{ |f| f.title }. + flash[:warning] = l(:warning_some_entries_were_not_deleted, entries: not_deleted_files.map{ |f| h(f.title) }. join(', ')) end # Links diff --git a/app/controllers/dmsf_files_controller.rb b/app/controllers/dmsf_files_controller.rb index 57e45429..c181fdea 100644 --- a/app/controllers/dmsf_files_controller.rb +++ b/app/controllers/dmsf_files_controller.rb @@ -158,7 +158,7 @@ class DmsfFilesController < ApplicationController Rails.logger.error e.message flash[:error] = e.message revision.destroy - redirect_back fallback_location: dmsf_path(id: @project, folder_id: @folder) + redirect_back_or_default dmsf_path(id: @project, folder_id: @folder) return end end @@ -194,7 +194,7 @@ class DmsfFilesController < ApplicationController end end end - redirect_back fallback_location: dmsf_path(id: @project, folder_id: @folder) + redirect_back_or_default dmsf_path(id: @project, folder_id: @folder) end def delete @@ -268,7 +268,7 @@ class DmsfFilesController < ApplicationController flash[:error] = e.message end end - redirect_back fallback_location: dmsf_path(id: @project, folder_id: @folder) + redirect_back_or_default dmsf_path(id: @project, folder_id: @folder) end def unlock @@ -286,7 +286,7 @@ class DmsfFilesController < ApplicationController flash[:error] = l(:error_only_user_that_locked_file_can_unlock_it) end end - redirect_back fallback_location: dmsf_path(id: @project, folder_id: @folder) + redirect_back_or_default dmsf_path(id: @project, folder_id: @folder) end def notify_activate @@ -296,7 +296,7 @@ class DmsfFilesController < ApplicationController @file.notify_activate flash[:notice] = l(:notice_file_notifications_activated) end - redirect_back fallback_location: dmsf_path(id: @project, folder_id: @folder) + redirect_back_or_default dmsf_path(id: @project, folder_id: @folder) end def notify_deactivate @@ -306,7 +306,7 @@ class DmsfFilesController < ApplicationController @file.notify_deactivate flash[:notice] = l(:notice_file_notifications_deactivated) end - redirect_back fallback_location: dmsf_path(id: @project, folder_id: @folder) + redirect_back_or_default dmsf_path(id: @project, folder_id: @folder) end def restore @@ -315,7 +315,7 @@ class DmsfFilesController < ApplicationController else flash[:error] = @file.errors.full_messages.to_sentence end - redirect_back fallback_location: dmsf_path(id: @project, folder_id: @folder) + redirect_back_or_default dmsf_path(id: @project, folder_id: @folder) end def thumbnail diff --git a/app/controllers/dmsf_folders_copy_controller.rb b/app/controllers/dmsf_folders_copy_controller.rb index 797854ef..7901dd63 100644 --- a/app/controllers/dmsf_folders_copy_controller.rb +++ b/app/controllers/dmsf_folders_copy_controller.rb @@ -43,7 +43,7 @@ class DmsfFoldersCopyController < ApplicationController redirect_to dmsf_folder_path(id: @target_project, folder_id: new_folder) else flash[:error] = new_folder.errors.full_messages.to_sentence - redirect_back fallback_location: dmsf_path(id: @project, folder_id: @folder) + redirect_back_or_default dmsf_path(id: @project, folder_id: @folder) end end @@ -53,7 +53,7 @@ class DmsfFoldersCopyController < ApplicationController redirect_to dmsf_folder_path(id: @target_project, folder_id: @folder) else flash[:error] = @folder.errors.full_messages.to_sentence - redirect_back fallback_location: dmsf_path(id: @project, folder_id: @folder) + redirect_back_or_default dmsf_path(id: @project, folder_id: @folder) end end diff --git a/app/controllers/dmsf_links_controller.rb b/app/controllers/dmsf_links_controller.rb index a8fb0fef..ce784df5 100644 --- a/app/controllers/dmsf_links_controller.rb +++ b/app/controllers/dmsf_links_controller.rb @@ -180,14 +180,14 @@ class DmsfLinksController < ApplicationController errors[:base] << e.message return false end - redirect_back fallback_location: dmsf_folder_path(id: @project, folder_id: @folder) + redirect_back_or_default dmsf_folder_path(id: @project, folder_id: @folder) end def restore if @dmsf_link.restore flash[:notice] = l(:notice_dmsf_link_restored) end - redirect_back fallback_location: dmsf_path(id: @project, folder_id: @folder) + redirect_back_or_default dmsf_path(id: @project, folder_id: @folder) end private diff --git a/app/controllers/dmsf_workflows_controller.rb b/app/controllers/dmsf_workflows_controller.rb index 66057b09..cc385b20 100644 --- a/app/controllers/dmsf_workflows_controller.rb +++ b/app/controllers/dmsf_workflows_controller.rb @@ -180,7 +180,7 @@ class DmsfWorkflowsController < ApplicationController end end end - redirect_back fallback_location: dmsf_path(id: @project, folder_id: @folder) + redirect_back_or_default dmsf_path(id: @project, folder_id: @folder) end def assign @@ -215,7 +215,7 @@ class DmsfWorkflowsController < ApplicationController rescue => e flash[:error] = e.message end - redirect_back fallback_location: dmsf_path(id: @project, folder_id: @folder) + redirect_back_or_default dmsf_path(id: @project, folder_id: @folder) return # DMS link (attached) elsif params[:dmsf_link_id].present? @@ -227,7 +227,7 @@ class DmsfWorkflowsController < ApplicationController @dmsf_workflow_id = params[:dmsf_workflow_id] end else - redirect_back fallback_location: dmsf_path(id: @project, folder_id: @folder) + redirect_back_or_default dmsf_path(id: @project, folder_id: @folder) return end respond_to do |format| @@ -394,7 +394,7 @@ class DmsfWorkflowsController < ApplicationController end end end - redirect_back fallback_location: dmsf_path(id: @project, folder_id: @folder) + redirect_back_or_default dmsf_path(id: @project, folder_id: @folder) end def reorder_steps @@ -422,7 +422,7 @@ class DmsfWorkflowsController < ApplicationController flash[:error] = l(:notice_cannot_start_workflow) end end - redirect_back fallback_location: dmsf_path(id: @project, folder_id: @folder) + redirect_back_or_default dmsf_path(id: @project, folder_id: @folder) end def update_step diff --git a/app/models/dmsf_query.rb b/app/models/dmsf_query.rb index f6216984..52a9fc23 100644 --- a/app/models/dmsf_query.rb +++ b/app/models/dmsf_query.rb @@ -216,7 +216,7 @@ class DmsfQuery < Query CAST(0 AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS deleted, 0 AS sort #{cf_columns}}).visible if dmsf_folder_id || deleted - scope.where '1=0' + scope.none else scope = scope.non_templates if scope.respond_to?(:non_templates) scope.where projects: { parent_id: project&.id } @@ -249,7 +249,7 @@ class DmsfQuery < Query dmsf_folders.deleted AS deleted, 1 AS sort #{cf_columns}}). joins('LEFT JOIN users ON dmsf_folders.user_id = users.id') - return scope.where('1=0') unless project + return scope.none unless project if deleted scope = scope.deleted else