]> git.openstreetmap.org Git - rails.git/commitdiff
Use the mail_to method to construct a mailto link for browse tag values
authorAndy Allan <git@gravitystorm.co.uk>
Thu, 17 Nov 2022 12:51:55 +0000 (12:51 +0000)
committerAndy Allan <git@gravitystorm.co.uk>
Thu, 17 Nov 2022 12:53:33 +0000 (12:53 +0000)
This is easier than building a mailto link ourselves. Also implement
the missing title tag and write a test for it.

app/helpers/browse_tags_helper.rb
config/locales/en.yml
test/helpers/browse_tags_helper_test.rb

index e7562081dfd0415b2684ec0c0516607b11582a77..0784d03caefabca670e501f9ee0160373fcc0869 100644 (file)
@@ -22,7 +22,7 @@ module BrowseTagsHelper
     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 email = email_link(key, value)
-      link_to(h(email[:email]), email[:url], :title => t("browse.tag_details.email_link", :email => email[:email]))
+      mail_to(email, :title => t("browse.tag_details.email_link", :email => email))
     elsif phones = telephone_links(key, value)
       # similarly, telephone_links() returns an array of phone numbers
       phones = phones.map do |p|
@@ -136,10 +136,7 @@ module BrowseTagsHelper
     # remove any leading and trailing whitespace
     email = value.strip
 
-    if email.match?(URI::MailTo::EMAIL_REGEXP)
-      # add 'mailto:'' prefix
-      return { :email => email, :url => "mailto:#{email}" }
-    end
+    return email if email.match?(URI::MailTo::EMAIL_REGEXP)
 
     nil
   end
index c560ded1c258b3a8d86210dabda76b7ed3cc151e..b2d3065cb62716972287eedfba37e4bc2f6e18f2 100644 (file)
@@ -405,6 +405,7 @@ en:
       wikimedia_commons_link: "The %{page} item on Wikimedia Commons"
       telephone_link: "Call %{phone_number}"
       colour_preview: "Colour %{colour_value} preview"
+      email_link: "Email %{email}"
     note:
       title: "Note: %{id}"
       new_note: "New Note"
index ddd92d5a2edb4612a2786626ec23f27b5ef04ad7..3f36b921092618a45e1ea2625c33d025d4dba46c 100644 (file)
@@ -46,6 +46,9 @@ class BrowseTagsHelperTest < ActionView::TestCase
 
     html = format_value("colour", "#f00")
     assert_dom_equal %(<span class="colour-preview-box" data-colour="#f00" title="Colour #f00 preview"></span>#f00), html
+
+    html = format_value("contact", "foo@example.com")
+    assert_dom_equal "<a title=\"Email foo@example.com\" href=\"mailto:foo@example.com\">foo@example.com</a>", html
   end
 
   def test_wiki_link
@@ -240,29 +243,23 @@ class BrowseTagsHelperTest < ActionView::TestCase
     assert_nil email
 
     email = email_link("email", "x@example.com")
-    assert_equal "x@example.com", email[:email]
-    assert_equal "mailto:x@example.com", email[:url]
+    assert_equal "x@example.com", email
 
     email = email_link("email", "other.email-with-hyphen@example.com")
-    assert_equal "other.email-with-hyphen@example.com", email[:email]
-    assert_equal "mailto:other.email-with-hyphen@example.com", email[:url]
+    assert_equal "other.email-with-hyphen@example.com", email
 
     email = email_link("email", "user.name+tag+sorting@example.com")
-    assert_equal "user.name+tag+sorting@example.com", email[:email]
-    assert_equal "mailto:user.name+tag+sorting@example.com", email[:url]
+    assert_equal "user.name+tag+sorting@example.com", email
 
     email = email_link("email", "dash-in@both-parts.com")
-    assert_equal "dash-in@both-parts.com", email[:email]
-    assert_equal "mailto:dash-in@both-parts.com", email[:url]
+    assert_equal "dash-in@both-parts.com", email
 
     email = email_link("email", "example@s.example")
-    assert_equal "example@s.example", email[:email]
-    assert_equal "mailto:example@s.example", email[:url]
+    assert_equal "example@s.example", email
 
     # Strips whitespace at ends
     email = email_link("email", " test@email.com ")
-    assert_equal "test@email.com", email[:email]
-    assert_equal "mailto:test@email.com", email[:url]
+    assert_equal "test@email.com", email
   end
 
   def test_telephone_links