Change actions in reports to require only one click (#17487)
parent
a27729ee48
commit
d0fcf07436
7 changed files with 156 additions and 38 deletions
@ -0,0 +1,50 @@ |
||||
# frozen_string_literal: true |
||||
|
||||
class Admin::Reports::ActionsController < Admin::BaseController |
||||
before_action :set_report |
||||
|
||||
def create |
||||
authorize @report, :show? |
||||
|
||||
case action_from_button |
||||
when 'delete' |
||||
status_batch_action = Admin::StatusBatchAction.new( |
||||
type: action_from_button, |
||||
status_ids: @report.status_ids, |
||||
current_account: current_account, |
||||
report_id: @report.id, |
||||
send_email_notification: !@report.spam? |
||||
) |
||||
|
||||
status_batch_action.save! |
||||
when 'silence', 'suspend' |
||||
account_action = Admin::AccountAction.new( |
||||
type: action_from_button, |
||||
report_id: @report.id, |
||||
target_account: @report.target_account, |
||||
current_account: current_account, |
||||
send_email_notification: !@report.spam? |
||||
) |
||||
|
||||
account_action.save! |
||||
end |
||||
|
||||
redirect_to admin_reports_path |
||||
end |
||||
|
||||
private |
||||
|
||||
def set_report |
||||
@report = Report.find(params[:report_id]) |
||||
end |
||||
|
||||
def action_from_button |
||||
if params[:delete] |
||||
'delete' |
||||
elsif params[:silence] |
||||
'silence' |
||||
elsif params[:suspend] |
||||
'suspend' |
||||
end |
||||
end |
||||
end |
@ -0,0 +1,27 @@ |
||||
= form_tag admin_report_actions_path(@report), method: :post do |
||||
.report-actions |
||||
.report-actions__item |
||||
.report-actions__item__button |
||||
= link_to t('admin.reports.mark_as_resolved'), resolve_admin_report_path(@report), method: :post, class: 'button' |
||||
.report-actions__item__description |
||||
= t('admin.reports.actions.resolve_description_html') |
||||
.report-actions__item |
||||
.report-actions__item__button |
||||
= button_tag t('admin.reports.delete_and_resolve'), name: :delete, class: 'button button--destructive' |
||||
.report-actions__item__description |
||||
= t('admin.reports.actions.delete_description_html') |
||||
.report-actions__item |
||||
.report-actions__item__button |
||||
= button_tag t('admin.accounts.silence'), name: :silence, class: 'button button--destructive' |
||||
.report-actions__item__description |
||||
= t('admin.reports.actions.silence_description_html') |
||||
.report-actions__item |
||||
.report-actions__item__button |
||||
= button_tag t('admin.accounts.suspend'), name: :suspend, class: 'button button--destructive' |
||||
.report-actions__item__description |
||||
= t('admin.reports.actions.suspend_description_html') |
||||
.report-actions__item |
||||
.report-actions__item__button |
||||
= link_to t('admin.accounts.custom'), new_admin_account_action_path(@report.target_account_id, report_id: @report.id), class: 'button' |
||||
.report-actions__item__description |
||||
= t('admin.reports.actions.other_description_html') |
Loading…
Reference in new issue