Change old moderation strikes to be displayed in a separate page (#17566)

* Change old moderation strikes to be displayed in a separate page

Fixes #17552

This changes the moderation strikes displayed on `/auth/edit` to be those from
the past 3 months, and make all moderation strikes targeting the current user
available in `/disputes`.

* Add short description of what the strikes page is for

* Move link to list of strikes to “Account status” instead of navigation item

* Normalize i18n file

* Fix layout and styling of strikes link

* Revert highlights_on regexp

* Reintroduce account status summary

- this way, “Account status” is never empty
- account status is not necessarily bound to strikes, or recent strikes
remotes/1727458204337373841/tmp_refs/heads/signup-info-prompt
Claire 2022-03-01 19:37:47 +01:00 committed by GitHub
parent 50ea54b3ed
commit 14919fe11e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 34 additions and 4 deletions

View File

@ -127,7 +127,7 @@ class Auth::RegistrationsController < Devise::RegistrationsController
end end
def set_strikes def set_strikes
@strikes = current_account.strikes.active.latest @strikes = current_account.strikes.recent.latest
end end
def require_not_suspended! def require_not_suspended!

View File

@ -1,7 +1,11 @@
# frozen_string_literal: true # frozen_string_literal: true
class Disputes::StrikesController < Disputes::BaseController class Disputes::StrikesController < Disputes::BaseController
before_action :set_strike before_action :set_strike, only: [:show]
def index
@strikes = current_account.strikes.latest
end
def show def show
authorize @strike, :show? authorize @strike, :show?

View File

@ -33,7 +33,7 @@ class AccountWarning < ApplicationRecord
scope :latest, -> { order(id: :desc) } scope :latest, -> { order(id: :desc) }
scope :custom, -> { where.not(text: '') } scope :custom, -> { where.not(text: '') }
scope :active, -> { where(overruled_at: nil).or(where('account_warnings.overruled_at >= ?', 30.days.ago)) } scope :recent, -> { where('account_warnings.created_at >= ?', 3.months.ago) }
def statuses def statuses
Status.with_discarded.where(id: status_ids || []) Status.with_discarded.where(id: status_ids || [])

View File

@ -12,6 +12,22 @@
%h3= t('auth.status.account_status') %h3= t('auth.status.account_status')
%p.hint
- if @user.account.suspended?
%span.negative-hint= t('user_mailer.warning.explanation.suspend')
- elsif @user.disabled?
%span.negative-hint= t('user_mailer.warning.explanation.disable')
- elsif @user.account.silenced?
%span.warning-hint= t('user_mailer.warning.explanation.silence')
- else
%span.positive-hint= t('auth.status.functional')
= render partial: 'account_warning', collection: @strikes = render partial: 'account_warning', collection: @strikes
- if @user.account.strikes.exists?
%hr.spacer/
%p.muted-hint
= link_to t('auth.status.view_strikes'), disputes_strikes_path
%hr.spacer/ %hr.spacer/

View File

@ -0,0 +1,6 @@
- content_for :page_title do
= t('settings.strikes')
%p= t('disputes.strikes.description_html', instance: Rails.configuration.x.local_domain)
= render partial: 'auth/registrations/account_warning', collection: @strikes

View File

@ -933,8 +933,10 @@ en:
status: status:
account_status: Account status account_status: Account status
confirming: Waiting for e-mail confirmation to be completed. confirming: Waiting for e-mail confirmation to be completed.
functional: Your account is fully operational.
pending: Your application is pending review by our staff. This may take some time. You will receive an e-mail if your application is approved. pending: Your application is pending review by our staff. This may take some time. You will receive an e-mail if your application is approved.
redirecting_to: Your account is inactive because it is currently redirecting to %{acct}. redirecting_to: Your account is inactive because it is currently redirecting to %{acct}.
view_strikes: View past strikes against your account
too_fast: Form submitted too fast, try again. too_fast: Form submitted too fast, try again.
trouble_logging_in: Trouble logging in? trouble_logging_in: Trouble logging in?
use_security_key: Use security key use_security_key: Use security key
@ -1010,6 +1012,7 @@ en:
submit: Submit appeal submit: Submit appeal
associated_report: Associated report associated_report: Associated report
created_at: Dated created_at: Dated
description_html: These are actions taken against your account and warnings that have been sent to you by the staff of %{instance}.
recipient: Addressed to recipient: Addressed to
status: 'Post #%{id}' status: 'Post #%{id}'
status_removed: Post already removed from system status_removed: Post already removed from system
@ -1391,6 +1394,7 @@ en:
profile: Profile profile: Profile
relationships: Follows and followers relationships: Follows and followers
statuses_cleanup: Automated post deletion statuses_cleanup: Automated post deletion
strikes: Moderation strikes
two_factor_authentication: Two-factor Auth two_factor_authentication: Two-factor Auth
webauthn_authentication: Security keys webauthn_authentication: Security keys
statuses: statuses:

View File

@ -165,7 +165,7 @@ Rails.application.routes.draw do
end end
namespace :disputes do namespace :disputes do
resources :strikes, only: [:show] do resources :strikes, only: [:show, :index] do
resource :appeal, only: [:create] resource :appeal, only: [:create]
end end
end end