+ def printable_name(object, version = false)
+ id = if object.id.is_a?(Array)
+ object.id[0]
+ else
+ object.id
+ end
+ name = t "printable_name.with_id", :id => id.to_s
+ name = t "printable_name.with_version", :id => name, :version => object.version.to_s if version
+
+ # 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
+
+ locale = locale.sub(/-[^-]+/, "") while locale =~ /-[^-]+/ && !object.tags.include?("name:#{I18n.locale}")
+
+ 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)
+ 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)
+ 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)
+ end
+ end
+
+ name
+ end
+
+ def link_class(type, object)
+ classes = [type]
+
+ if object.redacted?
+ classes << "deleted"
+ else
+ classes += icon_tags(object).flatten.map { |t| h(t) }
+ classes << "deleted" unless object.visible?
+ end
+
+ classes.join(" ")
+ end
+
+ def link_title(object)
+ if object.redacted?
+ ""
+ else
+ h(icon_tags(object).map { |k, v| k + "=" + v }.to_sentence)
+ end
+ end
+
+ def link_follow(object)
+ "nofollow" if object.tags.empty?
+ end
+
+ def format_key(key)
+ if url = wiki_link("key", key)
+ link_to h(key), url, :title => t("browse.tag_details.wiki_link.key", :key => key)
+ else
+ h(key)
+ end
+ end
+
+ def format_value(key, value)
+ if wp = wikipedia_link(key, value)
+ link_to h(wp[:title]), wp[:url], :title => t("browse.tag_details.wikipedia_link", :page => wp[:title])
+ elsif wdt = wikidata_links(key, value)
+ # IMPORTANT: Note that wikidata_links() returns an array of hashes, unlike for example wikipedia_link(),
+ # which just returns one such hash.
+ wdt = wdt.map do |w|
+ link_to(w[:title], w[:url], :title => t("browse.tag_details.wikidata_link", :page => w[:title].strip))
+ end
+ safe_join(wdt, ";")
+ elsif url = wiki_link("tag", "#{key}=#{value}")
+ link_to h(value), url, :title => t("browse.tag_details.wiki_link.tag", :key => key, :value => value)
+ elsif url = telephone_link(key, value)
+ link_to h(value), url, :title => t("browse.tag_details.telephone_link", :phone_number => value)
+ else
+ linkify h(value)
+ end