Toggle sensitive from admin page (#3261)
This commit is contained in:
		
							parent
							
								
									4289ed1d13
								
							
						
					
					
						commit
						7ee5fc5d68
					
				
					 6 changed files with 79 additions and 10 deletions
				
			
		| 
						 | 
					@ -2,17 +2,31 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
module Admin
 | 
					module Admin
 | 
				
			||||||
  class ReportedStatusesController < BaseController
 | 
					  class ReportedStatusesController < BaseController
 | 
				
			||||||
    def destroy
 | 
					    before_action :set_report
 | 
				
			||||||
      status = Status.find params[:id]
 | 
					    before_action :set_status
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      RemovalWorker.perform_async(status.id)
 | 
					    def update
 | 
				
			||||||
      redirect_to admin_report_path(report)
 | 
					      @status.update(status_params)
 | 
				
			||||||
 | 
					      redirect_to admin_report_path(@report)
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def destroy
 | 
				
			||||||
 | 
					      RemovalWorker.perform_async(@status.id)
 | 
				
			||||||
 | 
					      redirect_to admin_report_path(@report)
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private
 | 
					    private
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def report
 | 
					    def status_params
 | 
				
			||||||
      Report.find(params[:report_id])
 | 
					      params.require(:status).permit(:sensitive)
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def set_report
 | 
				
			||||||
 | 
					      @report = Report.find(params[:report_id])
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    def set_status
 | 
				
			||||||
 | 
					      @status = @report.statuses.find(params[:id])
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
end
 | 
					end
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -245,4 +245,19 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
.report-status__actions {
 | 
					.report-status__actions {
 | 
				
			||||||
  flex: 0 0 auto;
 | 
					  flex: 0 0 auto;
 | 
				
			||||||
 | 
					  position: relative;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .nsfw-button {
 | 
				
			||||||
 | 
					    color: $white;
 | 
				
			||||||
 | 
					    font-size: 11px;
 | 
				
			||||||
 | 
					    width: 11px;
 | 
				
			||||||
 | 
					    display: block;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  .trash-button {
 | 
				
			||||||
 | 
					    position: absolute;
 | 
				
			||||||
 | 
					    bottom: 10px;
 | 
				
			||||||
 | 
					    font-size: 24px;
 | 
				
			||||||
 | 
					    width: 24px;
 | 
				
			||||||
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -24,7 +24,10 @@
 | 
				
			||||||
      .activity-stream.activity-stream-headless
 | 
					      .activity-stream.activity-stream-headless
 | 
				
			||||||
        .entry= render partial: 'stream_entries/simple_status', locals: { status: status }
 | 
					        .entry= render partial: 'stream_entries/simple_status', locals: { status: status }
 | 
				
			||||||
      .report-status__actions
 | 
					      .report-status__actions
 | 
				
			||||||
        = link_to admin_report_reported_status_path(@report, status), method: :delete, class: 'icon-button', style: 'font-size: 24px; width: 24px; height: 24px', title: t('admin.reports.delete') do
 | 
					        - unless status.media_attachments.empty?
 | 
				
			||||||
 | 
					          = link_to admin_report_reported_status_path(@report, status, status: { sensitive: !status.sensitive }), method: :patch, class: 'nsfw-button', title: t("admin.reports.nsfw.#{!status.sensitive}") do
 | 
				
			||||||
 | 
					            = t("admin.reports.nsfw.#{!status.sensitive}")
 | 
				
			||||||
 | 
					        = link_to admin_report_reported_status_path(@report, status), method: :delete, class: 'icon-button trash-button', title: t('admin.reports.delete'), data: { confirm: t('admin.reports.are_you_sure') } do
 | 
				
			||||||
          = fa_icon 'trash'
 | 
					          = fa_icon 'trash'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
- if !@report.action_taken?
 | 
					- if !@report.action_taken?
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -160,6 +160,10 @@ en:
 | 
				
			||||||
      title: Reports
 | 
					      title: Reports
 | 
				
			||||||
      unresolved: Unresolved
 | 
					      unresolved: Unresolved
 | 
				
			||||||
      view: View
 | 
					      view: View
 | 
				
			||||||
 | 
					      nsfw:
 | 
				
			||||||
 | 
					        'true': NSFW ON
 | 
				
			||||||
 | 
					        'false': NSFW OFF
 | 
				
			||||||
 | 
					      are_you_sure: Are you sure?
 | 
				
			||||||
    settings:
 | 
					    settings:
 | 
				
			||||||
      contact_information:
 | 
					      contact_information:
 | 
				
			||||||
        email: Enter a public e-mail address
 | 
					        email: Enter a public e-mail address
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -80,7 +80,7 @@ Rails.application.routes.draw do
 | 
				
			||||||
    resources :instances, only: [:index]
 | 
					    resources :instances, only: [:index]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    resources :reports, only: [:index, :show, :update] do
 | 
					    resources :reports, only: [:index, :show, :update] do
 | 
				
			||||||
      resources :reported_statuses, only: :destroy
 | 
					      resources :reported_statuses, only: [:update, :destroy]
 | 
				
			||||||
    end
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    resources :accounts, only: [:index, :show] do
 | 
					    resources :accounts, only: [:index, :show] do
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -4,14 +4,47 @@ describe Admin::ReportedStatusesController do
 | 
				
			||||||
  render_views
 | 
					  render_views
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  let(:user) { Fabricate(:user, admin: true) }
 | 
					  let(:user) { Fabricate(:user, admin: true) }
 | 
				
			||||||
 | 
					  let(:report) { Fabricate(:report, status_ids: [status.id]) }
 | 
				
			||||||
 | 
					  let(:status) { Fabricate(:status) }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  before do
 | 
					  before do
 | 
				
			||||||
    sign_in user, scope: :user
 | 
					    sign_in user, scope: :user
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  describe 'PATCH #update' do
 | 
				
			||||||
 | 
					    subject do
 | 
				
			||||||
 | 
					      -> { patch :update, params: { report_id: report, id: status, status: { sensitive: sensitive } } }
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    let(:status) { Fabricate(:status, sensitive: !sensitive) }
 | 
				
			||||||
 | 
					    let(:sensitive) { true }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    context 'updates sensitive column to true' do
 | 
				
			||||||
 | 
					      it 'updates sensitive column' do
 | 
				
			||||||
 | 
					        is_expected.to change {
 | 
				
			||||||
 | 
					          status.reload.sensitive
 | 
				
			||||||
 | 
					        }.from(false).to(true)
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    context 'updates sensitive column to false' do
 | 
				
			||||||
 | 
					      let(:sensitive) { false }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					      it 'updates sensitive column' do
 | 
				
			||||||
 | 
					        is_expected.to change {
 | 
				
			||||||
 | 
					          status.reload.sensitive
 | 
				
			||||||
 | 
					        }.from(true).to(false)
 | 
				
			||||||
 | 
					      end
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    it 'redirects to report page' do
 | 
				
			||||||
 | 
					      subject.call
 | 
				
			||||||
 | 
					      expect(response).to redirect_to(admin_report_path(report))
 | 
				
			||||||
 | 
					    end
 | 
				
			||||||
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  describe 'DELETE #destroy' do
 | 
					  describe 'DELETE #destroy' do
 | 
				
			||||||
    it 'removes a status' do
 | 
					    it 'removes a status' do
 | 
				
			||||||
      report = Fabricate(:report)
 | 
					 | 
				
			||||||
      status = Fabricate(:status)
 | 
					 | 
				
			||||||
      allow(RemovalWorker).to receive(:perform_async)
 | 
					      allow(RemovalWorker).to receive(:perform_async)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      delete :destroy, params: { report_id: report, id: status }
 | 
					      delete :destroy, params: { report_id: report, id: status }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue