From ef999779a617df1cdeffd17a747ba1326d9e110e Mon Sep 17 00:00:00 2001 From: Marius BALTEANU Date: Tue, 19 Feb 2019 21:41:43 +0000 Subject: [PATCH] New setting to include the status changes in issue mail notifications subject. The setting is useful to control the grouping of mails on some mail clients (Gmail for example). By default, the setting is enabled to not change the current behaviour. diff --git a/app/models/mailer.rb b/app/models/mailer.rb index 2364774..01ab60e 100644 --- a/app/models/mailer.rb +++ b/app/models/mailer.rb @@ -77,8 +77,11 @@ class Mailer < ActionMailer::Base @issue = issue @user = user @issue_url = url_for(:controller => 'issues', :action => 'show', :id => issue) + subject = "[#{issue.project.name} - #{issue.tracker.name} ##{issue.id}]" + subject << " (#{issue.status.name})" if Setting.show_status_changes_in_mail_subject? + subject << " #{issue.subject}" mail :to => user, - :subject => "[#{issue.project.name} - #{issue.tracker.name} ##{issue.id}] (#{issue.status.name}) #{issue.subject}" + :subject => subject end # Notifies users about a new issue. @@ -103,7 +106,7 @@ class Mailer < ActionMailer::Base references issue @author = journal.user s = "[#{issue.project.name} - #{issue.tracker.name} ##{issue.id}] " - s << "(#{issue.status.name}) " if journal.new_value_for('status_id') + s << "(#{issue.status.name}) " if journal.new_value_for('status_id') && Setting.show_status_changes_in_mail_subject? s << issue.subject @issue = issue @user = user diff --git a/app/views/settings/_notifications.html.erb b/app/views/settings/_notifications.html.erb index 0f50514..f50bd33 100644 --- a/app/views/settings/_notifications.html.erb +++ b/app/views/settings/_notifications.html.erb @@ -7,6 +7,8 @@

<%= setting_check_box :bcc_recipients %>

<%= setting_check_box :plain_text_mail %>

+ +

<%= setting_check_box :show_status_changes_in_mail_subject %>

<%=l(:text_select_mail_notifications)%> diff --git a/config/locales/en.yml b/config/locales/en.yml index 74e03d3..1d170ef 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -472,6 +472,7 @@ en: setting_timelog_accept_0_hours: Accept time logs with 0 hours setting_timelog_max_hours_per_day: Maximum hours that can be logged per day and user setting_timelog_accept_future_dates: Accept time logs on future dates + setting_show_status_changes_in_mail_subject: Show status changes in issue mail notifications subject permission_add_project: Create project permission_add_subprojects: Create subprojects diff --git a/config/settings.yml b/config/settings.yml index b6c0261..e0f49ea 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -310,3 +310,5 @@ timelog_max_hours_per_day: default: 999 timelog_accept_future_dates: default: 1 +show_status_changes_in_mail_subject: + default: 1 \ No newline at end of file diff --git a/test/unit/mailer_test.rb b/test/unit/mailer_test.rb index d3ff874..f2deeda 100644 --- a/test/unit/mailer_test.rb +++ b/test/unit/mailer_test.rb @@ -422,6 +422,50 @@ class MailerTest < ActiveSupport::TestCase end end + def test_issue_add_subject_should_include_status_if_setting_is_enabled + with_settings :show_status_changes_in_mail_subject => 1 do + issue = Issue.find(2) + Mailer.deliver_issue_add(issue) + + mail = last_email + assert_equal "[eCookbook - Feature request #2] (Assigned) Add ingredients categories", mail.subject + end + end + + def test_issue_add_subject_should_not_include_status_if_setting_is_disabled + with_settings :show_status_changes_in_mail_subject => 0 do + issue = Issue.find(2) + Mailer.deliver_issue_add(issue) + + mail = last_email + assert_equal "[eCookbook - Feature request #2] Add ingredients categories", mail.subject + end + end + + def test_issue_edit_subject_should_include_status_changes_if_setting_is_enabled + with_settings :show_status_changes_in_mail_subject => 1 do + issue = Issue.find(2) + issue.status_id = 4 + issue.save! + Mailer.deliver_issue_add(issue) + + mail = last_email + assert_equal "[eCookbook - Feature request #2] (Feedback) Add ingredients categories", mail.subject + end + end + + def test_issue_edit_subject_should_not_include_status_changes_if_setting_is_disabled + with_settings :show_status_changes_in_mail_subject => 0 do + issue = Issue.find(2) + issue.status_id = 4 + issue.save! + Mailer.deliver_issue_add(issue) + + mail = last_email + assert_equal "[eCookbook - Feature request #2] Add ingredients categories", mail.subject + end + end + def test_issue_edit_should_send_private_notes_to_users_with_permission_only journal = Journal.find(1) journal.private_notes = true -- 2.1.4