From d6755356e04026bf98ddb735899873a7c74b58ea Mon Sep 17 00:00:00 2001 From: Tom Hughes Date: Tue, 20 Apr 2010 19:04:12 +0100 Subject: [PATCH] Improve the browse helper code use to generate wiki links --- app/helpers/browse_helper.rb | 49 +++++++++++++++------------------- app/views/browse/_tag.html.erb | 2 +- config/locales/en.yml | 2 +- 3 files changed, 23 insertions(+), 30 deletions(-) diff --git a/app/helpers/browse_helper.rb b/app/helpers/browse_helper.rb index 48dd590a2..6ec3fb591 100644 --- a/app/helpers/browse_helper.rb +++ b/app/helpers/browse_helper.rb @@ -16,41 +16,34 @@ module BrowseHelper return name end - def wiki_link(type, key, tag) - wiki_data = YAML.load_file("#{RAILS_ROOT}/config/wiki-tag-and-key-description.yml") - my_locale = I18n.locale.to_s - - if type == "key" - ret = key - lookup = key + 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 - ret = tag - lookup = key + "=" + tag + h(key) end + end - # Try our native language - has_primary = wiki_data[my_locale][type][lookup] rescue false - if has_primary - ret = wikify(type, key, tag, lookup, wiki_data[my_locale][type][lookup]) + def format_value(key, value) + if url = wiki_link("tag", "#{key}=#{value}") + link_to h(value), url, :title => t('browse.tag_details.wiki_link.tag', :key => key, :value => value) else - # Fall back on English - has_fallback = wiki_data["en"][type][lookup] rescue false - if has_fallback - ret = wikify(type, key, tag, lookup, wiki_data["en"][type][lookup]) - end + linkify h(value) end - - return ret end - def wikify(type, key, tag, text, wiki) - my_locale = I18n.locale - url = "http://wiki.openstreetmap.org/wiki/#{wiki}?uselang=#{my_locale}" - - if type == "key" - return '' + h(text) + '' - else - return '' + h(tag) + '' +private + + def wiki_link(type, lookup) + wiki_data = YAML.load_file("#{RAILS_ROOT}/config/wiki-tag-and-key-description.yml") + locale = I18n.locale.to_s + + if page = wiki_data[locale][type][lookup] rescue nil + url = "http://wiki.openstreetmap.org/wiki/#{page}?uselang=#{locale}" + elsif page = wiki_data["en"][type][lookup] rescue nil + url = "http://wiki.openstreetmap.org/wiki/#{page}?uselang=#{locale}" end + + return url end end diff --git a/app/views/browse/_tag.html.erb b/app/views/browse/_tag.html.erb index 4096873da..2eadad4f2 100644 --- a/app/views/browse/_tag.html.erb +++ b/app/views/browse/_tag.html.erb @@ -1,3 +1,3 @@ - <%= wiki_link("key", h(tag[0]), nil) %> = <%= wiki_link("tag", h(tag[0]), auto_link(h(tag[1]))) %> + <%= format_key(tag[0]) %> = <%= format_value(tag[0], tag[1]) %> diff --git a/config/locales/en.yml b/config/locales/en.yml index 17bae6c57..7b9720fbd 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -234,7 +234,7 @@ en: tag_details: tags: "Tags:" wiki_link: - key: "The wiki description page for the {{key}}=* tag" + key: "The wiki description page for the {{key}} tag" tag: "The wiki description page for the {{key}}={{value}} tag" way_details: nodes: "Nodes:" -- 2.39.5