mirror of
https://github.com/lunaisnotaboy/mastodon.git
synced 2024-08-31 00:35:23 +00:00
* Add appeals * Add ability to reject appeals and ability to browse pending appeals in admin UI * Add strikes to account page in settings * Various fixes and improvements - Add separate notification setting for appeals, separate from reports - Fix style of links in report/strike header - Change approving an appeal to not restore statuses (due to federation complexities) - Change style of successfully appealed strikes on account settings page - Change account settings page to only show unappealed or recently appealed strikes * Change appealed_at to overruled_at * Fix missing method error
128 lines
5.5 KiB
Plaintext
128 lines
5.5 KiB
Plaintext
- content_for :page_title do
|
|
= t('disputes.strikes.title', action: t(@strike.action, scope: 'disputes.strikes.title_actions'), date: l(@strike.created_at.to_date))
|
|
|
|
- content_for :heading_actions do
|
|
- if @appeal.persisted?
|
|
= link_to t('admin.accounts.approve'), approve_admin_disputes_appeal_path(@appeal), method: :post, class: 'button' if can?(:approve, @appeal)
|
|
= link_to t('admin.accounts.reject'), reject_admin_disputes_appeal_path(@appeal), method: :post, class: 'button button--destructive' if can?(:reject, @appeal)
|
|
|
|
- if @strike.overruled?
|
|
%p.hint
|
|
%span.positive-hint
|
|
= fa_icon 'check'
|
|
= ' '
|
|
= t 'disputes.strikes.appeal_approved'
|
|
- elsif @appeal.persisted? && @appeal.rejected?
|
|
%p.hint
|
|
%span.negative-hint
|
|
= fa_icon 'times'
|
|
= ' '
|
|
= t 'disputes.strikes.appeal_rejected'
|
|
|
|
.report-header
|
|
.report-header__card
|
|
.strike-card
|
|
- unless @strike.none_action?
|
|
%p= t "user_mailer.warning.explanation.#{@strike.action}"
|
|
|
|
- unless @strike.text.blank?
|
|
= Formatter.instance.linkify(@strike.text)
|
|
|
|
- if @strike.report && !@strike.report.other?
|
|
%p
|
|
%strong= t('user_mailer.warning.reason')
|
|
= t("user_mailer.warning.categories.#{@strike.report.category}")
|
|
|
|
- if @strike.report.violation? && @strike.report.rule_ids.present?
|
|
%ul.rules-list
|
|
- @strike.report.rules.each do |rule|
|
|
%li= rule.text
|
|
|
|
- if @strike.status_ids.present? && !@strike.status_ids.empty?
|
|
%p
|
|
%strong= t('user_mailer.warning.statuses')
|
|
|
|
.strike-card__statuses-list
|
|
- status_map = @strike.statuses.includes(:application, :media_attachments).index_by(&:id)
|
|
|
|
- @strike.status_ids.each do |status_id|
|
|
.strike-card__statuses-list__item
|
|
- if (status = status_map[status_id.to_i])
|
|
.one-liner
|
|
= link_to short_account_status_url(@strike.target_account, status_id), class: 'emojify' do
|
|
= one_line_preview(status)
|
|
|
|
- status.media_attachments.each do |media_attachment|
|
|
%abbr{ title: media_attachment.description }
|
|
= fa_icon 'link'
|
|
= media_attachment.file_file_name
|
|
.strike-card__statuses-list__item__meta
|
|
%time.formatted{ datetime: status.created_at.iso8601, title: l(status.created_at) }= l(status.created_at)
|
|
·
|
|
= status.application.name
|
|
- else
|
|
.one-liner= t('disputes.strikes.status', id: status_id)
|
|
.strike-card__statuses-list__item__meta
|
|
= t('disputes.strikes.status_removed')
|
|
|
|
.report-header__details
|
|
.report-header__details__item
|
|
.report-header__details__item__header
|
|
%strong= t('disputes.strikes.created_at')
|
|
.report-header__details__item__content
|
|
%time.formatted{ datetime: @strike.created_at.iso8601, title: l(@strike.created_at) }= l(@strike.created_at)
|
|
.report-header__details__item
|
|
.report-header__details__item__header
|
|
%strong= t('disputes.strikes.recipient')
|
|
.report-header__details__item__content
|
|
= admin_account_link_to @strike.target_account, path: can?(:show, @strike.target_account) ? admin_account_path(@strike.target_account_id) : ActivityPub::TagManager.instance.url_for(@strike.target_account)
|
|
.report-header__details__item
|
|
.report-header__details__item__header
|
|
%strong= t('disputes.strikes.action_taken')
|
|
.report-header__details__item__content
|
|
- if @strike.overruled?
|
|
%del= t(@strike.action, scope: 'user_mailer.warning.title')
|
|
- else
|
|
= t(@strike.action, scope: 'user_mailer.warning.title')
|
|
- if @strike.report && can?(:show, @strike.report)
|
|
.report-header__details__item
|
|
.report-header__details__item__header
|
|
%strong= t('disputes.strikes.associated_report')
|
|
.report-header__details__item__content
|
|
= link_to t('admin.reports.report', id: @strike.report.id), admin_report_path(@strike.report)
|
|
- if @appeal.persisted?
|
|
.report-header__details__item
|
|
.report-header__details__item__header
|
|
%strong= t('disputes.strikes.appeal_submitted_at')
|
|
.report-header__details__item__content
|
|
%time.formatted{ datetime: @appeal.created_at.iso8601, title: l(@appeal.created_at) }= l(@appeal.created_at)
|
|
%hr.spacer/
|
|
|
|
- if @appeal.persisted?
|
|
%h3= t('disputes.strikes.appeal')
|
|
|
|
.report-notes
|
|
.report-notes__item
|
|
= image_tag @appeal.account.avatar.url, class: 'report-notes__item__avatar'
|
|
|
|
.report-notes__item__header
|
|
%span.username
|
|
= link_to @appeal.account.username, can?(:show, @appeal.account) ? admin_account_path(@appeal.account_id) : short_account_url(@appeal.account)
|
|
%time{ datetime: @appeal.created_at.iso8601, title: l(@appeal.created_at) }
|
|
- if @appeal.created_at.today?
|
|
= t('admin.report_notes.today_at', time: l(@appeal.created_at, format: :time))
|
|
- else
|
|
= l @appeal.created_at.to_date
|
|
|
|
.report-notes__item__content
|
|
= simple_format(h(@appeal.text))
|
|
- elsif can?(:appeal, @strike)
|
|
%h3= t('disputes.strikes.appeals.submit')
|
|
|
|
= simple_form_for(@appeal, url: disputes_strike_appeal_path(@strike)) do |f|
|
|
.fields-group
|
|
= f.input :text, wrapper: :with_label, input_html: { maxlength: 500 }
|
|
|
|
.actions
|
|
= f.button :button, t('disputes.strikes.appeals.submit'), type: :submit
|