Sha256: 2459b924d53e757a8bcdee96f7801a4da83f77d996d550af01563a55e7956f99

Contents?: true

Size: 1.32 KB

Versions: 16

Compression:

Stored size: 1.32 KB

Contents

# frozen_string_literal: true

require "active_support/concern"

module Decidim
  module Initiatives
    # This module, when injected into a controller, ensures there's an
    # initiative available and deducts it from the context.
    module NeedsInitiative
      extend ActiveSupport::Concern

      included do
        include NeedsOrganization
        include InitiativeSlug

        helper_method :current_initiative

        # Public: Finds the current Initiative given this controller's
        # context.
        #
        # Returns the current Initiative.
        def current_initiative
          @current_initiative ||= detect_initiative
        end

        alias_method :current_participatory_space, :current_initiative

        private

        def detect_initiative
          request.env["current_initiative"] ||
            Initiative.find_by(
              id: (id_from_slug(params[:slug]) || id_from_slug(params[:initiative_slug]) || params[:initiative_id] || params[:id]),
              organization: current_organization
            )
        end

        def permission_class_chain
          list = [
            Decidim::Initiatives::Permissions,
            Decidim::Admin::Permissions
          ]

          return list if permission_scope == :admin
          list << Decidim::Permissions
        end
      end
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
decidim-initiatives-0.16.1 app/controllers/concerns/decidim/initiatives/needs_initiative.rb
decidim-initiatives-0.16.0 app/controllers/concerns/decidim/initiatives/needs_initiative.rb
decidim-initiatives-0.15.2 app/controllers/concerns/decidim/initiatives/needs_initiative.rb
decidim-initiatives-0.15.1 app/controllers/concerns/decidim/initiatives/needs_initiative.rb
decidim-initiatives-0.15.0 app/controllers/concerns/decidim/initiatives/needs_initiative.rb
decidim-initiatives-0.14.4 app/controllers/concerns/decidim/initiatives/needs_initiative.rb
decidim-initiatives-0.14.3 app/controllers/concerns/decidim/initiatives/needs_initiative.rb
decidim-initiatives-0.14.2 app/controllers/concerns/decidim/initiatives/needs_initiative.rb
decidim-initiatives-0.14.1 app/controllers/concerns/decidim/initiatives/needs_initiative.rb
decidim-initiatives-0.13.1 app/controllers/concerns/decidim/initiatives/needs_initiative.rb
decidim-initiatives-0.12.2 app/controllers/concerns/decidim/initiatives/needs_initiative.rb
decidim-initiatives-0.13.0 app/controllers/concerns/decidim/initiatives/needs_initiative.rb
decidim-initiatives-0.12.1 app/controllers/concerns/decidim/initiatives/needs_initiative.rb
decidim-initiatives-0.13.0.pre1 app/controllers/concerns/decidim/initiatives/needs_initiative.rb
decidim-initiatives-0.12.0 app/controllers/concerns/decidim/initiatives/needs_initiative.rb
decidim-initiatives-0.12.0.pre app/controllers/concerns/decidim/initiatives/needs_initiative.rb