decidim-core 0.30.2 → 0.31.0.rc1
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/README.md +0 -4
- data/app/cells/decidim/activity_cell.rb +0 -3
- data/app/cells/decidim/address/show.erb +1 -0
- data/app/cells/decidim/address_cell.rb +7 -1
- data/app/cells/decidim/amendable/amend_button_card/show.erb +2 -2
- data/app/cells/decidim/author/likes.erb +4 -0
- data/app/cells/decidim/author/show.erb +1 -3
- data/app/cells/decidim/author_cell.rb +5 -28
- data/app/cells/decidim/badge_cell.rb +1 -7
- data/app/cells/decidim/card_cell.rb +2 -12
- data/app/cells/decidim/card_metadata_cell.rb +4 -4
- data/app/cells/decidim/coauthorships_cell.rb +1 -1
- data/app/cells/decidim/collapsible_authors/show.erb +1 -1
- data/app/cells/decidim/content_blocks/hero_cell.rb +23 -4
- data/app/cells/decidim/content_blocks/hero_settings_form/show.erb +16 -2
- data/app/cells/decidim/content_blocks/highlighted_content_banner/show.erb +6 -6
- data/app/cells/decidim/content_blocks/highlighted_content_banner_cell.rb +28 -1
- data/app/cells/decidim/content_blocks/highlighted_content_banner_settings_form/show.erb +27 -0
- data/app/cells/decidim/content_blocks/highlighted_content_banner_settings_form_cell.rb +13 -0
- data/app/cells/decidim/content_blocks/highlighted_elements_for_component_settings_form/show.erb +9 -2
- data/app/cells/decidim/content_blocks/html_settings_form/show.erb +3 -1
- data/app/cells/decidim/content_blocks/last_activity_cell.rb +1 -1
- data/app/cells/decidim/content_blocks/last_activity_settings_form/show.erb +3 -1
- data/app/cells/decidim/content_blocks/menu_breadcrumb_last_activity_cell.rb +1 -1
- data/app/cells/decidim/content_blocks/participatory_space_extra_data/recent_users.erb +1 -1
- data/app/cells/decidim/content_blocks/participatory_space_hero/show.erb +0 -5
- data/app/cells/decidim/content_blocks/participatory_space_hero_cell.rb +1 -13
- data/app/cells/decidim/content_blocks/participatory_space_hero_settings_form/show.erb +10 -3
- data/app/cells/decidim/content_blocks/participatory_space_last_activity/content.erb +1 -1
- data/app/cells/decidim/content_blocks/participatory_space_last_activity/recent_avatars.erb +1 -1
- data/app/cells/decidim/content_blocks/participatory_space_last_activity_cell.rb +3 -3
- data/app/cells/decidim/content_blocks/participatory_space_main_data/title.erb +17 -5
- data/app/cells/decidim/content_blocks/participatory_space_main_data_cell.rb +4 -0
- data/app/cells/decidim/content_blocks/stats/show.erb +2 -3
- data/app/cells/decidim/data_consent/modal.erb +1 -1
- data/app/cells/decidim/like_block/show.erb +3 -0
- data/app/cells/decidim/{endorsement_block_cell.rb → like_block_cell.rb} +2 -2
- data/app/cells/decidim/like_buttons/button_content.erb +2 -0
- data/app/cells/decidim/like_buttons/show.erb +17 -0
- data/app/cells/decidim/{endorsement_buttons → like_buttons}/verification_modal.erb +3 -3
- data/app/cells/decidim/like_buttons_cell.rb +77 -0
- data/app/cells/decidim/likers_list/empty.erb +3 -0
- data/app/cells/decidim/{endorsers_list → likers_list}/full.erb +3 -3
- data/app/cells/decidim/likers_list/show.erb +20 -0
- data/app/cells/decidim/likers_list_cell.rb +64 -0
- data/app/cells/decidim/nav_links/show.erb +1 -1
- data/app/cells/decidim/notification_actions/buttons_cell.rb +1 -1
- data/app/cells/decidim/onboarding_action_message_cell.rb +1 -1
- data/app/cells/decidim/participatory_space_dropdown_metadata/metadata.erb +0 -8
- data/app/cells/decidim/participatory_space_dropdown_metadata_cell.rb +0 -8
- data/app/cells/decidim/profile/details.erb +1 -1
- data/app/cells/decidim/profile/tabs.erb +1 -1
- data/app/cells/decidim/profile_actions/show.erb +0 -1
- data/app/cells/decidim/profile_actions_cell.rb +5 -91
- data/app/cells/decidim/profile_cell.rb +4 -39
- data/app/cells/decidim/report_button/content.erb +2 -0
- data/app/cells/decidim/report_button/flag_modal.erb +1 -1
- data/app/cells/decidim/report_button_cell.rb +1 -1
- data/app/cells/decidim/report_user_button/flag_modal.erb +1 -1
- data/app/cells/decidim/resource_history_cell.rb +2 -1
- data/app/cells/decidim/resource_types_filter/show.erb +1 -1
- data/app/cells/decidim/share_button_cell.rb +1 -1
- data/app/cells/decidim/share_text_widget/modal.erb +16 -0
- data/app/cells/decidim/share_text_widget/show.erb +2 -0
- data/app/cells/decidim/share_text_widget_cell.rb +27 -0
- data/app/cells/decidim/share_widget/modal.erb +19 -8
- data/app/cells/decidim/share_widget/qr_code_modal.erb +26 -0
- data/app/cells/decidim/share_widget/show.erb +1 -0
- data/app/cells/decidim/share_widget_cell.rb +10 -6
- data/app/cells/decidim/statistic/show.erb +23 -5
- data/app/cells/decidim/statistic_cell.rb +28 -3
- data/app/cells/decidim/tab_panels/show.erb +1 -1
- data/app/cells/decidim/user_profile/show.erb +1 -1
- data/app/cells/decidim/user_profile_cell.rb +1 -9
- data/app/cells/decidim/version_author_cell.rb +0 -7
- data/app/commands/decidim/amendable/accept.rb +1 -3
- data/app/commands/decidim/amendable/create_draft.rb +2 -3
- data/app/commands/decidim/amendable/update_draft.rb +2 -3
- data/app/commands/decidim/create_ephemeral_user.rb +7 -1
- data/app/commands/decidim/create_omniauth_registration.rb +8 -7
- data/app/commands/decidim/create_report.rb +9 -1
- data/app/commands/decidim/destroy_account.rb +0 -5
- data/app/commands/decidim/like_resource.rb +52 -0
- data/app/commands/decidim/messaging/reply_to_conversation.rb +2 -21
- data/app/commands/decidim/messaging/start_conversation.rb +2 -21
- data/app/commands/decidim/unlike_resource.rb +34 -0
- data/app/commands/decidim/update_account.rb +1 -1
- data/app/controllers/concerns/decidim/ephemeral_session_checker.rb +6 -2
- data/app/controllers/concerns/decidim/user_profile.rb +0 -1
- data/app/controllers/decidim/account_controller.rb +1 -1
- data/app/controllers/decidim/amendments_controller.rb +4 -5
- data/app/controllers/decidim/application_controller.rb +2 -1
- data/app/controllers/decidim/devise/confirmations_controller.rb +0 -5
- data/app/controllers/decidim/devise/omniauth_registrations_controller.rb +1 -1
- data/app/controllers/decidim/devise/passwords_controller.rb +1 -1
- data/app/controllers/decidim/devise/registrations_controller.rb +1 -1
- data/app/controllers/decidim/doorkeeper/authorizations_controller.rb +19 -1
- data/app/controllers/decidim/download_your_data_controller.rb +2 -2
- data/app/controllers/decidim/likes_controller.rb +57 -0
- data/app/controllers/decidim/links_controller.rb +1 -0
- data/app/controllers/decidim/messaging/conversations_controller.rb +1 -8
- data/app/controllers/decidim/newsletters_controller.rb +1 -1
- data/app/controllers/decidim/notifications_settings_controller.rb +2 -2
- data/app/controllers/decidim/pages_controller.rb +0 -1
- data/app/controllers/decidim/profiles_controller.rb +2 -57
- data/app/controllers/decidim/qr_controller.rb +73 -0
- data/app/controllers/decidim/resource_autocomplete_controller.rb +56 -0
- data/app/controllers/decidim/user_activities_controller.rb +0 -1
- data/app/events/decidim/resource_liked_event.rb +36 -0
- data/app/forms/decidim/amendable/create_form.rb +0 -1
- data/app/forms/decidim/amendable/edit_form.rb +0 -1
- data/app/forms/decidim/amendable/form.rb +4 -4
- data/app/forms/decidim/ephemeral_user_form.rb +1 -0
- data/app/forms/decidim/notifications_settings_form.rb +1 -1
- data/app/forms/decidim/omniauth_registration_form.rb +1 -1
- data/app/forms/decidim/upload_validation_form.rb +9 -1
- data/app/helpers/decidim/amendments_helper.rb +1 -2
- data/app/helpers/decidim/animations_helper.rb +14 -0
- data/app/helpers/decidim/decidim_form_helper.rb +17 -6
- data/app/helpers/decidim/layout_helper.rb +1 -15
- data/app/helpers/decidim/likeable_helper.rb +46 -0
- data/app/helpers/decidim/messaging/conversation_helper.rb +1 -1
- data/app/helpers/decidim/omniauth_helper.rb +1 -1
- data/app/helpers/decidim/qr_code_helper.rb +37 -0
- data/app/helpers/decidim/rich_text_editor_helper.rb +0 -1
- data/app/helpers/decidim/sanitize_helper.rb +5 -5
- data/app/helpers/decidim/social_share_button_helper.rb +11 -10
- data/app/jobs/decidim/delete_inactive_participants_job.rb +41 -0
- data/app/jobs/decidim/process_inactive_participant_job.rb +48 -0
- data/app/mailers/decidim/participants_account_mailer.rb +38 -0
- data/app/mailers/decidim/user_group_mailer.rb +28 -0
- data/app/models/decidim/action_log.rb +3 -5
- data/app/models/decidim/amendment.rb +1 -1
- data/app/models/decidim/attachment_collection.rb +2 -0
- data/app/models/decidim/authorization_transfer.rb +0 -1
- data/app/models/decidim/coauthorship.rb +1 -1
- data/app/models/decidim/component.rb +4 -1
- data/app/models/decidim/{endorsement.rb → like.rb} +4 -4
- data/app/models/decidim/messaging/conversation.rb +3 -5
- data/app/models/decidim/messaging/message.rb +3 -15
- data/app/models/decidim/omniauth_provider.rb +1 -1
- data/app/models/decidim/organization.rb +3 -8
- data/app/models/decidim/participatory_space_role_config/{valuator.rb → evaluator.rb} +1 -1
- data/app/models/decidim/reminder_record.rb +1 -1
- data/app/models/decidim/searchable_resource.rb +16 -0
- data/app/models/decidim/taxonomy.rb +6 -1
- data/app/models/decidim/user.rb +32 -15
- data/app/models/decidim/user_base_entity.rb +2 -2
- data/app/packs/entrypoints/decidim_conference_diploma.scss +2 -2
- data/app/packs/entrypoints/decidim_core.scss +2 -2
- data/app/packs/entrypoints/decidim_editor.js +0 -4
- data/app/packs/entrypoints/decidim_map.scss +2 -2
- data/app/packs/entrypoints/decidim_overrides.scss +1 -1
- data/app/packs/entrypoints/decidim_qr.js +1 -0
- data/app/packs/images/decidim/remixicon.symbol.svg +3 -3
- data/app/packs/src/decidim/a11y.js +1 -120
- data/app/packs/src/decidim/append_redirect_url_to_modals.js +1 -1
- data/app/packs/src/decidim/attachments/file_or_link_tabs.js +1 -1
- data/app/packs/src/decidim/confirm.js +27 -20
- data/app/packs/src/decidim/controllers/.keep +0 -0
- data/app/packs/src/decidim/controllers/accordion/controller.js +100 -0
- data/app/packs/src/decidim/controllers/account_form/account_form.test.js +423 -0
- data/app/packs/src/decidim/controllers/account_form/controller.js +69 -0
- data/app/packs/src/decidim/{input_character_counter.js → controllers/character_counter/controller.js} +90 -106
- data/app/packs/src/decidim/controllers/clipboard_copy/clipboard_copy.test.js +305 -0
- data/app/packs/src/decidim/controllers/clipboard_copy/controller.js +403 -0
- data/app/packs/src/decidim/controllers/date_picker/controller.js +12 -0
- data/app/packs/src/decidim/controllers/delete_account_form/controller.js +45 -0
- data/app/packs/src/decidim/controllers/delete_account_form/delete_account_form.test.js +216 -0
- data/app/packs/src/decidim/controllers/dropdown/controller.js +125 -0
- data/app/packs/src/decidim/controllers/editor/controller.js +8 -0
- data/app/packs/src/decidim/controllers/emoji/controller.js +26 -0
- data/app/packs/src/decidim/{input_emoji.js → controllers/emoji/emoji.js} +1 -15
- data/app/packs/src/decidim/{form_filter.js → controllers/form_filter/controller.js} +68 -51
- data/app/packs/src/decidim/controllers/form_filter/form_filter.test.js +648 -0
- data/app/packs/src/decidim/controllers/form_validator/controller.js +23 -0
- data/app/packs/src/decidim/controllers/form_validator/form_validator.js +789 -0
- data/app/packs/src/decidim/controllers/form_validator/form_validator.test.js +685 -0
- data/app/packs/src/decidim/controllers/impersonation_warning/controller.js +137 -0
- data/app/packs/src/decidim/controllers/impersonation_warning/impersonation.test.js +382 -0
- data/app/packs/src/decidim/controllers/input_tags/controller.js +28 -0
- data/app/packs/src/decidim/controllers/mention/controller.js +243 -0
- data/app/packs/src/decidim/controllers/mention/input_mentions.test.js +562 -0
- data/app/packs/src/decidim/controllers/multiple_mentions/controller.js +215 -0
- data/app/packs/src/decidim/controllers/multiple_mentions/input_multiple_mentions.test.js +645 -0
- data/app/packs/src/decidim/controllers/notification_action/controller.js +210 -0
- data/app/packs/src/decidim/controllers/notification_action/notification_action.test.js +388 -0
- data/app/packs/src/decidim/controllers/password_toggler/controller.js +232 -0
- data/app/packs/src/decidim/controllers/password_toggler/password_toggler.test.js +229 -0
- data/app/packs/src/decidim/controllers/report_form/controller.js +184 -0
- data/app/packs/src/decidim/controllers/report_form/report_form_manager.test.js +511 -0
- data/app/packs/src/decidim/controllers/scroll_to_last/controller.js +9 -0
- data/app/packs/src/decidim/controllers/scroll_to_last/scroll_to_last_child.test.js +225 -0
- data/app/packs/src/decidim/controllers/sticky_buttons/controller.js +55 -0
- data/app/packs/src/decidim/controllers/sticky_buttons/sticky_buttons.test.js +334 -0
- data/app/packs/src/decidim/controllers/sticky_header/controller.js +116 -0
- data/app/packs/src/decidim/controllers/sticky_header/sticky_header.test.js +320 -0
- data/app/packs/src/decidim/controllers/toggle/controller.js +111 -0
- data/app/packs/src/decidim/controllers/toggle/toggle.test.js +260 -0
- data/app/packs/src/decidim/controllers/tooltip/controller.js +287 -0
- data/app/packs/src/decidim/controllers/tooltip/tooltip.test.js +380 -0
- data/app/packs/src/decidim/controllers/user_registration_form/controller.js +160 -0
- data/app/packs/src/decidim/controllers/user_registration_form/omniauth_registration_form.test.js +441 -0
- data/app/packs/src/decidim/controllers/user_registration_form/user_registration_form.test.js +386 -0
- data/app/packs/src/decidim/data_consent/index.js +1 -1
- data/app/packs/src/decidim/datalist_select.js +1 -1
- data/app/packs/src/decidim/datepicker/form_datepicker.js +1 -1
- data/app/packs/src/decidim/datepicker/generate_datepicker.js +2 -2
- data/app/packs/src/decidim/datepicker/generate_timepicker.js +2 -2
- data/app/packs/src/decidim/direct_uploads/upload_field.js +3 -5
- data/app/packs/src/decidim/direct_uploads/upload_modal.js +1 -1
- data/app/packs/src/decidim/dropdown_menu.js +1 -1
- data/app/packs/src/decidim/editor/common/input_dialog.js +1 -1
- data/app/packs/src/decidim/editor/common/suggestion.js +10 -2
- data/app/packs/src/decidim/editor/common/upload_dialog.js +1 -1
- data/app/packs/src/decidim/editor/extensions/decidim_kit/index.js +7 -7
- data/app/packs/src/decidim/editor/extensions/emoji/index.js +2 -3
- data/app/packs/src/decidim/editor/extensions/image/index.js +1 -1
- data/app/packs/src/decidim/editor/extensions/image/node_view.js +1 -1
- data/app/packs/src/decidim/editor/extensions/link/bubble_menu.js +1 -1
- data/app/packs/src/decidim/editor/extensions/link/index.js +1 -1
- data/app/packs/src/decidim/editor/extensions/mention/index.js +1 -2
- data/app/packs/src/decidim/editor/extensions/mention_resource/index.js +69 -0
- data/app/packs/src/decidim/editor/extensions/video_embed/index.js +1 -1
- data/app/packs/src/decidim/editor/index.js +6 -5
- data/app/packs/src/decidim/editor/test/extensions/decidim_kit.test.js +1 -2
- data/app/packs/src/decidim/editor/test/extensions/emoji.test.js +17 -0
- data/app/packs/src/decidim/editor/test/extensions/heading.test.js +2 -2
- data/app/packs/src/decidim/editor/toolbar.js +1 -1
- data/app/packs/src/decidim/form_attachments.js +1 -1
- data/app/packs/src/decidim/geocoding/attach_input.js +3 -0
- data/app/packs/src/decidim/geocoding/provider/here.js +1 -1
- data/app/packs/src/decidim/geocoding/provider/photon.js +1 -1
- data/app/packs/src/decidim/geocoding/reverse_geocoding.js +2 -2
- data/app/packs/src/decidim/geocoding.js +2 -2
- data/app/packs/src/decidim/index.js +127 -95
- data/app/packs/src/decidim/map/integration/forms.js +1 -1
- data/app/packs/src/decidim/map/legacy.js +1 -1
- data/app/packs/src/decidim/map/provider/default.js +1 -1
- data/app/packs/src/decidim/map/provider/here.js +1 -1
- data/app/packs/src/decidim/map.js +1 -1
- data/app/packs/src/decidim/{external_link.js → refactor/implementation/external_link.js} +1 -1
- data/app/packs/src/decidim/{onboarding_pending_action.js → refactor/integration/onboarding_pending_action.js} +4 -4
- data/app/packs/src/decidim/{check_boxes_tree.js → refactor/moved/check_boxes_tree.js} +24 -9
- data/app/packs/src/decidim/{i18n.test.js → refactor/moved/i18n.test.js} +1 -1
- data/app/packs/src/decidim/{icon.js → refactor/moved/icon.js} +2 -0
- data/app/packs/src/decidim/refactor/support/stimulus.js +39 -0
- data/app/packs/src/decidim/refactor/test/configuration.test.js +360 -0
- data/app/packs/src/decidim/{external_domain_warning.test.js → refactor/test/external_domain_warning.test.js} +1 -1
- data/app/packs/src/decidim/{external_link.test.js → refactor/test/external_link.test.js} +1 -1
- data/app/packs/src/decidim/results_listing.js +2 -2
- data/app/packs/src/decidim/security/selfxss_warning.js +1 -1
- data/app/packs/src/decidim/session_timeouter.js +1 -1
- data/app/packs/src/decidim/sw/push-permissions.js +1 -1
- data/app/packs/src/decidim/utilities/dom.js +1 -1
- data/app/packs/stylesheets/decidim/_accordion.scss +37 -3
- data/app/packs/stylesheets/decidim/_author.scss +0 -21
- data/app/packs/stylesheets/decidim/_buttons.scss +4 -0
- data/app/packs/stylesheets/decidim/_callout.scss +1 -1
- data/app/packs/stylesheets/decidim/_cards.scss +1 -1
- data/app/packs/stylesheets/decidim/_content_blocks.scss +1 -1
- data/app/packs/stylesheets/decidim/_cookies.scss +1 -1
- data/app/packs/stylesheets/decidim/_datepicker.scss +0 -4
- data/app/packs/stylesheets/decidim/_dropdown.scss +56 -19
- data/app/packs/stylesheets/decidim/_forms.scss +6 -6
- data/app/packs/stylesheets/decidim/_header.scss +17 -1
- data/app/packs/stylesheets/decidim/_labels.scss +1 -1
- data/app/packs/stylesheets/decidim/_layout.scss +12 -2
- data/app/packs/stylesheets/decidim/{_endorsers_list.scss → _likes_list.scss} +1 -1
- data/app/packs/stylesheets/decidim/_modal.scss +5 -1
- data/app/packs/stylesheets/decidim/_modal_share.scss +83 -9
- data/app/packs/stylesheets/decidim/_modal_update.scss +1 -5
- data/app/packs/stylesheets/decidim/_participatory_spaces.scss +1 -1
- data/app/packs/stylesheets/decidim/_rich_text.scss +13 -0
- data/app/packs/stylesheets/decidim/_statistics.scss +35 -3
- data/app/packs/stylesheets/decidim/_tooltip.scss +1 -1
- data/app/packs/stylesheets/decidim/_typography.scss +6 -0
- data/app/packs/stylesheets/decidim/_wizard_steps.scss +1 -1
- data/app/packs/stylesheets/decidim/application.scss +76 -76
- data/app/packs/stylesheets/decidim/editor.scss +11 -12
- data/app/packs/stylesheets/decidim/legacy/email.scss +6 -5
- data/app/packs/stylesheets/decidim/map.scss +5 -3
- data/app/packs/stylesheets/decidim/qr.scss +65 -0
- data/app/permissions/decidim/default_permissions.rb +16 -0
- data/app/permissions/decidim/permissions.rb +5 -26
- data/app/presenters/decidim/admin_log/base_user_presenter.rb +2 -2
- data/app/presenters/decidim/admin_log/organization_presenter.rb +0 -15
- data/app/presenters/decidim/home_stats_presenter.rb +4 -54
- data/app/presenters/decidim/log/base_presenter.rb +1 -1
- data/app/presenters/decidim/menu_item_presenter.rb +10 -3
- data/app/presenters/decidim/official_author_presenter.rb +0 -4
- data/app/presenters/decidim/participatory_space_private_user_presenter.rb +0 -4
- data/app/presenters/decidim/resource_locator_presenter.rb +15 -4
- data/app/presenters/decidim/resource_presenter.rb +8 -8
- data/app/presenters/decidim/stats_presenter.rb +39 -60
- data/app/presenters/decidim/taxonomy_presenter.rb +5 -1
- data/app/presenters/decidim/user_presenter.rb +0 -6
- data/app/queries/decidim/authorized_users.rb +26 -0
- data/app/queries/decidim/inactive_users_query.rb +31 -0
- data/app/queries/decidim/public_activities.rb +2 -2
- data/app/queries/decidim/stats_followers_count.rb +43 -0
- data/app/queries/decidim/stats_participants_count.rb +102 -0
- data/app/serializers/decidim/exporters/open_data_user_serializer.rb +1 -5
- data/app/serializers/decidim/exporters/participatory_space_serializer.rb +0 -1
- data/app/services/decidim/action_logger.rb +2 -1
- data/app/services/decidim/base_diff_renderer.rb +0 -17
- data/app/services/decidim/onboarding_manager.rb +4 -0
- data/app/services/decidim/open_data_exporter.rb +19 -11
- data/app/services/decidim/send_push_notification.rb +4 -3
- data/app/services/decidim/traceability.rb +1 -1
- data/app/validators/etiquette_validator.rb +7 -0
- data/app/validators/translated_etiquette_validator.rb +1 -0
- data/app/views/decidim/account/_old_password_field.html.erb +1 -1
- data/app/views/decidim/account/_password_fields.html.erb +1 -1
- data/app/views/decidim/account/delete.html.erb +1 -1
- data/app/views/decidim/account/show.html.erb +3 -3
- data/app/views/decidim/amendments/edit_draft.html.erb +0 -4
- data/app/views/decidim/amendments/new.html.erb +0 -4
- data/app/views/decidim/amendments/preview_draft.html.erb +1 -1
- data/app/views/decidim/application/_accordion_section.html.erb +1 -1
- data/app/views/decidim/application/_collection.html.erb +1 -1
- data/app/views/decidim/application/_radio_accordion.html.erb +30 -0
- data/app/views/decidim/devise/omniauth_registrations/new.html.erb +1 -1
- data/app/views/decidim/devise/omniauth_registrations/new_tos_fields.html.erb +1 -1
- data/app/views/decidim/devise/registrations/new.html.erb +1 -1
- data/app/views/decidim/devise/shared/_links.html.erb +1 -1
- data/app/views/decidim/doorkeeper/authorizations/new.html.erb +39 -8
- data/app/views/decidim/errors/internal_server_error.html.erb +1 -0
- data/app/views/decidim/likes/update_buttons_and_counters.js.erb +21 -0
- data/app/views/decidim/messaging/conversations/_add_conversation_users.html.erb +2 -2
- data/app/views/decidim/messaging/conversations/_reply_form.html.erb +1 -1
- data/app/views/decidim/messaging/conversations/_start.html.erb +1 -1
- data/app/views/decidim/messaging/conversations/create.js.erb +0 -1
- data/app/views/decidim/messaging/conversations/new.html.erb +1 -1
- data/app/views/decidim/messaging/conversations/show.html.erb +1 -1
- data/app/views/decidim/notifications_settings/show.html.erb +3 -3
- data/app/views/decidim/pages/_tabbed.html.erb +1 -1
- data/app/views/decidim/pages/index.html.erb +1 -1
- data/app/views/decidim/participants_account_mailer/inactivity_notification.html.erb +13 -0
- data/app/views/decidim/participants_account_mailer/removal_notification.html.erb +11 -0
- data/app/views/decidim/profiles/show.html.erb +1 -1
- data/app/views/decidim/qr/show.html.erb +28 -0
- data/app/views/decidim/searches/_filters.html.erb +18 -2
- data/app/views/decidim/searches/index.html.erb +5 -2
- data/app/views/decidim/shared/_confirm_modal.html.erb +5 -3
- data/app/views/decidim/shared/_filters.html.erb +2 -2
- data/app/views/decidim/shared/_orders.html.erb +1 -1
- data/app/views/decidim/shared/_resource_actions.html.erb +8 -5
- data/app/views/decidim/user_activities/index.html.erb +1 -1
- data/app/views/decidim/user_group_mailer/notify_deprecation_to_member.html.erb +15 -0
- data/app/views/decidim/user_group_mailer/notify_deprecation_to_owner.html.erb +22 -0
- data/app/views/layouts/decidim/_head.html.erb +15 -12
- data/app/views/layouts/decidim/_impersonation_warning.html.erb +1 -1
- data/app/views/layouts/decidim/_js_configuration.html.erb +17 -19
- data/app/views/layouts/decidim/_meta_tags_context.html.erb +3 -0
- data/app/views/layouts/decidim/_offline_banner.html.erb +1 -1
- data/app/views/layouts/decidim/_wrapper.html.erb +8 -6
- data/app/views/layouts/decidim/footer/_focus_mode_main.html.erb +7 -0
- data/app/views/layouts/decidim/footer/_main_language_chooser.html.erb +1 -1
- data/app/views/layouts/decidim/header/_close_ephemeral_session.html.erb +12 -2
- data/app/views/layouts/decidim/header/_focus_mode_back_button.html.erb +24 -0
- data/app/views/layouts/decidim/header/_main.html.erb +28 -22
- data/app/views/layouts/decidim/header/_main_links_desktop.html.erb +1 -1
- data/app/views/layouts/decidim/header/_main_links_dropdown.html.erb +18 -18
- data/app/views/layouts/decidim/header/_main_links_mobile_item_account.html.erb +1 -1
- data/app/views/layouts/decidim/header/_main_menu_mobile.html.erb +1 -1
- data/app/views/layouts/decidim/header/_menu_breadcrumb_desktop.html.erb +1 -1
- data/app/views/layouts/decidim/header/_menu_breadcrumb_items.html.erb +1 -1
- data/app/views/layouts/decidim/header/_menu_breadcrumb_mobile_tablet.html.erb +1 -1
- data/app/views/layouts/decidim/header/_mobile_language_choose.html.erb +1 -1
- data/app/views/layouts/decidim/mailer.html.erb +2 -2
- data/app/views/layouts/decidim/newsletter_base.html.erb +2 -2
- data/app/views/layouts/decidim/shared/_layout_two_col.html.erb +3 -1
- data/app/views/layouts/decidim/shared/_layout_user_profile.html.erb +7 -3
- data/config/assets.rb +3 -3
- data/config/initializers/devise.rb +8 -0
- data/config/initializers/omniauth.rb +1 -1
- data/config/locales/ar.yml +0 -209
- data/config/locales/bg.yml +0 -238
- data/config/locales/bs-BA.yml +0 -30
- data/config/locales/ca-IT.yml +112 -286
- data/config/locales/ca.yml +112 -286
- data/config/locales/cs.yml +85 -279
- data/config/locales/de.yml +112 -285
- data/config/locales/el.yml +0 -224
- data/config/locales/en.yml +112 -286
- data/config/locales/eo.yml +0 -2
- data/config/locales/es-MX.yml +112 -286
- data/config/locales/es-PY.yml +112 -286
- data/config/locales/es.yml +112 -286
- data/config/locales/eu.yml +125 -299
- data/config/locales/fi-plain.yml +112 -286
- data/config/locales/fi.yml +112 -286
- data/config/locales/fr-CA.yml +85 -275
- data/config/locales/fr.yml +85 -275
- data/config/locales/ga-IE.yml +0 -28
- data/config/locales/gl.yml +0 -140
- data/config/locales/hu.yml +0 -237
- data/config/locales/id-ID.yml +0 -136
- data/config/locales/is-IS.yml +0 -14
- data/config/locales/it.yml +1 -234
- data/config/locales/ja.yml +108 -282
- data/config/locales/lb.yml +0 -189
- data/config/locales/lt.yml +0 -240
- data/config/locales/lv.yml +0 -186
- data/config/locales/nl.yml +0 -189
- data/config/locales/no.yml +0 -189
- data/config/locales/pl.yml +0 -244
- data/config/locales/pt-BR.yml +0 -213
- data/config/locales/pt.yml +0 -189
- data/config/locales/ro-RO.yml +54 -218
- data/config/locales/ru.yml +0 -62
- data/config/locales/sk.yml +0 -164
- data/config/locales/sr-CS.yml +0 -31
- data/config/locales/sv.yml +80 -263
- data/config/locales/tr-TR.yml +0 -189
- data/config/locales/uk.yml +0 -23
- data/config/locales/zh-CN.yml +0 -180
- data/config/locales/zh-TW.yml +0 -229
- data/config/routes.rb +3 -36
- data/db/migrate/20250217192438_convert_user_groups_into_users.rb +38 -0
- data/db/migrate/20250221085317_add_user_type_to_action_logs.rb +12 -0
- data/db/migrate/20250221090905_create_decidim_api_jwt_denylist.rb +11 -0
- data/db/migrate/20250221091348_add_api_key_to_decidim_api_user.rb +7 -0
- data/db/migrate/20250327143657_remove_metrics_content_blocks.rb +9 -0
- data/db/migrate/20250401153444_enable_pkce.rb +8 -0
- data/db/migrate/20250416130426_rename_doorkeeper_scopes.rb +25 -0
- data/db/migrate/20250515105231_rename_endorsements_to_likes.rb +62 -0
- data/db/migrate/20250523104311_move_cta_to_hero_content_block.rb +34 -0
- data/db/migrate/20250527122040_move_highlighted_content_banner_settings_to_content_block.rb +69 -0
- data/db/migrate/20250603103953_add_refresh_tokens_enabled_to_doorkeeper_applications.rb +7 -0
- data/db/migrate/20250609073104_remove_not_null_on_active_storage_blobs_checksum.active_storage.rb +10 -0
- data/db/migrate/20250613122148_remove_hashtag_table_from_core.rb +7 -0
- data/decidim-core.gemspec +4 -4
- data/{app/helpers → lib}/decidim/action_authorization_helper.rb +5 -4
- data/lib/decidim/amendable.rb +4 -4
- data/lib/decidim/api/functions/user_entity_finder.rb +1 -1
- data/lib/decidim/api/input_filters/component_input_filter.rb +3 -3
- data/lib/decidim/api/input_filters/user_entity_input_filter.rb +0 -21
- data/lib/decidim/api/input_sorts/has_likeable_input_sort.rb +15 -0
- data/lib/decidim/api/interfaces/attachable_collection_interface.rb +13 -0
- data/lib/decidim/api/interfaces/author_interface.rb +1 -2
- data/lib/decidim/api/interfaces/authorable_interface.rb +2 -2
- data/lib/decidim/api/interfaces/coauthorable_interface.rb +1 -1
- data/lib/decidim/api/interfaces/component_interface.rb +6 -0
- data/lib/decidim/api/interfaces/followable_interface.rb +13 -0
- data/lib/decidim/api/interfaces/likeable_interface.rb +19 -0
- data/lib/decidim/api/interfaces/localizable_interface.rb +18 -0
- data/lib/decidim/api/interfaces/participatory_space_interface.rb +6 -8
- data/lib/decidim/api/interfaces/referable_interface.rb +13 -0
- data/lib/decidim/api/interfaces/timestamps_interface.rb +0 -1
- data/lib/decidim/api/interfaces/traceable_interface.rb +1 -1
- data/lib/decidim/api/types/attachment_collection_type.rb +14 -0
- data/lib/decidim/api/types/organization_type.rb +3 -1
- data/lib/decidim/api/types/session_type.rb +0 -5
- data/lib/decidim/api/types/statistic_type.rb +29 -3
- data/lib/decidim/api/types/trace_version_type.rb +1 -1
- data/lib/decidim/api/types/user_type.rb +1 -2
- data/lib/decidim/api_response_helper.rb +12 -0
- data/lib/decidim/asset_router/storage.rb +2 -4
- data/lib/decidim/assets/tailwind/instance.rb +1 -1
- data/lib/decidim/assets/tailwind/tailwind.config.js.erb +4 -3
- data/lib/decidim/attribute_encryptor.rb +1 -1
- data/lib/decidim/attributes/time_with_zone.rb +1 -1
- data/lib/decidim/authorable.rb +5 -34
- data/lib/decidim/coauthorable.rb +13 -31
- data/lib/decidim/content_parsers/blob_parser.rb +1 -1
- data/lib/decidim/content_parsers/mention_resource_parser.rb +23 -0
- data/lib/decidim/content_parsers/tag_parser.rb +2 -2
- data/lib/decidim/content_parsers/user_parser.rb +2 -2
- data/lib/decidim/content_parsers.rb +14 -2
- data/lib/decidim/content_processor.rb +1 -1
- data/lib/decidim/content_renderers/mention_resource_renderer.rb +77 -0
- data/lib/decidim/content_renderers.rb +1 -2
- data/lib/decidim/core/api.rb +7 -8
- data/lib/decidim/core/content_blocks/registry_manager.rb +19 -5
- data/lib/decidim/core/engine.rb +72 -104
- data/lib/decidim/core/menu.rb +0 -7
- data/lib/decidim/core/seeds.rb +11 -39
- data/lib/decidim/core/test/factories.rb +22 -121
- data/lib/decidim/core/test/shared_examples/authorable.rb +0 -17
- data/lib/decidim/core/test/shared_examples/coauthorable.rb +5 -48
- data/lib/decidim/core/test/shared_examples/comments_examples.rb +7 -56
- data/lib/decidim/core/test/shared_examples/likeable.rb +22 -0
- data/lib/decidim/core/test/shared_examples/manage_share_tokens_examples.rb +16 -3
- data/lib/decidim/core/test/shared_examples/map_examples.rb +1 -1
- data/lib/decidim/core/test/shared_examples/oauth_application_examples.rb +137 -0
- data/lib/decidim/core/test/shared_examples/participatory_space_dropdown_metadata_cell_examples.rb +0 -18
- data/lib/decidim/core/test/shared_examples/permissions.rb +0 -46
- data/lib/decidim/core/test/shared_examples/reports_examples.rb +2 -2
- data/lib/decidim/core/test/shared_examples/{resource_endorsed_event_examples.rb → resource_liked_event_examples.rb} +7 -7
- data/lib/decidim/core/test/shared_examples/resource_search_examples.rb +0 -14
- data/lib/decidim/core/test/shared_examples/searchable_results_examples.rb +8 -34
- data/lib/decidim/core/test/shared_examples/social_share_examples.rb +79 -0
- data/lib/decidim/core/test/shared_examples/system_like_resource_examples.rb +192 -0
- data/lib/decidim/core/test/shared_examples/uncommentable_component_examples.rb +2 -2
- data/lib/decidim/core/test/shared_examples/{with_endorsable_permissions_examples.rb → with_likeable_permissions_examples.rb} +22 -22
- data/lib/decidim/core/test.rb +6 -9
- data/lib/decidim/core/version.rb +1 -1
- data/lib/decidim/core.rb +237 -88
- data/lib/decidim/deprecations.rb +1 -1
- data/lib/decidim/download_your_data_serializers.rb +6 -3
- data/lib/decidim/env.rb +3 -1
- data/lib/decidim/events.rb +0 -1
- data/lib/decidim/form_builder.rb +26 -43
- data/lib/decidim/gamification/badge_scorer.rb +0 -2
- data/lib/decidim/gamification.rb +1 -1
- data/lib/decidim/has_conversations.rb +0 -44
- data/lib/decidim/has_workflows.rb +42 -0
- data/lib/decidim/icon_registry.rb +4 -4
- data/lib/decidim/legacy_form_builder.rb +17 -2
- data/lib/decidim/likeable.rb +24 -0
- data/lib/decidim/manifest_registry.rb +1 -1
- data/lib/decidim/map/provider/dynamic_map/here.rb +0 -19
- data/lib/decidim/map/provider/static_map/here.rb +2 -10
- data/lib/decidim/menu.rb +1 -1
- data/lib/decidim/moderation_tools.rb +1 -1
- data/lib/decidim/mutation_registry.rb +17 -0
- data/lib/decidim/newsletter_encryptor.rb +1 -1
- data/lib/decidim/oauth/token_generator.rb +35 -0
- data/lib/decidim/oauth.rb +7 -0
- data/lib/decidim/organization_settings.rb +2 -10
- data/lib/decidim/paddable.rb +1 -1
- data/lib/decidim/participatory_space_resourceable.rb +2 -2
- data/lib/decidim/participatory_space_user.rb +1 -1
- data/lib/decidim/pdf_signature_example.rb +108 -0
- data/lib/decidim/query.rb +1 -1
- data/lib/decidim/query_extensions.rb +0 -33
- data/lib/decidim/reportable.rb +1 -1
- data/lib/decidim/searchable.rb +4 -2
- data/lib/decidim/seeds.rb +8 -0
- data/lib/decidim/settings_manifest.rb +3 -2
- data/lib/decidim/{webpacker → shakapacker}/configuration.rb +4 -4
- data/lib/decidim/{webpacker → shakapacker}/runner.rb +3 -3
- data/lib/decidim/shakapacker/shakapacker.rb +8 -0
- data/lib/decidim/{webpacker → shakapacker}/shakapacker.yml +3 -1
- data/lib/decidim/{webpacker → shakapacker}/webpack/custom.js +1 -1
- data/lib/decidim/shakapacker.rb +34 -0
- data/lib/decidim/social_share_service_manifest.rb +7 -12
- data/lib/decidim/stats_registry.rb +15 -3
- data/{app/helpers → lib}/decidim/tooltip_helper.rb +3 -3
- data/lib/decidim/url_option_resolver.rb +1 -1
- data/lib/decidim/view_model.rb +0 -3
- data/lib/decidim/webpacker.rb +11 -20
- data/lib/decidim/workflow_registry.rb +61 -0
- data/lib/tasks/decidim_participants_tasks.rake +22 -0
- data/lib/tasks/{decidim_webpacker_tasks.rake → decidim_shakapacker_tasks.rake} +35 -33
- data/lib/tasks/decidim_tasks.rake +4 -1
- data/lib/tasks/decidim_taxonomies.rake +0 -34
- data/lib/tasks/upgrade/clean.rake +1 -1
- data/lib/tasks/upgrade/decidim_action_log_valuation_assignment.rake +13 -0
- data/lib/tasks/upgrade/decidim_change_valuator_tasks.rake +12 -0
- data/lib/tasks/upgrade/{decidim_deduplicate_endorsements.rake → decidim_deduplicate_likes.rake} +10 -10
- data/lib/tasks/upgrade/decidim_migrate_wysiwyg_content.rake +2 -2
- data/lib/tasks/upgrade/decidim_paper_trail_valuation_assignment.rake +13 -0
- data/lib/tasks/upgrade/user_groups_migration.rake +155 -0
- metadata +204 -256
- data/app/cells/decidim/author/endorsements.erb +0 -4
- data/app/cells/decidim/author/profile_minicard.erb +0 -30
- data/app/cells/decidim/content_blocks/organization_metrics_cell.rb +0 -21
- data/app/cells/decidim/content_blocks/participatory_space_metrics/content.erb +0 -18
- data/app/cells/decidim/content_blocks/participatory_space_metrics_cell.rb +0 -43
- data/app/cells/decidim/endorsement_block/show.erb +0 -3
- data/app/cells/decidim/endorsement_buttons/button_content.erb +0 -2
- data/app/cells/decidim/endorsement_buttons/select_identity_button.erb +0 -7
- data/app/cells/decidim/endorsement_buttons/show.erb +0 -17
- data/app/cells/decidim/endorsement_buttons_cell.rb +0 -87
- data/app/cells/decidim/endorsers_list/empty.erb +0 -3
- data/app/cells/decidim/endorsers_list/show.erb +0 -20
- data/app/cells/decidim/endorsers_list_cell.rb +0 -64
- data/app/cells/decidim/group_admins/show.erb +0 -34
- data/app/cells/decidim/group_admins_cell.rb +0 -8
- data/app/cells/decidim/group_members/show.erb +0 -46
- data/app/cells/decidim/group_members_cell.rb +0 -8
- data/app/cells/decidim/groups/show.erb +0 -14
- data/app/cells/decidim/groups_cell.rb +0 -22
- data/app/cells/decidim/members/show.erb +0 -12
- data/app/cells/decidim/members_cell.rb +0 -34
- data/app/cells/decidim/profile_actions/dropdown_actions.erb +0 -21
- data/app/cells/decidim/represent_user_group/show.erb +0 -11
- data/app/cells/decidim/represent_user_group_cell.rb +0 -46
- data/app/cells/decidim/user_conversation/conversation_header.erb +0 -14
- data/app/cells/decidim/user_conversation/messages.erb +0 -1
- data/app/cells/decidim/user_conversation/new.erb +0 -6
- data/app/cells/decidim/user_conversation/reply.erb +0 -9
- data/app/cells/decidim/user_conversation/show.erb +0 -19
- data/app/cells/decidim/user_conversation/start.erb +0 -12
- data/app/cells/decidim/user_conversation_cell.rb +0 -62
- data/app/cells/decidim/user_conversations/new_conversation_button.erb +0 -20
- data/app/cells/decidim/user_conversations/show.erb +0 -13
- data/app/cells/decidim/user_conversations_cell.rb +0 -28
- data/app/cells/decidim/user_group_pending_invitations_list/show.erb +0 -28
- data/app/cells/decidim/user_group_pending_invitations_list_cell.rb +0 -26
- data/app/cells/decidim/user_group_pending_requests_list/show.erb +0 -27
- data/app/cells/decidim/user_group_pending_requests_list_cell.rb +0 -26
- data/app/commands/decidim/accept_group_invitation.rb +0 -43
- data/app/commands/decidim/accept_user_group_join_request.rb +0 -53
- data/app/commands/decidim/create_user_group.rb +0 -73
- data/app/commands/decidim/demote_membership.rb +0 -57
- data/app/commands/decidim/endorse_resource.rb +0 -66
- data/app/commands/decidim/invite_user_to_group.rb +0 -63
- data/app/commands/decidim/join_user_group.rb +0 -57
- data/app/commands/decidim/leave_user_group.rb +0 -47
- data/app/commands/decidim/promote_membership.rb +0 -55
- data/app/commands/decidim/reject_group_invitation.rb +0 -42
- data/app/commands/decidim/reject_user_group_join_request.rb +0 -53
- data/app/commands/decidim/remove_user_from_group.rb +0 -53
- data/app/commands/decidim/unendorse_resource.rb +0 -39
- data/app/commands/decidim/update_user_group.rb +0 -72
- data/app/controllers/concerns/decidim/user_groups.rb +0 -23
- data/app/controllers/decidim/endorsements_controller.rb +0 -71
- data/app/controllers/decidim/group_email_confirmations_controller.rb +0 -32
- data/app/controllers/decidim/group_invites_controller.rb +0 -104
- data/app/controllers/decidim/group_members_controller.rb +0 -75
- data/app/controllers/decidim/groups_controller.rb +0 -99
- data/app/controllers/decidim/own_user_groups_controller.rb +0 -15
- data/app/controllers/decidim/user_conversations_controller.rb +0 -133
- data/app/controllers/decidim/user_group_join_requests_controller.rb +0 -72
- data/app/events/decidim/demoted_membership_event.rb +0 -28
- data/app/events/decidim/invited_to_group_event.rb +0 -62
- data/app/events/decidim/join_request_accepted_event.rb +0 -28
- data/app/events/decidim/join_request_created_event.rb +0 -28
- data/app/events/decidim/join_request_rejected_event.rb +0 -28
- data/app/events/decidim/promoted_to_admin_event.rb +0 -28
- data/app/events/decidim/removed_from_group_event.rb +0 -28
- data/app/events/decidim/resource_endorsed_event.rb +0 -36
- data/app/events/decidim/user_group_admin_event.rb +0 -37
- data/app/events/decidim/user_group_created_event.rb +0 -6
- data/app/events/decidim/user_group_updated_event.rb +0 -6
- data/app/forms/decidim/invite_user_to_group_form.rb +0 -29
- data/app/forms/decidim/user_group_form.rb +0 -85
- data/app/helpers/decidim/cta_button_helper.rb +0 -31
- data/app/helpers/decidim/endorsable_helper.rb +0 -84
- data/app/helpers/decidim/twitter_search_helper.rb +0 -14
- data/app/helpers/decidim/user_group_helper.rb +0 -22
- data/app/jobs/decidim/metric_job.rb +0 -15
- data/app/models/decidim/metric.rb +0 -25
- data/app/models/decidim/user_group.rb +0 -217
- data/app/models/decidim/user_group_membership.rb +0 -17
- data/app/packs/entrypoints/decidim_widget.js +0 -1
- data/app/packs/src/decidim/abide_form_validator_fixer.js +0 -44
- data/app/packs/src/decidim/account_form.js +0 -96
- data/app/packs/src/decidim/append_elements.js +0 -6
- data/app/packs/src/decidim/back_to_list.js +0 -26
- data/app/packs/src/decidim/change_report_form_behavior.js +0 -45
- data/app/packs/src/decidim/clipboard.js +0 -128
- data/app/packs/src/decidim/editor/extensions/hashtag/index.js +0 -66
- data/app/packs/src/decidim/editor/extensions/heading/index.js +0 -33
- data/app/packs/src/decidim/editor/test/extensions/hashtag.test.js +0 -105
- data/app/packs/src/decidim/form_filter.component_for_testing.js +0 -7
- data/app/packs/src/decidim/form_validator.js +0 -56
- data/app/packs/src/decidim/gallery.js +0 -5
- data/app/packs/src/decidim/impersonation.js +0 -23
- data/app/packs/src/decidim/input_autojump.js +0 -38
- data/app/packs/src/decidim/input_hashtags.js +0 -91
- data/app/packs/src/decidim/input_mentions.js +0 -143
- data/app/packs/src/decidim/input_multiple_mentions.js +0 -115
- data/app/packs/src/decidim/input_tags.js +0 -16
- data/app/packs/src/decidim/notifications_actions.js +0 -40
- data/app/packs/src/decidim/password_toggler.js +0 -104
- data/app/packs/src/decidim/remote_tooltips.js +0 -38
- data/app/packs/src/decidim/responsive_horizontal_tabs.js +0 -12
- data/app/packs/src/decidim/scroll_to_last_child.js +0 -14
- data/app/packs/src/decidim/slug_form.js +0 -9
- data/app/packs/src/decidim/sticky_footer.js +0 -48
- data/app/packs/src/decidim/sticky_header.js +0 -62
- data/app/packs/src/decidim/toggle.js +0 -37
- data/app/packs/src/decidim/tooltips.js +0 -152
- data/app/packs/src/decidim/user_registrations.js +0 -65
- data/app/packs/src/decidim/vizzs/areachart.js +0 -251
- data/app/packs/src/decidim/vizzs/index.js +0 -82
- data/app/packs/src/decidim/widget.js +0 -14
- data/app/packs/stylesheets/decidim/_hashtags.scss +0 -5
- data/app/packs/stylesheets/decidim/_metrics.scss +0 -70
- data/app/packs/stylesheets/decidim/_modal_identities.scss +0 -23
- data/app/presenters/decidim/admin_log/user_group_presenter.rb +0 -31
- data/app/presenters/decidim/hashtag_presenter.rb +0 -37
- data/app/presenters/decidim/metric_charts_presenter.rb +0 -92
- data/app/presenters/decidim/metric_object_presenter.rb +0 -32
- data/app/presenters/decidim/user_group_presenter.rb +0 -38
- data/app/queries/decidim/metric_manage.rb +0 -81
- data/app/queries/decidim/metric_measure.rb +0 -36
- data/app/queries/decidim/metrics/blocked_users_metric_manage.rb +0 -26
- data/app/queries/decidim/metrics/followers_metric_manage.rb +0 -65
- data/app/queries/decidim/metrics/participants_metric_manage.rb +0 -79
- data/app/queries/decidim/metrics/reported_users_metric_manage.rb +0 -26
- data/app/queries/decidim/metrics/user_reports_metric_manage.rb +0 -26
- data/app/queries/decidim/metrics/users_metric_manage.rb +0 -26
- data/app/queries/decidim/user_groups/accepted_memberships.rb +0 -36
- data/app/queries/decidim/user_groups/accepted_user_groups.rb +0 -38
- data/app/queries/decidim/user_groups/accepted_users.rb +0 -36
- data/app/queries/decidim/user_groups/admin_memberships.rb +0 -37
- data/app/queries/decidim/user_groups/invited_memberships.rb +0 -36
- data/app/queries/decidim/user_groups/manageable_user_groups.rb +0 -39
- data/app/queries/decidim/user_groups/member_memberships.rb +0 -37
- data/app/resolvers/decidim/core/metric_resolver.rb +0 -71
- data/app/resolvers/decidim/hashtags_resolver.rb +0 -15
- data/app/serializers/decidim/exporters/open_data_metric_serializer.rb +0 -22
- data/app/serializers/decidim/exporters/open_data_user_group_serializer.rb +0 -38
- data/app/views/decidim/endorsements/_identity.html.erb +0 -4
- data/app/views/decidim/endorsements/identities.html.erb +0 -18
- data/app/views/decidim/endorsements/update_buttons_and_counters.js.erb +0 -25
- data/app/views/decidim/group_invites/index.html.erb +0 -26
- data/app/views/decidim/groups/_form.html.erb +0 -17
- data/app/views/decidim/groups/edit.html.erb +0 -19
- data/app/views/decidim/groups/new.html.erb +0 -23
- data/app/views/decidim/messaging/conversation_mailer/comanagers_new_conversation.html.erb +0 -17
- data/app/views/decidim/messaging/conversation_mailer/comanagers_new_message.html.erb +0 -17
- data/app/views/decidim/messaging/conversation_mailer/new_group_conversation.html.erb +0 -17
- data/app/views/decidim/messaging/conversation_mailer/new_group_message.html.erb +0 -17
- data/app/views/decidim/own_user_groups/index.html.erb +0 -10
- data/app/views/decidim/shared/_extended_navigation_bar.html.erb +0 -50
- data/app/views/decidim/user_conversations/index.html.erb +0 -4
- data/app/views/decidim/user_conversations/show.html.erb +0 -4
- data/app/views/decidim/user_conversations/update.js.erb +0 -8
- data/config/initializers/new_framework_defaults_7_0.rb +0 -145
- data/lib/decidim/api/input_filters/has_hastaggable_input_filter.rb +0 -15
- data/lib/decidim/api/input_sorts/has_endorsable_input_sort.rb +0 -15
- data/lib/decidim/api/interfaces/endorsable_interface.rb +0 -19
- data/lib/decidim/api/types/hashtag_type.rb +0 -13
- data/lib/decidim/api/types/metric_history_type.rb +0 -20
- data/lib/decidim/api/types/metric_type.rb +0 -13
- data/lib/decidim/api/types/user_group_type.rb +0 -55
- data/lib/decidim/content_parsers/hashtag_parser.rb +0 -66
- data/lib/decidim/content_parsers/user_group_parser.rb +0 -33
- data/lib/decidim/content_renderers/hashtag_renderer.rb +0 -78
- data/lib/decidim/content_renderers/user_group_renderer.rb +0 -31
- data/lib/decidim/core/test/shared_examples/amendable_interface_examples.rb +0 -14
- data/lib/decidim/core/test/shared_examples/amendable_proposals_interface_examples.rb +0 -50
- data/lib/decidim/core/test/shared_examples/assembly_announcements_examples.rb +0 -38
- data/lib/decidim/core/test/shared_examples/attachable_interface_examples.rb +0 -16
- data/lib/decidim/core/test/shared_examples/authorable_interface_examples.rb +0 -59
- data/lib/decidim/core/test/shared_examples/categories_container_examples.rb +0 -22
- data/lib/decidim/core/test/shared_examples/categorizable_interface_examples.rb +0 -27
- data/lib/decidim/core/test/shared_examples/coauthorable_interface_examples.rb +0 -91
- data/lib/decidim/core/test/shared_examples/endorsable.rb +0 -69
- data/lib/decidim/core/test/shared_examples/endorsable_interface_examples.rb +0 -22
- data/lib/decidim/core/test/shared_examples/fingerprintable_interface_examples.rb +0 -17
- data/lib/decidim/core/test/shared_examples/input_filter_examples.rb +0 -118
- data/lib/decidim/core/test/shared_examples/input_sort_examples.rb +0 -126
- data/lib/decidim/core/test/shared_examples/metric_manage_shared_context.rb +0 -9
- data/lib/decidim/core/test/shared_examples/participatory_space_resourcable_interface_examples.rb +0 -43
- data/lib/decidim/core/test/shared_examples/process_announcements_examples.rb +0 -37
- data/lib/decidim/core/test/shared_examples/scopable_interface_examples.rb +0 -19
- data/lib/decidim/core/test/shared_examples/system_endorse_resource_examples.rb +0 -298
- data/lib/decidim/core/test/shared_examples/taxonomizable_interface_examples.rb +0 -20
- data/lib/decidim/core/test/shared_examples/timestamps_interface_examples.rb +0 -21
- data/lib/decidim/core/test/shared_examples/traceable_interface_examples.rb +0 -47
- data/lib/decidim/download_your_data_serializers/download_your_data_user_group_serializer.rb +0 -21
- data/lib/decidim/endorsable.rb +0 -29
- data/lib/decidim/events/user_group_event.rb +0 -43
- data/lib/decidim/hashtag.rb +0 -13
- data/lib/decidim/metric_manifest.rb +0 -35
- data/lib/decidim/metric_operation.rb +0 -58
- data/lib/decidim/metric_operation_manifest.rb +0 -21
- data/lib/decidim/metric_registry.rb +0 -109
- data/lib/gem_overrides/shakapacker/runner.rb +0 -9
- data/lib/tasks/decidim_metrics_tasks.rake +0 -89
- /data/app/cells/decidim/{endorsement_buttons/disabled_endorsements.erb → like_buttons/disabled_likes.erb} +0 -0
- /data/app/packs/src/decidim/{configuration.js → refactor/implementation/configuration.js} +0 -0
- /data/app/packs/src/decidim/{external_domain_warning.js → refactor/implementation/external_domain_warning.js} +0 -0
- /data/app/packs/src/decidim/{autocomplete.js → refactor/moved/autocomplete.js} +0 -0
- /data/app/packs/src/decidim/{delayed.js → refactor/moved/delayed.js} +0 -0
- /data/app/packs/src/decidim/{focus_guard.js → refactor/moved/focus_guard.js} +0 -0
- /data/app/packs/src/decidim/{history.js → refactor/moved/history.js} +0 -0
- /data/app/packs/src/decidim/{i18n.js → refactor/moved/i18n.js} +0 -0
- /data/lib/decidim/core/test/shared_examples/{endorsements_controller_shared_context.rb → likes_controller_shared_context.rb} +0 -0
- /data/{app/helpers → lib}/decidim/resource_helper.rb +0 -0
- /data/lib/decidim/{webpacker → shakapacker}/esbuild.config.js +0 -0
- /data/lib/decidim/{webpacker → shakapacker}/postcss.config.js +0 -0
- /data/lib/decidim/{webpacker → shakapacker}/tsconfig.json +0 -0
- /data/lib/decidim/{webpacker → shakapacker}/webpack/.modernizrrc +0 -0
- /data/lib/decidim/{webpacker → shakapacker}/webpack/webpack.config.js +0 -0
data/lib/decidim/core.rb
CHANGED
@@ -59,6 +59,7 @@ module Decidim
|
|
59
59
|
autoload :AdminFilter, "decidim/admin_filter"
|
60
60
|
autoload :AdminFiltersRegistry, "decidim/admin_filters_registry"
|
61
61
|
autoload :ManifestRegistry, "decidim/manifest_registry"
|
62
|
+
autoload :MutationRegistry, "decidim/mutation_registry"
|
62
63
|
autoload :AssetRouter, "decidim/asset_router"
|
63
64
|
autoload :EngineRouter, "decidim/engine_router"
|
64
65
|
autoload :UrlOptionResolver, "decidim/url_option_resolver"
|
@@ -67,10 +68,6 @@ module Decidim
|
|
67
68
|
autoload :ContentBlockRegistry, "decidim/content_block_registry"
|
68
69
|
autoload :ContentBlockManifest, "decidim/content_block_manifest"
|
69
70
|
autoload :ContentBlocks, "decidim/content_blocks"
|
70
|
-
autoload :MetricRegistry, "decidim/metric_registry"
|
71
|
-
autoload :MetricManifest, "decidim/metric_manifest"
|
72
|
-
autoload :MetricOperation, "decidim/metric_operation"
|
73
|
-
autoload :MetricOperationManifest, "decidim/metric_operation_manifest"
|
74
71
|
autoload :AttributeEncryptor, "decidim/attribute_encryptor"
|
75
72
|
autoload :NewsletterEncryptor, "decidim/newsletter_encryptor"
|
76
73
|
autoload :NewsletterParticipant, "decidim/newsletter_participant"
|
@@ -88,7 +85,6 @@ module Decidim
|
|
88
85
|
autoload :DownloadYourDataExporter, "decidim/download_your_data_exporter"
|
89
86
|
autoload :Amendable, "decidim/amendable"
|
90
87
|
autoload :Gamification, "decidim/gamification"
|
91
|
-
autoload :Hashtag, "decidim/hashtag"
|
92
88
|
autoload :Etherpad, "decidim/etherpad"
|
93
89
|
autoload :Paddable, "decidim/paddable"
|
94
90
|
autoload :OpenDataExporter, "decidim/open_data_exporter"
|
@@ -96,7 +92,7 @@ module Decidim
|
|
96
92
|
autoload :HasResourcePermission, "decidim/has_resource_permission"
|
97
93
|
autoload :PermissionsRegistry, "decidim/permissions_registry"
|
98
94
|
autoload :Randomable, "decidim/randomable"
|
99
|
-
autoload :
|
95
|
+
autoload :Likeable, "decidim/likeable"
|
100
96
|
autoload :ActionAuthorization, "decidim/action_authorization"
|
101
97
|
autoload :Map, "decidim/map"
|
102
98
|
autoload :Geocodable, "decidim/geocodable"
|
@@ -129,6 +125,15 @@ module Decidim
|
|
129
125
|
autoload :HasConversations, "decidim/has_conversations"
|
130
126
|
autoload :SoftDeletable, "decidim/soft_deletable"
|
131
127
|
autoload :PrivateDownloadHelper, "decidim/private_download_helper"
|
128
|
+
autoload :OAuth, "decidim/oauth"
|
129
|
+
autoload :PdfSignatureExample, "decidim/pdf_signature_example"
|
130
|
+
autoload :HasWorkflows, "decidim/has_workflows"
|
131
|
+
autoload :StatsFollowersCount, "decidim/stats_followers_count"
|
132
|
+
autoload :StatsParticipantsCount, "decidim/stats_participants_count"
|
133
|
+
autoload :ActionAuthorizationHelper, "decidim/action_authorization_helper"
|
134
|
+
autoload :ApiResponseHelper, "decidim/api_response_helper"
|
135
|
+
autoload :ResourceHelper, "decidim/resource_helper"
|
136
|
+
autoload :TooltipHelper, "decidim/tooltip_helper"
|
132
137
|
|
133
138
|
module Commands
|
134
139
|
autoload :CreateResource, "decidim/commands/create_resource"
|
@@ -168,7 +173,7 @@ module Decidim
|
|
168
173
|
|
169
174
|
seed_gamification_badges!
|
170
175
|
|
171
|
-
|
176
|
+
seed_likes!
|
172
177
|
|
173
178
|
I18n.available_locales = original_locale
|
174
179
|
end
|
@@ -198,15 +203,15 @@ module Decidim
|
|
198
203
|
end
|
199
204
|
end
|
200
205
|
|
201
|
-
def self.
|
206
|
+
def self.seed_likes!
|
202
207
|
resources_types = Decidim.resource_manifests
|
203
208
|
.map { |resource| resource.attributes[:model_class_name] }
|
204
|
-
.select { |resource| resource.constantize.include? Decidim::
|
209
|
+
.select { |resource| resource.constantize.include? Decidim::Likeable }
|
205
210
|
|
206
211
|
resources_types.each do |resource_type|
|
207
212
|
resource_type.constantize.find_each do |resource|
|
208
|
-
# exclude the users that already
|
209
|
-
users = resource.
|
213
|
+
# exclude the users that already liked
|
214
|
+
users = resource.likes.map(&:author)
|
210
215
|
remaining_count = Decidim::User.count - users.count
|
211
216
|
next if remaining_count < 1
|
212
217
|
|
@@ -214,7 +219,7 @@ module Decidim
|
|
214
219
|
user = (Decidim::User.all - users).sample
|
215
220
|
next unless user
|
216
221
|
|
217
|
-
Decidim::
|
222
|
+
Decidim::Like.create!(resource:, author: user)
|
218
223
|
users << user
|
219
224
|
end
|
220
225
|
end
|
@@ -233,37 +238,96 @@ module Decidim
|
|
233
238
|
end
|
234
239
|
|
235
240
|
# Exposes a configuration option: The application name String.
|
236
|
-
config_accessor :application_name
|
241
|
+
config_accessor :application_name do
|
242
|
+
config.application_name = Decidim::Env.new("DECIDIM_APPLICATION_NAME", "My Application Name").to_s
|
243
|
+
end
|
237
244
|
|
238
245
|
# Exposes a configuration option: The email String to use as sender in all
|
239
246
|
# the mails.
|
240
|
-
config_accessor :mailer_sender
|
247
|
+
config_accessor :mailer_sender do
|
248
|
+
Decidim::Env.new("DECIDIM_MAILER_SENDER", "change-me@example.org").to_s
|
249
|
+
end
|
241
250
|
|
242
251
|
# Whether SSL should be forced or not.
|
243
252
|
config_accessor :force_ssl do
|
244
|
-
|
253
|
+
if Decidim::Env.new("DECIDIM_FORCE_SSL", "auto").default_or_present_if_exists.to_s == "auto"
|
254
|
+
Rails.env.starts_with?("production") || Rails.env.starts_with?("staging")
|
255
|
+
else
|
256
|
+
Decidim::Env.new("DECIDIM_FORCE_SSL").present?
|
257
|
+
end
|
258
|
+
end
|
259
|
+
|
260
|
+
# CDN host configuration
|
261
|
+
config_accessor :storage_cdn_host do
|
262
|
+
Decidim::Env.new("STORAGE_CDN_HOST", nil).to_s
|
263
|
+
end
|
264
|
+
|
265
|
+
# Which storage provider is going to be used for the application, provides support for the most popular options.
|
266
|
+
config_accessor :storage_provider do
|
267
|
+
Decidim::Env.new("STORAGE_PROVIDER", "local").to_s
|
268
|
+
end
|
269
|
+
|
270
|
+
# VAPID public key that will be used to sign the Push API requests.
|
271
|
+
config_accessor :vapid_public_key do
|
272
|
+
Decidim::Env.new("VAPID_PUBLIC_KEY", nil).to_s
|
273
|
+
end
|
274
|
+
|
275
|
+
# VAPID private key that will be used to sign the Push API requests.
|
276
|
+
config_accessor :vapid_private_key do
|
277
|
+
Decidim::Env.new("VAPID_PRIVATE_KEY", nil).to_s
|
245
278
|
end
|
246
279
|
|
247
280
|
# Having this on true will change the way the svg assets are being served.
|
248
281
|
config_accessor :cors_enabled do
|
249
|
-
false
|
282
|
+
Decidim::Env.new("DECIDIM_CORS_ENABLED", "false").present?
|
250
283
|
end
|
251
284
|
|
252
285
|
# Exposes a configuration option: The application available locales.
|
253
286
|
config_accessor :available_locales do
|
254
|
-
%w(en bg ar ca cs da de el eo es es-MX es-PY et eu fa fi-pl fi fr fr-CA ga gl hr
|
287
|
+
Decidim::Env.new("DECIDIM_AVAILABLE_LOCALES", %w(en bg ar ca cs da de el eo es es-MX es-PY et eu fa fi-pl fi fr fr-CA ga gl hr
|
288
|
+
hu id is it ja ko lb lt lv mt nl no pl pt pt-BR ro ru sk sl sr sv tr uk vi zh-CN zh-TW).join(",")).to_array
|
255
289
|
end
|
256
290
|
|
257
291
|
# Exposes a configuration option: The application default locale.
|
258
292
|
config_accessor :default_locale do
|
259
|
-
:en
|
293
|
+
(Decidim::Env.new("DECIDIM_DEFAULT_LOCALE", "en").presence || :en).to_s
|
294
|
+
end
|
295
|
+
|
296
|
+
# Users that have not logged in for this period of time will be deleted
|
297
|
+
config_accessor :delete_inactive_users_after_days do
|
298
|
+
Decidim::Env.new("DELETE_INACTIVE_USERS_AFTER_DAYS", 365).to_i
|
299
|
+
end
|
300
|
+
|
301
|
+
# The minimum allowed inactivity period for deleting participants.
|
302
|
+
config_accessor :minimum_inactivity_period do
|
303
|
+
Decidim::Env.new("DECIDIM_MINIMUM_INACTIVITY_PERIOD_IN_DAYS", 30).to_i
|
304
|
+
end
|
305
|
+
|
306
|
+
# Users will be warned for the first time this amount of days before the final removal
|
307
|
+
config_accessor :delete_inactive_users_first_warning_days_before do
|
308
|
+
Decidim::Env.new("DECIDIM_DELETE_INACTIVE_USERS_FIRST_WARNING_DAYS_BEFORE", 30).to_i
|
309
|
+
end
|
310
|
+
|
311
|
+
# Users will be warned for the last time this amount of days before the final removal
|
312
|
+
config_accessor :delete_inactive_users_last_warning_days_before do
|
313
|
+
Decidim::Env.new("DECIDIM_DELETE_INACTIVE_USERS_LAST_WARNING_DAYS_BEFORE", 7).to_i
|
314
|
+
end
|
315
|
+
|
316
|
+
# Returns the inactivity threshold (in days) to trigger the first warning email.
|
317
|
+
def self.first_warning_inactive_users_after_days
|
318
|
+
delete_inactive_users_after_days - delete_inactive_users_first_warning_days_before
|
319
|
+
end
|
320
|
+
|
321
|
+
# Returns the inactivity threshold (in days) to trigger the final warning email.
|
322
|
+
def self.last_warning_inactive_users_after_days
|
323
|
+
delete_inactive_users_first_warning_days_before - delete_inactive_users_last_warning_days_before
|
260
324
|
end
|
261
325
|
|
262
326
|
# Disable the redirection to the external host when performing redirect back
|
263
327
|
# For more details https://github.com/rails/rails/issues/39643
|
264
328
|
# Additional context: This has been revealed as an issue during a security audit on Future of Europe installation
|
265
329
|
config_accessor :allow_open_redirects do
|
266
|
-
|
330
|
+
Decidim::Env.new("DECIDIM_ALLOW_OPEN_REDIRECTS").present?
|
267
331
|
end
|
268
332
|
|
269
333
|
# Exposes a configuration option: an array of symbols representing processors
|
@@ -280,7 +344,7 @@ module Decidim
|
|
280
344
|
# Decidim::ContentParsers::UserParser < BaseParser
|
281
345
|
# Decidim::ContentRenderers::UserRenderer < BaseRenderer
|
282
346
|
config_accessor :content_processors do
|
283
|
-
|
347
|
+
Decidim::Env.new("DECIDIM_CONTENT_PROCESSORS", "").to_array
|
284
348
|
end
|
285
349
|
|
286
350
|
# Exposes a configuration option: an object to configure geocoder
|
@@ -288,7 +352,55 @@ module Decidim
|
|
288
352
|
|
289
353
|
# Exposes a configuration option: an object to configure the mapping
|
290
354
|
# functionality. See Decidim::Map for more information.
|
291
|
-
config_accessor :maps
|
355
|
+
config_accessor :maps do
|
356
|
+
if Decidim::Env.new("MAPS_STATIC_PROVIDER", ENV.fetch("MAPS_PROVIDER", nil)).present?
|
357
|
+
|
358
|
+
@maps ||= begin
|
359
|
+
static_provider = Decidim::Env.new("MAPS_STATIC_PROVIDER", ENV.fetch("MAPS_PROVIDER", nil)).to_s
|
360
|
+
maps = {
|
361
|
+
provider: static_provider,
|
362
|
+
api_key: Decidim::Env.new("MAPS_STATIC_API_KEY", ENV.fetch("MAPS_API_KEY", nil)).to_s,
|
363
|
+
static: false,
|
364
|
+
dynamic: false
|
365
|
+
}
|
366
|
+
|
367
|
+
maps[:geocoding] = { host: ENV["MAPS_GEOCODING_HOST"], use_https: true } if ENV["MAPS_GEOCODING_HOST"]
|
368
|
+
|
369
|
+
static_url = ENV.fetch("MAPS_STATIC_URL", nil)
|
370
|
+
static_url = "https://image.maps.hereapi.com/mia/v3/base/mc/overlay" if static_provider == "here"
|
371
|
+
maps[:static] = { url: static_url } if static_url
|
372
|
+
|
373
|
+
dynamic_provider = Decidim::Env.new("MAPS_DYNAMIC_PROVIDER", ENV.fetch("MAPS_PROVIDER", nil)).to_s
|
374
|
+
|
375
|
+
if dynamic_provider
|
376
|
+
dynamic_url = ENV.fetch("MAPS_DYNAMIC_URL", nil)
|
377
|
+
maps[:dynamic] = {
|
378
|
+
provider: dynamic_provider,
|
379
|
+
api_key: Decidim::Env.new("MAPS_DYNAMIC_API_KEY", ENV.fetch("MAPS_API_KEY", nil)).to_s
|
380
|
+
}
|
381
|
+
maps[:dynamic][:tile_layer] = {}
|
382
|
+
maps[:dynamic][:tile_layer][:url] = dynamic_url if dynamic_url
|
383
|
+
maps[:dynamic][:tile_layer][:attribution] = ENV["MAPS_ATTRIBUTION"] if ENV["MAPS_ATTRIBUTION"]
|
384
|
+
end
|
385
|
+
if dynamic_provider && ENV["MAPS_EXTRA_VARS"].present?
|
386
|
+
vars = URI.decode_www_form(ENV.fetch("MAPS_EXTRA_VARS", nil))
|
387
|
+
vars.each do |key, value|
|
388
|
+
# perform a naive type conversion
|
389
|
+
maps[:dynamic][:tile_layer][key] = case value
|
390
|
+
when /^true$|^false$/i
|
391
|
+
value.downcase == "true"
|
392
|
+
when /\A[-+]?\d+\z/
|
393
|
+
value.to_i
|
394
|
+
else
|
395
|
+
value
|
396
|
+
end
|
397
|
+
end
|
398
|
+
end
|
399
|
+
|
400
|
+
maps
|
401
|
+
end
|
402
|
+
end
|
403
|
+
end
|
292
404
|
|
293
405
|
# Exposes a configuration option: a custom method to generate references.
|
294
406
|
# If overwritten, it should handle both component resources and participatory spaces.
|
@@ -323,83 +435,103 @@ module Decidim
|
|
323
435
|
|
324
436
|
# Exposes a configuration option: the IPs that are allowed to access the system
|
325
437
|
config_accessor :system_accesslist_ips do
|
326
|
-
|
438
|
+
Decidim::Env.new("DECIDIM_SYSTEM_ACCESSLIST_IPS").to_array
|
327
439
|
end
|
328
440
|
|
329
441
|
# Exposes a configuration option: the currency unit
|
330
442
|
config_accessor :currency_unit do
|
331
|
-
"€"
|
443
|
+
if Decidim::Env.new("DECIDIM_CURRENCY_UNIT", "€").present?
|
444
|
+
Decidim::Env.new("DECIDIM_CURRENCY_UNIT", "€").to_s
|
445
|
+
else
|
446
|
+
"€"
|
447
|
+
end
|
332
448
|
end
|
333
449
|
|
334
450
|
# Exposes a configuration option: The image uploader quality.
|
335
451
|
config_accessor :image_uploader_quality do
|
336
|
-
80
|
452
|
+
Decidim::Env.new("DECIDIM_IMAGE_UPLOADER_QUALITY", "80").to_i
|
337
453
|
end
|
338
454
|
|
339
455
|
# The number of reports which a resource can receive before hiding it
|
340
456
|
config_accessor :max_reports_before_hiding do
|
341
|
-
3
|
457
|
+
Decidim::Env.new("DECIDIM_MAX_REPORTS_BEFORE_HIDING", "3").to_i
|
342
458
|
end
|
343
459
|
|
344
460
|
# Allow organization's administrators to inject custom HTML into the frontend
|
345
461
|
config_accessor :enable_html_header_snippets do
|
346
|
-
|
462
|
+
Decidim::Env.new("DECIDIM_ENABLE_HTML_HEADER_SNIPPETS").present?
|
347
463
|
end
|
348
464
|
|
349
465
|
# Allow organization's administrators to track newsletter links
|
350
466
|
config_accessor :track_newsletter_links do
|
351
|
-
|
467
|
+
if Decidim::Env.new("DECIDIM_TRACK_NEWSLETTER_LINKS", "auto").default_or_present_if_exists.to_s == "auto"
|
468
|
+
true
|
469
|
+
else
|
470
|
+
Decidim.force_ssl
|
471
|
+
end
|
352
472
|
end
|
353
473
|
|
354
474
|
# Time that download your data files are available in server
|
355
475
|
config_accessor :download_your_data_expiry_time do
|
356
|
-
7.days
|
476
|
+
Decidim::Env.new("DECIDIM_DOWNLOAD_YOUR_DATA_EXPIRY_TIME", "7").to_i.days
|
357
477
|
end
|
358
478
|
|
359
479
|
# Max requests in a time period to prevent DoS attacks. Only applied on production.
|
360
480
|
config_accessor :throttling_max_requests do
|
361
|
-
100
|
481
|
+
Decidim::Env.new("DECIDIM_THROTTLING_MAX_REQUESTS", "100").to_i
|
362
482
|
end
|
363
483
|
|
364
484
|
# Time window in which the throttling is applied.
|
365
485
|
config_accessor :throttling_period do
|
366
|
-
1.
|
486
|
+
Decidim::Env.new("DECIDIM_THROTTLING_PERIOD", "1").to_i.minutes
|
367
487
|
end
|
368
488
|
|
369
489
|
# Time window were users can access the website even if their email is not confirmed.
|
370
490
|
config_accessor :unconfirmed_access_for do
|
371
|
-
0.days
|
491
|
+
Decidim::Env.new("DECIDIM_UNCONFIRMED_ACCESS_FOR", "0").to_i.days
|
372
492
|
end
|
373
493
|
|
374
494
|
# Allow machine translations
|
375
495
|
config_accessor :enable_machine_translations do
|
376
|
-
false
|
496
|
+
Decidim::Env.new("DECIDIM_ENABLE_MACHINE_TRANSLATION", false).present?
|
377
497
|
end
|
378
498
|
|
379
499
|
# How long can a user remained logged in before the session expires. Notice that
|
380
500
|
# this is also maximum time that user can idle before getting automatically signed out.
|
381
501
|
config_accessor :expire_session_after do
|
382
|
-
30.minutes
|
502
|
+
Decidim::Env.new("DECIDIM_EXPIRE_SESSION_AFTER", "30").to_i.minutes
|
503
|
+
end
|
504
|
+
|
505
|
+
# Defines how long the OAuth access tokens and API access tokens are valid.
|
506
|
+
# Defaults to the default value as defined in Doorkeeper.
|
507
|
+
config_accessor :oauth_access_token_expires_in do
|
508
|
+
Decidim::Env.new("DECIDIM_OAUTH_ACCESS_TOKEN_EXPIRES_IN", "120").to_i.minutes
|
383
509
|
end
|
384
510
|
|
385
511
|
# If set to true, users have option to "remember me". Notice that expire_session_after will not take
|
386
512
|
# effect when the user wants to be remembered.
|
387
513
|
config_accessor :enable_remember_me do
|
388
|
-
|
514
|
+
if Decidim::Env.new("DECIDIM_ENABLE_REMEMBER_ME", "auto").default_or_present_if_exists.to_s == "auto"
|
515
|
+
true
|
516
|
+
else
|
517
|
+
Decidim::Env.new("DECIDIM_ENABLE_REMEMBER_ME", "auto").default_or_present_if_exists
|
518
|
+
end
|
389
519
|
end
|
390
520
|
|
391
521
|
# Defines how often session_timeouter.js checks time between current moment and last request
|
392
522
|
config_accessor :session_timeout_interval do
|
393
|
-
10.seconds
|
523
|
+
Decidim::Env.new("DECIDIM_SESSION_TIMEOUT_INTERVAL", "10").to_i.seconds
|
394
524
|
end
|
395
525
|
|
396
526
|
# Exposes a configuration option: an object to configure Etherpad
|
397
527
|
config_accessor :etherpad do
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
528
|
+
if Decidim::Env.new("ETHERPAD_SERVER").present? && Decidim::Env.new("ETHERPAD_API_KEY").present?
|
529
|
+
{
|
530
|
+
server: Decidim::Env.new("ETHERPAD_SERVER").to_s,
|
531
|
+
api_key: Decidim::Env.new("ETHERPAD_API_KEY").to_s,
|
532
|
+
api_version: Decidim::Env.new("ETHERPAD_API_VERSION", "1.2.1").to_s
|
533
|
+
}
|
534
|
+
end
|
403
535
|
end
|
404
536
|
|
405
537
|
# A base path for the uploads. If set, make sure it ends in a slash.
|
@@ -407,21 +539,21 @@ module Decidim
|
|
407
539
|
# want to use the same uploads place for both staging and production
|
408
540
|
# environments, but in different folders.
|
409
541
|
config_accessor :base_uploads_path do
|
410
|
-
|
542
|
+
Decidim::Env.new("DECIDIM_BASE_UPLOADS_PATH").to_s if Decidim::Env.new("DECIDIM_BASE_UPLOADS_PATH").present?
|
411
543
|
end
|
412
544
|
|
413
545
|
# The name of the class to deliver SMS codes to users.
|
414
546
|
#
|
415
547
|
# Check the example in `decidim-verifications`.
|
416
548
|
config_accessor :sms_gateway_service do
|
417
|
-
|
549
|
+
Decidim::Env.new("DECIDIM_SMS_GATEWAY_SERVICE", nil).value
|
418
550
|
end
|
419
551
|
|
420
552
|
# The name of the class used to generate a timestamp from a document.
|
421
553
|
#
|
422
554
|
# Check the example in `decidim-initiatives`
|
423
555
|
config_accessor :timestamp_service do
|
424
|
-
|
556
|
+
Decidim::Env.new("DECIDIM_TIMESTAMP_SERVICE", nil).value
|
425
557
|
end
|
426
558
|
|
427
559
|
# The name of the class used to process a pdf and add a signature to the
|
@@ -429,35 +561,43 @@ module Decidim
|
|
429
561
|
#
|
430
562
|
# Check the example in `decidim-initiatives`
|
431
563
|
config_accessor :pdf_signature_service do
|
432
|
-
|
564
|
+
Decidim::Env.new("DECIDIM_PDF_SIGNATURE_SERVICE", nil).value
|
433
565
|
end
|
434
566
|
|
435
567
|
# The name of the class to translate user content.
|
436
568
|
#
|
437
569
|
config_accessor :machine_translation_service do
|
438
|
-
|
570
|
+
Decidim::Env.new("DECIDIM_MACHINE_TRANSLATION_SERVICE", nil).value
|
571
|
+
end
|
572
|
+
|
573
|
+
config_accessor :maximum_attachment_size do
|
574
|
+
Decidim::Env.new("DECIDIM_MAXIMUM_ATTACHMENT_SIZE", "10").to_i
|
575
|
+
end
|
576
|
+
|
577
|
+
config_accessor :maximum_avatar_size do
|
578
|
+
Decidim::Env.new("DECIDIM_MAXIMUM_AVATAR_SIZE", "5").to_i
|
439
579
|
end
|
440
580
|
|
441
581
|
# Social Networking services used for social sharing
|
442
582
|
config_accessor :social_share_services do
|
443
|
-
|
583
|
+
Decidim::Env.new("DECIDIM_SOCIAL_SHARE_SERVICES", "X, Facebook, WhatsApp, Telegram").to_array
|
444
584
|
end
|
445
585
|
|
446
586
|
# The Decidim::Exporters::CSV's default column separator
|
447
587
|
config_accessor :default_csv_col_sep do
|
448
|
-
";"
|
588
|
+
Decidim::Env.new("DECIDIM_DEFAULT_CSV_COL_SEP", ";").to_s
|
449
589
|
end
|
450
590
|
|
451
591
|
# Exposes a configuration option: HTTP_X_FORWARDED_HOST header follow-up.
|
452
592
|
# If a caching system is in place, it can also allow cache and log poisoning attacks,
|
453
593
|
# allowing attackers to control the contents of caches and logs that could be used for other attacks.
|
454
594
|
config_accessor :follow_http_x_forwarded_host do
|
455
|
-
|
595
|
+
Decidim::Env.new("DECIDIM_FOLLOW_HTTP_X_FORWARDED_HOST").present?
|
456
596
|
end
|
457
597
|
|
458
598
|
# The list of roles a user can have, not considering the space-specific roles.
|
459
599
|
config_accessor :user_roles do
|
460
|
-
|
600
|
+
Decidim::Env.new("DECIDIM_USER_ROLES", "admin,user_manager").to_array
|
461
601
|
end
|
462
602
|
|
463
603
|
# The list of visibility options for amendments. An Array of Strings that
|
@@ -468,19 +608,19 @@ module Decidim
|
|
468
608
|
# radio buttons collection input field form for a Decidim::Component
|
469
609
|
# step setting :amendments_visibility.
|
470
610
|
config_accessor :amendments_visibility_options do
|
471
|
-
|
611
|
+
Decidim::Env.new("DECIDIM_AMENDMENTS_VISIBILITY_OPTIONS", "all,participants").to_array
|
472
612
|
end
|
473
613
|
|
474
614
|
# Exposes a configuration option: The maximum length for conversation
|
475
615
|
# messages.
|
476
616
|
config_accessor :maximum_conversation_message_length do
|
477
|
-
|
617
|
+
Decidim::Env.new("DECIDIM_MAXIMUM_CONVERSATION_MESSAGE_LENGTH", 1000).to_i
|
478
618
|
end
|
479
619
|
|
480
620
|
# Defines the name of the cookie used to check if the user has given consent
|
481
621
|
# to store local data in their browser.
|
482
622
|
config_accessor :consent_cookie_name do
|
483
|
-
"decidim-consent"
|
623
|
+
Decidim::Env.new("DECIDIM_CONSENT_COOKIE_NAME", "decidim-consent").to_s
|
484
624
|
end
|
485
625
|
|
486
626
|
# Defines data consent categories. Note that when adding an item you need to
|
@@ -526,62 +666,62 @@ module Decidim
|
|
526
666
|
|
527
667
|
# Denied passwords. Array may contain strings and regex entries.
|
528
668
|
config_accessor :denied_passwords do
|
529
|
-
|
669
|
+
Decidim::Env.new("DECIDIM_DENIED_PASSWORDS").to_array(separator: ", ")
|
530
670
|
end
|
531
671
|
|
532
672
|
# Ignores strings similar to email / domain on password validation if too short
|
533
673
|
config_accessor :password_similarity_length do
|
534
|
-
4
|
674
|
+
Decidim::Env.new("DECIDIM_PASSWORD_SIMILARITY_LENGTH", 4).to_i
|
535
675
|
end
|
536
676
|
|
537
677
|
# Defines if admins are required to have stronger passwords than other users
|
538
678
|
config_accessor :admin_password_strong do
|
539
|
-
true
|
679
|
+
Decidim::Env.new("DECIDIM_ADMIN_PASSWORD_STRONG", true).present?
|
540
680
|
end
|
541
681
|
|
542
682
|
config_accessor :admin_password_expiration_days do
|
543
|
-
90
|
683
|
+
Decidim::Env.new("DECIDIM_ADMIN_PASSWORD_EXPIRATION_DAYS", 90).to_i
|
544
684
|
end
|
545
685
|
|
546
686
|
config_accessor :admin_password_min_length do
|
547
|
-
15
|
687
|
+
Decidim::Env.new("DECIDIM_ADMIN_PASSWORD_MIN_LENGTH", 15).to_i
|
548
688
|
end
|
549
689
|
|
550
690
|
config_accessor :admin_password_repetition_times do
|
551
|
-
5
|
691
|
+
Decidim::Env.new("DECIDIM_ADMIN_PASSWORD_REPETITION_TIMES", 5).to_i
|
552
692
|
end
|
553
693
|
|
554
694
|
# This is an internal key that allow us to properly configure the caching key separator. This is useful for redis cache store
|
555
695
|
# as it creates some namespaces within the cached data.
|
556
696
|
# use `config.cache_key_separator = ":"` in your initializer to have namespaced data
|
557
697
|
config_accessor :cache_key_separator do
|
558
|
-
"/"
|
698
|
+
Decidim::Env.new("DECIDIM_CACHE_KEY_SEPARATOR", "/").to_s
|
559
699
|
end
|
560
700
|
|
561
701
|
# This is the maximum time that the cache will be stored. If nil, the cache will be stored indefinitely.
|
562
702
|
# Currently, cache is applied in the Cells where the method `cache_hash` is defined.
|
563
703
|
config_accessor :cache_expiry_time do
|
564
|
-
|
704
|
+
Decidim::Env.new("DECIDIM_CACHE_EXPIRATION_TIME", "1440").to_i.minutes
|
565
705
|
end
|
566
706
|
|
567
707
|
# Same as before, but specifically for cell displaying stats
|
568
708
|
config_accessor :stats_cache_expiry_time do
|
569
|
-
10.minutes
|
709
|
+
Decidim::Env.new("DECIDIM_STATS_CACHE_EXPIRATION_TIME", 10).to_i.minutes
|
570
710
|
end
|
571
711
|
|
572
712
|
# Enable/Disable the service worker
|
573
713
|
config_accessor :service_worker_enabled do
|
574
|
-
Rails.env.exclude?("development")
|
714
|
+
Decidim::Env.new("DECIDIM_SERVICE_WORKER_ENABLED", Rails.env.exclude?("development")).present?
|
575
715
|
end
|
576
716
|
|
577
717
|
# List of static pages' slugs that can include content blocks
|
578
718
|
config_accessor :page_blocks do
|
579
|
-
|
719
|
+
Decidim::Env.new("DECIDIM_PAGE_BLOCKS", "terms-of-service").to_array
|
580
720
|
end
|
581
721
|
|
582
722
|
# The default max last activity users to be shown
|
583
723
|
config_accessor :default_max_last_activity_users do
|
584
|
-
6
|
724
|
+
Decidim::Env.new("DECIDIM_DEFAULT_MAX_LAST_ACTIVITY_USERS", 6).to_i
|
585
725
|
end
|
586
726
|
|
587
727
|
# List of additional content security policies to be appended to the default ones
|
@@ -591,6 +731,33 @@ module Decidim
|
|
591
731
|
{}
|
592
732
|
end
|
593
733
|
|
734
|
+
config_accessor :omniauth_providers do
|
735
|
+
{
|
736
|
+
developer: {
|
737
|
+
enabled: Rails.env.local?,
|
738
|
+
icon: "phone-line"
|
739
|
+
},
|
740
|
+
facebook: {
|
741
|
+
enabled: Decidim::Env.new("OMNIAUTH_FACEBOOK_APP_ID").present?,
|
742
|
+
app_id: Decidim::Env.new("OMNIAUTH_FACEBOOK_APP_ID", nil),
|
743
|
+
app_secret: Decidim::Env.new("OMNIAUTH_FACEBOOK_APP_SECRET", nil),
|
744
|
+
icon_path: "media/images/facebook.svg"
|
745
|
+
},
|
746
|
+
twitter: {
|
747
|
+
enabled: Decidim::Env.new("OMNIAUTH_TWITTER_API_KEY").present?,
|
748
|
+
api_key: Decidim::Env.new("OMNIAUTH_TWITTER_API_KEY", nil),
|
749
|
+
api_secret: Decidim::Env.new("OMNIAUTH_TWITTER_API_SECRET", nil),
|
750
|
+
icon_path: "media/images/twitter-x.svg"
|
751
|
+
},
|
752
|
+
google_oauth2: {
|
753
|
+
enabled: Decidim::Env.new("OMNIAUTH_GOOGLE_CLIENT_ID").present?,
|
754
|
+
icon_path: "media/images/google.svg",
|
755
|
+
client_id: Decidim::Env.new("OMNIAUTH_GOOGLE_CLIENT_ID", nil),
|
756
|
+
client_secret: Decidim::Env.new("OMNIAUTH_GOOGLE_CLIENT_SECRET", nil)
|
757
|
+
}
|
758
|
+
}
|
759
|
+
end
|
760
|
+
|
594
761
|
CoreDataManifest = Data.define(:name, :collection, :serializer, :include_in_open_data)
|
595
762
|
|
596
763
|
def self.open_data_manifests
|
@@ -598,8 +765,8 @@ module Decidim
|
|
598
765
|
CoreDataManifest.new(
|
599
766
|
name: :moderated_users,
|
600
767
|
collection: lambda { |organization|
|
601
|
-
|
602
|
-
|
768
|
+
Decidim::UserModeration.joins(:user).where(decidim_users: { decidim_organization_id: organization.id }).where.not(decidim_users: { blocked_at: nil })
|
769
|
+
},
|
603
770
|
serializer: Decidim::Exporters::OpenDataBlockedUserSerializer,
|
604
771
|
include_in_open_data: true
|
605
772
|
),
|
@@ -615,18 +782,6 @@ module Decidim
|
|
615
782
|
serializer: Decidim::Exporters::OpenDataUserSerializer,
|
616
783
|
include_in_open_data: true
|
617
784
|
),
|
618
|
-
CoreDataManifest.new(
|
619
|
-
name: :user_groups,
|
620
|
-
collection: ->(organization) { Decidim::UserGroup.where(organization:).confirmed.not_blocked.includes(avatar_attachment: :blob) },
|
621
|
-
serializer: Decidim::Exporters::OpenDataUserGroupSerializer,
|
622
|
-
include_in_open_data: true
|
623
|
-
),
|
624
|
-
CoreDataManifest.new(
|
625
|
-
name: :metrics,
|
626
|
-
collection: ->(organization) { Decidim::Metric.where(organization:) },
|
627
|
-
serializer: Decidim::Exporters::OpenDataMetricSerializer,
|
628
|
-
include_in_open_data: true
|
629
|
-
),
|
630
785
|
CoreDataManifest.new(
|
631
786
|
name: :taxonomies,
|
632
787
|
collection: ->(organization) { Decidim::Taxonomy.where(organization:) },
|
@@ -853,16 +1008,6 @@ module Decidim
|
|
853
1008
|
@traceability ||= Traceability.new
|
854
1009
|
end
|
855
1010
|
|
856
|
-
# Public: Stores an instance of MetricRegistry
|
857
|
-
def self.metrics_registry
|
858
|
-
@metrics_registry ||= MetricRegistry.new
|
859
|
-
end
|
860
|
-
|
861
|
-
# Public: Stores an instance of MetricOperation
|
862
|
-
def self.metrics_operation
|
863
|
-
@metrics_operation ||= MetricOperation.new
|
864
|
-
end
|
865
|
-
|
866
1011
|
# Public: Returns the correct settings object for the given organization or
|
867
1012
|
# the default settings object when the organization cannot be determined. The
|
868
1013
|
# model to be passed to this method can be any model that responds to the
|
@@ -952,4 +1097,8 @@ module Decidim
|
|
952
1097
|
rescue LoadError
|
953
1098
|
false
|
954
1099
|
end
|
1100
|
+
|
1101
|
+
def self.deprecator(gem_name: "decidim-core", deprecation_horizon: "0.32")
|
1102
|
+
@deprecator ||= ActiveSupport::Deprecation.new(deprecation_horizon, gem_name)
|
1103
|
+
end
|
955
1104
|
end
|
data/lib/decidim/deprecations.rb
CHANGED
@@ -11,7 +11,7 @@ module Decidim
|
|
11
11
|
# @param [Symbol] replacement - name of the new method to use
|
12
12
|
def deprecated_alias(old_name, replacement)
|
13
13
|
define_method(old_name) do |*args, &block|
|
14
|
-
|
14
|
+
Decidim.deprecator.warn "##{old_name} deprecated (please use ##{replacement})"
|
15
15
|
send replacement, *args, &block
|
16
16
|
end
|
17
17
|
end
|
@@ -3,7 +3,6 @@
|
|
3
3
|
module Decidim
|
4
4
|
module DownloadYourDataSerializers
|
5
5
|
autoload :DownloadYourDataUserSerializer, "decidim/download_your_data_serializers/download_your_data_user_serializer"
|
6
|
-
autoload :DownloadYourDataUserGroupSerializer, "decidim/download_your_data_serializers/download_your_data_user_group_serializer"
|
7
6
|
autoload :DownloadYourDataConversationSerializer, "decidim/download_your_data_serializers/download_your_data_conversation_serializer"
|
8
7
|
autoload :DownloadYourDataReportSerializer, "decidim/download_your_data_serializers/download_your_data_report_serializer"
|
9
8
|
autoload :DownloadYourDataFollowSerializer, "decidim/download_your_data_serializers/download_your_data_follow_serializer"
|
@@ -14,7 +13,7 @@ module Decidim
|
|
14
13
|
def self.data_entities
|
15
14
|
["Decidim::Follow", "Decidim::Identity",
|
16
15
|
"Decidim::Messaging::Conversation", "Decidim::Notification",
|
17
|
-
"Decidim::ParticipatorySpacePrivateUser", "Decidim::Report", "Decidim::User"
|
16
|
+
"Decidim::ParticipatorySpacePrivateUser", "Decidim::Report", "Decidim::User"] |
|
18
17
|
Decidim.component_manifests.map(&:data_portable_entities).flatten |
|
19
18
|
Decidim.participatory_space_manifests.map(&:data_portable_entities).flatten |
|
20
19
|
(Decidim::Comments.data_portable_entities.flatten if defined?(Decidim::Comments))
|
@@ -32,7 +31,11 @@ module Decidim
|
|
32
31
|
help_definition[entity] = {}
|
33
32
|
|
34
33
|
headers.each do |header|
|
35
|
-
help_definition[entity][header] =
|
34
|
+
help_definition[entity][header] = begin
|
35
|
+
I18n.t("decidim.open_data.help.#{entity}.#{header}")
|
36
|
+
rescue StandardError
|
37
|
+
I18n.t("decidim.download_your_data.help.#{entity}.#{header}")
|
38
|
+
end
|
36
39
|
end
|
37
40
|
end
|
38
41
|
|