about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--app/helpers/stream_entries_helper.rb24
-rw-r--r--app/lib/formatter.rb2
-rw-r--r--app/views/accounts/_header.html.haml2
-rw-r--r--app/views/stream_entries/_detailed_status.html.haml9
-rw-r--r--app/views/stream_entries/_simple_status.html.haml8
-rw-r--r--app/views/stream_entries/_status.html.haml16
-rw-r--r--app/views/stream_entries/show.html.haml2
7 files changed, 44 insertions, 19 deletions
diff --git a/app/helpers/stream_entries_helper.rb b/app/helpers/stream_entries_helper.rb
index 18ef8b909..00a01df44 100644
--- a/app/helpers/stream_entries_helper.rb
+++ b/app/helpers/stream_entries_helper.rb
@@ -13,15 +13,29 @@ module StreamEntriesHelper
     "@#{account.acct}#{embedded_view? && account.local? ? "@#{Rails.configuration.x.local_domain}" : ''}"
   end
 
-  def entry_classes(status, is_predecessor, is_successor, include_threads)
+  def style_classes(status, is_predecessor, is_successor, include_threads)
     classes = ['entry']
-    classes << 'entry-reblog u-repost-of h-cite' if status.reblog?
-    classes << 'entry-predecessor u-in-reply-to h-cite' if is_predecessor
-    classes << 'entry-successor u-comment h-cite' if is_successor
-    classes << 'entry-center h-entry' if include_threads
+    classes << 'entry-predecessor' if is_predecessor
+    classes << 'entry-reblog' if status.reblog?
+    classes << 'entry-successor' if is_successor
+    classes << 'entry-center' if include_threads
     classes.join(' ')
   end
 
+  def microformats_classes(status, is_direct_parent, is_direct_child)
+    classes = []
+    classes << 'p-in-reply-to' if is_direct_parent
+    classes << 'p-repost-of' if status.reblog? && is_direct_parent
+    classes << 'p-comment' if is_direct_child
+    classes.join(' ')
+  end
+
+  def microformats_h_class(status, is_predecessor, is_successor, include_threads)
+    return 'h-cite' if is_predecessor || status.reblog || is_successor
+    return 'h-entry' unless include_threads
+    ''
+  end
+
   def rtl?(text)
     return false if text.empty?
 
diff --git a/app/lib/formatter.rb b/app/lib/formatter.rb
index c3f331ff7..b6d371ed2 100644
--- a/app/lib/formatter.rb
+++ b/app/lib/formatter.rb
@@ -95,6 +95,6 @@ class Formatter
   end
 
   def mention_html(match, account)
-    "#{match.split('@').first}<a href=\"#{TagManager.instance.url_for(account)}\" class=\"h-card u-url p-nickname mention\">@<span>#{account.username}</span></a>"
+    "#{match.split('@').first}<span class=\"h-card\"><a href=\"#{TagManager.instance.url_for(account)}\" class=\"u-url mention\">@#{account.username}</a></span>"
   end
 end
diff --git a/app/views/accounts/_header.html.haml b/app/views/accounts/_header.html.haml
index 0d43fba30..beee96cd8 100644
--- a/app/views/accounts/_header.html.haml
+++ b/app/views/accounts/_header.html.haml
@@ -13,7 +13,7 @@
   %h1.name
     %span.p-name.emojify= display_name(@account)
     %small
-      %span.p-nickname= "@#{@account.username}"
+      %span= "@#{@account.username}"
       = fa_icon('lock') if @account.locked?
   .details
     .bio
diff --git a/app/views/stream_entries/_detailed_status.html.haml b/app/views/stream_entries/_detailed_status.html.haml
index 466e0dd5a..e3cc522be 100644
--- a/app/views/stream_entries/_detailed_status.html.haml
+++ b/app/views/stream_entries/_detailed_status.html.haml
@@ -5,14 +5,15 @@
         = image_tag status.account.avatar.url(:original), width: 48, height: 48, alt: '', class: 'u-photo'
     %span.display-name
       %strong.p-name.emojify= display_name(status.account)
-      %span.p-nickname= acct(status.account)
+      %span= acct(status.account)
 
-  .status__content.e-content.p-name.emojify<
+  .status__content.p-name.emojify<
     - if status.spoiler_text?
       %p{ style: 'margin-bottom: 0' }<
-        %span>= "#{status.spoiler_text} "
+        %span.p-summary>= "#{status.spoiler_text} "
         %a.status__content__spoiler-link{ href: '#' }= t('statuses.show_more')
-    %div{ style: "display: #{status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl?(status.content) ? 'rtl' : 'ltr'}" }= Formatter.instance.format(status)
+    %div.e-content{ style: "display: #{status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl?(status.content) ? 'rtl' : 'ltr'}" }= Formatter.instance.format(status)
+
 
   - unless status.media_attachments.empty?
     - if status.media_attachments.first.video?
diff --git a/app/views/stream_entries/_simple_status.html.haml b/app/views/stream_entries/_simple_status.html.haml
index a758d5ccd..52905ff5e 100644
--- a/app/views/stream_entries/_simple_status.html.haml
+++ b/app/views/stream_entries/_simple_status.html.haml
@@ -10,14 +10,14 @@
           = image_tag status.account.avatar(:original), width: 48, height: 48, alt: '', class: 'u-photo'
       %span.display-name
         %strong.p-name.emojify= display_name(status.account)
-        %span.p-nickname= acct(status.account)
+        %span= acct(status.account)
 
-  .status__content.e-content.p-name.emojify<
+  .status__content.p-name.emojify<
     - if status.spoiler_text?
       %p{ style: 'margin-bottom: 0' }<
-        %span>= "#{status.spoiler_text} "
+        %span.p-summary>= "#{status.spoiler_text} "
         %a.status__content__spoiler-link{ href: '#' }= t('statuses.show_more')
-    %div{ style: "display: #{status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl?(status.content) ? 'rtl' : 'ltr'}" }= Formatter.instance.format(status)
+    %div.e-content{ style: "display: #{status.spoiler_text? ? 'none' : 'block'}; direction: #{rtl?(status.content) ? 'rtl' : 'ltr'}" }= Formatter.instance.format(status)
 
   - unless status.media_attachments.empty?
     .status__attachments
diff --git a/app/views/stream_entries/_status.html.haml b/app/views/stream_entries/_status.html.haml
index 1333d4d82..f389a8dfe 100644
--- a/app/views/stream_entries/_status.html.haml
+++ b/app/views/stream_entries/_status.html.haml
@@ -1,12 +1,22 @@
 - include_threads ||= false
 - is_predecessor  ||= false
 - is_successor    ||= false
+- direct_reply_id ||= false
+- parent_id       ||= false
+- is_direct_parent  = direct_reply_id == status.id
+- is_direct_child  = parent_id == status.in_reply_to_id
+- parent_id       ||= false
 - centered        ||= include_threads && !is_predecessor && !is_successor
+- h_class         = microformats_h_class(status, is_predecessor, is_successor, include_threads)
+- style_classes   = style_classes(status, is_predecessor, is_successor, include_threads)
+- mf_classes      = microformats_classes(status, is_direct_parent, is_direct_child)
+- entry_classes   = h_class + ' ' + mf_classes + ' ' + style_classes
 
 - if status.reply? && include_threads
-  = render partial: 'stream_entries/status', collection: @ancestors, as: :status, locals: { is_predecessor: true }
+  = render partial: 'stream_entries/status', collection: @ancestors, as: :status, locals: { is_predecessor: true, direct_reply_id: status.in_reply_to_id}
+
+.entry{ class: entry_classes }
 
-.entry{ class: entry_classes(status, is_predecessor, is_successor, include_threads) }
   - if status.reblog?
     .pre-header
       %div.pre-header__icon
@@ -19,4 +29,4 @@
   = render partial: centered ? 'stream_entries/detailed_status' : 'stream_entries/simple_status', locals: { status: status.proper }
 
 - if include_threads
-  = render partial: 'stream_entries/status', collection: @descendants, as: :status, locals: { is_successor: true }
+  = render partial: 'stream_entries/status', collection: @descendants, as: :status, locals: { is_successor: true, parent_id: status.id}
diff --git a/app/views/stream_entries/show.html.haml b/app/views/stream_entries/show.html.haml
index 088881b11..f37fb7919 100644
--- a/app/views/stream_entries/show.html.haml
+++ b/app/views/stream_entries/show.html.haml
@@ -23,5 +23,5 @@
 - if !user_signed_in? && !Rails.configuration.x.single_user_mode
   = render partial: 'shared/landing_strip', locals: { account: @stream_entry.account }
 
-.activity-stream.activity-stream-headless
+.activity-stream.activity-stream-headless.h-entry
   = render partial: "stream_entries/#{@type}", locals: { @type.to_sym => @stream_entry.activity, include_threads: true }