margin-bottom: 40px;
}
- p {
+ & > p {
font-size: 14px;
line-height: 18px;
color: $color2;
font-weight: 500;
}
}
+
+ hr {
+ margin: 20px 0;
+ border: 0;
+ background: transparent;
+ border-bottom: 1px solid $color1;
+ }
}
.simple_form {
}
}
}
+
+.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;
+}
class Admin::ReportsController < ApplicationController
before_action :require_admin!
+ before_action :set_report, except: [:index]
layout 'admin'
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
- 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'
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