@@ -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 | |||