Improvements to toots display in admin view (#7452)
* Distinguish boosts from original statuses in the admin panel (fixes #7449) * Show the “show more” button in admin view to make CWs clearer (fixes #7451) * Make content warnings swagpull/481/head^2
parent
7467361d70
commit
0f2fbf7d05
|
@ -10,10 +10,16 @@ module Admin::AccountModerationNotesHelper
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def admin_account_inline_link_to(account)
|
||||||
|
link_to admin_account_path(account.id), class: name_tag_classes(account, true) do
|
||||||
|
content_tag(:span, account.acct, class: 'username')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
def name_tag_classes(account)
|
def name_tag_classes(account, inline = false)
|
||||||
classes = ['name-tag']
|
classes = [inline ? 'inline-name-tag' : 'name-tag']
|
||||||
classes << 'suspended' if account.suspended?
|
classes << 'suspended' if account.suspended?
|
||||||
classes.join(' ')
|
classes.join(' ')
|
||||||
end
|
end
|
||||||
|
|
|
@ -484,19 +484,12 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
a.name-tag,
|
a.name-tag,
|
||||||
.name-tag {
|
.name-tag,
|
||||||
display: flex;
|
a.inline-name-tag,
|
||||||
align-items: center;
|
.inline-name-tag {
|
||||||
text-decoration: none;
|
text-decoration: none;
|
||||||
color: $secondary-text-color;
|
color: $secondary-text-color;
|
||||||
|
|
||||||
.avatar {
|
|
||||||
display: block;
|
|
||||||
margin: 0;
|
|
||||||
margin-right: 5px;
|
|
||||||
border-radius: 50%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.username {
|
.username {
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
|
@ -514,6 +507,26 @@ a.name-tag,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
a.name-tag,
|
||||||
|
.name-tag {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.avatar {
|
||||||
|
display: block;
|
||||||
|
margin: 0;
|
||||||
|
margin-right: 5px;
|
||||||
|
border-radius: 50%;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.suspended {
|
||||||
|
.avatar {
|
||||||
|
filter: grayscale(100%);
|
||||||
|
opacity: 0.8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
.speech-bubble {
|
.speech-bubble {
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
border-left: 4px solid $ui-highlight-color;
|
border-left: 4px solid $ui-highlight-color;
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
@keyframes Swag {
|
||||||
|
0% { background-position: 0% 0%; }
|
||||||
|
50% { background-position: 100% 0%; }
|
||||||
|
100% { background-position: 200% 0%; }
|
||||||
|
}
|
||||||
|
|
||||||
.table {
|
.table {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
max-width: 100%;
|
max-width: 100%;
|
||||||
|
@ -187,6 +193,11 @@ a.table-action-link {
|
||||||
|
|
||||||
strong {
|
strong {
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
|
background: linear-gradient(to right, orange , yellow, green, cyan, blue, violet,orange , yellow, green, cyan, blue, violet);
|
||||||
|
background-size: 200% 100%;
|
||||||
|
background-clip: text;
|
||||||
|
color: transparent;
|
||||||
|
animation: Swag 2s linear 0s infinite;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,26 +3,30 @@
|
||||||
= f.check_box :status_ids, { multiple: true, include_hidden: false }, status.id
|
= f.check_box :status_ids, { multiple: true, include_hidden: false }, status.id
|
||||||
.batch-table__row__content
|
.batch-table__row__content
|
||||||
.status__content><
|
.status__content><
|
||||||
- unless status.spoiler_text.blank?
|
- unless status.proper.spoiler_text.blank?
|
||||||
%p><
|
%p><
|
||||||
%strong= Formatter.instance.format_spoiler(status)
|
%strong> Content warning: #{Formatter.instance.format_spoiler(status.proper)}
|
||||||
|
|
||||||
= Formatter.instance.format(status, custom_emojify: true)
|
= Formatter.instance.format(status.proper, custom_emojify: true)
|
||||||
|
|
||||||
- unless status.media_attachments.empty?
|
- unless status.proper.media_attachments.empty?
|
||||||
- if status.media_attachments.first.video?
|
- if status.proper.media_attachments.first.video?
|
||||||
- video = status.media_attachments.first
|
- video = status.proper.media_attachments.first
|
||||||
= react_component :video, src: video.file.url(:original), preview: video.file.url(:small), sensitive: status.sensitive? && !current_account&.user&.setting_display_sensitive_media, width: 610, height: 343, inline: true
|
= react_component :video, src: video.file.url(:original), preview: video.file.url(:small), sensitive: status.proper.sensitive? && !current_account&.user&.setting_display_sensitive_media, width: 610, height: 343, inline: true
|
||||||
- else
|
- else
|
||||||
= react_component :media_gallery, height: 343, sensitive: status.sensitive? && !current_account&.user&.setting_display_sensitive_media, 'autoPlayGif': current_account&.user&.setting_auto_play_gif, media: status.media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json }
|
= react_component :media_gallery, height: 343, sensitive: status.proper.sensitive? && !current_account&.user&.setting_display_sensitive_media, 'autoPlayGif': current_account&.user&.setting_auto_play_gif, media: status.proper.media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json }
|
||||||
|
|
||||||
.detailed-status__meta
|
.detailed-status__meta
|
||||||
= link_to TagManager.instance.url_for(status), class: 'detailed-status__datetime', target: stream_link_target, rel: 'noopener' do
|
= link_to TagManager.instance.url_for(status), class: 'detailed-status__datetime', target: stream_link_target, rel: 'noopener' do
|
||||||
%time.formatted{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at)
|
%time.formatted{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at)
|
||||||
·
|
·
|
||||||
|
- if status.reblog?
|
||||||
|
= fa_icon('retweet fw')
|
||||||
|
= t('statuses.boosted_from_html', acct_link: admin_account_inline_link_to(status.proper.account))
|
||||||
|
- else
|
||||||
= fa_visibility_icon(status)
|
= fa_visibility_icon(status)
|
||||||
= t("statuses.visibilities.#{status.visibility}")
|
= t("statuses.visibilities.#{status.visibility}")
|
||||||
- if status.sensitive?
|
- if status.proper.sensitive?
|
||||||
·
|
·
|
||||||
= fa_icon('eye-slash fw')
|
= fa_icon('eye-slash fw')
|
||||||
= t('stream_entries.sensitive_content')
|
= t('stream_entries.sensitive_content')
|
||||||
|
|
|
@ -682,6 +682,7 @@ en:
|
||||||
video:
|
video:
|
||||||
one: "%{count} video"
|
one: "%{count} video"
|
||||||
other: "%{count} videos"
|
other: "%{count} videos"
|
||||||
|
boosted_from_html: Boosted from %{acct_link}
|
||||||
content_warning: 'Content warning: %{warning}'
|
content_warning: 'Content warning: %{warning}'
|
||||||
disallowed_hashtags:
|
disallowed_hashtags:
|
||||||
one: 'contained a disallowed hashtag: %{tags}'
|
one: 'contained a disallowed hashtag: %{tags}'
|
||||||
|
|
Loading…
Reference in New Issue