Use html 'time' element for friendly date helpers

This provides more structure than just a simple span.
This commit is contained in:
Andy Allan 2023-11-15 17:53:38 +00:00
parent 1ce5d7dec1
commit 24a562f885
4 changed files with 11 additions and 11 deletions

View file

@ -26,11 +26,11 @@ module ApplicationHelper
end end
def friendly_date(date) 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 end
def friendly_date_ago(date) 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 end
def body_class def body_class

View file

@ -57,19 +57,19 @@ class ApplicationHelperTest < ActionView::TestCase
def test_friendly_date def test_friendly_date
date = friendly_date(Time.utc(2014, 3, 5, 18, 58, 23)) date = friendly_date(Time.utc(2014, 3, 5, 18, 58, 23))
assert_match %r{^<span title=" *5 March 2014 at 18:58">.*</span>$}, date assert_match %r{^<time title=" *5 March 2014 at 18:58" datetime="2014-03-05T18:58:23Z">.*</time>$}, date
date = friendly_date(Time.now.utc - 1.hour) date = friendly_date(Time.now.utc - 1.hour)
assert_match %r{^<span title=".*">about 1 hour</span>$}, date assert_match %r{^<time title=".*">about 1 hour</time>$}, date
date = friendly_date(Time.now.utc - 2.days) date = friendly_date(Time.now.utc - 2.days)
assert_match %r{^<span title=".*">2 days</span>$}, date assert_match %r{^<time title=".*">2 days</time>$}, date
date = friendly_date(Time.now.utc - 3.weeks) date = friendly_date(Time.now.utc - 3.weeks)
assert_match %r{^<span title=".*">21 days</span>$}, date assert_match %r{^<time title=".*">21 days</time>$}, date
date = friendly_date(Time.now.utc - 4.months) date = friendly_date(Time.now.utc - 4.months)
assert_match %r{^<span title=".*">4 months</span>$}, date assert_match %r{^<time title=".*">4 months</time>$}, date
end end
def test_body_class; end def test_body_class; end

View file

@ -8,8 +8,8 @@ class NoteHelperTest < ActionView::TestCase
date = Time.utc(2014, 3, 5, 21, 37, 45) date = Time.utc(2014, 3, 5, 21, 37, 45)
user = create(:user) user = create(:user)
assert_match %r{^Created by anonymous <abbr title="Wed, 05 Mar 2014 21:37:45 \+0000"><span title=" 5 March 2014 at 21:37">.* ago</span></abbr>$}, note_event("opened", date, nil) assert_match %r{^Created by anonymous <abbr title="Wed, 05 Mar 2014 21:37:45 \+0000"><time title=" 5 March 2014 at 21:37" datetime="2014-03-05T21:37:45Z">.* ago</time></abbr>$}, note_event("opened", date, nil)
assert_match %r{^Resolved by <a href="/user/#{ERB::Util.u(user.display_name)}">#{user.display_name}</a> <abbr title="Wed, 05 Mar 2014 21:37:45 \+0000"><span title=" 5 March 2014 at 21:37">.* ago</span></abbr>$}, note_event("closed", date, user) assert_match %r{^Resolved by <a href="/user/#{ERB::Util.u(user.display_name)}">#{user.display_name}</a> <abbr title="Wed, 05 Mar 2014 21:37:45 \+0000"><time title=" 5 March 2014 at 21:37" datetime="2014-03-05T21:37:45Z">.* ago</time></abbr>$}, note_event("closed", date, user)
end end
def test_note_author def test_note_author

View file

@ -8,10 +8,10 @@ class UserBlocksHelperTest < ActionView::TestCase
assert_equal "Active until the user logs in.", block_status(block) assert_equal "Active until the user logs in.", block_status(block)
block = create(:user_block, :needs_view, :ends_at => Time.now.utc + 1.hour) block = create(:user_block, :needs_view, :ends_at => Time.now.utc + 1.hour)
assert_match %r{^Ends in <span title=".*">about 1 hour</span> and after the user has logged in\.$}, block_status(block) assert_match %r{^Ends in <time title=".*" datetime=".*">about 1 hour</time> and after the user has logged in\.$}, block_status(block)
block = create(:user_block, :ends_at => Time.now.utc + 1.hour) block = create(:user_block, :ends_at => Time.now.utc + 1.hour)
assert_match %r{^Ends in <span title=".*">about 1 hour</span>\.$}, block_status(block) assert_match %r{^Ends in <time title=".* datetime=".*">about 1 hour</time>\.$}, block_status(block)
end end
def test_block_duration_in_words def test_block_duration_in_words