Fixed that text email templates are escaped (#11355).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@10205 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
@@ -50,6 +50,41 @@ module ActionView
|
||||
end
|
||||
end
|
||||
|
||||
# Do not HTML escape text templates
|
||||
module ActionView
|
||||
class Template
|
||||
module Handlers
|
||||
class ERB
|
||||
def call(template)
|
||||
if template.source.encoding_aware?
|
||||
# First, convert to BINARY, so in case the encoding is
|
||||
# wrong, we can still find an encoding tag
|
||||
# (<%# encoding %>) inside the String using a regular
|
||||
# expression
|
||||
template_source = template.source.dup.force_encoding("BINARY")
|
||||
|
||||
erb = template_source.gsub(ENCODING_TAG, '')
|
||||
encoding = $2
|
||||
|
||||
erb.force_encoding valid_encoding(template.source.dup, encoding)
|
||||
|
||||
# Always make sure we return a String in the default_internal
|
||||
erb.encode!
|
||||
else
|
||||
erb = template.source.dup
|
||||
end
|
||||
|
||||
self.class.erb_implementation.new(
|
||||
erb,
|
||||
:trim => (self.class.erb_trim_mode == "-"),
|
||||
:escape => template.identifier =~ /\.text/ # only escape HTML templates
|
||||
).src
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
ActionView::Base.field_error_proc = Proc.new{ |html_tag, instance| html_tag || ''.html_safe }
|
||||
|
||||
require 'mail'
|
||||
|
||||
Reference in New Issue
Block a user