mail notifications added when:

* a document is added
* a file is added to the project
* an attachment is added to an issue or a document

git-svn-id: http://redmine.rubyforge.org/svn/trunk@196 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang 2007-01-27 15:01:19 +00:00
parent 22c2209cf9
commit 2d47a6d71c
13 changed files with 106 additions and 9 deletions

View File

@ -1,5 +1,5 @@
# redMine - project management software
# Copyright (C) 2006 Jean-Philippe Lang
# Copyright (C) 2006-2007 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -46,9 +46,13 @@ class DocumentsController < ApplicationController
def add_attachment
# Save the attachments
params[:attachments].each { |a|
Attachment.create(:container => @document, :file => a, :author => logged_in_user) unless a.size == 0
@attachments = []
params[:attachments].each { |file|
next unless file.size > 0
a = Attachment.create(:container => @document, :file => file, :author => logged_in_user)
@attachments << a unless a.new_record?
} if params[:attachments] and params[:attachments].is_a? Array
Mailer.deliver_attachments_add(@attachments) if !@attachments.empty? and Permission.find_by_controller_and_action(params[:controller], params[:action]).mail_enabled?
redirect_to :action => 'show', :id => @document
end

View File

@ -1,5 +1,5 @@
# redMine - project management software
# Copyright (C) 2006 Jean-Philippe Lang
# Copyright (C) 2006-2007 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@ -115,10 +115,13 @@ class IssuesController < ApplicationController
def add_attachment
# Save the attachments
params[:attachments].each { |a|
@attachment = @issue.attachments.build(:file => a, :author => self.logged_in_user) unless a.size == 0
@attachment.save
@attachments = []
params[:attachments].each { |file|
next unless file.size > 0
a = Attachment.create(:container => @issue, :file => file, :author => logged_in_user)
@attachments << a unless a.new_record?
} if params[:attachments] and params[:attachments].is_a? Array
Mailer.deliver_attachments_add(@attachments) if !@attachments.empty? and Permission.find_by_controller_and_action(params[:controller], params[:action]).mail_enabled?
redirect_to :action => 'show', :id => @issue
end

View File

@ -184,6 +184,7 @@ class ProjectsController < ApplicationController
Attachment.create(:container => @document, :file => a, :author => logged_in_user) unless a.size == 0
} if params[:attachments] and params[:attachments].is_a? Array
flash[:notice] = l(:notice_successful_create)
Mailer.deliver_document_add(@document) if Permission.find_by_controller_and_action(params[:controller], params[:action]).mail_enabled?
redirect_to :action => 'list_documents', :id => @project
end
end
@ -385,9 +386,13 @@ class ProjectsController < ApplicationController
if request.post?
@version = @project.versions.find_by_id(params[:version_id])
# Save the attachments
params[:attachments].each { |a|
Attachment.create(:container => @version, :file => a, :author => logged_in_user) unless a.size == 0
@attachments = []
params[:attachments].each { |file|
next unless file.size > 0
a = Attachment.create(:container => @version, :file => file, :author => logged_in_user)
@attachments << a unless a.new_record?
} if params[:attachments] and params[:attachments].is_a? Array
Mailer.deliver_attachments_add(@attachments) if !@attachments.empty? and Permission.find_by_controller_and_action(params[:controller], params[:action]).mail_enabled?
redirect_to :controller => 'projects', :action => 'list_files', :id => @project
end
@versions = @project.versions

View File

@ -36,6 +36,36 @@ class Mailer < ActionMailer::Base
@body['journal']= journal
end
def document_add(document)
@recipients = document.project.users.collect { |u| u.mail if u.mail_notification }.compact
@from = Setting.mail_from
@subject = "[#{document.project.name}] #{l(:label_document_new)}: #{document.title}"
@body['document'] = document
end
def attachments_add(attachments)
container = attachments.first.container
url = "http://#{Setting.host_name}/"
added_to = ""
case container.class.to_s
when 'Version'
url << "projects/list_files/#{container.project_id}"
added_to = "#{l(:label_version)}: #{container.name}"
when 'Document'
url << "documents/show/#{container.id}"
added_to = "#{l(:label_document)}: #{container.title}"
when 'Issue'
url << "issues/show/#{container.id}"
added_to = "#{container.tracker.name} ##{container.id}: #{container.subject}"
end
@recipients = container.project.users.collect { |u| u.mail if u.mail_notification }.compact
@from = Setting.mail_from
@subject = "[#{container.project.name}] #{l(:label_attachment_new)}"
@body['attachments'] = attachments
@body['url'] = url
@body['added_to'] = added_to
end
def lost_password(token)
@recipients = token.user.mail
@from = Setting.mail_from

View File

@ -0,0 +1,6 @@
<%= @added_to %>
<%= @attachments.size %> files(s) added.
<% @attachments.each do |attachment | %>
- <%= attachment.filename %><% end %>
<%= @url %>

View File

@ -0,0 +1,6 @@
<%= @added_to %>
<%= @attachments.size %> files(s) added.
<% @attachments.each do |attachment | %>
- <%= attachment.filename %><% end %>
<%= @url %>

View File

@ -0,0 +1,6 @@
<%= @added_to %>
<%= @attachments.size %> files(s) added.
<% @attachments.each do |attachment | %>
- <%= attachment.filename %><% end %>
<%= @url %>

View File

@ -0,0 +1,6 @@
<%= @added_to %>
<%= @attachments.size %> fichier(s) ajouté(s).
<% @attachments.each do |attachment | %>
- <%= attachment.filename %><% end %>
<%= @url %>

View File

@ -0,0 +1,4 @@
A document has been added to <%= @document.project.name %> (<%= @document.category.name %>):
<%= l(:field_title) %>: <%= @document.title %>
http://<%= Setting.host_name %>/documents/show/<%= @document.id %>

View File

@ -0,0 +1,4 @@
A document has been added to <%= @document.project.name %> (<%= @document.category.name %>):
<%= l(:field_title) %>: <%= @document.title %>
http://<%= Setting.host_name %>/documents/show/<%= @document.id %>

View File

@ -0,0 +1,4 @@
A document has been added to <%= @document.project.name %> (<%= @document.category.name %>):
<%= l(:field_title) %>: <%= @document.title %>
http://<%= Setting.host_name %>/documents/show/<%= @document.id %>

View File

@ -0,0 +1,4 @@
Un document a été ajouté à <%= @document.project.name %> (<%= @document.category.name %>):
<%= l(:field_title) %>: <%= @document.title %>
http://<%= Setting.host_name %>/documents/show/<%= @document.id %>

View File

@ -0,0 +1,15 @@
class SetDocAndFilesNotifications < ActiveRecord::Migration
def self.up
Permission.find_by_controller_and_action("projects", "add_file").update_attribute(:mail_option, true)
Permission.find_by_controller_and_action("projects", "add_document").update_attribute(:mail_option, true)
Permission.find_by_controller_and_action("documents", "add_attachment").update_attribute(:mail_option, true)
Permission.find_by_controller_and_action("issues", "add_attachment").update_attribute(:mail_option, true)
end
def self.down
Permission.find_by_controller_and_action("projects", "add_file").update_attribute(:mail_option, false)
Permission.find_by_controller_and_action("projects", "add_document").update_attribute(:mail_option, false)
Permission.find_by_controller_and_action("documents", "add_attachment").update_attribute(:mail_option, false)
Permission.find_by_controller_and_action("issues", "add_attachment").update_attribute(:mail_option, false)
end
end