diff options
author | Jamis Buck <jamis@37signals.com> | 2005-06-30 21:21:54 +0000 |
---|---|---|
committer | Jamis Buck <jamis@37signals.com> | 2005-06-30 21:21:54 +0000 |
commit | 813a8b9d2a17e1f0d7f7dfdcf04a79c94722e283 (patch) | |
tree | 17812f8569606ee64aa86330f504dc5850ff82a3 /actionmailer | |
parent | 2455f96a6e33ab0d233fd98c7e3313131b4dbda2 (diff) | |
download | rails-813a8b9d2a17e1f0d7f7dfdcf04a79c94722e283.tar.gz rails-813a8b9d2a17e1f0d7f7dfdcf04a79c94722e283.tar.bz2 rails-813a8b9d2a17e1f0d7f7dfdcf04a79c94722e283.zip |
Allow template to be explicitly specified #1448 [tuxie@dekadance.se]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1575 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'actionmailer')
-rw-r--r-- | actionmailer/CHANGELOG | 2 | ||||
-rw-r--r-- | actionmailer/lib/action_mailer/base.rb | 9 | ||||
-rwxr-xr-x | actionmailer/test/mail_service_test.rb | 24 |
3 files changed, 31 insertions, 4 deletions
diff --git a/actionmailer/CHANGELOG b/actionmailer/CHANGELOG index 353472c775..eac4caf81a 100644 --- a/actionmailer/CHANGELOG +++ b/actionmailer/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Allow template to be explicitly specified #1448 [tuxie@dekadance.se] + * Allow specific "multipart/xxx" content-type to be set on multipart messages #1412 [Flurin Egger] * Unquoted @ characters in headers are now accepted in spite of RFC 822 #1206 diff --git a/actionmailer/lib/action_mailer/base.rb b/actionmailer/lib/action_mailer/base.rb index a8880146af..919d92670f 100644 --- a/actionmailer/lib/action_mailer/base.rb +++ b/actionmailer/lib/action_mailer/base.rb @@ -143,7 +143,7 @@ module ActionMailer #:nodoc: cattr_accessor :default_content_type adv_attr_accessor :recipients, :subject, :body, :from, :sent_on, :headers, - :bcc, :cc, :charset, :content_type + :bcc, :cc, :charset, :content_type, :template attr_reader :mail @@ -161,6 +161,7 @@ module ActionMailer #:nodoc: @bcc = @cc = @from = @recipients = @sent_on = @subject = nil @charset = @@default_charset.dup @content_type = @@default_content_type.dup + @template = method_name @parts = [] @headers = {} @body = {} @@ -173,7 +174,7 @@ module ActionMailer #:nodoc: # which include the content-type in their file name (i.e., # "the_template_file.text.html.rhtml", etc.). if @parts.empty? - templates = Dir.glob("#{template_path}/#{method_name}.*") + templates = Dir.glob("#{template_path}/#{@template}.*") templates.each do |path| type = (File.basename(path).split(".")[1..-2] || []).join("/") next if type.empty? @@ -188,8 +189,8 @@ module ActionMailer #:nodoc: # normal template exists (or if there were no implicit parts) we render # it. template_exists = @parts.empty? - template_exists ||= Dir.glob("#{template_path}/#{method_name}.*").any? { |i| i.split(".").length == 2 } - @body = render_message(method_name, @body) if template_exists + template_exists ||= Dir.glob("#{template_path}/#{@template}.*").any? { |i| i.split(".").length == 2 } + @body = render_message(@template, @body) if template_exists # Finally, if there are other message parts and a textual body exists, # we shift it onto the front of the parts and set the body to nil (so diff --git a/actionmailer/test/mail_service_test.rb b/actionmailer/test/mail_service_test.rb index 7efd044796..ce5702db07 100755 --- a/actionmailer/test/mail_service_test.rb +++ b/actionmailer/test/mail_service_test.rb @@ -127,6 +127,16 @@ class TestMailer < ActionMailer::Base content_type "text/html" end + def custom_template(recipient) + recipients recipient + subject "[Signed up] Welcome #{recipient}" + from "system@loudthinking.com" + sent_on Time.local(2004, 12, 12) + template "signed_up" + + body["recipient"] = recipient + end + class <<self attr_accessor :received_body end @@ -179,6 +189,20 @@ class ActionMailerTest < Test::Unit::TestCase assert_equal expected.encoded, ActionMailer::Base.deliveries.first.encoded end + def test_custom_template + expected = new_mail + expected.to = @recipient + expected.subject = "[Signed up] Welcome #{@recipient}" + expected.body = "Hello there, \n\nMr. #{@recipient}" + expected.from = "system@loudthinking.com" + expected.date = Time.local(2004, 12, 12) + + created = nil + assert_nothing_raised { created = TestMailer.create_custom_template(@recipient) } + assert_not_nil created + assert_equal expected.encoded, created.encoded + end + def test_cancelled_account expected = new_mail expected.to = @recipient |