Add UI to view report details, remove reported statuses, quick links to resolve/silence/suspend from report

custom
Eugen Rochko 6 years ago
parent 9c88d1b99e
commit d0f087db2d
  1. 45
      app/assets/stylesheets/admin.scss
  2. 30
      app/controllers/admin/reports_controller.rb
  3. 36
      app/views/admin/reports/show.html.haml
  4. 10
      config/routes.rb

@ -93,7 +93,7 @@
margin-bottom: 40px;
}
p {
& > p {
font-size: 14px;
line-height: 18px;
color: $color2;
@ -104,6 +104,13 @@
font-weight: 500;
}
}
hr {
margin: 20px 0;
border: 0;
background: transparent;
border-bottom: 1px solid $color1;
}
}
.simple_form {
@ -180,3 +187,39 @@
}
}
}
.report-accounts {
display: flex;
margin-bottom: 20px;
}
.report-accounts__item {
flex: 1 1 0;
& > strong {
display: block;
margin-bottom: 10px;
font-weight: 500;
font-size: 14px;
line-height: 18px;
color: $color2;
}
&:first-child {
margin-right: 10px;
}
}
.report-status {
display: flex;
margin-bottom: 10px;
.activity-stream {
flex: 2 0 auto;
margin-right: 20px;
}
}
.report-status__actions {
flex: 0 0 auto;
}

@ -2,6 +2,7 @@
class Admin::ReportsController < ApplicationController
before_action :require_admin!
before_action :set_report, except: [:index]
layout 'admin'
@ -11,7 +12,34 @@ class Admin::ReportsController < ApplicationController
end
def show
@report = Report.find(params[:id])
@statuses = Status.where(id: @report.status_ids)
end
def resolve
@report.update(action_taken: true)
redirect_to admin_report_path(@report)
end
def suspend
Admin::SuspensionWorker.perform_async(@report.target_account.id)
@report.update(action_taken: true)
redirect_to admin_report_path(@report)
end
def silence
@report.target_account.update(silenced: true)
@report.update(action_taken: true)
redirect_to admin_report_path(@report)
end
def remove
RemovalWorker.perform_async(params[:status_id])
redirect_to admin_report_path(@report)
end
private
def set_report
@report = Report.find(params[:id])
end
end

@ -1,2 +1,38 @@
- content_for :page_title do
= "Report ##{@report.id}"
.report-accounts
.report-accounts__item
%strong Reported account:
= render partial: 'authorize_follow/card', locals: { account: @report.target_account }
.report-accounts__item
%strong Reported by:
= render partial: 'authorize_follow/card', locals: { account: @report.account }
%p
%strong Comment:
- if @report.comment.blank?
None
- else
= @report.comment
- unless @statuses.empty?
%hr/
- @statuses.each do |status|
.report-status
.activity-stream.activity-stream-headless
.entry= render partial: 'stream_entries/simple_status', locals: { status: status }
.report-status__actions
= link_to remove_admin_report_path(@report, status_id: status.id), method: :post, class: 'icon-button', style: 'font-size: 24px; width: 24px; height: 24px', title: 'Delete' do
= fa_icon 'trash'
- unless @report.action_taken?
%hr/
%div{ style: 'overflow: hidden' }
%div{ style: 'float: right' }
= link_to 'Silence account', silence_admin_report_path(@report), method: :post, class: 'button'
= link_to 'Suspend account', suspend_admin_report_path(@report), method: :post, class: 'button'
%div{ style: 'float: left' }
= link_to 'Mark as resolved', resolve_admin_report_path(@report), method: :post, class: 'button'

@ -66,7 +66,15 @@ Rails.application.routes.draw do
resources :pubsubhubbub, only: [:index]
resources :domain_blocks, only: [:index, :create]
resources :settings, only: [:index, :update]
resources :reports, only: [:index, :show]
resources :reports, only: [:index, :show] do
member do
post :resolve
post :silence
post :suspend
post :remove
end
end
resources :accounts, only: [:index, :show] do
member do

Loading…
Cancel
Save