mirror of
https://github.com/github/rails.git
synced 2026-04-26 03:00:59 -04:00
Deprecate old defaults API.
This commit is contained in:
@@ -262,24 +262,6 @@ module ActionMailer #:nodoc:
|
||||
:parts_order => [ "text/plain", "text/enriched", "text/html" ]
|
||||
}
|
||||
|
||||
extlib_inheritable_accessor :default_charset
|
||||
self.default_charset = "utf-8"
|
||||
|
||||
extlib_inheritable_accessor :default_content_type
|
||||
self.default_content_type = "text/plain"
|
||||
|
||||
extlib_inheritable_accessor :default_mime_version
|
||||
self.default_mime_version = "1.0"
|
||||
|
||||
# This specifies the order that the parts of a multipart email will be. Usually you put
|
||||
# text/plain at the top so someone without a MIME capable email reader can read the plain
|
||||
# text of your email first.
|
||||
#
|
||||
# Any content type that is not listed here will be inserted in the order you add them to
|
||||
# the email after the content types you list here.
|
||||
extlib_inheritable_accessor :default_implicit_parts_order
|
||||
self.default_implicit_parts_order = [ "text/plain", "text/enriched", "text/html" ]
|
||||
|
||||
class << self
|
||||
|
||||
def mailer_name
|
||||
@@ -498,7 +480,7 @@ module ActionMailer #:nodoc:
|
||||
quote_fields!(headers, charset)
|
||||
|
||||
# Render the templates and blocks
|
||||
responses, explicit_order = collect_responses_and_sort_order(headers, &block)
|
||||
responses, explicit_order = collect_responses_and_parts_order(headers, &block)
|
||||
create_parts_from_responses(m, responses, charset)
|
||||
|
||||
# Finally setup content type and parts order
|
||||
@@ -554,18 +536,18 @@ module ActionMailer #:nodoc:
|
||||
m.reply_to ||= quote_address_if_necessary(headers[:reply_to], charset) if headers[:reply_to]
|
||||
end
|
||||
|
||||
def collect_responses_and_sort_order(headers) #:nodoc:
|
||||
responses, sort_order = [], nil
|
||||
def collect_responses_and_parts_order(headers) #:nodoc:
|
||||
responses, parts_order = [], nil
|
||||
|
||||
if block_given?
|
||||
collector = ActionMailer::Collector.new(self) { render(action_name) }
|
||||
yield(collector)
|
||||
sort_order = collector.responses.map { |r| r[:content_type] }
|
||||
parts_order = collector.responses.map { |r| r[:content_type] }
|
||||
responses = collector.responses
|
||||
elsif headers[:body]
|
||||
responses << {
|
||||
:body => headers[:body],
|
||||
:content_type => self.class.default_content_type.dup
|
||||
:content_type => self.class.defaults[:content_type] || "text/plain"
|
||||
}
|
||||
else
|
||||
each_template do |template|
|
||||
@@ -576,7 +558,7 @@ module ActionMailer #:nodoc:
|
||||
end
|
||||
end
|
||||
|
||||
[responses, sort_order]
|
||||
[responses, parts_order]
|
||||
end
|
||||
|
||||
def each_template(&block) #:nodoc:
|
||||
@@ -594,7 +576,6 @@ module ActionMailer #:nodoc:
|
||||
def create_parts_from_responses(m, responses, charset) #:nodoc:
|
||||
if responses.size == 1 && !m.has_attachments?
|
||||
responses[0].each { |k,v| m[k] = v }
|
||||
return responses[0][:content_type]
|
||||
elsif responses.size > 1 && m.has_attachments?
|
||||
container = Mail::Part.new
|
||||
container.content_type = "multipart/alternative"
|
||||
|
||||
@@ -65,7 +65,10 @@ module ActionMailer
|
||||
method ||= self.delivery_method
|
||||
mail.delivery_handler = self
|
||||
|
||||
if method.is_a?(Symbol)
|
||||
case method
|
||||
when NilClass
|
||||
raise "Delivery method cannot be nil"
|
||||
when Symbol
|
||||
if klass = delivery_methods[method.to_sym]
|
||||
mail.delivery_method(klass, send(:"#{method}_settings"))
|
||||
else
|
||||
|
||||
@@ -5,8 +5,25 @@ module ActionMailer
|
||||
module DeprecatedApi #:nodoc:
|
||||
extend ActiveSupport::Concern
|
||||
|
||||
module ClassMethods
|
||||
included do
|
||||
[:charset, :content_type, :mime_version, :implicit_parts_order].each do |method|
|
||||
class_eval <<-FILE, __FILE__, __LINE__ + 1
|
||||
def self.default_#{method}
|
||||
@@default_#{method}
|
||||
end
|
||||
|
||||
def self.default_#{method}=(value)
|
||||
ActiveSupport::Deprecation.warn "ActionMailer::Base.default_#{method}=value is deprecated, " <<
|
||||
"use defaults :#{method} => value instead"
|
||||
@@default_#{method} = value
|
||||
end
|
||||
|
||||
@@default_#{method} = nil
|
||||
FILE
|
||||
end
|
||||
end
|
||||
|
||||
module ClassMethods
|
||||
# Deliver the given mail object directly. This can be used to deliver
|
||||
# a preconstructed mail object, like:
|
||||
#
|
||||
@@ -99,7 +116,15 @@ module ActionMailer
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
|
||||
def initialize_defaults(*)
|
||||
@charset ||= self.class.default_charset.try(:dup)
|
||||
@content_type ||= self.class.default_content_type.try(:dup)
|
||||
@implicit_parts_order ||= self.class.default_implicit_parts_order.try(:dup)
|
||||
@mime_version ||= self.class.default_mime_version.try(:dup)
|
||||
super
|
||||
end
|
||||
|
||||
def create_parts
|
||||
if @body.is_a?(Hash) && !@body.empty?
|
||||
ActiveSupport::Deprecation.warn "Giving a hash to body is deprecated, please use instance variables instead", caller[0,2]
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
require 'active_support/core_ext/object/try'
|
||||
|
||||
module ActionMailer
|
||||
module OldApi #:nodoc:
|
||||
extend ActiveSupport::Concern
|
||||
@@ -185,10 +187,10 @@ module ActionMailer
|
||||
# mailer. Subclasses may override this method to provide different
|
||||
# defaults.
|
||||
def initialize_defaults(method_name)
|
||||
@charset ||= self.class.default_charset.dup
|
||||
@content_type ||= self.class.default_content_type.dup
|
||||
@implicit_parts_order ||= self.class.default_implicit_parts_order.dup
|
||||
@mime_version ||= self.class.default_mime_version.dup if self.class.default_mime_version
|
||||
@charset ||= self.class.defaults[:charset].try(:dup)
|
||||
@content_type ||= self.class.defaults[:content_type].try(:dup)
|
||||
@implicit_parts_order ||= self.class.defaults[:parts_order].try(:dup)
|
||||
@mime_version ||= self.class.defaults[:mime_version].try(:dup)
|
||||
|
||||
@mailer_name ||= self.class.mailer_name.dup
|
||||
@template ||= method_name
|
||||
|
||||
Reference in New Issue
Block a user