diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2010-04-11 15:23:30 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2010-04-11 15:23:30 +0000 |
commit | eb55efd604cc282e28c69dd9eb7569683af991a4 (patch) | |
tree | 703c26857d1d880d6fbc3c9912c2099d52b75ac5 | |
parent | 390eb7849ca9c5578173656b8345b641f59fda44 (diff) | |
download | redmine-eb55efd604cc282e28c69dd9eb7569683af991a4.tar.gz redmine-eb55efd604cc282e28c69dd9eb7569683af991a4.zip |
Merged r3612 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3661 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | lib/redcloth3.rb | 2 | ||||
-rw-r--r-- | lib/redmine/wiki_formatting/textile/formatter.rb | 6 | ||||
-rw-r--r-- | 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}<a class="external" href="#{proto=="www."?"http://www.":proto}#{url}">#{proto + url}</a>#{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(/<a\b[^>]*>(.*)(#{Regexp.escape(mail)})(.*)<\/a>/) mail else - %{<a href="mailto:#{mail}" class="email">#{mail}</a>} + 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' => '<a class="external" href="sftp://foo.bar">sftp://foo.bar</a>', # two exclamation marks 'http://example.net/path!602815048C7B5C20!302.html' => '<a class="external" href="http://example.net/path!602815048C7B5C20!302.html">http://example.net/path!602815048C7B5C20!302.html</a>', + # escaping + 'http://foo"bar' => '<a class="external" href="http://foo"bar">http://foo"bar</a>', } to_test.each { |text, result| assert_equal "<p>#{result}</p>", textilizable(text) } end def test_auto_mailto - assert_equal '<p><a href="mailto:test@foo.bar" class="email">test@foo.bar</a></p>', + assert_equal '<p><a class="email" href="mailto:test@foo.bar">test@foo.bar</a></p>', textilizable('test@foo.bar') end @@ -129,6 +131,8 @@ RAW "\"system administrator\":mailto:sysadmin@example.com?subject=redmine%20permissions" => "<a href=\"mailto:sysadmin@example.com?subject=redmine%20permissions\">system administrator</a>", # two exclamation marks '"a link":http://example.net/path!602815048C7B5C20!302.html' => '<a href="http://example.net/path!602815048C7B5C20!302.html" class="external">a link</a>', + # escaping + '"test":http://foo"bar' => '<a href="http://foo"bar" class="external">test</a>', } to_test.each { |text, result| assert_equal "<p>#{result}</p>", textilizable(text) } end |