diff --git a/Gemfile b/Gemfile index 87cb0d19..6b00846f 100644 --- a/Gemfile +++ b/Gemfile @@ -22,7 +22,7 @@ source 'https://rubygems.org' -gem 'rubyzip', '>= 1.0.0' +gem 'rubyzip', '>= 1.1.3' gem 'zip-zip' gem 'simple_enum' gem 'uuidtools' diff --git a/app/controllers/dmsf_controller.rb b/app/controllers/dmsf_controller.rb index 1035ff09..73182275 100644 --- a/app/controllers/dmsf_controller.rb +++ b/app/controllers/dmsf_controller.rb @@ -93,7 +93,7 @@ class DmsfController < ApplicationController :type => 'application/zip', :disposition => 'attachment') rescue Exception => e - flash[:error] = e.message + flash[:errors] = e.message end def entries_operation @@ -156,7 +156,7 @@ class DmsfController < ApplicationController rescue DmsfAccessError render_403 # and return rescue StandardError => e - flash[:error] = e.message + flash[:errors] = e.message Rails.logger.error e.message end end @@ -176,7 +176,7 @@ class DmsfController < ApplicationController def entries_email if params[:email][:to].strip.blank? - flash[:error] = l(:error_email_to_must_be_entered) + flash[:errors] = l(:error_email_to_must_be_entered) else DmsfMailer.deliver_send_documents(@project, params[:email]) File.delete(params[:email][:zipped_content]) @@ -253,7 +253,7 @@ class DmsfController < ApplicationController if result flash[:notice] = l(:notice_folder_deleted) else - flash[:error] = @folder.errors.full_messages.to_sentence + flash[:errors] = @folder.errors.full_messages.to_sentence end respond_to do |format| format.html do @@ -271,7 +271,7 @@ class DmsfController < ApplicationController if @folder.restore flash[:notice] = l(:notice_dmsf_folder_restored) else - flash[:error] = @folder.errors.full_messages.to_sentence + flash[:errors] = @folder.errors.full_messages.to_sentence end redirect_to :back end @@ -285,7 +285,7 @@ class DmsfController < ApplicationController if @project.save flash[:notice] = l(:notice_folder_details_were_saved) else - flash[:error] = @project.errors.full_messages.to_sentence + flash[:errors] = @project.errors.full_messages.to_sentence end end redirect_to dmsf_folder_path(:id => @project) @@ -343,7 +343,7 @@ class DmsfController < ApplicationController @folder.unlock! flash[:notice] = l(:notice_folder_unlocked) else - flash[:error] = l(:error_only_user_that_locked_folder_can_unlock_it) + flash[:errors] = l(:error_only_user_that_locked_folder_can_unlock_it) end end redirect_to :back @@ -466,7 +466,7 @@ class DmsfController < ApplicationController folder = DmsfFolder.find_by(id: id) if folder unless folder.restore - flash[:error] = folder.errors.full_messages.to_sentence + flash[:errors] = folder.errors.full_messages.to_sentence end else raise FileNotFound @@ -477,7 +477,7 @@ class DmsfController < ApplicationController file = DmsfFile.find_by(id: id) if file unless file.restore - flash[:error] = file.errors.full_messages.to_sentence + flash[:errors] = file.errors.full_messages.to_sentence end else raise FileNotFound @@ -488,7 +488,7 @@ class DmsfController < ApplicationController link = DmsfLink.find_by(id: id) if link unless link.restore - flash[:error] = link.errors.full_messages.to_sentence + flash[:errors] = link.errors.full_messages.to_sentence end else raise FileNotFound @@ -502,7 +502,7 @@ class DmsfController < ApplicationController folder = DmsfFolder.find_by(id: id) if folder unless folder.delete commit - flash[:error] = folder.errors.full_messages.to_sentence + flash[:errors] = folder.errors.full_messages.to_sentence return end elsif !commit @@ -547,7 +547,7 @@ class DmsfController < ApplicationController link = DmsfLink.find_by(id: id) link.delete commit if link end - if flash[:error].blank? && flash[:warning].blank? + if flash[:errors].blank? && flash[:warning].blank? flash[:notice] = l(:notice_entries_deleted) end end diff --git a/app/controllers/dmsf_files_controller.rb b/app/controllers/dmsf_files_controller.rb index 58576a5c..050cb7c6 100644 --- a/app/controllers/dmsf_files_controller.rb +++ b/app/controllers/dmsf_files_controller.rb @@ -95,7 +95,7 @@ class DmsfFilesController < ApplicationController def create_revision if params[:dmsf_file_revision] if @file.locked_for_user? - flash[:error] = l(:error_file_is_locked) + flash[:errors] = l(:error_file_is_locked) else revision = DmsfFileRevision.new revision.title = params[:dmsf_file_revision][:title] @@ -175,10 +175,10 @@ class DmsfFilesController < ApplicationController logger.error "Could not send email notifications: #{e.message}" end else - flash[:error] = @file.errors.full_messages.join(', ') + flash[:errors] = @file.errors.full_messages.join(', ') end else - flash[:error] = revision.errors.full_messages.join(', ') + flash[:errors] = revision.errors.full_messages.join(', ') end end end @@ -207,7 +207,7 @@ class DmsfFilesController < ApplicationController end else msg = @file.errors.full_messages.join(', ') - flash[:error] = msg + flash[:errors] = msg Rails.logger.error msg end end @@ -232,7 +232,7 @@ class DmsfFilesController < ApplicationController end flash[:notice] = l(:notice_revision_deleted) else - flash[:error] = @revision.errors.full_messages.join(', ') + flash[:errors] = @revision.errors.full_messages.join(', ') end end redirect_to :action => 'show', :id => @file @@ -243,7 +243,7 @@ class DmsfFilesController < ApplicationController if @revision.obsolete flash[:notice] = l(:notice_revision_obsoleted) else - flash[:error] = @revision.errors.full_messages.join(', ') + flash[:errors] = @revision.errors.full_messages.join(', ') end end redirect_to :action => 'show', :id => @file @@ -257,7 +257,7 @@ class DmsfFilesController < ApplicationController @file.lock! flash[:notice] = l(:notice_file_locked) rescue Exception => e - flash[:error] = e.message + flash[:errors] = e.message end end redirect_to :back @@ -272,10 +272,10 @@ class DmsfFilesController < ApplicationController @file.unlock! flash[:notice] = l(:notice_file_unlocked) rescue Exception => e - flash[:error] = e.message + flash[:errors] = e.message end else - flash[:error] = l(:error_only_user_that_locked_file_can_unlock_it) + flash[:errors] = l(:error_only_user_that_locked_file_can_unlock_it) end end redirect_to :back @@ -305,7 +305,7 @@ class DmsfFilesController < ApplicationController if @file.restore flash[:notice] = l(:notice_dmsf_file_restored) else - flash[:error] = @file.errors.full_messages.to_sentence + flash[:errors] = @file.errors.full_messages.to_sentence end redirect_to :back end diff --git a/app/controllers/dmsf_files_copy_controller.rb b/app/controllers/dmsf_files_copy_controller.rb index 60f085ce..356bfa48 100644 --- a/app/controllers/dmsf_files_copy_controller.rb +++ b/app/controllers/dmsf_files_copy_controller.rb @@ -36,7 +36,7 @@ class DmsfFilesCopyController < ApplicationController def copy new_file = @file.copy_to(@target_project, @target_folder) unless new_file.errors.empty? - flash[:error] = new_file.errors.full_messages.join(', ') + flash[:errors] = new_file.errors.full_messages.join(', ') redirect_to :action => 'new', :id => @file, :target_project_id => @target_project, :target_folder_id => @target_folder return @@ -47,7 +47,7 @@ class DmsfFilesCopyController < ApplicationController def move unless @file.move_to(@target_project, @target_folder) - flash[:error] = @file.errors.full_messages.join(', ') + flash[:errors] = @file.errors.full_messages.join(', ') redirect_to :action => 'new', :id => @file, :target_project_id => @target_project, :target_folder_id => @target_folder return @@ -89,7 +89,7 @@ private def check_target_folder if (@target_folder && @target_folder == @file.dmsf_folder) || (@target_folder.nil? && @file.dmsf_folder.nil? && @target_project == @file.project) - flash[:error] = l(:error_target_folder_same) + flash[:errors] = l(:error_target_folder_same) redirect_to :action => :new, :id => @file, :target_project_id => @target_project.id, :target_folder_id => @target_folder return diff --git a/app/controllers/dmsf_folders_copy_controller.rb b/app/controllers/dmsf_folders_copy_controller.rb index acc5f1e4..f702e81f 100644 --- a/app/controllers/dmsf_folders_copy_controller.rb +++ b/app/controllers/dmsf_folders_copy_controller.rb @@ -36,7 +36,7 @@ class DmsfFoldersCopyController < ApplicationController def copy new_folder = @folder.copy_to(@target_project, @target_folder) unless new_folder.errors.empty? - flash[:error] = new_folder.errors.full_messages.join(', ') + flash[:errors] = new_folder.errors.full_messages.join(', ') redirect_to :action => 'new', :id => @folder, :target_project_id => @target_project, :target_folder_id => @target_folder return @@ -52,7 +52,7 @@ class DmsfFoldersCopyController < ApplicationController flash[:notice] = l(:notice_successful_update) redirect_to dmsf_folder_path(:id => @target_project, :folder_id => @folder) else - flash[:error] = @folder.errors.full_messages.join(', ') + flash[:errors] = @folder.errors.full_messages.join(', ') redirect_to :action => 'new', :id => @folder, :target_project_id => @target_project, :target_folder_id => @target_folder end @@ -91,7 +91,7 @@ class DmsfFoldersCopyController < ApplicationController def check_target_folder if (@target_folder && @target_folder == @folder.dmsf_folder) || (@target_folder.nil? && @folder.dmsf_folder.nil? && @target_project == @folder.project) - flash[:error] = l(:error_target_folder_same) + flash[:errors] = l(:error_target_folder_same) redirect_to :action => :new, :id => @folder, :target_project_id => @target_project.id, :target_folder_id => @target_folder return diff --git a/app/controllers/dmsf_links_controller.rb b/app/controllers/dmsf_links_controller.rb index 4e7e4304..8c86aa7f 100644 --- a/app/controllers/dmsf_links_controller.rb +++ b/app/controllers/dmsf_links_controller.rb @@ -112,7 +112,7 @@ class DmsfLinksController < ApplicationController if result flash[:notice] = l(:notice_successful_create) else - flash[:error] = @dmsf_link.errors.full_messages.to_sentence + flash[:errors] = @dmsf_link.errors.full_messages.to_sentence end else # Link to @@ -141,7 +141,7 @@ class DmsfLinksController < ApplicationController if result flash[:notice] = l(:notice_successful_create) else - flash[:error] = @dmsf_link.errors.full_messages.to_sentence + flash[:errors] = @dmsf_link.errors.full_messages.to_sentence end end respond_to do |format| @@ -169,7 +169,7 @@ class DmsfLinksController < ApplicationController flash[:notice] = l(:notice_successful_delete) else @dmsf_link.errors.each do |e, msg| - flash[:error] = msg + flash[:errors] = msg end end end diff --git a/app/controllers/dmsf_state_controller.rb b/app/controllers/dmsf_state_controller.rb index d5c42cd6..e3551e56 100644 --- a/app/controllers/dmsf_state_controller.rb +++ b/app/controllers/dmsf_state_controller.rb @@ -35,7 +35,7 @@ class DmsfStateController < ApplicationController if format_valid?(member.dmsf_title_format) && member.save flash[:notice] = l(:notice_your_preferences_were_saved) else - flash[:error] = l(:notice_your_preferences_were_not_saved) + flash[:errors] = l(:notice_your_preferences_were_not_saved) end else flash[:warning] = l(:user_is_not_project_member) diff --git a/app/controllers/dmsf_workflows_controller.rb b/app/controllers/dmsf_workflows_controller.rb index da49c30e..57001ed3 100644 --- a/app/controllers/dmsf_workflows_controller.rb +++ b/app/controllers/dmsf_workflows_controller.rb @@ -171,7 +171,7 @@ class DmsfWorkflowsController < ApplicationController end flash[:notice] = l(:notice_successful_update) elsif action.action != DmsfWorkflowStepAction::ACTION_APPROVE && action.note.blank? - flash[:error] = l(:error_empty_note) + flash[:errors] = l(:error_empty_note) end end end @@ -203,12 +203,12 @@ class DmsfWorkflowsController < ApplicationController flash[:notice] = l(:notice_successful_update) end else - flash[:error] = l(:error_workflow_assign) + flash[:errors] = l(:error_workflow_assign) end end end rescue StandardError => e - flash[:error] = e.message + flash[:errors] = e.message end redirect_to :back return @@ -293,7 +293,7 @@ class DmsfWorkflowsController < ApplicationController redirect_to dmsf_workflows_path end else - flash[:error] = @dmsf_workflow.errors.full_messages.to_sentence + flash[:errors] = @dmsf_workflow.errors.full_messages.to_sentence redirect_to dmsf_workflow_path(@dmsf_workflow) end else @@ -306,7 +306,7 @@ class DmsfWorkflowsController < ApplicationController @dmsf_workflow.destroy flash[:notice] = l(:notice_successful_delete) rescue - flash[:error] = l(:error_unable_delete_dmsf_workflow) + flash[:errors] = l(:error_unable_delete_dmsf_workflow) end if @project redirect_to settings_project_path(@project, :tab => 'dmsf_workflow') @@ -350,11 +350,11 @@ class DmsfWorkflowsController < ApplicationController if ws.save @dmsf_workflow.dmsf_workflow_steps << ws else - flash[:error] = ws.errors.full_messages.to_sentence + flash[:errors] = ws.errors.full_messages.to_sentence end end else - flash[:error] = l(:error_workflow_assign) + flash[:errors] = l(:error_workflow_assign) end end respond_to do |format| @@ -372,7 +372,7 @@ class DmsfWorkflowsController < ApplicationController if n > params[:step].to_i ws.step = n - 1 unless ws.save - flash[:error] = l(:notice_cannot_renumber_steps) + flash[:errors] = l(:notice_cannot_renumber_steps) end end end @@ -383,7 +383,7 @@ class DmsfWorkflowsController < ApplicationController def reorder_steps if request.put? unless @dmsf_workflow.reorder_steps(params[:step].to_i, params[:dmsf_workflow][:position].to_i) - flash[:error] = l(:notice_cannot_renumber_steps) + flash[:errors] = l(:notice_cannot_renumber_steps) end end respond_to do |format| @@ -402,7 +402,7 @@ class DmsfWorkflowsController < ApplicationController @dmsf_workflow.notify_users(@project, revision, self) flash[:notice] = l(:notice_workflow_started) else - flash[:error] = l(:notice_cannot_start_workflow) + flash[:errors] = l(:notice_cannot_start_workflow) end end redirect_to :back @@ -418,11 +418,11 @@ class DmsfWorkflowsController < ApplicationController @dmsf_workflow.dmsf_workflow_steps.where(step: step.step).find_each do |s| s.name = step.name unless s.save - flash[:error] = s.errors.full_messages.to_sentence + flash[:errors] = s.errors.full_messages.to_sentence end end else - flash[:error] = step.errors.full_messages.to_sentence + flash[:errors] = step.errors.full_messages.to_sentence end end # Operators/Assignees @@ -433,7 +433,7 @@ class DmsfWorkflowsController < ApplicationController step.operator = operator.to_i step.user_id = params[:assignee][id] unless step.save - flash[:error] = step.errors.full_messages.to_sentence + flash[:errors] = step.errors.full_messages.to_sentence Rails.logger.error step.errors.full_messages.to_sentence end end diff --git a/app/helpers/dmsf_upload_helper.rb b/app/helpers/dmsf_upload_helper.rb index 1b44374d..b6958c75 100644 --- a/app/helpers/dmsf_upload_helper.rb +++ b/app/helpers/dmsf_upload_helper.rb @@ -109,7 +109,7 @@ module DmsfUploadHelper end rescue Exception => e Rails.logger.error e.message - controller.flash[:error] = e.message if controller + controller.flash[:errors] = e.message if controller failed_uploads.push(file) end else diff --git a/app/models/dmsf_folder.rb b/app/models/dmsf_folder.rb index bcaec122..fe4d5a0c 100644 --- a/app/models/dmsf_folder.rb +++ b/app/models/dmsf_folder.rb @@ -73,7 +73,7 @@ class DmsfFolder < ActiveRecord::Base "LEFT JOIN #{DmsfFolderPermission.table_name} ON #{DmsfFolder.table_name}.id = #{DmsfFolderPermission.table_name}.dmsf_folder_id").where( deleted: STATUS_DELETED).where(DmsfFolder.visible_condition).distinct } - scope :system, -> { where(system: true) } + scope :issystem, -> { where(system: true) } scope :notsystem, -> { where(system: false) } acts_as_customizable @@ -506,8 +506,10 @@ class DmsfFolder < ActiveRecord::Base self.dmsf_folder_id = params[:parent_id] # Custom fields if params[:dmsf_folder][:custom_field_values].present? - params[:dmsf_folder][:custom_field_values].each_with_index do |v, i| - custom_field_values[i].value = v[1] + i = 0 + params[:dmsf_folder][:custom_field_values].each do |param| + custom_field_values[i].value = param[1] + i += 1 end end # Permissions diff --git a/app/models/dmsf_mailer.rb b/app/models/dmsf_mailer.rb index 771a167f..d08c721a 100644 --- a/app/models/dmsf_mailer.rb +++ b/app/models/dmsf_mailer.rb @@ -31,19 +31,6 @@ class DmsfMailer < Mailer end end - def files_updated(user, project, files) - if user && project && files.count > 0 - files = files.select { |file| file.notify? } - redmine_headers 'Project' => project.identifier if project - @files = files - @project = project - message_id project - set_language_if_valid user.language - mail :to => user.mail, - :subject => "[#{@project.name} - #{l(:menu_dmsf)}] #{l(:text_email_doc_updated_subject)}" - end - end - def self.deliver_files_deleted(project, files) users = get_notify_users(project, files) users.each do |user| @@ -51,65 +38,16 @@ class DmsfMailer < Mailer end end - def files_deleted(user, project, files) - if user && files.count > 0 - files = files.select { |file| file.notify? } - redmine_headers 'Project' => project.identifier if project - @files = files - @project = project - message_id project - set_language_if_valid user.language - mail :to => user.mail, - :subject => "[#{@project.name} - #{l(:menu_dmsf)}] #{l(:text_email_doc_deleted_subject)}" - end - end - def self.deliver_send_documents(project, email_params) send_documents(email_params[:to], project, email_params).deliver_later end - def send_documents(user, project, email_params) - redmine_headers 'Project' => project.identifier if project - @body = email_params[:body] - @links_only = email_params[:links_only] == '1' - @public_urls = email_params[:public_urls] == '1' - @expired_at = email_params[:expired_at] - @folders = email_params[:folders] - @files = email_params[:files] - - unless @links_only - zipped_content_data = open(email_params[:zipped_content], 'rb') { |io| io.read } - attachments['Documents.zip'] = { :content_type => 'application/zip', :content => zipped_content_data } - end - mail :to => user, :cc => email_params[:cc], - :subject => email_params[:subject], 'From' => email_params[:from], 'Reply-To' => email_params[:reply_to] - end - def self.deliver_workflow_notification(users, workflow, revision, subject_id, text1_id, text2_id, notice = nil) users.each do |user| workflow_notification(user, workflow, revision, subject_id.to_s, text1_id.to_s, text2_id.to_s, notice).deliver_later end end - def workflow_notification(user, workflow, revision, subject_id, text1_id, text2_id, notice = nil) - if user && workflow && revision - if revision.dmsf_file && revision.dmsf_file.project - @project = revision.dmsf_file.project - redmine_headers 'Project' => @project.identifier - end - set_language_if_valid user.language - @user = user - message_id workflow - @workflow = workflow - @revision = revision - @text1 = l(text1_id, :name => workflow.name, :filename => revision.dmsf_file.name, :notice => notice) - @text2 = l(text2_id) - @notice = notice - mail :to => user.mail, - :subject => "[#{@project.name} - #{l(:field_label_dmsf_workflow)}] #{@workflow.name} #{l(subject_id)}" - end - end - def self.get_notify_users(project, files = [], force_notification = false) return [] unless project.active? if !force_notification && files.present? @@ -166,4 +104,68 @@ class DmsfMailer < Mailer notify_members.collect { |m| m.user }.uniq end + private + + def workflow_notification(user, workflow, revision, subject_id, text1_id, text2_id, notice = nil) + if user && workflow && revision + if revision.dmsf_file && revision.dmsf_file.project + @project = revision.dmsf_file.project + redmine_headers 'Project' => @project.identifier + end + set_language_if_valid user.language + @user = user + message_id workflow + @workflow = workflow + @revision = revision + @text1 = l(text1_id, :name => workflow.name, :filename => revision.dmsf_file.name, :notice => notice) + @text2 = l(text2_id) + @notice = notice + mail :to => user.mail, + :subject => "[#{@project.name} - #{l(:field_label_dmsf_workflow)}] #{@workflow.name} #{l(subject_id)}" + end + end + + def send_documents(user, project, email_params) + redmine_headers 'Project' => project.identifier if project + @body = email_params[:body] + @links_only = email_params[:links_only] == '1' + @public_urls = email_params[:public_urls] == '1' + @expired_at = email_params[:expired_at] + @folders = email_params[:folders] + @files = email_params[:files] + + unless @links_only + zipped_content_data = open(email_params[:zipped_content], 'rb') { |io| io.read } + attachments['Documents.zip'] = { :content_type => 'application/zip', :content => zipped_content_data } + end + mail :to => user, :cc => email_params[:cc], + :subject => email_params[:subject], 'From' => email_params[:from], 'Reply-To' => email_params[:reply_to] + end + + def files_deleted(user, project, files) + if user && files.count > 0 + files = files.select { |file| file.notify? } + redmine_headers 'Project' => project.identifier if project + @files = files + @project = project + message_id project + set_language_if_valid user.language + mail :to => user.mail, + :subject => "[#{@project.name} - #{l(:menu_dmsf)}] #{l(:text_email_doc_deleted_subject)}" + end + end + + def files_updated(user, project, files) + if user && project && files.count > 0 + files = files.select { |file| file.notify? } + redmine_headers 'Project' => project.identifier if project + @files = files + @project = project + message_id project + set_language_if_valid user.language + mail :to => user.mail, + :subject => "[#{@project.name} - #{l(:menu_dmsf)}] #{l(:text_email_doc_updated_subject)}" + end + end + end diff --git a/app/models/easy_page_modules/easy_dms/epm_dmsf_locked_documents.rb b/app/models/easy_page_modules/easy_dms/epm_dmsf_locked_documents.rb index 4390af5f..20e30b8a 100644 --- a/app/models/easy_page_modules/easy_dms/epm_dmsf_locked_documents.rb +++ b/app/models/easy_page_modules/easy_dms/epm_dmsf_locked_documents.rb @@ -18,22 +18,26 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -class EpmDmsfLockedDocuments < EasyPageModule +if defined?(EasyExtensions) - def category_name - @category_name ||= 'easy_dms' - end + class EpmDmsfLockedDocuments < EasyPageModule - def get_show_data(settings, user, page_context = {}) - {} - end + def category_name + @category_name ||= 'easy_dms' + end - def get_edit_data(settings, user, page_context = {}) - {} - end + def get_show_data(settings, user, page_context = {}) + {} + end + + def get_edit_data(settings, user, page_context = {}) + {} + end + + def registered_in_plugin + 'redmine_dmsf' + end - def registered_in_plugin - 'redmine_dmsf' end end \ No newline at end of file diff --git a/app/models/easy_page_modules/easy_dms/epm_dmsf_open_approvals.rb b/app/models/easy_page_modules/easy_dms/epm_dmsf_open_approvals.rb index abaf2715..a65e5330 100644 --- a/app/models/easy_page_modules/easy_dms/epm_dmsf_open_approvals.rb +++ b/app/models/easy_page_modules/easy_dms/epm_dmsf_open_approvals.rb @@ -18,18 +18,22 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -class EpmDmsfOpenApprovals < EasyPageModule +if defined?(EasyExtensions) - def category_name - @category_name ||= 'easy_dms' - end + class EpmDmsfOpenApprovals < EasyPageModule - def get_show_data(settings, user, page_context = {}) - {} - end + def category_name + @category_name ||= 'easy_dms' + end + + def get_show_data(settings, user, page_context = {}) + {} + end + + def registered_in_plugin + 'redmine_dmsf' + end - def registered_in_plugin - 'redmine_dmsf' end end \ No newline at end of file diff --git a/assets/images/bullet_arrow_down.png b/assets/images/bullet_arrow_down.png deleted file mode 100644 index cb819a7d..00000000 Binary files a/assets/images/bullet_arrow_down.png and /dev/null differ diff --git a/assets/stylesheets/redmine_dmsf.css b/assets/stylesheets/redmine_dmsf.css index dee60b89..0c4f9203 100644 --- a/assets/stylesheets/redmine_dmsf.css +++ b/assets/stylesheets/redmine_dmsf.css @@ -285,12 +285,12 @@ div.dmsf_revision_inner_box .attribute .label { .dmsf_hidden { display:none; } .dmsf_tree span.dmsf_expander { cursor: pointer; } .dmsf_tree.dmsf_expanded td.dmsf_title span { - background: url(../images/bullet_arrow_down.png) no-repeat 0 50%; + background: url(../../../images/arrow_down.png) no-repeat 0 50%; padding-left: 16px; } .dmsf_tree.dmsf_child .dmsf_title span { padding-left: 16px; } .dmsf_tree.dmsf_collapsed .dmsf_title span { - background: url(../../../images/bullet_arrow_right.png) no-repeat 0 50%; + background: url(../../../images/arrow_right.png) no-repeat 0 50%; padding-left: 16px; } .dmsf_tree.idnt-1 .dmsf_title {padding-left: 1.5em;} diff --git a/init.rb b/init.rb index c54e3288..cf49015b 100644 --- a/init.rb +++ b/init.rb @@ -32,7 +32,7 @@ Redmine::Plugin.register :redmine_dmsf do end author 'Vít Jonáš / Daniel Munn / Karel Pičman' description 'Document Management System Features' - version '1.6.2' + version '2.0.0 devel' requires_redmine version_or_higher: '4.0.0' diff --git a/lib/redmine_dmsf.rb b/lib/redmine_dmsf.rb index 65890cc6..8ac7bfc5 100644 --- a/lib/redmine_dmsf.rb +++ b/lib/redmine_dmsf.rb @@ -52,7 +52,7 @@ require 'redmine_dmsf/webdav/index_resource' require 'redmine_dmsf/webdav/project_resource' require 'redmine_dmsf/webdav/resource_proxy' -# Exceptions +# Errors require 'redmine_dmsf/errors/dmsf_access_error' require 'redmine_dmsf/errors/dmsf_content_error' require 'redmine_dmsf/errors/dmsf_email_max_file_error' diff --git a/lib/redmine_dmsf/hooks/controllers/issues_controller_hooks.rb b/lib/redmine_dmsf/hooks/controllers/issues_controller_hooks.rb index e9a25705..7aacb8b1 100644 --- a/lib/redmine_dmsf/hooks/controllers/issues_controller_hooks.rb +++ b/lib/redmine_dmsf/hooks/controllers/issues_controller_hooks.rb @@ -81,7 +81,7 @@ module RedmineDmsf if old_system_folder old_system_folder.title = "#{issue.id} - #{DmsfFolder::get_valid_title(issue.subject)}" unless old_system_folder.save - controller.flash[:error] = old_system_folder.errors.full_messages.to_sentence + controller.flash[:errors] = old_system_folder.errors.full_messages.to_sentence Rails.logger.error old_system_folder.errors.full_messages.to_sentence end end @@ -93,20 +93,20 @@ module RedmineDmsf old_system_folder.dmsf_folder_id = new_main_system_folder.id old_system_folder.project_id = project_id unless old_system_folder.save - controller.flash[:error] = old_system_folder.errors.full_messages.to_sentence + controller.flash[:errors] = old_system_folder.errors.full_messages.to_sentence Rails.logger.error old_system_folder.errors.full_messages.to_sentence end issue.dmsf_files.each do |dmsf_file| dmsf_file.project_id = project_id unless dmsf_file.save - controller.flash[:error] = dmsf_file.errors.full_messages.to_sentence + controller.flash[:errors] = dmsf_file.errors.full_messages.to_sentence Rails.logger.error dmsf_file.errors.full_messages.to_sentence end end issue.dmsf_links.each do | dmsf_link| dmsf_link.project_id = project_id unless dmsf_link.save - controller.flash[:error] = dmsf_link.errors.full_messages.to_sentence + controller.flash[:errors] = dmsf_link.errors.full_messages.to_sentence Rails.logger.error dmsf_link.errors.full_messages.to_sentence end end diff --git a/lib/redmine_dmsf/patches/easy_crm_case_patch.rb b/lib/redmine_dmsf/patches/easy_crm_case_patch.rb index bd269b18..4d4884f1 100644 --- a/lib/redmine_dmsf/patches/easy_crm_case_patch.rb +++ b/lib/redmine_dmsf/patches/easy_crm_case_patch.rb @@ -98,7 +98,7 @@ module RedmineDmsf end def system_folder(create = false) - parent = DmsfFolder.system.where(project_id: self.project_id, title: '.CRM cases').first + parent = DmsfFolder.issystem.find_by(project_id: self.project_id, title: '.CRM cases') if create && !parent parent = DmsfFolder.new parent.project_id = self.project_id @@ -109,7 +109,7 @@ module RedmineDmsf parent.save end if parent - folder = DmsfFolder.system.where(['project_id = ? AND dmsf_folder_id = ? AND CAST(title AS DECIMAL) = ?', + folder = DmsfFolder.issystem.where(['project_id = ? AND dmsf_folder_id = ? AND CAST(title AS DECIMAL) = ?', self.project_id, parent.id, self.id]).first if create && !folder folder = DmsfFolder.new diff --git a/lib/redmine_dmsf/patches/issue_patch.rb b/lib/redmine_dmsf/patches/issue_patch.rb index 72ebfb82..e2776ae0 100644 --- a/lib/redmine_dmsf/patches/issue_patch.rb +++ b/lib/redmine_dmsf/patches/issue_patch.rb @@ -93,7 +93,7 @@ module RedmineDmsf def main_system_folder(create = false, prj_id = nil) prj_id ||= self.project_id - parent = DmsfFolder.system.find_by(project_id: prj_id, title: '.Issues') + parent = DmsfFolder.issystem.find_by(project_id: prj_id, title: '.Issues') if create && !parent parent = DmsfFolder.new parent.project_id = prj_id @@ -110,7 +110,7 @@ module RedmineDmsf prj_id ||= self.project_id parent = main_system_folder(create, prj_id) if parent - folder = DmsfFolder.system.where(["project_id = ? AND dmsf_folder_id = ? AND title LIKE '? - %'", + folder = DmsfFolder.issystem.where(["project_id = ? AND dmsf_folder_id = ? AND title LIKE '? - %'", prj_id, parent.id, self.id]).first if create && !folder folder = DmsfFolder.new diff --git a/lib/redmine_dmsf/test/test_case.rb b/lib/redmine_dmsf/test/test_case.rb index e07ea1aa..85b1cd56 100644 --- a/lib/redmine_dmsf/test/test_case.rb +++ b/lib/redmine_dmsf/test/test_case.rb @@ -34,9 +34,17 @@ module RedmineDmsf end super(table_names) end - + def setup - @request = ActionController::TestRequest.new + if ::Rails::VERSION::MAJOR >= 5 + if ::Rails::VERSION::MINOR >= 1 + @request = ActionController::TestRequest.create(self.class.controller_class) + else + @request = ActionController::TestRequest.create + end + else + @request = ActionController::TestRequest.new + end @response = ActionController::TestResponse.new end diff --git a/lib/redmine_dmsf/test/unit_test.rb b/lib/redmine_dmsf/test/unit_test.rb index ae7a2739..4fc84545 100644 --- a/lib/redmine_dmsf/test/unit_test.rb +++ b/lib/redmine_dmsf/test/unit_test.rb @@ -20,12 +20,6 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -# Load the normal Rails helper -#require File.expand_path("#{Rails.root}/test/test_helper") - -# Use fixtures from redmine -#ActiveSupport::TestCase.fixture_path = "#{Rails.root}/test/fixtures" - module RedmineDmsf module Test class UnitTest < ActiveSupport::TestCase diff --git a/test/functional/dmsf_controller_test.rb b/test/functional/dmsf_controller_test.rb index 32e32eef..bad83326 100644 --- a/test/functional/dmsf_controller_test.rb +++ b/test/functional/dmsf_controller_test.rb @@ -113,7 +113,7 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase @role.add_permission! :folder_manipulation get :delete, :params => {:id => @project, :folder_id => @folder1.id, :commit => false} assert_response :redirect - assert_include l(:error_folder_is_not_empty), flash[:error] + assert_include l(:error_folder_is_not_empty), flash[:errors] end def test_delete_locked @@ -121,7 +121,7 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase @role.add_permission! :folder_manipulation get :delete, :params => {:id => @project, :folder_id => @folder2.id, :commit => false} assert_response :redirect - assert_include l(:error_folder_is_locked), flash[:error] + assert_include l(:error_folder_is_locked), flash[:errors] end def test_delete_ok @@ -163,18 +163,18 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase get :entries_operation, :params => {:id => @project, :delete_entries => 'Delete', :ids => ["folder-#{@folder1.id}", "file-#{@file1.id}", "folder-link-#{@folder_link1.id}", "file-link-#{@file_link2.id}"]} assert_response :redirect - assert_equal flash[:error].to_s, l(:error_folder_is_not_empty) + assert_equal flash[:errors].to_s, l(:error_folder_is_not_empty) end def test_delete_restore_entries_ok # Permissions OK @request.env['HTTP_REFERER'] = dmsf_folder_path(:id => @project.id) @role.add_permission! :view_dmsf_files - flash[:error] = nil + flash[:errors] = nil get :entries_operation, :params => {:id => @project, :delete_entries => 'Delete', :ids => ["file-#{@file1.id}", "file-link-#{@file_link2.id}"]} assert_response :redirect - assert_nil flash[:error] + assert_nil flash[:errors] end def test_restore_entries @@ -184,7 +184,7 @@ class DmsfControllerTest < RedmineDmsf::Test::TestCase get :entries_operation, :params => {:id => @project, :restore_entries => 'Restore', :ids => ["file-#{@file1.id}", "file-link-#{@file_link2.id}"]} assert_response :redirect - assert_nil flash[:error] + assert_nil flash[:errors] end def test_show diff --git a/test/functional/dmsf_files_controller_test.rb b/test/functional/dmsf_files_controller_test.rb index cd4b96f9..9b1ae46a 100644 --- a/test/functional/dmsf_files_controller_test.rb +++ b/test/functional/dmsf_files_controller_test.rb @@ -91,16 +91,16 @@ class DmsfFilesControllerTest < RedmineDmsf::Test::TestCase @role.add_permission! :file_delete delete @file, :params => {:commit => false} assert_response :redirect - assert_include l(:error_file_is_locked), flash[:error] + assert_include l(:error_file_is_locked), flash[:errors] end def delete_ok # Permissions OK and not locked - flash[:error].clear + flash[:errors].clear @file.unlock! delete @file, :params => {:commit => false} assert_response :redirect - assert_equal 0, flash[:error].size + assert_equal 0, flash[:errors].size end def test_obsolete_revision_ok diff --git a/test/functional/dmsf_files_copy_controller_test.rb b/test/functional/dmsf_files_copy_controller_test.rb index 091bd84d..701639ad 100644 --- a/test/functional/dmsf_files_copy_controller_test.rb +++ b/test/functional/dmsf_files_copy_controller_test.rb @@ -122,12 +122,12 @@ class DmsfFilesCopyControllerTest < RedmineDmsf::Test::TestCase def test_copy post :copy, :params => {:id => @file1.id, :target_project_id => @project1.id, :target_folder_id => @folder1.id} assert_response :redirect - assert_nil flash[:error] + assert_nil flash[:errors] end def test_copy_the_same_target post :copy, :params => {:id => @file1.id, :target_project_id => @file1.project.id, :target_folder_id => @file1.dmsf_folder} - assert_equal flash[:error], l(:error_target_folder_same) + assert_equal flash[:errors], l(:error_target_folder_same) assert_redirected_to :action => 'new', :target_project_id => @file1.project.id, :target_folder_id => @file1.dmsf_folder end @@ -146,7 +146,7 @@ class DmsfFilesCopyControllerTest < RedmineDmsf::Test::TestCase @project5.enable_module!(:dmsf) post :copy, :params => {:id => @file1.id, :target_project_id => @project5.id, :target_folder_id => nil} assert_response :redirect - assert_nil flash[:error] + assert_nil flash[:errors] end def test_copy_to_as_non_member @@ -157,12 +157,12 @@ class DmsfFilesCopyControllerTest < RedmineDmsf::Test::TestCase def test_move post :move, :params => {:id => @file1.id, :target_project_id => @project1.id, :target_folder_id => @folder1.id} assert_response :redirect - assert_nil flash[:error] + assert_nil flash[:errors] end def test_move_the_same_target post :move, :params => {:id => @file1.id, :target_project_id => @file1.project.id, :target_folder_id => @file1.dmsf_folder} - assert_equal flash[:error], l(:error_target_folder_same) + assert_equal flash[:errors], l(:error_target_folder_same) assert_redirected_to :action => 'new', :target_project_id => @file1.project.id, :target_folder_id => @file1.dmsf_folder end @@ -170,7 +170,7 @@ class DmsfFilesCopyControllerTest < RedmineDmsf::Test::TestCase @file1.lock! post :move, :params => {:id => @file1.id, :target_project_id => @file1.project.id, :target_folder_id => @folder1.id} assert_response :redirect - assert_equal l(:error_file_is_locked), flash[:error] + assert_equal l(:error_file_is_locked), flash[:errors] end def test_move_to_locked_folder @@ -188,7 +188,7 @@ class DmsfFilesCopyControllerTest < RedmineDmsf::Test::TestCase @project5.enable_module!(:dmsf) post :move, :params => {:id => @file1.id, :target_project_id => @project5.id, :target_folder_id => nil} assert_response :redirect - assert_nil flash[:error] + assert_nil flash[:errors] end def test_move_to_as_non_member diff --git a/test/functional/dmsf_folders_copy_controller_test.rb b/test/functional/dmsf_folders_copy_controller_test.rb index adb9e998..4da4c611 100644 --- a/test/functional/dmsf_folders_copy_controller_test.rb +++ b/test/functional/dmsf_folders_copy_controller_test.rb @@ -123,7 +123,7 @@ class DmsfFoldersCopyControllerTest < RedmineDmsf::Test::TestCase def test_copy post :copy, :params => {:id => @folder1.id, :target_project_id => @project1.id, :target_folder_id => @folder6.id} assert_response :redirect - assert_nil flash[:error] + assert_nil flash[:errors] end def test_copy_to_another_project @@ -132,7 +132,7 @@ class DmsfFoldersCopyControllerTest < RedmineDmsf::Test::TestCase assert_equal @project1.id, @folder1.project_id post :copy, :params => {:id => @folder1.id, :target_project_id => @project2.id} assert_response :redirect - assert_nil flash[:error] + assert_nil flash[:errors] # Check all childs' project ID tree = DmsfHelper::all_children_sorted(@project2, 0, 0) tree.each do |f, pos| @@ -142,7 +142,7 @@ class DmsfFoldersCopyControllerTest < RedmineDmsf::Test::TestCase def test_copy_the_same_target post :copy, :params => {:id => @folder1.id, :target_project_id => @folder1.project.id, :target_folder_id => @folder1.dmsf_folder} - assert_equal flash[:error], l(:error_target_folder_same) + assert_equal flash[:errors], l(:error_target_folder_same) assert_redirected_to :action => 'new', :target_project_id => @folder1.project.id, :target_folder_id => @folder1.dmsf_folder end @@ -161,7 +161,7 @@ class DmsfFoldersCopyControllerTest < RedmineDmsf::Test::TestCase @project5.enable_module!(:dmsf) post :copy, :params => {:id => @folder1.id, :target_project_id => @project5.id, :target_folder_id => nil} assert_response :redirect - assert_nil flash[:error] + assert_nil flash[:errors] end def test_copy_to_as_non_member @@ -172,12 +172,12 @@ class DmsfFoldersCopyControllerTest < RedmineDmsf::Test::TestCase def test_move post :move, :params => {:id => @folder1.id, :target_project_id => @project1.id, :target_folder_id => @folder6.id} assert_response :redirect - assert_nil flash[:error] + assert_nil flash[:errors] end def test_move_the_same_target post :move, :params => {:id => @folder1.id, :target_project_id => @folder1.project.id, :target_folder_id => @folder1.dmsf_folder} - assert_equal flash[:error], l(:error_target_folder_same) + assert_equal flash[:errors], l(:error_target_folder_same) assert_redirected_to :action => 'new', :target_project_id => @folder1.project.id, :target_folder_id => @folder1.dmsf_folder end @@ -201,7 +201,7 @@ class DmsfFoldersCopyControllerTest < RedmineDmsf::Test::TestCase @project5.enable_module!(:dmsf) post :move, :params => {:id => @folder1.id, :target_project_id => @project5.id, :target_folder_id => nil} assert_response :redirect - assert_nil flash[:error] + assert_nil flash[:errors] end def test_move_to_as_non_member @@ -215,7 +215,7 @@ class DmsfFoldersCopyControllerTest < RedmineDmsf::Test::TestCase assert_equal @project1.id, @folder1.project_id post :move, :params => {:id => @folder1.id, :target_project_id => @project2.id} assert_response :redirect - assert_nil flash[:error] + assert_nil flash[:errors] # Check all childs' project ID tree = DmsfHelper::all_children_sorted(@project2, 0, 0) tree.each do |f, pos|