decidim-core 0.29.4 → 0.30.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/app/cells/decidim/address/show.erb +3 -3
- data/app/cells/decidim/amendable/amend_button_card/show.erb +6 -4
- data/app/cells/decidim/amendable/amend_button_card_cell.rb +8 -0
- data/app/cells/decidim/amendable/amendments/show.erb +1 -1
- data/app/cells/decidim/amendable/promote_button_card/show.erb +2 -0
- data/app/cells/decidim/author/flag.erb +6 -0
- data/app/cells/decidim/author/flag_user.erb +14 -0
- data/app/cells/decidim/author/show.erb +4 -2
- data/app/cells/decidim/author_cell.rb +1 -1
- data/app/cells/decidim/card_l/extra_data.erb +1 -0
- data/app/cells/decidim/card_metadata_cell.rb +9 -16
- data/app/cells/decidim/comments_button_cell.rb +14 -2
- data/app/cells/decidim/content_blocks/highlighted_elements_cell.rb +2 -0
- data/app/cells/decidim/content_blocks/highlighted_elements_with_cell_for_list_cell.rb +1 -1
- data/app/cells/decidim/content_blocks/participatory_space_extra_data/extra_data.erb +2 -2
- data/app/cells/decidim/endorsement_block/show.erb +0 -1
- data/app/cells/decidim/endorsement_block_cell.rb +6 -0
- data/app/cells/decidim/endorsement_buttons/button_content.erb +1 -1
- data/app/cells/decidim/endorsement_buttons/select_identity_button.erb +1 -1
- data/app/cells/decidim/endorsement_buttons/show.erb +7 -7
- data/app/cells/decidim/endorsement_buttons/verification_modal.erb +4 -2
- data/app/cells/decidim/endorsers_list/empty.erb +3 -0
- data/app/cells/decidim/endorsers_list/full.erb +17 -5
- data/app/cells/decidim/endorsers_list/show.erb +19 -10
- data/app/cells/decidim/endorsers_list_cell.rb +19 -6
- data/app/cells/decidim/flag_modal/flag_user.erb +34 -0
- data/app/cells/decidim/flag_modal/show.erb +52 -0
- data/app/cells/decidim/flag_modal_cell.rb +56 -0
- data/app/cells/decidim/follow_button/show.erb +1 -2
- data/app/cells/decidim/follow_button_cell.rb +5 -0
- data/app/cells/decidim/map/show.erb +3 -0
- data/app/cells/decidim/map/template.erb +14 -0
- data/app/cells/decidim/map_cell.rb +39 -0
- data/app/cells/decidim/notification_actions/buttons_cell.rb +1 -1
- data/app/cells/decidim/onboarding_action_message/show.erb +15 -0
- data/app/cells/decidim/onboarding_action_message_cell.rb +81 -0
- data/app/cells/decidim/participatory_space_dropdown_metadata/metadata.erb +4 -4
- data/app/cells/decidim/participatory_space_dropdown_metadata/show.erb +3 -5
- data/app/cells/decidim/participatory_space_private_user/show.erb +23 -0
- data/app/cells/decidim/participatory_space_private_user_cell.rb +21 -0
- data/app/cells/decidim/profile_actions/show.erb +1 -1
- data/app/cells/decidim/profile_sidebar/show.erb +167 -0
- data/app/cells/decidim/profile_sidebar_cell.rb +68 -0
- data/app/cells/decidim/progress_bar/show.erb +2 -2
- data/app/cells/decidim/report_button/already_reported_modal.erb +2 -2
- data/app/cells/decidim/report_button/flag_modal.erb +27 -13
- data/app/cells/decidim/report_button_cell.rb +9 -2
- data/app/cells/decidim/resource_history/show.erb +20 -0
- data/app/cells/decidim/resource_history_cell.rb +66 -0
- data/app/cells/decidim/resource_types_filter/show.erb +1 -1
- data/app/cells/decidim/resource_types_filter_cell.rb +6 -6
- data/app/cells/decidim/share_button_cell.rb +0 -4
- data/app/cells/decidim/share_widget/modal.erb +26 -0
- data/app/cells/decidim/share_widget/show.erb +2 -0
- data/app/cells/decidim/share_widget_cell.rb +20 -0
- data/app/cells/decidim/tags/show.erb +7 -4
- data/app/cells/decidim/tags_cell.rb +11 -72
- data/app/cells/decidim/user_activity/show.erb +1 -1
- data/app/commands/decidim/amendable/create_draft.rb +2 -2
- data/app/commands/decidim/create_ephemeral_user.rb +52 -0
- data/app/commands/decidim/create_omniauth_registration.rb +21 -17
- data/app/commands/decidim/create_report.rb +8 -11
- data/app/commands/decidim/create_user_group.rb +6 -2
- data/app/commands/decidim/destroy_ephemeral_user.rb +47 -0
- data/app/commands/decidim/invite_user.rb +1 -1
- data/app/commands/decidim/search.rb +0 -14
- data/app/commands/decidim/update_account.rb +11 -3
- data/app/commands/decidim/update_notifications_settings.rb +1 -0
- data/app/commands/decidim/update_resources_taxonomies.rb +67 -0
- data/app/commands/decidim/update_user_group.rb +7 -1
- data/app/constraints/decidim/current_component.rb +1 -1
- data/app/controllers/concerns/decidim/ajax_permission_handler.rb +21 -0
- data/app/controllers/concerns/decidim/devise_authentication_methods.rb +3 -6
- data/app/controllers/concerns/decidim/devise_controllers.rb +2 -0
- data/app/controllers/concerns/decidim/disable_redirection_to_external_host.rb +1 -1
- data/app/controllers/concerns/decidim/ephemeral_session_checker.rb +87 -0
- data/app/controllers/concerns/decidim/filter_resource.rb +4 -2
- data/app/controllers/concerns/decidim/has_members_page.rb +25 -0
- data/app/controllers/concerns/decidim/headers/browser_feature_permissions.rb +50 -0
- data/app/controllers/concerns/decidim/locale_switcher.rb +2 -2
- data/app/controllers/concerns/decidim/needs_password_change.rb +0 -1
- data/app/controllers/concerns/decidim/needs_permission.rb +2 -1
- data/app/controllers/concerns/decidim/needs_tos_accepted.rb +4 -5
- data/app/controllers/concerns/decidim/onboarding_action_methods.rb +52 -0
- data/app/controllers/concerns/decidim/participatory_space_context.rb +1 -4
- data/app/controllers/decidim/application_controller.rb +10 -0
- data/app/controllers/decidim/authorization_modals_controller.rb +8 -2
- data/app/controllers/decidim/components/base_controller.rb +3 -7
- data/app/controllers/decidim/devise/confirmations_controller.rb +4 -0
- data/app/controllers/decidim/devise/omniauth_registrations_controller.rb +8 -1
- data/app/controllers/decidim/devise/registrations_controller.rb +1 -1
- data/app/controllers/decidim/devise/sessions_controller.rb +2 -0
- data/app/controllers/decidim/download_your_data_controller.rb +33 -2
- data/app/controllers/decidim/editor_images_controller.rb +1 -11
- data/app/controllers/decidim/follows_controller.rb +1 -1
- data/app/controllers/decidim/geolocation_controller.rb +19 -0
- data/app/controllers/decidim/homepage_controller.rb +0 -1
- data/app/controllers/decidim/open_data_controller.rb +33 -8
- data/app/controllers/decidim/profiles_controller.rb +2 -2
- data/app/controllers/decidim/reports_controller.rb +2 -7
- data/app/controllers/decidim/user_activities_controller.rb +1 -1
- data/app/controllers/decidim/user_conversations_controller.rb +1 -11
- data/app/events/decidim/soft_delete_resource_event.rb +15 -0
- data/app/forms/decidim/account_form.rb +2 -5
- data/app/forms/decidim/amendable/form.rb +4 -2
- data/app/forms/decidim/ephemeral_user_form.rb +22 -0
- data/app/forms/decidim/notifications_settings_form.rb +1 -0
- data/app/forms/decidim/omniauth_registration_form.rb +15 -2
- data/app/forms/decidim/registration_form.rb +1 -1
- data/app/helpers/concerns/decidim/flash_helper_extensions.rb +17 -2
- data/app/helpers/decidim/action_authorization_helper.rb +75 -14
- data/app/helpers/decidim/amendments_helper.rb +0 -9
- data/app/helpers/decidim/application_helper.rb +6 -2
- data/app/helpers/decidim/breadcrumb_helper.rb +6 -0
- data/app/helpers/decidim/cache_helper.rb +1 -1
- data/app/helpers/decidim/check_boxes_tree_helper.rb +25 -53
- data/app/helpers/decidim/decidim_form_helper.rb +0 -44
- data/app/helpers/decidim/endorsable_helper.rb +0 -10
- data/app/helpers/decidim/layout_helper.rb +6 -0
- data/app/helpers/decidim/menu_helper.rb +2 -2
- data/app/helpers/decidim/messaging/conversation_helper.rb +2 -3
- data/app/helpers/decidim/meta_tags_helper.rb +32 -23
- data/app/helpers/decidim/modal_helper.rb +23 -0
- data/app/helpers/decidim/omniauth_helper.rb +5 -5
- data/app/helpers/decidim/onboarding_action_helper.rb +13 -0
- data/app/helpers/decidim/orders_helper.rb +1 -2
- data/app/helpers/decidim/paginate_helper.rb +1 -1
- data/app/helpers/decidim/participatory_space_helpers.rb +1 -1
- data/app/helpers/decidim/passwords_helper.rb +2 -2
- data/app/helpers/decidim/taxonomies_helper.rb +40 -0
- data/app/helpers/decidim/tooltip_helper.rb +1 -4
- data/app/jobs/decidim/download_your_data_export_job.rb +2 -19
- data/app/jobs/decidim/event_publisher_job.rb +18 -9
- data/app/jobs/decidim/export_job.rb +5 -1
- data/app/jobs/decidim/export_participatory_space_job.rb +4 -1
- data/app/jobs/decidim/open_data_job.rb +4 -4
- data/app/mailers/decidim/export_mailer.rb +7 -12
- data/app/mailers/decidim/notifications_digest_mailer.rb +1 -7
- data/app/mailers/decidim/reported_mailer.rb +2 -18
- data/app/models/decidim/action_log.rb +20 -1
- data/app/models/decidim/category.rb +4 -0
- data/app/models/decidim/component.rb +25 -3
- data/app/models/decidim/metric.rb +2 -1
- data/app/models/decidim/moderation.rb +16 -0
- data/app/models/decidim/newsletter.rb +12 -8
- data/app/models/decidim/organization.rb +7 -3
- data/app/models/decidim/participatory_space_private_user.rb +20 -0
- data/app/models/decidim/private_export.rb +24 -0
- data/app/models/decidim/push_notification_message.rb +1 -1
- data/app/models/decidim/report.rb +1 -1
- data/app/models/decidim/scope.rb +4 -0
- data/app/models/decidim/share_token.rb +36 -10
- data/app/models/decidim/taxonomization.rb +23 -0
- data/app/models/decidim/taxonomy.rb +139 -0
- data/app/models/decidim/taxonomy_filter.rb +130 -0
- data/app/models/decidim/taxonomy_filter_item.rb +33 -0
- data/app/models/decidim/user.rb +13 -23
- data/app/models/decidim/user_base_entity.rb +12 -4
- data/app/models/decidim/user_moderation.rb +9 -0
- data/app/models/decidim/user_report.rb +4 -0
- data/app/packs/entrypoints/decidim_core.js +1 -0
- data/app/packs/entrypoints/decidim_geocoding.js +2 -0
- data/app/packs/images/decidim/brands/facebook.svg +10 -0
- data/app/packs/images/decidim/brands/google.svg +7 -1
- data/app/packs/images/decidim/brands/twitter-x.svg +3 -0
- data/app/packs/src/decidim/check_boxes_tree.js +0 -1
- data/app/packs/src/decidim/clipboard.js +18 -9
- data/app/packs/src/decidim/confirm.js +79 -59
- data/app/packs/src/decidim/datepicker/datepicker_functions.js +3 -3
- data/app/packs/src/decidim/decidim_application.js +1 -0
- data/app/packs/src/decidim/form_remote.js +1 -1
- data/app/packs/src/decidim/geocoding/reverse_geocoding.js +60 -0
- data/app/packs/src/decidim/impersonation.js +1 -1
- data/app/packs/src/decidim/index.js +13 -5
- data/app/packs/src/decidim/input_character_counter.js +1 -1
- data/app/packs/src/decidim/map/provider/here.js +1 -1
- data/app/packs/src/decidim/onboarding_pending_action.js +24 -0
- data/app/packs/src/decidim/session_timeouter.js +1 -1
- data/app/packs/src/decidim/sticky_footer.js +29 -0
- data/app/packs/src/decidim/sticky_header.js +6 -31
- data/app/packs/src/decidim/user_registrations.js +13 -0
- data/app/packs/src/decidim/utilities/dom.js +148 -0
- data/app/packs/src/decidim/vendor/leaflet-tilelayer-here.js +212 -0
- data/app/packs/stylesheets/decidim/_accordion.scss +30 -0
- data/app/packs/stylesheets/decidim/_buttons.scss +19 -0
- data/app/packs/stylesheets/decidim/_cards.scss +1 -1
- data/app/packs/stylesheets/decidim/_content_blocks.scss +0 -4
- data/app/packs/stylesheets/decidim/_dropdown.scss +1 -1
- data/app/packs/stylesheets/decidim/_endorsers_list.scss +26 -20
- data/app/packs/stylesheets/decidim/_forms.scss +2 -2
- data/app/packs/stylesheets/decidim/_header.scss +37 -60
- data/app/packs/stylesheets/decidim/_layout.scss +32 -2
- data/app/packs/stylesheets/decidim/_login.scss +53 -6
- data/app/packs/stylesheets/decidim/_modal.scss +42 -0
- data/app/packs/stylesheets/decidim/_modal_tos_refuse.scss +4 -0
- data/app/packs/stylesheets/decidim/_participatory_spaces.scss +46 -0
- data/app/packs/stylesheets/decidim/_profile.scss +1 -1
- data/app/packs/stylesheets/decidim/_success_image.scss +64 -0
- data/app/packs/stylesheets/decidim/_tribute.scss +36 -0
- data/app/packs/stylesheets/decidim/application.scss +1 -1
- data/app/packs/stylesheets/decidim/geocoding_addons.scss +5 -0
- data/app/packs/stylesheets/decidim/map.scss +7 -10
- data/app/packs/stylesheets/decidim/resource_history.scss +31 -0
- data/app/permissions/decidim/default_permissions.rb +0 -2
- data/app/permissions/decidim/permissions.rb +8 -2
- data/app/presenters/decidim/admin_log/base_user_presenter.rb +67 -0
- data/app/presenters/decidim/admin_log/component_presenter.rb +32 -3
- data/app/presenters/decidim/admin_log/moderation_presenter.rb +30 -3
- data/app/presenters/decidim/admin_log/share_token_presenter.rb +39 -0
- data/app/presenters/decidim/admin_log/taxonomy_filter_presenter.rb +57 -0
- data/app/presenters/decidim/admin_log/taxonomy_presenter.rb +48 -0
- data/app/presenters/decidim/admin_log/user_group_presenter.rb +6 -6
- data/app/presenters/decidim/admin_log/user_presenter.rb +4 -18
- data/app/presenters/decidim/log/user_presenter.rb +0 -1
- data/app/presenters/decidim/log/value_types/date_presenter.rb +1 -0
- data/app/presenters/decidim/log/value_types/taxonomy_presenter.rb +29 -0
- data/app/presenters/decidim/notification_to_mailer_presenter.rb +3 -7
- data/app/presenters/decidim/participatory_space_private_user_presenter.rb +50 -0
- data/app/presenters/decidim/taxonomy_filter_presenter.rb +19 -0
- data/app/presenters/decidim/taxonomy_presenter.rb +14 -0
- data/app/presenters/decidim/user_presenter.rb +1 -1
- data/app/queries/decidim/last_activity.rb +0 -25
- data/app/queries/decidim/metrics/blocked_users_metric_manage.rb +2 -2
- data/app/queries/decidim/metrics/users_metric_manage.rb +2 -2
- data/app/queries/decidim/public_activities.rb +1 -12
- data/app/queries/decidim/stats_users_count.rb +2 -2
- data/app/resolvers/decidim/meta_image_url_resolver.rb +128 -0
- data/app/serializers/decidim/exporters/open_data_blocked_user_serializer.rb +25 -0
- data/app/serializers/decidim/exporters/open_data_metric_serializer.rb +22 -0
- data/app/serializers/decidim/exporters/open_data_moderation_serializer.rb +30 -0
- data/app/serializers/decidim/exporters/open_data_taxonomy_serializer.rb +30 -0
- data/app/serializers/decidim/exporters/open_data_user_group_serializer.rb +38 -0
- data/app/serializers/decidim/exporters/open_data_user_serializer.rb +39 -0
- data/app/serializers/decidim/exporters/participatory_space_serializer.rb +104 -0
- data/app/serializers/decidim/exporters/serializer.rb +25 -0
- data/app/serializers/decidim/schema_org_breadcrumb_list_serializer.rb +52 -0
- data/app/services/decidim/action_authorizer.rb +32 -3
- data/app/services/decidim/base_diff_renderer.rb +1 -3
- data/app/services/decidim/download_your_data_exporter.rb +58 -24
- data/app/services/decidim/onboarding_manager.rb +272 -0
- data/app/services/decidim/open_data_exporter.rb +139 -13
- data/app/services/decidim/static_map_generator.rb +1 -1
- data/app/services/decidim/traceability.rb +13 -0
- data/app/uploaders/decidim/application_uploader.rb +1 -1
- data/app/validators/etiquette_validator.rb +9 -2
- data/app/validators/passthru_validator.rb +1 -1
- data/app/validators/translated_etiquette_validator.rb +32 -0
- data/app/views/decidim/account/_password_fields.html.erb +2 -2
- data/app/views/decidim/application/_accordion_section.html.erb +14 -0
- data/app/views/decidim/application/_collection.html.erb +30 -18
- data/app/views/decidim/devise/omniauth_registrations/new.html.erb +5 -1
- data/app/views/decidim/devise/omniauth_registrations/new_tos_fields.html.erb +29 -0
- data/app/views/decidim/devise/registrations/new.html.erb +10 -22
- data/app/views/decidim/devise/sessions/new.html.erb +24 -29
- data/app/views/decidim/devise/shared/_omniauth_buttons.html.erb +2 -4
- data/app/views/decidim/devise/shared/_tos_fields.html.erb +16 -0
- data/app/views/decidim/download_your_data/_export.html.erb +15 -0
- data/app/views/decidim/download_your_data/show.html.erb +51 -5
- data/app/views/decidim/endorsements/update_buttons_and_counters.js.erb +16 -19
- data/app/views/decidim/export_mailer/download_your_data_export.html.erb +2 -2
- data/app/views/decidim/export_mailer/export.html.erb +5 -1
- data/app/views/decidim/last_activities/index.html.erb +1 -1
- data/app/views/decidim/messaging/conversations/_reply_form.html.erb +2 -1
- data/app/views/decidim/messaging/conversations/_start.html.erb +1 -1
- data/app/views/decidim/notifications_settings/show.html.erb +22 -0
- data/app/views/decidim/open_data/_how_to_open_accordion_section.html.erb +15 -0
- data/app/views/decidim/open_data/index.html.erb +108 -0
- data/app/views/decidim/pages/show.html.erb +2 -1
- data/app/views/decidim/participatory_space_private_users/_participatory_space_private_user.html.erb +1 -0
- data/app/views/decidim/reported_mailer/hide.html.erb +9 -0
- data/app/views/decidim/reported_mailer/report.html.erb +1 -1
- data/app/views/decidim/searches/_count.html.erb +1 -1
- data/app/views/decidim/searches/_filters.html.erb +38 -40
- data/app/views/decidim/shared/_login_modal.html.erb +26 -20
- data/app/views/decidim/shared/_orders.html.erb +2 -2
- data/app/views/decidim/shared/_resource_actions.html.erb +21 -0
- data/app/views/decidim/shared/_results_per_page.html.erb +1 -1
- data/app/views/decidim/shared/filters/_check_boxes_tree.html.erb +1 -2
- data/app/views/decidim/shared/filters/_collection.html.erb +1 -1
- data/app/views/decidim/shared/filters/_dropdown_label.html.erb +7 -4
- data/app/views/kaminari/decidim/_page.html.erb +1 -1
- data/app/views/kaminari/decidim/_paginator.html.erb +1 -1
- data/app/views/layouts/decidim/_application.html.erb +0 -1
- data/app/views/layouts/decidim/_js_configuration.html.erb +1 -0
- data/app/views/layouts/decidim/_logo.html.erb +2 -2
- data/app/views/layouts/decidim/_logo_mobile.html.erb +1 -1
- data/app/views/layouts/decidim/_meta_tags_config.html.erb +6 -11
- data/app/views/layouts/decidim/_schema_org_breadcrumb_list.html.erb +3 -0
- data/app/views/layouts/decidim/_wrapper.html.erb +15 -9
- data/app/views/layouts/decidim/footer/_main_legal.html.erb +1 -1
- data/app/views/layouts/decidim/footer/_main_links.html.erb +1 -1
- data/app/views/layouts/decidim/header/_close_ephemeral_session.html.erb +25 -0
- data/app/views/layouts/decidim/header/_main.html.erb +14 -10
- data/app/views/layouts/decidim/header/_menu_breadcrumb_items.html.erb +2 -0
- data/app/views/layouts/decidim/header/_menu_breadcrumb_main_dropdown_desktop.html.erb +11 -5
- data/app/views/layouts/decidim/header/_menu_breadcrumb_mobile_tablet.html.erb +5 -5
- data/app/views/layouts/decidim/shared/_layout_item.html.erb +1 -1
- data/config/assets.rb +2 -1
- data/config/locales/ar.yml +35 -74
- data/config/locales/bg.yml +33 -74
- data/config/locales/bs-BA.yml +0 -2
- data/config/locales/ca.yml +370 -102
- data/config/locales/cs.yml +374 -102
- data/config/locales/de.yml +350 -88
- data/config/locales/el.yml +22 -58
- data/config/locales/en.yml +350 -82
- data/config/locales/eo.yml +0 -4
- data/config/locales/es-MX.yml +364 -99
- data/config/locales/es-PY.yml +369 -104
- data/config/locales/es.yml +370 -102
- data/config/locales/eu.yml +426 -156
- data/config/locales/fi-plain.yml +366 -76
- data/config/locales/fi.yml +370 -77
- data/config/locales/fr-CA.yml +176 -97
- data/config/locales/fr.yml +176 -94
- data/config/locales/ga-IE.yml +4 -25
- data/config/locales/gl.yml +20 -58
- data/config/locales/hu.yml +30 -62
- data/config/locales/id-ID.yml +21 -57
- data/config/locales/is-IS.yml +5 -25
- data/config/locales/it.yml +36 -94
- data/config/locales/ja.yml +231 -112
- data/config/locales/lb.yml +28 -76
- data/config/locales/lt.yml +24 -64
- data/config/locales/lv.yml +21 -58
- data/config/locales/nl.yml +23 -75
- data/config/locales/no.yml +23 -70
- data/config/locales/pl.yml +30 -72
- data/config/locales/pt-BR.yml +41 -63
- data/config/locales/pt.yml +23 -70
- data/config/locales/ro-RO.yml +115 -184
- data/config/locales/ru.yml +13 -43
- data/config/locales/sk.yml +24 -70
- data/config/locales/sl.yml +0 -4
- data/config/locales/sr-CS.yml +0 -2
- data/config/locales/sv.yml +138 -106
- data/config/locales/tr-TR.yml +29 -75
- data/config/locales/uk.yml +6 -29
- data/config/locales/zh-CN.yml +21 -68
- data/config/locales/zh-TW.yml +23 -62
- data/config/routes.rb +4 -10
- data/db/migrate/20171212103803_create_unique_nicknames.rb +1 -1
- data/db/migrate/20180221101934_fix_nickname_index.rb +1 -1
- data/db/migrate/20180706104107_add_nickname_to_managed_users.rb +1 -1
- data/db/migrate/20181001124950_move_users_groups_to_users_table.rb +1 -1
- data/db/migrate/20181025082245_add_timestamps_to_components.rb +2 -0
- data/db/migrate/20190412131728_fix_user_names.rb +1 -1
- data/db/migrate/20240628111905_add_visible_to_components.rb +7 -0
- data/db/migrate/20240704115429_create_decidim_taxonomies.rb +23 -0
- data/db/migrate/20240717093514_add_registered_only_to_decidim_share_tokens.rb +7 -0
- data/db/migrate/20240722215500_change_object_changes_on_versions.rb +39 -0
- data/db/migrate/20240806065417_create_decidim_taxonomy_filters.rb +23 -0
- data/db/migrate/20240822161348_add_deleted_at_to_decidim_components.rb +8 -0
- data/db/migrate/20240906162524_add_part_of_to_taxonomies.rb +26 -0
- data/db/migrate/20241001135825_add_role_to_participatory_space_private_users.rb +7 -0
- data/db/migrate/20241001140408_add_published_to_participatory_space_private_users.rb +7 -0
- data/db/migrate/20241022002600_create_private_exports.rb +18 -0
- data/db/migrate/20241028114430_add_component_counter_to_taxonomy_filters.rb +7 -0
- data/db/migrate/20241111104357_add_names_and_space_boolean_to_taxonomy_filters.rb +9 -0
- data/db/migrate/20241127093708_add_taxonomy_to_metrics.rb +7 -0
- data/db/migrate/20241204121445_add_participatory_space_manifests_from_taxonomy_filters.rb +9 -0
- data/decidim-core.gemspec +14 -17
- data/lib/decidim/action_authorization.rb +3 -2
- data/lib/decidim/amendable.rb +1 -1
- data/lib/decidim/api/input_filters/category_input_filter.rb +5 -3
- data/lib/decidim/api/input_filters/component_input_filter.rb +33 -20
- data/lib/decidim/api/input_filters/user_entity_input_filter.rb +53 -44
- data/lib/decidim/api/input_sorts/component_input_sort.rb +15 -13
- data/lib/decidim/api/input_sorts/user_entity_input_sort.rb +4 -4
- data/lib/decidim/api/interfaces/author_interface.rb +3 -2
- data/lib/decidim/api/interfaces/coauthorable_interface.rb +5 -5
- data/lib/decidim/api/interfaces/endorsable_interface.rb +2 -2
- data/lib/decidim/api/interfaces/participatory_space_interface.rb +5 -10
- data/lib/decidim/api/interfaces/taxonomizable_interface.rb +13 -0
- data/lib/decidim/api/types/amendment_type.rb +5 -7
- data/lib/decidim/api/types/area_api_type.rb +3 -3
- data/lib/decidim/api/types/attachment_type.rb +3 -3
- data/lib/decidim/api/types/category_type.rb +2 -2
- data/lib/decidim/api/types/decidim_type.rb +5 -1
- data/lib/decidim/api/types/fingerprint_type.rb +1 -1
- data/lib/decidim/api/types/localized_string_type.rb +1 -1
- data/lib/decidim/api/types/metric_history_type.rb +2 -0
- data/lib/decidim/api/types/metric_type.rb +1 -1
- data/lib/decidim/api/types/organization_type.rb +5 -0
- data/lib/decidim/api/types/participatory_space_link_type.rb +2 -2
- data/lib/decidim/api/types/participatory_space_manifest_type.rb +1 -1
- data/lib/decidim/api/types/quantifiable_translated_field_type.rb +1 -1
- data/lib/decidim/api/types/scope_api_type.rb +2 -3
- data/lib/decidim/api/types/session_type.rb +1 -2
- data/lib/decidim/api/types/taxonomy_type.rb +15 -0
- data/lib/decidim/api/types/trace_version_type.rb +2 -2
- data/lib/decidim/api/types/translated_field_type.rb +3 -5
- data/lib/decidim/api/types/user_group_type.rb +7 -20
- data/lib/decidim/api/types/user_type.rb +7 -20
- data/lib/decidim/asset_router/storage.rb +6 -11
- data/lib/decidim/assets/tailwind/tailwind.config.js.erb +2 -1
- data/lib/decidim/attachment_attributes.rb +1 -1
- data/lib/decidim/attribute_encryptor.rb +1 -1
- data/lib/decidim/attribute_object/nested_validator.rb +1 -1
- data/lib/decidim/attributes/integer_with_units.rb +27 -0
- data/lib/decidim/attributes/time_with_zone.rb +1 -5
- data/lib/decidim/attributes.rb +2 -0
- data/lib/decidim/authorization_form_builder.rb +0 -7
- data/lib/decidim/coauthorable.rb +1 -1
- data/lib/decidim/command.rb +3 -3
- data/lib/decidim/commands/destroy_resource.rb +5 -1
- data/lib/decidim/commands/resource_handler.rb +2 -2
- data/lib/decidim/commands/restore_resource.rb +45 -0
- data/lib/decidim/commands/soft_delete_resource.rb +63 -0
- data/lib/decidim/component_manifest.rb +7 -0
- data/lib/decidim/content_parsers/blob_parser.rb +8 -10
- data/lib/decidim/content_parsers/user_parser.rb +1 -1
- data/lib/decidim/core/api.rb +2 -0
- data/lib/decidim/core/engine.rb +21 -7
- data/lib/decidim/core/menu.rb +0 -5
- data/lib/decidim/core/seeds.rb +42 -2
- data/lib/decidim/core/test/factories.rb +105 -2
- data/lib/decidim/core/test/shared_examples/admin_resource_gallery_examples.rb +85 -0
- data/lib/decidim/core/test/shared_examples/comments_examples.rb +393 -38
- data/lib/decidim/core/test/shared_examples/components_controller_hide_shared_examples.rb +11 -0
- data/lib/decidim/core/test/shared_examples/components_controller_reorder_shared_examples.rb +21 -0
- data/lib/decidim/core/test/shared_examples/download_open_data_shared_context.rb +36 -0
- data/lib/decidim/core/test/shared_examples/download_open_data_shared_examples.rb +45 -0
- data/lib/decidim/core/test/shared_examples/download_your_data_shared_examples.rb +17 -0
- data/lib/decidim/core/test/shared_examples/etiquette_validator_examples.rb +25 -0
- data/lib/decidim/core/test/shared_examples/follows_examples.rb +43 -0
- data/lib/decidim/core/test/shared_examples/has_taxonomies.rb +94 -0
- data/lib/decidim/core/test/shared_examples/manage_share_tokens_examples.rb +237 -0
- data/lib/decidim/core/test/shared_examples/map_examples.rb +2 -0
- data/lib/decidim/core/test/shared_examples/open_data_exporter_examples.rb +102 -0
- data/lib/decidim/core/test/shared_examples/participatory_space_members_page_examples.rb +46 -0
- data/lib/decidim/core/test/shared_examples/participatory_space_search_examples.rb +98 -0
- data/lib/decidim/core/test/shared_examples/permissions.rb +7 -7
- data/lib/decidim/core/test/shared_examples/preview_with_share_token_examples.rb +94 -0
- data/lib/decidim/core/test/shared_examples/reports_examples.rb +15 -53
- data/lib/decidim/core/test/shared_examples/resource_endorsed_event_examples.rb +2 -2
- data/lib/decidim/core/test/shared_examples/resource_search_examples.rb +75 -69
- data/lib/decidim/core/test/shared_examples/searchable_resources_shared_context.rb +1 -1
- data/lib/decidim/core/test/shared_examples/simple_event.rb +33 -19
- data/lib/decidim/core/test/shared_examples/social_share_examples.rb +7 -14
- data/lib/decidim/core/test/shared_examples/softdeleteable_components_examples.rb +173 -0
- data/lib/decidim/core/test/shared_examples/system_endorse_resource_examples.rb +54 -8
- data/lib/decidim/core/test/shared_examples/taxonomizable_interface_examples.rb +20 -0
- data/lib/decidim/core/test/shared_examples/taxonomizable_resource_examples.rb +37 -0
- data/lib/decidim/core/test/shared_examples/taxonomy_settings.rb +49 -0
- data/lib/decidim/core/test/shared_examples/translated_event_examples.rb +1 -1
- data/lib/decidim/core/test/shared_examples/uncommentable_component_examples.rb +0 -26
- data/lib/decidim/core/test/shared_examples/versions_controller_examples.rb +2 -28
- data/lib/decidim/core/test/shared_examples/with_endorsable_permissions_examples.rb +1 -1
- data/lib/decidim/core/test.rb +9 -5
- data/lib/decidim/core/version.rb +1 -1
- data/lib/decidim/core.rb +58 -0
- data/lib/decidim/download_your_data_serializers/download_your_data_identity_serializer.rb +0 -4
- data/lib/decidim/download_your_data_serializers/download_your_data_participatory_space_private_user_serializer.rb +3 -1
- data/lib/decidim/download_your_data_serializers/download_your_data_report_serializer.rb +2 -1
- data/lib/decidim/download_your_data_serializers/download_your_data_user_serializer.rb +6 -7
- data/lib/decidim/download_your_data_serializers.rb +19 -0
- data/lib/decidim/exporters/csv.rb +6 -0
- data/lib/decidim/exporters/export_manifest.rb +14 -0
- data/lib/decidim/exporters/pdf.rb +26 -22
- data/lib/decidim/filter_form_builder.rb +12 -15
- data/lib/decidim/form_builder.rb +6 -129
- data/lib/decidim/has_category.rb +5 -1
- data/lib/decidim/has_private_users.rb +4 -0
- data/lib/decidim/has_taxonomy_settings.rb +47 -0
- data/lib/decidim/has_upload_validations.rb +1 -1
- data/lib/decidim/legacy_form_builder.rb +118 -0
- data/lib/decidim/maintenance/import_models/application_record.rb +93 -0
- data/lib/decidim/maintenance/import_models/area.rb +82 -0
- data/lib/decidim/maintenance/import_models/area_type.rb +12 -0
- data/lib/decidim/maintenance/import_models/assembly_type.rb +49 -0
- data/lib/decidim/maintenance/import_models/categorization.rb +14 -0
- data/lib/decidim/maintenance/import_models/category.rb +107 -0
- data/lib/decidim/maintenance/import_models/participatory_process_type.rb +21 -0
- data/lib/decidim/maintenance/import_models/scope.rb +163 -0
- data/lib/decidim/maintenance/import_models.rb +19 -0
- data/lib/decidim/maintenance/taxonomy_importer.rb +132 -0
- data/lib/decidim/maintenance/taxonomy_plan.rb +78 -0
- data/lib/decidim/maintenance.rb +12 -0
- data/lib/decidim/map/autocomplete.rb +52 -8
- data/lib/decidim/map/dynamic_map.rb +1 -1
- data/lib/decidim/map/provider/dynamic_map/here.rb +40 -1
- data/lib/decidim/map/provider/geocoding/here.rb +9 -3
- data/lib/decidim/map/provider/static_map/here.rb +0 -34
- data/lib/decidim/map.rb +3 -6
- data/lib/decidim/moderation_tools.rb +16 -19
- data/lib/decidim/newsletter_encryptor.rb +1 -1
- data/lib/decidim/nicknamizable.rb +9 -6
- data/lib/decidim/paddable.rb +1 -1
- data/lib/decidim/participable.rb +10 -10
- data/lib/decidim/participatory_space_user.rb +10 -0
- data/lib/decidim/private_download_helper.rb +15 -0
- data/lib/decidim/record_encryptor.rb +51 -46
- data/lib/decidim/reportable.rb +2 -6
- data/lib/decidim/resourceable.rb +16 -0
- data/lib/decidim/seeds.rb +18 -20
- data/lib/decidim/settings_manifest.rb +34 -1
- data/lib/decidim/soft_deletable.rb +17 -0
- data/lib/decidim/taxonomizable.rb +72 -0
- data/lib/decidim/translatable_attributes.rb +1 -5
- data/lib/decidim/view_model.rb +0 -1
- data/lib/tasks/decidim_download_your_data_tasks.rake +2 -4
- data/lib/tasks/decidim_procfile.rake +6 -0
- data/lib/tasks/decidim_tasks.rake +1 -0
- data/lib/tasks/decidim_taxonomies.rake +155 -0
- data/lib/tasks/upgrade/{decidim_fix_categorization.rake → clean.rake} +25 -18
- data/lib/tasks/upgrade/decidim_active_storage_migration_tasks.rake +1 -1
- data/lib/tasks/upgrade/decidim_fix_nickname_uniqueness.rake +20 -23
- data/lib/tasks/upgrade/migrations.rake +91 -0
- metadata +203 -112
- data/app/cells/decidim/amendable/amenders_list/show.erb +0 -0
- data/app/cells/decidim/content_blocks/base/content.erb +0 -0
- data/app/cells/decidim/endorsers_list/full_endorsers_list.erb +0 -3
- data/app/cells/decidim/endorsers_list_button/content.erb +0 -1
- data/app/cells/decidim/endorsers_list_button_cell.rb +0 -15
- data/app/cells/decidim/report_user_button/already_reported_modal.erb +0 -11
- data/app/cells/decidim/report_user_button/flag_modal.erb +0 -46
- data/app/cells/decidim/report_user_button/show.erb +0 -2
- data/app/cells/decidim/report_user_button_cell.rb +0 -59
- data/app/cells/decidim/scopes_picker/scope_picker_prompt.erb +0 -3
- data/app/cells/decidim/scopes_picker/scope_picker_values.erb +0 -5
- data/app/cells/decidim/scopes_picker/show.erb +0 -14
- data/app/cells/decidim/scopes_picker_cell.rb +0 -92
- data/app/commands/decidim/update_user_interests.rb +0 -41
- data/app/controllers/decidim/scopes_controller.rb +0 -84
- data/app/controllers/decidim/user_interests_controller.rb +0 -30
- data/app/forms/decidim/user_interest_scope_form.rb +0 -25
- data/app/forms/decidim/user_interests_form.rb +0 -17
- data/app/helpers/decidim/categories_helper.rb +0 -26
- data/app/helpers/decidim/scopes_helper.rb +0 -105
- data/app/jobs/decidim/hide_child_resources_job.rb +0 -24
- data/app/packs/images/decidim/vendor/leaflet/layers-2x.png +0 -0
- data/app/packs/images/decidim/vendor/leaflet/layers.png +0 -0
- data/app/packs/images/decidim/vendor/leaflet/marker-icon-2x.png +0 -0
- data/app/packs/images/decidim/vendor/leaflet/marker-icon.png +0 -0
- data/app/packs/images/decidim/vendor/leaflet/marker-shadow.png +0 -0
- data/app/packs/stylesheets/decidim/_hashtags.scss +0 -5
- data/app/packs/stylesheets/decidim/legacy/MarkerCluster.Default.scss +0 -67
- data/app/packs/stylesheets/decidim/legacy/MarkerCluster.scss +0 -18
- data/app/packs/stylesheets/decidim/legacy/leaflet.scss +0 -705
- data/app/validators/scope_belongs_to_component_validator.rb +0 -16
- data/app/views/decidim/account/_user_groups.html.erb +0 -0
- data/app/views/decidim/reported_mailer/hidden_automatically.html.erb +0 -25
- data/app/views/decidim/reported_mailer/hidden_manually.html.erb +0 -25
- data/app/views/decidim/scopes/_scopes_picker_input.html.erb +0 -19
- data/app/views/decidim/scopes/picker.html.erb +0 -53
- data/app/views/decidim/shared/_comments.html.erb +0 -0
- data/app/views/decidim/shared/_share_modal.html.erb +0 -26
- data/app/views/decidim/shared/_tags.html.erb +0 -1
- data/app/views/decidim/user_interests/_areas.html.erb +0 -14
- data/app/views/decidim/user_interests/_scopes.html.erb +0 -22
- data/app/views/decidim/user_interests/show.html.erb +0 -22
- data/config/initializers/foundation_rails_helper.rb +0 -4
- data/config/locales/ca-IT.yml +0 -2122
- data/lib/decidim/core/test/shared_examples/has_category.rb +0 -38
- data/lib/decidim/core/test/shared_examples/has_scope.rb +0 -11
- data/lib/decidim/core/test/shared_examples/manage_component_share_tokens.rb +0 -83
- data/lib/decidim/core/test/shared_examples/preview_component_with_share_token_examples.rb +0 -49
- data/lib/decidim/core/test/shared_examples/scope_helper_examples.rb +0 -93
- data/lib/decidim/seven_zip_wrapper.rb +0 -29
- data/lib/tasks/upgrade/clean_hidden_resources.rake +0 -33
@@ -0,0 +1,148 @@
|
|
1
|
+
import confirmAction from "src/decidim/confirm"
|
2
|
+
import { getMessages } from "src/decidim/i18n"
|
3
|
+
|
4
|
+
const { Rails } = window;
|
5
|
+
|
6
|
+
const createUnloadPreventer = () => {
|
7
|
+
const preventUnloadConditions = [];
|
8
|
+
|
9
|
+
const confirmMessage = getMessages("confirmUnload") || "Are you sure you want to leave this page?";
|
10
|
+
|
11
|
+
const canUnload = (event) => !preventUnloadConditions.some((condition) => condition(event));
|
12
|
+
|
13
|
+
// TLDR:
|
14
|
+
// The beforeunload event does not work during tests due to the deprecation of
|
15
|
+
// the unload event and ChromeDriver automatically accepting these dialogs.
|
16
|
+
// ---
|
17
|
+
//
|
18
|
+
// Even when there are custom listeners on links and forms, the beforeunload
|
19
|
+
// event is to ensure that the user does not accidentally reload the page or
|
20
|
+
// close the browser or the tab. Note that this does not work during the tests
|
21
|
+
// with ChromeDriver due to the deprecation of the unload event and
|
22
|
+
// ChromeDriver automatically accepting these dialogs. For the time being,
|
23
|
+
// this should work when a real user interacts with the browser along with the
|
24
|
+
// "Permissions-Policy" header set by the backend. For more information about
|
25
|
+
// the header, see Decidim::Headers::BrowserFeaturePermissions).
|
26
|
+
const unloadListener = (event) => {
|
27
|
+
if (canUnload(event)) {
|
28
|
+
return;
|
29
|
+
}
|
30
|
+
|
31
|
+
// According to:
|
32
|
+
// https://developer.mozilla.org/en-US/docs/Web/API/Window/beforeunload_event
|
33
|
+
//
|
34
|
+
// > [...] best practice is to trigger the dialog by invoking
|
35
|
+
// > preventDefault() on the event object, while also setting returnValue to
|
36
|
+
// > support legacy cases.
|
37
|
+
event.preventDefault();
|
38
|
+
event.returnValue = true;
|
39
|
+
};
|
40
|
+
|
41
|
+
// The beforeunload event listener has to be registered AFTER a user
|
42
|
+
// interaction which is why it is wrapped around the next click event that
|
43
|
+
// happens after the first unload listener was registered. Otherwise it might
|
44
|
+
// not work due to the deprecation of the unload APIs in Chromium based
|
45
|
+
// browsers and possibly in the web standards in the future.
|
46
|
+
//
|
47
|
+
// According to:
|
48
|
+
// https://developer.chrome.com/docs/web-platform/page-lifecycle-api#the_beforeunload_event
|
49
|
+
//
|
50
|
+
// > Never add a beforeunload listener unconditionally or use it as an
|
51
|
+
// > end-of-session signal. Only add it when a user has unsaved work, and
|
52
|
+
// > remove it as soon as that work has been saved.
|
53
|
+
const registerBeforeUnload = () => {
|
54
|
+
window.removeEventListener("click", registerBeforeUnload);
|
55
|
+
window.addEventListener("beforeunload", unloadListener);
|
56
|
+
};
|
57
|
+
|
58
|
+
const disableBeforeUnload = () => {
|
59
|
+
window.removeEventListener("click", registerBeforeUnload);
|
60
|
+
window.removeEventListener("beforeunload", unloadListener);
|
61
|
+
};
|
62
|
+
|
63
|
+
const linkClickListener = (ev) => {
|
64
|
+
const link = ev.target?.closest("a");
|
65
|
+
if (!link) {
|
66
|
+
return;
|
67
|
+
}
|
68
|
+
|
69
|
+
if (canUnload(ev)) {
|
70
|
+
disableBeforeUnload();
|
71
|
+
document.removeEventListener("click", linkClickListener);
|
72
|
+
return;
|
73
|
+
}
|
74
|
+
|
75
|
+
window.exitUrl = link.href;
|
76
|
+
|
77
|
+
ev.preventDefault();
|
78
|
+
ev.stopPropagation();
|
79
|
+
|
80
|
+
confirmAction(confirmMessage, link).then((answer) => {
|
81
|
+
if (!answer) {
|
82
|
+
return;
|
83
|
+
}
|
84
|
+
|
85
|
+
disableBeforeUnload();
|
86
|
+
document.removeEventListener("click", linkClickListener);
|
87
|
+
link.click();
|
88
|
+
});
|
89
|
+
};
|
90
|
+
|
91
|
+
const formSubmitListener = (ev) => {
|
92
|
+
const source = ev.target?.closest("form");
|
93
|
+
if (!source) {
|
94
|
+
return;
|
95
|
+
}
|
96
|
+
|
97
|
+
if (canUnload(ev)) {
|
98
|
+
disableBeforeUnload();
|
99
|
+
document.removeEventListener("submit", formSubmitListener);
|
100
|
+
return;
|
101
|
+
}
|
102
|
+
|
103
|
+
const button = source.closest(Rails.formSubmitSelector);
|
104
|
+
if (!button) {
|
105
|
+
return;
|
106
|
+
}
|
107
|
+
|
108
|
+
ev.preventDefault();
|
109
|
+
ev.stopImmediatePropagation();
|
110
|
+
ev.stopPropagation();
|
111
|
+
|
112
|
+
confirmAction(confirmMessage, button).then((answer) => {
|
113
|
+
if (!answer) {
|
114
|
+
return;
|
115
|
+
}
|
116
|
+
|
117
|
+
disableBeforeUnload();
|
118
|
+
document.removeEventListener("submit", formSubmitListener);
|
119
|
+
source.submit();
|
120
|
+
});
|
121
|
+
};
|
122
|
+
|
123
|
+
const registerPreventUnloadListeners = () => {
|
124
|
+
window.addEventListener("click", registerBeforeUnload);
|
125
|
+
document.addEventListener("click", linkClickListener);
|
126
|
+
document.addEventListener("submit", formSubmitListener);
|
127
|
+
};
|
128
|
+
|
129
|
+
return {
|
130
|
+
addPreventCondition: (condition) => {
|
131
|
+
if (typeof condition !== "function") {
|
132
|
+
return;
|
133
|
+
}
|
134
|
+
|
135
|
+
if (preventUnloadConditions.length < 1) {
|
136
|
+
// The unload listeners are global, so only the first call to this
|
137
|
+
// function should result to registering these listeners.
|
138
|
+
registerPreventUnloadListeners();
|
139
|
+
}
|
140
|
+
|
141
|
+
preventUnloadConditions.push(condition);
|
142
|
+
}
|
143
|
+
};
|
144
|
+
};
|
145
|
+
|
146
|
+
const unloadPreventer = createUnloadPreventer();
|
147
|
+
|
148
|
+
export const preventUnload = (condition) => unloadPreventer.addPreventCondition(condition);
|
@@ -0,0 +1,212 @@
|
|
1
|
+
/* eslint-disable */
|
2
|
+
|
3
|
+
// 🍂class TileLayer.HERE
|
4
|
+
// Tile layer for HERE maps tiles.
|
5
|
+
L.TileLayer.HERE = L.TileLayer.extend({
|
6
|
+
|
7
|
+
options: {
|
8
|
+
subdomains: '1234',
|
9
|
+
minZoom: 2,
|
10
|
+
maxZoom: 18,
|
11
|
+
|
12
|
+
// 🍂option scheme: String = 'normal.day'
|
13
|
+
// The "map scheme", as documented in the HERE API.
|
14
|
+
scheme: 'normal.day',
|
15
|
+
|
16
|
+
// 🍂option resource: String = 'maptile'
|
17
|
+
// The "map resource", as documented in the HERE API.
|
18
|
+
resource: 'maptile',
|
19
|
+
|
20
|
+
// 🍂option mapId: String = 'newest'
|
21
|
+
// Version of the map tiles to be used, or a hash of an unique map
|
22
|
+
mapId: 'newest',
|
23
|
+
|
24
|
+
// 🍂option format: String = 'png8'
|
25
|
+
// Image format to be used (`png8`, `png`, or `jpg`)
|
26
|
+
format: 'png8',
|
27
|
+
|
28
|
+
// 🍂option appId: String = ''
|
29
|
+
// Required option. The `app_id` provided as part of the HERE credentials
|
30
|
+
appId: '',
|
31
|
+
|
32
|
+
// 🍂option appCode: String = ''
|
33
|
+
// Required option. The `app_code` provided as part of the HERE credentials
|
34
|
+
appCode: '',
|
35
|
+
|
36
|
+
// 🍂option useCIT: boolean = false
|
37
|
+
// Whether to use the CIT when loading the here-maptiles
|
38
|
+
useCIT: false,
|
39
|
+
|
40
|
+
// 🍂option useHTTPS: boolean = true
|
41
|
+
// Whether to use HTTPS when loading the here-maptiles
|
42
|
+
useHTTPS: true,
|
43
|
+
|
44
|
+
// 🍂option language: String = ''
|
45
|
+
// The language of the descriptions on the maps that are loaded
|
46
|
+
language: '',
|
47
|
+
|
48
|
+
// 🍂option language: String = ''
|
49
|
+
// The second language of the descriptions on the maps that are loaded
|
50
|
+
language2: '',
|
51
|
+
},
|
52
|
+
|
53
|
+
|
54
|
+
initialize: function initialize(options) {
|
55
|
+
options = L.setOptions(this, options);
|
56
|
+
|
57
|
+
// Decide if this scheme uses the aerial servers or the basemap servers
|
58
|
+
var schemeStart = options.scheme.split('.')[0];
|
59
|
+
options.tileResolution = 256;
|
60
|
+
|
61
|
+
// {Base URL}{Path}/{resource (tile type)}/{map id}/{scheme}/{zoom}/{column}/{row}/{size}/{format}
|
62
|
+
// ?apiKey={YOUR_API_KEY}
|
63
|
+
// &{param}={value}
|
64
|
+
|
65
|
+
var params = [
|
66
|
+
'apiKey=' + encodeURIComponent(options.apiKey)
|
67
|
+
];
|
68
|
+
// Fallback to old app_id,app_code if no apiKey passed
|
69
|
+
if(!options.apiKey) {
|
70
|
+
params = [
|
71
|
+
'app_id=' + encodeURIComponent(options.appId),
|
72
|
+
'app_code=' + encodeURIComponent(options.appCode),
|
73
|
+
];
|
74
|
+
}
|
75
|
+
if(options.language) {
|
76
|
+
params.push('lg=' + encodeURIComponent(options.language));
|
77
|
+
}
|
78
|
+
if(options.language2) {
|
79
|
+
params.push('lg2=' + encodeURIComponent(options.language2));
|
80
|
+
}
|
81
|
+
var urlQuery = '?' + params.join('&');
|
82
|
+
|
83
|
+
var path = '/maptile/2.1/{resource}/{mapId}/{scheme}/{z}/{x}/{y}/{tileResolution}/{format}' + urlQuery;
|
84
|
+
var attributionPath = '/maptile/2.1/copyright/{mapId}?apiKey={apiKey}';
|
85
|
+
|
86
|
+
var baseUrl = 'maps.ls.hereapi.com';
|
87
|
+
|
88
|
+
// Old style with apiId/apiCode for compatibility
|
89
|
+
if(!options.apiKey) {
|
90
|
+
// make sure the CIT-url can be used
|
91
|
+
baseUrl = 'maps' + (options.useCIT ? '.cit' : '') + '.api.here.com';
|
92
|
+
attributionPath = '/maptile/2.1/copyright/{mapId}?app_id={appId}&app_code={appCode}';
|
93
|
+
}
|
94
|
+
|
95
|
+
var tileServer = 'base.' + baseUrl;
|
96
|
+
if (schemeStart == 'satellite' || schemeStart == 'terrain' || schemeStart == 'hybrid') {
|
97
|
+
tileServer = 'aerial.' + baseUrl;
|
98
|
+
}
|
99
|
+
if (options.scheme.indexOf('.traffic.') !== -1) {
|
100
|
+
tileServer = 'traffic' + baseUrl;
|
101
|
+
}
|
102
|
+
|
103
|
+
var protocol = 'http' + (options.useHTTPS ? 's' : '');
|
104
|
+
var tileUrl = protocol + '://{s}.' + tileServer + path;
|
105
|
+
|
106
|
+
this._attributionUrl = L.Util.template(protocol + '://1.' + tileServer + attributionPath, this.options);
|
107
|
+
|
108
|
+
L.TileLayer.prototype.initialize.call(this, tileUrl, options);
|
109
|
+
|
110
|
+
this._attributionText = '';
|
111
|
+
|
112
|
+
},
|
113
|
+
|
114
|
+
onAdd: function onAdd(map) {
|
115
|
+
L.TileLayer.prototype.onAdd.call(this, map);
|
116
|
+
|
117
|
+
if (!this._attributionBBoxes) {
|
118
|
+
this._fetchAttributionBBoxes();
|
119
|
+
}
|
120
|
+
},
|
121
|
+
|
122
|
+
onRemove: function onRemove(map) {
|
123
|
+
//
|
124
|
+
// Remove the attribution text, and clear the cached text so it will be recalculated
|
125
|
+
// if/when we are shown again.
|
126
|
+
//
|
127
|
+
this._map.attributionControl.removeAttribution(this._attributionText);
|
128
|
+
this._attributionText = '';
|
129
|
+
|
130
|
+
this._map.off('moveend zoomend resetview', this._findCopyrightBBox, this);
|
131
|
+
|
132
|
+
//
|
133
|
+
// Call the prototype last, once we have tidied up our own changes
|
134
|
+
//
|
135
|
+
L.TileLayer.prototype.onRemove.call(this, map);
|
136
|
+
},
|
137
|
+
|
138
|
+
_fetchAttributionBBoxes: function _onMapMove() {
|
139
|
+
var xmlhttp = new XMLHttpRequest();
|
140
|
+
xmlhttp.onreadystatechange = L.bind(function(){
|
141
|
+
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
|
142
|
+
this._parseAttributionBBoxes(JSON.parse(xmlhttp.responseText));
|
143
|
+
}
|
144
|
+
}, this);
|
145
|
+
xmlhttp.open("GET", this._attributionUrl, true);
|
146
|
+
xmlhttp.send();
|
147
|
+
},
|
148
|
+
|
149
|
+
_parseAttributionBBoxes: function _parseAttributionBBoxes(json) {
|
150
|
+
if (!this._map) { return; }
|
151
|
+
var providers = json[this.options.scheme.split('.')[0]] || json.normal;
|
152
|
+
for (var i=0; i<providers.length; i++) {
|
153
|
+
if (providers[i].boxes) {
|
154
|
+
for (var j=0; j<providers[i].boxes.length; j++) {
|
155
|
+
var box = providers[i].boxes[j];
|
156
|
+
providers[i].boxes[j] = L.latLngBounds( [ [box[0], box[1]], [box[2], box[3]] ]);
|
157
|
+
}
|
158
|
+
}
|
159
|
+
}
|
160
|
+
|
161
|
+
this._map.on('moveend zoomend resetview', this._findCopyrightBBox, this);
|
162
|
+
|
163
|
+
this._attributionProviders = providers;
|
164
|
+
|
165
|
+
this._findCopyrightBBox();
|
166
|
+
},
|
167
|
+
|
168
|
+
_findCopyrightBBox: function _findCopyrightBBox() {
|
169
|
+
if (!this._map) { return; }
|
170
|
+
var providers = this._attributionProviders;
|
171
|
+
var visibleProviders = [];
|
172
|
+
var zoom = this._map.getZoom();
|
173
|
+
var visibleBounds = this._map.getBounds();
|
174
|
+
|
175
|
+
for (var i=0; i<providers.length; i++) {
|
176
|
+
if (providers[i].minLevel <= zoom && providers[i].maxLevel >= zoom) {
|
177
|
+
|
178
|
+
if (!providers[i].boxes) {
|
179
|
+
// No boxes = attribution always visible
|
180
|
+
visibleProviders.push(providers[i]);
|
181
|
+
} else {
|
182
|
+
for (var j=0; j<providers[i].boxes.length; j++) {
|
183
|
+
var box = providers[i].boxes[j];
|
184
|
+
if (visibleBounds.intersects(box)) {
|
185
|
+
visibleProviders.push(providers[i]);
|
186
|
+
break;
|
187
|
+
}
|
188
|
+
}
|
189
|
+
}
|
190
|
+
}
|
191
|
+
}
|
192
|
+
|
193
|
+
var attributions = ['<a href="https://legal.here.com/en-gb/terms" target="_blank" rel="noopener noreferrer">HERE maps</a>'];
|
194
|
+
for (var i=0; i<visibleProviders.length; i++) {
|
195
|
+
var provider = visibleProviders[i];
|
196
|
+
attributions.push('<abbr title="' + provider.alt + '">' + provider.label + '</abbr>');
|
197
|
+
}
|
198
|
+
|
199
|
+
var attributionText = '© ' + attributions.join(', ') + '. ';
|
200
|
+
|
201
|
+
if (attributionText !== this._attributionText) {
|
202
|
+
this._map.attributionControl.removeAttribution(this._attributionText);
|
203
|
+
this._map.attributionControl.addAttribution(this._attributionText = attributionText);
|
204
|
+
}
|
205
|
+
},
|
206
|
+
|
207
|
+
});
|
208
|
+
|
209
|
+
|
210
|
+
L.tileLayer.here = function(opts){
|
211
|
+
return new L.TileLayer.HERE(opts);
|
212
|
+
}
|
@@ -11,3 +11,33 @@
|
|
11
11
|
[id*="comment"][class="comment-reply"][aria-hidden="false"] {
|
12
12
|
display: block;
|
13
13
|
}
|
14
|
+
|
15
|
+
.card-accordion {
|
16
|
+
@apply border-b border-gray-3 mt-6;
|
17
|
+
|
18
|
+
&-title {
|
19
|
+
@apply text-primary font-semibold text-xl inline-block;
|
20
|
+
}
|
21
|
+
|
22
|
+
&-divider-button {
|
23
|
+
@apply flex items-center justify-between items-end w-full;
|
24
|
+
|
25
|
+
svg {
|
26
|
+
@apply inline-block w-6 h-6 fill-primary;
|
27
|
+
}
|
28
|
+
|
29
|
+
&[aria-expanded="true"] {
|
30
|
+
svg {
|
31
|
+
@apply rotate-180 transition-transform;
|
32
|
+
}
|
33
|
+
}
|
34
|
+
}
|
35
|
+
|
36
|
+
&-section {
|
37
|
+
@apply pb-8;
|
38
|
+
|
39
|
+
ul {
|
40
|
+
@apply mb-0;
|
41
|
+
}
|
42
|
+
}
|
43
|
+
}
|
@@ -98,3 +98,22 @@
|
|
98
98
|
@apply rounded-full bg-secondary text-white inline-grid place-items-center h-[18px] w-[18px] ml-2 text-xs;
|
99
99
|
}
|
100
100
|
}
|
101
|
+
|
102
|
+
.layout-main__buttons {
|
103
|
+
.button {
|
104
|
+
&__sm {
|
105
|
+
@apply text-2xl [&:not([class*="button\\_\\_text"])]:px-1.5 [&:not([class*="button\\_\\_text"])]:py-1.5 gap-1.5
|
106
|
+
lg:text-sm lg:[&:not([class*="button\\_\\_text"])]:px-4;
|
107
|
+
|
108
|
+
span {
|
109
|
+
@apply hidden lg:flex;
|
110
|
+
}
|
111
|
+
}
|
112
|
+
|
113
|
+
&__transparent {
|
114
|
+
&-secondary {
|
115
|
+
@apply p-0 border-0 lg:border lg:border-secondary;
|
116
|
+
}
|
117
|
+
}
|
118
|
+
}
|
119
|
+
}
|
@@ -159,7 +159,7 @@
|
|
159
159
|
/* shared styles */
|
160
160
|
&__highlight-metadata,
|
161
161
|
&__grid-metadata {
|
162
|
-
@apply mt-auto flex items-center justify-between flex-wrap
|
162
|
+
@apply mt-auto flex items-center justify-between flex-wrap text-sm text-gray-2 [&>*]:flex [&>*]:items-center [&>*]:gap-1 first:[&>*]:flex-none;
|
163
163
|
|
164
164
|
svg {
|
165
165
|
@apply flex-none text-gray fill-current;
|
@@ -2,44 +2,50 @@
|
|
2
2
|
@apply space-y-3 opacity-0 -translate-y-full invisible transition-all absolute;
|
3
3
|
|
4
4
|
&__text {
|
5
|
-
@apply text-
|
5
|
+
@apply text-md text-gray-2 ml-4 leading-normal;
|
6
|
+
|
7
|
+
a {
|
8
|
+
@apply text-md;
|
9
|
+
}
|
6
10
|
}
|
7
11
|
|
8
12
|
&__grid {
|
9
13
|
@apply flex flex-wrap gap-y-3;
|
10
14
|
}
|
11
15
|
|
12
|
-
&__avatar
|
13
|
-
&__counter {
|
16
|
+
&__avatar {
|
14
17
|
@apply rounded-full overflow-hidden border border-white inline-grid w-6 h-6;
|
15
18
|
}
|
16
19
|
|
17
|
-
&__counter {
|
18
|
-
@apply bg-background place-items-center text-secondary text-xs font-semibold transition;
|
19
|
-
}
|
20
|
-
|
21
20
|
&__button {
|
22
21
|
@apply block ml-auto text-right text-xs text-secondary cursor-pointer;
|
23
22
|
}
|
24
23
|
|
25
|
-
&
|
26
|
-
@apply flex justify-start -space-x-4;
|
27
|
-
}
|
28
|
-
|
29
|
-
&__trigger:hover &__counter,
|
30
|
-
&__trigger[aria-expanded="true"] &__counter {
|
31
|
-
@apply text-white bg-secondary border-secondary;
|
32
|
-
}
|
33
|
-
|
34
|
-
&__trigger[data-target*="dropdown"] {
|
35
|
-
@apply p-0 w-auto;
|
24
|
+
&__container {
|
25
|
+
@apply w-full flex justify-start -space-x-4 p-0 gap-2;
|
36
26
|
|
37
27
|
> span {
|
38
28
|
@apply inline-grid;
|
39
29
|
}
|
40
30
|
}
|
41
31
|
|
42
|
-
&
|
43
|
-
|
32
|
+
&__modal {
|
33
|
+
.list-item__author {
|
34
|
+
@apply flex w-full justify-between;
|
35
|
+
|
36
|
+
.author__avatar-container {
|
37
|
+
@apply w-8 h-8;
|
38
|
+
}
|
39
|
+
|
40
|
+
.button {
|
41
|
+
@apply [&>svg]:hidden;
|
42
|
+
}
|
43
|
+
}
|
44
|
+
|
45
|
+
.list-item__author + .list-item__author {
|
46
|
+
--vertical-spacing: 1rem;
|
47
|
+
|
48
|
+
@apply mt-[var(--vertical-spacing)];
|
49
|
+
}
|
44
50
|
}
|
45
51
|
}
|
@@ -79,10 +79,10 @@
|
|
79
79
|
}
|
80
80
|
|
81
81
|
.form__wrapper {
|
82
|
-
@apply flex flex-col
|
82
|
+
@apply flex flex-col pt-10 pb-4 gap-10 last:pb-0;
|
83
83
|
|
84
84
|
&-block {
|
85
|
-
@apply py-10 last:pb-0 border-
|
85
|
+
@apply py-10 last:pb-0 border-background flex flex-col gap-4 [&_p]:text-gray-2;
|
86
86
|
}
|
87
87
|
|
88
88
|
&-checkbox-label {
|
@@ -167,7 +167,7 @@ header {
|
|
167
167
|
}
|
168
168
|
|
169
169
|
&__item {
|
170
|
-
@apply
|
170
|
+
@apply relative;
|
171
171
|
}
|
172
172
|
|
173
173
|
&__search {
|
@@ -334,6 +334,10 @@ header {
|
|
334
334
|
&__dropdown-trigger {
|
335
335
|
@apply flex items-center justify-between text-white;
|
336
336
|
|
337
|
+
span {
|
338
|
+
@apply flex flex-wrap md:flex-nowrap gap-x-2.5 overflow-hidden text-white;
|
339
|
+
}
|
340
|
+
|
337
341
|
svg {
|
338
342
|
@apply w-6 h-6 fill-current;
|
339
343
|
}
|
@@ -369,63 +373,15 @@ header {
|
|
369
373
|
@apply absolute top-full left-0 bg-white rounded w-full bg-gray-5;
|
370
374
|
}
|
371
375
|
|
372
|
-
&__dropdown-menu {
|
373
|
-
@apply w-full md:w-1/4 bg-primary px-4 md:px-8 pt-0 pb-3 md:py-3 divide-y divide-gray-3 text-white;
|
374
|
-
|
375
|
-
> * {
|
376
|
-
@apply py-3 md:py-3.5;
|
377
|
-
}
|
378
|
-
|
379
|
-
a {
|
380
|
-
@apply flex items-center justify-start gap-1 font-semibold text-lg text-white;
|
381
|
-
|
382
|
-
span {
|
383
|
-
@apply min-w-0 truncate;
|
384
|
-
}
|
385
|
-
|
386
|
-
svg {
|
387
|
-
@apply flex-none fill-current;
|
388
|
-
}
|
389
|
-
}
|
390
|
-
}
|
391
|
-
|
392
376
|
&__main-dropdown {
|
393
|
-
@apply bg-white
|
394
|
-
|
395
|
-
&__left {
|
396
|
-
@apply flex flex-col justify-between p-4 md:p-8 space-y-5 hidden md:block md:w-3/4;
|
397
|
-
|
398
|
-
&-top {
|
399
|
-
@apply border-b-4 border-gray-3 pb-3;
|
400
|
-
}
|
401
|
-
}
|
377
|
+
@apply bg-white divide-y divide-gray-3 rounded-b shadow-lg text-black w-full lg:w-[1280px] h-screen md:h-auto;
|
402
378
|
|
379
|
+
&__bottom,
|
403
380
|
&__top {
|
404
|
-
@apply
|
405
|
-
|
406
|
-
&-menu {
|
407
|
-
@apply w-full md:w-1/2 mt-0 grid md:grid-cols-2 gap-x-6 text-secondary;
|
408
|
-
|
409
|
-
> * {
|
410
|
-
@apply py-3 md:py-3.5 border-b last:border-0 border-gray-3;
|
411
|
-
|
412
|
-
/* since the grid has 2 columns, remove the border for these last 2 columns */
|
413
|
-
&:nth-last-child(-n + 2) {
|
414
|
-
@apply md:border-0;
|
415
|
-
}
|
416
|
-
}
|
381
|
+
@apply flex flex-col md:flex-row justify-between p-4 md:p-8 gap-x-8;
|
417
382
|
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
span {
|
422
|
-
@apply min-w-0 truncate;
|
423
|
-
}
|
424
|
-
|
425
|
-
svg {
|
426
|
-
@apply flex-none fill-current;
|
427
|
-
}
|
428
|
-
}
|
383
|
+
&-right {
|
384
|
+
@apply hidden md:block md:w-1/2;
|
429
385
|
}
|
430
386
|
}
|
431
387
|
|
@@ -440,6 +396,31 @@ header {
|
|
440
396
|
&__subtitle {
|
441
397
|
@apply hidden text-md md:flex md:text-lg text-gray-2 mt-5;
|
442
398
|
}
|
399
|
+
|
400
|
+
&__menu {
|
401
|
+
@apply w-full md:w-1/2 mt-0 grid md:grid-cols-2 gap-x-6 text-secondary;
|
402
|
+
|
403
|
+
> * {
|
404
|
+
@apply py-3 md:py-3.5 border-b last:border-0 border-gray-3;
|
405
|
+
|
406
|
+
/* since the grid has 2 columns, remove the border for these last 2 columns */
|
407
|
+
&:nth-last-child(-n + 2) {
|
408
|
+
@apply md:border-0;
|
409
|
+
}
|
410
|
+
}
|
411
|
+
|
412
|
+
a {
|
413
|
+
@apply flex items-center justify-start gap-1 font-semibold text-lg text-secondary;
|
414
|
+
|
415
|
+
span {
|
416
|
+
@apply min-w-0 truncate;
|
417
|
+
}
|
418
|
+
|
419
|
+
svg {
|
420
|
+
@apply flex-none fill-current;
|
421
|
+
}
|
422
|
+
}
|
423
|
+
}
|
443
424
|
}
|
444
425
|
|
445
426
|
&__secondary-dropdown {
|
@@ -453,12 +434,8 @@ header {
|
|
453
434
|
@apply h4 md:h3;
|
454
435
|
}
|
455
436
|
|
456
|
-
nav {
|
457
|
-
@apply w-full md:w-1/4;
|
458
|
-
}
|
459
|
-
|
460
437
|
&__menu {
|
461
|
-
@apply w-full bg-primary px-4 md:px-8 pt-0 pb-3 md:py-3 divide-y divide-gray-3 text-white;
|
438
|
+
@apply w-full md:w-1/4 bg-primary px-4 md:px-8 pt-0 pb-3 md:py-3 divide-y divide-gray-3 text-white;
|
462
439
|
|
463
440
|
> * {
|
464
441
|
@apply py-3 md:py-3.5;
|
@@ -478,7 +455,7 @@ header {
|
|
478
455
|
}
|
479
456
|
|
480
457
|
&__metadata {
|
481
|
-
@apply flex items-center text-sm space-x-6
|
458
|
+
@apply flex items-center text-sm space-x-6 py-8;
|
482
459
|
|
483
460
|
> span {
|
484
461
|
@apply flex items-center space-x-2;
|