diff --git a/app/controllers/dmsf_context_menus_controller.rb b/app/controllers/dmsf_context_menus_controller.rb index 09bdf172..36431390 100644 --- a/app/controllers/dmsf_context_menus_controller.rb +++ b/app/controllers/dmsf_context_menus_controller.rb @@ -35,6 +35,7 @@ class DmsfContextMenusController < ApplicationController @unlockable = @allowed && @dmsf_file.unlockable? && (!@dmsf_file.locked_for_user? || User.current.allowed_to?(:force_file_unlock, @project)) @email_allowed = User.current.allowed_to?(:email_documents, @project) + @back_url = dmsf_folder_path(id: @project, folder_id: @dmsf_file.dmsf_folder) elsif @dmsf_folder @locked = @dmsf_folder.locked? @project = @dmsf_folder.project @@ -42,12 +43,14 @@ class DmsfContextMenusController < ApplicationController @unlockable = @allowed && @dmsf_folder.unlockable? && (!@dmsf_folder.locked_for_user? || User.current.allowed_to?(:force_file_unlock, @project)) @email_allowed = User.current.allowed_to?(:email_documents, @project) + @back_url = dmsf_folder_path(id: @project, folder_id: @dmsf_folder.dmsf_folder) elsif @dmsf_link # url link @locked = false @unlockable = false @project = @dmsf_link.project @allowed = User.current.allowed_to? :file_manipulation, @project @email_allowed = false + @back_url = dmsf_folder_path(id: @project, folder_id: @dmsf_link.dmsf_folder) else # multiple selection @project = get_project @locked = false @@ -55,6 +58,7 @@ class DmsfContextMenusController < ApplicationController @allowed = User.current.allowed_to?(:file_manipulation, @project) && User.current.allowed_to?(:folder_manipulation, @project) @email_allowed = User.current.allowed_to?(:email_documents, @project) + @back_url = dmsf_folder_path(id: @project, folder_id: @dmsf_folder) end render layout: false rescue ActiveRecord::RecordNotFound diff --git a/app/controllers/dmsf_controller.rb b/app/controllers/dmsf_controller.rb index 96f4d123..a73c3036 100644 --- a/app/controllers/dmsf_controller.rb +++ b/app/controllers/dmsf_controller.rb @@ -45,6 +45,7 @@ class DmsfController < ApplicationController include QueriesHelper helper :dmsf_queries include DmsfQueriesHelper + helper :context_menus def permissions if !DmsfFolder.permissions?(@folder, false) @@ -160,7 +161,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_or_default dmsf_folder_path(id: @project.id, folder_id: @folder) + redirect_back_or_default dmsf_folder_path(id: @project, folder_id: @folder) return end @@ -179,13 +180,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_or_default dmsf_folder_path(id: @project.id, folder_id: @folder) + redirect_back_or_default dmsf_folder_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_or_default dmsf_folder_path(id: @project.id, folder_id: @folder) + redirect_back_or_default dmsf_folder_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_or_default dmsf_folder_path(id: @project.id, folder_id: @folder) + redirect_back_or_default dmsf_folder_path(id: @project, folder_id: @folder) else download_entries(selected_folders, selected_files) end @@ -207,7 +208,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_or_default dmsf_folder_path(id: @project.id, folder_id: @folder) + redirect_back_or_default dmsf_folder_path(id: @project, folder_id: @folder) end def entries_email @@ -302,7 +303,7 @@ class DmsfController < ApplicationController respond_to do |format| format.html do if commit - redirect_back_or_default dmsf_folder_path(id: @project.id, folder_id: @folder) + redirect_to trash_dmsf_path(@project) else redirect_to dmsf_folder_path(id: @project, folder_id: @parent) end @@ -317,7 +318,7 @@ class DmsfController < ApplicationController else flash[:error] = @folder.errors.full_messages.to_sentence end - redirect_back_or_default trash_dmsf_path(@project) + redirect_to trash_dmsf_path(@project) end def save_root @@ -344,7 +345,7 @@ class DmsfController < ApplicationController end flash[:notice] = l(:notice_folder_notifications_activated) end - redirect_back_or_default dmsf_folder_path(id: @project.id, folder_id: @folder) + redirect_back_or_default dmsf_folder_path(id: @project, folder_id: @folder) end def notify_deactivate @@ -359,7 +360,7 @@ class DmsfController < ApplicationController end flash[:notice] = l(:notice_folder_notifications_deactivated) end - redirect_back_or_default dmsf_folder_path(id: @project.id, folder_id: @folder) + redirect_back_or_default dmsf_folder_path(id: @project, folder_id: @folder) end def lock @@ -371,7 +372,7 @@ class DmsfController < ApplicationController @folder.lock! flash[:notice] = l(:notice_folder_locked) end - redirect_back_or_default dmsf_folder_path(id: @project.id, folder_id: @folder) + redirect_back_or_default dmsf_folder_path(id: @project, folder_id: @folder) end def unlock @@ -387,7 +388,7 @@ class DmsfController < ApplicationController flash[:error] = l(:error_only_user_that_locked_folder_can_unlock_it) end end - redirect_back_or_default dmsf_folder_path(id: @project.id, folder_id: @folder) + redirect_back_or_default dmsf_folder_path(id: @project, folder_id: @folder) end def add_email @@ -477,7 +478,7 @@ class DmsfController < ApplicationController link&.delete true end end - redirect_back_or_default trash_dmsf_path(id: @project.id) + redirect_back_or_default trash_dmsf_path(id: @project) end private diff --git a/app/controllers/dmsf_files_controller.rb b/app/controllers/dmsf_files_controller.rb index 7aee8542..ff9e2b42 100644 --- a/app/controllers/dmsf_files_controller.rb +++ b/app/controllers/dmsf_files_controller.rb @@ -195,7 +195,7 @@ class DmsfFilesController < ApplicationController flash[:error] = @file.errors.full_messages.to_sentence if @file.errors.any? flash[:error] = revision.errors.full_messages.to_sentence if revision.errors.any? flash[:notice] = (flash[:notice].nil? ? '' : flash[:notice]) + l(:notice_file_revision_created) if ok - redirect_back_or_default dmsf_folder_path(id: @project.id, folder_id: @folder) + redirect_back_or_default dmsf_folder_path(id: @project, folder_id: @folder) end format.api end @@ -229,7 +229,7 @@ class DmsfFilesController < ApplicationController end respond_to do |format| format.html do - redirect_to dmsf_folder_path(id: @project, folder_id: @folder) + redirect_back_or_default dmsf_folder_path(id: @project, folder_id: @folder) end format.api { result ? render_api_ok : render_validation_errors(@file) } end @@ -272,7 +272,7 @@ class DmsfFilesController < ApplicationController flash[:error] = e.message end end - redirect_back_or_default dmsf_folder_path(id: @project.id, folder_id: @folder) + redirect_back_or_default dmsf_folder_path(id: @project, folder_id: @folder) end def unlock @@ -290,7 +290,7 @@ class DmsfFilesController < ApplicationController flash[:error] = l(:error_only_user_that_locked_file_can_unlock_it) end end - redirect_back_or_default dmsf_folder_path(id: @project.id, folder_id: @folder) + redirect_back_or_default dmsf_folder_path(id: @project, folder_id: @folder) end def notify_activate @@ -300,7 +300,7 @@ class DmsfFilesController < ApplicationController @file.notify_activate flash[:notice] = l(:notice_file_notifications_activated) end - redirect_back_or_default dmsf_folder_path(id: @project.id, folder_id: @folder) + redirect_back_or_default dmsf_folder_path(id: @project, folder_id: @folder) end def notify_deactivate @@ -310,7 +310,7 @@ class DmsfFilesController < ApplicationController @file.notify_deactivate flash[:notice] = l(:notice_file_notifications_deactivated) end - redirect_back_or_default dmsf_folder_path(id: @project.id, folder_id: @folder) + redirect_back_or_default dmsf_folder_path(id: @project, folder_id: @folder) end def restore @@ -319,7 +319,7 @@ class DmsfFilesController < ApplicationController else flash[:error] = @file.errors.full_messages.to_sentence end - redirect_back_or_default dmsf_folder_path(id: @project.id, folder_id: @folder) + redirect_to trash_dmsf_path(@project) end def thumbnail diff --git a/app/controllers/dmsf_files_copy_controller.rb b/app/controllers/dmsf_files_copy_controller.rb index 6b33f042..dda16acc 100644 --- a/app/controllers/dmsf_files_copy_controller.rb +++ b/app/controllers/dmsf_files_copy_controller.rb @@ -33,6 +33,7 @@ class DmsfFilesCopyController < ApplicationController @projects = DmsfFile.allowed_target_projects_on_copy @folders = DmsfFolder.directory_tree(@target_project, @folder) @target_folder = DmsfFolder.visible.find(params[:target_folder_id]) unless params[:target_folder_id].blank? + @back_url = params[:back_url] render layout: !request.xhr? end @@ -40,21 +41,19 @@ class DmsfFilesCopyController < ApplicationController new_file = @file.copy_to(@target_project, @target_folder) if new_file.nil? || new_file.errors.present? flash[:error] = new_file ? new_file.errors.full_messages.to_sentence : @file.errors.full_messages.to_sentence - redirect_to action: 'new', id: @file, target_project_id: @target_project, target_folder_id: @target_folder - return + else + flash[:notice] = l(:notice_successful_update) end - flash[:notice] = l(:notice_successful_update) - redirect_to dmsf_file_path(new_file) + redirect_back_or_default dmsf_folder_path(id: @file.project, folder_id: @file.dmsf_folder) end def move - unless @file.move_to(@target_project, @target_folder) + if @file.move_to(@target_project, @target_folder) + flash[:notice] = l(:notice_successful_update) + else flash[:error] = @file.errors.full_messages.to_sentence - redirect_to action: 'new', id: @file, target_project_id: @target_project, target_folder_id: @target_folder - return end - flash[:notice] = l(:notice_successful_update) - redirect_to dmsf_file_path(@file) + redirect_back_or_default dmsf_folder_path(id: @file.project, folder_id: @file.dmsf_folder) end private diff --git a/app/controllers/dmsf_folders_copy_controller.rb b/app/controllers/dmsf_folders_copy_controller.rb index a4d66b98..30db49ad 100644 --- a/app/controllers/dmsf_folders_copy_controller.rb +++ b/app/controllers/dmsf_folders_copy_controller.rb @@ -33,6 +33,7 @@ class DmsfFoldersCopyController < ApplicationController @projects = DmsfFolder.allowed_target_projects_on_copy @folders = DmsfFolder.directory_tree(@target_project, @folder) @target_folder = DmsfFolder.visible.find(params[:target_folder_id]) unless params[:target_folder_id].blank? + @back_url = params[:back_url] render layout: !request.xhr? end @@ -40,21 +41,19 @@ class DmsfFoldersCopyController < ApplicationController new_folder = @folder.copy_to(@target_project, @target_folder) if new_folder.errors.empty? flash[:notice] = l(:notice_successful_update) - redirect_to dmsf_folder_path(id: @target_project, folder_id: new_folder) else flash[:error] = new_folder.errors.full_messages.to_sentence - redirect_back_or_default dmsf_folder_path(id: @project.id, folder_id: @folder) end + redirect_back_or_default dmsf_folder_path(id: @project, folder_id: @folder.dmsf_folder) end def move if @folder.move_to(@target_project, @target_folder) flash[:notice] = l(:notice_successful_update) - redirect_to dmsf_folder_path(id: @target_project, folder_id: @folder) else flash[:error] = @folder.errors.full_messages.to_sentence - redirect_back_or_default dmsf_folder_path(id: @project.id, folder_id: @folder) end + redirect_back_or_default dmsf_folder_path(id: @project, folder_id: @folder.dmsf_folder) end private diff --git a/app/controllers/dmsf_links_controller.rb b/app/controllers/dmsf_links_controller.rb index 4539c050..0123d5c7 100644 --- a/app/controllers/dmsf_links_controller.rb +++ b/app/controllers/dmsf_links_controller.rb @@ -55,7 +55,9 @@ class DmsfLinksController < ApplicationController @dmsf_file_id = params[:dmsf_file_id] @type = params[:type] @dmsf_link.target_project_id = params[:project_id] - @target_folder_id = params[:dmsf_folder_id].to_i if params[:dmsf_folder_id].present? + #@target_folder_id = params[:dmsf_folder_id].to_i if params[:dmsf_folder_id].present? + @target_folder_id = nil + @back_url = params[:back_url] if @type == 'link_to' if @dmsf_file_id names = DmsfFile.where(id: @dmsf_file_id).pluck(:name) @@ -151,13 +153,13 @@ class DmsfLinksController < ApplicationController respond_to do |format| format.html { if params[:dmsf_link][:type] == 'link_from' - redirect_to dmsf_folder_path(id: @project, folder_id: @dmsf_link.dmsf_folder_id) + redirect_back_or_default dmsf_folder_path(id: @project, folder_id: @dmsf_link.dmsf_folder_id) else if params[:dmsf_link][:dmsf_file_id].present? redirect_to dmsf_file_path(@dmsf_link.target_file) else folder = @dmsf_link.target_folder.dmsf_folder if @dmsf_link.target_folder - redirect_to dmsf_folder_path(id: @project, folder_id: folder) + redirect_back_or_default dmsf_folder_path(id: @project, folder_id: folder) end end } @@ -186,8 +188,10 @@ class DmsfLinksController < ApplicationController def restore if @dmsf_link.restore flash[:notice] = l(:notice_dmsf_link_restored) + else + flash[:error] = @dmsf_link.errors.full_messages.to_sentence end - redirect_back_or_default dmsf_folder_path(id: @project.id, folder_id: @folder) + redirect_to trash_dmsf_path(@project) end private diff --git a/app/controllers/dmsf_workflows_controller.rb b/app/controllers/dmsf_workflows_controller.rb index 7266d453..deca0b04 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_or_default dmsf_folder_path(id: @project.id, folder_id: @folder) + redirect_back_or_default dmsf_folder_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_or_default dmsf_folder_path(id: @project.id, folder_id: @folder) + redirect_back_or_default dmsf_folder_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_or_default dmsf_folder_path(id: @project.id, folder_id: @folder) + redirect_back_or_default dmsf_folder_path(id: @project, folder_id: @folder) return end respond_to do |format| @@ -422,7 +422,7 @@ class DmsfWorkflowsController < ApplicationController flash[:error] = l(:notice_cannot_start_workflow) end end - redirect_back_or_default dmsf_folder_path(id: @project.id, folder_id: @folder) + redirect_back_or_default dmsf_folder_path(id: @project, folder_id: @folder) end def update_step diff --git a/app/helpers/dmsf_links_helper.rb b/app/helpers/dmsf_links_helper.rb index 5c50f8e0..1fc7b543 100644 --- a/app/helpers/dmsf_links_helper.rb +++ b/app/helpers/dmsf_links_helper.rb @@ -42,7 +42,7 @@ module DmsfLinksHelper def files_for_select(project_id, folder_id) files = [] - if folder_id && (folder_id != '0') + if folder_id && DmsfLinksHelper::is_a_number?(folder_id) folder = DmsfFolder.find_by(id: folder_id) files = folder.dmsf_files.visible.to_a if folder elsif project_id diff --git a/app/views/dmsf/_add_email.html.erb b/app/views/dmsf/_add_email.html.erb index 24ab9d84..d257d633 100644 --- a/app/views/dmsf/_add_email.html.erb +++ b/app/views/dmsf/_add_email.html.erb @@ -22,7 +22,7 @@

<%= l(:label_email_address_add) %>

-<%= form_tag(append_email_dmsf_path(id: @project.id), remote: true, method: :post, id: 'new-user-form') do %> +<%= form_tag(append_email_dmsf_path(id: @project), remote: true, method: :post, id: 'new-user-form') do %> <%= hidden_field_tag :project_id, @project.id %>

<%= label_tag 'user_search', l(:label_user_search) %><%= text_field_tag 'user_search', nil %>

<%= late_javascript_tag "observeSearchfield('user_search', 'users_for_users', '#{ escape_javascript url_for( diff --git a/app/views/dmsf/edit.html.erb b/app/views/dmsf/edit.html.erb index 5a24bb26..5542ebd7 100644 --- a/app/views/dmsf/edit.html.erb +++ b/app/views/dmsf/edit.html.erb @@ -28,30 +28,42 @@ <% if !@folder.new_record? && User.current.allowed_to?(:folder_manipulation, @project) && !@folder.system %> <% if @folder.locked? %> <%= link_to_if @folder.unlockable? && (!@folder.locked_for_user? || @force_file_unlock_allowed), l(:button_unlock), - unlock_dmsf_path(id: @project, folder_id: @folder), + unlock_dmsf_path(id: @project, folder_id: @folder, back_url: edit_dmsf_url(id: @project, folder_id: @folder)), title: l(:title_unlock_file), class: 'icon icon-unlock' %> <% else %> - <%= link_to l(:button_lock), lock_dmsf_path(id: @project, folder_id: @folder), + <%= link_to l(:button_lock), lock_dmsf_path(id: @project, folder_id: @folder, + back_url: edit_dmsf_url(id: @project, folder_id: @folder)), title: l(:title_lock_file), class: 'icon icon-lock' %> <% end %> - <% unless @folder.locked? %> - <% if @folder.notification %> - <%= link_to l(:label_notifications_off), - notify_deactivate_dmsf_path(id: @project, folder_id: @folder), - title: l(:title_notifications_active_deactivate), - class: 'icon icon-email' %> - <% else %> - <%= link_to l(:label_notifications_on), - notify_activate_dmsf_path(id: @project, folder_id: @folder), - title: l(:title_notifications_not_active_activate), - class: 'icon icon-email-add' %> + <% if defined?(EasyExtensions) %> + <%= render partial: 'dmsf_context_menus/folder', + locals: { dmsf_folder: @folder, + locked: @folder.locked?, + allowed: true, + dmsf_link: nil, + project: @project, + folder: @folder.dmsf_folder, + edit: true, + unlockable: @folder.unlockable? && (!@folder.locked_for_user? || User.current.allowed_to?(:force_file_unlock, @project)), + email_allowed: User.current.allowed_to?(:email_documents, @project), + back_url: edit_dmsf_url(id: @project, folder_id: @folder) + } %> + <% else %> + <%= actions_dropdown do %> + <%= render partial: 'dmsf_context_menus/folder', + locals: { dmsf_folder: @folder, + locked: @folder.locked?, + allowed: true, + dmsf_link: nil, + project: @project, + folder: @folder.dmsf_folder, + edit: true, + unlockable: @folder.unlockable? && (!@folder.locked_for_user? || User.current.allowed_to?(:force_file_unlock, @project)), + email_allowed: User.current.allowed_to?(:email_documents, @project), + back_url: edit_dmsf_url(id: @project, folder_id: @folder) + } %> <% end %> <% end %> - <% unless @folder.locked? %> - <%= link_to l(:button_delete), delete_dmsf_path(id: @project, folder_id: @folder), - data: { confirm: "#{l(:text_are_you_sure)}\n#{l(:text_not_empty) unless @folder.empty?}" }, - title: l(:button_delete), class: 'icon icon-del', method: :delete %> - <% end %> <% end %> diff --git a/app/views/dmsf/edit_root.html.erb b/app/views/dmsf/edit_root.html.erb index 1841303c..cad7d056 100644 --- a/app/views/dmsf/edit_root.html.erb +++ b/app/views/dmsf/edit_root.html.erb @@ -27,15 +27,15 @@
<% if User.current.allowed_to?(:folder_manipulation, @project) %> <% if @project.dmsf_notification %> - <%= link_to(l(:label_notifications_off), - notify_deactivate_dmsf_path(id: @project), + <%= link_to l(:label_notifications_off), + notify_deactivate_dmsf_path(id: @project, back_url: edit_root_dmsf_path(id: @project)), title: l(:title_notifications_active_deactivate), - class: 'icon icon-email') %> + class: 'icon icon-email' %> <% else %> - <%= link_to(l(:label_notifications_on), - notify_activate_dmsf_path(id: @project), + <%= link_to l(:label_notifications_on), + notify_activate_dmsf_path(id: @project, back_url: edit_root_dmsf_path(id: @project)), title: l(:title_notifications_active_deactivate), - class: 'icon icon-email-add') %> + class: 'icon icon-email-add' %> <% end %> <% end %>
diff --git a/app/views/dmsf_context_menus/_folder.html.erb b/app/views/dmsf_context_menus/_folder.html.erb index 94e4cd5a..bdc6cbd9 100644 --- a/app/views/dmsf_context_menus/_folder.html.erb +++ b/app/views/dmsf_context_menus/_folder.html.erb @@ -20,54 +20,62 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. %> -
  • - <%= context_menu_link l(:button_edit), edit_dmsf_path(id: dmsf_folder.project, folder_id: dmsf_folder), - class: 'icon icon-edit', disabled: !allowed || locked %> -
  • +<% unless edit %> +
  • + <%= context_menu_link l(:button_edit), edit_dmsf_path(id: dmsf_folder.project, folder_id: dmsf_folder, + back_url: back_url), class: 'icon icon-edit', disabled: !allowed || locked %> +
  • +<% end %> <% unless dmsf_link %>
  • - <%= context_menu_link "#{l(:button_copy)}/#{l(:button_move)}", copy_folder_path(id: dmsf_folder), + <%= context_menu_link "#{l(:button_copy)}/#{l(:button_move)}", copy_folder_path(id: dmsf_folder, back_url: back_url), class: 'icon icon-copy', disabled: !allowed || locked %>
  • <%= context_menu_link l(:label_link_to), - new_dmsf_link_path(project_id: dmsf_folder.id, dmsf_folder_id: dmsf_folder.id, type: 'link_to'), - class: 'icon dmsf-icon-link' %> + new_dmsf_link_path(project_id: project.id, dmsf_folder_id: dmsf_folder.id, type: 'link_to', + back_url: back_url), class: 'icon dmsf-icon-link' %> +
  • +<% end %> +<% unless edit %> +
  • + <% if locked %> + <%= context_menu_link l(:button_unlock), unlock_dmsf_path(id: dmsf_folder.project, folder_id: dmsf_folder, + back_url: back_url), title: l(:title_locked_by_user, user: dmsf_folder.locked_by), + class: 'icon icon-unlock', disabled: !allowed || !unlockable %> + <% else %> + <%= context_menu_link l(:button_lock), lock_dmsf_path(id: dmsf_folder.project, folder_id: dmsf_folder, + back_url: back_url), class: 'icon icon-lock', disabled: !allowed %> + <% end %>
  • <% end %> -
  • - <% if locked %> - <%= context_menu_link l(:button_unlock), unlock_dmsf_path(id: dmsf_folder.project, folder_id: dmsf_folder), - title: l(:title_locked_by_user, user: dmsf_folder.locked_by), - class: 'icon icon-unlock', disabled: !allowed || !unlockable %> - <% else %> - <%= context_menu_link l(:button_lock), lock_dmsf_path(id: dmsf_folder.project, folder_id: dmsf_folder), - class: 'icon icon-lock', disabled: !allowed %> - <% end %> -
  • <% if dmsf_folder.notification %> - <%= context_menu_link l(:label_notifications_off), notify_deactivate_dmsf_path(id: dmsf_folder.project, folder_id: dmsf_folder), - class: 'icon icon-email', disabled: !allowed || locked || !dmsf_folder.notification? %> + <%= context_menu_link l(:label_notifications_off), notify_deactivate_dmsf_path(id: dmsf_folder.project, + folder_id: dmsf_folder, back_url: back_url), class: 'icon icon-email', + disabled: !allowed || locked || !dmsf_folder.notification? %> <% else %> - <%= context_menu_link l(:label_notifications_on), notify_activate_dmsf_path(id: dmsf_folder.project, folder_id: dmsf_folder), - class: 'icon icon-email-add', disabled: !allowed || locked || dmsf_folder.notification? %> + <%= context_menu_link l(:label_notifications_on), notify_activate_dmsf_path(id: dmsf_folder.project, + folder_id: dmsf_folder, back_url: back_url), class: 'icon icon-email-add', + disabled: !allowed || locked || dmsf_folder.notification? %> <% end %>
  • -
  • - <%= context_menu_link l(:button_download), entries_operations_dmsf_path(id: project, folder_id: folder, - ids: params[:ids], download_entries: true), method: :post, class: 'icon icon-download', - id: 'dmsf-cm-download', disabled: false %> -
  • -
  • - <%= context_menu_link l(:field_mail), entries_operations_dmsf_path(id: dmsf_folder.project, folder_id: folder, - ids: params[:ids], email_entries: true), method: :post, class: 'icon icon-email', - disabled: !email_allowed %> -
  • +<% unless edit %> +
  • + <%= context_menu_link l(:button_download), entries_operations_dmsf_path(id: project, folder_id: folder, + ids: params[:ids], download_entries: true, back_url: back_url), method: :post, class: 'icon icon-download', + id: 'dmsf-cm-download', disabled: false %> +
  • +
  • + <%= context_menu_link l(:field_mail), entries_operations_dmsf_path(id: dmsf_folder.project, folder_id: folder, + ids: params[:ids], email_entries: true, back_url: back_url), method: :post, class: 'icon icon-email', + disabled: !email_allowed %> +
  • +<% end %>
  • <%= context_menu_link l(:button_delete), - dmsf_link ? dmsf_link_path(id: dmsf_link, folder_id: folder) : - delete_dmsf_path(id: dmsf_folder.project, folder_id: dmsf_folder, parent_id: folder), + dmsf_link ? dmsf_link_path(id: dmsf_link, folder_id: folder, back_url: back_url) : + delete_dmsf_path(id: dmsf_folder.project, folder_id: dmsf_folder, parent_id: folder, back_url: back_url), data: { confirm: "#{l(:text_are_you_sure)}\n#{l(:text_not_empty) unless dmsf_folder.empty?}" }, method: :delete, class: 'icon icon-del', id: 'dmsf-cm-delete', disabled: !allowed || (locked && !dmsf_link) %>
  • diff --git a/app/views/dmsf_context_menus/_revisions.html.erb b/app/views/dmsf_context_menus/_revisions.html.erb index 70ee0d11..fa0d3a4c 100644 --- a/app/views/dmsf_context_menus/_revisions.html.erb +++ b/app/views/dmsf_context_menus/_revisions.html.erb @@ -22,19 +22,21 @@ <% if file.notification %> <%= link_to l(:label_notifications_off), - notify_deactivate_dmsf_files_path(id: file), + notify_deactivate_dmsf_files_path(id: file, back_url: back_url), title: l(:title_notifications_active_deactivate), class: 'icon icon-email' %> <% else %> <%= link_to l(:label_notifications_on), - notify_activate_dmsf_files_path(id: file), + notify_activate_dmsf_files_path(id: file, back_url: back_url), title: l(:title_notifications_not_active_activate), class: 'icon icon-email-add' %> <% end %> <%= link_to l(:label_link_to), - new_dmsf_link_path(project_id: project.id, dmsf_folder_id: file.dmsf_folder ? file.dmsf_folder.id : nil, dmsf_file_id: file.id, type: 'link_to'), + new_dmsf_link_path(project_id: project.id, dmsf_folder_id: file.dmsf_folder ? file.dmsf_folder.id : nil, + dmsf_file_id: file.id, type: 'link_to', back_url: back_url), title: l(:title_create_link), class: 'icon dmsf-icon-link' %> -<%= link_to "#{l(:button_copy)}/#{l(:button_move)}", copy_file_path(id: file), +<%= link_to "#{l(:button_copy)}/#{l(:button_move)}", copy_file_path(id: file, back_url: back_url), title: l(:title_copy), class: 'icon icon-copy' %> -<%= delete_link(dmsf_file_path(id: file, details: true)) if file_delete_allowed %> +<%= delete_link(dmsf_file_path(id: file, details: true), + back_url: dmsf_folder_path(id: file.project, folder_id: file.dmsf_folder)) if file_delete_allowed %> diff --git a/app/views/dmsf_context_menus/dmsf.html.erb b/app/views/dmsf_context_menus/dmsf.html.erb index 3df12389..9df5a61c 100644 --- a/app/views/dmsf_context_menus/dmsf.html.erb +++ b/app/views/dmsf_context_menus/dmsf.html.erb @@ -24,16 +24,17 @@ <% if @dmsf_file %> <%= render partial: 'file', locals: { project: @project, folder: @folder, dmsf_file: @dmsf_file, dmsf_link: @dmsf_link, locked: @locked, unlockable: @unlockable, - allowed: @allowed, email_allowed: @email_allowed } %> + allowed: @allowed, email_allowed: @email_allowed, back_url: @back_url } %> <% elsif @dmsf_folder %> <%= render partial: 'folder', locals: { project: @project, folder: @folder, dmsf_folder: @dmsf_folder, dmsf_link: @dmsf_link, locked: @locked, unlockable: @unlockable, - allowed: @allowed, email_allowed: @email_allowed } %> + allowed: @allowed, email_allowed: @email_allowed, edit: false, + back_url: @back_url } %> <% elsif @dmsf_link %> - <%= render partial: 'url', locals: { dmsf_link: @dmsf_link, allowed: @allowed } %> + <%= render partial: 'url', locals: { dmsf_link: @dmsf_link, allowed: @allowed, back_url: @back_url } %> <% else %> <%= render partial: 'multiple', locals: { project: @project, folder: @folder, allowed: @allowed, - email_allowed: @email_allowed } %> + email_allowed: @email_allowed, back_url: @back_url } %> <% end %> diff --git a/app/views/dmsf_files/show.html.erb b/app/views/dmsf_files/show.html.erb index 1a9eec8a..2a77e3ca 100644 --- a/app/views/dmsf_files/show.html.erb +++ b/app/views/dmsf_files/show.html.erb @@ -28,24 +28,28 @@ <% if @file_manipulation_allowed %> <% if @file.locked_for_user? %> <% if User.current.allowed_to?(:force_file_unlock, @project) %> - <%= link_to_if @file.unlockable?, l(:button_unlock), unlock_dmsf_files_path(id: @file), + <%= link_to_if @file.unlockable?, l(:button_unlock), unlock_dmsf_files_path(id: @file, + back_url: dmsf_file_path(id: @file)), title: l(:title_unlock_file), class: 'icon icon-unlock' %> <% end %> <% else %> <% if @file.locked? %> - <%= link_to_if @file.unlockable?, l(:button_unlock), unlock_dmsf_files_path(id: @file), + <%= link_to_if @file.unlockable?, l(:button_unlock), unlock_dmsf_files_path(id: @file, + back_url: dmsf_file_path(id: @file)), title: l(:title_unlock_file), class: 'icon icon-unlock' %> <% else %> - <%= link_to l(:button_lock), lock_dmsf_files_path(id: @file), + <%= link_to l(:button_lock), lock_dmsf_files_path(id: @file, back_url: dmsf_file_path(id: @file)), title: l(:title_lock_file), class: 'icon icon-lock' %> <% end %> <% if defined?(EasyExtensions) %> <%= render partial: 'dmsf_context_menus/revisions', - locals: { project: @project, file: @file, file_delete_allowed: @file_delete_allowed } %> + locals: { project: @project, file: @file, file_delete_allowed: @file_delete_allowed, + back_url: dmsf_file_path(id: @file)} %> <% else %> <%= actions_dropdown do %> <%= render partial: 'dmsf_context_menus/revisions', - locals: { project: @project, file: @file, file_delete_allowed: @file_delete_allowed } %> + locals: { project: @project, file: @file, file_delete_allowed: @file_delete_allowed, + back_url: dmsf_file_path(id: @file) } %> <% end %> <% end %> <% end %> diff --git a/app/views/dmsf_files_copy/new.html.erb b/app/views/dmsf_files_copy/new.html.erb index b6a923b5..2150cb52 100644 --- a/app/views/dmsf_files_copy/new.html.erb +++ b/app/views/dmsf_files_copy/new.html.erb @@ -32,4 +32,5 @@ folders: @folders, file_or_folder: @file, target_folder: @target_folder, - permission: :file_manipulation } %> + permission: :file_manipulation, + back_url: @back_url } %> diff --git a/app/views/dmsf_folders_copy/_form.html.erb b/app/views/dmsf_folders_copy/_form.html.erb index 9e737063..0749f676 100644 --- a/app/views/dmsf_folders_copy/_form.html.erb +++ b/app/views/dmsf_folders_copy/_form.html.erb @@ -22,6 +22,7 @@ <% if projects.present? %> <%= form_tag({ action: 'copy', id: file_or_folder}, id: 'copyForm') do %> + <%= hidden_field_tag 'back_url', back_url %>

    <%= label_tag 'target_project_id', l(:field_target_project) %> diff --git a/app/views/dmsf_folders_copy/new.html.erb b/app/views/dmsf_folders_copy/new.html.erb index 02d2d864..cf2c370c 100644 --- a/app/views/dmsf_folders_copy/new.html.erb +++ b/app/views/dmsf_folders_copy/new.html.erb @@ -31,4 +31,5 @@ folders: @folders, file_or_folder: @folder, target_folder: @target_folder, - permission: :folder_manipulation } %> + permission: :folder_manipulation, + back_url: @back_url} %> diff --git a/app/views/dmsf_links/_form.html.erb b/app/views/dmsf_links/_form.html.erb index 7013738b..7a6e686b 100644 --- a/app/views/dmsf_links/_form.html.erb +++ b/app/views/dmsf_links/_form.html.erb @@ -29,6 +29,7 @@ <%= f.hidden_field :type, value: @type %> <%= f.hidden_field :dmsf_file_id, value: @dmsf_file_id %> <%= f.hidden_field(:container, value: @container) if @container %> + <%= hidden_field_tag 'back_url', @back_url %>

    <% if (@type == 'link_from') && !@container %>

    diff --git a/test/functional/dmsf_controller_test.rb b/test/functional/dmsf_controller_test.rb index 3eec1adf..d691d9b5 100644 --- a/test/functional/dmsf_controller_test.rb +++ b/test/functional/dmsf_controller_test.rb @@ -105,7 +105,7 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase assert_equal 0, DmsfFolder.deleted.where(project_id: @project1.id).all.size assert_equal 0, DmsfFile.deleted.where(project_id: @project1.id).all.size assert_equal 0, DmsfLink.deleted.where(project_id: @project1.id).all.size - assert_redirected_to trash_dmsf_path(id: @project1.id) + assert_redirected_to trash_dmsf_path(id: @project1) end def test_empty_trash_forbidden @@ -124,7 +124,7 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase def test_delete_locked # Permissions OK but the folder is locked - @request.env['HTTP_REFERER'] = dmsf_folder_path(id: @project1.id, folder_id: @folder2.id) + @request.env['HTTP_REFERER'] = dmsf_folder_path(id: @project1, folder_id: @folder2.id) get :delete, params: { id: @project1, folder_id: @folder2.id, commit: false} assert_response :redirect assert_include l(:error_folder_is_locked), flash[:error] @@ -154,7 +154,7 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase def test_restore_ok # Permissions OK - @request.env['HTTP_REFERER'] = trash_dmsf_path(id: @project1.id) + @request.env['HTTP_REFERER'] = trash_dmsf_path(id: @project1) @folder1.deleted = 1 @folder1.save get :restore, params: { id: @project1, folder_id: @folder1.id } @@ -171,7 +171,7 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase def test_delete_entries_ok # Permissions OK - @request.env['HTTP_REFERER'] = dmsf_folder_path(id: @project1.id) + @request.env['HTTP_REFERER'] = dmsf_folder_path(id: @project1) flash[:error] = nil get :entries_operation, params: { id: @project1, delete_entries: 'Delete', ids: ["folder-#{@folder7.id}", "file-#{@file1.id}", "file-link-#{@link2.id}"]} @@ -181,7 +181,7 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase def test_restore_entries # Restore - @request.env['HTTP_REFERER'] = trash_dmsf_path(id: @project1.id) + @request.env['HTTP_REFERER'] = trash_dmsf_path(id: @project1) flash[:error] = nil get :entries_operation, params: { id: @project1, restore_entries: 'Restore', ids: ["file-#{@file1.id}", "file-link-#{@link2.id}"]} diff --git a/test/functional/dmsf_workflow_controller_test.rb b/test/functional/dmsf_workflow_controller_test.rb index 78e5b7be..3996e10b 100644 --- a/test/functional/dmsf_workflow_controller_test.rb +++ b/test/functional/dmsf_workflow_controller_test.rb @@ -263,7 +263,7 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase step_action: DmsfWorkflowStepAction::ACTION_APPROVE, user_id: nil, note: ''}) - assert_redirected_to dmsf_folder_path(id: @project1.id) + assert_redirected_to dmsf_folder_path(id: @project1) assert DmsfWorkflowStepAction.where( dmsf_workflow_step_assignment_id: @wfsa2.id, action: DmsfWorkflowStepAction::ACTION_APPROVE).first @@ -306,7 +306,7 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase dmsf_file_revision_id: @revision2.id, step_action: @admin.id * 10, note: 'Delegated because...'}) - assert_redirected_to dmsf_folder_path(id: @project1.id) + assert_redirected_to dmsf_folder_path(id: @project1) assert DmsfWorkflowStepAction.where( dmsf_workflow_step_assignment_id: @wfsa2.id, action: DmsfWorkflowStepAction::ACTION_DELEGATE).first @@ -329,7 +329,7 @@ class DmsfWorkflowsControllerTest < RedmineDmsf::Test::TestCase def test_start @revision2.dmsf_workflow_id = @wf1.id get :start, params: { id: @revision2.dmsf_workflow_id, dmsf_file_revision_id: @revision2.id } - assert_redirected_to dmsf_folder_path(id: @project1.id) + assert_redirected_to dmsf_folder_path(id: @project1) end def test_assignment