diff --git a/app/helpers/stream_entries_helper.rb b/app/helpers/stream_entries_helper.rb
index 18ef8b909f..00a01df44d 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 c3f331ff7d..b6d371ed2d 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}@#{account.username}"
+ "#{match.split('@').first}@#{account.username}"
end
end
diff --git a/app/views/accounts/_header.html.haml b/app/views/accounts/_header.html.haml
index 0d43fba304..beee96cd8d 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 466e0dd5ae..e3cc522be2 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 a758d5ccdf..52905ff5e0 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 1333d4d82a..f389a8dfe7 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 088881b11f..f37fb79196 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 }