Sha256: a9cbc120b1c228fba7fd9bd95ce6fe7ba070975bb21d85b3c745d9eb2afd0d3e

Contents?: true

Size: 1.96 KB

Versions: 2

Compression:

Stored size: 1.96 KB

Contents

# frozen_string_literal: true
module Decidim
  module Admin
    # This controller allows admins to manage moderations in a participatory process.
    class ModerationsController < Admin::ApplicationController
      include Concerns::ParticipatoryProcessAdmin

      helper_method :moderations

      def index
        authorize! :read, Decidim::Moderation
      end

      def unreport
        authorize! :unreport, reportable

        Admin::UnreportResource.call(reportable) do
          on(:ok) do
            flash[:notice] = I18n.t("reportable.unreport.success", scope: "decidim.moderations.admin")
            redirect_to decidim_admin.participatory_process_moderations_path
          end

          on(:invalid) do
            flash.now[:alert] = I18n.t("reportable.unreport.invalid", scope: "decidim.moderations.admin")
            redirect_to decidim_admin.participatory_process_moderations_path
          end
        end
      end

      def hide
        authorize! :hide, reportable

        Admin::HideResource.call(reportable) do
          on(:ok) do
            flash[:notice] = I18n.t("reportable.hide.success", scope: "decidim.moderations.admin")
            redirect_to decidim_admin.participatory_process_moderations_path
          end

          on(:invalid) do
            flash.now[:alert] = I18n.t("reportable.hide.invalid", scope: "decidim.moderations.admin")
            redirect_to decidim_admin.participatory_process_moderations_path
          end
        end
      end

      private

      def moderations
        @moderations ||= begin
          moderations = Decidim::Moderation.where(participatory_process: participatory_process)
          if params[:hidden]
            moderations.where.not(hidden_at: nil)
          else
            moderations.where(hidden_at: nil)
          end
        end
      end

      def reportable
        @reportable ||= Decidim::Moderation.where(participatory_process: participatory_process).find(params[:id]).reportable
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 2 rubygems

Version Path
decidim-admin-0.1.0 app/controllers/decidim/admin/moderations_controller.rb
decidim-0.1.0 decidim-admin/app/controllers/decidim/admin/moderations_controller.rb