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
@@ -1,9 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
welcome_text = "Dashboard"
|
4
|
+
|
3
5
|
shared_examples "redirects to index" do |_link|
|
4
6
|
it "display index page" do
|
5
7
|
expect(page).to have_content("You are not authorized to perform this action")
|
6
|
-
expect(page).to have_content(
|
8
|
+
expect(page).to have_content(welcome_text)
|
7
9
|
expect(page).to have_current_path(decidim_admin.root_path, ignore_query: true)
|
8
10
|
end
|
9
11
|
end
|
@@ -11,7 +13,7 @@ end
|
|
11
13
|
shared_examples "forbids awesome access" do
|
12
14
|
it "does not have awesome link" do
|
13
15
|
visit decidim_admin.root_path
|
14
|
-
expect(page).
|
16
|
+
expect(page).to have_no_content("Decidim awesome")
|
15
17
|
end
|
16
18
|
|
17
19
|
describe "forbids module access" do
|
@@ -31,7 +33,7 @@ shared_examples "allows awesome access" do
|
|
31
33
|
|
32
34
|
it "allows module access" do
|
33
35
|
visit decidim_admin_decidim_awesome.config_path(:editors)
|
34
|
-
expect(page).to have_content("Tweaks for
|
36
|
+
expect(page).to have_content("Tweaks for Editor Hacks")
|
35
37
|
end
|
36
38
|
end
|
37
39
|
|
@@ -85,7 +87,7 @@ shared_examples "allows external accesses" do
|
|
85
87
|
|
86
88
|
it "shows participants access" do
|
87
89
|
visit decidim_admin.users_path
|
88
|
-
expect(page).to have_content("New
|
90
|
+
expect(page).to have_content("New admin")
|
89
91
|
end
|
90
92
|
|
91
93
|
it "shows pages access" do
|
@@ -107,20 +109,23 @@ end
|
|
107
109
|
shared_examples "allows all admin routes" do
|
108
110
|
before do
|
109
111
|
visit decidim_admin.root_path
|
112
|
+
# this is a workaround to wait for the page to load
|
113
|
+
# it seems that the test might fail randomly otherwise
|
114
|
+
# underlaying issue is unknown, maybe capybara is faster clicking than ruby is at storing class variables?
|
115
|
+
sleep 0.1
|
110
116
|
end
|
111
117
|
|
112
118
|
it "allows the admin root page" do
|
113
|
-
expect(page).to have_content(
|
119
|
+
expect(page).to have_content(welcome_text)
|
114
120
|
end
|
115
121
|
|
116
122
|
it "allows the assemblies page" do
|
117
|
-
|
118
|
-
|
123
|
+
click_link_or_button "Assemblies"
|
119
124
|
expect(page).to have_content("New assembly")
|
120
125
|
end
|
121
126
|
|
122
127
|
it "allows the processes page" do
|
123
|
-
|
128
|
+
click_link_or_button "Processes"
|
124
129
|
|
125
130
|
expect(page).to have_content("New process")
|
126
131
|
end
|
@@ -129,43 +134,44 @@ end
|
|
129
134
|
shared_examples "allows scoped admin routes" do
|
130
135
|
before do
|
131
136
|
visit decidim_admin.root_path
|
137
|
+
sleep 0.1
|
132
138
|
end
|
133
139
|
|
134
140
|
it "allows the admin root page" do
|
135
|
-
expect(page).to have_content(
|
141
|
+
expect(page).to have_content(welcome_text)
|
136
142
|
end
|
137
143
|
|
138
144
|
it "allows the assemblies page" do
|
139
|
-
|
145
|
+
click_link_or_button "Assemblies"
|
140
146
|
|
141
147
|
expect(page).to have_content("New assembly")
|
142
148
|
end
|
143
149
|
|
144
150
|
describe "forbids processes" do
|
145
151
|
before do
|
146
|
-
|
152
|
+
click_link_or_button "Processes"
|
147
153
|
end
|
148
154
|
|
149
155
|
it_behaves_like "redirects to index"
|
150
156
|
|
151
157
|
it "is not a process page" do
|
152
|
-
expect(page).
|
158
|
+
expect(page).to have_no_content("New process")
|
153
159
|
end
|
154
160
|
end
|
155
161
|
end
|
156
162
|
|
157
163
|
shared_examples "has admin link" do
|
158
164
|
it "has menu link" do
|
159
|
-
within "
|
160
|
-
expect(page).to
|
165
|
+
within "header" do
|
166
|
+
expect(page).to have_css("#admin-bar", text: "Admin dashboard")
|
161
167
|
end
|
162
168
|
end
|
163
169
|
end
|
164
170
|
|
165
171
|
shared_examples "has no admin link" do
|
166
|
-
it "has menu link" do
|
167
|
-
within "
|
168
|
-
expect(page).
|
172
|
+
it "has no menu link" do
|
173
|
+
within "header" do
|
174
|
+
expect(page).to have_no_css("#admin-bar", text: "Admin dashboard")
|
169
175
|
end
|
170
176
|
end
|
171
177
|
end
|
@@ -197,7 +203,7 @@ shared_examples "shows partial admin links in the frontend" do
|
|
197
203
|
|
198
204
|
it_behaves_like "has no admin link"
|
199
205
|
it "has no Edit button" do
|
200
|
-
expect(page).
|
206
|
+
expect(page).to have_no_link(href: "/admin/processes")
|
201
207
|
end
|
202
208
|
end
|
203
209
|
end
|
@@ -213,7 +219,7 @@ shared_examples "can edit assembly" do
|
|
213
219
|
ca: "Assamblea editada",
|
214
220
|
es: "Asamblea editada"
|
215
221
|
)
|
216
|
-
|
222
|
+
click_link_or_button "Update"
|
217
223
|
expect(page).to have_admin_callout("successfully")
|
218
224
|
end
|
219
225
|
end
|
@@ -262,7 +268,7 @@ shared_examples "can manage component" do
|
|
262
268
|
expect(page).to have_content("Title")
|
263
269
|
expect(page).to have_content(proposal.title["en"])
|
264
270
|
|
265
|
-
|
271
|
+
click_link_or_button "Edit proposal"
|
266
272
|
expect(page).to have_content("Update proposal")
|
267
273
|
fill_in_i18n(
|
268
274
|
:proposal_title,
|
@@ -271,14 +277,14 @@ shared_examples "can manage component" do
|
|
271
277
|
ca: "Proposta editada",
|
272
278
|
es: "Propuesta editada"
|
273
279
|
)
|
274
|
-
|
280
|
+
click_link_or_button "Update"
|
275
281
|
expect(page).to have_admin_callout("successfully")
|
276
282
|
end
|
277
283
|
|
278
284
|
it "can create a proposal" do
|
279
285
|
visit manage_component_path(component)
|
280
286
|
|
281
|
-
|
287
|
+
click_link_or_button "New proposal"
|
282
288
|
expect(page).to have_content("Create proposal")
|
283
289
|
fill_in_i18n(
|
284
290
|
:proposal_title,
|
@@ -294,7 +300,7 @@ shared_examples "can manage component" do
|
|
294
300
|
ca: "Body creat",
|
295
301
|
es: "Body creat"
|
296
302
|
)
|
297
|
-
|
303
|
+
click_link_or_button "Create"
|
298
304
|
expect(page).to have_admin_callout("successfully")
|
299
305
|
end
|
300
306
|
end
|
@@ -302,6 +308,7 @@ end
|
|
302
308
|
shared_examples "edits allowed components" do
|
303
309
|
before do
|
304
310
|
visit decidim_admin.root_path
|
311
|
+
sleep 0.1
|
305
312
|
end
|
306
313
|
|
307
314
|
it_behaves_like "can manage component"
|
@@ -351,7 +358,7 @@ shared_examples "shows component partial admin links in the frontend" do
|
|
351
358
|
|
352
359
|
it_behaves_like "has no admin link"
|
353
360
|
it "has no Edit button" do
|
354
|
-
expect(page).
|
361
|
+
expect(page).to have_no_link(href: manage_component_path(another_component))
|
355
362
|
end
|
356
363
|
end
|
357
364
|
end
|
@@ -362,8 +369,10 @@ shared_examples "allows access to group processes" do
|
|
362
369
|
end
|
363
370
|
|
364
371
|
it "shows the list of processes" do
|
365
|
-
|
366
|
-
|
372
|
+
within("[data-content]") do
|
373
|
+
expect(page).to have_content("Processes")
|
374
|
+
expect(page).to have_content(participatory_process.title["en"])
|
375
|
+
end
|
367
376
|
end
|
368
377
|
|
369
378
|
describe "forbids editing processes" do
|
@@ -380,8 +389,10 @@ shared_examples "allows access to group processes" do
|
|
380
389
|
end
|
381
390
|
|
382
391
|
it "shows the list of groups" do
|
383
|
-
|
384
|
-
|
392
|
+
within("[data-content]") do
|
393
|
+
expect(page).to have_content("Process groups")
|
394
|
+
expect(page).to have_content(process_group.title["en"])
|
395
|
+
end
|
385
396
|
end
|
386
397
|
end
|
387
398
|
end
|
@@ -400,7 +411,7 @@ shared_examples "allows edit any group process" do
|
|
400
411
|
ca: "Proces grup editat",
|
401
412
|
es: "Grupo de procesos editado"
|
402
413
|
)
|
403
|
-
|
414
|
+
click_link_or_button "Update"
|
404
415
|
expect(page).to have_admin_callout("successfully")
|
405
416
|
end
|
406
417
|
end
|
@@ -25,31 +25,135 @@ end
|
|
25
25
|
shared_examples "activated concerns" do |enabled|
|
26
26
|
it "common concerns are registered" do
|
27
27
|
expect(ActionView::Base.included_modules).to include(Decidim::DecidimAwesome::AwesomeHelpers)
|
28
|
-
expect(Decidim::
|
29
|
-
expect(Decidim::
|
28
|
+
expect(Decidim::ViewModel.included_modules).to include(Decidim::DecidimAwesome::AwesomeHelpers)
|
29
|
+
expect(Decidim::ApplicationController.included_modules).to include(Decidim::DecidimAwesome::ContentSecurityPolicy)
|
30
|
+
expect(Decidim::Admin::ApplicationController.included_modules).to include(Decidim::DecidimAwesome::ContentSecurityPolicy)
|
30
31
|
end
|
31
32
|
|
32
33
|
if enabled
|
33
34
|
it "concerns are registered" do
|
34
35
|
expect(Decidim::User.included_modules).to include(Decidim::DecidimAwesome::UserOverride)
|
36
|
+
expect(Decidim::MenuPresenter.included_modules).to include(Decidim::DecidimAwesome::MenuPresenterOverride)
|
37
|
+
expect(Decidim::MenuItemPresenter.included_modules).to include(Decidim::DecidimAwesome::MenuItemPresenterOverride)
|
35
38
|
expect(Decidim::ErrorsController.included_modules).to include(Decidim::DecidimAwesome::NotFoundRedirect)
|
36
39
|
expect(Decidim::Proposals::ApplicationHelper.included_modules).to include(Decidim::DecidimAwesome::Proposals::ApplicationHelperOverride)
|
37
|
-
expect(Decidim::Proposals::
|
40
|
+
expect(Decidim::Proposals::ProposalForm.included_modules).to include(Decidim::DecidimAwesome::Proposals::ProposalFormCustomizations)
|
41
|
+
expect(Decidim::Proposals::ProposalForm.included_modules).to include(Decidim::DecidimAwesome::Proposals::ProposalFormOverride)
|
42
|
+
expect(Decidim::Proposals::Admin::ProposalForm.included_modules).to include(Decidim::DecidimAwesome::Proposals::ProposalFormOverride)
|
38
43
|
expect(Decidim::AmendmentsHelper.included_modules).to include(Decidim::DecidimAwesome::AmendmentsHelperOverride)
|
44
|
+
expect(EtiquetteValidator.included_modules).to include(Decidim::DecidimAwesome::EtiquetteValidatorOverride)
|
45
|
+
expect(Decidim::Proposals::ProposalVote.included_modules).to include(Decidim::DecidimAwesome::HasVoteWeight)
|
46
|
+
expect(Decidim::Proposals::ProposalType.included_modules).to include(Decidim::DecidimAwesome::AddProposalTypeVoteWeights)
|
47
|
+
expect(Decidim::Proposals::ProposalType.included_modules).to include(Decidim::DecidimAwesome::AddProposalTypeCustomFields)
|
48
|
+
expect(Decidim::Proposals::ProposalLCell.included_modules).to include(Decidim::DecidimAwesome::ProposalLCellOverride)
|
49
|
+
expect(Decidim::Proposals::Proposal.included_modules).to include(Decidim::DecidimAwesome::HasProposalExtraFields)
|
50
|
+
expect(Decidim::Proposals::CollaborativeDraft.included_modules).to include(Decidim::DecidimAwesome::HasProposalExtraFields)
|
51
|
+
expect(Decidim::ContentBlocks::GlobalMenuCell.included_modules).to include(Decidim::DecidimAwesome::GlobalMenuCellOverride)
|
52
|
+
expect(Decidim::BreadcrumbHelper.included_modules).to include(Decidim::DecidimAwesome::BreadcrumbHelperOverride)
|
53
|
+
expect(Decidim::BreadcrumbRootMenuItemPresenter.included_modules).to include(Decidim::DecidimAwesome::BreadcrumbRootMenuItemPresenterOverride)
|
54
|
+
expect(Decidim::Proposals::ProposalSerializer.included_modules).to include(Decidim::DecidimAwesome::Proposals::ProposalSerializerOverride)
|
55
|
+
expect(Decidim::Proposals::ProposalVotesController.included_modules).to include(Decidim::DecidimAwesome::Proposals::ProposalVotesControllerOverride)
|
56
|
+
expect(Decidim::AmendmentsController.included_modules).to include(Decidim::DecidimAwesome::LimitPendingAmendments)
|
57
|
+
expect(Decidim::Proposals::ProposalsController.included_modules).to include(Decidim::DecidimAwesome::Proposals::OrderableOverride)
|
58
|
+
expect(Decidim::AdminLog::ComponentPresenter.included_modules).to include(Decidim::DecidimAwesome::AdminLog::ComponentPresenterOverride)
|
59
|
+
expect(Decidim::ApplicationController.included_modules).to include(Decidim::DecidimAwesome::CheckLoginAuthorizations)
|
60
|
+
expect(Decidim::ApplicationController.included_modules).to include(Decidim::DecidimAwesome::UseUserTimeZone)
|
61
|
+
expect(Decidim::AccountForm.included_modules).to include(Decidim::DecidimAwesome::AccountFormOverride)
|
62
|
+
expect(Decidim::UpdateAccount.included_modules).to include(Decidim::DecidimAwesome::UpdateAccountOverride)
|
63
|
+
expect(Decidim::System::RegisterOrganizationForm.included_modules).to include(Decidim::DecidimAwesome::System::OrganizationFormOverride)
|
64
|
+
expect(Decidim::System::UpdateOrganizationForm.included_modules).to include(Decidim::DecidimAwesome::System::OrganizationFormOverride)
|
65
|
+
expect(Decidim::System::UpdateOrganization.included_modules).to include(Decidim::DecidimAwesome::System::UpdateOrganizationOverride)
|
66
|
+
expect(Decidim::System::CreateOrganization.included_modules).to include(Decidim::DecidimAwesome::System::CreateOrganizationOverride)
|
67
|
+
expect(Decidim::AdminLog::UserPresenter.included_modules).to include(Decidim::DecidimAwesome::AdminLog::UserPresenterOverride)
|
39
68
|
end
|
69
|
+
|
40
70
|
else
|
41
71
|
it "concerns are not registered" do
|
42
72
|
expect(Decidim::User.included_modules).not_to include(Decidim::DecidimAwesome::UserOverride)
|
73
|
+
expect(Decidim::MenuPresenter.included_modules).not_to include(Decidim::DecidimAwesome::MenuPresenterOverride)
|
74
|
+
expect(Decidim::MenuItemPresenter.included_modules).not_to include(Decidim::DecidimAwesome::MenuItemPresenterOverride)
|
43
75
|
expect(Decidim::ErrorsController.included_modules).not_to include(Decidim::DecidimAwesome::NotFoundRedirect)
|
44
76
|
expect(Decidim::Proposals::ApplicationHelper.included_modules).not_to include(Decidim::DecidimAwesome::Proposals::ApplicationHelperOverride)
|
45
|
-
expect(Decidim::Proposals::
|
77
|
+
expect(Decidim::Proposals::ProposalForm.included_modules).not_to include(Decidim::DecidimAwesome::Proposals::ProposalFormCustomizations)
|
78
|
+
expect(Decidim::Proposals::ProposalForm.included_modules).not_to include(Decidim::DecidimAwesome::Proposals::ProposalFormOverride)
|
79
|
+
expect(Decidim::Proposals::Admin::ProposalForm.included_modules).not_to include(Decidim::DecidimAwesome::Proposals::ProposalFormOverride)
|
46
80
|
expect(Decidim::AmendmentsHelper.included_modules).not_to include(Decidim::DecidimAwesome::AmendmentsHelperOverride)
|
81
|
+
expect(EtiquetteValidator.included_modules).not_to include(Decidim::DecidimAwesome::EtiquetteValidatorOverride)
|
82
|
+
expect(Decidim::Proposals::ProposalVote.included_modules).not_to include(Decidim::DecidimAwesome::HasVoteWeight)
|
83
|
+
expect(Decidim::Proposals::ProposalType.included_modules).not_to include(Decidim::DecidimAwesome::AddProposalTypeVoteWeights)
|
84
|
+
expect(Decidim::Proposals::ProposalType.included_modules).not_to include(Decidim::DecidimAwesome::AddProposalTypeCustomFields)
|
85
|
+
expect(Decidim::Proposals::ProposalLCell.included_modules).not_to include(Decidim::DecidimAwesome::ProposalLCellOverride)
|
86
|
+
expect(Decidim::Proposals::Proposal.included_modules).not_to include(Decidim::DecidimAwesome::HasProposalExtraFields)
|
87
|
+
expect(Decidim::Proposals::CollaborativeDraft.included_modules).not_to include(Decidim::DecidimAwesome::HasProposalExtraFields)
|
88
|
+
expect(Decidim::ContentBlocks::GlobalMenuCell.included_modules).not_to include(Decidim::DecidimAwesome::GlobalMenuCellOverride)
|
89
|
+
expect(Decidim::BreadcrumbHelper.included_modules).not_to include(Decidim::DecidimAwesome::BreadcrumbHelperOverride)
|
90
|
+
expect(Decidim::BreadcrumbRootMenuItemPresenter.included_modules).not_to include(Decidim::DecidimAwesome::BreadcrumbRootMenuItemPresenterOverride)
|
91
|
+
expect(Decidim::Proposals::ProposalSerializer.included_modules).not_to include(Decidim::DecidimAwesome::Proposals::ProposalSerializerOverride)
|
92
|
+
expect(Decidim::Proposals::ProposalVotesController.included_modules).not_to include(Decidim::DecidimAwesome::Proposals::ProposalVotesControllerOverride)
|
93
|
+
expect(Decidim::AmendmentsController.included_modules).not_to include(Decidim::DecidimAwesome::LimitPendingAmendments)
|
94
|
+
expect(Decidim::Proposals::ProposalsController.included_modules).not_to include(Decidim::DecidimAwesome::Proposals::OrderableOverride)
|
95
|
+
expect(Decidim::AdminLog::ComponentPresenter.included_modules).not_to include(Decidim::DecidimAwesome::AdminLog::ComponentPresenterOverride)
|
96
|
+
expect(Decidim::ApplicationController.included_modules).not_to include(Decidim::DecidimAwesome::CheckLoginAuthorizations)
|
97
|
+
expect(Decidim::ApplicationController.included_modules).not_to include(Decidim::DecidimAwesome::UseUserTimeZone)
|
98
|
+
expect(Decidim::AccountForm.included_modules).not_to include(Decidim::DecidimAwesome::AccountFormOverride)
|
99
|
+
expect(Decidim::UpdateAccount.included_modules).not_to include(Decidim::DecidimAwesome::UpdateAccountOverride)
|
100
|
+
expect(Decidim::System::RegisterOrganizationForm.included_modules).not_to include(Decidim::DecidimAwesome::System::OrganizationFormOverride)
|
101
|
+
expect(Decidim::System::UpdateOrganizationForm.included_modules).not_to include(Decidim::DecidimAwesome::System::OrganizationFormOverride)
|
102
|
+
expect(Decidim::System::UpdateOrganization.included_modules).not_to include(Decidim::DecidimAwesome::System::UpdateOrganizationOverride)
|
103
|
+
expect(Decidim::DecidimAwesome::AwesomeHelpers.included_modules).not_to include(Decidim::DecidimAwesome::AwesomeHelpers)
|
104
|
+
expect(Decidim::DecidimAwesome::ContentSecurityPolicy.included_modules).not_to include(Decidim::DecidimAwesome::ContentSecurityPolicy)
|
105
|
+
expect(Decidim::DecidimAwesome::UserOverride.included_modules).not_to include(Decidim::DecidimAwesome::UserOverride)
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
shared_examples "csp directives" do |enabled|
|
111
|
+
let(:organization) { create(:organization) }
|
112
|
+
let(:fonts) { controller.content_security_policy.send(:policy)["font-src"] }
|
113
|
+
let(:scripts) { controller.content_security_policy.send(:policy)["script-src"] }
|
114
|
+
let(:frames) { controller.content_security_policy.send(:policy)["frame-src"] }
|
115
|
+
|
116
|
+
shared_examples "controller directives" do
|
117
|
+
if enabled
|
118
|
+
it "has CSP directives" do
|
119
|
+
get :show do
|
120
|
+
expect(fonts).to eq(["'self'", "data:"])
|
121
|
+
expect(scripts).to eq(["'self'", "'unsafe-inline'", "'unsafe-eval'", "https://www.intergram.xyz"])
|
122
|
+
expect(frames).to eq(["'self'", "www.youtube-nocookie.com", "player.vimeo.com", "https://www.intergram.xyz"])
|
123
|
+
end
|
124
|
+
end
|
125
|
+
else
|
126
|
+
it "has no CSP directives" do
|
127
|
+
get :show do
|
128
|
+
expect(fonts).to eq(["'self'"])
|
129
|
+
expect(scripts).to eq(["'self'", "'unsafe-inline'", "'unsafe-eval'"])
|
130
|
+
expect(frames).to eq(["'self'", "www.youtube-nocookie.com", "player.vimeo.com"])
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
describe Decidim::HomepageController, type: :controller do
|
137
|
+
routes { Decidim::Core::Engine.routes }
|
138
|
+
before do
|
139
|
+
request.env["decidim.current_organization"] = user.organization
|
140
|
+
end
|
141
|
+
|
142
|
+
it_behaves_like "controller directives"
|
143
|
+
end
|
144
|
+
|
145
|
+
describe Decidim::Admin::DashboardController, type: :controller do
|
146
|
+
routes { Decidim::Admin::Engine.routes }
|
147
|
+
|
148
|
+
before do
|
149
|
+
request.env["decidim.current_organization"] = user.organization
|
47
150
|
end
|
151
|
+
|
152
|
+
it_behaves_like "controller directives"
|
48
153
|
end
|
49
154
|
end
|
50
155
|
|
51
156
|
shared_examples "custom menus" do |enabled|
|
52
|
-
# rubocop:disable RSpec/EmptyExampleGroup
|
53
157
|
describe Decidim::MenuPresenter, type: :helper do
|
54
158
|
before do
|
55
159
|
allow(view).to receive(:current_organization).and_return(organization)
|
@@ -66,22 +170,16 @@ shared_examples "custom menus" do |enabled|
|
|
66
170
|
end
|
67
171
|
end
|
68
172
|
end
|
69
|
-
# rubocop:enable RSpec/EmptyExampleGroup
|
70
173
|
end
|
71
174
|
|
72
175
|
shared_examples "basic rendering" do |enabled|
|
73
176
|
describe "shows public pages", type: :system do
|
74
|
-
let(:
|
177
|
+
let(:boolean_vars) do
|
75
178
|
[
|
76
179
|
:allow_images_in_proposals,
|
77
|
-
:
|
78
|
-
:
|
79
|
-
:
|
80
|
-
:use_markdown_editor,
|
81
|
-
:allow_images_in_markdown_editor,
|
82
|
-
:auto_save_forms,
|
83
|
-
:intergram_for_admins,
|
84
|
-
:intergram_for_public
|
180
|
+
:allow_videos_in_editors,
|
181
|
+
:allow_images_in_editors,
|
182
|
+
:auto_save_forms
|
85
183
|
]
|
86
184
|
end
|
87
185
|
|
@@ -91,7 +189,7 @@ shared_examples "basic rendering" do |enabled|
|
|
91
189
|
end
|
92
190
|
|
93
191
|
it "renders the home page" do
|
94
|
-
expect(page).to
|
192
|
+
expect(page).to have_css(".home")
|
95
193
|
end
|
96
194
|
|
97
195
|
it "has DecidimAwesome object" do
|
@@ -104,32 +202,32 @@ shared_examples "basic rendering" do |enabled|
|
|
104
202
|
end
|
105
203
|
|
106
204
|
if enabled
|
107
|
-
it "has
|
108
|
-
|
205
|
+
it "has boolean configs enabled" do
|
206
|
+
boolean_vars.each do |var|
|
109
207
|
expect(page.body).to have_content("\"#{var}\":true")
|
110
208
|
end
|
111
209
|
end
|
112
210
|
|
113
211
|
it "has custom fields javascript" do
|
114
|
-
expect(page).to have_xpath("//script[contains(@src,'
|
212
|
+
expect(page).to have_xpath("//script[contains(@src,'decidim_decidim_awesome_custom_fields')]", visible: :all)
|
115
213
|
end
|
116
214
|
|
117
215
|
it "has custom styles CSS" do
|
118
216
|
expect(page.body).to have_content(styles)
|
119
217
|
end
|
120
218
|
else
|
121
|
-
it "has
|
122
|
-
|
219
|
+
it "has boolean configs disabled" do
|
220
|
+
boolean_vars.each do |var|
|
123
221
|
expect(page.body).to have_content("\"#{var}\":false")
|
124
222
|
end
|
125
223
|
end
|
126
224
|
|
127
225
|
it "do not have custom fields javascript" do
|
128
|
-
expect(page).
|
226
|
+
expect(page).to have_no_xpath("//script[contains(@src,'decidim_decidim_awesome_custom_fields')]", visible: :all)
|
129
227
|
end
|
130
228
|
|
131
229
|
it "do not have custom styles CSS" do
|
132
|
-
expect(page.body).
|
230
|
+
expect(page.body).to have_no_content(styles)
|
133
231
|
end
|
134
232
|
end
|
135
233
|
end
|
@@ -140,10 +238,11 @@ shared_examples "basic rendering" do |enabled|
|
|
140
238
|
"config/editors",
|
141
239
|
"config/proposals",
|
142
240
|
"config/surveys",
|
143
|
-
"config/
|
241
|
+
"config/scoped_styles",
|
144
242
|
"config/proposal_custom_fields",
|
145
243
|
"config/admins",
|
146
|
-
"
|
244
|
+
"menus/menu/hacks",
|
245
|
+
"menus/home_content_block_menu/hacks",
|
147
246
|
"custom_redirects",
|
148
247
|
"config/livechat"
|
149
248
|
]
|
@@ -167,33 +266,25 @@ shared_examples "basic rendering" do |enabled|
|
|
167
266
|
|
168
267
|
if enabled
|
169
268
|
it "renders the editors page" do
|
170
|
-
expect(page).to have_content("Tweaks for
|
171
|
-
end
|
172
|
-
|
173
|
-
it "has custom fields javascript" do
|
174
|
-
expect(page).to have_xpath("//script[contains(@src,'decidim_admin_decidim_awesome_custom_fields')]", visible: :all)
|
269
|
+
expect(page).to have_content("Tweaks for Editor Hacks")
|
175
270
|
end
|
176
271
|
|
177
272
|
it "has all admin menus" do
|
178
273
|
menus.each do |menu|
|
179
|
-
within ".
|
274
|
+
within ".sidebar-menu" do
|
180
275
|
expect(page).to have_link(href: "/admin/decidim_awesome/#{menu}")
|
181
276
|
end
|
182
277
|
end
|
183
278
|
end
|
184
279
|
else
|
185
280
|
it "renders the compatibility checks page" do
|
186
|
-
expect(page).to have_content("System
|
187
|
-
end
|
188
|
-
|
189
|
-
it "do not have custom fields javascript" do
|
190
|
-
expect(page).not_to have_xpath("//script[contains(@src,'decidim_admin_decidim_awesome_custom_fields')]", visible: :all)
|
281
|
+
expect(page).to have_content("Maintenance tools: System Compatibility Checks")
|
191
282
|
end
|
192
283
|
|
193
284
|
it "has no admin menus" do
|
194
285
|
menus.each do |menu|
|
195
|
-
within ".
|
196
|
-
expect(page).
|
286
|
+
within ".sidebar-menu" do
|
287
|
+
expect(page).to have_no_link(href: "/admin/decidim_awesome/#{menu}")
|
197
288
|
end
|
198
289
|
end
|
199
290
|
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module DecidimAwesome
|
5
|
+
class VotingManifest
|
6
|
+
include ActiveModel::Model
|
7
|
+
include Decidim::AttributeObject::Model
|
8
|
+
|
9
|
+
attribute :name, Symbol
|
10
|
+
|
11
|
+
# path to overriden views for the proposal show page vote button
|
12
|
+
# not defining it will use the original view from Decidim
|
13
|
+
# setting it to an empty string will hide the original content
|
14
|
+
|
15
|
+
# original is decidim-proposals/app/views/decidim/proposals/proposals/_vote_button.html.erb
|
16
|
+
attribute :show_vote_button_view, String
|
17
|
+
# original is decidim-proposals/app/views/decidim/proposals/proposals/_votes_count.html.erb
|
18
|
+
attribute :show_votes_count_view, String
|
19
|
+
# original is from decidim-proposals/app/cells/decidim/proposals/proposal_metadata_cell.rb
|
20
|
+
attribute :proposal_metadata_cell, String
|
21
|
+
|
22
|
+
# a callback that will be called by the method valid_weight?
|
23
|
+
# Do not access this parameter directly, use the weight_validator method to register a block
|
24
|
+
attribute :on_weight_validation, Proc, default: nil
|
25
|
+
|
26
|
+
validates :name, presence: true
|
27
|
+
|
28
|
+
# registers a weight validator
|
29
|
+
def weight_validator(&block)
|
30
|
+
@on_weight_validation = block
|
31
|
+
end
|
32
|
+
|
33
|
+
# validates the weight using the Proc defined by weight_validator
|
34
|
+
# Receives the weight and a context with the user and the proposal to be voted
|
35
|
+
def valid_weight?(weight, context = {})
|
36
|
+
return true unless @on_weight_validation
|
37
|
+
|
38
|
+
@on_weight_validation.call(weight, **context)
|
39
|
+
end
|
40
|
+
|
41
|
+
# registers an optional label generator block
|
42
|
+
def label_generator(&block)
|
43
|
+
@on_label_generation = block
|
44
|
+
end
|
45
|
+
|
46
|
+
# returns the label used in export or other places for a given weight
|
47
|
+
# defaults to a I18n key scoped under decidim_awesome
|
48
|
+
def label_for(weight, context = {})
|
49
|
+
return I18n.t("decidim.decidim_awesome.voting.#{name}.weights.weight_#{weight}", default: "weight_#{weight}") unless @on_label_generation
|
50
|
+
|
51
|
+
@on_label_generation.call(weight, **context)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -11,12 +11,10 @@ require "decidim/decidim_awesome/map_component/component"
|
|
11
11
|
require "decidim/decidim_awesome/iframe_component/engine"
|
12
12
|
require "decidim/decidim_awesome/iframe_component/admin_engine"
|
13
13
|
require "decidim/decidim_awesome/iframe_component/component"
|
14
|
-
require "decidim/decidim_awesome/content_parsers/editor_images_parser"
|
15
14
|
|
16
15
|
# Engines to handle logic unrelated to participatory spaces or components
|
17
|
-
|
18
16
|
Decidim.register_global_engine(
|
19
17
|
:decidim_decidim_awesome, # this is the name of the global method to access engine routes
|
20
|
-
|
18
|
+
Decidim::DecidimAwesome::Engine,
|
21
19
|
at: "/decidim_awesome"
|
22
20
|
)
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
Rake::Task["decidim:webpacker:install"].enhance do
|
4
|
+
Rake::Task["decidim_decidim_awesome:webpacker:install"].invoke
|
5
|
+
end
|
6
|
+
|
7
|
+
Rake::Task["decidim:choose_target_plugins"].enhance do
|
8
|
+
ENV["FROM"] = "#{ENV.fetch("FROM", nil)},decidim_decidim_awesome"
|
9
|
+
end
|
@@ -20,6 +20,8 @@ namespace :decidim_decidim_awesome do
|
|
20
20
|
|
21
21
|
def install_decidim_awesome_npm
|
22
22
|
decidim_awesome_npm_dependencies.each do |type, packages|
|
23
|
+
puts "install NPM packages. You can also do this manually with this command:"
|
24
|
+
puts "npm i --save-#{type} #{packages.join(" ")}"
|
23
25
|
system! "npm i --save-#{type} #{packages.join(" ")}"
|
24
26
|
end
|
25
27
|
end
|
data/package.json
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
{
|
2
|
+
"name": "decidim-module-decidim_awesome",
|
3
|
+
"version": "0.12.0",
|
4
|
+
"description": "Mods and tweaks for Decidim",
|
5
|
+
"main": "index.js",
|
6
|
+
"directories": {
|
7
|
+
"example": "examples",
|
8
|
+
"lib": "lib"
|
9
|
+
},
|
10
|
+
"scripts": {
|
11
|
+
"test": "echo \"Error: no test specified\" && exit 1",
|
12
|
+
"lint": "eslint -c .eslintrc.json --ext .js app/packs/",
|
13
|
+
"lint-fix": "eslint -c .eslintrc.json --ext .js app/packs/ --fix",
|
14
|
+
"stylelint": "stylelint **/*.scss",
|
15
|
+
"stylelint-fix": "stylelint **/*.scss --fix",
|
16
|
+
"prettier": "prettier --check '**/*.scss'",
|
17
|
+
"prettify": "prettier --write '**/*.scss'"
|
18
|
+
},
|
19
|
+
"repository": {
|
20
|
+
"type": "git",
|
21
|
+
"url": "git+https://github.com/decidim-ice/decidim-module-decidim_awesome.git"
|
22
|
+
},
|
23
|
+
"keywords": [
|
24
|
+
"decidim"
|
25
|
+
],
|
26
|
+
"author": "ivan@pokecode.net",
|
27
|
+
"license": "AGPL-3.0-or-later",
|
28
|
+
"bugs": {
|
29
|
+
"url": "https://github.com/decidim-ice/decidim-module-decidim_awesome/issues"
|
30
|
+
},
|
31
|
+
"homepage": "https://github.com/decidim-ice/decidim-module-decidim_awesome#readme",
|
32
|
+
"stylelint": {
|
33
|
+
"extends": "@decidim/stylelint-config"
|
34
|
+
},
|
35
|
+
"prettier": "@decidim/prettier-config",
|
36
|
+
"devDependencies": {
|
37
|
+
"@decidim/dev": "0.29.1",
|
38
|
+
"@decidim/eslint-config": "0.29.1",
|
39
|
+
"@decidim/prettier-config": "0.29.1",
|
40
|
+
"@decidim/stylelint-config": "0.29.1",
|
41
|
+
"postcss-scss": "^4.0.9",
|
42
|
+
"sass-embedded": "^1.83.1",
|
43
|
+
"@tarekraafat/autocomplete.js": "^10.2.9"
|
44
|
+
},
|
45
|
+
"dependencies": {
|
46
|
+
"codemirror": "^5.65.16",
|
47
|
+
"form-storage": "^1.3.5",
|
48
|
+
"formBuilder": "^3.19.12",
|
49
|
+
"inline-attacher": "^0.0.7",
|
50
|
+
"jsrender": "^1.0.9",
|
51
|
+
"leaflet.featuregroup.subgroup": "^1.0.2",
|
52
|
+
"tom-select": "2.2.2"
|
53
|
+
}
|
54
|
+
}
|