FIX: Display post updated date in non-JS view for crawler

approved

#1

FIX: Display post updated date in non-JS view for crawler

diff --git a/app/views/topics/show.html.erb b/app/views/topics/show.html.erb
index 456135d..909eacd 100644
--- a/app/views/topics/show.html.erb
+++ b/app/views/topics/show.html.erb
@@ -54,8 +54,18 @@
           %>
             <%= t("js.action_codes.#{post.action_code}", when: "", who: who_username).html_safe %>
           <% end %>
-          <time datetime='<%= post.created_at.to_formatted_s(:iso8601) %>' itemprop='datePublished'>
-            <%= post.created_at %>
+          <%
+            if post.updated_at > post.created_at
+              display_time, display_time_prop = post.updated_at, "dateModified"
+              %>
+              <meta itemprop='datePublished' content='<%= post.created_at.to_formatted_s(:iso8601) %>'>
+              <%
+            else
+              display_time, display_time_prop = post.created_at, "datePublished"
+            end
+          %>
+          <time datetime='<%= display_time.to_formatted_s(:iso8601) %>' itemprop='<%= display_time_prop %>'>
+            <%= display_time %>
           </time>
         </span>
         <span itemprop='position'>#<%= post.post_number %></span>

GitHub sha: 2c12336c


#2

This commit has been mentioned on Discourse Meta. There might be relevant details there:


#3

This looks very entangled. I think a little repetition is better for reading comprehension.

What about something like this?

<% if post.updated_at > post.created_at %>
  <meta itemprop='datePublished' content='<%= post.created_at.to_formatted_s(:iso8601) %>'>
  <time itemprop='dateModified' datetime='<%= post.updated_at.to_formatted_s(:iso8601) %>'>
    <%= post.updated_at %>
  </time>
<% else %>
  <time itemprop='datePublished' datetime='<%= post.created_at.to_formatted_s(:iso8601) %>'>
    <%= post.created_at %>
  </time>
<% end %>

#4

It’s updated as per the commit below


Approved #5