class Decidim::ParticipatorySpaceManifest

This class handles all the logic associated to configuring a participatory space, the highest level object of Decidim.

It's normally not used directly but through the API exposed through `Decidim.register_participatory_space`.

Public Instance Methods

context(name = :public, &block) click to toggle source

A context used to set the layout and behavior of a participatory space. Full documentation can be found looking at the `ParticipatorySpaceContextManifest` class.

Example:

context(:public) do |context|
  context.layout "layouts/decidim/some_layout"
end

context(:public).layout
# => "layouts/decidim/some_layout"

Returns Nothing.

# File lib/decidim/participatory_space_manifest.rb, line 69
def context(name = :public, &block)
  name = name.to_sym
  @contexts ||= {}

  if block
    context = ParticipatorySpaceContextManifest.new
    context.instance_eval(&block)
    @contexts[name] = context
  end

  @contexts.fetch(name)
end
export_manifests() click to toggle source

Pubic: Returns a collection of previously registered export manifests for this space.

Returns an Array of <Decidim::Exporters::ExportManifest>.

# File lib/decidim/participatory_space_manifest.rb, line 178
def export_manifests
  @export_manifests ||= Array(@exports).map do |(name, block)|
    Decidim::Exporters::ExportManifest.new(name, self).tap do |manifest|
      block.call(manifest)
    end
  end
end
exports(name, &block) click to toggle source

Public: Registers an export artifact with a name and its properties defined in `Decidim::Exporters::ExportManifest`.

Export artifacts provide a unified way for processes to register exportable collections serialized via a `Serializer` that eventually are transformed to their formats.

name - The name of the artifact for this export. Should be unique in the context of the space. block - A block that receives the manifest as its only argument.

Returns nothing.

# File lib/decidim/participatory_space_manifest.rb, line 166
def exports(name, &block)
  return unless name

  @exports ||= []
  @exports << [name, block]
  @export_manifests = nil
end
invoke_on_destroy_account(user) click to toggle source
# File lib/decidim/participatory_space_manifest.rb, line 191
def invoke_on_destroy_account(user)
  return unless @on_destroy_account

  @on_destroy_account.call(user)
end
participatory_spaces(&block) click to toggle source

Public: A block that retrieves all the participatory spaces for the manifest. The block receives a `Decidim::Organization` as a parameter in order to filter. The block is expected to return an `ActiveRecord::Association`.

Returns nothing.

# File lib/decidim/participatory_space_manifest.rb, line 109
def participatory_spaces(&block)
  @participatory_spaces ||= block
end
permissions_class() click to toggle source

Public: Finds the permission class from its name, using the `permissions_class_name` attribute. If the class does not exist, it raises an exception. If the class name is not set, it returns nil.

Returns a Class.

# File lib/decidim/participatory_space_manifest.rb, line 118
def permissions_class
  permissions_class_name&.constantize
end
register_on_destroy_account(&block) click to toggle source

The block is a callback that will be invoked with the destroyed `user` as argument.

# File lib/decidim/participatory_space_manifest.rb, line 187
def register_on_destroy_account(&block)
  @on_destroy_account = block
end
register_resource(name, &block) click to toggle source

Public: Registers a resource. Exposes a DSL defined by `Decidim::ResourceManifest`.

Resource manifests are a way to expose a resource from one engine to the whole system. This way resources can be linked between them.

name - A name for that resource. Should be singular (ie not plural). block - A Block that will be called to set the Resource attributes.

Returns nothing.

# File lib/decidim/participatory_space_manifest.rb, line 150
def register_resource(name, &block)
  Decidim.register_resource(name, &block)
end
register_stat(name, options = {}, &block) click to toggle source

Public: Registers a stat inside a participatory_space manifest.

name - The name of the stat options - A hash of options

* primary: Whether the stat is primary or not.
* priority: The priority of the stat used for render issues.

block - A block that receive the components to filter out the stat.

Returns nothing.

# File lib/decidim/participatory_space_manifest.rb, line 136
def register_stat(name, options = {}, &block)
  stats.register(name, options, &block)
end
route_name() click to toggle source

The name of the named Rails route to create the url to the resource.

Returns a String.

Calls superclass method
# File lib/decidim/participatory_space_manifest.rb, line 100
def route_name
  super || model_class_name.demodulize.underscore
end
seed!() click to toggle source

Public: Creates the seeds for this components in order to populate the database.

Returns nothing.

# File lib/decidim/participatory_space_manifest.rb, line 92
def seed!
  print "Creating seeds for the #{name} space...\n" unless Rails.env.test?
  @seeds&.call
end
seeds(&block) click to toggle source

Public: A block that gets called when seeding for this component takes place.

Returns nothing.

# File lib/decidim/participatory_space_manifest.rb, line 85
def seeds(&block)
  @seeds = block
end
stats() click to toggle source

Public: Stores an instance of StatsRegistry

# File lib/decidim/participatory_space_manifest.rb, line 123
def stats
  @stats ||= StatsRegistry.new
end