]> git.openstreetmap.org Git - rails.git/commitdiff
Merge remote-tracking branch 'upstream/pull/3986'
authorTom Hughes <tom@compton.nu>
Wed, 29 Mar 2023 18:25:49 +0000 (19:25 +0100)
committerTom Hughes <tom@compton.nu>
Wed, 29 Mar 2023 18:25:49 +0000 (19:25 +0100)
app/helpers/changesets_helper.rb
app/views/browse/_common_details.html.erb
app/views/browse/changeset.html.erb
app/views/issues/index.html.erb
app/views/site/about.html.erb
config/locales/en.yml
test/helpers/changesets_helper_test.rb

index 5773240ff1d64fbce02d99dc0ac2695c45bf594d..9d46de12009ca89a8e80f71f341a754a4078e82e 100644 (file)
@@ -21,14 +21,10 @@ module ChangesetsHelper
     end
 
     if params.key?(:display_name)
-      t "browse.#{action}_html",
-        :time => time,
-        :title => title
+      t "browse.#{action}_ago_html", :time_ago => tag.abbr(time, :title => title)
     else
-      t "browse.#{action}_by_html",
-        :time => time,
-        :title => title,
-        :user => changeset_user_link(changeset)
+      t "browse.#{action}_ago_by_html", :time_ago => tag.abbr(time, :title => title),
+                                        :user => changeset_user_link(changeset)
     end
   end
 
index 8aa5b64c7b91245f43621598a01262d8e1557650..9eb6b5bfe55988f76d99e1487012cb9c3b619158 100644 (file)
 
 <ul class="list-unstyled">
   <li>
-    <%= t "browse.#{common_details.visible? ? :edited : :deleted}_by_html",
-          :time => time_ago_in_words(common_details.timestamp, :scope => :"datetime.distance_in_words_ago"),
-          :user => changeset_user_link(common_details.changeset),
-          :title => l(common_details.timestamp) %>
+    <%= t "browse.#{common_details.visible? ? :edited : :deleted}_ago_by_html",
+          :time_ago => tag.abbr(time_ago_in_words(common_details.timestamp, :scope => :"datetime.distance_in_words_ago"),
+                                :title => l(common_details.timestamp)),
+          :user => changeset_user_link(common_details.changeset) %>
   </li>
   <li>
     <%= t "browse.in_changeset" %>
index 4045c0b48ccf4ad2088c922f67cae3dc7243f460..3c5ba7de0dd33868d28e5e3ba616f4d595dd5a68 100644 (file)
@@ -38,9 +38,9 @@
             <% if comment.visible %>
               <li id="c<%= comment.id %>">
                 <small class='text-muted'>
-                  <%= t(".commented_by_html",
-                        :when => friendly_date_ago(comment.created_at),
-                        :exact_time => l(comment.created_at),
+                  <%= t(".comment_by_html",
+                        :time_ago => tag.abbr(friendly_date_ago(comment.created_at),
+                                              :title => l(comment.created_at)),
                         :user => link_to(comment.author.display_name, user_path(comment.author))) %>
                   <% if current_user and current_user.moderator? %>
                     — <span class="action-button" data-comment-id="<%= comment.id %>" data-method="POST" data-url="<%= changeset_comment_hide_url(comment.id) %>"><%= t("javascripts.changesets.show.hide_comment") %></span>
@@ -51,9 +51,9 @@
             <% elsif current_user and current_user.moderator? %>
               <li id="c<%= comment.id %>">
                 <small class='text-muted'>
-                  <%= t(".hidden_commented_by_html",
-                        :when => friendly_date_ago(comment.created_at),
-                        :exact_time => l(comment.created_at),
+                  <%= t(".hidden_comment_by_html",
+                        :time_ago => tag.abbr(friendly_date_ago(comment.created_at),
+                                              :title => l(comment.created_at)),
                         :user => link_to(comment.author.display_name, user_path(comment.author))) %>
                   — <span class="action-button text-muted" data-comment-id="<%= comment.id %>" data-method="POST" data-url="<%= changeset_comment_unhide_url(comment.id) %>"><%= t("javascripts.changesets.show.unhide_comment") %></span>
                  </small>
index 0b933653863896a987be963e86540a18c260077b..da00b5fea27a8455fdd1b0951feb26070bff511d 100644 (file)
           <td><%= link_to reportable_title(issue.reportable), reportable_url(issue.reportable) %></td>
           <td><%= link_to issue.reported_user.display_name, user_path(issue.reported_user) if issue.reported_user %></td>
           <td>
+            <% time_ago_tag = tag.abbr(time_ago_in_words(issue.updated_at, :scope => :"datetime.distance_in_words_ago"),
+                                       :title => l(issue.updated_at)) %>
             <% if issue.user_updated %>
-              <%= t ".last_updated_time_user_html", :user => link_to(issue.user_updated.display_name, user_path(issue.user_updated)),
-                                                    :time => time_ago_in_words(issue.updated_at, :scope => :"datetime.distance_in_words_ago"),
-                                                    :title => l(issue.updated_at) %>
+              <%= t ".last_updated_time_ago_user_html", :user => link_to(issue.user_updated.display_name, user_path(issue.user_updated)),
+                                                        :time_ago => time_ago_tag %>
             <% else %>
-              <%= t ".last_updated_time_html", :time => time_ago_in_words(issue.updated_at, :scope => :"datetime.distance_in_words_ago"),
-                                               :title => l(issue.updated_at) %>
+              <%= time_ago_tag %>
             <% end %>
           </td>
         </tr>
index 12d9a06080e4108f1fb8ed5a4061eb6eb53e1bfb..277fb13843da112544d88230d3121ccdbdcd90f6 100644 (file)
@@ -4,7 +4,10 @@
       <div class='row'>
         <div class='col-sm-7 user-image'></div>
         <div class='col-sm-5 px-5 py-3 byosm'>
-          <p class='h5 text-white text-nowrap'><%= t ".copyright_html" %></p>
+          <p class='h5 text-white text-nowrap'>
+            <%= t ".heading_html", :copyright => tag.span(t(".copyright_symbol_html")),
+                                   :br => tag.br %>
+          </p>
         </div>
       </div>
       <div class='row'>
       <% end %>
 
       <%= render :layout => "about_section", :locals => { :icon => "community", :title => "community_driven" } do %>
-        <p><%= t "site.about.community_driven_html", :diary_path => diary_entries_path %></p>
+        <p>
+          <%= t "site.about.community_driven_1_html", :osm_blog_link => link_to(t("site.about.community_driven_osm_blog"),
+                                                                                t("site.about.community_driven_osm_blog_url")),
+                                                      :user_diaries_link => link_to(t("site.about.community_driven_user_diaries"),
+                                                                                    diary_entries_path),
+                                                      :community_blogs_link => link_to(t("site.about.community_driven_community_blogs"),
+                                                                                       t("site.about.community_driven_community_blogs_url")),
+                                                      :osm_foundation_link => link_to(t("site.about.community_driven_osm_foundation"),
+                                                                                      t("site.about.community_driven_osm_foundation_url")) %>
+        </p>
       <% end %>
 
       <%= render :layout => "about_section", :locals => { :id => "open-data", :icon => "open", :title => "open_data" } do %>
-        <p><%= t "site.about.open_data_html", :copyright_path => copyright_path %></p>
+        <p>
+          <%= t "site.about.open_data_1_html", :open_data => tag.i(t("site.about.open_data_open_data")),
+                                               :copyright_license_link => link_to(t("site.about.open_data_copyright_license"),
+                                                                                  copyright_path) %></p>
       <% end %>
 
       <%= render :layout => "about_section", :locals => { :id => "legal", :icon => "legal", :title => "legal" } do %>
-        <p><%= t "site.about.legal_1_html" %></p>
-        <p><%= t "site.about.legal_2_html" %></p>
+        <p>
+          <%= t "site.about.legal_1_1_html", :openstreetmap_foundation_link => link_to(t("site.about.legal_1_1_openstreetmap_foundation"),
+                                                                                       t("site.about.legal_1_1_openstreetmap_foundation_url")),
+                                             :terms_of_use_link => link_to(t("site.about.legal_1_1_terms_of_use"),
+                                                                           t("site.about.legal_1_1_terms_of_use_url")),
+                                             :aup_link => link_to(t("site.about.legal_1_1_aup"),
+                                                                  t("site.about.legal_1_1_aup_url")),
+                                             :privacy_policy_link => link_to(t("site.about.legal_1_1_privacy_policy"),
+                                                                             t("site.about.legal_1_1_privacy_policy_url")) %>
+        </p>
+        <p>
+          <%= t "site.about.legal_2_1_html", :contact_the_osmf_link => link_to(t("site.about.legal_2_1_contact_the_osmf"),
+                                                                               t("site.about.legal_2_1_contact_the_osmf_url")) %>
+        </p>
+        <p>
+          <%= t "site.about.legal_2_2_html", :registered_trademarks_link => link_to(t("site.about.legal_2_2_registered_trademarks"),
+                                                                                    t("site.about.legal_2_2_registered_trademarks_url")) %>
+        </p>
       <% end %>
 
       <%= render :layout => "about_section", :locals => { :id => "partners", :icon => "partners", :title => "partners" } do %>
index ee97ebca2f6911b2fbb1eaa45e49eb1697ad8bac..f431ccde7896b1f05d3225e393457db64b4c3ecf 100644 (file)
@@ -300,12 +300,12 @@ en:
   browse:
     created: "Created"
     closed: "Closed"
-    created_html: "Created <abbr title='%{title}'>%{time}</abbr>"
-    closed_html: "Closed <abbr title='%{title}'>%{time}</abbr>"
-    created_by_html: "Created <abbr title='%{title}'>%{time}</abbr> by %{user}"
-    deleted_by_html: "Deleted <abbr title='%{title}'>%{time}</abbr> by %{user}"
-    edited_by_html: "Edited <abbr title='%{title}'>%{time}</abbr> by %{user}"
-    closed_by_html: "Closed <abbr title='%{title}'>%{time}</abbr> by %{user}"
+    created_ago_html: "Created %{time_ago}"
+    closed_ago_html: "Closed %{time_ago}"
+    created_ago_by_html: "Created %{time_ago} by %{user}"
+    closed_ago_by_html: "Closed %{time_ago} by %{user}"
+    deleted_ago_by_html: "Deleted %{time_ago} by %{user}"
+    edited_ago_by_html: "Edited %{time_ago} by %{user}"
     version: "Version"
     in_changeset: "Changeset"
     anonymous: "anonymous"
@@ -333,8 +333,8 @@ en:
       relation: "Relations (%{count})"
       relation_paginated: "Relations (%{x}-%{y} of %{count})"
       comment: "Comments (%{count})"
-      hidden_commented_by_html: "Hidden comment from %{user} <abbr title='%{exact_time}'>%{when}</abbr>"
-      commented_by_html: "Comment from %{user} <abbr title='%{exact_time}'>%{when}</abbr>"
+      hidden_comment_by_html: "Hidden comment from %{user} %{time_ago}"
+      comment_by_html: "Comment from %{user} %{time_ago}"
       changesetxml: "Changeset XML"
       osmchangexml: "osmChange XML"
       feed:
@@ -1387,8 +1387,7 @@ en:
       status: Status
       reports: Reports
       last_updated: Last Updated
-      last_updated_time_html: "<abbr title='%{title}'>%{time}</abbr>"
-      last_updated_time_user_html: "<abbr title='%{title}'>%{time}</abbr> by %{user}"
+      last_updated_time_ago_user_html: "%{time_ago} by %{user}"
       link_to_reports: View Reports
       reports_count:
         one: "%{count} Report"
@@ -1825,7 +1824,8 @@ en:
   site:
     about:
       next: Next
-      copyright_html: <span>&copy;</span>OpenStreetMap<br>contributors
+      heading_html: "%{copyright}OpenStreetMap %{br} contributors"
+      copyright_symbol_html: "&copy;"
       used_by_html: "%{name} provides map data for thousands of websites, mobile apps, and hardware devices"
       lede_text: |
         OpenStreetMap is built by a community of mappers that contribute and maintain data
@@ -1836,35 +1836,52 @@ en:
         aerial imagery, GPS devices, and low-tech field maps to verify that OSM
         is accurate and up to date.
       community_driven_title: Community Driven
-      community_driven_html: |
+      community_driven_1_html: |
         OpenStreetMap's community is diverse, passionate, and growing every day.
         Our contributors include enthusiast mappers, GIS professionals, engineers
         running the OSM servers, humanitarians mapping disaster-affected areas,
         and many more.
-        To learn more about the community, see the
-        <a href='https://blog.openstreetmap.org'>OpenStreetMap Blog</a>,
-        <a href='%{diary_path}'>user diaries</a>,
-        <a href='https://blogs.openstreetmap.org/'>community blogs</a>, and
-        the <a href='https://www.osmfoundation.org/'>OSM Foundation</a> website.
+        To learn more about the community, see the %{osm_blog_link},
+        %{user_diaries_link}, %{community_blogs_link}, and the
+        %{osm_foundation_link} website.
+      community_driven_osm_blog: OpenStreetMap Blog
+      community_driven_osm_blog_url: https://blog.openstreetmap.org
+      community_driven_user_diaries: user diaries
+      community_driven_community_blogs: community blogs
+      community_driven_community_blogs_url: https://blogs.openstreetmap.org/
+      community_driven_osm_foundation: OSM Foundation
+      community_driven_osm_foundation_url: https://www.osmfoundation.org/
       open_data_title: Open Data
-      open_data_html: |
-        OpenStreetMap is <i>open data</i>: you are free to use it for any purpose
+      open_data_1_html: |
+        OpenStreetMap is %{open_data}: you are free to use it for any purpose
         as long as you credit OpenStreetMap and its contributors. If you alter or
         build upon the data in certain ways, you may distribute the result only
-        under the same licence. See the <a href='%{copyright_path}'>Copyright and
-        License page</a> for details.
+        under the same licence. See the %{copyright_license_link} for details.
+      open_data_open_data: open data
+      open_data_copyright_license: Copyright and License page
       legal_title: Legal
-      legal_1_html: |
+      legal_1_1_html: |
         This site and many other related services are formally operated by the
-        <a href='https://osmfoundation.org/'>OpenStreetMap Foundation</a> (OSMF)
+        %{openstreetmap_foundation_link} (OSMF)
         on behalf of the community. Use of all OSMF operated services is subject
-        to our <a href="https://wiki.osmfoundation.org/wiki/Terms_of_Use">Terms of Use</a>, <a href="https://wiki.openstreetmap.org/wiki/Acceptable_Use_Policy">
-        Acceptable Use Policies</a> and our <a href="https://wiki.osmfoundation.org/wiki/Privacy_Policy">Privacy Policy</a>.
-      legal_2_html: |
-        Please <a href='https://osmfoundation.org/Contact'>contact the OSMF</a>
+        to our %{terms_of_use_link}, %{aup_link} and our %{privacy_policy_link}.
+      legal_1_1_openstreetmap_foundation: OpenStreetMap Foundation
+      legal_1_1_openstreetmap_foundation_url: https://osmfoundation.org/
+      legal_1_1_terms_of_use: Terms of Use
+      legal_1_1_terms_of_use_url: https://wiki.osmfoundation.org/wiki/Terms_of_Use
+      legal_1_1_aup: Acceptable Use Policies
+      legal_1_1_aup_url: https://wiki.openstreetmap.org/wiki/Acceptable_Use_Policy
+      legal_1_1_privacy_policy: Privacy Policy
+      legal_1_1_privacy_policy_url: https://wiki.osmfoundation.org/wiki/Privacy_Policy
+      legal_2_1_html: |
+        Please %{contact_the_osmf_link}
         if you have licensing, copyright or other legal questions.
-        <br>
-        OpenStreetMap, the magnifying glass logo and State of the Map are <a href="https://wiki.osmfoundation.org/wiki/Trademark_Policy">registered trademarks of the OSMF</a>.
+      legal_2_1_contact_the_osmf: contact the OSMF
+      legal_2_1_contact_the_osmf_url: https://osmfoundation.org/Contact
+      legal_2_2_html: |
+        OpenStreetMap, the magnifying glass logo and State of the Map are %{registered_trademarks_link}.
+      legal_2_2_registered_trademarks: registered trademarks of the OSMF
+      legal_2_2_registered_trademarks_url: https://wiki.osmfoundation.org/wiki/Trademark_Policy
       partners_title: Partners
     copyright:
       foreign:
index a25eed6fae2fac1dcad79a769ef655564a0b72ba..f6cfb3c0679a467490926adfa21fcfbc83f0aee1 100644 (file)
@@ -17,11 +17,11 @@ class ChangesetsHelperTest < ActionView::TestCase
     # We need to explicitly reset the closed_at to some point in the future, and avoid the before_save callback
     changeset.update_column(:closed_at, Time.now.utc + 1.day) # rubocop:disable Rails/SkipsModelValidations
 
-    assert_match %r{^Created <abbr title='Mon, 01 Jan 2007 00:00:00 \+0000'>.*</abbr> by anonymous$}, changeset_details(changeset)
+    assert_match %r{^Created <abbr title="Mon, 01 Jan 2007 00:00:00 \+0000">.*</abbr> by anonymous$}, changeset_details(changeset)
 
     changeset = create(:changeset, :created_at => Time.utc(2007, 1, 1, 0, 0, 0), :closed_at => Time.utc(2007, 1, 2, 0, 0, 0))
     user_link = %(<a href="/user/#{ERB::Util.u(changeset.user.display_name)}">#{changeset.user.display_name}</a>)
 
-    assert_match %r{^Closed <abbr title='Created: Mon, 01 Jan 2007 00:00:00 \+0000&#10;Closed: Tue, 02 Jan 2007 00:00:00 \+0000'>.*</abbr> by #{user_link}$}, changeset_details(changeset)
+    assert_match %r{^Closed <abbr title="Created: Mon, 01 Jan 2007 00:00:00 \+0000&#10;Closed: Tue, 02 Jan 2007 00:00:00 \+0000">.*</abbr> by #{user_link}$}, changeset_details(changeset)
   end
 end