diff --git a/after_init.rb b/after_init.rb index 2d19cff7..d6a2c38f 100644 --- a/after_init.rb +++ b/after_init.rb @@ -32,21 +32,28 @@ def dmsf_init menu.push :dmsf_approvalworkflows, :dmsf_workflows_path, caption: :label_dmsf_workflow_plural, html: { class: 'icon icon-workflows' }, if: Proc.new { |_| User.current.admin? } end - + # Project menu extension Redmine::MenuManager.map :project_menu do |menu| menu.push :dmsf, { controller: 'dmsf', action: 'show' }, caption: :menu_dmsf, before: :documents, param: :id end + # Main menu extension + Redmine::MenuManager.map :top_menu do |menu| + menu.push :dmsf, { controller: 'dmsf', action: 'index' }, caption: :menu_dmsf + end # Permissions + #permission :view_dmsf_index, { dmsf: [:index] } + Redmine::AccessControl.map do |map| + #map.permission :view_dmsf_index, { dmsf: [:index] }, require: :loggedin map.project_module :dmsf do |pmap| pmap.permission :view_dmsf_file_revision_accesses, read: true pmap.permission :view_dmsf_file_revisions, read: true pmap.permission :view_dmsf_folders, - { dmsf: [:show] }, + { dmsf: [:show, :index] }, read: true pmap.permission :user_preferences, { dmsf_state: [:user_pref_save] } diff --git a/app/controllers/dmsf_context_menus_controller.rb b/app/controllers/dmsf_context_menus_controller.rb index 39c3c82b..fae07c70 100644 --- a/app/controllers/dmsf_context_menus_controller.rb +++ b/app/controllers/dmsf_context_menus_controller.rb @@ -23,7 +23,6 @@ class DmsfContextMenusController < ApplicationController helper :context_menus - before_action :find_project before_action :find_folder before_action :find_dmsf_file before_action :find_dmsf_folder @@ -31,12 +30,14 @@ class DmsfContextMenusController < ApplicationController def dmsf if @dmsf_file @locked = @dmsf_file.locked? + @project = @dmsf_file.project @allowed = User.current.allowed_to? :file_manipulation, @project @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) elsif @dmsf_folder @locked = @dmsf_folder.locked? + @project = @dmsf_folder.project @allowed = User.current.allowed_to?(:folder_manipulation, @project) @unlockable = @allowed && @dmsf_folder.unlockable? && (!@dmsf_folder.locked_for_user?) && User.current.allowed_to?(:force_file_unlock, @project) @@ -44,9 +45,11 @@ class DmsfContextMenusController < ApplicationController elsif @dmsf_link # url link @locked = false @unlockable = false + @project = @dmsf_link.project @allowed = User.current.allowed_to? :file_manipulation, @project @email_allowed = false else # multiple selection + @project = get_project @locked = false @unlockable = false @allowed = User.current.allowed_to?(:file_manipulation, @project) && @@ -60,15 +63,19 @@ class DmsfContextMenusController < ApplicationController def trash if @dmsf_file + @project = @dmsf_file.project @allowed_restore = User.current.allowed_to? :file_manipulation, @project @allowed_delete = User.current.allowed_to? :file_delete, @project elsif @dmsf_folder + @project = @dmsf_folder.project @allowed_restore = User.current.allowed_to? :folder_manipulation, @project @allowed_delete = @allowed_restore elsif @dmsf_link # url link + @project = @dmsf_link.project @allowed_restore = User.current.allowed_to? :file_manipulation, @project @allowed_delete = User.current.allowed_to? :file_delete, @project else # multiple selection + @project = get_project @allowed_restore = User.current.allowed_to?(:file_manipulation, @project) && User.current.allowed_to?(:folder_manipulation, @project) @allowed_delete = User.current.allowed_to?(:file_delete, @project) && @@ -81,6 +88,27 @@ class DmsfContextMenusController < ApplicationController private + def get_project + prj = nil + params[:ids].each do |id| + if id =~ /file-(\d+)/ + item = DmsfFile.find_by(id: $1) + elsif id =~ /(file|url)-link-(\d+)/ + item = DmsfLink.find_by(id: $2) + elsif id =~ /folder-(\d+)/ + item = DmsfFolder.find_by(id: $1) + elsif id =~ /folder-link-(\d+)/ + item = DmsfLink.find_by(id: $1) + end + unless prj + prj = item&.project + else + return nil if(prj != item.project) + end + end + prj + end + def find_folder @folder = DmsfFolder.find params[:folder_id] if params[:folder_id].present? rescue ActiveRecord::RecordNotFound diff --git a/app/controllers/dmsf_controller.rb b/app/controllers/dmsf_controller.rb index 0dfe61fb..562744f5 100644 --- a/app/controllers/dmsf_controller.rb +++ b/app/controllers/dmsf_controller.rb @@ -24,15 +24,16 @@ class DmsfController < ApplicationController include RedmineDmsf::DmsfZip - before_action :find_project - before_action :authorize, except: [:expand_folder] + before_action :find_project, except: [:expand_folder, :index] + before_action :authorize, except: [:expand_folder, :index] + before_action :authorize_global, only: [:index] before_action :find_folder, except: [:new, :create, :edit_root, :save_root, :add_email, :append_email, :autocomplete_for_user] before_action :find_parent, only: [:new, :create, :delete] before_action :permissions # Also try to lookup folder by title if this is an API call before_action :find_folder_by_title, only: [:show] - before_action :get_query, only: [:expand_folder, :show, :trash, :empty_trash] + before_action :get_query, only: [:expand_folder, :show, :trash, :empty_trash, :index] before_action :get_project_roles, only: [:new, :edit, :create, :save] accept_api_auth :show, :create, :save, :delete @@ -61,6 +62,10 @@ class DmsfController < ApplicationController end end + def index + show + end + def show @system_folder = @folder && @folder.system @locked_for_user = @folder && @folder.locked_for_user? diff --git a/app/models/dmsf_query.rb b/app/models/dmsf_query.rb index 309d5482..f6216984 100644 --- a/app/models/dmsf_query.rb +++ b/app/models/dmsf_query.rb @@ -82,17 +82,15 @@ class DmsfQuery < Query def base_scope unless @scope - @scope = [dmsf_folders_scope, dmsf_folder_links_scope, dmsf_projects_scope, dmsf_files_scope, dmsf_file_links_scope, dmsf_url_links_scope]. - compact.inject(:union_all) + @scope = [dmsf_folders_scope, dmsf_folder_links_scope, dmsf_projects_scope, dmsf_files_scope, + dmsf_file_links_scope, dmsf_url_links_scope].compact.inject(:union_all) end @scope end # Returns the issue count def dmsf_count - base_scope. - where(statement). - count + base_scope.where(statement).count rescue ::ActiveRecord::StatementInvalid => e raise StatementInvalid.new e.message end @@ -192,37 +190,36 @@ class DmsfQuery < Query private def dmsf_projects_scope - return nil unless Setting.plugin_redmine_dmsf['dmsf_projects_as_subfolders'] + return nil if(project && !Setting.plugin_redmine_dmsf['dmsf_projects_as_subfolders']) cf_columns = +'' if statement.present? DmsfFileRevisionCustomField.visible.order(:position).pluck(:id).each do |id| cf_columns << ",NULL AS cf_#{id}" end end - scope = Project. - select(%{ - projects.id AS id, - projects.id AS project_id, - CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS revision_id, - projects.name AS title, - projects.identifier AS filename, - CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS size, - projects.updated_on AS updated, - CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS major_version, - CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS minor_version, - CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS workflow, - CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS workflow_id, - '' AS firstname, - '' AS lastname, - CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS author, - 'project' AS type, - CAST(0 AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS deleted, - 0 AS sort #{cf_columns}}).visible + scope = Project.select(%{ + projects.id AS id, + projects.id AS project_id, + CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS revision_id, + projects.name AS title, + projects.identifier AS filename, + CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS size, + projects.updated_on AS updated, + CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS major_version, + CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS minor_version, + CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS workflow, + CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS workflow_id, + '' AS firstname, + '' AS lastname, + CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS author, + 'project' AS type, + 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' else scope = scope.non_templates if scope.respond_to?(:non_templates) - scope.where projects: { parent_id: project.id } + scope.where projects: { parent_id: project&.id } end end @@ -233,26 +230,26 @@ class DmsfQuery < Query cf_columns << ",(SELECT value from custom_values WHERE custom_field_id = #{id} AND customized_type = 'DmsfFolder' AND customized_id = dmsf_folders.id) AS cf_#{id}" end end - scope = DmsfFolder. - select(%{ - dmsf_folders.id AS id, - dmsf_folders.project_id AS project_id, - CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS revision_id, - dmsf_folders.title AS title, - NULL AS filename, - CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS size, - dmsf_folders.updated_at AS updated, - CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS major_version, - CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS minor_version, - CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS workflow, - CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS workflow_id, - users.firstname AS firstname, - users.lastname AS lastname, - users.id AS author, - 'folder' AS type, - dmsf_folders.deleted AS deleted, - 1 AS sort #{cf_columns}}). - joins('LEFT JOIN users ON dmsf_folders.user_id = users.id') + scope = DmsfFolder.select(%{ + dmsf_folders.id AS id, + dmsf_folders.project_id AS project_id, + CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS revision_id, + dmsf_folders.title AS title, + NULL AS filename, + CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS size, + dmsf_folders.updated_at AS updated, + CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS major_version, + CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS minor_version, + CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS workflow, + CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS workflow_id, + users.firstname AS firstname, + users.lastname AS lastname, + users.id AS author, + 'folder' AS type, + 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 if deleted scope = scope.deleted else @@ -270,33 +267,33 @@ class DmsfQuery < Query end def dmsf_folder_links_scope + return nil unless project cf_columns = +'' if statement.present? DmsfFileRevisionCustomField.visible.order(:position).pluck(:id).each do |id| cf_columns << ",(SELECT value from custom_values WHERE custom_field_id = #{id} AND customized_type = 'DmsfFolder' AND customized_id = dmsf_folders.id) AS cf_#{id}" end end - scope = DmsfLink. - select(%{ - dmsf_links.id AS id, - COALESCE(dmsf_folders.project_id, dmsf_links.project_id) AS project_id, - dmsf_links.target_id AS revision_id, - dmsf_links.name AS title, - dmsf_folders.title AS filename, - CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS size, - COALESCE(dmsf_folders.updated_at, dmsf_links.updated_at) AS updated, - CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS major_version, - CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS minor_version, - CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS workflow, - CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS workflow_id, - users.firstname AS firstname, - users.lastname AS lastname, - users.id AS author, - 'folder-link' AS type, - dmsf_links.deleted AS deleted, - 1 AS sort #{cf_columns}}). - joins('LEFT JOIN dmsf_folders ON dmsf_links.target_id = dmsf_folders.id'). - joins('LEFT JOIN users ON users.id = COALESCE(dmsf_folders.user_id, dmsf_links.user_id)') + scope = DmsfLink.select(%{ + dmsf_links.id AS id, + COALESCE(dmsf_folders.project_id, dmsf_links.project_id) AS project_id, + dmsf_links.target_id AS revision_id, + dmsf_links.name AS title, + dmsf_folders.title AS filename, + CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS size, + COALESCE(dmsf_folders.updated_at, dmsf_links.updated_at) AS updated, + CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS major_version, + CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS minor_version, + CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS workflow, + CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS workflow_id, + users.firstname AS firstname, + users.lastname AS lastname, + users.id AS author, + 'folder-link' AS type, + dmsf_links.deleted AS deleted, + 1 AS sort #{cf_columns}}). + joins('LEFT JOIN dmsf_folders ON dmsf_links.target_id = dmsf_folders.id'). + joins('LEFT JOIN users ON users.id = COALESCE(dmsf_folders.user_id, dmsf_links.user_id)') if dmsf_folder_id scope.where dmsf_links: { target_type: 'DmsfFolder', dmsf_folder_id: dmsf_folder_id, deleted: deleted } else @@ -309,34 +306,34 @@ class DmsfQuery < Query end def dmsf_files_scope + return nil unless project cf_columns = +'' if statement.present? DmsfFileRevisionCustomField.visible.order(:position).pluck(:id).each do |id| cf_columns << ",(SELECT value from custom_values WHERE custom_field_id = #{id} AND customized_type = 'DmsfFileRevision' AND customized_id = dmsf_file_revisions.id) AS cf_#{id}" end end - scope = DmsfFile. - select(%{ - dmsf_files.id AS id, - dmsf_files.project_id AS project_id, - dmsf_file_revisions.id AS revision_id, - dmsf_file_revisions.title AS title, - dmsf_file_revisions.name AS filename, - dmsf_file_revisions.size AS size, - dmsf_file_revisions.updated_at AS updated, - dmsf_file_revisions.major_version AS major_version, - dmsf_file_revisions.minor_version AS minor_version, - dmsf_file_revisions.workflow AS workflow, - dmsf_file_revisions.dmsf_workflow_id AS workflow_id, - users.firstname AS firstname, - users.lastname AS lastname, - users.id AS author, - 'file' AS type, - dmsf_files.deleted AS deleted, - 2 AS sort #{cf_columns}}). - joins(:dmsf_file_revisions). - joins('LEFT JOIN users ON dmsf_file_revisions.user_id = users.id '). - where(sub_query) + scope = DmsfFile.select(%{ + dmsf_files.id AS id, + dmsf_files.project_id AS project_id, + dmsf_file_revisions.id AS revision_id, + dmsf_file_revisions.title AS title, + dmsf_file_revisions.name AS filename, + dmsf_file_revisions.size AS size, + dmsf_file_revisions.updated_at AS updated, + dmsf_file_revisions.major_version AS major_version, + dmsf_file_revisions.minor_version AS minor_version, + dmsf_file_revisions.workflow AS workflow, + dmsf_file_revisions.dmsf_workflow_id AS workflow_id, + users.firstname AS firstname, + users.lastname AS lastname, + users.id AS author, + 'file' AS type, + dmsf_files.deleted AS deleted, + 2 AS sort #{cf_columns}}). + joins(:dmsf_file_revisions). + joins('LEFT JOIN users ON dmsf_file_revisions.user_id = users.id '). + where(sub_query) if dmsf_folder_id scope.where dmsf_files: { dmsf_folder_id: dmsf_folder_id, deleted: deleted } else @@ -349,35 +346,35 @@ class DmsfQuery < Query end def dmsf_file_links_scope + return nil unless project cf_columns = +'' if statement.present? DmsfFileRevisionCustomField.visible.order(:position).pluck(:id).each do |id| cf_columns << ",(SELECT value from custom_values WHERE custom_field_id = #{id} AND customized_type = 'DmsfFileRevision' AND customized_id = dmsf_file_revisions.id) AS cf_#{id}" end end - scope = DmsfLink. - select(%{ - dmsf_links.id AS id, - dmsf_files.project_id AS project_id, - dmsf_files.id AS revision_id, - dmsf_links.name AS title, - dmsf_file_revisions.name AS filename, - dmsf_file_revisions.size AS size, - dmsf_file_revisions.updated_at AS updated, - dmsf_file_revisions.major_version AS major_version, - dmsf_file_revisions.minor_version AS minor_version, - dmsf_file_revisions.workflow AS workflow, - dmsf_file_revisions.dmsf_workflow_id AS workflow_id, - users.firstname AS firstname, - users.lastname AS lastname, - users.id AS author, - 'file-link' AS type, - dmsf_links.deleted AS deleted, - 2 AS sort #{cf_columns}}). - joins('JOIN dmsf_files ON dmsf_files.id = dmsf_links.target_id'). - joins('JOIN dmsf_file_revisions ON dmsf_file_revisions.dmsf_file_id = dmsf_files.id'). - joins('LEFT JOIN users ON dmsf_file_revisions.user_id = users.id '). - where(sub_query) + scope = DmsfLink.select(%{ + dmsf_links.id AS id, + dmsf_files.project_id AS project_id, + dmsf_files.id AS revision_id, + dmsf_links.name AS title, + dmsf_file_revisions.name AS filename, + dmsf_file_revisions.size AS size, + dmsf_file_revisions.updated_at AS updated, + dmsf_file_revisions.major_version AS major_version, + dmsf_file_revisions.minor_version AS minor_version, + dmsf_file_revisions.workflow AS workflow, + dmsf_file_revisions.dmsf_workflow_id AS workflow_id, + users.firstname AS firstname, + users.lastname AS lastname, + users.id AS author, + 'file-link' AS type, + dmsf_links.deleted AS deleted, + 2 AS sort #{cf_columns}}). + joins('JOIN dmsf_files ON dmsf_files.id = dmsf_links.target_id'). + joins('JOIN dmsf_file_revisions ON dmsf_file_revisions.dmsf_file_id = dmsf_files.id'). + joins('LEFT JOIN users ON dmsf_file_revisions.user_id = users.id '). + where(sub_query) if dmsf_folder_id scope.where dmsf_links: { target_type: 'DmsfFile', dmsf_folder_id: dmsf_folder_id, deleted: deleted } else @@ -391,32 +388,32 @@ class DmsfQuery < Query end def dmsf_url_links_scope + return nil unless project cf_columns = +'' if statement.present? DmsfFileRevisionCustomField.visible.order(:position).pluck(:id).each do |id| cf_columns << ",NULL AS cf_#{id}" end end - scope = DmsfLink. - select(%{ - dmsf_links.id AS id, - dmsf_links.project_id AS project_id, - CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS revision_id, - dmsf_links.name AS title, - dmsf_links.external_url AS filename, - CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS size, - dmsf_links.updated_at AS updated, - CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS major_version, - CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS minor_version, - CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS workflow, - CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS workflow_id, - users.firstname AS firstname, - users.lastname AS lastname, - users.id AS author, - 'url-link' AS type, - dmsf_links.deleted AS deleted, - 2 AS sort #{cf_columns}}). - joins('LEFT JOIN users ON dmsf_links.user_id = users.id ') + scope = DmsfLink.select(%{ + dmsf_links.id AS id, + dmsf_links.project_id AS project_id, + CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS revision_id, + dmsf_links.name AS title, + dmsf_links.external_url AS filename, + CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS size, + dmsf_links.updated_at AS updated, + CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS major_version, + CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS minor_version, + CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS workflow, + CAST(NULL AS #{ActiveRecord::Base.connection.type_to_sql(:decimal)}) AS workflow_id, + users.firstname AS firstname, + users.lastname AS lastname, + users.id AS author, + 'url-link' AS type, + dmsf_links.deleted AS deleted, + 2 AS sort #{cf_columns}}). + joins('LEFT JOIN users ON dmsf_links.user_id = users.id ') if dmsf_folder_id scope.where dmsf_links: { target_type: 'DmsfUrl', dmsf_folder_id: dmsf_folder_id, deleted: deleted } else diff --git a/app/views/dmsf/_add_email.html.erb b/app/views/dmsf/_add_email.html.erb index 4ed6ffe9..24ab9d84 100644 --- a/app/views/dmsf/_add_email.html.erb +++ b/app/views/dmsf/_add_email.html.erb @@ -22,20 +22,14 @@
<%= 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( - controller: 'dmsf', action: 'autocomplete_for_user', project_id: @project) }')" %> - + controller: 'dmsf', action: 'autocomplete_for_user') }')" %><%= l(:label_no_data) %>
- <% else %> - <%= render partial: 'query_list', locals: { query: @query, dmsf_pages: @dmsf_pages, folder: @folder } %> - <%= pagination_links_full @dmsf_pages, @dmsf_count %> - <% end %> -<% end %> - -<%= context_menu %> - -<% unless @folder && @folder.system %> - <% other_formats_links do |f| %> - <%= f.link_to 'CSV', url: { action: :show, id: @project, folder_id: @folder, encoding: Encoding::UTF_8 } %> - - <%= link_to 'WebDAV', webdav_url(@project, @folder) %> - - <% end %> -<% end %> - -<% content_for :sidebar do %> - <%= render partial: 'dmsf/sidebar' %> -<% end %> +<%= render partial: 'main', locals: { } %> diff --git a/app/views/dmsf_context_menus/_approval_workflow.html.erb b/app/views/dmsf_context_menus/_approval_workflow.html.erb index 61844661..25fb44ea 100644 --- a/app/views/dmsf_context_menus/_approval_workflow.html.erb +++ b/app/views/dmsf_context_menus/_approval_workflow.html.erb @@ -20,7 +20,7 @@ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. %> -<% workflows_available = DmsfWorkflow.where(['project_id = ? OR project_id IS NULL', project.id]).exists? %> +<% workflows_available = DmsfWorkflow.where(['project_id = ? OR project_id IS NULL', project&.id]).exists? %> <% wf = DmsfWorkflow.find_by(id: dmsf_file.last_revision.dmsf_workflow_id) if dmsf_file.last_revision.dmsf_workflow_id %> <% file_approval_allowed = User.current.allowed_to?(:file_approval, project) %> <% allowed = User.current && (dmsf_file.last_revision.dmsf_workflow_assigned_by_user == User.current) && wf %> diff --git a/app/views/dmsf_context_menus/_file.html.erb b/app/views/dmsf_context_menus/_file.html.erb index edf90898..65ba25ae 100644 --- a/app/views/dmsf_context_menus/_file.html.erb +++ b/app/views/dmsf_context_menus/_file.html.erb @@ -31,7 +31,7 @@