Changeset 3953
- Timestamp:
- 03/18/06 22:36:52 (3 years ago)
- Files:
-
- trunk/actionpack/CHANGELOG (modified) (1 diff)
- trunk/actionpack/lib/action_view/helpers/url_helper.rb (modified) (4 diffs)
- trunk/actionpack/test/template/url_helper_test.rb (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/actionpack/CHANGELOG
r3939 r3953 1 1 *SVN* 2 3 * Change url_for to escape the resulting URLs when called from a view. [Nicholas Seckar, eddiewould@paradise.net.nz] 2 4 3 5 * Added easy support for testing file uploads with fixture_file_upload #4105 [turnip@turnipspatch.com]. Example: trunk/actionpack/lib/action_view/helpers/url_helper.rb
r3937 r3953 16 16 def url_for(options = {}, *parameters_for_method_reference) 17 17 options = { :only_path => true }.update(options.symbolize_keys) if options.kind_of? Hash 18 @controller.send(:url_for, options, *parameters_for_method_reference)18 html_escape(@controller.send(:url_for, options, *parameters_for_method_reference)) 19 19 end 20 20 … … 47 47 tag_options = nil 48 48 end 49 url = html_escape(options.is_a?(String) ? options : url_for(options, *parameters_for_method_reference))50 "<a href=\"#{url}\"#{tag_options}>#{name ||url}</a>"49 url = options.is_a?(String) ? options : self.url_for(options, *parameters_for_method_reference) 50 "<a href=\"#{url}\"#{tag_options}>#{name || url}</a>" 51 51 end 52 52 … … 105 105 html_options["onclick"] = "return #{confirm_javascript_function(confirm)};" 106 106 end 107 108 url, name = options.is_a?(String) ? 109 [ options, name || options ] : 110 [ url_for(options), name || html_escape(url_for(options)) ] 111 107 108 url = options.is_a?(String) ? options : url_for(options) 109 name ||= url 110 112 111 html_options.merge!("type" => "submit", "value" => name) 113 112 … … 198 197 # <a href="mailto:me@domain.com?cc="ccaddress@domain.com"&bcc="bccaddress@domain.com"&body="This%20is%20the%20body%20of%20the%20message."&subject="This%20is%20an%20example%20email">My email</a> 199 198 def mail_to(email_address, name = nil, html_options = {}) 199 name = html_escape(name) if name 200 200 html_options = html_options.stringify_keys 201 201 encode = html_options.delete("encode") trunk/actionpack/test/template/url_helper_test.rb
r3928 r3953 14 14 def setup 15 15 @controller = Class.new do 16 attr_accessor :url 16 17 def url_for(options, *parameters_for_method_reference) 17 "http://www.example.com"18 url 18 19 end 19 20 end 20 21 @controller = @controller.new 21 end 22 22 @controller.url = "http://www.example.com" 23 end 24 25 def test_url_for_escapes_urls 26 @controller.url = "http://www.example.com?a=b&c=d" 27 assert_equal "http://www.example.com?a=b&c=d", url_for(:a => 'b', :c => 'd') 28 end 29 23 30 # todo: missing test cases 24 31 def test_button_to_with_straight_url … … 57 64 58 65 def test_link_tag_with_query 59 assert_dom_equal "<a href=\"http://www.example.com?q1=v1&q2=v2\">Hello</a>", link_to("Hello", "http://www.example.com?q1=v1& q2=v2")66 assert_dom_equal "<a href=\"http://www.example.com?q1=v1&q2=v2\">Hello</a>", link_to("Hello", "http://www.example.com?q1=v1&q2=v2") 60 67 end 61 68 62 69 def test_link_tag_with_query_and_no_name 63 assert_dom_equal "<a href=\"http://www.example.com?q1=v1&q2=v2\">http://www.example.com?q1=v1&q2=v2</a>", link_to(nil, "http://www.example.com?q1=v1&q2=v2") 70 assert_dom_equal "<a href=\"http://www.example.com?q1=v1&q2=v2\">http://www.example.com?q1=v1&q2=v2</a>", link_to(nil, "http://www.example.com?q1=v1&q2=v2") 71 end 72 73 def test_link_tag_with_img 74 assert_dom_equal "<a href=\"http://www.example.com\"><img src='/favicon.jpg' /></a>", link_to("<img src='/favicon.jpg' />", "http://www.example.com") 75 end 76 77 def test_link_with_nil_html_options 78 assert_dom_equal "<a href=\"http://www.example.com\">Hello</a>", link_to("Hello", {:action => 'myaction'}, nil) 64 79 end 65 80 … … 67 82 assert_dom_equal "<a href=\"http://www.example.com\" onclick=\"alert('yay!')\">Hello</a>", link_to("Hello", "http://www.example.com", :onclick => "alert('yay!')") 68 83 end 69 84 70 85 def test_link_tag_with_javascript_confirm 71 86 assert_dom_equal( … … 148 163 end 149 164 150 151 165 def xtest_link_unless_current 152 166 @request = RequestMock.new("http://www.example.com") … … 158 172 assert_equal "Showing", link_to_unless_current("Showing", :action => "show", :controller => "weblog", :id => 1) 159 173 end 160 174 161 175 def test_mail_to 162 176 assert_dom_equal "<a href=\"mailto:david@loudthinking.com\">david@loudthinking.com</a>", mail_to("david@loudthinking.com") … … 192 206 assert_dom_equal "<script type=\"text/javascript\">eval(unescape('%64%6f%63%75%6d%65%6e%74%2e%77%72%69%74%65%28%27%3c%61%20%68%72%65%66%3d%22%6d%61%69%6c%74%6f%3a%6d%65%40%64%6f%6d%61%69%6e%2e%63%6f%6d%22%3e%4d%79%20%65%6d%61%69%6c%3c%2f%61%3e%27%29%3b'))</script>", mail_to("me@domain.com", "My email", :encode => "javascript", :replace_at => "(at)", :replace_dot => "(dot)") 193 207 end 194 195 def test_link_with_nil_html_options196 assert_dom_equal "<a href=\"http://www.example.com\">Hello</a>", link_to("Hello", {:action => 'myaction'}, nil)197 end198 208 end