[#792] Add confirmation emails for successful issue replies
This commit is contained in:
parent
d53c4e9aae
commit
7c7aca4f0c
|
@ -163,6 +163,7 @@ class MailHandler < ActionMailer::Base
|
||||||
add_attachments(issue)
|
add_attachments(issue)
|
||||||
issue.save!
|
issue.save!
|
||||||
logger.info "MailHandler: issue ##{issue.id} updated by #{user}" if logger && logger.info
|
logger.info "MailHandler: issue ##{issue.id} updated by #{user}" if logger && logger.info
|
||||||
|
Mailer.deliver_mail_handler_confirmation(issue.last_journal, user, email.subject) if Setting.mail_handler_confirmation_on_success
|
||||||
issue.last_journal
|
issue.last_journal
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -287,10 +287,22 @@ class Mailer < ActionMailer::Base
|
||||||
|
|
||||||
def mail_handler_confirmation(object, user, email_subject)
|
def mail_handler_confirmation(object, user, email_subject)
|
||||||
recipients user.mail
|
recipients user.mail
|
||||||
project = object.try(:project).try(:name) || ''
|
|
||||||
|
case
|
||||||
|
when object.is_a?(Issue)
|
||||||
|
project = object.project.name
|
||||||
|
url = url_for(:controller => 'issues', :action => 'show', :id => object.id)
|
||||||
|
when object.is_a?(Journal)
|
||||||
|
project = object.project.name
|
||||||
|
url = url_for(:controller => 'issues', :action => 'show', :id => object.issue.id)
|
||||||
|
else
|
||||||
|
project = ''
|
||||||
|
url = ''
|
||||||
|
end
|
||||||
|
|
||||||
subject "[#{project}] #{l(:label_mail_handler_confirmation, :subject => email_subject)}"
|
subject "[#{project}] #{l(:label_mail_handler_confirmation, :subject => email_subject)}"
|
||||||
body(:object => object,
|
body(:object => object,
|
||||||
:url => url_for(:controller => 'issues', :action => 'show', :id => object.id))
|
:url => url)
|
||||||
render_multipart('mail_handler_confirmation', body)
|
render_multipart('mail_handler_confirmation', body)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -818,7 +818,7 @@ en:
|
||||||
label_path_encoding: Path encoding
|
label_path_encoding: Path encoding
|
||||||
label_deleted_custom_field: '(deleted custom field)'
|
label_deleted_custom_field: '(deleted custom field)'
|
||||||
label_toc: "Contents"
|
label_toc: "Contents"
|
||||||
label_mail_handler_confirmation: "Confirmation of email submission: {{subject}}"
|
label_mail_handler_confirmation: "Confirmation of email submission: %{subject}"
|
||||||
|
|
||||||
button_login: Login
|
button_login: Login
|
||||||
button_submit: Submit
|
button_submit: Submit
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#-- encoding: UTF-8
|
#-- encoding: utf-8 -8
|
||||||
#-- copyright
|
#-- copyright
|
||||||
# ChiliProject is a project management system.
|
# ChiliProject is a project management system.
|
||||||
#
|
#
|
||||||
|
@ -304,15 +304,6 @@ class MailHandlerTest < ActiveSupport::TestCase
|
||||||
assert_equal 'Feature request', journal.issue.tracker.name
|
assert_equal 'Feature request', journal.issue.tracker.name
|
||||||
end
|
end
|
||||||
|
|
||||||
test "reply to issue update (Journal) by message_id" do
|
|
||||||
journal = submit_email('ticket_reply_by_message_id.eml')
|
|
||||||
assert journal.is_a?(IssueJournal), "Email was a #{journal.class}"
|
|
||||||
assert_equal User.find_by_login('jsmith'), journal.user
|
|
||||||
assert_equal Issue.find(2), journal.journaled
|
|
||||||
assert_match /This is reply/, journal.notes
|
|
||||||
assert_equal 'Feature request', journal.issue.tracker.name
|
|
||||||
end
|
|
||||||
|
|
||||||
def test_add_issue_note_with_attribute_changes
|
def test_add_issue_note_with_attribute_changes
|
||||||
# This email contains: 'Status: Resolved'
|
# This email contains: 'Status: Resolved'
|
||||||
journal = submit_email('ticket_reply_with_status.eml')
|
journal = submit_email('ticket_reply_with_status.eml')
|
||||||
|
@ -336,7 +327,7 @@ class MailHandlerTest < ActiveSupport::TestCase
|
||||||
ActionMailer::Base.deliveries.clear
|
ActionMailer::Base.deliveries.clear
|
||||||
journal = submit_email('ticket_reply.eml')
|
journal = submit_email('ticket_reply.eml')
|
||||||
assert journal.is_a?(Journal)
|
assert journal.is_a?(Journal)
|
||||||
assert_equal 3, ActionMailer::Base.deliveries.size
|
assert_equal 1, ActionMailer::Base.deliveries.size
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_add_issue_note_should_not_set_defaults
|
def test_add_issue_note_should_not_set_defaults
|
||||||
|
@ -474,7 +465,17 @@ class MailHandlerTest < ActiveSupport::TestCase
|
||||||
end
|
end
|
||||||
|
|
||||||
context "#receive_issue_reply" do
|
context "#receive_issue_reply" do
|
||||||
should "deliver an email confirmation when configured"
|
should "deliver an email confirmation when configured" do
|
||||||
|
journal = submit_email('ticket_reply.eml')
|
||||||
|
|
||||||
|
assert_equal 1, ActionMailer::Base.deliveries.size
|
||||||
|
mail = ActionMailer::Base.deliveries.last
|
||||||
|
assert_not_nil mail
|
||||||
|
assert mail.subject.include?('[eCookbook]'), "Project name missing"
|
||||||
|
assert mail.subject.include?('Confirmation of email submission: Re: Add ingredients categories'), "Main subject missing"
|
||||||
|
assert mail.body.include?("/issues/2"), "Link to issue missing"
|
||||||
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
context "#receive_message_reply" do
|
context "#receive_message_reply" do
|
||||||
|
|
Loading…
Reference in New Issue