From eb55efd604cc282e28c69dd9eb7569683af991a4 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sun, 11 Apr 2010 15:23:30 +0000 Subject: Merged r3612 from trunk. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3661 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- lib/redcloth3.rb | 2 +- lib/redmine/wiki_formatting/textile/formatter.rb | 6 ++++-- test/unit/helpers/application_helper_test.rb | 6 +++++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/redcloth3.rb b/lib/redcloth3.rb index 79dd0b6bb..9ff210b69 100644 --- a/lib/redcloth3.rb +++ b/lib/redcloth3.rb @@ -818,7 +818,7 @@ class RedCloth3 < String post = ")"+post # add closing parenth to post end atts = pba( atts ) - atts = " href=\"#{ url }#{ slash }\"#{ atts }" + atts = " href=\"#{ htmlesc url }#{ slash }\"#{ atts }" atts << " title=\"#{ htmlesc title }\"" if title atts = shelve( atts ) if atts diff --git a/lib/redmine/wiki_formatting/textile/formatter.rb b/lib/redmine/wiki_formatting/textile/formatter.rb index 7e20c7bfc..70ddb13d7 100644 --- a/lib/redmine/wiki_formatting/textile/formatter.rb +++ b/lib/redmine/wiki_formatting/textile/formatter.rb @@ -22,6 +22,7 @@ module Redmine module WikiFormatting module Textile class Formatter < RedCloth3 + include ActionView::Helpers::TagHelper # auto_link rule after textile rules so that it doesn't break !image_url! tags RULES = [:textile, :block_markdown_rule, :inline_auto_link, :inline_auto_mailto, :inline_toc, :inline_macros] @@ -162,7 +163,8 @@ module Redmine url=url[0..-2] # discard closing parenth from url post = ")"+post # add closing parenth to post end - %(#{leading}#{proto + url}#{post}) + tag = content_tag('a', proto + url, :href => "#{proto=="www."?"http://www.":proto}#{url}", :class => 'external') + %(#{leading}#{tag}#{post}) end end end @@ -174,7 +176,7 @@ module Redmine if text.match(/]*>(.*)(#{Regexp.escape(mail)})(.*)<\/a>/) mail else - %{} + content_tag('a', mail, :href => "mailto:#{mail}", :class => "email") end end end diff --git a/test/unit/helpers/application_helper_test.rb b/test/unit/helpers/application_helper_test.rb index 8e30192d7..a15b51807 100644 --- a/test/unit/helpers/application_helper_test.rb +++ b/test/unit/helpers/application_helper_test.rb @@ -59,12 +59,14 @@ class ApplicationHelperTest < HelperTestCase 'sftp://foo.bar' => 'sftp://foo.bar', # two exclamation marks 'http://example.net/path!602815048C7B5C20!302.html' => 'http://example.net/path!602815048C7B5C20!302.html', + # escaping + 'http://foo"bar' => 'http://foo"bar', } to_test.each { |text, result| assert_equal "

#{result}

", textilizable(text) } end def test_auto_mailto - assert_equal '

', + assert_equal '

', textilizable('test@foo.bar') end @@ -129,6 +131,8 @@ RAW "\"system administrator\":mailto:sysadmin@example.com?subject=redmine%20permissions" => "system administrator", # two exclamation marks '"a link":http://example.net/path!602815048C7B5C20!302.html' => 'a link', + # escaping + '"test":http://foo"bar' => 'test', } to_test.each { |text, result| assert_equal "

#{result}

", textilizable(text) } end -- cgit v1.2.3