diff --git a/app/controllers/admin/instances/moderation_notes_controller.rb b/app/controllers/admin/instances/moderation_notes_controller.rb index d92e53c326a..1adb6f49acb 100644 --- a/app/controllers/admin/instances/moderation_notes_controller.rb +++ b/app/controllers/admin/instances/moderation_notes_controller.rb @@ -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) diff --git a/app/controllers/admin/instances_controller.rb b/app/controllers/admin/instances_controller.rb index 72024a73430..346323f9a92 100644 --- a/app/controllers/admin/instances_controller.rb +++ b/app/controllers/admin/instances_controller.rb @@ -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 diff --git a/app/views/admin/instances/show.html.haml b/app/views/admin/instances/show.html.haml index 6dfe47a0214..fc2ca996f72 100644 --- a/app/views/admin/instances/show.html.haml +++ b/app/views/admin/instances/show.html.haml @@ -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') diff --git a/app/views/admin/moderation_suggestions/_moderation_suggestion_target.html.haml b/app/views/admin/moderation_suggestions/_moderation_suggestion_target.html.haml index 30b77b8d142..4e27bcd2df5 100644 --- a/app/views/admin/moderation_suggestions/_moderation_suggestion_target.html.haml +++ b/app/views/admin/moderation_suggestions/_moderation_suggestion_target.html.haml @@ -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 } diff --git a/app/views/admin/moderation_suggestions/_moderation_suggestions.html.haml b/app/views/admin/moderation_suggestions/_moderation_suggestions.html.haml new file mode 100644 index 00000000000..981dc9fa4e1 --- /dev/null +++ b/app/views/admin/moderation_suggestions/_moderation_suggestions.html.haml @@ -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 diff --git a/config/locales/en.yml b/config/locales/en.yml index ae71f23777a..666a003b248 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -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