mirror of
https://github.com/mastodon/mastodon.git
synced 2026-09-12 00:46:13 -05:00
Display suggestions in instance moderation interface
This commit is contained in:
@@ -13,6 +13,8 @@ class Admin::Instances::ModerationNotesController < Admin::BaseController
|
||||
redirect_to admin_instance_path(@instance.domain, anchor: helpers.dom_id(@instance_moderation_note)), notice: I18n.t('admin.instances.moderation_notes.created_msg')
|
||||
else
|
||||
@instance_moderation_notes = @instance.moderation_notes.includes(:account).chronological
|
||||
@advisories = SubscribedAdvisory.domain_target_type.where(target_key: @instance.domain).includes(:moderation_subscription).sort_by { |advisory| advisory.moderation_subscription.priority }
|
||||
@suggestions = ModerationSuggestion.domain_target_type.where(state: ['new', 'mailed']).where(target_key: @instance.domain).includes(:moderation_subscription)
|
||||
@time_period = (6.days.ago.to_date..Time.now.utc.to_date)
|
||||
@action_logs = Admin::ActionLogFilter.new(target_domain: @instance.domain).results.limit(5)
|
||||
|
||||
|
||||
@@ -17,6 +17,8 @@ module Admin
|
||||
|
||||
@instance_moderation_note = @instance.moderation_notes.new
|
||||
@instance_moderation_notes = @instance.moderation_notes.includes(:account).chronological
|
||||
@advisories = SubscribedAdvisory.domain_target_type.where(target_key: @instance.domain).includes(:moderation_subscription).sort_by { |advisory| advisory.moderation_subscription.priority }
|
||||
@suggestions = ModerationSuggestion.domain_target_type.where(state: ['new', 'mailed']).where(target_key: @instance.domain).includes(:moderation_subscription)
|
||||
@time_period = (6.days.ago.to_date..Time.now.utc.to_date)
|
||||
@action_logs = Admin::ActionLogFilter.new(target_domain: @instance.domain).results.limit(LOGS_LIMIT)
|
||||
end
|
||||
|
||||
@@ -11,6 +11,14 @@
|
||||
%p
|
||||
= t('admin.instances.unknown_instance')
|
||||
|
||||
- unless @advisories.empty?
|
||||
%hr.spacer/
|
||||
|
||||
.applications-list__item
|
||||
.announcements-list__item__title= t('admin.instances.advisories.title')
|
||||
|
||||
= render partial: 'admin/moderation_suggestions/moderation_suggestions', locals: { advisories: @advisories, suggestions: @suggestions }
|
||||
|
||||
%hr.spacer/
|
||||
|
||||
%h3= t('admin.instances.content_policies.title')
|
||||
|
||||
@@ -13,26 +13,4 @@
|
||||
.announcements-list__item__actions
|
||||
= table_link_to 'close', t('admin.moderation_suggestions.dismiss'), admin_moderation_suggestion_path(suggestions.first), method: :delete
|
||||
|
||||
.announcements-list__item__permissions
|
||||
%ul.permissions-list
|
||||
- actions = (moderation_advisories_by_target[[target_type, target_key]] || []).pluck(:action).uniq
|
||||
- actions = ['retract'] + actions if suggestions&.any? { |suggestion| suggestion.action == 'retract' }
|
||||
- actions.map do |action|
|
||||
:ruby
|
||||
advisories = moderation_advisories_by_target.fetch([target_type, target_key], []).filter { |advisory| advisory.action == action }
|
||||
moderation_suggestion = suggestions&.find { |suggestion| suggestion.action == action }
|
||||
subscriptions = (advisories.map(&:moderation_subscription) + [moderation_suggestion&.moderation_subscription]).compact.uniq
|
||||
|
||||
%li.permissions-list__item
|
||||
.permissions-list__item__icon{ class: "moderation_suggestion-#{action}" }
|
||||
= advisory_action_icon(action)
|
||||
.permissions-list__item__text
|
||||
.permissions-list__item__text__title
|
||||
= t(action, scope: 'admin.moderation_suggestions.actions')
|
||||
.permissions-list__item__text__type
|
||||
= t('admin.moderation_suggestions.suggested_from_html', link: to_sentence(subscriptions.map { |subscription| link_to(subscription.name, admin_moderation_subscription_path(subscription)) }))
|
||||
- if moderation_suggestion && can?(:apply, moderation_suggestion)
|
||||
= table_link_to 'check',
|
||||
t("admin.moderation_suggestions.apply_#{moderation_suggestion.action}"),
|
||||
apply_admin_moderation_suggestion_path(moderation_suggestion),
|
||||
method: :post
|
||||
= render partial: 'moderation_suggestions', locals: { advisories: moderation_advisories_by_target.fetch([target_type, target_key], []), suggestions: suggestions }
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
.announcements-list__item__permissions
|
||||
%ul.permissions-list
|
||||
- actions = advisories.pluck(:action).uniq
|
||||
- actions = ['retract'] + actions if suggestions&.any? { |suggestion| suggestion.action == 'retract' }
|
||||
- actions.map do |action|
|
||||
:ruby
|
||||
moderation_suggestion = suggestions&.find { |suggestion| suggestion.action == action }
|
||||
subscriptions = (advisories.filter_map { |advisory| advisory.moderation_subscription if advisory.action == action } + [moderation_suggestion&.moderation_subscription]).compact.uniq
|
||||
|
||||
%li.permissions-list__item
|
||||
.permissions-list__item__icon{ class: "moderation_suggestion-#{action}" }
|
||||
= advisory_action_icon(action)
|
||||
.permissions-list__item__text
|
||||
.permissions-list__item__text__title
|
||||
= t(action, scope: 'admin.moderation_suggestions.actions')
|
||||
.permissions-list__item__text__type
|
||||
= t('admin.moderation_suggestions.suggested_from_html', link: to_sentence(subscriptions.map { |subscription| link_to(subscription.name, admin_moderation_subscription_path(subscription)) }))
|
||||
- if moderation_suggestion && can?(:apply, moderation_suggestion)
|
||||
= table_link_to 'check',
|
||||
t("admin.moderation_suggestions.apply_#{moderation_suggestion.action}"),
|
||||
apply_admin_moderation_suggestion_path(moderation_suggestion),
|
||||
method: :post
|
||||
@@ -670,6 +670,8 @@ en:
|
||||
title: Follow recommendations
|
||||
unsuppress: Restore follow recommendation
|
||||
instances:
|
||||
advisories:
|
||||
title: Advisories from moderation subscriptions
|
||||
audit_log:
|
||||
title: Recent Audit Logs
|
||||
view_all: View full audit logs
|
||||
|
||||
Reference in New Issue
Block a user