From 0ff35263a24fd8f7b1419204d017b1fe4dc177a2 Mon Sep 17 00:00:00 2001 From: Mathieu Le Marec - Pasquet Date: Sun, 22 Mar 2015 17:13:43 +0100 Subject: [PATCH] WIP: redmine3 support, continue --- app/controllers/dmsf_controller.rb | 10 +++------- app/controllers/dmsf_files_controller.rb | 12 +++++++++++- app/controllers/dmsf_links_controller.rb | 12 ++++++++++-- app/controllers/dmsf_upload_controller.rb | 14 +++++++++++--- app/models/dmsf_file.rb | 1 + app/models/dmsf_file_revision.rb | 2 +- app/models/dmsf_folder.rb | 2 -- lib/redmine_dmsf/webdav/dmsf_resource.rb | 11 +++++++++-- 8 files changed, 46 insertions(+), 18 deletions(-) diff --git a/app/controllers/dmsf_controller.rb b/app/controllers/dmsf_controller.rb index 4c04be2b..f377a287 100644 --- a/app/controllers/dmsf_controller.rb +++ b/app/controllers/dmsf_controller.rb @@ -248,7 +248,8 @@ class DmsfController < ApplicationController def create if (Redmine::VERSION::MAJOR >= 3) - @folder = DmsfFolder.new(folder_params) + @folder = DmsfFolder.new( + params.require(:dmsf_folder).permit(:title, :description, :dmsf_folder_id)) else @folder = DmsfFolder.new(params[:dmsf_folder]) end @@ -436,7 +437,7 @@ class DmsfController < ApplicationController if (Redmine::VERSION::MAJOR >= 3) audit = DmsfFileRevisionAccess.new audit.user = User.current - audit.revision = @revision + audit.revision = f.last_revision audit.action = DmsfFileRevisionAccess::DownloadAction else audit = DmsfFileRevisionAccess.new(:user_id => User.current.id, :dmsf_file_revision_id => f.last_revision.id, @@ -591,9 +592,4 @@ class DmsfController < ApplicationController copy end - private - def folder_params - params.require(:dmsf_folder).permit(:title, :description, :dmsf_folder_id) - end - end diff --git a/app/controllers/dmsf_files_controller.rb b/app/controllers/dmsf_files_controller.rb index 40c4f8a1..26c9dc24 100644 --- a/app/controllers/dmsf_files_controller.rb +++ b/app/controllers/dmsf_files_controller.rb @@ -114,7 +114,12 @@ class DmsfFilesController < ApplicationController if @file.locked_for_user? flash[:error] = l(:error_file_is_locked) else - revision = DmsfFileRevision.new(params[:dmsf_file_revision]) + if (Redmine::VERSION::MAJOR >= 3) + aparams = frev_params + else + aparams = params + end + revision = DmsfFileRevision.new(aparams) revision.file = @file last_revision = @file.last_revision @@ -288,6 +293,11 @@ class DmsfFilesController < ApplicationController private + def frev_params + params.require(:dmsf_file_revision).permit( + :title, :name, :description, :comment) + end + def log_activity(action) Rails.logger.info "#{Time.now.strftime('%Y-%m-%d %H:%M:%S')} #{User.current.login}@#{request.remote_ip}/#{request.env['HTTP_X_FORWARDED_FOR']}: #{action} dmsf://#{@file.project.identifier}/#{@file.id}/#{@revision.id if @revision}" end diff --git a/app/controllers/dmsf_links_controller.rb b/app/controllers/dmsf_links_controller.rb index 167f3a56..3f2fe9bb 100644 --- a/app/controllers/dmsf_links_controller.rb +++ b/app/controllers/dmsf_links_controller.rb @@ -25,7 +25,11 @@ class DmsfLinksController < ApplicationController before_filter :authorize def new - @dmsf_link = DmsfLink.new(:project_id => params[:project_id]) + if (Redmine::VERSION::MAJOR >= 3) + @dmsf_link = DmsfLink.new(l_params) + else + @dmsf_link = DmsfLink.new(:project_id => params[:project_id]) + end if params[:dmsf_link].present? # Reload @@ -185,6 +189,10 @@ class DmsfLinksController < ApplicationController private + def l_params + params.fetch(:dmsf_link, {}).permit(:project_id) + end + def find_link_project if @dmsf_link @project = @dmsf_link.project @@ -195,4 +203,4 @@ class DmsfLinksController < ApplicationController render_404 end -end \ No newline at end of file +end diff --git a/app/controllers/dmsf_upload_controller.rb b/app/controllers/dmsf_upload_controller.rb index 190e1986..6fcbddba 100644 --- a/app/controllers/dmsf_upload_controller.rb +++ b/app/controllers/dmsf_upload_controller.rb @@ -52,7 +52,11 @@ class DmsfUploadController < ApplicationController # async single file upload handling def upload_file - @tempfile = params[:file] + if (Redmine::VERSION::MAJOR >= 3) + @tempfile = params.require(:file) + else + @tempfile = params[:file] + end unless @tempfile.original_filename render_404 return @@ -82,7 +86,11 @@ class DmsfUploadController < ApplicationController end def commit_files - commited_files = params[:commited_files] + if (Redmine::VERSION::MAJOR >= 3) + commited_files = params.require(:commited_files) + else + commited_files = params[:commited_files] + end if commited_files && commited_files.is_a?(Hash) files = [] failed_uploads = [] @@ -220,4 +228,4 @@ class DmsfUploadController < ApplicationController render_403 end -end \ No newline at end of file +end diff --git a/app/models/dmsf_file.rb b/app/models/dmsf_file.rb index 6dc923a8..0f16dafc 100644 --- a/app/models/dmsf_file.rb +++ b/app/models/dmsf_file.rb @@ -44,6 +44,7 @@ class DmsfFile < ActiveRecord::Base :class_name => 'DmsfLock', :foreign_key => 'entity_id', :dependent => :destroy has_many :referenced_links, -> { where target_type: DmsfFile.model_name}, :class_name => 'DmsfLink', :foreign_key => 'target_id', :dependent => :destroy + accepts_nested_attributes_for :revisions, :locks, :referenced_links, :project else has_many :revisions, :class_name => 'DmsfFileRevision', :foreign_key => 'dmsf_file_id', :order => "#{DmsfFileRevision.table_name}.major_version DESC, #{DmsfFileRevision.table_name}.minor_version DESC, #{DmsfFileRevision.table_name}.updated_at DESC", diff --git a/app/models/dmsf_file_revision.rb b/app/models/dmsf_file_revision.rb index ab3a5ef7..e1ab603e 100644 --- a/app/models/dmsf_file_revision.rb +++ b/app/models/dmsf_file_revision.rb @@ -27,7 +27,7 @@ class DmsfFileRevision < ActiveRecord::Base has_many :access, :class_name => 'DmsfFileRevisionAccess', :foreign_key => 'dmsf_file_revision_id', :dependent => :destroy has_many :dmsf_workflow_step_assignment, :dependent => :destroy if (Redmine::VERSION::MAJOR >= 3) - accepts_nested_attributes_for :access, :dmsf_workflow_step_assignment + accepts_nested_attributes_for :access, :dmsf_workflow_step_assignment, :file, :user end diff --git a/app/models/dmsf_folder.rb b/app/models/dmsf_folder.rb index d917e253..89e12fa4 100644 --- a/app/models/dmsf_folder.rb +++ b/app/models/dmsf_folder.rb @@ -20,8 +20,6 @@ class DmsfFolder < ActiveRecord::Base unloadable - attr_accessible :title, :description, :dmsf_folder_id - include RedmineDmsf::Lockable cattr_reader :invalid_characters diff --git a/lib/redmine_dmsf/webdav/dmsf_resource.rb b/lib/redmine_dmsf/webdav/dmsf_resource.rb index e5969c01..feda35a4 100644 --- a/lib/redmine_dmsf/webdav/dmsf_resource.rb +++ b/lib/redmine_dmsf/webdav/dmsf_resource.rb @@ -577,8 +577,15 @@ module RedmineDmsf # If there is no range (start of ranged download, or direct download) then we log the # file access, so we can properly keep logged information if @request.env['HTTP_RANGE'].nil? - access = DmsfFileRevisionAccess.new(:user_id => User.current.id, :dmsf_file_revision_id => file.last_revision.id, - :action => DmsfFileRevisionAccess::DownloadAction) + if (Redmine::VERSION::MAJOR >= 3) + access = DmsfFileRevisionAccess.new + access.user = User.current + access.revision = file.revision + access.action = DmsfFileRevisionAccess::DownloadAction + else + access = DmsfFileRevisionAccess.new(:user_id => User.current.id, :dmsf_file_revision_id => file.last_revision.id, + :action => DmsfFileRevisionAccess::DownloadAction) + end access.save! end Download.new(file.last_revision.disk_file)