Sha256: 07f371ccf5470b47d3e7968b807cfd4c295b170def84ae3322e4a7d3f3fccf69

Contents?: true

Size: 1.29 KB

Versions: 5

Compression:

Stored size: 1.29 KB

Contents

# frozen_string_literal: true

module Decidim
  # This module, when injected into a controller, ensures there's a
  # Participatory Process available and deducts it from the context.
  module NeedsParticipatoryProcess
    def self.enhance_controller(instance_or_module)
      instance_or_module.class_eval do
        helper_method :current_participatory_process
      end
    end

    def self.extended(base)
      base.extend NeedsOrganization, InstanceMethods

      enhance_controller(base)
    end

    def self.included(base)
      base.include NeedsOrganization, InstanceMethods

      enhance_controller(base)
    end

    module InstanceMethods
      # Public: Finds the current Participatory Process given this controller's
      # context.
      #
      # Returns the current ParticipatoryProcess.
      def current_participatory_process
        @current_participatory_process ||= detect_participatory_process
      end

      private

      def ability_context
        super.merge(current_participatory_process: current_participatory_process)
      end

      def detect_participatory_process
        request.env["current_participatory_process"] ||
          OrganizationParticipatoryProcesses.new(current_organization).query.find(params[:participatory_process_id] || params[:id])
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 2 rubygems

Version Path
decidim-core-0.5.1 app/controllers/concerns/decidim/needs_participatory_process.rb
decidim-0.5.1 decidim-core/app/controllers/concerns/decidim/needs_participatory_process.rb
decidim-core-0.5.0 app/controllers/concerns/decidim/needs_participatory_process.rb
decidim-0.5.0 decidim-core/app/controllers/concerns/decidim/needs_participatory_process.rb
decidim-core-0.4.4 app/controllers/concerns/decidim/needs_participatory_process.rb