aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2008-09-09 17:20:55 -0500
committerDavid Heinemeier Hansson <david@loudthinking.com>2008-09-09 17:20:55 -0500
commit36c6aa01ee0a7aee5b0510a8e649c44de318b060 (patch)
tree6988605e522b146dad945f308b20ea412e3842bb
parent1398db0128be7ae01700712eafc95be5de430f7c (diff)
downloadrails-36c6aa01ee0a7aee5b0510a8e649c44de318b060.tar.gz
rails-36c6aa01ee0a7aee5b0510a8e649c44de318b060.tar.bz2
rails-36c6aa01ee0a7aee5b0510a8e649c44de318b060.zip
Revert "Add layout functionality to mailers."
This reverts commit e9a8e0053be3b293ab89fb584f1d660063f107aa.
-rw-r--r--actionmailer/CHANGELOG5
-rw-r--r--actionmailer/lib/action_mailer/base.rb24
-rw-r--r--actionmailer/test/fixtures/auto_layout_mailer/hello.html.erb1
-rw-r--r--actionmailer/test/fixtures/explicit_layout_mailer/logout.html.erb1
-rw-r--r--actionmailer/test/fixtures/explicit_layout_mailer/signup.html.erb1
-rw-r--r--actionmailer/test/fixtures/layouts/auto_layout_mailer.html.erb1
-rw-r--r--actionmailer/test/fixtures/layouts/spam.html.erb1
-rw-r--r--actionmailer/test/mail_layout_test.rb78
-rw-r--r--actionpack/lib/action_controller/layout.rb6
9 files changed, 3 insertions, 115 deletions
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 @@ module ActionMailer #:nodoc:
# 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 @@ module ActionMailer #:nodoc:
@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 @@ module ActionMailer #:nodoc:
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 @@ module ActionController #:nodoc:
# object). If the layout was defined without a directory, layouts is assumed. So <tt>layout "weblog/standard"</tt> will return
# weblog/standard, but <tt>layout "standard"</tt> 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 @@ module ActionController #:nodoc:
rescue ActionView::MissingTemplate
false
end
-
- def default_template_format
- response.template.template_format
- end
end
end