commit: d0f087db2df65bd4b6c4c4558ea39f14f38733c7
parent: 9c88d1b99ea2baa5e55251dc98f10b1ee0559ee9
Author: Eugen Rochko <eugen@zeonfederated.com>
Date: Fri, 17 Feb 2017 00:42:52 +0100
Add UI to view report details, remove reported statuses, quick links to resolve/silence/suspend from report
Diffstat:
4 files changed, 118 insertions(+), 3 deletions(-)
diff --git a/app/assets/stylesheets/admin.scss b/app/assets/stylesheets/admin.scss
@@ -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;
+}
diff --git a/app/controllers/admin/reports_controller.rb b/app/controllers/admin/reports_controller.rb
@@ -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
diff --git a/app/views/admin/reports/show.html.haml b/app/views/admin/reports/show.html.haml
@@ -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'
diff --git a/config/routes.rb b/config/routes.rb
@@ -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