From: Tom Hughes Date: Wed, 15 Nov 2023 22:30:41 +0000 (+0000) Subject: Merge remote-tracking branch 'upstream/pull/4349' X-Git-Tag: live~439 X-Git-Url: https://git.openstreetmap.org/rails.git/commitdiff_plain/2fcee9625dcd192d0c524f27d9cb182c883e31b4?hp=08b0bfbfdf8e030e79b93fcc123d0df670c8db1b Merge remote-tracking branch 'upstream/pull/4349' --- diff --git a/app/assets/stylesheets/common.scss b/app/assets/stylesheets/common.scss index f91f380b2..1f5d0398e 100644 --- a/app/assets/stylesheets/common.scss +++ b/app/assets/stylesheets/common.scss @@ -47,6 +47,10 @@ small, aside { font-size: 12px; } +time[title] { + text-decoration: underline dotted; +} + #container { position: relative; } .small_icon { diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index 2fc0d808d..17c36bdfe 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -26,11 +26,11 @@ module ApplicationHelper end def friendly_date(date) - tag.span(time_ago_in_words(date), :title => l(date, :format => :friendly)) + tag.time(time_ago_in_words(date), :title => l(date, :format => :friendly), :datetime => date.xmlschema) end def friendly_date_ago(date) - tag.span(time_ago_in_words(date, :scope => :"datetime.distance_in_words_ago"), :title => l(date, :format => :friendly)) + tag.time(time_ago_in_words(date, :scope => :"datetime.distance_in_words_ago"), :title => l(date, :format => :friendly), :datetime => date.xmlschema) end def body_class diff --git a/app/helpers/changesets_helper.rb b/app/helpers/changesets_helper.rb index 9d46de120..3a26c2001 100644 --- a/app/helpers/changesets_helper.rb +++ b/app/helpers/changesets_helper.rb @@ -14,16 +14,18 @@ module ChangesetsHelper action = :created time = time_ago_in_words(changeset.created_at, :scope => :"datetime.distance_in_words_ago") title = l(changeset.created_at) + datetime = changeset.created_at.xmlschema else action = :closed time = time_ago_in_words(changeset.closed_at, :scope => :"datetime.distance_in_words_ago") title = safe_join([t("browse.created"), ": ", l(changeset.created_at), " ".html_safe, t("browse.closed"), ": ", l(changeset.closed_at)]) + datetime = changeset.closed_at.xmlschema end if params.key?(:display_name) - t "browse.#{action}_ago_html", :time_ago => tag.abbr(time, :title => title) + t "browse.#{action}_ago_html", :time_ago => tag.time(time, :title => title, :datetime => datetime) else - t "browse.#{action}_ago_by_html", :time_ago => tag.abbr(time, :title => title), + t "browse.#{action}_ago_by_html", :time_ago => tag.time(time, :title => title, :datetime => datetime), :user => changeset_user_link(changeset) end end diff --git a/app/helpers/note_helper.rb b/app/helpers/note_helper.rb index 42fd089e4..21c8fa51e 100644 --- a/app/helpers/note_helper.rb +++ b/app/helpers/note_helper.rb @@ -4,12 +4,10 @@ module NoteHelper def note_event(event, at, by) if by.nil? t("notes.show.event_#{event}_by_anonymous_html", - :time_ago => tag.abbr(friendly_date_ago(at), - :title => l(at))) + :time_ago => friendly_date_ago(at)) else t("notes.show.event_#{event}_by_html", - :time_ago => tag.abbr(friendly_date_ago(at), - :title => l(at)), + :time_ago => friendly_date_ago(at), :user => note_author(by)) end end @@ -23,9 +21,4 @@ module NoteHelper link_to h(author.display_name), link_options.merge(:controller => "/users", :action => "show", :display_name => author.display_name) end end - - def disappear_in(note) - date = note.freshly_closed_until - tag.span(distance_of_time_in_words(date, Time.now.utc), :title => l(date, :format => :friendly)) - end end diff --git a/app/views/browse/_common_details.html.erb b/app/views/browse/_common_details.html.erb index 9eb6b5bfe..4726799e7 100644 --- a/app/views/browse/_common_details.html.erb +++ b/app/views/browse/_common_details.html.erb @@ -14,8 +14,7 @@

- - <%= time_ago_in_words(trace.timestamp, :scope => :"datetime.distance_in_words_ago") %> - + <%= friendly_date_ago(trace.timestamp) %> <%= t ".by" %> <%= link_to trace.user.display_name, user_path(trace.user) %> <% if !trace.tags.empty? %> <%= t ".in" %> diff --git a/app/views/user_blocks/revoke.html.erb b/app/views/user_blocks/revoke.html.erb index 9a86177fc..eb1cc4cbe 100644 --- a/app/views/user_blocks/revoke.html.erb +++ b/app/views/user_blocks/revoke.html.erb @@ -12,7 +12,7 @@ <% if @user_block.ends_at > Time.now %>

- <%= t(".time_future", :time => distance_of_time_in_words_to_now(@user_block.ends_at)) %> + <%= t(".time_future_html", :time => friendly_date(@user_block.ends_at)) %>

<%= bootstrap_form_for :revoke, :url => { :action => "revoke" } do |f| %> @@ -28,6 +28,6 @@ <% else %>

- <%= t(".past", :time => time_ago_in_words(@user_block.ends_at, :scope => :"datetime.distance_in_words_ago")) %> + <%= t(".past_html", :time => friendly_date_ago(@user_block.ends_at)) %>

<% end %> diff --git a/config/locales/en.yml b/config/locales/en.yml index ce84600d2..1a41dcce8 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -465,6 +465,7 @@ en: contact: km away: "%{count}km away" m away: "%{count}m away" + latest_edit_html: "Latest edit (%{ago}):" popup: your location: "Your location" nearby mapper: "Nearby mapper" @@ -2731,7 +2732,6 @@ en: ct status: "Contributor terms:" ct undecided: Undecided ct declined: Declined - latest edit: "Latest edit (%{ago}):" email address: "Email address:" created from: "Created from:" status: "Status:" @@ -2847,8 +2847,8 @@ en: revoke: title: "Revoking block on %{block_on}" heading_html: "Revoking block on %{block_on} by %{block_by}" - time_future: "This block will end in %{time}." - past: "This block ended %{time} and cannot be revoked now." + time_future_html: "This block will end in %{time}." + past_html: "This block ended %{time} and cannot be revoked now." confirm: "Are you sure you wish to revoke this block?" revoke: "Revoke!" flash: "This block has been revoked." diff --git a/test/helpers/application_helper_test.rb b/test/helpers/application_helper_test.rb index 7cd6bce89..34120e207 100644 --- a/test/helpers/application_helper_test.rb +++ b/test/helpers/application_helper_test.rb @@ -57,19 +57,36 @@ class ApplicationHelperTest < ActionView::TestCase def test_friendly_date date = friendly_date(Time.utc(2014, 3, 5, 18, 58, 23)) - assert_match %r{^.*$}, date + assert_match %r{^$}, date date = friendly_date(Time.now.utc - 1.hour) - assert_match %r{^about 1 hour$}, date + assert_match %r{^$}, date date = friendly_date(Time.now.utc - 2.days) - assert_match %r{^2 days$}, date + assert_match %r{^$}, date date = friendly_date(Time.now.utc - 3.weeks) - assert_match %r{^21 days$}, date + assert_match %r{^$}, date date = friendly_date(Time.now.utc - 4.months) - assert_match %r{^4 months$}, date + assert_match %r{^$}, date + end + + def test_friendly_date_ago + date = friendly_date_ago(Time.utc(2014, 3, 5, 18, 58, 23)) + assert_match %r{^$}, date + + date = friendly_date_ago(Time.now.utc - 1.hour) + assert_match %r{^$}, date + + date = friendly_date_ago(Time.now.utc - 2.days) + assert_match %r{^$}, date + + date = friendly_date_ago(Time.now.utc - 3.weeks) + assert_match %r{^$}, date + + date = friendly_date_ago(Time.now.utc - 4.months) + assert_match %r{^$}, date end def test_body_class; end diff --git a/test/helpers/changesets_helper_test.rb b/test/helpers/changesets_helper_test.rb index f6cfb3c06..067c2b071 100644 --- a/test/helpers/changesets_helper_test.rb +++ b/test/helpers/changesets_helper_test.rb @@ -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 .* by anonymous$}, changeset_details(changeset) + assert_match %r{^Created 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 = %(#{changeset.user.display_name}) - assert_match %r{^Closed .* by #{user_link}$}, changeset_details(changeset) + assert_match %r{^Closed by #{user_link}$}, changeset_details(changeset) end end diff --git a/test/helpers/note_helper_test.rb b/test/helpers/note_helper_test.rb index 37518fb3d..bee1cdc2c 100644 --- a/test/helpers/note_helper_test.rb +++ b/test/helpers/note_helper_test.rb @@ -8,8 +8,8 @@ class NoteHelperTest < ActionView::TestCase date = Time.utc(2014, 3, 5, 21, 37, 45) user = create(:user) - assert_match %r{^Created by anonymous .* ago$}, note_event("opened", date, nil) - assert_match %r{^Resolved by #{user.display_name} .* ago$}, note_event("closed", date, user) + assert_match %r{^Created by anonymous $}, note_event("opened", date, nil) + assert_match %r{^Resolved by #{user.display_name} $}, note_event("closed", date, user) end def test_note_author @@ -21,13 +21,4 @@ class NoteHelperTest < ActionView::TestCase assert_equal "#{user.display_name}", note_author(user) assert_equal "#{user.display_name}", note_author(user, :only_path => false) end - - def test_disappear_in - note_closed_date = Time.utc(2022, 1, 1, 12, 0, 0) - note = create(:note, :closed_at => note_closed_date) - - travel_to note_closed_date + 1.day do - assert_match %r{^6 days$}, disappear_in(note) - end - end end diff --git a/test/helpers/user_blocks_helper_test.rb b/test/helpers/user_blocks_helper_test.rb index 0c2ab42b5..db4fd87a4 100644 --- a/test/helpers/user_blocks_helper_test.rb +++ b/test/helpers/user_blocks_helper_test.rb @@ -8,10 +8,10 @@ class UserBlocksHelperTest < ActionView::TestCase assert_equal "Active until the user logs in.", block_status(block) block = create(:user_block, :needs_view, :ends_at => Time.now.utc + 1.hour) - assert_match %r{^Ends in about 1 hour and after the user has logged in\.$}, block_status(block) + assert_match %r{^Ends in and after the user has logged in\.$}, block_status(block) block = create(:user_block, :ends_at => Time.now.utc + 1.hour) - assert_match %r{^Ends in about 1 hour\.$}, block_status(block) + assert_match %r{^Ends in \.$}, block_status(block) end def test_block_duration_in_words