diff options
author | David Heinemeier Hansson <david@loudthinking.com> | 2010-01-08 11:48:38 -0800 |
---|---|---|
committer | David Heinemeier Hansson <david@loudthinking.com> | 2010-01-08 11:49:12 -0800 |
commit | 188d52165bc9184a143a468ee951981d159dbea6 (patch) | |
tree | c956c450c3d39f1724c174eef490987b5c71d37d | |
parent | 5ea130943eb27586272ecebb060ff1475cadbed6 (diff) | |
download | rails-188d52165bc9184a143a468ee951981d159dbea6.tar.gz rails-188d52165bc9184a143a468ee951981d159dbea6.tar.bz2 rails-188d52165bc9184a143a468ee951981d159dbea6.zip |
Fixed that much of DateHelper wouldn't return html_safe? strings [DHH]
-rw-r--r-- | actionpack/CHANGELOG | 2 | ||||
-rw-r--r-- | actionpack/lib/action_view/helpers/date_helper.rb | 10 | ||||
-rw-r--r-- | actionpack/test/template/date_helper_test.rb | 22 |
3 files changed, 29 insertions, 5 deletions
diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index 1ea0904578..878f9df6eb 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,7 @@ *Edge* +* Fixed that much of DateHelper wouldn't return html_safe? strings [DHH] + * Fixed that fragment caching should return a cache hit as html_safe (or it would all just get escaped) [DHH] * Added that ActionController::Base now does helper :all instead of relying on the default ApplicationController in Rails to do it [DHH] diff --git a/actionpack/lib/action_view/helpers/date_helper.rb b/actionpack/lib/action_view/helpers/date_helper.rb index 4b51dc7856..34f38b0a8a 100644 --- a/actionpack/lib/action_view/helpers/date_helper.rb +++ b/actionpack/lib/action_view/helpers/date_helper.rb @@ -616,7 +616,7 @@ module ActionView build_selects_from_types(order) else - "#{select_date}#{@options[:datetime_separator]}#{select_time}" + "#{select_date}#{@options[:datetime_separator]}#{select_time}".html_safe! end end @@ -835,7 +835,7 @@ module ActionView select_html << prompt_option_tag(type, @options[:prompt]) + "\n" if @options[:prompt] select_html << select_options_as_html.to_s - content_tag(:select, select_html, select_options) + "\n" + (content_tag(:select, select_html, select_options) + "\n").html_safe! end # Builds a prompt option tag with supplied options or from default options @@ -860,12 +860,12 @@ module ActionView # build_hidden(:year, 2008) # => "<input id="post_written_on_1i" name="post[written_on(1i)]" type="hidden" value="2008" />" def build_hidden(type, value) - tag(:input, { + (tag(:input, { :type => "hidden", :id => input_id_from_type(type), :name => input_name_from_type(type), :value => value - }) + "\n" + }) + "\n").html_safe! end # Returns the name attribute for the input tag @@ -896,7 +896,7 @@ module ActionView separator = separator(type) unless type == order.first # don't add on last field select.insert(0, separator.to_s + send("select_#{type}").to_s) end - select + select.html_safe! end # Returns the separator for a given datetime component diff --git a/actionpack/test/template/date_helper_test.rb b/actionpack/test/template/date_helper_test.rb index 9fb2080f77..fb51b67185 100644 --- a/actionpack/test/template/date_helper_test.rb +++ b/actionpack/test/template/date_helper_test.rb @@ -2475,6 +2475,28 @@ class DateHelperTest < ActionView::TestCase }, options) end + def test_select_html_safety + assert select_day(16).html_safe? + assert select_month(8).html_safe? + assert select_year(Time.mktime(2003, 8, 16, 8, 4, 18)).html_safe? + assert select_minute(Time.mktime(2003, 8, 16, 8, 4, 18)).html_safe? + assert select_second(Time.mktime(2003, 8, 16, 8, 4, 18)).html_safe? + + assert select_minute(8, :use_hidden => true).html_safe? + assert select_month(8, :prompt => 'Choose month').html_safe? + + assert select_time(Time.mktime(2003, 8, 16, 8, 4, 18), {}, :class => 'selector').html_safe? + assert select_date(Time.mktime(2003, 8, 16), :date_separator => " / ", :start_year => 2003, :end_year => 2005, :prefix => "date[first]").html_safe? + end + + def test_object_select_html_safety + @post = Post.new + @post.written_on = Date.new(2004, 6, 15) + + assert date_select("post", "written_on", :default => Time.local(2006, 9, 19, 15, 16, 35), :include_blank => true).html_safe? + assert time_select("post", "written_on", :ignore_date => true).html_safe? + end + protected def with_env_tz(new_tz = 'US/Eastern') old_tz, ENV['TZ'] = ENV['TZ'], new_tz |