Module: Decidim::DecidimAwesome

Includes:
ActiveSupport::Configurable
Defined in:
lib/decidim/decidim_awesome/version.rb,
lib/decidim/decidim_awesome/lock.rb,
lib/decidim/decidim_awesome/menu.rb,
lib/decidim/decidim_awesome/admin.rb,
lib/decidim/decidim_awesome/config.rb,
lib/decidim/decidim_awesome/engine.rb,
lib/decidim/decidim_awesome/awesome.rb,
lib/decidim/decidim_awesome/menu_hacker.rb,
lib/decidim/decidim_awesome/admin_engine.rb,
lib/decidim/decidim_awesome/custom_fields.rb,
lib/decidim/decidim_awesome/system_checker.rb,
lib/decidim/decidim_awesome/awesome_helpers.rb,
lib/decidim/decidim_awesome/voting_manifest.rb,
app/commands/decidim/decidim_awesome/command.rb,
lib/decidim/decidim_awesome/context_analyzers.rb,
app/helpers/decidim/decidim_awesome/map_helper.rb,
app/models/decidim/decidim_awesome/vote_weight.rb,
app/models/decidim/decidim_awesome/editor_image.rb,
lib/decidim/decidim_awesome/map_component/engine.rb,
app/forms/decidim/decidim_awesome/admin/menu_form.rb,
app/models/decidim/decidim_awesome/awesome_config.rb,
app/forms/decidim/decidim_awesome/admin/config_form.rb,
app/forms/decidim/decidim_awesome/editor_image_form.rb,
app/permissions/decidim/decidim_awesome/permissions.rb,
lib/decidim/decidim_awesome/iframe_component/engine.rb,
app/models/decidim/decidim_awesome/config_constraint.rb,
app/uploaders/decidim/decidim_awesome/image_uploader.rb,
app/middleware/decidim/decidim_awesome/current_config.rb,
app/models/decidim/decidim_awesome/application_record.rb,
app/forms/decidim/decidim_awesome/admin/intergram_form.rb,
app/models/decidim/decidim_awesome/paper_trail_version.rb,
lib/decidim/decidim_awesome/map_component/admin_engine.rb,
app/forms/decidim/decidim_awesome/admin/constraint_form.rb,
app/models/decidim/decidim_awesome/proposal_extra_field.rb,
app/queries/decidim/decidim_awesome/private_data_finder.rb,
app/commands/decidim/decidim_awesome/admin/update_config.rb,
app/commands/decidim/decidim_awesome/create_editor_image.rb,
app/cells/decidim/decidim_awesome/content_blocks/map_cell.rb,
app/jobs/decidim/decidim_awesome/destroy_private_data_job.rb,
app/jobs/decidim/decidim_awesome/export_admin_actions_job.rb,
app/models/concerns/decidim/decidim_awesome/user_override.rb,
app/permissions/decidim/decidim_awesome/admin/permissions.rb,
lib/decidim/decidim_awesome/iframe_component/admin_engine.rb,
app/jobs/decidim/decidim_awesome/migrate_legacy_images_job.rb,
app/presenters/decidim/decidim_awesome/role_base_presenter.rb,
app/commands/decidim/decidim_awesome/admin/create_menu_hack.rb,
app/commands/decidim/decidim_awesome/admin/update_menu_hack.rb,
app/models/concerns/decidim/decidim_awesome/has_vote_weight.rb,
app/commands/decidim/decidim_awesome/admin/create_constraint.rb,
app/commands/decidim/decidim_awesome/admin/destroy_menu_hack.rb,
app/commands/decidim/decidim_awesome/admin/update_constraint.rb,
app/forms/decidim/decidim_awesome/admin/custom_redirect_form.rb,
app/presenters/decidim/decidim_awesome/user_entity_presenter.rb,
app/commands/decidim/decidim_awesome/admin/destroy_constraint.rb,
app/commands/decidim/decidim_awesome/admin/rename_scope_label.rb,
app/presenters/decidim/decidim_awesome/private_data_presenter.rb,
app/cells/decidim/decidim_awesome/content_blocks/map_form_cell.rb,
app/commands/decidim/decidim_awesome/admin/create_scoped_admin.rb,
app/commands/decidim/decidim_awesome/admin/create_scoped_style.rb,
app/controllers/decidim/decidim_awesome/application_controller.rb,
lib/decidim/decidim_awesome/context_analyzers/request_analyzer.rb,
app/cells/decidim/decidim_awesome/voting/proposal_metadata_cell.rb,
app/cells/decidim/decidim_awesome/voting/voting_cards_base_cell.rb,
app/commands/decidim/decidim_awesome/admin/destroy_scoped_admin.rb,
app/commands/decidim/decidim_awesome/admin/destroy_scoped_style.rb,
app/controllers/decidim/decidim_awesome/admin/checks_controller.rb,
app/controllers/decidim/decidim_awesome/admin/config_controller.rb,
app/controllers/decidim/decidim_awesome/editor_images_controller.rb,
app/helpers/decidim/decidim_awesome/admin/system_checker_helpers.rb,
lib/decidim/decidim_awesome/content_parsers/editor_images_parser.rb,
lib/decidim/decidim_awesome/context_analyzers/component_analyzer.rb,
app/commands/decidim/decidim_awesome/admin/create_custom_redirect.rb,
app/commands/decidim/decidim_awesome/admin/update_custom_redirect.rb,
app/presenters/decidim/decidim_awesome/paper_trail_base_presenter.rb,
app/commands/decidim/decidim_awesome/admin/destroy_custom_redirect.rb,
app/controllers/decidim/decidim_awesome/blank_component_controller.rb,
lib/decidim/decidim_awesome/api/types/localized_custom_fields_type.rb,
app/cells/concerns/decidim/decidim_awesome/proposal_l_cell_override.rb,
app/cells/decidim/decidim_awesome/voting/voting_cards_proposal_cell.rb,
app/controllers/concerns/decidim/decidim_awesome/not_found_redirect.rb,
app/controllers/decidim/decidim_awesome/admin/menu_hacks_controller.rb,
lib/decidim/decidim_awesome/api/types/translated_custom_fields_type.rb,
app/cells/concerns/decidim/decidim_awesome/global_menu_cell_override.rb,
app/controllers/decidim/decidim_awesome/admin/application_controller.rb,
app/controllers/decidim/decidim_awesome/admin/constraints_controller.rb,
app/controllers/decidim/decidim_awesome/admin/maintenance_controller.rb,
app/controllers/decidim/decidim_awesome/map_component/map_controller.rb,
app/helpers/decidim/decidim_awesome/admin/config_constraints_helpers.rb,
app/controllers/concerns/decidim/decidim_awesome/needs_awesome_config.rb,
app/models/concerns/decidim/decidim_awesome/has_proposal_extra_fields.rb,
app/controllers/decidim/decidim_awesome/admin/scoped_admins_controller.rb,
app/controllers/decidim/decidim_awesome/admin/scoped_styles_controller.rb,
app/serializers/decidim/decidim_awesome/paper_trail_version_serializer.rb,
app/commands/decidim/decidim_awesome/admin/create_proposal_custom_field.rb,
app/helpers/concerns/decidim/decidim_awesome/amendments_helper_override.rb,
app/helpers/concerns/decidim/decidim_awesome/breadcrumb_helper_override.rb,
app/presenters/concerns/decidim/decidim_awesome/menu_presenter_override.rb,
app/commands/decidim/decidim_awesome/admin/destroy_proposal_custom_field.rb,
app/controllers/concerns/decidim/decidim_awesome/content_security_policy.rb,
app/controllers/concerns/decidim/decidim_awesome/limit_pending_amendments.rb,
app/controllers/decidim/decidim_awesome/admin/custom_redirects_controller.rb,
app/presenters/decidim/decidim_awesome/participatory_space_role_presenter.rb,
app/types/concerns/decidim/decidim_awesome/add_proposal_type_vote_weights.rb,
app/controllers/concerns/decidim/decidim_awesome/admin/maintenance_context.rb,
app/controllers/decidim/decidim_awesome/iframe_component/iframe_controller.rb,
app/types/concerns/decidim/decidim_awesome/add_proposal_type_custom_fields.rb,
lib/decidim/decidim_awesome/context_analyzers/participatory_space_analyzer.rb,
app/forms/concerns/decidim/decidim_awesome/proposals/proposal_form_override.rb,
app/commands/concerns/decidim/decidim_awesome/admin/needs_constraint_helpers.rb,
app/presenters/concerns/decidim/decidim_awesome/menu_item_presenter_override.rb,
app/validators/concerns/decidim/decidim_awesome/etiquette_validator_override.rb,
app/controllers/concerns/decidim/decidim_awesome/proposals/orderable_override.rb,
app/controllers/decidim/decidim_awesome/admin/admin_accountability_controller.rb,
app/presenters/decidim/decidim_awesome/admin_log/component_presenter_override.rb,
app/serializers/decidim/decidim_awesome/proposals/private_proposal_serializer.rb,
app/controllers/decidim/decidim_awesome/admin/proposal_custom_fields_controller.rb,
app/commands/concerns/decidim/decidim_awesome/proposals/create_proposal_override.rb,
app/commands/concerns/decidim/decidim_awesome/proposals/update_proposal_override.rb,
app/helpers/concerns/decidim/decidim_awesome/proposals/application_helper_override.rb,
app/presenters/concerns/decidim/decidim_awesome/proposals/proposal_presenter_override.rb,
app/commands/concerns/decidim/decidim_awesome/proposals/admin/update_proposal_override.rb,
app/controllers/concerns/decidim/decidim_awesome/admin_accountability/admin/filterable.rb,
app/serializers/concerns/decidim/decidim_awesome/proposals/proposal_serializer_methods.rb,
app/serializers/concerns/decidim/decidim_awesome/proposals/proposal_serializer_override.rb,
app/commands/concerns/decidim/decidim_awesome/proposals/create_collaborative_draft_override.rb,
app/commands/concerns/decidim/decidim_awesome/proposals/update_collaborative_draft_override.rb,
app/presenters/concerns/decidim/decidim_awesome/breadcrumb_root_menu_item_presenter_override.rb,
app/controllers/concerns/decidim/decidim_awesome/admin_accountability/admin/filterable_helper.rb,
app/controllers/concerns/decidim/decidim_awesome/proposals/proposal_votes_controller_override.rb,
app/forms/concerns/decidim/decidim_awesome/proposals/proposal_wizard_create_step_form_override.rb

Overview

add a global helper with awesome configuration

Defined Under Namespace

Modules: AddProposalTypeCustomFields, AddProposalTypeVoteWeights, Admin, AdminAccountability, AdminLog, AmendmentsHelperOverride, AwesomeHelpers, BreadcrumbHelperOverride, BreadcrumbRootMenuItemPresenterOverride, ContentBlocks, ContentParsers, ContentSecurityPolicy, ContextAnalyzers, EtiquetteValidatorOverride, GlobalMenuCellOverride, HasProposalExtraFields, HasVoteWeight, IframeComponent, LimitPendingAmendments, MapComponent, MapHelper, MenuItemPresenterOverride, MenuPresenterOverride, NeedsAwesomeConfig, NotFoundRedirect, ProposalLCellOverride, Proposals, SystemChecker, UserOverride, Voting Classes: AdminEngine, ApplicationController, ApplicationRecord, AwesomeConfig, BlankComponentController, Command, Config, ConfigConstraint, CreateEditorImage, CurrentConfig, CustomFields, DestroyPrivateDataJob, EditorImage, EditorImageForm, EditorImagesController, Engine, ExportAdminActionsJob, ImageUploader, LocalizedCustomFieldsType, Lock, Menu, MenuHacker, MigrateLegacyImagesJob, PaperTrailBasePresenter, PaperTrailVersion, PaperTrailVersionSerializer, ParticipatorySpaceRolePresenter, Permissions, PrivateDataFinder, PrivateDataPresenter, ProposalExtraField, RoleBasePresenter, TranslatedCustomFieldsType, UserEntityPresenter, VoteWeight, VotingManifest

Constant Summary collapse

VERSION =
"0.11.2"
COMPAT_DECIDIM_VERSION =
[">= 0.28.0", "< 0.29"].freeze

Class Method Summary collapse

Class Method Details

.collation_for(locale) ⇒ Object



334
335
336
337
338
339
340
341
# File 'lib/decidim/decidim_awesome/awesome.rb', line 334

def self.collation_for(locale)
  @collation_for ||= {}
  @collation_for[locale] ||= ["#{locale}-x-icu", "#{locale[0..1]}%"].filter_map do |loc|
    sql = ApplicationRecord.sanitize_sql(["SELECT collname FROM pg_collation WHERE collname LIKE ? LIMIT 1", loc])
    res = ActiveRecord::Base.connection.execute(sql).first
    res["collname"] if res
  end.first
end

.enabled?(*config_vars) ⇒ Boolean

Returns:

  • (Boolean)


343
344
345
346
347
348
349
# File 'lib/decidim/decidim_awesome/awesome.rb', line 343

def self.enabled?(*config_vars)
  config_vars.any? do |item|
    next unless config.has_key?(item.to_sym)

    config.send(item) != :disabled
  end
end

.hash_append!(hash, after_key, key, value) ⇒ Object

appends to a hash a new value in a specified position so that the hash becomes: { a: 1, b: 2, c: 3 } => append_hash(hash, :b, :d, 4) => { a: 1, b: 2, d: 4, c: 3 } if key is not found then it will be inserted at the end



319
320
321
322
323
# File 'lib/decidim/decidim_awesome/awesome.rb', line 319

def self.hash_append!(hash, after_key, key, value)
  insert_at = hash.to_a.index(hash.assoc(after_key))
  insert_at = insert_at.nil? ? hash.size : insert_at + 1
  hash.replace(hash.to_a.insert(insert_at, [key, value]).to_h)
end

.hash_prepend!(hash, before_key, key, value) ⇒ Object

prepends to a hash a new value in a specified position so that the hash becomes: { a: 1, b: 2, c: 3 } => prepend_hash(hash, :b, :d, 4) => { a: 1, d: 4, b: 2, c: 3 } if key is not found then it will be inserted at the beggining



328
329
330
331
332
# File 'lib/decidim/decidim_awesome/awesome.rb', line 328

def self.hash_prepend!(hash, before_key, key, value)
  insert_at = hash.to_a.index(hash.assoc(before_key))
  insert_at = 0 if insert_at.nil?
  hash.replace(hash.to_a.insert(insert_at, [key, value]).to_h)
end

.legacy_version?Boolean

version 0.11 is compatible only with decidim 0.28

Returns:

  • (Boolean)


362
363
364
365
# File 'lib/decidim/decidim_awesome/awesome.rb', line 362

def self.legacy_version?
  # Decidim.version[0..3] == "0.28"
  false
end

.possible_additional_proposal_sortingsObject

HELPERS

pass a single config var or an array of them any non disabled match will return as true



306
307
308
309
310
311
312
313
314
# File 'lib/decidim/decidim_awesome/awesome.rb', line 306

def self.possible_additional_proposal_sortings
  return [] unless additional_proposal_sortings.is_a?(Array)

  @possible_additional_proposal_sortings ||= additional_proposal_sortings.filter_map do |sort|
    next unless sort.to_sym.in?([:az, :za, :supported_first, :supported_last])

    sort.to_s
  end
end

.register_component(manifest, &block) ⇒ Object

Wrap registered components to register it later, after initializing so we can honor disabled_components config



357
358
359
# File 'lib/decidim/decidim_awesome/awesome.rb', line 357

def self.register_component(manifest, &block)
  registered_components << [manifest, block]
end

.registered_componentsObject



351
352
353
# File 'lib/decidim/decidim_awesome/awesome.rb', line 351

def self.registered_components
  @registered_components ||= []
end

.voting_registryObject

Public: Stores an instance of ContentBlockRegistry



297
298
299
# File 'lib/decidim/decidim_awesome/awesome.rb', line 297

def self.voting_registry
  @voting_registry ||= Decidim::ManifestRegistry.new("decidim_awesome/voting")
end