decidim-core 0.30.1 → 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/show.erb +6 -6
- 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 +27 -6
- 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/footer_topics/show.erb +2 -2
- data/app/cells/decidim/images_panel/show.erb +5 -2
- 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 +12 -10
- data/app/cells/decidim/report_button_cell.rb +1 -1
- data/app/cells/decidim/report_user_button/flag_modal.erb +12 -11
- 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/upload_modal/files.erb +4 -4
- data/app/cells/decidim/upload_modal_cell.rb +5 -3
- 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 -2
- 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 +9 -8
- 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 +7 -8
- 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 +3 -3
- data/app/helpers/decidim/animations_helper.rb +14 -0
- data/app/helpers/decidim/decidim_form_helper.rb +17 -6
- data/app/helpers/decidim/filters_helper.rb +25 -0
- data/app/helpers/decidim/layout_helper.rb +6 -14
- 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/default-avatar.svg +1 -1
- 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/callout.js +13 -8
- data/app/packs/src/decidim/confirm.js +25 -6
- 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 +4 -2
- data/app/packs/src/decidim/datepicker/generate_timepicker.js +4 -2
- data/app/packs/src/decidim/direct_uploads/upload_field.js +6 -9
- data/app/packs/src/decidim/direct_uploads/upload_modal.js +9 -10
- data/app/packs/src/decidim/dropdown_menu.js +18 -0
- data/app/packs/src/decidim/editor/common/input_dialog.js +1 -1
- data/app/packs/src/decidim/editor/common/suggestion.js +21 -3
- 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 +128 -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/_activity.scss +4 -4
- 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 +6 -2
- 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/_filters.scss +1 -1
- data/app/packs/stylesheets/decidim/_forms.scss +6 -6
- data/app/packs/stylesheets/decidim/_header.scss +28 -4
- data/app/packs/stylesheets/decidim/_labels.scss +1 -1
- data/app/packs/stylesheets/decidim/_layout.scss +14 -4
- data/app/packs/stylesheets/decidim/{_endorsers_list.scss → _likes_list.scss} +1 -1
- data/app/packs/stylesheets/decidim/_modal_share.scss +83 -9
- data/app/packs/stylesheets/decidim/_modal_update.scss +6 -6
- 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 +18 -27
- 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 +3 -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 +2 -1
- data/app/views/decidim/errors/not_found.html.erb +1 -1
- 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/newsletters/unsubscribe.html.erb +16 -4
- 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 +66 -15
- data/app/views/decidim/searches/index.html.erb +5 -2
- data/app/views/decidim/shared/_component_announcement.html.erb +1 -1
- data/app/views/decidim/shared/_confirm_modal.html.erb +1 -1
- data/app/views/decidim/shared/_filters.html.erb +8 -6
- 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.html.erb +1 -1
- data/app/views/layouts/decidim/footer/_main_intro.html.erb +1 -1
- data/app/views/layouts/decidim/footer/_main_language_chooser.html.erb +1 -1
- data/app/views/layouts/decidim/footer/_mini.html.erb +2 -2
- 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 +7 -1
- data/app/views/layouts/decidim/header/_main_links_dropdown.html.erb +20 -18
- data/app/views/layouts/decidim/header/_main_links_mobile_account.html.erb +1 -1
- 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 +2 -2
- 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 -212
- data/config/locales/bg-BG.yml +2 -2
- data/config/locales/bg.yml +0 -243
- data/config/locales/bs-BA.yml +0 -30
- data/config/locales/ca-IT.yml +129 -280
- data/config/locales/ca.yml +129 -280
- data/config/locales/cs.yml +99 -284
- data/config/locales/de.yml +144 -285
- data/config/locales/el.yml +0 -228
- data/config/locales/en.yml +129 -280
- data/config/locales/eo.yml +0 -2
- data/config/locales/es-MX.yml +129 -280
- data/config/locales/es-PY.yml +129 -280
- data/config/locales/es.yml +129 -280
- data/config/locales/eu.yml +175 -326
- data/config/locales/fi-plain.yml +167 -270
- data/config/locales/fi.yml +168 -271
- data/config/locales/fr-CA.yml +102 -269
- data/config/locales/fr-LU.yml +3 -3
- data/config/locales/fr.yml +102 -269
- data/config/locales/ga-IE.yml +0 -28
- data/config/locales/gl.yml +0 -143
- data/config/locales/hu.yml +0 -242
- data/config/locales/id-ID.yml +0 -139
- data/config/locales/is-IS.yml +0 -15
- data/config/locales/it.yml +122 -193
- data/config/locales/ja.yml +124 -267
- data/config/locales/lb-LU.yml +2 -2
- data/config/locales/lb.yml +0 -192
- data/config/locales/lt.yml +0 -245
- data/config/locales/lv.yml +0 -189
- data/config/locales/nl.yml +0 -192
- data/config/locales/no.yml +0 -192
- data/config/locales/pl.yml +0 -249
- data/config/locales/pt-BR.yml +0 -217
- data/config/locales/pt.yml +0 -192
- data/config/locales/ro-RO.yml +54 -222
- data/config/locales/ru.yml +0 -65
- data/config/locales/sk-SK.yml +3 -3
- data/config/locales/sk.yml +2 -167
- data/config/locales/sr-CS.yml +0 -31
- data/config/locales/sv.yml +96 -256
- data/config/locales/tr-TR.yml +0 -192
- data/config/locales/uk.yml +0 -25
- data/config/locales/zh-CN.yml +0 -183
- data/config/locales/zh-TW.yml +0 -234
- 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 +5 -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 +24 -123
- data/lib/decidim/core/test/shared_examples/announcements_examples.rb +4 -0
- 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 +14 -61
- 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 +40 -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 +205 -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 -32
- data/app/cells/decidim/group_admins_cell.rb +0 -8
- data/app/cells/decidim/group_members/show.erb +0 -42
- 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
@@ -1,145 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
#
|
4
|
-
# Be sure to restart your server when you modify this file.
|
5
|
-
#
|
6
|
-
# This file eases your Rails 7.0 framework defaults upgrade.
|
7
|
-
#
|
8
|
-
# Uncomment each configuration one by one to switch to the new default.
|
9
|
-
# Once your application is ready to run with all new defaults, you can remove
|
10
|
-
# this file and set the `config.load_defaults` to `7.0`.
|
11
|
-
#
|
12
|
-
# Read the Guide for Upgrading Ruby on Rails for more info on each option.
|
13
|
-
# https://guides.rubyonrails.org/upgrading_ruby_on_rails.html
|
14
|
-
|
15
|
-
# `button_to` view helper will render `<button>` element, regardless of whether
|
16
|
-
# or not the content is passed as the first argument or as a block.
|
17
|
-
# Rails.application.config.action_view.button_to_generates_button_tag = true
|
18
|
-
|
19
|
-
# `stylesheet_link_tag` view helper will not render the media attribute by default.
|
20
|
-
# Rails.application.config.action_view.apply_stylesheet_media_default = false
|
21
|
-
|
22
|
-
# Change the digest class for the key generators to `OpenSSL::Digest::SHA256`.
|
23
|
-
# Changing this default means invalidate all encrypted messages generated by
|
24
|
-
# your application and, all the encrypted cookies. Only change this after you
|
25
|
-
# rotated all the messages using the key rotator.
|
26
|
-
#
|
27
|
-
# See upgrading guide for more information on how to build a rotator.
|
28
|
-
# https://guides.rubyonrails.org/v7.0/upgrading_ruby_on_rails.html
|
29
|
-
# Rails.application.config.active_support.key_generator_hash_digest_class = OpenSSL::Digest::SHA256
|
30
|
-
|
31
|
-
# Change the digest class for ActiveSupport::Digest.
|
32
|
-
# Changing this default means that for example Etags change and
|
33
|
-
# various cache keys leading to cache invalidation.
|
34
|
-
# Rails.application.config.active_support.hash_digest_class = OpenSSL::Digest::SHA256
|
35
|
-
|
36
|
-
# Do not override ActiveSupport::TimeWithZone.name and use the default Ruby
|
37
|
-
# implementation.
|
38
|
-
# Rails.application.config.active_support.remove_deprecated_time_with_zone_name = true
|
39
|
-
|
40
|
-
# Calls `Rails.application.executor.wrap` around test cases.
|
41
|
-
# This makes test cases behave closer to an actual request or job.
|
42
|
-
# Several features that are normally disabled in test, such as Active Record query cache
|
43
|
-
# and asynchronous queries will then be enabled.
|
44
|
-
# Rails.application.config.active_support.executor_around_test_case = true
|
45
|
-
|
46
|
-
# Set both the `:open_timeout` and `:read_timeout` values for `:smtp` delivery method.
|
47
|
-
# Rails.application.config.action_mailer.smtp_timeout = 5
|
48
|
-
|
49
|
-
# The ActiveStorage video previewer will now use scene change detection to generate
|
50
|
-
# better preview images (rather than the previous default of using the first frame
|
51
|
-
# of the video).
|
52
|
-
# Rails.application.config.active_storage.video_preview_arguments =
|
53
|
-
# "-vf 'select=eq(n\\,0)+eq(key\\,1)+gt(scene\\,0.015),loop=loop=-1:size=2,trim=start_frame=1' -frames:v 1 -f image2"
|
54
|
-
|
55
|
-
# Automatically infer `inverse_of` for associations with a scope.
|
56
|
-
# Rails.application.config.active_record.automatic_scope_inversing = true
|
57
|
-
|
58
|
-
# Raise when running tests if fixtures contained foreign key violations
|
59
|
-
# Rails.application.config.active_record.verify_foreign_keys_for_fixtures = true
|
60
|
-
|
61
|
-
# Disable partial inserts.
|
62
|
-
# This default means that all columns will be referenced in INSERT queries
|
63
|
-
# regardless of whether they have a default or not.
|
64
|
-
# Rails.application.config.active_record.partial_inserts = false
|
65
|
-
|
66
|
-
# Protect from open redirect attacks in `redirect_back_or_to` and `redirect_to`.
|
67
|
-
# Rails.application.config.action_controller.raise_on_open_redirects = true
|
68
|
-
|
69
|
-
# Change the variant processor for Active Storage.
|
70
|
-
# Changing this default means updating all places in your code that
|
71
|
-
# generate variants to use image processing macros and ruby-vips
|
72
|
-
# operations. See the upgrading guide for detail on the changes required.
|
73
|
-
# The `:mini_magick` option is not deprecated; it is fine to keep using it.
|
74
|
-
# Rails.application.config.active_storage.variant_processor = :vips
|
75
|
-
|
76
|
-
# Enable parameter wrapping for JSON.
|
77
|
-
# Previously this was set in an initializer. It is fine to keep using that initializer if you have customized it.
|
78
|
-
# To disable parameter wrapping entirely, set this config to `false`.
|
79
|
-
# Rails.application.config.action_controller.wrap_parameters_by_default = true
|
80
|
-
|
81
|
-
# Specifies whether generated namespaced UUIDs follow the RFC 4122 standard for namespace IDs provided as a
|
82
|
-
# `String` to `Digest::UUID.uuid_v3` or `Digest::UUID.uuid_v5` method calls.
|
83
|
-
#
|
84
|
-
# See https://guides.rubyonrails.org/configuring.html#config-active-support-use-rfc4122-namespaced-uuids for
|
85
|
-
# more information.
|
86
|
-
# Rails.application.config.active_support.use_rfc4122_namespaced_uuids = true
|
87
|
-
|
88
|
-
# Change the default headers to disable browsers' flawed legacy XSS protection.
|
89
|
-
# Rails.application.config.action_dispatch.default_headers = {
|
90
|
-
# "X-Frame-Options" => "SAMEORIGIN",
|
91
|
-
# "X-XSS-Protection" => "0",
|
92
|
-
# "X-Content-Type-Options" => "nosniff",
|
93
|
-
# "X-Download-Options" => "noopen",
|
94
|
-
# "X-Permitted-Cross-Domain-Policies" => "none",
|
95
|
-
# "Referrer-Policy" => "strict-origin-when-cross-origin"
|
96
|
-
# }
|
97
|
-
|
98
|
-
# ** Please read carefully, this must be configured in config/application.rb **
|
99
|
-
# Change the format of the cache entry.
|
100
|
-
# Changing this default means that all new cache entries added to the cache
|
101
|
-
# will have a different format that is not supported by Rails 6.1 applications.
|
102
|
-
# Only change this value after your application is fully deployed to Rails 7.0
|
103
|
-
# and you have no plans to rollback.
|
104
|
-
# When you are ready to change format, add this to `config/application.rb` (NOT this file):
|
105
|
-
# config.active_support.cache_format_version = 7.0
|
106
|
-
|
107
|
-
# Cookie serializer: 2 options
|
108
|
-
#
|
109
|
-
# If you are upgrading and have not set `cookies_serializer` previously, your cookie serializer
|
110
|
-
# is `:marshal`. The default for new apps is `:json`.
|
111
|
-
#
|
112
|
-
# Rails.application.config.action_dispatch.cookies_serializer = :json
|
113
|
-
#
|
114
|
-
#
|
115
|
-
# To migrate an existing application to the `:json` serializer, use the `:hybrid` option.
|
116
|
-
#
|
117
|
-
# Rails transparently deserializes existing (Marshal-serialized) cookies on read and
|
118
|
-
# re-writes them in the JSON format.
|
119
|
-
#
|
120
|
-
# It is fine to use `:hybrid` long term; you should do that until you are confident *all* your cookies
|
121
|
-
# have been converted to JSON. To keep using `:hybrid` long term, move this config to its own
|
122
|
-
# initializer or to `config/application.rb`.
|
123
|
-
#
|
124
|
-
# Rails.application.config.action_dispatch.cookies_serializer = :hybrid
|
125
|
-
#
|
126
|
-
#
|
127
|
-
# If your cookies cannot yet be serialized to JSON, keep using `:marshal` for backward-compatibility.
|
128
|
-
#
|
129
|
-
# If you have configured the serializer elsewhere, you can remove this section of the file.
|
130
|
-
#
|
131
|
-
# See https://guides.rubyonrails.org/action_controller_overview.html#cookies for more information.
|
132
|
-
|
133
|
-
# Change the return value of `ActionDispatch::Request#content_type` to the Content-Type header without modification.
|
134
|
-
# Rails.application.config.action_dispatch.return_only_request_media_type_on_content_type = false
|
135
|
-
|
136
|
-
# Active Storage `has_many_attached` relationships will default to replacing the current collection instead of appending to it.
|
137
|
-
# Thus, to support submitting an empty collection, the `file_field` helper will render an hidden field `include_hidden` by
|
138
|
-
# default when `multiple_file_field_include_hidden` is set to `true`.
|
139
|
-
# See https://guides.rubyonrails.org/configuring.html#config-active-storage-multiple-file-field-include-hidden for more information.
|
140
|
-
# Rails.application.config.active_storage.multiple_file_field_include_hidden = true
|
141
|
-
|
142
|
-
# ** Please read carefully, this must be configured in config/application.rb (NOT this file) **
|
143
|
-
# Disables the deprecated #to_s override in some Ruby core classes
|
144
|
-
# See https://guides.rubyonrails.org/configuring.html#config-active-support-disable-to-s-conversion for more information.
|
145
|
-
# config.active_support.disable_to_s_conversion = true
|
@@ -1,15 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Decidim
|
4
|
-
module Core
|
5
|
-
module HasHastaggableInputFilter
|
6
|
-
def self.included(child_class)
|
7
|
-
child_class.argument :hashtag,
|
8
|
-
type: GraphQL::Types::String,
|
9
|
-
description: "List result having this hashtag",
|
10
|
-
required: false,
|
11
|
-
prepare: ->(hashtag, _ctx) { "##{hashtag.sub(/^#/, "")}" }
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,15 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Decidim
|
4
|
-
module Core
|
5
|
-
module HasEndorsableInputSort
|
6
|
-
def self.included(child_class)
|
7
|
-
child_class.argument :endorsement_count,
|
8
|
-
type: GraphQL::Types::String,
|
9
|
-
description: "Sort by number of endorsements, valid values are ASC or DESC",
|
10
|
-
required: false,
|
11
|
-
as: :endorsements_count
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,19 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Decidim
|
4
|
-
module Core
|
5
|
-
# This interface represents an object capable of endorsements.
|
6
|
-
module EndorsableInterface
|
7
|
-
include Decidim::Api::Types::BaseInterface
|
8
|
-
description "An interface that can be used in objects with endorsements"
|
9
|
-
|
10
|
-
field :endorsements, [Decidim::Core::AuthorInterface, { null: true }], "The endorsements of this object.", null: false
|
11
|
-
|
12
|
-
field :endorsements_count, Integer, description: "The total amount of endorsements the object has received", null: true
|
13
|
-
|
14
|
-
def endorsements
|
15
|
-
object.endorsements.map(&:normalized_author)
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Decidim
|
4
|
-
module Core
|
5
|
-
# This type represents a User.
|
6
|
-
class HashtagType < Decidim::Api::Types::BaseObject
|
7
|
-
graphql_name "HashtagType"
|
8
|
-
description "hashtags list"
|
9
|
-
|
10
|
-
field :name, GraphQL::Types::String, "The hashtag's name", null: false
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
@@ -1,20 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Decidim
|
4
|
-
module Core
|
5
|
-
class MetricHistoryType < Decidim::Api::Types::BaseObject
|
6
|
-
description "A metric history"
|
7
|
-
|
8
|
-
field :key, GraphQL::Types::String, "The key value", null: false
|
9
|
-
field :value, GraphQL::Types::Int, "The value for each key", null: false
|
10
|
-
|
11
|
-
def key
|
12
|
-
MetricObjectPresenter.new(object).attr_date(0)
|
13
|
-
end
|
14
|
-
|
15
|
-
def value
|
16
|
-
MetricObjectPresenter.new(object).attr_int(1)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
@@ -1,13 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Decidim
|
4
|
-
module Core
|
5
|
-
class MetricType < Decidim::Api::Types::BaseObject
|
6
|
-
description "Metric data"
|
7
|
-
|
8
|
-
field :count, GraphQL::Types::Int, "The last value of the metric", null: false
|
9
|
-
field :history, [MetricHistoryType, { null: true }], "The historic values for this metric", null: false
|
10
|
-
field :name, GraphQL::Types::String, "The graphql_name of the metric", null: false
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
@@ -1,55 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Decidim
|
4
|
-
module Core
|
5
|
-
# This type represents a UserGroup
|
6
|
-
class UserGroupType < Decidim::Api::Types::BaseObject
|
7
|
-
description "A user group"
|
8
|
-
|
9
|
-
implements Decidim::Core::AuthorInterface
|
10
|
-
|
11
|
-
field :avatar_url, GraphQL::Types::String, "The user's avatar url", null: false
|
12
|
-
field :badge, GraphQL::Types::String, "A badge for the user group", null: false
|
13
|
-
field :deleted, GraphQL::Types::Boolean, "Whether the user group's has been deleted or not", null: false
|
14
|
-
field :id, GraphQL::Types::ID, "The user group's id", null: false
|
15
|
-
field :members, [Decidim::Core::UserType, { null: true }], "Members of this group", null: false, method: :accepted_users
|
16
|
-
field :members_count, GraphQL::Types::Int, "Number of members in this group", null: false
|
17
|
-
field :name, GraphQL::Types::String, "The user group's name", null: false
|
18
|
-
field :nickname, GraphQL::Types::String, "The user group nickname", null: false
|
19
|
-
field :organization_name, Decidim::Core::TranslatedFieldType, "The user group's organization name", null: false
|
20
|
-
field :profile_path, GraphQL::Types::String, "The user group's profile url", null: false
|
21
|
-
|
22
|
-
def nickname
|
23
|
-
object.presenter.nickname
|
24
|
-
end
|
25
|
-
|
26
|
-
def avatar_url
|
27
|
-
object.presenter.avatar_url
|
28
|
-
end
|
29
|
-
|
30
|
-
def profile_path
|
31
|
-
object.presenter.profile_path
|
32
|
-
end
|
33
|
-
|
34
|
-
def organization_name
|
35
|
-
object.organization.name
|
36
|
-
end
|
37
|
-
|
38
|
-
def deleted
|
39
|
-
object.presenter.deleted?
|
40
|
-
end
|
41
|
-
|
42
|
-
def badge
|
43
|
-
object.presenter.badge
|
44
|
-
end
|
45
|
-
|
46
|
-
def members_count
|
47
|
-
object.accepted_memberships.count
|
48
|
-
end
|
49
|
-
|
50
|
-
def self.authorized?(object, context)
|
51
|
-
super && !object.blocked?
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
@@ -1,66 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Decidim
|
4
|
-
module ContentParsers
|
5
|
-
# A parser that searches hashtags in content.
|
6
|
-
#
|
7
|
-
# A word starting with `#` will be considered as a hashtag if
|
8
|
-
# it only contains letters, numbers or underscores. If the `#` is
|
9
|
-
# followed with an underscore, then it is not considered.
|
10
|
-
#
|
11
|
-
# @see BaseParser Examples of how to use a content parser
|
12
|
-
class HashtagParser < TagParser
|
13
|
-
# Class used as a container for metadata
|
14
|
-
#
|
15
|
-
# @!attribute hashtags
|
16
|
-
# @return [Array] an array of Decidim::Hashtag mentioned in content
|
17
|
-
Metadata = Struct.new(:hashtags)
|
18
|
-
|
19
|
-
# Matches a hashtag if it starts with a letter or number
|
20
|
-
# and only contains letters, numbers or underscores.
|
21
|
-
HASHTAG_REGEX = /(?:\A|\s\K)\B#([[:alnum:]](?:[[:alnum:]]|_)*)\b/i
|
22
|
-
|
23
|
-
def metadata
|
24
|
-
Metadata.new(content_tags.map { |content_hashtag| hashtag(content_hashtag) }.uniq)
|
25
|
-
end
|
26
|
-
|
27
|
-
private
|
28
|
-
|
29
|
-
def tag_data_type
|
30
|
-
"hashtag"
|
31
|
-
end
|
32
|
-
|
33
|
-
def replace_tags(text)
|
34
|
-
text.gsub(HASHTAG_REGEX) do |match|
|
35
|
-
"#{hashtag(match[1..-1]).to_global_id}/#{extra_hashtags? ? "_" : ""}#{match[1..-1]}"
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
def scan_tags(text)
|
40
|
-
text.scan(HASHTAG_REGEX)
|
41
|
-
end
|
42
|
-
|
43
|
-
def hashtag(name)
|
44
|
-
hashtags[name.downcase] ||= Decidim::Hashtag.create(organization: current_organization, name: name.downcase)
|
45
|
-
end
|
46
|
-
|
47
|
-
def hashtags
|
48
|
-
@hashtags ||= existing_hashtags.index_by(&:name)
|
49
|
-
end
|
50
|
-
|
51
|
-
def existing_hashtags
|
52
|
-
@existing_hashtags ||= Decidim::Hashtag.where(organization: current_organization, name: content_tags.map(&:downcase))
|
53
|
-
end
|
54
|
-
|
55
|
-
def current_organization
|
56
|
-
@current_organization ||= context[:current_organization]
|
57
|
-
end
|
58
|
-
|
59
|
-
def extra_hashtags?
|
60
|
-
return @extra_hashtags if defined?(@extra_hashtags)
|
61
|
-
|
62
|
-
@extra_hashtags = context[:extra_hashtags]
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Decidim
|
4
|
-
module ContentParsers
|
5
|
-
# A parser that searches user groups mentions in content.
|
6
|
-
#
|
7
|
-
# A word starting with `@` will be considered as a possible mention if
|
8
|
-
# they only contains letters, numbers or underscores.
|
9
|
-
#
|
10
|
-
# @see BaseParser Examples of how to use a content parser
|
11
|
-
class UserGroupParser < UserParser
|
12
|
-
# Class used as a container for metadata
|
13
|
-
#
|
14
|
-
# @!attribute groups
|
15
|
-
# @return [Array] an array of Decidim::UserGroup mentioned in content
|
16
|
-
Metadata = Struct.new(:groups)
|
17
|
-
|
18
|
-
# Matches a nickname if contains letters, numbers or underscores.
|
19
|
-
MENTION_REGEX = /\B@(\w*)\b/
|
20
|
-
|
21
|
-
# (see BaseParser#metadata)
|
22
|
-
def metadata
|
23
|
-
Metadata.new(existing_mentionables)
|
24
|
-
end
|
25
|
-
|
26
|
-
private
|
27
|
-
|
28
|
-
def mentionable_class
|
29
|
-
Decidim::UserGroup
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,78 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Decidim
|
4
|
-
module ContentRenderers
|
5
|
-
# A renderer that searches Global IDs representing hashtags in content
|
6
|
-
# and replaces it with a link to their detail page with the name.
|
7
|
-
#
|
8
|
-
# e.g. gid://<APP_NAME>/Decidim::Hashtag/1
|
9
|
-
#
|
10
|
-
# @see BaseRenderer Examples of how to use a content renderer
|
11
|
-
class HashtagRenderer < BaseRenderer
|
12
|
-
# Matches a global id representing a Decidim::Hashtag
|
13
|
-
GLOBAL_ID_REGEX = %r{gid://[\w-]*/Decidim::Hashtag/(\d+)/?(_?)([[:alnum:]](?:[[:alnum:]]|_)*)?\b}
|
14
|
-
|
15
|
-
# Replaces found Global IDs matching an existing hashtag with
|
16
|
-
# a link to their detail page. The Global IDs representing an
|
17
|
-
# invalid Decidim::Hashtag are replaced with an empty string.
|
18
|
-
#
|
19
|
-
# links - should render hashtags as links?
|
20
|
-
# extras - should include extra hashtags?
|
21
|
-
#
|
22
|
-
# @return [String] the content ready to display (contains HTML)
|
23
|
-
def render(links: true, extras: true, editor: false)
|
24
|
-
return content unless content.respond_to?(:gsub)
|
25
|
-
|
26
|
-
content.gsub(GLOBAL_ID_REGEX) do |hashtag_gid|
|
27
|
-
id, extra, cased_name = hashtag_gid.scan(GLOBAL_ID_REGEX).flatten
|
28
|
-
hashtag = hashtags[id.to_i]
|
29
|
-
|
30
|
-
next "" if hashtag.nil? || (!extras && extra.present?)
|
31
|
-
|
32
|
-
presenter = Decidim::HashtagPresenter.new(hashtag, cased_name:)
|
33
|
-
|
34
|
-
if editor
|
35
|
-
label = presenter.display_hashtag_name
|
36
|
-
%(<span data-type="hashtag" data-label="#{label}">#{label}</span>)
|
37
|
-
elsif links
|
38
|
-
presenter.display_hashtag
|
39
|
-
else
|
40
|
-
presenter.display_hashtag_name
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
# Returns all the extra hashtags found in the content
|
46
|
-
def extra_hashtags
|
47
|
-
@extra_hashtags ||= existing_hashtags.select { |hashtag| content_extra_hashtags_ids.member?(hashtag.id) }
|
48
|
-
end
|
49
|
-
|
50
|
-
private
|
51
|
-
|
52
|
-
def hashtags
|
53
|
-
@hashtags ||=
|
54
|
-
existing_hashtags.index_by(&:id)
|
55
|
-
end
|
56
|
-
|
57
|
-
def existing_hashtags
|
58
|
-
@existing_hashtags ||= Decidim::Hashtag.where(id: content_hashtags_ids)
|
59
|
-
end
|
60
|
-
|
61
|
-
def content_hashtags_ids
|
62
|
-
@content_hashtags_ids ||= ids_from_matches(content_matches)
|
63
|
-
end
|
64
|
-
|
65
|
-
def content_extra_hashtags_ids
|
66
|
-
@content_extra_hashtags_ids ||= ids_from_matches(content_matches.select { |match| match[1].present? })
|
67
|
-
end
|
68
|
-
|
69
|
-
def content_matches
|
70
|
-
@content_matches ||= content.scan(GLOBAL_ID_REGEX)
|
71
|
-
end
|
72
|
-
|
73
|
-
def ids_from_matches(matches)
|
74
|
-
matches.map(&:first).map(&:to_i).uniq
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
78
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Decidim
|
4
|
-
module ContentRenderers
|
5
|
-
# A renderer that searches Global IDs representing users in content
|
6
|
-
# and replaces it with a link to their profile with the nickname.
|
7
|
-
#
|
8
|
-
# e.g. gid://<APP_NAME>/Decidim::UserGroup/1
|
9
|
-
#
|
10
|
-
# @see BaseRenderer Examples of how to use a content renderer
|
11
|
-
class UserGroupRenderer < UserRenderer
|
12
|
-
# Matches a global id representing a Decidim::UserGroup
|
13
|
-
GLOBAL_ID_REGEX = %r{gid://[\w-]+/Decidim::UserGroup/\d+}
|
14
|
-
|
15
|
-
# Replaces found Global IDs matching an existing user with
|
16
|
-
# a link to their profile. The Global IDs representing an
|
17
|
-
# invalid Decidim::UserGroup are replaced with an empty string.
|
18
|
-
#
|
19
|
-
# @return [String] the content ready to display (contains HTML)
|
20
|
-
def render(editor: false, **_)
|
21
|
-
replace_pattern(content, GLOBAL_ID_REGEX, editor:)
|
22
|
-
end
|
23
|
-
|
24
|
-
protected
|
25
|
-
|
26
|
-
def presenter_for(mentionable)
|
27
|
-
Decidim::UserGroupPresenter.new(mentionable)
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
@@ -1,14 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "spec_helper"
|
4
|
-
|
5
|
-
shared_examples_for "amendable interface" do
|
6
|
-
describe "amendments" do
|
7
|
-
let(:query) { "{ amendments { id } }" }
|
8
|
-
|
9
|
-
it "includes the amendments id" do
|
10
|
-
amendments_ids = response["amendments"].map { |amendment| amendment["id"].to_i }
|
11
|
-
expect(amendments_ids).to include(*model.amendments.map(&:id))
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
@@ -1,50 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "spec_helper"
|
4
|
-
|
5
|
-
shared_examples_for "amendable proposals interface" do
|
6
|
-
describe "amendments" do
|
7
|
-
let(:query) do
|
8
|
-
'{ amendments {
|
9
|
-
state
|
10
|
-
amendable { ...on Proposal { title { translation(locale: "en") } } }
|
11
|
-
amendableType
|
12
|
-
emendation { ...on Proposal { title { translation(locale: "en") } } }
|
13
|
-
emendationType
|
14
|
-
amender { name }
|
15
|
-
} }'
|
16
|
-
end
|
17
|
-
|
18
|
-
it "includes the amendments states" do
|
19
|
-
amendments_states = response["amendments"].map { |amendment| amendment["state"] }
|
20
|
-
expect(amendments_states).to include(*model.amendments.map(&:state))
|
21
|
-
end
|
22
|
-
|
23
|
-
it "amendable types matches Proposals Type" do
|
24
|
-
response["amendments"].each do |amendment|
|
25
|
-
expect(amendment["amendableType"]).to eq("Decidim::Proposals::Proposal")
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
it "emendation types matches Proposals Type" do
|
30
|
-
response["amendments"].each do |amendment|
|
31
|
-
expect(amendment["emendationType"]).to eq("Decidim::Proposals::Proposal")
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
it "returns amendable as parent proposal" do
|
36
|
-
amendment_amendables = response["amendments"].map { |amendment| amendment["amendable"] }.map { |title| title["title"]["translation"] }
|
37
|
-
expect(amendment_amendables).to include(*model.amendments.map(&:amendable).map { |p| p.title["en"] })
|
38
|
-
end
|
39
|
-
|
40
|
-
it "returns emendations received" do
|
41
|
-
amendment_emendations = response["amendments"].map { |amendment| amendment["emendation"] }.map { |title| title["title"]["translation"] }
|
42
|
-
expect(amendment_emendations).to include(*model.amendments.map(&:emendation).map { |p| p.title["en"] })
|
43
|
-
end
|
44
|
-
|
45
|
-
it "returns amender as emendation author" do
|
46
|
-
amendment_amenders = response["amendments"].map { |amendment| amendment["amender"] }
|
47
|
-
expect(amendment_amenders).to include(*model.amendments.map(&:amender).map { |p| { "name" => p.name } })
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
shared_examples "manage assemblies announcements" do
|
4
|
-
it "can customize a general announcement for the assembly" do
|
5
|
-
click_on "Configure"
|
6
|
-
|
7
|
-
fill_in_i18n_editor(
|
8
|
-
:assembly_announcement,
|
9
|
-
"#assembly-announcement-tabs",
|
10
|
-
en: "An important announcement",
|
11
|
-
es: "Un aviso muy importante",
|
12
|
-
ca: "Un avís molt important"
|
13
|
-
)
|
14
|
-
|
15
|
-
within ".edit_assembly" do
|
16
|
-
find("*[type=submit]").click
|
17
|
-
end
|
18
|
-
|
19
|
-
expect(page).to have_admin_callout("successfully")
|
20
|
-
visit decidim_admin_assemblies.assemblies_path
|
21
|
-
|
22
|
-
if defined?(parent_assembly) && !parent_assembly.nil?
|
23
|
-
within "tr", text: translated(parent_assembly.title) do
|
24
|
-
click_on "Assemblies"
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
new_window = window_opened_by do
|
29
|
-
within "tr", text: translated(assembly.title) do
|
30
|
-
click_on "Preview"
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
page.within_window(new_window) do
|
35
|
-
expect(page).to have_content("An important announcement")
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "spec_helper"
|
4
|
-
|
5
|
-
shared_examples_for "attachable interface" do
|
6
|
-
let!(:attachments) { create_list(:attachment, 3, attached_to: model) }
|
7
|
-
|
8
|
-
describe "attachments" do
|
9
|
-
let(:query) { "{ attachments { url } }" }
|
10
|
-
|
11
|
-
it "includes the attachment urls" do
|
12
|
-
attachment_urls = response["attachments"].map { |attachment| attachment["url"] }
|
13
|
-
expect(attachment_urls).to include_blob_urls(*attachments.map(&:file).map(&:blob))
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|