Add ability to view previous edits of a status in admin UI (#19462)
* Add ability to view previous edits of a status in admin UI * Change moderator access to posts to be controlled by a separate policy
This commit is contained in:
8
app/views/admin/reports/_media_attachments.html.haml
Normal file
8
app/views/admin/reports/_media_attachments.html.haml
Normal file
@ -0,0 +1,8 @@
|
||||
- if status.ordered_media_attachments.first.video?
|
||||
- video = status.ordered_media_attachments.first
|
||||
= react_component :video, src: video.file.url(:original), preview: video.file.url(:small), frameRate: video.file.meta.dig('original', 'frame_rate'), blurhash: video.blurhash, sensitive: status.sensitive?, visible: false, width: 610, height: 343, inline: true, alt: video.description, media: [ActiveModelSerializers::SerializableResource.new(video, serializer: REST::MediaAttachmentSerializer)].as_json
|
||||
- elsif status.ordered_media_attachments.first.audio?
|
||||
- audio = status.ordered_media_attachments.first
|
||||
= react_component :audio, src: audio.file.url(:original), height: 110, alt: audio.description, duration: audio.file.meta.dig(:original, :duration)
|
||||
- else
|
||||
= react_component :media_gallery, height: 343, sensitive: status.sensitive?, visible: false, media: status.ordered_media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json }
|
@ -12,14 +12,7 @@
|
||||
= prerender_custom_emojis(status_content_format(status.proper), status.proper.emojis)
|
||||
|
||||
- unless status.proper.ordered_media_attachments.empty?
|
||||
- if status.proper.ordered_media_attachments.first.video?
|
||||
- video = status.proper.ordered_media_attachments.first
|
||||
= react_component :video, src: video.file.url(:original), preview: video.file.url(:small), frameRate: video.file.meta.dig('original', 'frame_rate'), blurhash: video.blurhash, sensitive: status.proper.sensitive?, visible: false, width: 610, height: 343, inline: true, alt: video.description, media: [ActiveModelSerializers::SerializableResource.new(video, serializer: REST::MediaAttachmentSerializer)].as_json
|
||||
- elsif status.proper.ordered_media_attachments.first.audio?
|
||||
- audio = status.proper.ordered_media_attachments.first
|
||||
= react_component :audio, src: audio.file.url(:original), height: 110, alt: audio.description, duration: audio.file.meta.dig(:original, :duration)
|
||||
- else
|
||||
= react_component :media_gallery, height: 343, sensitive: status.proper.sensitive?, visible: false, media: status.proper.ordered_media_attachments.map { |a| ActiveModelSerializers::SerializableResource.new(a, serializer: REST::MediaAttachmentSerializer).as_json }
|
||||
= render partial: 'admin/reports/media_attachments', locals: { status: status.proper }
|
||||
|
||||
.detailed-status__meta
|
||||
- if status.application
|
||||
@ -29,7 +22,7 @@
|
||||
%time.formatted{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at)
|
||||
- if status.edited?
|
||||
·
|
||||
= t('statuses.edited_at_html', date: content_tag(:time, l(status.edited_at), datetime: status.edited_at.iso8601, title: l(status.edited_at), class: 'formatted'))
|
||||
= link_to t('statuses.edited_at_html', date: content_tag(:time, l(status.edited_at), datetime: status.edited_at.iso8601, title: l(status.edited_at), class: 'formatted')), admin_account_status_path(status.account_id, status), class: 'detailed-status__datetime'
|
||||
- if status.discarded?
|
||||
·
|
||||
%span.negative-hint= t('admin.statuses.deleted')
|
||||
|
20
app/views/admin/status_edits/_status_edit.html.haml
Normal file
20
app/views/admin/status_edits/_status_edit.html.haml
Normal file
@ -0,0 +1,20 @@
|
||||
.status
|
||||
.status__content><
|
||||
- if status_edit.spoiler_text.blank?
|
||||
= prerender_custom_emojis(status_content_format(status_edit), status_edit.emojis)
|
||||
- else
|
||||
%details<
|
||||
%summary><
|
||||
%strong> Content warning: #{prerender_custom_emojis(h(status_edit.spoiler_text), status_edit.emojis)}
|
||||
= prerender_custom_emojis(status_content_format(status_edit), status_edit.emojis)
|
||||
|
||||
- unless status_edit.ordered_media_attachments.empty?
|
||||
= render partial: 'admin/reports/media_attachments', locals: { status: status_edit }
|
||||
|
||||
.detailed-status__meta
|
||||
%time.formatted{ datetime: status_edit.created_at.iso8601, title: l(status_edit.created_at) }= l(status_edit.created_at)
|
||||
|
||||
- if status_edit.sensitive?
|
||||
·
|
||||
= fa_icon('eye-slash fw')
|
||||
= t('stream_entries.sensitive_content')
|
64
app/views/admin/statuses/show.html.haml
Normal file
64
app/views/admin/statuses/show.html.haml
Normal file
@ -0,0 +1,64 @@
|
||||
- content_for :header_tags do
|
||||
= javascript_pack_tag 'admin', async: true, crossorigin: 'anonymous'
|
||||
|
||||
- content_for :page_title do
|
||||
= t('statuses.title', name: display_name(@account), quote: truncate(@status.spoiler_text.presence || @status.text, length: 50, omission: '…', escape: false))
|
||||
|
||||
- content_for :heading_actions do
|
||||
= link_to t('admin.statuses.open'), ActivityPub::TagManager.instance.url_for(@status), class: 'button', target: '_blank'
|
||||
|
||||
%h3= t('admin.statuses.metadata')
|
||||
|
||||
.table-wrapper
|
||||
%table.table.horizontal-table
|
||||
%tbody
|
||||
%tr
|
||||
%th= t('admin.statuses.account')
|
||||
%td= admin_account_link_to @status.account
|
||||
- if @status.reply?
|
||||
%tr
|
||||
%th= t('admin.statuses.in_reply_to')
|
||||
%td= admin_account_link_to @status.in_reply_to_account, path: admin_account_status_path(@status.thread.account_id, @status.in_reply_to_id)
|
||||
%tr
|
||||
%th= t('admin.statuses.application')
|
||||
%td= @status.application&.name
|
||||
%tr
|
||||
%th= t('admin.statuses.language')
|
||||
%td= standard_locale_name(@status.language)
|
||||
%tr
|
||||
%th= t('admin.statuses.visibility')
|
||||
%td= t("statuses.visibilities.#{@status.visibility}")
|
||||
- if @status.trend
|
||||
%tr
|
||||
%th= t('admin.statuses.trending')
|
||||
%td
|
||||
- if @status.trend.allowed?
|
||||
%abbr{ title: t('admin.trends.tags.current_score', score: @status.trend.score) }= t('admin.trends.tags.trending_rank', rank: @status.trend.rank)
|
||||
- elsif @status.trend.requires_review?
|
||||
= t('admin.trends.pending_review')
|
||||
- else
|
||||
= t('admin.trends.not_allowed_to_trend')
|
||||
%tr
|
||||
%th= t('admin.statuses.reblogs')
|
||||
%td= friendly_number_to_human @status.reblogs_count
|
||||
%tr
|
||||
%th= t('admin.statuses.favourites')
|
||||
%td= friendly_number_to_human @status.favourites_count
|
||||
|
||||
%hr.spacer/
|
||||
|
||||
%h3= t('admin.statuses.history')
|
||||
|
||||
%ol.history
|
||||
- @status.edits.includes(:account, status: [:account]).each.with_index do |status_edit, i|
|
||||
%li
|
||||
.history__entry
|
||||
%h5
|
||||
- if i.zero?
|
||||
= t('admin.statuses.original_status')
|
||||
- else
|
||||
= t('admin.statuses.status_changed')
|
||||
·
|
||||
%time.formatted{ datetime: status_edit.created_at.iso8601, title: l(status_edit.created_at) }= l(status_edit.created_at)
|
||||
|
||||
= render status_edit
|
Reference in New Issue
Block a user