decidim-decidim_awesome 0.8.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +363 -0
- data/README.md +375 -100
- data/Rakefile +2 -1
- data/app/cells/concerns/decidim/decidim_awesome/global_menu_cell_override.rb +20 -0
- data/app/cells/concerns/decidim/decidim_awesome/proposal_l_cell_override.rb +26 -0
- data/app/cells/decidim/decidim_awesome/content_blocks/map/show.erb +5 -12
- data/app/cells/decidim/decidim_awesome/content_blocks/map_cell.rb +7 -7
- data/app/cells/decidim/decidim_awesome/voting/proposal_metadata_cell.rb +69 -0
- data/app/cells/decidim/decidim_awesome/voting/voting_cards_base_cell.rb +40 -0
- data/app/cells/decidim/decidim_awesome/voting/voting_cards_proposal/modal.erb +18 -0
- data/app/cells/decidim/decidim_awesome/voting/voting_cards_proposal/show.erb +40 -0
- data/app/cells/decidim/decidim_awesome/voting/voting_cards_proposal/vote_block_for.erb +16 -0
- data/app/cells/decidim/decidim_awesome/voting/voting_cards_proposal_cell.rb +90 -0
- data/app/commands/concerns/decidim/decidim_awesome/admin/needs_constraint_helpers.rb +2 -2
- data/app/commands/concerns/decidim/decidim_awesome/proposals/admin/update_proposal_override.rb +31 -0
- data/app/commands/concerns/decidim/decidim_awesome/proposals/create_collaborative_draft_override.rb +27 -0
- data/app/commands/concerns/decidim/decidim_awesome/proposals/create_proposal_override.rb +27 -0
- data/app/commands/concerns/decidim/decidim_awesome/proposals/update_collaborative_draft_override.rb +27 -0
- data/app/commands/concerns/decidim/decidim_awesome/proposals/update_proposal_override.rb +26 -0
- data/app/commands/concerns/decidim/decidim_awesome/system/create_organization_override.rb +29 -0
- data/app/commands/concerns/decidim/decidim_awesome/system/update_organization_override.rb +35 -0
- data/app/commands/concerns/decidim/decidim_awesome/update_account_override.rb +30 -0
- data/app/commands/decidim/decidim_awesome/admin/create_constraint.rb +3 -3
- data/app/commands/decidim/decidim_awesome/admin/create_custom_redirect.rb +1 -1
- data/app/commands/decidim/decidim_awesome/admin/create_menu_hack.rb +1 -1
- data/app/commands/decidim/decidim_awesome/admin/create_proposal_custom_field.rb +5 -4
- data/app/commands/decidim/decidim_awesome/admin/create_scoped_admin.rb +1 -1
- data/app/commands/decidim/decidim_awesome/admin/create_scoped_style.rb +4 -3
- data/app/commands/decidim/decidim_awesome/admin/destroy_constraint.rb +1 -1
- data/app/commands/decidim/decidim_awesome/admin/destroy_custom_redirect.rb +2 -2
- data/app/commands/decidim/decidim_awesome/admin/destroy_menu_hack.rb +2 -2
- data/app/commands/decidim/decidim_awesome/admin/destroy_proposal_custom_field.rb +7 -4
- data/app/commands/decidim/decidim_awesome/admin/destroy_scoped_admin.rb +1 -1
- data/app/commands/decidim/decidim_awesome/admin/destroy_scoped_style.rb +7 -5
- data/app/commands/decidim/decidim_awesome/admin/rename_scope_label.rb +2 -2
- data/app/commands/decidim/decidim_awesome/admin/update_config.rb +2 -3
- data/app/commands/decidim/decidim_awesome/admin/update_constraint.rb +3 -3
- data/app/commands/decidim/decidim_awesome/admin/update_custom_redirect.rb +3 -3
- data/app/commands/decidim/decidim_awesome/admin/update_menu_hack.rb +1 -1
- data/app/commands/decidim/decidim_awesome/command.rb +8 -0
- data/app/commands/decidim/decidim_awesome/create_editor_image.rb +2 -2
- data/app/controllers/concerns/decidim/decidim_awesome/admin/maintenance_context.rb +43 -0
- data/app/controllers/concerns/decidim/decidim_awesome/admin_accountability/admin/filterable.rb +67 -0
- data/app/controllers/concerns/decidim/decidim_awesome/admin_accountability/admin/filterable_helper.rb +38 -0
- data/app/controllers/concerns/decidim/decidim_awesome/check_login_authorizations.rb +60 -0
- data/app/controllers/concerns/decidim/decidim_awesome/content_security_policy.rb +34 -0
- data/app/controllers/concerns/decidim/decidim_awesome/limit_pending_amendments.rb +35 -0
- data/app/controllers/concerns/decidim/decidim_awesome/needs_awesome_config.rb +0 -2
- data/app/controllers/concerns/decidim/decidim_awesome/not_found_redirect.rb +3 -3
- data/app/controllers/concerns/decidim/decidim_awesome/proposals/memoize_extra_fields.rb +23 -0
- data/app/controllers/concerns/decidim/decidim_awesome/proposals/orderable_override.rb +94 -0
- data/app/controllers/concerns/decidim/decidim_awesome/proposals/proposal_votes_controller_override.rb +64 -0
- data/app/controllers/concerns/decidim/decidim_awesome/use_user_time_zone.rb +32 -0
- data/app/controllers/decidim/decidim_awesome/admin/admin_accountability_controller.rb +72 -0
- data/app/controllers/decidim/decidim_awesome/admin/admin_authorizations_controller.rb +122 -0
- data/app/controllers/decidim/decidim_awesome/admin/application_controller.rb +2 -0
- data/app/controllers/decidim/decidim_awesome/admin/checks_controller.rb +21 -17
- data/app/controllers/decidim/decidim_awesome/admin/config_controller.rb +17 -8
- data/app/controllers/decidim/decidim_awesome/admin/constraints_controller.rb +27 -20
- data/app/controllers/decidim/decidim_awesome/admin/custom_redirects_controller.rb +6 -8
- data/app/controllers/decidim/decidim_awesome/admin/maintenance_controller.rb +76 -0
- data/app/controllers/decidim/decidim_awesome/admin/menu_hacks_controller.rb +6 -8
- data/app/controllers/decidim/decidim_awesome/admin/proposal_custom_fields_controller.rb +14 -6
- data/app/controllers/decidim/decidim_awesome/admin/scoped_admins_controller.rb +2 -2
- data/app/controllers/decidim/decidim_awesome/admin/scoped_styles_controller.rb +14 -6
- data/app/controllers/decidim/decidim_awesome/blank_component_controller.rb +8 -3
- data/app/controllers/decidim/decidim_awesome/editor_images_controller.rb +3 -5
- data/app/controllers/decidim/decidim_awesome/iframe_component/iframe_controller.rb +18 -5
- data/app/controllers/decidim/decidim_awesome/required_authorizations_controller.rb +58 -0
- data/app/forms/concerns/decidim/decidim_awesome/account_form_override.rb +25 -0
- data/app/forms/concerns/decidim/decidim_awesome/proposals/proposal_form_customizations.rb +57 -0
- data/app/forms/concerns/decidim/decidim_awesome/proposals/proposal_form_override.rb +21 -0
- data/app/forms/concerns/decidim/decidim_awesome/system/organization_form_override.rb +34 -0
- data/app/forms/decidim/decidim_awesome/admin/config_form.rb +88 -20
- data/app/forms/decidim/decidim_awesome/admin/custom_redirect_form.rb +3 -3
- data/app/forms/decidim/decidim_awesome/admin/intergram_form.rb +4 -0
- data/app/forms/decidim/decidim_awesome/admin/menu_form.rb +5 -5
- data/app/helpers/concerns/decidim/decidim_awesome/amendments_helper_override.rb +65 -0
- data/app/helpers/concerns/decidim/decidim_awesome/breadcrumb_helper_override.rb +23 -0
- data/app/helpers/concerns/decidim/decidim_awesome/proposals/application_helper_override.rb +110 -0
- data/app/helpers/decidim/decidim_awesome/admin/config_constraints_helpers.rb +12 -29
- data/app/helpers/decidim/decidim_awesome/admin/system_checker_helpers.rb +4 -0
- data/app/helpers/decidim/decidim_awesome/map_helper.rb +38 -52
- data/app/jobs/decidim/decidim_awesome/destroy_private_data_job.rb +22 -0
- data/app/jobs/decidim/decidim_awesome/export_admin_actions_job.rb +28 -0
- data/app/models/concerns/decidim/decidim_awesome/has_proposal_extra_fields.rb +80 -0
- data/app/models/concerns/decidim/decidim_awesome/has_vote_weight.rb +30 -0
- data/app/models/decidim/decidim_awesome/awesome_config.rb +1 -2
- data/app/models/decidim/decidim_awesome/config_constraint.rb +0 -2
- data/app/models/decidim/decidim_awesome/editor_image.rb +0 -3
- data/app/models/decidim/decidim_awesome/paper_trail_version.rb +117 -0
- data/app/models/decidim/decidim_awesome/proposal_extra_field.rb +45 -0
- data/app/models/decidim/decidim_awesome/vote_weight.rb +30 -0
- data/app/overrides/decidim/account/show/add_timezone_select.html.erb.deface +3 -0
- data/app/overrides/decidim/admin/officializations/index/add_modal.html.erb.deface +3 -0
- data/app/overrides/decidim/admin/officializations/index/add_td.html.erb.deface +5 -0
- data/app/overrides/decidim/admin/officializations/index/add_th.html.erb.deface +5 -0
- data/app/overrides/decidim/proposals/admin/proposals/_form/replace_editor.html.erb.deface +3 -0
- data/app/overrides/decidim/proposals/admin/proposals/show/add_private_body.html.erb.deface +7 -0
- data/app/overrides/decidim/proposals/admin/proposals/show/replace_body.html.erb.deface +5 -0
- data/app/overrides/decidim/proposals/proposals/_proposal_aside/limit_amendments_modal.html.erb.deface +5 -0
- data/app/overrides/decidim/proposals/proposals/_vote_button/replace_vote_button.html.erb.deface +7 -0
- data/app/overrides/decidim/proposals/proposals/_votes_count/replace_counter.html.erb.deface +10 -0
- data/app/overrides/decidim/system/organizations/_advanced_settings/add_awesome_config.html.erb.deface +9 -0
- data/app/{views/layouts/decidim/_head.html.erb → overrides/layouts/decidim/_decidim_javascript/add_awesome_tags.html.erb.deface} +2 -1
- data/app/overrides/layouts/decidim/_head/add_awesome_tags.html.erb.deface +7 -0
- data/app/overrides/layouts/decidim/admin/_header/add_awesome_custom_styles.html.erb.deface +3 -0
- data/app/overrides/layouts/decidim/admin/_header/add_awesome_tags.html.erb.deface +10 -0
- data/app/packs/entrypoints/decidim_admin_decidim_awesome.js +2 -2
- data/app/packs/entrypoints/decidim_admin_decidim_awesome_global.js +4 -0
- data/app/packs/entrypoints/decidim_admin_decidim_awesome_global.scss +1 -0
- data/app/packs/entrypoints/decidim_admin_decidim_awesome_search_form.scss +1 -0
- data/app/packs/entrypoints/decidim_decidim_awesome.js +2 -2
- data/app/packs/entrypoints/decidim_decidim_awesome_map.scss +1 -1
- data/app/packs/entrypoints/decidim_editor.js +14 -0
- data/app/packs/images/decidim/decidim_awesome/handcard.svg +14 -0
- data/app/packs/images/decidim/decidim_awesome/handcheck.svg +17 -0
- data/app/packs/images/decidim/decidim_awesome/pokecode-logo.png +0 -0
- data/app/packs/src/decidim/decidim_awesome/admin/auto_edit.js +96 -69
- data/app/packs/src/decidim/decidim_awesome/admin/check_redirections.js +46 -41
- data/app/packs/src/decidim/decidim_awesome/admin/codemirror.js +3 -3
- data/app/packs/src/decidim/decidim_awesome/admin/constraint_form_events.js +115 -0
- data/app/packs/src/decidim/decidim_awesome/admin/custom_fields_builder.js +19 -14
- data/app/packs/src/decidim/decidim_awesome/admin/form_exit_warn.js +23 -11
- data/app/packs/src/decidim/decidim_awesome/admin/proposal_sortings.js +26 -0
- data/app/packs/src/decidim/decidim_awesome/admin/tabs_change.js +31 -0
- data/app/packs/src/decidim/decidim_awesome/admin/user_picker.js +34 -20
- data/app/packs/src/decidim/decidim_awesome/admin/verification_selects.js +21 -0
- data/app/packs/src/decidim/decidim_awesome/admin/verifications.js +43 -0
- data/app/packs/src/decidim/decidim_awesome/amendments/show_modal_on_limits.js +28 -0
- data/app/packs/src/decidim/decidim_awesome/awesome_admin.js +7 -16
- data/app/packs/src/decidim/decidim_awesome/awesome_admin_global.js +2 -0
- data/app/packs/src/decidim/decidim_awesome/awesome_application.js +2 -15
- data/app/packs/src/decidim/decidim_awesome/awesome_map/api/fetcher.js +48 -23
- data/app/packs/src/decidim/decidim_awesome/awesome_map/api/meetings_fetcher.js +9 -12
- data/app/packs/src/decidim/decidim_awesome/awesome_map/api/proposals_fetcher.js +28 -0
- data/app/packs/src/decidim/decidim_awesome/awesome_map/awesome_map.js +15 -15
- data/app/packs/src/decidim/decidim_awesome/awesome_map/controllers/controller.js +70 -37
- data/app/packs/src/decidim/decidim_awesome/awesome_map/controllers/meetings_controller.js +11 -7
- data/app/packs/src/decidim/decidim_awesome/awesome_map/controllers/proposals_controller.js +9 -16
- data/app/packs/src/decidim/decidim_awesome/awesome_map/controls_ui.js +75 -45
- data/app/packs/src/decidim/decidim_awesome/awesome_map/load_map.js +28 -18
- data/app/packs/src/decidim/decidim_awesome/editor/index.js +94 -0
- data/app/packs/src/decidim/decidim_awesome/forms/autosave.js +29 -28
- data/app/packs/src/decidim/decidim_awesome/forms/custom_fields_renderer.js +55 -42
- data/app/packs/src/decidim/decidim_awesome/forms/rich_text_plugin.js +30 -32
- data/app/packs/src/decidim/decidim_awesome/proposals/custom_fields.js +32 -16
- data/app/packs/src/decidim/decidim_awesome/proposals/images.js +16 -10
- data/app/packs/src/decidim/decidim_awesome/voting/voting_cards.js +72 -0
- data/app/packs/stylesheets/decidim/decidim_awesome/admin/admin_accountability.scss +67 -0
- data/app/packs/stylesheets/decidim/decidim_awesome/admin/auto_edits.scss +11 -12
- data/app/packs/stylesheets/decidim/decidim_awesome/admin/check_redirections.scss +15 -0
- data/app/packs/stylesheets/decidim/decidim_awesome/admin/codemirror.scss +24 -12
- data/app/packs/stylesheets/decidim/decidim_awesome/admin/constraints.scss +49 -29
- data/app/packs/stylesheets/decidim/decidim_awesome/admin/custom_fields.scss +28 -71
- data/app/packs/stylesheets/decidim/decidim_awesome/admin/custom_styles.scss +48 -0
- data/app/packs/stylesheets/decidim/decidim_awesome/admin/intergram_fixes.scss +11 -0
- data/app/packs/stylesheets/decidim/decidim_awesome/admin/user_picker.scss +17 -26
- data/app/packs/stylesheets/decidim/decidim_awesome/admin/verifications.scss +99 -0
- data/app/packs/stylesheets/decidim/decidim_awesome/amendments/modal.scss +5 -0
- data/app/packs/stylesheets/decidim/decidim_awesome/awesome_admin.scss +14 -49
- data/app/packs/stylesheets/decidim/decidim_awesome/awesome_admin_global.scss +20 -0
- data/app/packs/stylesheets/decidim/decidim_awesome/awesome_application.scss +4 -18
- data/app/packs/stylesheets/decidim/decidim_awesome/awesome_iframe/iframe.scss +1 -1
- data/app/packs/stylesheets/decidim/decidim_awesome/awesome_map/map.scss +41 -35
- data/app/packs/stylesheets/decidim/decidim_awesome/forms/autosave.scss +6 -6
- data/app/packs/stylesheets/decidim/decidim_awesome/forms/custom_fields.scss +118 -0
- data/app/packs/stylesheets/decidim/decidim_awesome/shared/spinner.scss +26 -0
- data/app/packs/stylesheets/decidim/decidim_awesome/voting/voting_cards.scss +205 -0
- data/app/permissions/decidim/decidim_awesome/admin/permissions.rb +57 -1
- data/app/permissions/decidim/decidim_awesome/permissions.rb +11 -6
- data/app/presenters/concerns/decidim/decidim_awesome/breadcrumb_root_menu_item_presenter_override.rb +23 -0
- data/app/presenters/{decidim → concerns/decidim}/decidim_awesome/menu_item_presenter_override.rb +10 -2
- data/app/presenters/{decidim → concerns/decidim}/decidim_awesome/menu_presenter_override.rb +8 -0
- data/app/presenters/concerns/decidim/decidim_awesome/proposals/proposal_presenter_override.rb +20 -0
- data/app/presenters/decidim/decidim_awesome/admin_log/component_presenter_override.rb +28 -0
- data/app/presenters/decidim/decidim_awesome/admin_log/user_presenter_override.rb +46 -0
- data/app/presenters/decidim/decidim_awesome/paper_trail_base_presenter.rb +28 -0
- data/app/presenters/decidim/decidim_awesome/participatory_space_role_presenter.rb +45 -0
- data/app/presenters/decidim/decidim_awesome/private_data_presenter.rb +70 -0
- data/app/presenters/decidim/decidim_awesome/role_base_presenter.rb +102 -0
- data/app/presenters/decidim/decidim_awesome/user_entity_presenter.rb +50 -0
- data/app/queries/decidim/decidim_awesome/private_data_finder.rb +19 -0
- data/app/serializers/concerns/decidim/decidim_awesome/proposals/proposal_serializer_methods.rb +72 -0
- data/app/serializers/concerns/decidim/decidim_awesome/proposals/proposal_serializer_override.rb +38 -0
- data/app/serializers/decidim/decidim_awesome/paper_trail_version_serializer.rb +37 -0
- data/app/serializers/decidim/decidim_awesome/proposals/private_proposal_serializer.rb +34 -0
- data/app/types/concerns/decidim/decidim_awesome/add_proposal_type_custom_fields.rb +59 -0
- data/app/types/concerns/decidim/decidim_awesome/add_proposal_type_vote_weights.rb +20 -0
- data/app/uploaders/decidim/decidim_awesome/image_uploader.rb +12 -0
- data/app/validators/concerns/decidim/decidim_awesome/etiquette_validator_override.rb +41 -0
- data/app/views/decidim/decidim_awesome/account/_timezone_select.html.erb +3 -0
- data/app/views/decidim/decidim_awesome/admin/admin_accountability/index.html.erb +71 -0
- data/app/views/decidim/decidim_awesome/admin/admin_authorizations/authorization.html.erb +20 -0
- data/app/views/decidim/decidim_awesome/admin/admin_authorizations/callout.html.erb +3 -0
- data/app/views/decidim/decidim_awesome/admin/admin_authorizations/conflict.html.erb +5 -0
- data/app/views/decidim/decidim_awesome/admin/admin_authorizations/edit.html.erb +41 -0
- data/app/views/decidim/decidim_awesome/admin/checks/_assets_tester.html.erb +2 -0
- data/app/views/decidim/decidim_awesome/admin/checks/index.html.erb +51 -48
- data/app/views/decidim/decidim_awesome/admin/config/_autoedit_box_label.html.erb +7 -2
- data/app/views/decidim/decidim_awesome/admin/config/_constraints.html.erb +25 -18
- data/app/views/decidim/decidim_awesome/admin/config/_form_admins.html.erb +7 -6
- data/app/views/decidim/decidim_awesome/admin/config/_form_editors.html.erb +12 -16
- data/app/views/decidim/decidim_awesome/admin/config/_form_livechat.html.erb +39 -23
- data/app/views/decidim/decidim_awesome/admin/config/_form_proposal_custom_fields.html.erb +35 -17
- data/app/views/decidim/decidim_awesome/admin/config/_form_proposal_private_custom_fields.html.erb +1 -0
- data/app/views/decidim/decidim_awesome/admin/config/_form_proposals.html.erb +92 -6
- data/app/views/decidim/decidim_awesome/admin/config/_form_scoped_admin_styles.html.erb +1 -0
- data/app/views/decidim/decidim_awesome/admin/config/_form_scoped_styles.html.erb +48 -0
- data/app/views/decidim/decidim_awesome/admin/config/_form_surveys.html.erb +16 -6
- data/app/views/decidim/decidim_awesome/admin/config/_form_verifications.html.erb +15 -0
- data/app/views/decidim/decidim_awesome/admin/config/show.html.erb +22 -12
- data/app/views/decidim/decidim_awesome/admin/constraints/_form.html.erb +1 -49
- data/app/views/decidim/decidim_awesome/admin/constraints/new.html.erb +14 -9
- data/app/views/decidim/decidim_awesome/admin/constraints/no_permissions.html.erb +6 -0
- data/app/views/decidim/decidim_awesome/admin/constraints/show.html.erb +14 -9
- data/app/views/decidim/decidim_awesome/admin/custom_redirects/_form.html.erb +20 -5
- data/app/views/decidim/decidim_awesome/admin/custom_redirects/edit.html.erb +5 -5
- data/app/views/decidim/decidim_awesome/admin/custom_redirects/index.html.erb +14 -13
- data/app/views/decidim/decidim_awesome/admin/custom_redirects/new.html.erb +5 -5
- data/app/views/decidim/decidim_awesome/admin/maintenance/_private_data.html.erb +44 -0
- data/app/views/decidim/decidim_awesome/admin/maintenance/show.html.erb +44 -0
- data/app/views/decidim/decidim_awesome/admin/menu_hacks/_form.html.erb +6 -6
- data/app/views/decidim/decidim_awesome/admin/menu_hacks/edit.html.erb +21 -12
- data/app/views/decidim/decidim_awesome/admin/menu_hacks/index.html.erb +39 -42
- data/app/views/decidim/decidim_awesome/admin/menu_hacks/new.html.erb +21 -12
- data/app/views/decidim/decidim_awesome/admin/officializations/_participants_td.html.erb +25 -0
- data/app/views/decidim/decidim_awesome/admin/officializations/_participants_th.html.erb +1 -0
- data/app/views/decidim/decidim_awesome/admin/officializations/_verification_modal.html.erb +9 -0
- data/app/views/decidim/decidim_awesome/admin/proposals/_editor.html.erb +8 -5
- data/app/views/decidim/decidim_awesome/admin/proposals/_private_body.html.erb +20 -0
- data/app/views/decidim/decidim_awesome/admin/shared/_filters_with_date.html.erb +61 -0
- data/app/views/decidim/decidim_awesome/amendments/_modal.html.erb +23 -0
- data/app/views/decidim/decidim_awesome/custom_fields/_form_render.html.erb +8 -2
- data/app/views/decidim/decidim_awesome/iframe_component/iframe/show.html.erb +7 -12
- data/app/views/decidim/decidim_awesome/map_component/map/_map_template.html.erb +53 -37
- data/app/views/decidim/decidim_awesome/map_component/map/show.html.erb +14 -5
- data/app/views/decidim/decidim_awesome/required_authorizations/index.html.erb +66 -0
- data/app/views/decidim/decidim_awesome/system/organizations/_admin_allowed_authorizations.html.erb +5 -0
- data/app/views/decidim/decidim_awesome/voting/voting_cards/_show_vote_button.html.erb +3 -0
- data/app/views/decidim/decidim_awesome/voting/voting_cards/_show_votes_count.html.erb +1 -0
- data/app/views/layouts/decidim/decidim_awesome/_awesome_config.html.erb +11 -8
- data/app/views/layouts/decidim/decidim_awesome/_custom_styles.html.erb +1 -1
- data/app/views/layouts/decidim/decidim_awesome/_intergram_widget.html.erb +9 -6
- data/app/views/layouts/decidim/decidim_awesome/admin/_base.html.erb +12 -0
- data/app/views/layouts/decidim/decidim_awesome/admin/_custom_styles.html.erb +3 -0
- data/app/views/layouts/decidim/decidim_awesome/admin/admin_authorizations.html.erb +7 -0
- data/app/views/layouts/decidim/decidim_awesome/admin/application.html.erb +3 -0
- data/app/views/layouts/decidim/decidim_awesome/admin/maintenance.html.erb +19 -0
- data/config/assets.rb +5 -34
- data/config/i18n-tasks.yml +30 -0
- data/config/locales/ca.yml +335 -26
- data/config/locales/cs.yml +331 -22
- data/config/locales/de.yml +642 -0
- data/config/locales/en.yml +403 -33
- data/config/locales/es.yml +333 -24
- data/config/locales/eu.yml +623 -20
- data/config/locales/fr.yml +282 -23
- data/config/locales/hu.yml +268 -0
- data/config/locales/it.yml +155 -24
- data/config/locales/ja.yml +334 -25
- data/config/locales/lt.yml +94 -0
- data/config/locales/nl.yml +20 -19
- data/config/locales/pt-BR.yml +31 -24
- data/config/locales/ro-RO.yml +152 -0
- data/config/locales/sv.yml +28 -12
- data/config/rubocop/disabled.yml +11 -0
- data/config/rubocop/faker.yml +480 -0
- data/config/rubocop/rails.yml +88 -0
- data/config/rubocop/rspec.yml +65 -0
- data/config/rubocop/ruby.yml +1210 -0
- data/db/migrate/20231006113837_create_decidim_awesome_vote_weights.rb +13 -0
- data/db/migrate/20231006113841_create_decidim_awesome_proposal_extra_fields.rb +14 -0
- data/db/migrate/20240306175331_rename_editor_images_awesome_config.rb +18 -0
- data/db/migrate/20240531224204_add_decidim_awesome_proposal_private_fields.rb +29 -0
- data/db/migrate/20240729164227_add_decidim_awesome_proposal_private_fields_date.rb +20 -0
- data/db/seeds.rb +4 -4
- data/lib/decidim/decidim_awesome/admin_engine.rb +41 -6
- data/lib/decidim/decidim_awesome/api/types/localized_custom_fields_type.rb +22 -0
- data/lib/decidim/decidim_awesome/api/types/translated_custom_fields_type.rb +51 -0
- data/lib/decidim/decidim_awesome/authorizator.rb +34 -0
- data/lib/decidim/decidim_awesome/awesome.rb +236 -29
- data/lib/decidim/decidim_awesome/awesome_helpers.rb +57 -17
- data/lib/decidim/decidim_awesome/checksums.yml +95 -20
- data/lib/decidim/decidim_awesome/config.rb +25 -17
- data/lib/decidim/decidim_awesome/context_analyzers/request_analyzer.rb +3 -3
- data/lib/decidim/decidim_awesome/custom_fields.rb +13 -5
- data/lib/decidim/decidim_awesome/engine.rb +250 -19
- data/lib/decidim/decidim_awesome/iframe_component/component.rb +4 -4
- data/lib/decidim/decidim_awesome/lock.rb +47 -0
- data/lib/decidim/decidim_awesome/map_component/component.rb +2 -2
- data/lib/decidim/decidim_awesome/menu.rb +201 -0
- data/lib/decidim/decidim_awesome/menu_hacker.rb +7 -5
- data/{app/middleware/decidim/decidim_awesome → lib/decidim/decidim_awesome/middleware}/current_config.rb +5 -3
- data/lib/decidim/decidim_awesome/request_memoizer.rb +16 -0
- data/lib/decidim/decidim_awesome/system_checker.rb +6 -2
- data/lib/decidim/decidim_awesome/test/factories.rb +31 -9
- data/lib/decidim/decidim_awesome/test/initializer.rb +22 -6
- data/lib/decidim/decidim_awesome/test/layouts/decidim/_head.html.erb +2 -2
- data/lib/decidim/decidim_awesome/test/layouts/decidim/admin/_header.html.erb +2 -2
- data/lib/decidim/decidim_awesome/test/shared_examples/action_log_presenter_examples.rb +61 -0
- data/lib/decidim/decidim_awesome/test/shared_examples/{box_label_editor.rb → box_label_editor_examples.rb} +22 -22
- data/lib/decidim/decidim_awesome/test/shared_examples/config_examples.rb +24 -6
- data/lib/decidim/decidim_awesome/test/shared_examples/custom_fields_examples.rb +155 -0
- data/lib/decidim/decidim_awesome/test/shared_examples/custom_redirects_contexts.rb +7 -7
- data/lib/decidim/decidim_awesome/test/shared_examples/custom_styles_examples.rb +156 -0
- data/lib/decidim/decidim_awesome/test/shared_examples/editor_examples.rb +42 -58
- data/lib/decidim/decidim_awesome/test/shared_examples/menu_hack_contexts.rb +9 -8
- data/lib/decidim/decidim_awesome/test/shared_examples/scoped_admins_examples.rb +40 -29
- data/lib/decidim/decidim_awesome/test/shared_examples/summary_examples.rb +129 -38
- data/lib/decidim/decidim_awesome/version.rb +2 -2
- data/lib/decidim/decidim_awesome/voting_manifest.rb +55 -0
- data/lib/decidim/decidim_awesome.rb +1 -3
- data/lib/tasks/decidim_awesome_upgrade_tasks.rake +9 -0
- data/lib/tasks/decidim_awesome_webpacker_tasks.rake +2 -0
- data/package.json +54 -0
- metadata +192 -86
- data/app/forms/decidim/decidim_awesome/proposals/proposal_wizard_create_step_form_override.rb +0 -38
- data/app/helpers/decidim/decidim_awesome/amendments_helper_override.rb +0 -48
- data/app/helpers/decidim/decidim_awesome/proposals/application_helper_override.rb +0 -78
- data/app/jobs/decidim/decidim_awesome/migrate_legacy_images_job.rb +0 -106
- data/app/packs/entrypoints/decidim_admin_decidim_awesome_custom_fields.js +0 -2
- data/app/packs/entrypoints/decidim_decidim_awesome_admin_form_exit_warn.js +0 -1
- data/app/packs/images/decidim/decidim_awesome/platoniq-logo.png +0 -0
- data/app/packs/src/decidim/decidim_awesome/admin/constraints.js +0 -55
- data/app/packs/src/decidim/decidim_awesome/editors/editor.js +0 -190
- data/app/packs/src/decidim/decidim_awesome/editors/tabs_focus.js +0 -22
- data/app/packs/src/vendor/image-resize.min.js +0 -1
- data/app/packs/src/vendor/image-upload.min.js +0 -6
- data/app/packs/src/vendor/leaflet.featuregroup.subgroup.js +0 -184
- data/app/packs/stylesheets/decidim/decidim_awesome/editors/markdown_editor.scss +0 -19
- data/app/packs/stylesheets/decidim/decidim_awesome/editors/quill_editor.scss +0 -58
- data/app/packs/stylesheets/vendor/select2-foundation-theme.scss +0 -348
- data/app/uploaders/decidim/cw/decidim_awesome/image_uploader.rb +0 -26
- data/app/views/decidim/decidim_awesome/admin/config/_form_styles.html.erb +0 -26
- data/app/views/decidim/decidim_awesome/admin/config/_modal.html.erb +0 -11
- data/app/views/decidim/proposals/admin/proposals/_form.html.erb +0 -101
- data/app/views/decidim/proposals/collaborative_drafts/_edit_form_fields.html.erb +0 -83
- data/app/views/decidim/proposals/collaborative_drafts/show.html.erb +0 -1
- data/app/views/layouts/decidim/admin/_header.html.erb +0 -5
- data/app/views/layouts/decidim/admin/decidim_awesome.html.erb +0 -75
- data/app/views/v0.25/decidim/proposals/collaborative_drafts/_show.html.erb +0 -128
- data/app/views/v0.25/layouts/decidim/_head.html.erb +0 -41
- data/app/views/v0.25/layouts/decidim/admin/_header.html.erb +0 -11
- data/app/views/v0.26/decidim/proposals/collaborative_drafts/_show.html.erb +0 -128
- data/app/views/v0.26/layouts/decidim/_head.html.erb +0 -45
- data/app/views/v0.26/layouts/decidim/admin/_header.html.erb +0 -11
- data/lib/decidim/decidim_awesome/content_parsers/editor_images_parser.rb +0 -39
- data/lib/tasks/decidim_awesome_active_storage_migrations_tasks.rake +0 -37
- /data/app/models/{decidim → concerns/decidim}/decidim_awesome/user_override.rb +0 -0
@@ -4,13 +4,20 @@ module Decidim
|
|
4
4
|
module DecidimAwesome
|
5
5
|
include ActiveSupport::Configurable
|
6
6
|
|
7
|
+
autoload :AwesomeHelpers, "decidim/decidim_awesome/awesome_helpers"
|
8
|
+
autoload :RequestMemoizer, "decidim/decidim_awesome/request_memoizer"
|
7
9
|
autoload :Config, "decidim/decidim_awesome/config"
|
8
10
|
autoload :SystemChecker, "decidim/decidim_awesome/system_checker"
|
9
11
|
autoload :ContextAnalyzers, "decidim/decidim_awesome/context_analyzers"
|
10
12
|
autoload :MenuHacker, "decidim/decidim_awesome/menu_hacker"
|
11
13
|
autoload :CustomFields, "decidim/decidim_awesome/custom_fields"
|
14
|
+
autoload :VotingManifest, "decidim/decidim_awesome/voting_manifest"
|
15
|
+
autoload :Lock, "decidim/decidim_awesome/lock"
|
16
|
+
autoload :TranslatedCustomFieldsType, "decidim/decidim_awesome/api/types/translated_custom_fields_type"
|
17
|
+
autoload :LocalizedCustomFieldsType, "decidim/decidim_awesome/api/types/localized_custom_fields_type"
|
18
|
+
autoload :Authorizator, "decidim/decidim_awesome/authorizator"
|
12
19
|
|
13
|
-
# Awesome
|
20
|
+
# Awesome comes with some components for participatory spaces
|
14
21
|
# Currently :awesome_map and :awesome_iframe, list them here
|
15
22
|
# if you wan to disable them
|
16
23
|
# NOTE if you have spaces with some of these components already configured
|
@@ -31,11 +38,11 @@ module Decidim
|
|
31
38
|
# true => always true but admins can still restrict its scope
|
32
39
|
# false => default false, admins can turn it true
|
33
40
|
# :disabled => false and non available, hidden from admins
|
34
|
-
config_accessor :
|
41
|
+
config_accessor :allow_images_in_editors do
|
35
42
|
false
|
36
43
|
end
|
37
44
|
|
38
|
-
config_accessor :
|
45
|
+
config_accessor :allow_videos_in_editors do
|
39
46
|
false
|
40
47
|
end
|
41
48
|
|
@@ -43,32 +50,89 @@ module Decidim
|
|
43
50
|
false
|
44
51
|
end
|
45
52
|
|
46
|
-
config_accessor :use_markdown_editor do
|
47
|
-
false
|
48
|
-
end
|
49
|
-
|
50
|
-
config_accessor :allow_images_in_markdown_editor do
|
51
|
-
false
|
52
|
-
end
|
53
|
-
|
54
53
|
# used to save forms in localstorage
|
55
54
|
config_accessor :auto_save_forms do
|
56
|
-
|
55
|
+
true
|
57
56
|
end
|
58
57
|
|
59
58
|
# Live chat widget linked to Telegram account or group
|
59
|
+
# In the admin side only
|
60
60
|
config_accessor :intergram_for_admins do
|
61
|
-
|
61
|
+
true
|
62
62
|
end
|
63
63
|
|
64
|
+
# In the public side only
|
64
65
|
config_accessor :intergram_for_public do
|
66
|
+
true
|
67
|
+
end
|
68
|
+
|
69
|
+
# Configuration options to handle different validations in proposals
|
70
|
+
# (maybe in the future will apply to other places)
|
71
|
+
# Set it to :disabled if you don't want to use this feature
|
72
|
+
config_accessor :validate_title_min_length do
|
73
|
+
15
|
74
|
+
end
|
75
|
+
|
76
|
+
config_accessor :validate_title_max_caps_percent do
|
77
|
+
25
|
78
|
+
end
|
79
|
+
|
80
|
+
config_accessor :validate_title_max_marks_together do
|
81
|
+
1
|
82
|
+
end
|
83
|
+
|
84
|
+
config_accessor :validate_title_start_with_caps do
|
85
|
+
true
|
86
|
+
end
|
87
|
+
|
88
|
+
config_accessor :validate_body_min_length do
|
89
|
+
15
|
90
|
+
end
|
91
|
+
|
92
|
+
config_accessor :validate_body_max_caps_percent do
|
93
|
+
25
|
94
|
+
end
|
95
|
+
|
96
|
+
config_accessor :validate_body_max_marks_together do
|
97
|
+
1
|
98
|
+
end
|
99
|
+
|
100
|
+
config_accessor :validate_body_start_with_caps do
|
101
|
+
true
|
102
|
+
end
|
103
|
+
|
104
|
+
# This transforms the proposal voting into a weighted voting
|
105
|
+
# Different processors can be registered and configured in the component's settings
|
106
|
+
# Each processor must account for a cell to display how to vote and a cell to display the results
|
107
|
+
config_accessor :weighted_proposal_voting do
|
108
|
+
true
|
109
|
+
end
|
110
|
+
|
111
|
+
# Additional sorting methods for proposals
|
112
|
+
# this setting also stores the selected sorting method in the user's session
|
113
|
+
config_accessor :additional_proposal_sortings do
|
114
|
+
[
|
115
|
+
:supported_first,
|
116
|
+
:supported_last,
|
117
|
+
:az,
|
118
|
+
:za
|
119
|
+
]
|
120
|
+
end
|
121
|
+
|
122
|
+
# Allows admins to limit the amount of pending amendments to (currently) one per proposal before it's accepted.
|
123
|
+
# Once a pending amendment is accepted, a new on can be created.
|
124
|
+
# Note that this does not limit the number of amendment per se, the admin has to set the limit in the proposal's component configuration.
|
125
|
+
# set to :disable to will prevent admins to set an amendment's limit in the proposal's component configuration.
|
126
|
+
# if set to "true" the checkbox will be checked by default
|
127
|
+
# if set to "false" the checkbox will be unchecked by default
|
128
|
+
config_accessor :allow_limiting_amendments do
|
65
129
|
false
|
66
130
|
end
|
67
131
|
|
68
|
-
# allows admins to created specific CSS snippets affecting only some specific parts
|
132
|
+
# allows admins to created specific CSS snippets affecting only some public frontend specific parts
|
69
133
|
# Valid values differ a little from the previous convention:
|
70
134
|
# :disabled => false and non available, hidden from admins
|
71
|
-
# Hash => hash of different css text, each key will be used for the
|
135
|
+
# Hash => hash of different css text, each key will be used for the constraints
|
72
136
|
# Admins create this hash dynamically but some pre-defined css boxes can be created here as:
|
73
137
|
# {
|
74
138
|
# some_identifier: ".wrapper { background: red; }"
|
@@ -77,11 +141,23 @@ module Decidim
|
|
77
141
|
{}
|
78
142
|
end
|
79
143
|
|
144
|
+
# allows admins to created specific CSS snippets affecting only some admin specific parts
|
145
|
+
# Valid values differ a little from the previous convention:
|
146
|
+
# :disabled => false and non available, hidden from admins
|
147
|
+
# Hash => hash of different css text, each key will be used for the constraints
|
148
|
+
# Admins create this hash dynamically but some pre-defined css boxes can be created here as:
|
149
|
+
# {
|
150
|
+
# some_identifier: ".wrapper { background: red; }"
|
151
|
+
# }
|
152
|
+
config_accessor :scoped_admin_styles do
|
153
|
+
{}
|
154
|
+
end
|
155
|
+
|
80
156
|
# custom fields for proposals using JSON specification:
|
81
157
|
# https://github.com/jsonform/jsonform/wiki
|
82
158
|
# Valid values uses the same structure as :scoped_styles
|
83
159
|
# :disabled => false and non available, hidden from admins
|
84
|
-
# Hash => hash of different JSON texts, each key will be used for the
|
160
|
+
# Hash => hash of different JSON texts, each key will be used for the constraints
|
85
161
|
# Admins can create this hash dynamically but some pre-defined css boxes can be created here as:
|
86
162
|
# {
|
87
163
|
# some_identifier: "{ ... some definition... }"
|
@@ -90,8 +166,62 @@ module Decidim
|
|
90
166
|
{}
|
91
167
|
end
|
92
168
|
|
169
|
+
# Same as proposal_custom_fields but for generating private fields than can be read only by admins
|
170
|
+
config_accessor :proposal_private_custom_fields do
|
171
|
+
{}
|
172
|
+
end
|
173
|
+
|
174
|
+
# whether to add a select to user's profile to allow them to select their preferred time zone
|
175
|
+
# if set to false, the select won't be shown but it can still be configured by the admins
|
176
|
+
# if set to :disabled the feature will be completely removed
|
177
|
+
config_accessor :user_timezone do
|
178
|
+
false
|
179
|
+
end
|
180
|
+
|
181
|
+
# Forces the user to authorize using some registered verification flow in order to access the platform
|
182
|
+
# if set to an empty array, the user will be able to access the platform without any verification but admins can still enforce it
|
183
|
+
# if set to :disabled the feature will be completely removed
|
184
|
+
# You can initialize some default verification workflow manifests
|
185
|
+
config_accessor :force_authorization_after_login do
|
186
|
+
[]
|
187
|
+
end
|
188
|
+
|
189
|
+
# By default all methods specified in force_authorization_after_login must be granted in order to access the platform
|
190
|
+
# if set to true, the user will be able to access the platform if any of the methods is granted
|
191
|
+
config_accessor :force_authorization_with_any_method do
|
192
|
+
false
|
193
|
+
end
|
194
|
+
|
195
|
+
# When force_authorization_after_login is enabled, this text will be shown to the user as a help text (ie: add a contact information)
|
196
|
+
config_accessor :force_authorization_help_text do
|
197
|
+
{}
|
198
|
+
end
|
199
|
+
|
200
|
+
# Allows admins to manually authorize users with the specified methods
|
201
|
+
# if set to an empty array, the admins will not be able to authorize users but the system admin can still configure it
|
202
|
+
# if set to :disabled the feature will be completely removed
|
203
|
+
config_accessor :admins_available_authorizations do
|
204
|
+
[]
|
205
|
+
end
|
206
|
+
|
207
|
+
# This controllers will be skipped from the authorization check
|
208
|
+
# Included automatically: required_authorizations authorizations upload_validations timeouts editor_images locales pages tos
|
209
|
+
config_accessor :force_authorization_allowed_controller_names do
|
210
|
+
%w(account)
|
211
|
+
end
|
212
|
+
|
213
|
+
# How old must be the private data to be considered expired and therefore presented to the admins for deletion
|
214
|
+
config_accessor :private_data_expiration_time do
|
215
|
+
3.months
|
216
|
+
end
|
217
|
+
|
218
|
+
# How long must be the private data prevented from being deleted again after being scheduled for deletion
|
219
|
+
config_accessor :lock_time do
|
220
|
+
1.minute
|
221
|
+
end
|
222
|
+
|
93
223
|
# allows to keep modifications for the main menu
|
94
|
-
# can return :disabled to
|
224
|
+
# can return :disabled to completely remove this feature
|
95
225
|
# otherwise it should be an array (some overrides can be specified by default):
|
96
226
|
# [
|
97
227
|
# {
|
@@ -104,16 +234,20 @@ module Decidim
|
|
104
234
|
[]
|
105
235
|
end
|
106
236
|
|
107
|
-
|
237
|
+
config_accessor :home_content_block_menu do
|
238
|
+
[]
|
239
|
+
end
|
240
|
+
|
241
|
+
# Allows admins to assign "fake" admins scoped to some admin zones using the
|
108
242
|
# same scope editor as :scoped_styles, valid values uses the same convention:
|
109
243
|
# :disabled => false and non available, hidden from admins
|
110
|
-
# Hash => hash of different admin ids, each key will be used for the
|
244
|
+
# Hash => hash of different admin ids, each key will be used for the constraints
|
111
245
|
# Admins create this hash dynamically but some pre-defined admin boxes can be created here as:
|
112
246
|
# {
|
113
247
|
# some_identifier: [1234, 5678, 90123]
|
114
248
|
# }
|
115
249
|
#
|
116
|
-
# To test this feature in development, ensure that config/
|
250
|
+
# To test this feature in development, ensure that config/environments/development.rb is configured as:
|
117
251
|
# config.action_dispatch.show_exceptions = true
|
118
252
|
# config.action_dispatch.show_detailed_exceptions = false
|
119
253
|
# config.consider_all_requests_local = false
|
@@ -122,13 +256,13 @@ module Decidim
|
|
122
256
|
end
|
123
257
|
|
124
258
|
# Allow to configure custom redirections
|
125
|
-
# can return :disabled to
|
259
|
+
# can return :disabled to completely remove this feature
|
126
260
|
# You can initialize some default redirection if desired as follows:
|
127
261
|
# {
|
128
262
|
# "/decidim-docs" => { destination: "http://docs.decidim.org", active: true }
|
129
263
|
# }
|
130
264
|
#
|
131
|
-
# To test this feature in development, ensure that config/
|
265
|
+
# To test this feature in development, ensure that config/environments/development.rb is configured as:
|
132
266
|
# config.action_dispatch.show_exceptions = true
|
133
267
|
# config.action_dispatch.show_detailed_exceptions = false
|
134
268
|
# config.consider_all_requests_local = false
|
@@ -174,27 +308,94 @@ module Decidim
|
|
174
308
|
# additional correspondences between participatory spaces manifests and routes
|
175
309
|
# ie: /admin/assemblies and /admin/assemblies_types are both treated as a "assembly" participatory space in terms of permission scoping
|
176
310
|
# This can be tuned in a initialized if some other hacks over routes are applied
|
177
|
-
# if a registered participatory space is not listed here then the name manifest will be used as a default route /manifest_name /admin/
|
311
|
+
# if a registered participatory space is not listed here then the name manifest will be used as a default route /manifest_name /admin/manifest_name
|
178
312
|
config_accessor :participatory_spaces_routes_context do
|
179
313
|
{
|
180
|
-
# route in admin is
|
314
|
+
# route in admin is different than in the frontend: /processes, /admin/participatory_processes
|
181
315
|
participatory_processes: [:participatory_processes, :processes],
|
182
316
|
# both /admin/assemblies and /admin/assemblies_types are considered assemblies
|
183
317
|
assemblies: [:assemblies, :assemblies_types],
|
184
|
-
# route in admin is
|
318
|
+
# route in admin is different than in the frontend: /process_groups, /admin/participatory_process_groups
|
185
319
|
process_groups: [:processes_groups, :participatory_process_groups]
|
186
320
|
}
|
187
321
|
end
|
188
322
|
|
323
|
+
# If true, enables a new section in "Participants" where to audit all the admin roles that have been enabled/disabled historically in Decidim
|
324
|
+
# Set to :disabled to completely remove this feature
|
325
|
+
config_accessor :admin_accountability do
|
326
|
+
[:participatory_space_roles, :admin_roles]
|
327
|
+
end
|
328
|
+
|
329
|
+
# Roles for which it is necessary to show admin_accountability
|
330
|
+
config_accessor :participatory_space_roles do
|
331
|
+
[
|
332
|
+
"Decidim::AssemblyUserRole",
|
333
|
+
"Decidim::ParticipatoryProcessUserRole",
|
334
|
+
"Decidim::ConferenceUserRole"
|
335
|
+
]
|
336
|
+
end
|
337
|
+
|
338
|
+
# Which components will be tampered to add the voting registry override
|
339
|
+
config_accessor :voting_components do
|
340
|
+
[:proposals, :reporting_proposals]
|
341
|
+
end
|
342
|
+
|
343
|
+
# A URL where to obtain the translations for the FormBuilder component
|
344
|
+
# you can a custom place if you are worried about the CDN geolocation
|
345
|
+
# Download them from https://github.com/kevinchappell/formBuilder-languages
|
346
|
+
config_accessor :form_builder_langs_location do
|
347
|
+
"https://cdn.jsdelivr.net/npm/formbuilder-languages@1.1.0/"
|
348
|
+
end
|
349
|
+
|
350
|
+
# Public: Stores an instance of ContentBlockRegistry
|
351
|
+
def self.voting_registry
|
352
|
+
@voting_registry ||= Decidim::ManifestRegistry.new("decidim_awesome/voting")
|
353
|
+
end
|
354
|
+
|
189
355
|
#
|
190
356
|
# HELPERS
|
191
357
|
#
|
192
358
|
# pass a single config var or an array of them
|
193
359
|
# any non disabled match will return as true
|
194
|
-
def self.
|
195
|
-
|
360
|
+
def self.possible_additional_proposal_sortings
|
361
|
+
return [] unless additional_proposal_sortings.is_a?(Array)
|
362
|
+
|
363
|
+
@possible_additional_proposal_sortings ||= additional_proposal_sortings.filter_map do |sort|
|
364
|
+
next unless sort.to_sym.in?([:az, :za, :supported_first, :supported_last])
|
196
365
|
|
197
|
-
|
366
|
+
sort.to_s
|
367
|
+
end
|
368
|
+
end
|
369
|
+
|
370
|
+
# appends to a hash a new value in a specified position so that the hash becomes:
|
371
|
+
# { a: 1, b: 2, c: 3 } => append_hash(hash, :b, :d, 4) => { a: 1, b: 2, d: 4, c: 3 }
|
372
|
+
# if key is not found then it will be inserted at the end
|
373
|
+
def self.hash_append!(hash, after_key, key, value)
|
374
|
+
insert_at = hash.to_a.index(hash.assoc(after_key))
|
375
|
+
insert_at = insert_at.nil? ? hash.size : insert_at + 1
|
376
|
+
hash.replace(hash.to_a.insert(insert_at, [key, value]).to_h)
|
377
|
+
end
|
378
|
+
|
379
|
+
# prepends to a hash a new value in a specified position so that the hash becomes:
|
380
|
+
# { a: 1, b: 2, c: 3 } => prepend_hash(hash, :b, :d, 4) => { a: 1, d: 4, b: 2, c: 3 }
|
381
|
+
# if key is not found then it will be inserted at the beginning
|
382
|
+
def self.hash_prepend!(hash, before_key, key, value)
|
383
|
+
insert_at = hash.to_a.index(hash.assoc(before_key))
|
384
|
+
insert_at = 0 if insert_at.nil?
|
385
|
+
hash.replace(hash.to_a.insert(insert_at, [key, value]).to_h)
|
386
|
+
end
|
387
|
+
|
388
|
+
def self.collation_for(locale)
|
389
|
+
@collation_for ||= {}
|
390
|
+
@collation_for[locale] ||= ["#{locale}-x-icu", "#{locale[0..1]}%"].filter_map do |loc|
|
391
|
+
sql = ApplicationRecord.sanitize_sql(["SELECT collname FROM pg_collation WHERE collname LIKE ? LIMIT 1", loc])
|
392
|
+
res = ActiveRecord::Base.connection.execute(sql).first
|
393
|
+
res["collname"] if res
|
394
|
+
end.first
|
395
|
+
end
|
396
|
+
|
397
|
+
def self.enabled?(*config_vars)
|
398
|
+
config_vars.any? do |item|
|
198
399
|
next unless config.has_key?(item.to_sym)
|
199
400
|
|
200
401
|
config.send(item) != :disabled
|
@@ -205,10 +406,16 @@ module Decidim
|
|
205
406
|
@registered_components ||= []
|
206
407
|
end
|
207
408
|
|
208
|
-
#
|
409
|
+
# Wrap registered components to register it later, after initializing
|
209
410
|
# so we can honor disabled_components config
|
210
411
|
def self.register_component(manifest, &block)
|
211
412
|
registered_components << [manifest, block]
|
212
413
|
end
|
414
|
+
|
415
|
+
# version 0.12 is compatible only with decidim 0.29
|
416
|
+
def self.legacy_version?
|
417
|
+
# Decidim.version[0..3] == "0.29"
|
418
|
+
false
|
419
|
+
end
|
213
420
|
end
|
214
421
|
end
|
@@ -6,40 +6,46 @@ module Decidim
|
|
6
6
|
# add a global helper with awesome configuration
|
7
7
|
module DecidimAwesome
|
8
8
|
module AwesomeHelpers
|
9
|
+
include RequestMemoizer
|
10
|
+
|
9
11
|
# Returns the normalized config for an Organization and the current url
|
10
12
|
def awesome_config_instance
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
unless @awesome_config_instance.is_a? Config
|
16
|
-
@awesome_config_instance = Config.new request.env["decidim.current_organization"]
|
17
|
-
@awesome_config_instance.context_from_request request
|
13
|
+
memoize("current_config") do
|
14
|
+
config = Config.new(request.env["decidim.current_organization"])
|
15
|
+
config.context_from_request(request)
|
16
|
+
config
|
18
17
|
end
|
19
|
-
@awesome_config_instance
|
20
18
|
end
|
21
19
|
|
22
20
|
def awesome_config
|
23
|
-
|
21
|
+
memoize("awesome_config") do
|
22
|
+
awesome_config_instance.config
|
23
|
+
end
|
24
24
|
end
|
25
25
|
|
26
26
|
def javascript_config_vars
|
27
|
-
|
27
|
+
memoize("javascript_config_vars") do
|
28
|
+
awesome_config.slice(:allow_images_in_proposals, :allow_images_in_editors, :allow_videos_in_editors, :auto_save_forms).to_json.html_safe
|
29
|
+
end
|
28
30
|
end
|
29
31
|
|
30
32
|
def show_public_intergram?
|
31
|
-
return unless awesome_config[:intergram_for_public]
|
33
|
+
return false unless awesome_config[:intergram_for_public]
|
32
34
|
return true unless awesome_config[:intergram_for_public_settings][:require_login]
|
33
35
|
|
34
36
|
user_signed_in?
|
35
37
|
end
|
36
38
|
|
37
39
|
def unfiltered_awesome_config
|
38
|
-
|
40
|
+
memoize("unfiltered_awesome_config") do
|
41
|
+
awesome_config_instance.unfiltered_config
|
42
|
+
end
|
39
43
|
end
|
40
44
|
|
41
45
|
def organization_awesome_config
|
42
|
-
|
46
|
+
memoize("organization_awesome_config") do
|
47
|
+
awesome_config_instance.organization_config
|
48
|
+
end
|
43
49
|
end
|
44
50
|
|
45
51
|
def awesome_version
|
@@ -47,18 +53,52 @@ module Decidim
|
|
47
53
|
end
|
48
54
|
|
49
55
|
# Collects all CSS that is applied in the current URL context
|
50
|
-
def
|
51
|
-
|
56
|
+
def awesome_scoped_styles
|
57
|
+
memoize("awesome_scoped_styles") do
|
58
|
+
awesome_config_instance.collect_sub_configs_values("scoped_style")
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
# Collects all CSS that is applied in the current URL context
|
63
|
+
def awesome_scoped_admin_styles
|
64
|
+
memoize("awesome_scoped_admin_styles") do
|
65
|
+
awesome_config_instance.collect_sub_configs_values("scoped_admin_style")
|
66
|
+
end
|
52
67
|
end
|
53
68
|
|
54
69
|
# Collects all proposal custom fields that is applied in the current URL context
|
55
70
|
def awesome_scoped_admins
|
56
|
-
|
71
|
+
memoize("awesome_scoped_admins") do
|
72
|
+
awesome_config_instance.collect_sub_configs_values("scoped_admin")
|
73
|
+
end
|
57
74
|
end
|
58
75
|
|
59
76
|
# Collects all proposal custom fields that is applied in the current URL context
|
60
77
|
def awesome_proposal_custom_fields
|
61
|
-
|
78
|
+
memoize("awesome_proposal_custom_fields") do
|
79
|
+
awesome_config_instance.collect_sub_configs_values("proposal_custom_field")
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def awesome_proposal_private_custom_fields
|
84
|
+
memoize("awesome_proposal_private_custom_fields") do
|
85
|
+
awesome_config_instance.collect_sub_configs_values("proposal_private_custom_field")
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
# this will check if the current component has been configured to use a custom voting manifest
|
90
|
+
def awesome_voting_manifest_for(component)
|
91
|
+
memoize("awesome_voting_manifest_for_#{component.id}") do
|
92
|
+
DecidimAwesome.voting_registry.find(component.settings.try(:awesome_voting_manifest))
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
# Retrives all the "admins_available_authorizations" for the user along with other possible authorizations
|
97
|
+
# returns an instance of Decidim::DecidimAwesome::Authorizator
|
98
|
+
def awesome_authorizations_for(user)
|
99
|
+
memoize("awesome_authorizations_for_#{user.id}") do
|
100
|
+
Authorizator.new(user, awesome_config[:admins_available_authorizations])
|
101
|
+
end
|
62
102
|
end
|
63
103
|
|
64
104
|
def version_prefix
|
@@ -1,30 +1,105 @@
|
|
1
1
|
decidim-admin:
|
2
2
|
/app/views/layouts/decidim/admin/_header.html.erb:
|
3
|
-
decidim-0.
|
3
|
+
decidim-0.28: 25bf272ac5a70eb8a975f4889fa46095
|
4
|
+
decidim-0.28.c4d3889: 6391da1f357f9b260622ddd404a47987
|
5
|
+
decidim-0.28.1: b2ae319d5bcf43954bbe0edb9a4e3ffb
|
6
|
+
decidim-0.29.1: b2ae319d5bcf43954bbe0edb9a4e3ffb
|
4
7
|
decidim-core:
|
8
|
+
/app/packs/entrypoints/decidim_editor.js:
|
9
|
+
decidim-0.28: beddd77e3893fd0b7cd2679a7ee6e536
|
10
|
+
decidim-0.29.1: beddd77e3893fd0b7cd2679a7ee6e536
|
11
|
+
/app/packs/src/decidim/editor/index.js:
|
12
|
+
decidim-0.28: 90dfac3acae97202dec083955e2249e4
|
13
|
+
decidim-0.29.1: 90dfac3acae97202dec083955e2249e4
|
14
|
+
/app/validators/etiquette_validator.rb:
|
15
|
+
decidim-0.28: e9ad91d824ad48ac2075a088a0d21349
|
16
|
+
decidim-0.29.1: e9ad91d824ad48ac2075a088a0d21349
|
5
17
|
/app/views/layouts/decidim/_head.html.erb:
|
6
|
-
decidim-0.
|
7
|
-
decidim-0.
|
8
|
-
|
9
|
-
decidim-0.
|
10
|
-
|
18
|
+
decidim-0.28: e51e400a98821f4ca0fff26ebd4d0741
|
19
|
+
decidim-0.28.1: 8ac1af4e223d9a7a98136760b6194a75
|
20
|
+
decidim-0.28.4: 59abccd8b1c5315d5c0b772be0c26d45
|
21
|
+
decidim-0.29.1: 8ac1af4e223d9a7a98136760b6194a75
|
22
|
+
/app/views/layouts/decidim/_decidim_javascript.html.erb:
|
23
|
+
decidim-0.28: dc60ed8abf7649611f18804b67b1408d
|
24
|
+
decidim-0.29.1: 8d51790de859ee66f305d9111cdfb324
|
11
25
|
/app/presenters/decidim/menu_presenter.rb:
|
12
|
-
decidim-0.
|
26
|
+
decidim-0.28: 220c8865a43bd8b7b12a7f926f7f4324
|
27
|
+
decidim-0.29.1: 220c8865a43bd8b7b12a7f926f7f4324
|
13
28
|
/app/presenters/decidim/menu_item_presenter.rb:
|
14
|
-
decidim-0.
|
29
|
+
decidim-0.28: 4e4cd366a8a313079ac5fab466bd3679
|
30
|
+
decidim-0.28.4: f04f0f5112499a86079119d5f9ae8487
|
31
|
+
decidim-0.29.1: f04f0f5112499a86079119d5f9ae8487
|
15
32
|
/app/helpers/decidim/amendments_helper.rb:
|
16
|
-
decidim-0.
|
17
|
-
decidim-0.
|
33
|
+
decidim-0.28: df28f9321d1bc07757746ed608274e3d
|
34
|
+
decidim-0.29.1: 36072334cba7a58841a6b2fb007d24a6
|
35
|
+
/app/presenters/decidim/admin_log/component_presenter.rb:
|
36
|
+
decidim-0.28: 77e80d527727acdf117a0c4517a69a7c
|
37
|
+
decidim-0.29.1: 77e80d527727acdf117a0c4517a69a7c
|
38
|
+
/app/forms/decidim/account_form.rb:
|
39
|
+
decidim-0.28: 11a022ae6ae18ad89da168bec4207935
|
40
|
+
decidim-0.29.1: 11a022ae6ae18ad89da168bec4207935
|
41
|
+
/app/commands/decidim/update_account.rb:
|
42
|
+
decidim-0.28: 363872116fb99372c046b7394d618333
|
43
|
+
decidim-0.29.1: d24090fdd9358c38e6e15c4607a78e18
|
44
|
+
/app/views/decidim/account/show.html.erb:
|
45
|
+
decidim-0.28: a0647f1740d696018f73ec8db8c7587a
|
46
|
+
decidim-0.29.1: f13218e2358a2d611996c2a197c0de25
|
18
47
|
decidim-proposals:
|
19
|
-
/
|
20
|
-
decidim-0.
|
48
|
+
/lib/decidim/proposals/proposal_serializer.rb:
|
49
|
+
decidim-0.28: bbd33bdc60defb734b3fb814666bb622
|
50
|
+
decidim-0.28.1: 7bd5cadb1127a4e81bd5f333670351bd
|
51
|
+
decidim-0.28.2: ab146c54850a4486d96cf50211679671
|
52
|
+
decidim-0.29.1: 58915ff3a7528463587d3762a93ff51b
|
53
|
+
/lib/decidim/api/proposal_type.rb:
|
54
|
+
decidim-0.26: e38e4875e408ec4f658e28725c5a94d4
|
55
|
+
decidim-0.29.1: 25d61a67a4b969ac8c472237d3f64b66
|
56
|
+
/app/forms/decidim/proposals/proposal_form.rb:
|
57
|
+
decidim-0.29.1: 0b19bfeb4f7bd15cd378a69c3935de6b
|
58
|
+
/app/forms/decidim/proposals/admin/proposal_form.rb:
|
59
|
+
decidim-0.28: 422632395194b19beed4c7c65f127ff5
|
60
|
+
decidim-0.29.1: 422632395194b19beed4c7c65f127ff5
|
21
61
|
/app/helpers/decidim/proposals/application_helper.rb:
|
22
|
-
decidim-0.
|
23
|
-
decidim-0.
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
decidim-0.
|
28
|
-
decidim-0.26: 97fa28043a26fc2940d30d38d9a7369b
|
62
|
+
decidim-0.28: 89df14045349cc2eaaec78f79f6140b1
|
63
|
+
decidim-0.28.2: 317b0347528e697fa405a792bcfa3db8
|
64
|
+
decidim-0.29.1: 940488938f644b63a2ef6177f3757ca2
|
65
|
+
/app/controllers/decidim/proposals/proposal_votes_controller.rb:
|
66
|
+
decidim-0.28: f983e72c1ee8d31222d537533c762cd2
|
67
|
+
decidim-0.29.1: f983e72c1ee8d31222d537533c762cd2
|
29
68
|
/app/views/decidim/proposals/admin/proposals/_form.html.erb:
|
30
|
-
decidim-0.
|
69
|
+
decidim-0.28: 824463b320562c15fdb530bfebbf2f0f
|
70
|
+
decidim-0.29.1: 667c2ef6ffbf3369f59bd1e8eb0ba421
|
71
|
+
/app/views/decidim/proposals/proposals/_vote_button.html.erb:
|
72
|
+
decidim-0.27: 3d087d807238f33b71e6b385db8ffc70
|
73
|
+
decidim-0.29.1: 06dd4c9bf7fc4953fc330b7ba081b2f6
|
74
|
+
/app/views/decidim/proposals/proposals/_votes_count.html.erb:
|
75
|
+
decidim-0.27: 6e663e5c82c27291b63f29f346df8737
|
76
|
+
decidim-0.29.1: 6e663e5c82c27291b63f29f346df8737
|
77
|
+
/app/cells/decidim/proposals/proposal_l_cell.rb:
|
78
|
+
decidim-0.27.4: 5e111ed30bca9475bed8247e5e056747
|
79
|
+
decidim-0.28.3: 6d955d56d9d9f0cba46ba157fa923cfc
|
80
|
+
decidim-0.29.1: e38d1cd0ea6c7f14c8f8b56d3ceb0db5
|
81
|
+
/app/cells/decidim/proposals/proposal_metadata_cell.rb:
|
82
|
+
decidim-0.26: eedfd7f813aedbd819b519e03ae4a680
|
83
|
+
decidim-0.29.1: 6859b77805227c4cf71ae0a1351a4551
|
84
|
+
/app/commands/decidim/proposals/create_proposal.rb:
|
85
|
+
decidim-0.28: 95c7bba44dbe477abdfbf450b7eee258
|
86
|
+
decidim-0.29.1: 02a6f54a032457e68be580e6a539c47b
|
87
|
+
/app/commands/decidim/proposals/create_collaborative_draft.rb:
|
88
|
+
decidim-0.28: ab3f937f15c6ed945e776fef34b18abf
|
89
|
+
decidim-0.29.1: ab3f937f15c6ed945e776fef34b18abf
|
90
|
+
/app/commands/decidim/proposals/admin/create_proposal.rb:
|
91
|
+
decidim-0.28: aa0c093cb10b3ccfb046edd0018eae1d
|
92
|
+
decidim-0.28.3: 8d73a8c852f473c118f978ddfab323b1
|
93
|
+
decidim-0.29.1: 837d86d2eb1f2d7579a0cef82d68caf7
|
94
|
+
/app/commands/decidim/proposals/update_proposal.rb:
|
95
|
+
decidim-0.28: 1cc15b946512f4d5a54d1cf5aea8450a
|
96
|
+
decidim-0.29.1: e81268a1f9b3770387944d44d7704291
|
97
|
+
/app/commands/decidim/proposals/update_collaborative_draft.rb:
|
98
|
+
decidim-0.28: 7df5266382bd57db72832da391fe7e11
|
99
|
+
decidim-0.29.1: 7df5266382bd57db72832da391fe7e11
|
100
|
+
/app/commands/decidim/proposals/admin/update_proposal.rb:
|
101
|
+
decidim-0.28: 67b691b6d1ce61cb198592ac25f76f74
|
102
|
+
decidim-0.29.1: 67b691b6d1ce61cb198592ac25f76f74
|
103
|
+
/app/presenters/decidim/proposals/proposal_presenter.rb:
|
104
|
+
decidim-0.28: 72910541010305f25baf297f4a58497b
|
105
|
+
decidim-0.29.1: bbc7cee02125c1f8cf909219e48af337
|