decidim-core 0.21.0 → 0.22.0
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of decidim-core might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/app/assets/config/decidim_core_manifest.js +3 -0
- data/app/assets/fonts/decidim/Roboto-Regular.svg +1 -10520
- data/app/assets/fonts/decidim/Source_Sans_Pro_400.svg +1 -345
- data/app/assets/fonts/decidim/Source_Sans_Pro_600.svg +1 -339
- data/app/assets/fonts/decidim/Source_Sans_Pro_900.svg +1 -342
- data/app/assets/images/decidim/avatar-multiuser.png +0 -0
- data/app/assets/images/decidim/brands/google.svg +1 -1
- data/app/assets/images/decidim/decidim-logo.svg +1 -71
- data/app/assets/images/decidim/default-avatar.svg +1 -14
- data/app/assets/images/decidim/gamification/badges/followers.svg +1 -115
- data/app/assets/images/decidim/gamification/badges/invitations.svg +1 -117
- data/app/assets/images/decidim/icons.svg +1 -259
- data/app/assets/images/decidim/placeholder.jpg +0 -0
- data/app/assets/javascripts/decidim.js.es6 +23 -1
- data/app/assets/javascripts/decidim/ajax_modals.js.es6 +3 -0
- data/app/assets/javascripts/decidim/assets.js.erb +5 -0
- data/app/assets/javascripts/decidim/callout.js.es6 +18 -0
- data/app/assets/javascripts/decidim/configuration.js.es6 +23 -0
- data/app/assets/javascripts/decidim/confirm.js.es6 +178 -0
- data/app/assets/javascripts/decidim/conversations.js.es6 +17 -0
- data/app/assets/javascripts/decidim/core/bundle.js +1 -1
- data/app/assets/javascripts/decidim/core/bundle.js.map +1 -1
- data/app/assets/javascripts/decidim/core/extrapoly.js +6 -0
- data/app/assets/javascripts/decidim/data_picker.js.es6 +128 -50
- data/app/assets/javascripts/decidim/diff_mode_dropdown.js.es6 +5 -7
- data/app/assets/javascripts/decidim/dropdowns_menus.js.es6 +32 -0
- data/app/assets/javascripts/decidim/external_link.js.es6 +69 -0
- data/app/assets/javascripts/decidim/floating_help.js.es6 +7 -0
- data/app/assets/javascripts/decidim/form_filter.component.js.es6 +1 -1
- data/app/assets/javascripts/decidim/form_filter.component.test.js +4 -4
- data/app/assets/javascripts/decidim/form_validator.es6 +61 -0
- data/app/assets/javascripts/decidim/foundation.js.es6 +28 -28
- data/app/assets/javascripts/decidim/icon.js.es6 +42 -0
- data/app/assets/javascripts/decidim/identity_selector_dialog.js.es6 +61 -0
- data/app/assets/javascripts/decidim/input_character_counter.js.es6 +115 -0
- data/app/assets/javascripts/decidim/input_mentions.js.es6 +34 -9
- data/app/assets/javascripts/decidim/input_multiple_mentions.js.es6 +195 -0
- data/app/assets/javascripts/decidim/map.js.es6 +40 -3
- data/app/assets/javascripts/decidim/orders.js.es6 +9 -28
- data/app/assets/javascripts/decidim/responsive_horizontal_tabs.js.es6 +12 -0
- data/app/assets/javascripts/decidim/results_listing.js.es6 +44 -0
- data/app/assets/javascripts/decidim/start_conversation_dialog.js +13 -0
- data/app/assets/javascripts/decidim/vizzs.js.es6 +1 -0
- data/app/assets/stylesheets/decidim/_decidim-settings.scss +5 -0
- data/app/assets/stylesheets/decidim/_decidim.scss +13 -11
- data/app/assets/stylesheets/decidim/_properties.scss +25 -0
- data/app/assets/stylesheets/decidim/_variables.scss +6 -24
- data/app/assets/stylesheets/decidim/application.scss.erb +2 -2
- data/app/assets/stylesheets/decidim/editor.scss +2 -2
- data/app/assets/stylesheets/decidim/email.scss +1771 -0
- data/app/assets/stylesheets/decidim/extras/_external-links.scss +29 -0
- data/app/assets/stylesheets/decidim/extras/_extras.scss +17 -0
- data/app/assets/stylesheets/decidim/extras/_label-required.scss +9 -0
- data/app/assets/stylesheets/decidim/extras/_process_stats.scss +1 -1
- data/app/assets/stylesheets/decidim/extras/_quill.scss +5 -0
- data/app/assets/stylesheets/decidim/extras/_results-per-page.scss +8 -0
- data/app/assets/stylesheets/decidim/layouts/_home.scss +31 -7
- data/app/assets/stylesheets/decidim/layouts/_layouts.scss +5 -0
- data/app/assets/stylesheets/decidim/layouts/_logo.scss +26 -0
- data/app/assets/stylesheets/decidim/layouts/_user.scss +4 -0
- data/app/assets/stylesheets/decidim/modules/_author-avatar.scss +9 -13
- data/app/assets/stylesheets/decidim/modules/_buttons.scss +198 -26
- data/app/assets/stylesheets/decidim/modules/_cards.scss +174 -23
- data/app/assets/stylesheets/decidim/modules/_collapsible-list.scss +21 -0
- data/app/assets/stylesheets/decidim/modules/_comments.scss +25 -1
- data/app/assets/stylesheets/decidim/modules/_conference-programme.scss +0 -1
- data/app/assets/stylesheets/decidim/modules/_confirm.scss +5 -0
- data/app/assets/stylesheets/decidim/modules/_conversation.scss +50 -0
- data/app/assets/stylesheets/decidim/modules/_data-picker.scss +9 -11
- data/app/assets/stylesheets/decidim/modules/_definition-data.scss +6 -1
- data/app/assets/stylesheets/decidim/modules/_docs-manager.scss +0 -1
- data/app/assets/stylesheets/decidim/modules/_extra.scss +0 -2
- data/app/assets/stylesheets/decidim/modules/_filters.scss +25 -1
- data/app/assets/stylesheets/decidim/modules/_floating-helper.scss +20 -8
- data/app/assets/stylesheets/decidim/modules/_footer.scss +8 -4
- data/app/assets/stylesheets/decidim/modules/_forms.scss +63 -4
- data/app/assets/stylesheets/decidim/modules/_horizontal-tabs.scss +64 -1
- data/app/assets/stylesheets/decidim/modules/_inline-filters.scss +6 -3
- data/app/assets/stylesheets/decidim/modules/_input-gallery.scss +10 -0
- data/app/assets/stylesheets/decidim/modules/_input-mentions.scss +25 -7
- data/app/assets/stylesheets/decidim/modules/_input-multiple-mentions.scss +5 -0
- data/app/assets/stylesheets/decidim/modules/_map.scss +11 -0
- data/app/assets/stylesheets/decidim/modules/_margins.scss +8 -7
- data/app/assets/stylesheets/decidim/modules/_messages.scss +18 -18
- data/app/assets/stylesheets/decidim/modules/_modules.scss +75 -72
- data/app/assets/stylesheets/decidim/modules/_navbar.scss +176 -26
- data/app/assets/stylesheets/decidim/modules/_notification.scss +5 -0
- data/app/assets/stylesheets/decidim/modules/_order-by.scss +5 -0
- data/app/assets/stylesheets/decidim/modules/_process-nav.scss +5 -2
- data/app/assets/stylesheets/decidim/modules/_process-phase.scss +2 -4
- data/app/assets/stylesheets/decidim/modules/_process-stats.scss +2 -2
- data/app/assets/stylesheets/decidim/modules/_progress-bar.scss +1 -1
- data/app/assets/stylesheets/decidim/modules/_reveal.scss +6 -0
- data/app/assets/stylesheets/decidim/modules/_signup.scss +6 -5
- data/app/assets/stylesheets/decidim/modules/_static-pages.scss +0 -1
- data/app/assets/stylesheets/decidim/modules/_sticky.scss +5 -0
- data/app/assets/stylesheets/decidim/modules/_tags.scss +4 -0
- data/app/assets/stylesheets/decidim/modules/_timeline.scss +1 -2
- data/app/assets/stylesheets/decidim/modules/_typography.scss +47 -8
- data/app/assets/stylesheets/decidim/modules/_versions.scss +0 -1
- data/app/assets/stylesheets/decidim/utils/_helpers.scss +8 -0
- data/app/assets/stylesheets/decidim/utils/_mixins.scss +86 -7
- data/app/assets/stylesheets/decidim/utils/_settings.scss +81 -69
- data/app/assets/stylesheets/decidim/vizzs.scss +8 -0
- data/app/assets/stylesheets/decidim/vizzs/_areachart.scss +0 -1
- data/app/assets/stylesheets/decidim/vizzs/_linechart.scss +0 -1
- data/app/assets/stylesheets/decidim/vizzs/_rowchart.scss +0 -1
- data/app/assets/stylesheets/decidim/vizzs/_vizzs.scss +5 -0
- data/app/assets/stylesheets/foundation-overrides/components/_button-group.scss +319 -0
- data/app/cells/decidim/activity/show.erb +24 -21
- data/app/cells/decidim/activity_cell.rb +2 -0
- data/app/cells/decidim/address_cell.rb +1 -1
- data/app/cells/decidim/amendable/amend_button_card_cell.rb +1 -5
- data/app/cells/decidim/amendable/promote_button_card_cell.rb +1 -1
- data/app/cells/decidim/announcement/show.erb +1 -1
- data/app/cells/decidim/author/comments.erb +1 -1
- data/app/cells/decidim/author/endorsements.erb +6 -0
- data/app/cells/decidim/author/flag.erb +5 -2
- data/app/cells/decidim/author/profile_inline.erb +0 -1
- data/app/cells/decidim/author/show.erb +2 -0
- data/app/cells/decidim/author/withdraw.erb +2 -2
- data/app/cells/decidim/author_cell.rb +9 -13
- data/app/cells/decidim/badge/show.erb +6 -6
- data/app/cells/decidim/badge/small.erb +2 -1
- data/app/cells/decidim/card/show.erb +4 -4
- data/app/cells/decidim/card_m/comments_counter.erb +1 -1
- data/app/cells/decidim/card_m/header.erb +4 -4
- data/app/cells/decidim/card_m/image.erb +1 -1
- data/app/cells/decidim/card_m/show.erb +2 -2
- data/app/cells/decidim/card_m_cell.rb +3 -2
- data/app/cells/decidim/collapsible_list/show.erb +3 -3
- data/app/cells/decidim/content_blocks/footer_sub_hero/show.erb +4 -4
- data/app/cells/decidim/content_blocks/hero_settings_form/show.erb +2 -2
- data/app/cells/decidim/content_blocks/how_to_participate/show.erb +8 -8
- data/app/cells/decidim/content_blocks/last_activity_cell.rb +1 -1
- data/app/cells/decidim/content_blocks/stats/show.erb +1 -1
- data/app/cells/decidim/content_blocks/sub_hero/show.erb +3 -3
- data/app/cells/decidim/diff/attribute.erb +10 -10
- data/app/cells/decidim/diff_cell.rb +11 -1
- data/app/cells/decidim/endorsement_buttons/select_identity_button.erb +10 -0
- data/app/cells/decidim/endorsement_buttons/show.erb +4 -0
- data/app/cells/decidim/endorsement_buttons_cell.rb +208 -0
- data/app/cells/decidim/endorsers_list/show.erb +16 -0
- data/app/cells/decidim/endorsers_list_cell.rb +29 -0
- data/app/cells/decidim/fingerprint_cell.rb +1 -0
- data/app/cells/decidim/follow_button/show.erb +13 -5
- data/app/cells/decidim/follow_button_cell.rb +29 -5
- data/app/cells/decidim/navbar_admin_link/show.erb +1 -1
- data/app/cells/decidim/navbar_admin_link_cell.rb +6 -0
- data/app/cells/decidim/newsletter_templates/base_cell.rb +30 -0
- data/app/cells/decidim/newsletter_templates/base_settings_form_cell.rb +13 -0
- data/app/cells/decidim/newsletter_templates/basic_only_text/show.erb +86 -0
- data/app/cells/decidim/newsletter_templates/basic_only_text_cell.rb +21 -0
- data/app/cells/decidim/newsletter_templates/basic_only_text_settings_form/show.erb +7 -0
- data/app/cells/decidim/newsletter_templates/basic_only_text_settings_form_cell.rb +8 -0
- data/app/cells/decidim/newsletter_templates/image_text_cta/show.erb +125 -0
- data/app/cells/decidim/newsletter_templates/image_text_cta_cell.rb +61 -0
- data/app/cells/decidim/newsletter_templates/image_text_cta_settings_form/show.erb +17 -0
- data/app/cells/decidim/newsletter_templates/image_text_cta_settings_form_cell.rb +8 -0
- data/app/cells/decidim/notifications/show.erb +1 -1
- data/app/cells/decidim/profile/show.erb +2 -2
- data/app/cells/decidim/profile/user_group_tabs.erb +10 -5
- data/app/cells/decidim/profile/user_tabs.erb +16 -14
- data/app/cells/decidim/profile_cell.rb +18 -0
- data/app/cells/decidim/profile_sidebar/show.erb +16 -16
- data/app/cells/decidim/profile_sidebar_cell.rb +1 -0
- data/app/cells/decidim/search_results_section/show.erb +1 -1
- data/app/cells/decidim/tags_cell.rb +32 -2
- data/app/cells/decidim/user_activity/show.erb +19 -1
- data/app/cells/decidim/user_activity_cell.rb +6 -0
- data/app/cells/decidim/user_conversation/conversation_header.erb +14 -0
- data/app/cells/decidim/user_conversation/messages.erb +15 -0
- data/app/cells/decidim/user_conversation/new.erb +15 -0
- data/app/cells/decidim/user_conversation/reply.erb +17 -0
- data/app/cells/decidim/user_conversation/show.erb +20 -0
- data/app/cells/decidim/user_conversation_cell.rb +75 -0
- data/app/cells/decidim/user_conversations/add_conversation_users.erb +25 -0
- data/app/cells/decidim/user_conversations/conversation_item.erb +38 -0
- data/app/cells/decidim/user_conversations/show.erb +58 -0
- data/app/cells/decidim/user_conversations_cell.rb +40 -0
- data/app/cells/decidim/user_group_admin_membership_profile/footer.erb +3 -3
- data/app/cells/decidim/user_profile/footer.erb +1 -1
- data/app/cells/decidim/user_profile/unlinked_user_data.erb +16 -0
- data/app/cells/decidim/user_profile/user_data.erb +1 -1
- data/app/cells/decidim/user_profile_cell.rb +7 -1
- data/app/cells/decidim/user_timeline_cell.rb +4 -0
- data/app/cells/decidim/version/show.erb +31 -0
- data/app/{views/decidim/shared/_version_author.html.erb → cells/decidim/version_author/show.erb} +1 -1
- data/app/cells/decidim/version_author_cell.rb +9 -0
- data/app/cells/decidim/version_cell.rb +83 -0
- data/app/cells/decidim/versions_list/show.erb +32 -0
- data/app/cells/decidim/versions_list_cell.rb +64 -0
- data/app/cells/decidim/versions_list_item/show.erb +20 -0
- data/app/cells/decidim/versions_list_item_cell.rb +51 -0
- data/app/cells/decidim/wizard_step_form/wizard_aside.erb +1 -1
- data/app/cells/decidim/wizard_step_form/wizard_header.erb +2 -2
- data/app/cells/decidim/wizard_step_form_cell.rb +4 -1
- data/app/commands/decidim/attachment_methods.rb +40 -0
- data/app/commands/decidim/create_registration.rb +2 -1
- data/app/commands/decidim/create_user_group.rb +12 -0
- data/app/commands/decidim/destroy_account.rb +12 -0
- data/app/commands/decidim/endorse_resource.rb +64 -0
- data/app/commands/decidim/gallery_methods.rb +64 -0
- data/app/commands/decidim/invite_user_again.rb +2 -4
- data/app/commands/decidim/messaging/reply_to_conversation.rb +34 -3
- data/app/commands/decidim/messaging/start_conversation.rb +36 -5
- data/app/commands/decidim/unendorse_resource.rb +38 -0
- data/app/commands/decidim/update_notifications_settings.rb +1 -0
- data/app/commands/decidim/update_user_group.rb +14 -1
- data/app/controllers/concerns/decidim/impersonate_users.rb +13 -0
- data/app/controllers/concerns/decidim/resource_versions_concern.rb +28 -0
- data/app/controllers/decidim/devise/registrations_controller.rb +2 -4
- data/app/controllers/decidim/devise/sessions_controller.rb +5 -0
- data/app/controllers/decidim/endorsements_controller.rb +71 -0
- data/app/controllers/decidim/messaging/conversations_controller.rb +52 -12
- data/app/controllers/decidim/newsletters_controller.rb +2 -2
- data/app/controllers/decidim/profiles_controller.rb +6 -0
- data/app/controllers/decidim/scopes_controller.rb +1 -0
- data/app/controllers/decidim/user_activities_controller.rb +19 -2
- data/app/controllers/decidim/user_conversations_controller.rb +142 -0
- data/app/controllers/decidim/user_timeline_controller.rb +19 -2
- data/app/events/decidim/resource_endorsed_event.rb +35 -0
- data/app/events/decidim/user_group_admin_event.rb +37 -0
- data/app/events/decidim/user_group_created_event.rb +6 -0
- data/app/events/decidim/user_group_updated_event.rb +6 -0
- data/app/forms/decidim/attachment_form.rb +1 -0
- data/app/forms/decidim/messaging/conversation_form.rb +10 -4
- data/app/forms/decidim/notifications_settings_form.rb +6 -0
- data/app/forms/decidim/registration_form.rb +1 -0
- data/app/functions/decidim/core/component_finder_base.rb +10 -3
- data/app/functions/decidim/core/component_list_base.rb +8 -2
- data/app/functions/decidim/core/user_entity_finder.rb +33 -0
- data/app/functions/decidim/core/user_entity_list.rb +31 -0
- data/app/helpers/concerns/decidim/flash_helper_extensions.rb +47 -0
- data/app/helpers/decidim/action_authorization_helper.rb +24 -2
- data/app/helpers/decidim/amendments_helper.rb +5 -3
- data/app/helpers/decidim/application_helper.rb +7 -1
- data/app/helpers/decidim/check_boxes_tree_helper.rb +4 -5
- data/app/helpers/decidim/cta_button_helper.rb +1 -1
- data/app/helpers/decidim/decidim_form_helper.rb +23 -0
- data/app/helpers/decidim/endorsable_helper.rb +93 -0
- data/app/helpers/decidim/filters_helper.rb +15 -5
- data/app/helpers/decidim/followable_helper.rb +11 -0
- data/app/helpers/decidim/layout_helper.rb +23 -5
- data/app/helpers/decidim/map_helper.rb +15 -2
- data/app/helpers/decidim/markup_helper.rb +9 -0
- data/app/helpers/decidim/messaging/conversation_helper.rb +61 -7
- data/app/helpers/decidim/orders_helper.rb +10 -1
- data/app/helpers/decidim/participatory_space_helpers.rb +1 -1
- data/app/helpers/decidim/resource_versions_helper.rb +24 -7
- data/app/helpers/decidim/rich_text_editor_helper.rb +1 -0
- data/app/helpers/decidim/sanitize_helper.rb +10 -2
- data/app/helpers/decidim/tooltip_helper.rb +1 -1
- data/app/helpers/decidim/traceability_helper.rb +2 -8
- data/app/helpers/decidim/user_profile_helper.rb +1 -1
- data/app/helpers/decidim/widget_urls_helper.rb +4 -2
- data/app/jobs/decidim/event_publisher_job.rb +1 -1
- data/app/mailers/concerns/decidim/multitenant_asset_host.rb +33 -0
- data/app/mailers/decidim/application_mailer.rb +1 -0
- data/app/mailers/decidim/messaging/conversation_mailer.rb +53 -4
- data/app/mailers/decidim/newsletter_mailer.rb +22 -4
- data/app/middleware/decidim/strip_x_forwarded_host.rb +14 -0
- data/app/models/decidim/action_log.rb +1 -1
- data/app/models/decidim/amendment.rb +0 -18
- data/app/models/decidim/authorization.rb +24 -0
- data/app/models/decidim/component.rb +7 -0
- data/app/models/decidim/content_block.rb +5 -3
- data/app/models/decidim/endorsement.rb +30 -0
- data/app/models/decidim/messaging/conversation.rb +39 -11
- data/app/models/decidim/messaging/message.rb +31 -5
- data/app/models/decidim/messaging/participation.rb +1 -1
- data/app/models/decidim/messaging/receipt.rb +8 -0
- data/app/models/decidim/newsletter.rb +7 -1
- data/app/models/decidim/organization.rb +16 -7
- data/app/models/decidim/user.rb +32 -0
- data/app/models/decidim/user_group.rb +23 -0
- data/app/permissions/decidim/permissions.rb +19 -6
- data/app/presenters/decidim/admin_log/user_presenter.rb +1 -1
- data/app/presenters/decidim/metric_charts_presenter.rb +33 -13
- data/app/presenters/decidim/nil_presenter.rb +29 -0
- data/app/presenters/decidim/resource_locator_presenter.rb +2 -1
- data/app/presenters/decidim/user_group_presenter.rb +1 -1
- data/app/presenters/decidim/user_presenter.rb +6 -0
- data/app/queries/decidim/metric_manage.rb +5 -0
- data/app/queries/decidim/metrics/followers_metric_manage.rb +1 -6
- data/app/queries/decidim/user_groups/admin_memberships.rb +3 -3
- data/app/services/decidim/activity_search.rb +1 -0
- data/app/services/decidim/base_diff_renderer.rb +25 -3
- data/app/services/decidim/events_manager.rb +4 -1
- data/app/types/decidim/core/decidim_type.rb +0 -4
- data/app/types/decidim/core/has_endorsable_input_sort.rb +17 -0
- data/app/types/decidim/core/has_timestamp_input_filter.rb +52 -0
- data/app/types/decidim/core/has_timestamp_input_sort.rb +12 -0
- data/app/types/decidim/core/user_entity_input_filter.rb +81 -0
- data/app/types/decidim/core/user_entity_input_sort.rb +24 -0
- data/app/types/decidim/core/user_group_type.rb +17 -5
- data/app/types/decidim/core/user_type.rb +17 -6
- data/app/uploaders/decidim/attachment_uploader.rb +1 -1
- data/app/uploaders/decidim/avatar_uploader.rb +4 -0
- data/app/uploaders/decidim/image_uploader.rb +28 -4
- data/app/uploaders/decidim/newsletter_template_image_uploader.rb +36 -0
- data/app/views/decidim/account/delete.html.erb +6 -3
- data/app/views/decidim/account/show.html.erb +17 -10
- data/app/views/decidim/amendments/_edit_form_fields.html.erb +2 -0
- data/app/views/decidim/amendments/_similar_emendation.html.erb +4 -4
- data/app/views/decidim/amendments/compare_draft.html.erb +2 -2
- data/app/views/decidim/amendments/edit_draft.html.erb +2 -2
- data/app/views/decidim/amendments/new.html.erb +2 -2
- data/app/views/decidim/amendments/preview_draft.html.erb +2 -2
- data/app/views/decidim/amendments/review.html.erb +3 -3
- data/app/views/decidim/application/_collection.html.erb +2 -2
- data/app/views/decidim/application/_document.html.erb +4 -4
- data/app/views/decidim/application/_documents.html.erb +1 -1
- data/app/views/decidim/application/_photos.html.erb +1 -1
- data/app/views/decidim/authorization_modals/show.html.erb +1 -1
- data/app/views/decidim/data_portability/show.html.erb +3 -0
- data/app/views/decidim/devise/confirmations/new.html.erb +3 -3
- data/app/views/decidim/devise/invitations/edit.html.erb +13 -13
- data/app/views/decidim/devise/omniauth_registrations/new.html.erb +5 -3
- data/app/views/decidim/devise/passwords/edit.html.erb +5 -3
- data/app/views/decidim/devise/passwords/new.html.erb +3 -3
- data/app/views/decidim/devise/registrations/edit.html.erb +2 -1
- data/app/views/decidim/devise/registrations/new.html.erb +7 -8
- data/app/views/decidim/devise/sessions/new.html.erb +4 -6
- data/app/views/decidim/devise/shared/_newsletter_modal.html.erb +3 -3
- data/app/views/decidim/devise/shared/_omniauth_buttons.html.erb +3 -1
- data/app/views/decidim/devise/shared/_omniauth_buttons_mini.html.erb +4 -1
- data/app/views/decidim/devise/unlocks/new.html.erb +3 -3
- data/app/views/decidim/doorkeeper/authorizations/new.html.erb +2 -2
- data/app/views/decidim/endorsements/_identity.html.erb +9 -0
- data/app/views/decidim/endorsements/identities.html.erb +12 -0
- data/app/views/decidim/endorsements/update_buttons_and_counters.js.erb +20 -0
- data/app/views/decidim/errors/internal_server_error.html.erb +2 -2
- data/app/views/decidim/errors/not_found.html.erb +2 -2
- data/app/views/decidim/gamification/badges/index.html.erb +4 -4
- data/app/views/decidim/group_admins/index.html.erb +6 -4
- data/app/views/decidim/group_invites/index.html.erb +5 -2
- data/app/views/decidim/group_members/index.html.erb +6 -4
- data/app/views/decidim/groups/_form.html.erb +2 -0
- data/app/views/decidim/groups/edit.html.erb +4 -2
- data/app/views/decidim/groups/new.html.erb +2 -2
- data/app/views/decidim/last_activities/index.html.erb +2 -0
- data/app/views/decidim/messaging/conversation_mailer/comanagers_new_conversation.html.erb +17 -0
- data/app/views/decidim/messaging/conversation_mailer/comanagers_new_message.html.erb +17 -0
- data/app/views/decidim/messaging/conversation_mailer/new_conversation.html.erb +2 -2
- data/app/views/decidim/messaging/conversation_mailer/new_group_conversation.html.erb +17 -0
- data/app/views/decidim/messaging/conversation_mailer/new_group_message.html.erb +17 -0
- data/app/views/decidim/messaging/conversation_mailer/new_message.html.erb +2 -2
- data/app/views/decidim/messaging/conversations/_add_conversation_users.html.erb +24 -0
- data/app/views/decidim/messaging/conversations/_conversation.html.erb +54 -0
- data/app/views/decidim/messaging/conversations/_messages.html.erb +15 -0
- data/app/views/decidim/messaging/conversations/_new_conversation_button.html.erb +33 -0
- data/app/views/decidim/messaging/conversations/_reply.html.erb +3 -3
- data/app/views/decidim/messaging/conversations/_show.html.erb +34 -15
- data/app/views/decidim/messaging/conversations/_start.html.erb +7 -1
- data/app/views/decidim/messaging/conversations/create.js.erb +1 -1
- data/app/views/decidim/messaging/conversations/index.html.erb +34 -29
- data/app/views/decidim/messaging/conversations/new.html.erb +1 -1
- data/app/views/decidim/messaging/conversations/show.html.erb +8 -4
- data/app/views/decidim/messaging/conversations/update.js.erb +1 -1
- data/app/views/decidim/newsletter_mailer/newsletter.html.erb +2 -2
- data/app/views/decidim/newsletters/show.html.erb +8 -1
- data/app/views/decidim/notifications/index.html.erb +4 -2
- data/app/views/decidim/notifications_settings/show.html.erb +14 -1
- data/app/views/decidim/own_user_groups/index.html.erb +4 -0
- data/app/views/decidim/pages/_standalone.html.erb +1 -1
- data/app/views/decidim/pages/_tabbed.html.erb +5 -5
- data/app/views/decidim/pages/index.html.erb +22 -13
- data/app/views/decidim/profiles/_user_follow.erb +3 -3
- data/app/views/decidim/profiles/show.html.erb +2 -0
- data/app/views/decidim/scopes/_scopes_picker_input.html.erb +11 -4
- data/app/views/decidim/scopes/picker.html.erb +26 -16
- data/app/views/decidim/searches/_count.html.erb +14 -11
- data/app/views/decidim/searches/_filters.html.erb +2 -2
- data/app/views/decidim/searches/index.html.erb +5 -3
- data/app/views/decidim/shared/_check_boxes_tree.html.erb +5 -3
- data/app/views/decidim/shared/_confirm_modal.html.erb +18 -0
- data/app/views/decidim/shared/_embed_modal.html.erb +4 -1
- data/app/views/decidim/shared/_extended_navigation_bar.html.erb +2 -2
- data/app/views/decidim/shared/_filter_form_help.erb +8 -0
- data/app/views/decidim/shared/_floating_help.html.erb +7 -7
- data/app/views/decidim/shared/_login_modal.html.erb +4 -4
- data/app/views/decidim/shared/_orders.html.erb +16 -5
- data/app/views/decidim/shared/_results_per_page.html.erb +16 -6
- data/app/views/decidim/shared/_share_modal.html.erb +8 -4
- data/app/views/decidim/shared/_static_map.html.erb +1 -1
- data/app/views/decidim/shared/participatory_space_filters/_filters.html.erb +1 -1
- data/app/views/decidim/user_activities/index.html.erb +4 -0
- data/app/views/decidim/user_activities/index.js.erb +14 -0
- data/app/views/decidim/user_conversations/index.html.erb +4 -0
- data/app/views/decidim/user_conversations/show.html.erb +4 -0
- data/app/views/decidim/user_conversations/update.js.erb +8 -0
- data/app/views/decidim/user_interests/_scopes.html.erb +12 -10
- data/app/views/decidim/user_interests/show.html.erb +4 -1
- data/app/views/decidim/user_timeline/index.html.erb +5 -1
- data/app/views/decidim/user_timeline/index.js.erb +14 -0
- data/app/views/kaminari/decidim/_first_page.html.erb +5 -1
- data/app/views/kaminari/decidim/_last_page.html.erb +5 -1
- data/app/views/kaminari/decidim/_next_page.html.erb +6 -1
- data/app/views/kaminari/decidim/_page.html.erb +2 -2
- data/app/views/kaminari/decidim/_paginator.html.erb +16 -14
- data/app/views/kaminari/decidim/_prev_page.html.erb +6 -1
- data/app/views/layouts/decidim/_application.html.erb +4 -2
- data/app/views/layouts/decidim/_cookie_warning.html.erb +1 -1
- data/app/views/layouts/decidim/_edit_link.html.erb +0 -0
- data/app/views/layouts/decidim/_head.html.erb +2 -0
- data/app/views/layouts/decidim/_js_configuration.html.erb +28 -0
- data/app/views/layouts/decidim/_language_chooser.html.erb +10 -5
- data/app/views/layouts/decidim/_logo.html.erb +2 -22
- data/app/views/layouts/decidim/_mailer_logo.html.erb +2 -22
- data/app/views/layouts/decidim/_main_footer.html.erb +3 -1
- data/app/views/layouts/decidim/_mini_footer.html.erb +7 -7
- data/app/views/layouts/decidim/_omnipresent_banner.html.erb +1 -1
- data/app/views/layouts/decidim/_organization_colors.html.erb +4 -3
- data/app/views/layouts/decidim/_social_media_links.html.erb +15 -10
- data/app/views/layouts/decidim/_topbar_search.html.erb +12 -2
- data/app/views/layouts/decidim/_user_menu.html.erb +6 -6
- data/app/views/layouts/decidim/_wrapper.html.erb +21 -16
- data/app/views/layouts/decidim/newsletter_base.html.erb +46 -0
- data/app/views/layouts/decidim/user_profile.html.erb +8 -3
- data/app/views/layouts/decidim/widget.html.erb +1 -0
- data/config/initializers/devise.rb +11 -3
- data/config/initializers/invisible_captcha.rb +1 -0
- data/config/initializers/omniauth.rb +7 -1
- data/config/initializers/rack_attack.rb +25 -16
- data/config/locales/ar.yml +7 -5
- data/config/locales/bg-BG.yml +1512 -0
- data/config/locales/ca.yml +258 -6
- data/config/locales/cs.yml +297 -37
- data/config/locales/da-DK.yml +9 -0
- data/config/locales/de.yml +279 -5
- data/config/locales/el.yml +1443 -5
- data/config/locales/en.yml +263 -11
- data/config/locales/es-MX.yml +257 -5
- data/config/locales/es-PY.yml +257 -5
- data/config/locales/es.yml +257 -5
- data/config/locales/et-EE.yml +9 -0
- data/config/locales/eu.yml +7 -2
- data/config/locales/fi-plain.yml +258 -6
- data/config/locales/fi.yml +319 -67
- data/config/locales/fr-CA.yml +1585 -0
- data/config/locales/fr.yml +263 -5
- data/config/locales/ga-IE.yml +9 -0
- data/config/locales/gl.yml +7 -2
- data/config/locales/hr-HR.yml +9 -0
- data/config/locales/hu.yml +87 -5
- data/config/locales/id-ID.yml +7 -2
- data/config/locales/is-IS.yml +1 -0
- data/config/locales/it.yml +279 -27
- data/config/locales/ja-JP.yml +1578 -0
- data/config/locales/lt-LT.yml +9 -0
- data/config/locales/lv-LV.yml +1485 -0
- data/config/locales/mt-MT.yml +9 -0
- data/config/locales/nl.yml +261 -6
- data/config/locales/no.yml +117 -41
- data/config/locales/pl.yml +755 -406
- data/config/locales/pt-BR.yml +8 -4
- data/config/locales/pt.yml +875 -536
- data/config/locales/ro-RO.yml +1603 -0
- data/config/locales/ru.yml +6 -1
- data/config/locales/sk-SK.yml +1426 -0
- data/config/locales/sk.yml +1441 -0
- data/config/locales/sl.yml +71 -0
- data/config/locales/sr-CS.yml +129 -0
- data/config/locales/sv.yml +323 -24
- data/config/locales/tr-TR.yml +7 -2
- data/config/locales/uk.yml +6 -1
- data/config/routes.rb +5 -0
- data/db/migrate/20180810092428_move_organization_fields_to_hero_content_block.rb +2 -2
- data/db/migrate/20191130151925_create_decidim_endorsements.rb +13 -0
- data/db/migrate/20191204075509_add_session_token_to_users.rb +7 -0
- data/db/migrate/20200211173227_add_direct_message_types_to_users.rb +12 -0
- data/db/migrate/20200320105904_index_foreign_keys_in_decidim_action_logs.rb +9 -0
- data/db/migrate/20200320105905_index_foreign_keys_in_decidim_amendments.rb +7 -0
- data/db/migrate/20200320105909_index_foreign_keys_in_decidim_authorizations.rb +7 -0
- data/db/migrate/20200320105917_index_foreign_keys_in_decidim_contextual_help_sections.rb +7 -0
- data/db/migrate/20200320105919_index_foreign_keys_in_decidim_endorsements.rb +7 -0
- data/db/migrate/20200320105923_index_foreign_keys_in_decidim_notifications.rb +7 -0
- data/db/migrate/20200320105927_index_foreign_keys_in_oauth_access_grants.rb +7 -0
- data/db/migrate/20200323094443_add_id_to_content_blocks_scope.rb +7 -0
- data/db/migrate/20200326102407_rename_scope_column.rb +7 -0
- data/db/migrate/20200327082257_migrate_newsletters_to_templates.rb +33 -0
- data/db/migrate/20200327082954_remove_newsletter_body.rb +7 -0
- data/db/migrate/20200401073419_add_index_on_content_block_scope_id.rb +11 -0
- data/db/seeds.rb +1 -1
- data/{app/controllers/concerns → lib}/decidim/action_authorization.rb +0 -0
- data/lib/decidim/api/author_interface.rb +4 -0
- data/lib/decidim/api/endorsable_interface.rb +22 -0
- data/lib/decidim/api/participatory_space_interface.rb +2 -0
- data/lib/decidim/api/timestamps_interface.rb +2 -2
- data/lib/decidim/coauthorable.rb +1 -1
- data/lib/decidim/component_manifest.rb +14 -0
- data/lib/decidim/content_parsers.rb +1 -0
- data/lib/decidim/content_parsers/user_group_parser.rb +61 -0
- data/lib/decidim/content_parsers/user_parser.rb +3 -5
- data/lib/decidim/content_renderers.rb +1 -0
- data/lib/decidim/content_renderers/user_group_renderer.rb +30 -0
- data/lib/decidim/core.rb +65 -21
- data/lib/decidim/core/api.rb +1 -0
- data/lib/decidim/core/engine.rb +88 -6
- data/lib/decidim/core/test.rb +8 -0
- data/lib/decidim/core/test/factories.rb +103 -3
- data/lib/decidim/core/test/shared_examples/admin_resource_gallery_examples.rb +79 -0
- data/lib/decidim/core/test/shared_examples/back_to_list_button_examples.rb +17 -0
- data/lib/decidim/core/test/shared_examples/comments_examples.rb +17 -2
- data/lib/decidim/core/test/shared_examples/edit_link_shared_examples.rb +5 -1
- data/lib/decidim/core/test/shared_examples/endorsable_interface_examples.rb +22 -0
- data/lib/decidim/core/test/shared_examples/endorsements_controller_shared_context.rb +22 -0
- data/lib/decidim/core/test/shared_examples/follows_examples.rb +1 -1
- data/lib/decidim/core/test/shared_examples/input_sort_examples.rb +21 -0
- data/lib/decidim/core/test/shared_examples/logo_email.rb +20 -0
- data/lib/decidim/core/test/shared_examples/metric_manage_shared_context.rb +9 -0
- data/lib/decidim/core/test/shared_examples/permissions.rb +143 -0
- data/lib/decidim/core/test/shared_examples/reports_examples.rb +4 -4
- data/lib/decidim/core/test/shared_examples/rich_text_editor_examples.rb +3 -3
- data/lib/decidim/core/test/shared_examples/simple_event.rb +1 -0
- data/lib/decidim/core/test/shared_examples/system_endorse_resource_examples.rb +165 -0
- data/lib/decidim/core/test/shared_examples/traceable_interface_examples.rb +3 -3
- data/lib/decidim/core/test/shared_examples/with_endorsable_permissions_examples.rb +89 -0
- data/lib/decidim/core/version.rb +1 -1
- data/lib/decidim/endorsable.rb +25 -0
- data/lib/decidim/events.rb +1 -0
- data/lib/decidim/events/user_group_event.rb +45 -0
- data/lib/decidim/exporters/csv.rb +1 -1
- data/lib/decidim/filter_form_builder.rb +15 -6
- data/lib/decidim/form_builder.rb +209 -23
- data/lib/decidim/has_attachments.rb +1 -1
- data/lib/decidim/participable.rb +6 -0
- data/lib/decidim/participatory_space_manifest.rb +15 -0
- data/lib/decidim/query_extensions.rb +9 -15
- data/lib/decidim/settings_manifest.rb +15 -1
- data/lib/decidim/view_model.rb +4 -0
- data/lib/tasks/decidim_tasks.rake +1 -0
- data/vendor/assets/javascripts/datepicker-locales/foundation-datepicker.ro.js +15 -0
- data/vendor/assets/javascripts/datepicker-locales/foundation-datepicker.sk.js +14 -0
- data/vendor/assets/javascripts/svg4everybody.min.js +1 -2
- data/vendor/assets/javascripts/tribute.js +11 -4
- metadata +187 -31
- data/app/assets/javascripts/decidim/vizzs/orgchart.js.es6 +0 -699
- data/app/assets/stylesheets/decidim/email.css +0 -1403
- data/app/assets/stylesheets/decidim/modules/_input-hashtags.scss +0 -124
- data/app/resolvers/decidim/core/user_resolver.rb +0 -61
- data/app/views/decidim/messaging/conversations/_message.html.erb +0 -14
@@ -23,10 +23,25 @@ $(() => {
|
|
23
23
|
}
|
24
24
|
});
|
25
25
|
|
26
|
+
// Returns a function, that, as long as it continues to be invoked, will not
|
27
|
+
// be triggered. The function will be called after it stops being called for
|
28
|
+
// N milliseconds
|
29
|
+
/* eslint no-invalid-this: 0 */
|
30
|
+
/* eslint consistent-this: 0 */
|
31
|
+
/* eslint prefer-reflect: 0 */
|
32
|
+
const debounce = function(callback, wait) {
|
33
|
+
let timeout = null;
|
34
|
+
return (...args) => {
|
35
|
+
const context = this;
|
36
|
+
clearTimeout(timeout);
|
37
|
+
timeout = setTimeout(() => callback.apply(context, args), wait);
|
38
|
+
};
|
39
|
+
}
|
40
|
+
|
26
41
|
/* eslint no-use-before-define: ["error", { "variables": false }]*/
|
27
42
|
let remoteSearch = function(text, cb) {
|
28
|
-
|
29
|
-
|
43
|
+
let query = `{users(filter:{wildcard:"${text}"}){nickname,name,avatarUrl,__typename,...on UserGroup{membersCount}}}`;
|
44
|
+
$.post("/api", {query: query}).
|
30
45
|
then((response) => {
|
31
46
|
let data = response.data.users || {};
|
32
47
|
cb(data)
|
@@ -49,13 +64,16 @@ $(() => {
|
|
49
64
|
/* global Tribute*/
|
50
65
|
let tribute = new Tribute({
|
51
66
|
trigger: "@",
|
52
|
-
|
67
|
+
// avoid overloading the API if the user types too fast
|
68
|
+
values: debounce(function (text, cb) {
|
53
69
|
remoteSearch(text, (users) => cb(users));
|
54
|
-
},
|
70
|
+
}, 250),
|
55
71
|
positionMenu: true,
|
56
72
|
menuContainer: null,
|
73
|
+
allowSpaces: true,
|
57
74
|
menuItemLimit: 5,
|
58
75
|
fillAttr: "nickname",
|
76
|
+
selectClass: "highlight",
|
59
77
|
noMatchTemplate: noMatchTemplate,
|
60
78
|
lookup: (item) => item.nickname + item.name,
|
61
79
|
selectTemplate: function(item) {
|
@@ -89,8 +107,17 @@ $(() => {
|
|
89
107
|
return item.original.nickname;
|
90
108
|
},
|
91
109
|
menuItemTemplate: function(item) {
|
92
|
-
let
|
93
|
-
|
110
|
+
let svg = "";
|
111
|
+
if (window.Decidim && item.original.__typename === "UserGroup") {
|
112
|
+
let icons = window.Decidim.assets["icons.svg"];
|
113
|
+
svg = `<span class="is-group">${item.original.membersCount}x <svg class="icon--members icon"><use xlink:href="${icons}#icon-members"/></svg></span>`;
|
114
|
+
}
|
115
|
+
return `<div class="tribute-item ${item.original.__typename}">
|
116
|
+
<span class="author__avatar"><img src="${item.original.avatarUrl}" alt="author-avatar"></span>
|
117
|
+
<strong>${item.original.nickname}</strong>
|
118
|
+
<small>${item.original.name}</small>
|
119
|
+
${svg}
|
120
|
+
</div>`;
|
94
121
|
}
|
95
122
|
});
|
96
123
|
|
@@ -114,15 +141,13 @@ $(() => {
|
|
114
141
|
// We need to move the container to the wrapper selected
|
115
142
|
let $tribute = $(".tribute-container");
|
116
143
|
$tribute.appendTo($parent);
|
117
|
-
|
118
|
-
$tribute.removeAttr("style");
|
144
|
+
|
119
145
|
// Parent adaptation
|
120
146
|
$parent.addClass("is-active");
|
121
147
|
} else {
|
122
148
|
$parent.removeClass("is-active");
|
123
149
|
}
|
124
150
|
});
|
125
|
-
|
126
151
|
};
|
127
152
|
|
128
153
|
setupEvents($mentionContainer);
|
@@ -0,0 +1,195 @@
|
|
1
|
+
// = require tribute
|
2
|
+
|
3
|
+
$(() => {
|
4
|
+
const $multipleMentionContainer = $(".js-multiple-mentions");
|
5
|
+
const $multipleMentionRecipientsContainer = $(".js-multiple-mentions-recipients");
|
6
|
+
const nodatafound = $multipleMentionContainer.attr("data-noresults");
|
7
|
+
const directMessageDisabled = $multipleMentionContainer.attr("data-direct-messages-disabled");
|
8
|
+
|
9
|
+
const maxRecipients = 9;
|
10
|
+
let mentionsCount = 0;
|
11
|
+
|
12
|
+
/* eslint no-unused-vars: 0 */
|
13
|
+
let deleteRecipient = function(element) {
|
14
|
+
// Remove recipient
|
15
|
+
element.remove();
|
16
|
+
mentionsCount -= 1;
|
17
|
+
// In case mentions container disable, enable again
|
18
|
+
if ($multipleMentionContainer.prop("disabled")) {
|
19
|
+
$multipleMentionContainer.prop("disabled", false);
|
20
|
+
}
|
21
|
+
};
|
22
|
+
|
23
|
+
let noMatchTemplate = null
|
24
|
+
if (nodatafound) {
|
25
|
+
noMatchTemplate = () => `<li>${nodatafound}</li>`;
|
26
|
+
}
|
27
|
+
|
28
|
+
// Returns a function, that, as long as it continues to be invoked, will not
|
29
|
+
// be triggered. The function will be called after it stops being called for
|
30
|
+
// N milliseconds
|
31
|
+
/* eslint no-invalid-this: 0 */
|
32
|
+
/* eslint consistent-this: 0 */
|
33
|
+
/* eslint prefer-reflect: 0 */
|
34
|
+
const debounce = function(callback, wait) {
|
35
|
+
let timeout = null;
|
36
|
+
return (...args) => {
|
37
|
+
const context = this;
|
38
|
+
clearTimeout(timeout);
|
39
|
+
timeout = setTimeout(() => callback.apply(context, args), wait);
|
40
|
+
};
|
41
|
+
}
|
42
|
+
|
43
|
+
/* eslint no-use-before-define: ["error", { "variables": false }]*/
|
44
|
+
/* eslint no-unused-expressions: 0 */
|
45
|
+
let remoteSearch = function(text, cb) {
|
46
|
+
let exclusionIds = [];
|
47
|
+
$multipleMentionRecipientsContainer.find("input[name^='recipient_id']").each(function(index) {
|
48
|
+
exclusionIds.push($(this).val());
|
49
|
+
});
|
50
|
+
let query = `{users(filter:{wildcard:"${text}",excludeIds:[${exclusionIds}]}){id,nickname,name,avatarUrl,__typename,...on UserGroup{membersCount},...on User{directMessagesEnabled}}}`;
|
51
|
+
$.post("/api", {query: query}).
|
52
|
+
then((response) => {
|
53
|
+
let data = response.data.users || {};
|
54
|
+
cb(data)
|
55
|
+
}).fail(function() {
|
56
|
+
cb([])
|
57
|
+
}).always(() => {
|
58
|
+
// This function runs Tribute every single time you type something
|
59
|
+
// So we must evalute DOM properties after each
|
60
|
+
const $parent = $(tribute.current.element).parent();
|
61
|
+
$parent.addClass("is-active");
|
62
|
+
|
63
|
+
// We need to move the container to the wrapper selected
|
64
|
+
const $tribute = $parent.find(".tribute-container");
|
65
|
+
// Remove the inline styles, relative to absolute positioning
|
66
|
+
$tribute.removeAttr("style");
|
67
|
+
})
|
68
|
+
};
|
69
|
+
|
70
|
+
// tribute.js docs - http://github.com/zurb/tribute
|
71
|
+
/* global Tribute*/
|
72
|
+
/* eslint multiline-ternary: 0 */
|
73
|
+
/* eslint no-ternary: 0 */
|
74
|
+
let tribute = new Tribute({
|
75
|
+
autocompleteMode: true,
|
76
|
+
// avoid overloading the API if the user types too fast
|
77
|
+
values: debounce(function (text, cb) {
|
78
|
+
remoteSearch(text, (users) => cb(users));
|
79
|
+
}, 250),
|
80
|
+
positionMenu: true,
|
81
|
+
menuContainer: null,
|
82
|
+
menuItemLimit: 10,
|
83
|
+
fillAttr: "nickname",
|
84
|
+
noMatchTemplate: noMatchTemplate,
|
85
|
+
lookup: (item) => item.nickname + item.name,
|
86
|
+
selectTemplate: function(item) {
|
87
|
+
mentionsCount += 1;
|
88
|
+
if (mentionsCount >= maxRecipients) {
|
89
|
+
$multipleMentionContainer.prop("disabled", true);
|
90
|
+
}
|
91
|
+
if (typeof item === "undefined") {
|
92
|
+
return null;
|
93
|
+
}
|
94
|
+
// Set recipient profile view
|
95
|
+
let recipientLabel = `
|
96
|
+
<label style="padding: 0 0 10px 0">
|
97
|
+
<img src="${item.original.avatarUrl}" alt="${item.original.name}" height="35" width="35" style="border-radius: 50%;" aria-label="${item.original.name}">
|
98
|
+
<b>${item.original.name}</b>
|
99
|
+
<input type="hidden" name="recipient_id[]" value="${item.original.id}">
|
100
|
+
<div class="float-right">×</div>
|
101
|
+
</label>
|
102
|
+
`;
|
103
|
+
|
104
|
+
// Append new recipient to DOM
|
105
|
+
if (item.original.__typename === "UserGroup" || item.original.directMessagesEnabled === "true") {
|
106
|
+
$multipleMentionRecipientsContainer.append($(recipientLabel));
|
107
|
+
$multipleMentionContainer.val("");
|
108
|
+
}
|
109
|
+
|
110
|
+
// In order to add tabindex accessibility control to each recipient in list
|
111
|
+
$multipleMentionRecipientsContainer.find("label").each(function(index) {
|
112
|
+
$(this).find("div").attr("tabIndex", 0).attr("aria-controls", 0).attr("aria-label", "Close").attr("role", "tab");
|
113
|
+
});
|
114
|
+
|
115
|
+
// Clean input
|
116
|
+
return "";
|
117
|
+
},
|
118
|
+
menuItemTemplate: function(item) {
|
119
|
+
let svg = "";
|
120
|
+
let enabled = item.original.directMessagesEnabled === "true";
|
121
|
+
if (window.Decidim && item.original.__typename === "UserGroup") {
|
122
|
+
enabled = true;
|
123
|
+
let icons = window.Decidim.assets["icons.svg"];
|
124
|
+
svg = `<span class="is-group">${item.original.membersCount}x <svg class="icon--members icon"><use xlink:href="${icons}#icon-members"/></svg></span>`;
|
125
|
+
}
|
126
|
+
let disabledElementClass = enabled ? "" : "disabled-tribute-element";
|
127
|
+
let disabledElementMessage = enabled ? "" : ` <span class="disabled-tribute-element-info">${directMessageDisabled}</span>`;
|
128
|
+
return `<div class="tribute-item ${item.original.__typename} ${disabledElementClass}">
|
129
|
+
<span class="author__avatar"><img src="${item.original.avatarUrl}" alt="author-avatar"></span>
|
130
|
+
<strong>${item.original.nickname}</strong>
|
131
|
+
<small>${item.original.name}</small>
|
132
|
+
${svg}
|
133
|
+
${disabledElementMessage}
|
134
|
+
</div>`;
|
135
|
+
}
|
136
|
+
});
|
137
|
+
|
138
|
+
let setupEvents = function($element) {
|
139
|
+
// DOM manipulation
|
140
|
+
$element.on("focusin", (event) => {
|
141
|
+
// Set the parent container relative to the current element
|
142
|
+
tribute.menuContainer = event.target.parentNode;
|
143
|
+
});
|
144
|
+
$element.on("focusout", (event) => {
|
145
|
+
let $parent = $(event.target).parent();
|
146
|
+
|
147
|
+
if ($parent.hasClass("is-active")) {
|
148
|
+
$parent.removeClass("is-active");
|
149
|
+
}
|
150
|
+
});
|
151
|
+
$element.on("input", (event) => {
|
152
|
+
let $parent = $(event.target).parent();
|
153
|
+
|
154
|
+
if (tribute.isActive) {
|
155
|
+
// We need to move the container to the wrapper selected
|
156
|
+
let $tribute = $(".tribute-container");
|
157
|
+
$tribute.appendTo($parent);
|
158
|
+
// Remove the inline styles, relative to absolute positioning
|
159
|
+
$tribute.removeAttr("style");
|
160
|
+
// Parent adaptation
|
161
|
+
$parent.addClass("is-active");
|
162
|
+
} else {
|
163
|
+
$parent.removeClass("is-active");
|
164
|
+
}
|
165
|
+
});
|
166
|
+
};
|
167
|
+
|
168
|
+
let setupRecipientEvents = function($element) {
|
169
|
+
// Allow delete with click on element in recipients list
|
170
|
+
$element.on("click", (event) => {
|
171
|
+
let $target = event.target.parentNode;
|
172
|
+
if ($target.tagName === "LABEL") {
|
173
|
+
deleteRecipient($target);
|
174
|
+
}
|
175
|
+
});
|
176
|
+
// Allow delete with keypress on element in recipients list
|
177
|
+
$element.on("keypress", (event) => {
|
178
|
+
let $target = event.target.parentNode;
|
179
|
+
if ($target.tagName === "LABEL") {
|
180
|
+
deleteRecipient($target);
|
181
|
+
}
|
182
|
+
});
|
183
|
+
};
|
184
|
+
|
185
|
+
// Call only if we have containter to bind events to
|
186
|
+
if ($multipleMentionContainer.length) {
|
187
|
+
setupEvents($multipleMentionContainer);
|
188
|
+
tribute.attach($multipleMentionContainer);
|
189
|
+
}
|
190
|
+
|
191
|
+
// Call only if we have containter to bind events to
|
192
|
+
if ($multipleMentionRecipientsContainer.length) {
|
193
|
+
setupRecipientEvents($multipleMentionRecipientsContainer);
|
194
|
+
}
|
195
|
+
});
|
@@ -15,6 +15,21 @@ L.DivIcon.SVGIcon.DecidimIcon = L.DivIcon.SVGIcon.extend({
|
|
15
15
|
},
|
16
16
|
_createCircle: function() {
|
17
17
|
return ""
|
18
|
+
},
|
19
|
+
// Improved version of the _createSVG, essentially the same as in later
|
20
|
+
// versions of Leaflet. It adds the `px` values after the width and height
|
21
|
+
// CSS making the focus borders work correctly across all browsers.
|
22
|
+
_createSVG: function() {
|
23
|
+
const path = this._createPath();
|
24
|
+
const circle = this._createCircle();
|
25
|
+
const text = this._createText();
|
26
|
+
const className = `${this.options.className}-svg`;
|
27
|
+
|
28
|
+
const style = `width:${this.options.iconSize.x}px; height:${this.options.iconSize.y}px;`;
|
29
|
+
|
30
|
+
const svg = `<svg xmlns="http://www.w3.org/2000/svg" version="1.1" class="${className}" style="${style}">${path}${circle}${text}</svg>`;
|
31
|
+
|
32
|
+
return svg;
|
18
33
|
}
|
19
34
|
});
|
20
35
|
|
@@ -26,7 +41,11 @@ const addMarkers = (markersData, markerClusters, map) => {
|
|
26
41
|
|
27
42
|
markersData.forEach((markerData) => {
|
28
43
|
let marker = L.marker([markerData.latitude, markerData.longitude], {
|
29
|
-
icon: new L.DivIcon.SVGIcon.DecidimIcon(
|
44
|
+
icon: new L.DivIcon.SVGIcon.DecidimIcon({
|
45
|
+
fillColor: window.Decidim.mapConfiguration.markerColor
|
46
|
+
}),
|
47
|
+
keyboard: true,
|
48
|
+
title: markerData.title
|
30
49
|
});
|
31
50
|
let node = document.createElement("div");
|
32
51
|
|
@@ -66,6 +85,15 @@ const loadMap = (mapId, markersData) => {
|
|
66
85
|
|
67
86
|
map.scrollWheelZoom.disable();
|
68
87
|
|
88
|
+
// Fix the keyboard navigation on the map
|
89
|
+
map.on("popupopen", (ev) => {
|
90
|
+
const $popup = $(ev.popup.getElement());
|
91
|
+
$popup.attr("tabindex", 0).focus();
|
92
|
+
});
|
93
|
+
map.on("popupclose", (ev) => {
|
94
|
+
$(ev.popup._source._icon).focus();
|
95
|
+
});
|
96
|
+
|
69
97
|
return map;
|
70
98
|
};
|
71
99
|
|
@@ -84,14 +112,23 @@ $(() => {
|
|
84
112
|
const hereAppCode = $map.data("here-app-code");
|
85
113
|
const hereApiKey = $map.data("here-api-key");
|
86
114
|
|
115
|
+
let markerColor = getComputedStyle(document.documentElement).getPropertyValue("--primary");
|
116
|
+
if (!markerColor || markerColor.length < 1) {
|
117
|
+
markerColor = "#ef604d";
|
118
|
+
}
|
119
|
+
|
120
|
+
let mapApiConfig = null;
|
87
121
|
if (hereApiKey) {
|
88
|
-
|
122
|
+
mapApiConfig = { apiKey: hereApiKey };
|
89
123
|
} else {
|
90
|
-
|
124
|
+
mapApiConfig = {
|
91
125
|
appId: hereAppId,
|
92
126
|
appCode: hereAppCode
|
93
127
|
};
|
94
128
|
}
|
129
|
+
window.Decidim.mapConfiguration = $.extend({
|
130
|
+
markerColor: markerColor
|
131
|
+
}, mapApiConfig);
|
95
132
|
|
96
133
|
if ($map.length > 0) {
|
97
134
|
window.Decidim.currentMap = loadMap(mapId, markersData);
|
@@ -1,28 +1,9 @@
|
|
1
|
-
//
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
pushState($target.attr("href"));
|
12
|
-
})
|
13
|
-
|
14
|
-
registerCallback("orders", () => {
|
15
|
-
const url = window.location.toString();
|
16
|
-
const match = url.match(/order=([^&]*)/);
|
17
|
-
const $orderMenu = $(".order-by .menu");
|
18
|
-
let order = $orderMenu.find(".menu a:first").data("order");
|
19
|
-
|
20
|
-
if (match) {
|
21
|
-
order = match[1];
|
22
|
-
}
|
23
|
-
|
24
|
-
const linkText = $orderMenu.find(`.menu a[data-order="${order}"]`).text();
|
25
|
-
|
26
|
-
$orderMenu.find("a:first").text(linkText);
|
27
|
-
});
|
28
|
-
});
|
1
|
+
// This is left for backwards compatibility. The actual functionality has been
|
2
|
+
// moved to results_listing.js.es6.
|
3
|
+
//
|
4
|
+
// = results_listing
|
5
|
+
|
6
|
+
if (window.console) {
|
7
|
+
// eslint-disable-next-line no-console
|
8
|
+
console.log("decidim/orders.js is deprecated, please use decidim/results_listing.js instead.");
|
9
|
+
}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
$(() => {
|
2
|
+
const $responsiveTabBlock = $(".responsive-tab-block");
|
3
|
+
|
4
|
+
$responsiveTabBlock.click((event) => {
|
5
|
+
if (event.target.closest(".is-active") !== null) {
|
6
|
+
event.preventDefault();
|
7
|
+
if (window.innerWidth <= 639) {
|
8
|
+
$responsiveTabBlock.toggleClass("expanded");
|
9
|
+
}
|
10
|
+
}
|
11
|
+
});
|
12
|
+
});
|
@@ -0,0 +1,44 @@
|
|
1
|
+
// = require_self
|
2
|
+
|
3
|
+
((exports) => {
|
4
|
+
const { pushState, registerCallback } = window.Decidim.History;
|
5
|
+
const initializeListingOptionsMenu = (options) => {
|
6
|
+
exports.$(document).on("click", `${options.containerSelector} a`, (event) => {
|
7
|
+
const $target = $(event.target);
|
8
|
+
|
9
|
+
$target.parents(".menu").find("a:first").text($target.text());
|
10
|
+
|
11
|
+
pushState($target.attr("href"));
|
12
|
+
})
|
13
|
+
|
14
|
+
registerCallback(options.callbackName, () => {
|
15
|
+
const url = window.location.toString();
|
16
|
+
const match = url.match(/${options.urlParameter}=([^&]*)/);
|
17
|
+
const $targetMenu = $(`${options.containerSelector} .menu`);
|
18
|
+
let value = $targetMenu.find(".menu a:first").data(options.dataAttribute);
|
19
|
+
|
20
|
+
if (match) {
|
21
|
+
value = match[1];
|
22
|
+
}
|
23
|
+
|
24
|
+
const linkText = $targetMenu.find(`.menu a[data-${options.dataAttribute}="${value}"]`).text();
|
25
|
+
|
26
|
+
$targetMenu.find("a:first").text(linkText);
|
27
|
+
});
|
28
|
+
};
|
29
|
+
|
30
|
+
exports.$(() => {
|
31
|
+
initializeListingOptionsMenu({
|
32
|
+
containerSelector: ".order-by",
|
33
|
+
callbackName: "orders",
|
34
|
+
urlParameter: "order",
|
35
|
+
dataAttribute: "order"
|
36
|
+
});
|
37
|
+
initializeListingOptionsMenu({
|
38
|
+
containerSelector: ".results-per-page",
|
39
|
+
callbackName: "results_per_page",
|
40
|
+
urlParameter: "per_page",
|
41
|
+
dataAttribute: "per-page-option"
|
42
|
+
});
|
43
|
+
});
|
44
|
+
})(window)
|