]> git.openstreetmap.org Git - rails.git/blobdiff - app/helpers/browse_helper.rb
Call paging heading helpers from partial
[rails.git] / app / helpers / browse_helper.rb
index 63f48a876ee14653f8d2205674b34d639c073f5a..be32737a4e090e8b750c81ab333871101730e34b 100644 (file)
@@ -1,5 +1,5 @@
 module BrowseHelper
-  def printable_name(object, version = false)
+  def printable_name(object, version: false)
     id = if object.id.is_a?(Array)
            object.id[0]
          else
@@ -11,16 +11,16 @@ module BrowseHelper
     # don't look at object tags if redacted, so as to avoid giving
     # away redacted version tag information.
     unless object.redacted?
-      locale = I18n.locale.to_s
+      available_locales = Locale.list(name_locales(object))
 
-      locale = locale.sub(/-[^-]+/, "") while locale =~ /-[^-]+/ && !object.tags.include?("name:#{I18n.locale}")
+      locale = available_locales.preferred(preferred_languages, :default => nil)
 
       if object.tags.include? "name:#{locale}"
-        name = t "printable_name.with_name_html", :name => content_tag(:bdi, object.tags["name:#{locale}"].to_s), :id => content_tag(:bdi, name)
+        name = t "printable_name.with_name_html", :name => tag.bdi(object.tags["name:#{locale}"].to_s), :id => tag.bdi(name)
       elsif object.tags.include? "name"
-        name = t "printable_name.with_name_html", :name => content_tag(:bdi, object.tags["name"].to_s), :id => content_tag(:bdi, name)
+        name = t "printable_name.with_name_html", :name => tag.bdi(object.tags["name"].to_s), :id => tag.bdi(name)
       elsif object.tags.include? "ref"
-        name = t "printable_name.with_name_html", :name => content_tag(:bdi, object.tags["ref"].to_s), :id => content_tag(:bdi, name)
+        name = t "printable_name.with_name_html", :name => tag.bdi(object.tags["ref"].to_s), :id => tag.bdi(name)
       end
     end
 
@@ -44,7 +44,7 @@ module BrowseHelper
     if object.redacted?
       ""
     else
-      h(icon_tags(object).map { |k, v| k + "=" + v }.to_sentence)
+      h(icon_tags(object).map { |k, v| "#{k}=#{v}" }.to_sentence)
     end
   end
 
@@ -64,6 +64,29 @@ module BrowseHelper
     end
   end
 
+  def sidebar_classic_pagination(pages, page_param)
+    max_width_for_default_padding = 35
+
+    width = 0
+    pagination_items(pages, {}).each do |body|
+      width += 2 # padding width
+      width += body.length
+    end
+    link_classes = ["page-link", { "px-1" => width > max_width_for_default_padding }]
+
+    tag.ul :class => "pagination pagination-sm mb-1 ms-auto" do
+      pagination_items(pages, {}).each do |body, n|
+        linked = !(n.is_a? String)
+        link = if linked
+                 link_to body, url_for(page_param => n), :class => link_classes
+               else
+                 tag.span body, :class => link_classes
+               end
+        concat tag.li link, :class => ["page-item", { n => !linked }]
+      end
+    end
+  end
+
   private
 
   ICON_TAGS = %w[aeroway amenity barrier building highway historic landuse leisure man_made natural railway shop tourism waterway].freeze
@@ -71,4 +94,8 @@ module BrowseHelper
   def icon_tags(object)
     object.tags.find_all { |k, _v| ICON_TAGS.include? k }.sort
   end
+
+  def name_locales(object)
+    object.tags.keys.map { |k| Regexp.last_match(1) if k =~ /^name:(.*)$/ }.flatten
+  end
 end