diff --git a/app/helpers/browse_helper.rb b/app/helpers/browse_helper.rb index 10ff38d92de..3b4f7df9af8 100644 --- a/app/helpers/browse_helper.rb +++ b/app/helpers/browse_helper.rb @@ -1,6 +1,8 @@ # frozen_string_literal: true module BrowseHelper + include BrowseTagsHelper + def element_icon(type, object) selected_icon_data = { :filename => "#{type}.svg", :priority => 1 } @@ -72,6 +74,18 @@ def link_follow(object) "nofollow" if object.tags.empty? end + def browse_tag_value_cell(tag) + content_tag :td, + format_value(tag[0], tag[1]), + :class => "py-1 border-secondary-subtle border-start", + :dir => "auto", + :lang => tag_language(tag[0]) + end + + def tag_language(key) + key[/\Aname:([a-z]{2,3}(?:-[A-Za-z0-9]+)*)\z/, 1] + end + private def feature_name(tags) diff --git a/app/views/browse/_tag.html.erb b/app/views/browse/_tag.html.erb index 145d7e2fe73..6be071c5630 100644 --- a/app/views/browse/_tag.html.erb +++ b/app/views/browse/_tag.html.erb @@ -1,4 +1,7 @@ - <%= format_key(tag[0]) %> - <%= format_value(tag[0], tag[1]) %> + + <%= format_key(tag[0]) %> + + + <%= browse_tag_value_cell(tag) %> diff --git a/test/controllers/api/changesets/uploads_controller_test.rb b/test/controllers/api/changesets/uploads_controller_test.rb index efa3ec224d1..256e5db95ef 100644 --- a/test/controllers/api/changesets/uploads_controller_test.rb +++ b/test/controllers/api/changesets/uploads_controller_test.rb @@ -216,9 +216,14 @@ def test_upload_race_condition threads = Array.new(concurrency_level) do Thread.new do - post path, :params => diff, :headers => auth_header + ActiveRecord::Base.connection_pool.with_connection do + open_session do |sess| + sess.post path, :params => diff, :headers => auth_header + end + end end end + threads.each(&:join) changeset.reload diff --git a/test/helpers/browse_helper_test.rb b/test/helpers/browse_helper_test.rb index a04cad21f1a..331358e3aba 100644 --- a/test/helpers/browse_helper_test.rb +++ b/test/helpers/browse_helper_test.rb @@ -109,6 +109,22 @@ def test_element_icon end end + def test_lang_attribute_for_localized_name_tags + tag = ["name:pt", "NĂ³ teste"] + + html = browse_tag_value_cell(tag) + + assert_match(/lang="pt"/, html) + end + + def test_non_language_name_tags_do_not_get_lang_attribute + tag = ["name:etymology", "Origin"] + + html = browse_tag_value_cell(tag) + + assert_no_match(/lang="/, html) + end + private def add_old_tags_selection(old_node)