]> source.dussan.org Git - redmine.git/commitdiff
Merged r12079 from trunk (#14584).
authorJean-Philippe Lang <jp_lang@yahoo.fr>
Tue, 10 Sep 2013 16:43:54 +0000 (16:43 +0000)
committerJean-Philippe Lang <jp_lang@yahoo.fr>
Tue, 10 Sep 2013 16:43:54 +0000 (16:43 +0000)
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/2.3-stable@12123 e93f8b46-1217-0410-a6f0-8f06a7374b81

app/helpers/issues_helper.rb
app/views/mailer/_issue.html.erb
app/views/mailer/_issue.text.erb
test/unit/mailer_test.rb

index b4b15a66ea874a287967a20cb211b176a6775b62..b75cbd5de7ea642a3100527fbb1ac1b69f6902db 100644 (file)
@@ -214,6 +214,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={})
index 3d851d4428c99522fc9f322ee2393a8e8135eea8..e2e2bfc309086522d3f90cd72eedf26db9daad8c 100644 (file)
@@ -1,15 +1,5 @@
 <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.custom_field_values.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) %>
index 427b6a890be959b0cbceabb2ec77ac16a8e99ac4..dcca07e01a402976b678a122d162b68633a8be74 100644 (file)
@@ -1,13 +1,6 @@
 <%= "#{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.custom_field_values.each do |c| %>* <%= c.custom_field.name %>: <%= show_value(c) %>
-<% end -%>
+<%= render_email_issue_attributes(issue, users.first) %>
 ----------------------------------------
 <%= issue.description %>
index 3fb9b701f98add7076749adee384ba4d91aa183c..e65ee20fbe38e957f3628a64540185728f8613e8 100644 (file)
@@ -315,6 +315,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)