Core functionality in Decidim. Every single decidim functionality depends on this gem.
You'll be using indirectly on any decidim application.
Add decidim
to your Gemfile
and you'll be using it:
gem 'decidim'
And then execute:
bundle
User authentication is set up with Devise
with its modules, see the Decidim::User
model configuration and its setup initializer.
Core implements an Amendment feature that can be activated in the components. As of now, it's only implemented in the proposal component.
This feature makes it possible for anyone to edit the text of an amendable resource and create a child resource as an amendment. This child resource may receive support and the author of the amendable resource may accept or reject the amendment (or child proposal). In case of rejection, the author of the rejected emendation may raise the child resource to an independent resource.
Amendable
module: A concern with the features needed when you want a model to be amendable.Amendment
class: The ApplicationRecord that includes the polymorphic associations to make the model amendable.
Models that want to be amendable must include Amendable
and declare an amendable
configuration for the model.
Core implements a Search Engine that indexes models from all modules globally.
This feature is implemented using PostgreSQL capability for full text search via pg_search
gem.
This module also includes the following models to Decidim's Global Search:
Users
Searchable
module: A concern with the features needed when you want a model to be searchable.SearchableResource
class: The ActiveRecord that finally includes PgSearch and maps the indexed documents into a model.
Models that want to be indexed must include Searchable
and declare Searchable.searchable_fields
.
They should be registered as resources. In their manifest, in the register_resource
section, the artifact should be declared searchable.
This can be done in an initializer (like user does), in a participatory_space manifest, or in a component manifest. i.e.:
initializer "decidim.core.register_resources" do
Decidim.register_resource(:user) do |resource|
resource.model_class_name = "Decidim::User"
resource.card = "decidim/user_profile"
resource.searchable = true
end
...
Core adds an implementation to show APP metrics within some pages. You can see specific documentation at Metrics
See Decidim.
See Decidim.