Module: Decidim
- Includes:
- ActiveSupport::Configurable
- Defined in:
- lib/decidim/core.rb,
lib/decidim/menu.rb,
lib/decidim/events.rb,
lib/decidim/core/api.rb,
lib/decidim/features.rb,
lib/decidim/scopable.rb,
lib/decidim/abilities.rb,
lib/decidim/exporters.rb,
lib/decidim/has_scope.rb,
lib/decidim/menu_item.rb,
app/forms/decidim/form.rb,
lib/decidim/attributes.rb,
lib/decidim/authorable.rb,
lib/decidim/followable.rb,
lib/decidim/publicable.rb,
lib/decidim/reportable.rb,
app/models/decidim/user.rb,
lib/decidim/core/engine.rb,
lib/decidim/file_zipper.rb,
lib/decidim/has_feature.rb,
lib/decidim/page_finder.rb,
app/models/decidim/scope.rb,
lib/decidim/core/version.rb,
lib/decidim/form_builder.rb,
lib/decidim/has_category.rb,
lib/decidim/has_settings.rb,
lib/decidim/participable.rb,
lib/decidim/resourceable.rb,
app/models/decidim/follow.rb,
app/models/decidim/report.rb,
lib/decidim/engine_router.rb,
lib/decidim/exporters/csv.rb,
lib/decidim/has_reference.rb,
lib/decidim/menu_registry.rb,
app/models/decidim/feature.rb,
lib/decidim/exporters/json.rb,
lib/decidim/features/namer.rb,
lib/decidim/stats_registry.rb,
app/jobs/decidim/export_job.rb,
app/models/decidim/category.rb,
app/models/decidim/identity.rb,
lib/decidim/exporters/excel.rb,
lib/decidim/faker/localized.rb,
lib/decidim/has_attachments.rb,
lib/decidim/feature_manifest.rb,
lib/decidim/query_extensions.rb,
app/forms/decidim/follow_form.rb,
app/forms/decidim/report_form.rb,
app/models/decidim/attachment.rb,
app/models/decidim/moderation.rb,
app/models/decidim/newsletter.rb,
app/models/decidim/scope_type.rb,
app/models/decidim/user_group.rb,
lib/decidim/events/base_event.rb,
lib/decidim/manifest_registry.rb,
lib/decidim/resource_manifest.rb,
lib/decidim/settings_manifest.rb,
app/forms/decidim/account_form.rb,
app/helpers/decidim/map_helper.rb,
app/models/decidim/static_page.rb,
lib/decidim/core/api/user_type.rb,
lib/decidim/devise_failure_app.rb,
lib/decidim/events/email_event.rb,
lib/decidim/exporters/exporter.rb,
app/helpers/decidim/icon_helper.rb,
app/helpers/decidim/menu_helper.rb,
app/models/decidim/notification.rb,
app/models/decidim/organization.rb,
lib/decidim/filter_form_builder.rb,
app/commands/decidim/invite_user.rb,
app/jobs/decidim/application_job.rb,
app/models/decidim/authorization.rb,
app/models/decidim/resource_link.rb,
lib/decidim/exporters/serializer.rb,
app/commands/decidim/remove_admin.rb,
app/forms/decidim/attachment_form.rb,
app/helpers/decidim/layout_helper.rb,
app/helpers/decidim/orders_helper.rb,
app/helpers/decidim/scopes_helper.rb,
app/mailers/decidim/export_mailer.rb,
app/models/decidim/categorization.rb,
lib/decidim/core/api/decidim_type.rb,
lib/decidim/core/api/process_type.rb,
lib/decidim/core/api/session_type.rb,
lib/decidim/exporters/export_data.rb,
app/commands/decidim/create_follow.rb,
app/commands/decidim/create_report.rb,
app/commands/decidim/delete_follow.rb,
app/forms/decidim/invite_user_form.rb,
app/helpers/decidim/cookies_helper.rb,
app/helpers/decidim/filters_helper.rb,
app/commands/decidim/authorize_user.rb,
app/commands/decidim/update_account.rb,
app/forms/decidim/registration_form.rb,
app/helpers/decidim/omniauth_helper.rb,
app/helpers/decidim/paginate_helper.rb,
app/helpers/decidim/resource_helper.rb,
app/mailers/decidim/reported_mailer.rb,
app/queries/decidim/freetext_scopes.rb,
app/services/decidim/events_manager.rb,
lib/decidim/translatable_attributes.rb,
app/commands/decidim/destroy_account.rb,
app/helpers/decidim/meta_tags_helper.rb,
app/models/decidim/impersonation_log.rb,
app/services/decidim/resource_search.rb,
app/uploaders/decidim/image_uploader.rb,
lib/decidim/core/api/user_group_type.rb,
lib/decidim/features/export_manifest.rb,
app/forms/decidim/delete_account_form.rb,
app/helpers/decidim/cta_button_helper.rb,
app/mailers/decidim/newsletter_mailer.rb,
app/models/decidim/application_record.rb,
app/presenters/decidim/menu_presenter.rb,
app/queries/decidim/stats_users_count.rb,
app/uploaders/decidim/avatar_uploader.rb,
lib/decidim/attributes/time_with_zone.rb,
lib/decidim/core/api/author_interface.rb,
lib/decidim/events/notification_event.rb,
app/commands/decidim/invite_user_again.rb,
app/helpers/decidim/application_helper.rb,
app/helpers/decidim/attachments_helper.rb,
app/helpers/decidim/widget_urls_helper.rb,
app/mailers/decidim/application_mailer.rb,
app/services/decidim/action_authorizer.rb,
lib/decidim/authorization_form_builder.rb,
lib/decidim/core/api/process_step_type.rb,
app/constraints/decidim/current_feature.rb,
app/helpers/decidim/decidim_form_helper.rb,
app/helpers/decidim/feature_path_helper.rb,
app/helpers/decidim/translations_helper.rb,
app/helpers/decidim/user_profile_helper.rb,
app/mailers/decidim/notification_mailer.rb,
app/commands/decidim/create_registration.rb,
app/controllers/decidim/pages_controller.rb,
app/models/decidim/user_group_membership.rb,
lib/decidim/participatory_space_manifest.rb,
app/controllers/concerns/decidim/settings.rb,
app/controllers/decidim/errors_controller.rb,
app/controllers/decidim/scopes_controller.rb,
app/mailers/decidim/decidim_devise_mailer.rb,
app/models/decidim/abilities/base_ability.rb,
app/services/decidim/static_map_generator.rb,
app/uploaders/decidim/attachment_uploader.rb,
app/uploaders/decidim/hero_image_uploader.rb,
app/controllers/concerns/decidim/paginable.rb,
app/controllers/decidim/account_controller.rb,
app/controllers/decidim/follows_controller.rb,
app/controllers/decidim/locales_controller.rb,
app/controllers/decidim/reports_controller.rb,
app/controllers/decidim/widgets_controller.rb,
app/helpers/decidim/replace_buttons_helper.rb,
app/models/decidim/abilities/admin_ability.rb,
app/presenters/decidim/menu_item_presenter.rb,
app/services/decidim/authorization_handler.rb,
app/uploaders/decidim/application_uploader.rb,
lib/decidim/core/api/localized_string_type.rb,
lib/decidim/core/api/translated_field_type.rb,
app/helpers/decidim/language_chooser_helper.rb,
app/jobs/decidim/notification_generator_job.rb,
app/middleware/decidim/current_organization.rb,
app/presenters/decidim/home_stats_presenter.rb,
app/services/decidim/notification_generator.rb,
app/uploaders/decidim/banner_image_uploader.rb,
app/forms/decidim/omniauth_registration_form.rb,
app/helpers/decidim/feature_reference_helper.rb,
app/helpers/decidim/humanize_booleans_helper.rb,
app/helpers/decidim/localized_locales_helper.rb,
app/controllers/concerns/decidim/form_factory.rb,
app/controllers/concerns/decidim/payload_info.rb,
app/controllers/concerns/decidim/user_profile.rb,
app/controllers/decidim/static_map_controller.rb,
app/forms/decidim/notifications_settings_form.rb,
app/helpers/decidim/authorization_form_helper.rb,
app/mailers/concerns/decidim/localised_mailer.rb,
app/models/decidim/abilities/everyone_ability.rb,
app/uploaders/decidim/homepage_image_uploader.rb,
app/controllers/decidim/application_controller.rb,
app/helpers/decidim/action_authorization_helper.rb,
app/controllers/concerns/decidim/filter_resource.rb,
app/controllers/concerns/decidim/locale_switcher.rb,
app/controllers/decidim/cookie_policy_controller.rb,
app/controllers/decidim/features/base_controller.rb,
app/controllers/decidim/notifications_controller.rb,
app/helpers/decidim/aria_selected_link_to_helper.rb,
app/uploaders/decidim/organization_logo_uploader.rb,
app/commands/decidim/create_omniauth_registration.rb,
app/controllers/decidim/authorizations_controller.rb,
app/jobs/decidim/email_notification_generator_job.rb,
app/models/decidim/abilities/user_manager_ability.rb,
app/presenters/decidim/resource_locator_presenter.rb,
app/services/decidim/email_notification_generator.rb,
app/commands/decidim/update_notifications_settings.rb,
app/controllers/concerns/decidim/impersonate_users.rb,
app/controllers/decidim/devise/sessions_controller.rb,
app/controllers/decidim/own_user_groups_controller.rb,
app/models/decidim/participatory_process_user_role.rb,
app/controllers/concerns/decidim/devise_controllers.rb,
app/controllers/concerns/decidim/needs_organization.rb,
app/controllers/decidim/devise/passwords_controller.rb,
app/uploaders/decidim/organization_favicon_uploader.rb,
app/controllers/concerns/decidim/needs_authorization.rb,
app/uploaders/decidim/official_image_footer_uploader.rb,
app/uploaders/decidim/official_image_header_uploader.rb,
app/controllers/concerns/decidim/action_authorization.rb,
app/controllers/decidim/devise/invitations_controller.rb,
app/controllers/decidim/devise/confirmations_controller.rb,
app/controllers/decidim/devise/registrations_controller.rb,
lib/decidim/abilities/participatory_process_role_ability.rb,
app/controllers/decidim/notifications_settings_controller.rb,
app/jobs/decidim/notification_generator_for_recipient_job.rb,
app/services/decidim/notification_generator_for_recipient.rb,
app/queries/decidim/participatory_processes_with_user_role.rb,
app/controllers/decidim/devise/omniauth_registrations_controller.rb,
app/models/decidim/abilities/participatory_process_admin_ability.rb,
app/models/decidim/abilities/participatory_process_moderator_ability.rb,
app/models/decidim/abilities/participatory_process_collaborator_ability.rb
Overview
Decidim configuration.
Defined Under Namespace
Modules: Abilities, ActionAuthorization, ActionAuthorizationHelper, ApplicationHelper, AriaSelectedLinkToHelper, AttachmentsHelper, Attributes, Authorable, AuthorizationFormHelper, CookiesHelper, Core, CtaButtonHelper, DecidimFormHelper, Devise, DeviseControllers, Events, Exporters, Faker, FeaturePathHelper, FeatureReferenceHelper, Features, FilterResource, FiltersHelper, Followable, FormFactory, HasAttachments, HasCategory, HasFeature, HasReference, HasScope, HasSettings, HumanizeBooleansHelper, IconHelper, ImpersonateUsers, LanguageChooserHelper, LayoutHelper, LocaleSwitcher, LocalisedMailer, LocalizedLocalesHelper, MapHelper, MenuHelper, MetaTagsHelper, NeedsAuthorization, NeedsOrganization, OmniauthHelper, OrdersHelper, Paginable, PaginateHelper, Participable, PayloadInfo, Publicable, QueryExtensions, ReplaceButtonsHelper, Reportable, ResourceHelper, Resourceable, Scopable, ScopesHelper, Settings, TranslatableAttributes, TranslationsHelper, UserProfile, UserProfileHelper, WidgetUrlsHelper Classes: AccountController, AccountForm, ActionAuthorizer, ApplicationController, ApplicationJob, ApplicationMailer, ApplicationRecord, ApplicationUploader, Attachment, AttachmentForm, AttachmentUploader, Authorization, AuthorizationFormBuilder, AuthorizationHandler, AuthorizationsController, AuthorizeUser, AvatarUploader, BannerImageUploader, Categorization, Category, CookiePolicyController, CreateFollow, CreateOmniauthRegistration, CreateRegistration, CreateReport, CurrentFeature, CurrentOrganization, DecidimDeviseMailer, DeleteAccountForm, DeleteFollow, DestroyAccount, DeviseFailureApp, EmailNotificationGenerator, EmailNotificationGeneratorJob, EngineRouter, ErrorsController, EventsManager, ExportJob, ExportMailer, Feature, FeatureManifest, FileZipper, FilterFormBuilder, Follow, FollowForm, FollowsController, Form, FormBuilder, FreetextScopes, HeroImageUploader, HomeStatsPresenter, HomepageImageUploader, Identity, ImageUploader, ImpersonationLog, InvalidOauthSignature, InviteUser, InviteUserAgain, InviteUserForm, LocalesController, ManifestRegistry, Menu, MenuItem, MenuItemPresenter, MenuPresenter, MenuRegistry, Moderation, Newsletter, NewsletterMailer, Notification, NotificationGenerator, NotificationGeneratorForRecipient, NotificationGeneratorForRecipientJob, NotificationGeneratorJob, NotificationMailer, NotificationsController, NotificationsSettingsController, NotificationsSettingsForm, OfficialImageFooterUploader, OfficialImageHeaderUploader, OmniauthRegistrationForm, Organization, OrganizationFaviconUploader, OrganizationLogoUploader, OwnUserGroupsController, PageFinder, PagesController, ParticipatoryProcessUserRole, ParticipatoryProcessesWithUserRole, ParticipatorySpaceManifest, RegistrationForm, RemoveAdmin, Report, ReportForm, ReportedMailer, ReportsController, ResourceLink, ResourceLocatorPresenter, ResourceManifest, ResourceSearch, Scope, ScopeType, ScopesController, SettingsManifest, StaticMapController, StaticMapGenerator, StaticPage, StatsRegistry, StatsUsersCount, UpdateAccount, UpdateNotificationsSettings, User, UserGroup, UserGroupMembership, WidgetsController
Constant Summary collapse
- UserType =
This type represents a User.
GraphQL::ObjectType.define do name "User" description "A user" interfaces [ Decidim::AuthorInterface ] field :name, !types.String, "The user's name" field :avatarUrl, !types.String, "The user's avatar url" do resolve ->(obj, _args, _ctx) { obj.avatar.url } end field :organizationName, !types.String, "The user's organization name" do resolve ->(obj, _args, _ctx) { obj.organization.name } end field :isVerified, !types.Boolean, "Whether the author is verified or not" do resolve ->(_obj, _args, _ctx) { false } end field :deleted, !types.Boolean, "Whether the user's account has been deleted or not", property: :deleted? field :isUser, !types.Boolean, "User groups are not users" do resolve ->(_obj, _args, _ctx) { true } end end
- DecidimType =
This type represents a Decidim’s global property.
GraphQL::ObjectType.define do name "Decidim" description "Decidim's framework-related properties." field :version, !types.String, "The current decidim's version of this deployment." do resolve ->(obj, _args, _ctx) { obj.version } end field :application_name, !types.String, "The current installation's name." do resolve ->(obj, _args, _ctx) { obj.application_name } end end
- ProcessType =
This type represents a ParticipatoryProcess.
GraphQL::ObjectType.define do name "Process" description "A participatory process" field :id, !types.ID, "The Process' unique ID" field :title, !TranslatedFieldType, "The title of this process." connection :steps, ProcessStepType.connection_type do description "All the steps of this process." end end
- SessionType =
This type represents the current user session.
GraphQL::ObjectType.define do name "Session" description "The current session" field :user, UserType, "The current user" do resolve ->(obj, _args, _ctx) { obj } end field :verifiedUserGroups, !types[!UserGroupType], "The current user verified user groups" do resolve ->(obj, _args, _ctx) { obj.user_groups.verified } end end
- UserGroupType =
This type represents a UserGroup
GraphQL::ObjectType.define do name "UserGroup" description "A user group" interfaces [ Decidim::AuthorInterface ] field :id, !types.ID, "The user group's id" field :name, !types.String, "The user group's name" field :avatarUrl, !types.String, "The user's avatar url" do resolve ->(obj, _args, _ctx) { obj.avatar.url } end field :isVerified, !types.Boolean, "Whether the user group is verified or not" do resolve lambda { |obj, _args, _ctx| obj.verified? } end field :deleted, !types.Boolean, "Whether the user group's has been deleted or not" do resolve ->(_obj, _args, _ctx) { false } end field :isUser, !types.Boolean, "User groups are not users" do resolve ->(_obj, _args, _ctx) { false } end end
- AuthorInterface =
This interface represents an author who owns a resource.
GraphQL::InterfaceType.define do name "Author" description "An author" field :name, !types.String, "The author's name" field :avatarUrl, !types.String, "The author's avatar url" field :isVerified, !types.Boolean, "Whether the author is verified or not" field :deleted, !types.Boolean, "Whether the author's account has been deleted or not" field :isUser, !types.Boolean, "Whether the author is a user or another kind of author (User Group)" end
- ProcessStepType =
This type represents a step on a participatory process.
GraphQL::ObjectType.define do name "ProcessStep" description "A participatory process step" field :id, !types.ID, "The unique ID of this step." field :process do type !ProcessType description "The participatory process in which this step belongs to." property :participatory_process end field :title, !TranslatedFieldType, "The title of this step" end
- LocalizedStringType =
This type represents a localized string in a single language.
GraphQL::ObjectType.define do name "LocalizedString" description "Represents a particular translation of a LocalizedStringType" field :locale, !types.String, "The standard locale of this translation." field :text, types.String, "The content of this translation." end
- TranslatedFieldType =
This type represents a translated field in multiple languages.
GraphQL::ObjectType.define do name "TranslatedField" description "A translated field" field :locales do type types[!types.String] description "Lists all the locales in which this translation is available" resolve ->(obj, _args, _ctx) { obj.keys } end field :translations do type !types[!LocalizedStringType] description "All the localized strings for this translation." argument :locales do type types[!types.String] description "A list of locales to scope the translations to." end resolve lambda { |obj, args, _ctx| translations = obj.stringify_keys translations = translations.slice(*args["locales"]) if args["locales"] translations.map { |locale, text| OpenStruct.new(locale: locale, text: text) } } end field :translation do type types.String description "Returns a single translation given a locale." argument :locale, !types.String, "A locale to search for" resolve lambda { |obj, args, _ctx| translations = obj.stringify_keys translations[args["locale"]] } end end
Class Method Summary collapse
-
.feature_manifests ⇒ Object
Public: Finds all registered feature manifest’s via the ‘register_feature` method.
-
.feature_registry ⇒ Object
Public: Stores the registry of features.
-
.find_feature_manifest(name) ⇒ Object
Public: Finds a feature manifest by the feature’s name.
-
.find_participatory_space_manifest(name) ⇒ Object
Public: Finds a participatory space manifest by the participatory space’s name.
-
.find_resource_manifest(resource_name_or_klass) ⇒ Object
Public: Finds a resource manifest by the resource’s name.
-
.menu(name, &block) ⇒ Object
Public: Registers configuration for a new or existing menu.
-
.participatory_space_manifests ⇒ Object
Public: Finds all registered participatory space manifest’s via the ‘register_participatory_space` method.
-
.participatory_space_registry ⇒ Object
Public: Stores the registry of participatory spaces.
-
.register_feature(name, &block) ⇒ Object
Public: Registers a feature, usually held in an external library or in a separate folder in the main repository.
-
.register_participatory_space(name, &block) ⇒ Object
Public: Registers a participatory space, usually held in an external library or in a separate folder in the main repository.
-
.seed! ⇒ Object
Loads seeds from all engines.
-
.stats ⇒ Object
Public: Stores an instance of StatsRegistry.
Class Method Details
.feature_manifests ⇒ Object
Public: Finds all registered feature manifest’s via the ‘register_feature` method.
Returns an Array.
188 189 190 |
# File 'lib/decidim/core.rb', line 188 def self.feature_manifests feature_registry.manifests end |
.feature_registry ⇒ Object
Public: Stores the registry of features
230 231 232 |
# File 'lib/decidim/core.rb', line 230 def self.feature_registry @feature_registry ||= ManifestRegistry.new(:features) end |
.find_feature_manifest(name) ⇒ Object
Public: Finds a feature manifest by the feature’s name.
name - The name of the FeatureManifest to find.
Returns a FeatureManifest if found, nil otherwise.
205 206 207 |
# File 'lib/decidim/core.rb', line 205 def self.find_feature_manifest(name) feature_registry.find(name.to_sym) end |
.find_participatory_space_manifest(name) ⇒ Object
Public: Finds a participatory space manifest by the participatory space’s name.
name - The name of the ParticipatorySpaceManifest to find.
Returns a ParticipatorySpaceManifest if found, nil otherwise.
215 216 217 |
# File 'lib/decidim/core.rb', line 215 def self.find_participatory_space_manifest(name) participatory_space_registry.find(name.to_sym) end |
.find_resource_manifest(resource_name_or_klass) ⇒ Object
Public: Finds a resource manifest by the resource’s name.
resource_name_or_class - The String of the ResourceManifest name or the class of the ResourceManifest model_class to find.
Returns a ResourceManifest if found, nil otherwise.
225 226 227 |
# File 'lib/decidim/core.rb', line 225 def self.find_resource_manifest(resource_name_or_klass) feature_registry.find_resource_manifest(resource_name_or_klass) end |
.menu(name, &block) ⇒ Object
Public: Registers configuration for a new or existing menu
name - A string or symbol with the name of the menu &block - A block using the DSL defined in ‘Decidim::MenuItem`
249 250 251 |
# File 'lib/decidim/core.rb', line 249 def self.(name, &block) MenuRegistry.register(name.to_sym, &block) end |
.participatory_space_manifests ⇒ Object
Public: Finds all registered participatory space manifest’s via the ‘register_participatory_space` method.
Returns an Array.
196 197 198 |
# File 'lib/decidim/core.rb', line 196 def self.participatory_space_manifests participatory_space_registry.manifests end |
.participatory_space_registry ⇒ Object
Public: Stores the registry of participatory spaces
235 236 237 |
# File 'lib/decidim/core.rb', line 235 def self.participatory_space_registry @participatory_space_registry ||= ManifestRegistry.new(:participatory_spaces) end |
.register_feature(name, &block) ⇒ Object
Public: Registers a feature, usually held in an external library or in a separate folder in the main repository. Exposes a DSL defined by ‘Decidim::FeatureManifest`.
Feature manifests are held in a global registry and are used in all kinds of places to figure out what new components or functionalities the feature provides.
name - A Symbol with the feature’s unique name.
Returns nothing.
165 166 167 |
# File 'lib/decidim/core.rb', line 165 def self.register_feature(name, &block) feature_registry.register(name, &block) end |
.register_participatory_space(name, &block) ⇒ Object
Public: Registers a participatory space, usually held in an external library or in a separate folder in the main repository. Exposes a DSL defined by ‘Decidim::ParticipatorySpaceManifest`.
Participatory space manifests are held in a global registry and are used in all kinds of places to figure out what new components or functionalities the participatory space provides.
name - A Symbol with the participatory space’s unique name.
Returns nothing.
180 181 182 |
# File 'lib/decidim/core.rb', line 180 def self.register_participatory_space(name, &block) participatory_space_registry.register(name, &block) end |
.seed! ⇒ Object
Loads seeds from all engines.
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/decidim/core.rb', line 47 def self.seed! # Faker needs to have the `:en` locale in order to work properly, so we # must enforce it during the seeds. original_locale = I18n.available_locales I18n.available_locales = original_locale + [:en] unless original_locale.include?(:en) Rails.application.railties.to_a.uniq.each do |railtie| next unless railtie.respond_to?(:load_seed) && railtie.class.name.include?("Decidim::") railtie.load_seed end Decidim.participatory_space_manifests.each(&:seed!) I18n.available_locales = original_locale end |
.stats ⇒ Object
Public: Stores an instance of StatsRegistry
240 241 242 |
# File 'lib/decidim/core.rb', line 240 def self.stats @stats ||= StatsRegistry.new end |