summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2013-08-05 17:08:26 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2013-08-05 17:08:26 +0000
commitfd1b0607055909142e75f437a326273c3bd370e5 (patch)
tree60d53cd94e140f08072ba2c09ffe9dbd4e9e858e
parentb19b90234529206205abfa21c4a92ba7cebb7d98 (diff)
downloadredmine-fd1b0607055909142e75f437a326273c3bd370e5.tar.gz
redmine-fd1b0607055909142e75f437a326273c3bd370e5.zip
Fixed that standard fields disabled still appear in email notifications (#14584).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@12079 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r--app/helpers/issues_helper.rb22
-rw-r--r--app/views/mailer/_issue.html.erb12
-rw-r--r--app/views/mailer/_issue.text.erb9
-rw-r--r--test/unit/mailer_test.rb23
4 files changed, 47 insertions, 19 deletions
diff --git a/app/helpers/issues_helper.rb b/app/helpers/issues_helper.rb
index 2e45d2e97..bc7fbab85 100644
--- a/app/helpers/issues_helper.rb
+++ b/app/helpers/issues_helper.rb
@@ -231,6 +231,28 @@ module IssuesHelper
out
end
+ def email_issue_attributes(issue, user)
+ items = []
+ %w(author status priority assigned_to category fixed_version).each do |attribute|
+ unless issue.disabled_core_fields.include?(attribute+"_id")
+ items << "#{l("field_#{attribute}")}: #{issue.send attribute}"
+ end
+ end
+ issue.visible_custom_field_values(user).each do |value|
+ items << "#{value.custom_field.name}: #{show_value(value)}"
+ end
+ items
+ end
+
+ def render_email_issue_attributes(issue, user, html=false)
+ items = email_issue_attributes(issue, user)
+ if html
+ content_tag('ul', items.map{|s| content_tag('li', s)}.join("\n").html_safe)
+ else
+ items.map{|s| "* #{s}"}.join("\n")
+ end
+ end
+
# Returns the textual representation of a journal details
# as an array of strings
def details_to_strings(details, no_html=false, options={})
diff --git a/app/views/mailer/_issue.html.erb b/app/views/mailer/_issue.html.erb
index aee365e56..6b84a5be1 100644
--- a/app/views/mailer/_issue.html.erb
+++ b/app/views/mailer/_issue.html.erb
@@ -1,16 +1,6 @@
<h1><%= link_to(h("#{issue.tracker.name} ##{issue.id}: #{issue.subject}"), issue_url) %></h1>
-<ul>
-<li><%=l(:field_author)%>: <%=h issue.author %></li>
-<li><%=l(:field_status)%>: <%=h issue.status %></li>
-<li><%=l(:field_priority)%>: <%=h issue.priority %></li>
-<li><%=l(:field_assigned_to)%>: <%=h issue.assigned_to %></li>
-<li><%=l(:field_category)%>: <%=h issue.category %></li>
-<li><%=l(:field_fixed_version)%>: <%=h issue.fixed_version %></li>
-<% issue.visible_custom_field_values(users.first).each do |c| %>
- <li><%=h c.custom_field.name %>: <%=h show_value(c) %></li>
-<% end %>
-</ul>
+<%= render_email_issue_attributes(issue, users.first, true) %>
<%= textilizable(issue, :description, :only_path => false) %>
diff --git a/app/views/mailer/_issue.text.erb b/app/views/mailer/_issue.text.erb
index a2d5a41b2..0034c441f 100644
--- a/app/views/mailer/_issue.text.erb
+++ b/app/views/mailer/_issue.text.erb
@@ -1,14 +1,7 @@
<%= "#{issue.tracker.name} ##{issue.id}: #{issue.subject}" %>
<%= issue_url %>
-* <%=l(:field_author)%>: <%= issue.author %>
-* <%=l(:field_status)%>: <%= issue.status %>
-* <%=l(:field_priority)%>: <%= issue.priority %>
-* <%=l(:field_assigned_to)%>: <%= issue.assigned_to %>
-* <%=l(:field_category)%>: <%= issue.category %>
-* <%=l(:field_fixed_version)%>: <%= issue.fixed_version %>
-<% issue.visible_custom_field_values(users.first).each do |c| %>* <%= c.custom_field.name %>: <%= show_value(c) %>
-<% end -%>
+<%= render_email_issue_attributes(issue, users.first) %>
----------------------------------------
<%= issue.description %>
diff --git a/test/unit/mailer_test.rb b/test/unit/mailer_test.rb
index 3cacf4f87..a2f371632 100644
--- a/test/unit/mailer_test.rb
+++ b/test/unit/mailer_test.rb
@@ -317,6 +317,29 @@ class MailerTest < ActiveSupport::TestCase
assert !last_email.bcc.include?(user.mail)
end
+ def test_issue_add_should_include_enabled_fields
+ Setting.default_language = 'en'
+ issue = Issue.find(2)
+ assert Mailer.deliver_issue_add(issue)
+ assert_mail_body_match '* Target version: 1.0', last_email
+ assert_select_email do
+ assert_select 'li', :text => 'Target version: 1.0'
+ end
+ end
+
+ def test_issue_add_should_not_include_disabled_fields
+ Setting.default_language = 'en'
+ issue = Issue.find(2)
+ tracker = issue.tracker
+ tracker.core_fields -= ['fixed_version_id']
+ tracker.save!
+ assert Mailer.deliver_issue_add(issue)
+ assert_mail_body_no_match 'Target version', last_email
+ assert_select_email do
+ assert_select 'li', :text => /Target version/, :count => 0
+ end
+ end
+
# test mailer methods for each language
def test_issue_add
issue = Issue.find(1)