]> git.openstreetmap.org Git - rails.git/commitdiff
Merge remote-tracking branch 'upstream/pull/4915'
authorTom Hughes <tom@compton.nu>
Tue, 25 Jun 2024 16:35:26 +0000 (17:35 +0100)
committerTom Hughes <tom@compton.nu>
Tue, 25 Jun 2024 16:35:26 +0000 (17:35 +0100)
app/helpers/browse_tags_helper.rb
test/helpers/browse_tags_helper_test.rb

index 867fe1273c282f2ad20f391cd204ec38dcc0bb0e..bb79d9eaf156ecfb2154ffbfd5021578936ea233 100644 (file)
@@ -116,9 +116,11 @@ module BrowseTagsHelper
   end
 
   def wikimedia_commons_link(key, value)
-    if key == "wikimedia_commons" && value =~ /^(?:file|category):/i
+    if key == "wikimedia_commons" && value =~ /^(file|category):([^#]+)/i
+      namespace = Regexp.last_match(1)
+      title = Regexp.last_match(2)
       return {
-        :url => "//commons.wikimedia.org/wiki/#{value}?uselang=#{I18n.locale}",
+        :url => "//commons.wikimedia.org/wiki/#{namespace}:#{u title}?uselang=#{I18n.locale}",
         :title => value
       }
     end
index 9bd11f052d46d56256e4f050e6efb36b3104f08b..990aed5e437e0b31ea6843c35670cedfec1eb792 100644 (file)
@@ -245,6 +245,14 @@ class BrowseTagsHelperTest < ActionView::TestCase
     assert_equal "//commons.wikimedia.org/wiki/Category:Test_Category?uselang=en", link[:url]
     assert_equal "Category:Test_Category", link[:title]
 
+    link = wikimedia_commons_link("wikimedia_commons", "Category:What If? (Bonn)")
+    assert_equal "//commons.wikimedia.org/wiki/Category:What%20If%3F%20%28Bonn%29?uselang=en", link[:url]
+    assert_equal "Category:What If? (Bonn)", link[:title]
+
+    link = wikimedia_commons_link("wikimedia_commons", "File:Corsica-vizzavona-abri-southwell.jpg#mediaviewer/File:Corsica-vizzavona-abri-southwell.jpg")
+    assert_equal "//commons.wikimedia.org/wiki/File:Corsica-vizzavona-abri-southwell.jpg?uselang=en", link[:url]
+    assert_equal "File:Corsica-vizzavona-abri-southwell.jpg#mediaviewer/File:Corsica-vizzavona-abri-southwell.jpg", link[:title]
+
     I18n.with_locale "pt-BR" do
       link = wikimedia_commons_link("wikimedia_commons", "File:Test.jpg")
       assert_equal "//commons.wikimedia.org/wiki/File:Test.jpg?uselang=pt-BR", link[:url]