From 36c6aa01ee0a7aee5b0510a8e649c44de318b060 Mon Sep 17 00:00:00 2001 From: David Heinemeier Hansson Date: Tue, 9 Sep 2008 17:20:55 -0500 Subject: [PATCH] Revert "Add layout functionality to mailers." This reverts commit e9a8e0053be3b293ab89fb584f1d660063f107aa. --- actionmailer/CHANGELOG | 5 -- actionmailer/lib/action_mailer/base.rb | 24 +----- .../auto_layout_mailer/hello.html.erb | 1 - .../explicit_layout_mailer/logout.html.erb | 1 - .../explicit_layout_mailer/signup.html.erb | 1 - .../layouts/auto_layout_mailer.html.erb | 1 - .../test/fixtures/layouts/spam.html.erb | 1 - actionmailer/test/mail_layout_test.rb | 78 ------------------- actionpack/lib/action_controller/layout.rb | 6 +- 9 files changed, 3 insertions(+), 115 deletions(-) delete mode 100644 actionmailer/test/fixtures/auto_layout_mailer/hello.html.erb delete mode 100644 actionmailer/test/fixtures/explicit_layout_mailer/logout.html.erb delete mode 100644 actionmailer/test/fixtures/explicit_layout_mailer/signup.html.erb delete mode 100644 actionmailer/test/fixtures/layouts/auto_layout_mailer.html.erb delete mode 100644 actionmailer/test/fixtures/layouts/spam.html.erb delete mode 100644 actionmailer/test/mail_layout_test.rb diff --git a/actionmailer/CHANGELOG b/actionmailer/CHANGELOG index fc02ae8ffc..bdae0d4d3d 100644 --- a/actionmailer/CHANGELOG +++ b/actionmailer/CHANGELOG @@ -1,8 +1,3 @@ -* Add layout functionality to mailers [Pratik] - - Mailer layouts behaves just like controller layouts, except layout names need to - have '_mailer' postfix for them to be automatically picked up. - *2.1.0 (May 31st, 2008)* * Fixed that a return-path header would be ignored #7572 [joost] diff --git a/actionmailer/lib/action_mailer/base.rb b/actionmailer/lib/action_mailer/base.rb index 96e514e0db..5b3c560390 100644 --- a/actionmailer/lib/action_mailer/base.rb +++ b/actionmailer/lib/action_mailer/base.rb @@ -246,10 +246,7 @@ module ActionMailer #:nodoc: # +implicit_parts_order+. class Base include AdvAttrAccessor, PartContainer - if Object.const_defined?(:ActionController) - include ActionController::UrlWriter - include ActionController::Layout - end + include ActionController::UrlWriter if Object.const_defined?(:ActionController) private_class_method :new #:nodoc: @@ -365,7 +362,6 @@ def mailer_name=(value) # The mail object instance referenced by this mailer. attr_reader :mail - attr_reader :template_name, :default_template_name, :action_name class << self attr_writer :mailer_name @@ -534,7 +530,6 @@ def initialize_defaults(method_name) @content_type ||= @@default_content_type.dup @implicit_parts_order ||= @@default_implicit_parts_order.dup @template ||= method_name - @default_template_name = @action_name = @template @mailer_name ||= self.class.name.underscore @parts ||= [] @headers ||= {} @@ -551,22 +546,7 @@ def render(opts) if opts[:file] && (opts[:file] !~ /\// && !opts[:file].respond_to?(:render)) opts[:file] = "#{mailer_name}/#{opts[:file]}" end - - begin - old_template, @template = @template, initialize_template_class(body) - layout = respond_to?(:pick_layout, true) ? pick_layout(opts) : false - @template.render(opts.merge(:layout => layout)) - ensure - @template = old_template - end - end - - def default_template_format - :html - end - - def candidate_for_layout?(options) - !@template.send(:_exempt_from_layout?, default_template_name) + initialize_template_class(body).render(opts) end def template_root diff --git a/actionmailer/test/fixtures/auto_layout_mailer/hello.html.erb b/actionmailer/test/fixtures/auto_layout_mailer/hello.html.erb deleted file mode 100644 index 54950788f7..0000000000 --- a/actionmailer/test/fixtures/auto_layout_mailer/hello.html.erb +++ /dev/null @@ -1 +0,0 @@ -Inside \ No newline at end of file diff --git a/actionmailer/test/fixtures/explicit_layout_mailer/logout.html.erb b/actionmailer/test/fixtures/explicit_layout_mailer/logout.html.erb deleted file mode 100644 index 0533a3b2fe..0000000000 --- a/actionmailer/test/fixtures/explicit_layout_mailer/logout.html.erb +++ /dev/null @@ -1 +0,0 @@ -You logged out \ No newline at end of file diff --git a/actionmailer/test/fixtures/explicit_layout_mailer/signup.html.erb b/actionmailer/test/fixtures/explicit_layout_mailer/signup.html.erb deleted file mode 100644 index 4789e888c6..0000000000 --- a/actionmailer/test/fixtures/explicit_layout_mailer/signup.html.erb +++ /dev/null @@ -1 +0,0 @@ -We do not spam \ No newline at end of file diff --git a/actionmailer/test/fixtures/layouts/auto_layout_mailer.html.erb b/actionmailer/test/fixtures/layouts/auto_layout_mailer.html.erb deleted file mode 100644 index 932271450c..0000000000 --- a/actionmailer/test/fixtures/layouts/auto_layout_mailer.html.erb +++ /dev/null @@ -1 +0,0 @@ -Hello from layout <%= yield %> \ No newline at end of file diff --git a/actionmailer/test/fixtures/layouts/spam.html.erb b/actionmailer/test/fixtures/layouts/spam.html.erb deleted file mode 100644 index 619d6b16b4..0000000000 --- a/actionmailer/test/fixtures/layouts/spam.html.erb +++ /dev/null @@ -1 +0,0 @@ -Spammer layout <%= yield %> \ No newline at end of file diff --git a/actionmailer/test/mail_layout_test.rb b/actionmailer/test/mail_layout_test.rb deleted file mode 100644 index ffba9a16bd..0000000000 --- a/actionmailer/test/mail_layout_test.rb +++ /dev/null @@ -1,78 +0,0 @@ -require 'abstract_unit' - -class AutoLayoutMailer < ActionMailer::Base - def hello(recipient) - recipients recipient - subject "You have a mail" - from "tester@example.com" - end - - def spam(recipient) - recipients recipient - subject "You have a mail" - from "tester@example.com" - body render(:inline => "Hello, <%= @world %>", :layout => 'spam', :body => { :world => "Earth" }) - end - - def nolayout(recipient) - recipients recipient - subject "You have a mail" - from "tester@example.com" - body render(:inline => "Hello, <%= @world %>", :layout => false, :body => { :world => "Earth" }) - end -end - -class ExplicitLayoutMailer < ActionMailer::Base - layout 'spam', :except => [:logout] - - def signup(recipient) - recipients recipient - subject "You have a mail" - from "tester@example.com" - end - - def logout(recipient) - recipients recipient - subject "You have a mail" - from "tester@example.com" - end -end - -class LayoutMailerTest < Test::Unit::TestCase - def setup - set_delivery_method :test - ActionMailer::Base.perform_deliveries = true - ActionMailer::Base.deliveries = [] - - @recipient = 'test@localhost' - end - - def teardown - restore_delivery_method - end - - def test_should_pickup_default_layout - mail = AutoLayoutMailer.create_hello(@recipient) - assert_equal "Hello from layout Inside", mail.body.strip - end - - def test_should_pickup_layout_given_to_render - mail = AutoLayoutMailer.create_spam(@recipient) - assert_equal "Spammer layout Hello, Earth", mail.body.strip - end - - def test_should_respect_layout_false - mail = AutoLayoutMailer.create_nolayout(@recipient) - assert_equal "Hello, Earth", mail.body.strip - end - - def test_explicit_class_layout - mail = ExplicitLayoutMailer.create_signup(@recipient) - assert_equal "Spammer layout We do not spam", mail.body.strip - end - - def test_explicit_layout_exceptions - mail = ExplicitLayoutMailer.create_logout(@recipient) - assert_equal "You logged out", mail.body.strip - end -end diff --git a/actionpack/lib/action_controller/layout.rb b/actionpack/lib/action_controller/layout.rb index 3631ce86af..455e242c22 100644 --- a/actionpack/lib/action_controller/layout.rb +++ b/actionpack/lib/action_controller/layout.rb @@ -216,7 +216,7 @@ def default_layout_with_format(format, layout) # object). If the layout was defined without a directory, layouts is assumed. So layout "weblog/standard" will return # weblog/standard, but layout "standard" will return layouts/standard. def active_layout(passed_layout = nil) - layout = passed_layout || self.class.default_layout(default_template_format) + layout = passed_layout || self.class.default_layout(response.template.template_format) active_layout = case layout when String then layout when Symbol then __send__(layout) @@ -276,9 +276,5 @@ def layout_directory?(layout_name) rescue ActionView::MissingTemplate false end - - def default_template_format - response.template.template_format - end end end -- GitLab