From d0f087db2df65bd4b6c4c4558ea39f14f38733c7 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Fri, 17 Feb 2017 00:42:52 +0100 Subject: [PATCH] Add UI to view report details, remove reported statuses, quick links to resolve/silence/suspend from report --- app/assets/stylesheets/admin.scss | 45 ++++++++++++++++++++- app/controllers/admin/reports_controller.rb | 30 +++++++++++++- app/views/admin/reports/show.html.haml | 36 +++++++++++++++++ config/routes.rb | 10 ++++- 4 files changed, 118 insertions(+), 3 deletions(-) diff --git a/app/assets/stylesheets/admin.scss b/app/assets/stylesheets/admin.scss index 7d056bc069..f7c5a56987 100644 --- 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 index 3eb5ab5171..67d57e4eb5 100644 --- 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 index 8aeb562006..74cac016dd 100644 --- 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 index e3fef9d567..f91a866ba7 100644 --- 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