From: João G. Packer Date: Fri, 28 Feb 2014 01:30:30 +0000 (-0300) Subject: Fixed wikipedia link reference to specific sections X-Git-Tag: live~4498^2~6 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/18734786a1845f6be18e6a52712a6a914638fb91 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. --- 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