From ca213b873f35b6eae8ff13c4d88356f1225eea0f Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Fri, 15 May 2015 15:34:12 +0100 Subject: [PATCH] More improvements to mediawiki fragment escaping It turns out that the PHP urlencode encodes more characters than the ruby URI.encode does by default, so specify our own characters to encode based on http://php.net/manual/en/function.urlencode.php with the extra exclusion of colon, which the mediawiki code reverses after the encoding is done. Fixes #967 --- app/helpers/browse_helper.rb | 2 +- test/helpers/browse_helper_test.rb | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/helpers/browse_helper.rb b/app/helpers/browse_helper.rb index a2d0e440d..5d0a18fd9 100644 --- a/app/helpers/browse_helper.rb +++ b/app/helpers/browse_helper.rb @@ -140,7 +140,7 @@ module BrowseHelper # Must break it up to correctly build the url value = $1 section = "#" + $2 - encoded_section = "#" + URI.encode($2.gsub(" ", "_")).gsub("%3A", ":").gsub("%", ".") + encoded_section = "#" + URI.encode($2.gsub(/ +/, "_"), /[^A-Za-z0-9:_]/).gsub("%", ".") else section = "" encoded_section = "" diff --git a/test/helpers/browse_helper_test.rb b/test/helpers/browse_helper_test.rb index c4f0e8c31..7878d10e0 100644 --- a/test/helpers/browse_helper_test.rb +++ b/test/helpers/browse_helper_test.rb @@ -196,6 +196,10 @@ class BrowseHelperTest < ActionView::TestCase assert_equal "http://de.wikipedia.org/wiki/de:Alte Brücke (Heidelberg)?uselang=en#Br.C3.BCckenaffe", link[:url] assert_equal "de:Alte Brücke (Heidelberg)#Brückenaffe", link[:title] + link = wikipedia_link("wikipedia", "de:Liste der Baudenkmäler in Eichstätt#Brückenstraße 1, Ehemaliges Bauernhaus") + assert_equal "http://de.wikipedia.org/wiki/de:Liste der Baudenkmäler in Eichstätt?uselang=en#Br.C3.BCckenstra.C3.9Fe_1.2C_Ehemaliges_Bauernhaus", link[:url] + assert_equal "de:Liste der Baudenkmäler in Eichstätt#Brückenstraße 1, Ehemaliges Bauernhaus", link[:title] + I18n.locale = "pt-BR" link = wikipedia_link("wikipedia", "zh-classical:Test#Section") -- 2.43.2