Rails 5
This commit is contained in:
parent
9a60e29268
commit
bdb3d2df48
2
Gemfile
2
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'
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
@ -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
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 220 B |
@ -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;}
|
||||
|
||||
2
init.rb
2
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'
|
||||
|
||||
|
||||
@ -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'
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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|
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user