refs #136585 user notifications

This commit is contained in:
Karel Picman 2017-06-12 12:49:36 +02:00
parent cd254e7611
commit 2c090bcf77
6 changed files with 55 additions and 28 deletions

View File

@ -394,26 +394,7 @@ class DmsfWorkflowsController < ApplicationController
if revision
revision.set_workflow(@dmsf_workflow.id, params[:action])
if revision.save
assignments = @dmsf_workflow.next_assignments revision.id
recipients = assignments.collect{ |a| a.user }
recipients.uniq!
recipients = recipients & DmsfMailer.get_notify_users(@project)
recipients.each do |user|
DmsfMailer.workflow_notification(
user,
@dmsf_workflow,
revision,
:text_email_subject_started,
:text_email_started,
:text_email_to_proceed).deliver
end
if Setting.plugin_redmine_dmsf[:dmsf_display_notified_recipients] == '1'
unless recipients.blank?
to = recipients.collect{ |r| r.name }.first(DMSF_MAX_NOTIFICATION_RECEIVERS_INFO).join(', ')
to << ((recipients.count > DMSF_MAX_NOTIFICATION_RECEIVERS_INFO) ? ',...' : '.')
flash[:warning] = l(:warning_email_notifications, :to => to)
end
end
@dmsf_workflow.notify_users(@project, revision, self)
flash[:notice] = l(:notice_workflow_started)
else
flash[:error] = l(:notice_cannot_start_workflow)

View File

@ -121,6 +121,7 @@ module DmsfUploadHelper
# Start the workflow
new_revision.set_workflow(wf.id, 'start')
if new_revision.save
wf.notify_users(project, new_revision, controller)
begin
file.lock!
rescue DmsfLockError => e

View File

@ -385,7 +385,7 @@ class DmsfFile < ActiveRecord::Base
if dmsf_file
if user.allowed_to?(:view_dmsf_files, dmsf_file.project) &&
(project_ids.blank? || (project_ids.include?(dmsf_file.project.id)))
(project_ids.blank? || (project_ids.include?(dmsf_file.project_id)))
Redmine::Search.cache_store.write("DmsfFile-#{dmsf_file.id}",
dochash['sample'].force_encoding('UTF-8')) if dochash['sample']
break if(!options[:limit].blank? && results.count >= options[:limit])
@ -407,7 +407,7 @@ class DmsfFile < ActiveRecord::Base
end
def display_name
member = Member.where(:user_id => User.current.id, :project_id => self.project.id).first
member = Member.where(:user_id => User.current.id, :project_id => self.project_id).first
if member && !member.title_format.nil? && !member.title_format.empty?
title_format = member.title_format
else
@ -635,9 +635,12 @@ class DmsfFile < ActiveRecord::Base
end
def container
if self.dmsf_folder && self.dmsf_folder.system
Issue.where(:id => self.dmsf_folder.title.to_i).first
unless @container
if self.dmsf_folder && self.dmsf_folder.system
@container = Issue.where(:id => self.dmsf_folder.title.to_i).first
end
end
@container
end
end

View File

@ -62,7 +62,12 @@ class DmsfLink < ActiveRecord::Base
end
def target_folder
DmsfFolder.find_by_id self.target_folder_id if self.target_folder_id
unless @target_folder
if self.target_folder_id
@target_folder = DmsfFolder.find_by_id self.target_folder_id
end
end
@target_folder
end
def target_file_id
@ -70,15 +75,28 @@ class DmsfLink < ActiveRecord::Base
end
def target_file
DmsfFile.find_by_id self.target_file_id if self.target_file_id
unless @target_file
if self.target_file_id
DmsfFile.find_by_id self.target_file_id
end
end
@target_file
end
def target_project
Project.find_by_id self.target_project_id
unless @target_project
Project.find_by_id self.target_project_id
end
@target_project
end
def folder
DmsfFolder.find_by_id self.dmsf_folder_id
unless @folder
if self.dmsf_folder_id
@folder = DmsfFolder.find_by_id self.dmsf_folder_id
end
end
@folder
end
def title

View File

@ -217,4 +217,27 @@ class DmsfWorkflow < ActiveRecord::Base
self.status == STATUS_ACTIVE
end
def notify_users(project, revision, controller)
assignments = self.next_assignments revision.id
recipients = assignments.collect{ |a| a.user }
recipients.uniq!
recipients = recipients & DmsfMailer.get_notify_users(project)
recipients.each do |user|
DmsfMailer.workflow_notification(
user,
self,
revision,
:text_email_subject_started,
:text_email_started,
:text_email_to_proceed).deliver
end
if Setting.plugin_redmine_dmsf[:dmsf_display_notified_recipients] == '1'
unless recipients.blank?
to = recipients.collect{ |r| r.name }.first(DMSF_MAX_NOTIFICATION_RECEIVERS_INFO).join(', ')
to << ((recipients.count > DMSF_MAX_NOTIFICATION_RECEIVERS_INFO) ? ',...' : '.')
controller.flash[:warning] = l(:warning_email_notifications, :to => to)
end
end
end
end

View File

@ -110,6 +110,7 @@ module RedmineDmsf
# Start the workflow
revision.set_workflow(wf.id, 'start')
if revision.save
wf.notify_users(issue.project, revision, context[:controller])
begin
file.lock!
rescue DmsfLockError => e