From 18734786a1845f6be18e6a52712a6a914638fb91 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jo=C3=A3o=20G=2E=20Packer?= Date: Thu, 27 Feb 2014 22:30:30 -0300 Subject: [PATCH] Fixed wikipedia link reference to specific sections When creating a wikipedia link from a tag, the function is (correctly) appending "?userlang=#{I18N.lang}" to the URL, but doing this breaks the reference to a specific section of a wikipedia article (if there is any). For example, if the tag is "wikipedia=Article#Section", the function would create a link to "../Article#Section?uselang=xx", and then the browser wouldn't be able to correctly find the section. The correct link result should be "../Article?uselang=xx#Section". This commit fixes this by verifying if there is a reference to a specific section of the article, and then putting "?uselang=#{I18N.lang}" between the article's name and the section name. --- app/helpers/browse_helper.rb | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/app/helpers/browse_helper.rb b/app/helpers/browse_helper.rb index cf13c2795..70f724cca 100644 --- a/app/helpers/browse_helper.rb +++ b/app/helpers/browse_helper.rb @@ -114,16 +114,25 @@ private lang = 'en' end elsif key =~ /^wikipedia:(\S+)$/ - # Language is in the key, so assume value is a simple title + # Language is in the key, so assume value is the title lang = $1 else # Not a wikipedia key! return nil end + if value =~ /^([^#]*)(#.*)/ then + # Contains a reference to a section of the wikipedia article + # Must break it up to correctly build the url + value = $1 + section = $2 + else + section = "" + end + return { - :url => "http://#{lang}.wikipedia.org/wiki/#{value}?uselang=#{I18n.locale}", - :title => value + :url => "http://#{lang}.wikipedia.org/wiki/#{value}?uselang=#{I18n.locale}#{section}", + :title => value + section } end end -- 2.39.5