decidim-meetings 0.23.0 → 0.27.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-meetings might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/app/cells/decidim/meetings/content_blocks/highlighted_meetings/elements.erb +16 -0
- data/app/cells/decidim/meetings/content_blocks/highlighted_meetings/heading.erb +1 -0
- data/app/cells/decidim/meetings/content_blocks/highlighted_meetings_cell.rb +33 -0
- data/app/cells/decidim/meetings/content_blocks/{upcoming_events → upcoming_meetings}/show.erb +6 -6
- data/app/cells/decidim/meetings/content_blocks/{upcoming_events_cell.rb → upcoming_meetings_cell.rb} +13 -10
- data/app/cells/decidim/meetings/highlighted_meetings_for_component/show.erb +5 -4
- data/app/cells/decidim/meetings/highlighted_meetings_for_component_cell.rb +22 -1
- data/app/cells/decidim/meetings/join_meeting_button/registration_confirm.erb +6 -0
- data/app/cells/decidim/meetings/join_meeting_button/show.erb +15 -6
- data/app/cells/decidim/meetings/join_meeting_button_cell.rb +1 -1
- data/app/cells/decidim/meetings/meeting_activity_cell.rb +13 -5
- data/app/cells/decidim/meetings/meeting_cell.rb +2 -4
- data/app/cells/decidim/meetings/meeting_highlighted_list_item/show.erb +21 -0
- data/app/cells/decidim/meetings/meeting_highlighted_list_item_cell.rb +10 -0
- data/app/cells/decidim/meetings/meeting_list_item_cell.rb +11 -1
- data/app/cells/decidim/meetings/meeting_m/address.erb +5 -1
- data/app/cells/decidim/meetings/meeting_m_cell.rb +54 -0
- data/app/cells/decidim/meetings/meeting_s_cell.rb +22 -0
- data/app/cells/decidim/meetings/meeting_url/show.erb +20 -0
- data/app/cells/decidim/meetings/meeting_url_cell.rb +29 -0
- data/app/cells/decidim/meetings/meetings_map/show.erb +1 -1
- data/app/cells/decidim/meetings/meetings_map_cell.rb +7 -1
- data/app/cells/decidim/meetings/online_meeting_cell.rb +51 -0
- data/app/cells/decidim/meetings/online_meeting_link/show.erb +44 -0
- data/app/cells/decidim/meetings/online_meeting_link_cell.rb +23 -0
- data/app/cells/decidim/meetings/public_participants_list/show.erb +16 -0
- data/app/cells/decidim/meetings/public_participants_list_cell.rb +32 -0
- data/app/cells/decidim/meetings/question_responses/show.erb +7 -0
- data/app/cells/decidim/meetings/question_responses_cell.rb +72 -0
- data/app/cells/decidim/meetings/reported_content/show.erb +3 -0
- data/app/cells/decidim/meetings/reported_content_cell.rb +13 -0
- data/app/commands/decidim/meetings/admin/close_meeting.rb +4 -1
- data/app/commands/decidim/meetings/admin/copy_meeting.rb +1 -10
- data/app/commands/decidim/meetings/admin/create_agenda.rb +1 -1
- data/app/commands/decidim/meetings/admin/create_meeting.rb +16 -20
- data/app/commands/decidim/meetings/admin/destroy_meeting.rb +3 -1
- data/app/commands/decidim/meetings/admin/export_meeting_registrations.rb +1 -1
- data/app/commands/decidim/meetings/admin/invite_user_to_join_meeting.rb +10 -12
- data/app/commands/decidim/meetings/admin/publish_meeting.rb +74 -0
- data/app/commands/decidim/meetings/admin/unpublish_meeting.rb +45 -0
- data/app/commands/decidim/meetings/admin/update_agenda.rb +1 -1
- data/app/commands/decidim/meetings/admin/update_meeting.rb +17 -6
- data/app/commands/decidim/meetings/admin/update_question_status.rb +57 -0
- data/app/commands/decidim/meetings/admin/update_questionnaire.rb +96 -0
- data/app/commands/decidim/meetings/admin/update_registrations.rb +5 -3
- data/app/commands/decidim/meetings/admin/validate_registration_code.rb +3 -1
- data/app/commands/decidim/meetings/close_meeting.rb +68 -0
- data/app/commands/decidim/meetings/create_answer.rb +52 -0
- data/app/commands/decidim/meetings/create_meeting.rb +26 -5
- data/app/commands/decidim/meetings/decline_invitation.rb +1 -1
- data/app/commands/decidim/meetings/join_meeting.rb +17 -8
- data/app/commands/decidim/meetings/leave_meeting.rb +5 -5
- data/app/commands/decidim/meetings/update_meeting.rb +15 -4
- data/app/commands/decidim/meetings/withdraw_meeting.rb +39 -0
- data/app/controllers/concerns/decidim/meetings/admin/filterable.rb +55 -0
- data/app/controllers/concerns/decidim/meetings/filterable.rb +27 -0
- data/app/controllers/concerns/decidim/meetings/polls_resources.rb +29 -0
- data/app/controllers/decidim/meetings/admin/application_controller.rb +6 -2
- data/app/controllers/decidim/meetings/admin/invites_controller.rb +0 -2
- data/app/controllers/decidim/meetings/admin/meeting_closes_controller.rb +3 -3
- data/app/controllers/decidim/meetings/admin/meetings_controller.rb +46 -1
- data/app/controllers/decidim/meetings/admin/meetings_poll_controller.rb +107 -0
- data/app/controllers/decidim/meetings/calendars_controller.rb +9 -1
- data/app/controllers/decidim/meetings/directory/application_controller.rb +16 -0
- data/app/controllers/decidim/meetings/directory/meetings_controller.rb +40 -26
- data/app/controllers/decidim/meetings/live_events_controller.rb +35 -0
- data/app/controllers/decidim/meetings/meeting_closes_controller.rb +43 -0
- data/app/controllers/decidim/meetings/meetings_controller.rb +43 -29
- data/app/controllers/decidim/meetings/polls/answers_controller.rb +37 -0
- data/app/controllers/decidim/meetings/polls/questions_controller.rb +45 -0
- data/app/events/decidim/meetings/close_meeting_event.rb +1 -3
- data/app/events/decidim/meetings/create_meeting_event.rb +16 -2
- data/app/events/decidim/meetings/meeting_event.rb +37 -0
- data/app/events/decidim/meetings/meeting_registration_notification_event.rb +1 -1
- data/app/events/decidim/meetings/meeting_registrations_enabled_event.rb +1 -3
- data/app/events/decidim/meetings/meeting_registrations_over_percentage_event.rb +2 -4
- data/app/events/decidim/meetings/registration_code_validated_event.rb +2 -4
- data/app/events/decidim/meetings/upcoming_meeting_event.rb +1 -3
- data/app/events/decidim/meetings/update_meeting_event.rb +1 -3
- data/app/forms/decidim/meetings/admin/answer_option_form.rb +24 -0
- data/app/forms/decidim/meetings/admin/close_meeting_form.rb +9 -7
- data/app/forms/decidim/meetings/admin/meeting_copy_form.rb +4 -13
- data/app/forms/decidim/meetings/admin/meeting_form.rb +76 -26
- data/app/forms/decidim/meetings/admin/meeting_registration_invite_form.rb +1 -1
- data/app/forms/decidim/meetings/admin/meeting_registrations_form.rb +17 -4
- data/app/forms/decidim/meetings/admin/question_form.rb +44 -0
- data/app/forms/decidim/meetings/admin/questionnaire_form.rb +19 -0
- data/app/forms/decidim/meetings/answer_choice_form.rb +14 -0
- data/app/forms/decidim/meetings/answer_form.rb +64 -0
- data/app/forms/decidim/meetings/base_meeting_form.rb +59 -0
- data/app/forms/decidim/meetings/close_meeting_form.rb +35 -0
- data/app/forms/decidim/meetings/join_meeting_form.rb +1 -0
- data/app/forms/decidim/meetings/meeting_form.rb +83 -22
- data/app/helpers/decidim/meetings/admin/filterable_helper.rb +13 -0
- data/app/helpers/decidim/meetings/application_helper.rb +59 -10
- data/app/helpers/decidim/meetings/directory/application_helper.rb +148 -0
- data/app/helpers/decidim/meetings/map_helper.rb +2 -2
- data/app/helpers/decidim/meetings/meeting_cells_helper.rb +4 -1
- data/app/helpers/decidim/meetings/meetings_helper.rb +23 -1
- data/app/jobs/decidim/meetings/send_close_meeting_reminder_job.rb +17 -0
- data/app/jobs/decidim/meetings/upcoming_meeting_notification_job.rb +4 -1
- data/app/mailers/decidim/meetings/close_meeting_reminder_mailer.rb +43 -0
- data/app/models/decidim/meetings/agenda_item.rb +2 -2
- data/app/models/decidim/meetings/answer.rb +48 -0
- data/app/models/decidim/meetings/answer_choice.rb +15 -0
- data/app/models/decidim/meetings/answer_option.rb +24 -0
- data/app/models/decidim/meetings/invite.rb +2 -2
- data/app/models/decidim/meetings/meeting.rb +230 -24
- data/app/models/decidim/meetings/poll.rb +19 -0
- data/app/models/decidim/meetings/question.rb +54 -0
- data/app/models/decidim/meetings/questionnaire.rb +29 -0
- data/app/models/decidim/meetings/registration.rb +4 -2
- data/app/packs/entrypoints/decidim_meetings.js +6 -0
- data/app/packs/entrypoints/decidim_meetings_admin.js +5 -0
- data/app/{assets/images/decidim/gamification/badges/attended_meetings.svg → packs/images/decidim/gamification/badges/decidim_gamification_badges_attended_meetings.svg} +0 -0
- data/app/{assets/images/decidim/meetings/icon.svg → packs/images/decidim/meetings/decidim_meetings.svg} +0 -0
- data/app/packs/src/decidim/meetings/admin/agendas.js +159 -0
- data/app/{assets/javascripts/decidim/meetings/admin/destroy_meeting_alert.js.es6 → packs/src/decidim/meetings/admin/destroy_meeting_alert.js} +0 -0
- data/app/{assets/javascripts/decidim/meetings/admin/meetings_form.js.es6 → packs/src/decidim/meetings/admin/meetings_form.js} +67 -5
- data/app/{assets/javascripts/decidim/meetings/admin/registrations_form.js.es6 → packs/src/decidim/meetings/admin/registrations_form.js} +2 -0
- data/app/{assets/javascripts/decidim/meetings/admin/registrations_invite_form.es6 → packs/src/decidim/meetings/admin/registrations_invite_form.js} +3 -3
- data/app/packs/src/decidim/meetings/meetings_form.js +73 -0
- data/app/packs/src/decidim/meetings/meetings_polls.js +46 -0
- data/app/packs/src/decidim/meetings/poll.component.js +166 -0
- data/app/packs/stylesheets/decidim/meetings/_header.scss +52 -0
- data/app/packs/stylesheets/decidim/meetings/_main.scss +178 -0
- data/app/packs/stylesheets/decidim/meetings/_meetings.scss +2 -0
- data/app/permissions/decidim/meetings/admin/permissions.rb +16 -8
- data/app/permissions/decidim/meetings/permissions.rb +60 -17
- data/app/presenters/decidim/meetings/admin_log/meeting_presenter.rb +7 -3
- data/app/presenters/decidim/meetings/admin_log/{minutes_presenter.rb → questionnaire_presenter.rb} +13 -16
- data/app/presenters/decidim/meetings/meeting_edition_presenter.rb +14 -0
- data/app/presenters/decidim/meetings/meeting_presenter.rb +73 -24
- data/app/queries/decidim/meetings/admin/invites.rb +1 -1
- data/app/queries/decidim/meetings/filtered_meetings.rb +2 -2
- data/app/queries/decidim/meetings/metrics/meetings_metric_manage.rb +1 -1
- data/app/queries/decidim/meetings/questionnaire_user_answers.rb +29 -0
- data/app/serializers/decidim/meetings/{data_portability_invite_serializer.rb → download_your_data_invite_serializer.rb} +4 -3
- data/app/serializers/decidim/meetings/{data_portability_registration_serializer.rb → download_your_data_registration_serializer.rb} +4 -3
- data/app/serializers/decidim/meetings/registration_serializer.rb +3 -12
- data/app/services/decidim/meetings/calendar/base_calendar.rb +4 -3
- data/app/services/decidim/meetings/calendar/component_calendar.rb +7 -9
- data/app/services/decidim/meetings/calendar/meeting_calendar.rb +33 -0
- data/app/services/decidim/meetings/calendar/organization_calendar.rb +1 -1
- data/app/services/decidim/meetings/calendar_renderer.rb +5 -3
- data/app/services/decidim/meetings/close_meeting_reminder_generator.rb +68 -0
- data/app/services/decidim/meetings/diff_renderer.rb +4 -4
- data/app/services/decidim/meetings/meeting_iframe_embedder.rb +90 -0
- data/app/services/decidim/meetings/meeting_search.rb +7 -20
- data/app/views/decidim/meetings/_calendar_modal.html.erb +19 -2
- data/app/views/decidim/meetings/admin/agenda/_form.html.erb +1 -1
- data/app/views/decidim/meetings/admin/invite_join_meeting_mailer/invite.html.erb +4 -4
- data/app/views/decidim/meetings/admin/invites/_form.html.erb +1 -1
- data/app/views/decidim/meetings/admin/invites/index.html.erb +1 -1
- data/app/views/decidim/meetings/admin/meeting_closes/_form.html.erb +16 -1
- data/app/views/decidim/meetings/admin/meeting_copies/_form.html.erb +17 -2
- data/app/views/decidim/meetings/admin/meeting_copies/new.html.erb +1 -1
- data/app/views/decidim/meetings/admin/meetings/_form.html.erb +47 -2
- data/app/views/decidim/meetings/admin/meetings/_services.html.erb +1 -1
- data/app/views/decidim/meetings/admin/meetings/edit.html.erb +2 -2
- data/app/views/decidim/meetings/admin/meetings/index.html.erb +60 -10
- data/app/views/decidim/meetings/admin/meetings/new.html.erb +2 -2
- data/app/views/decidim/meetings/admin/poll/_answer_option.html.erb +34 -0
- data/app/views/decidim/meetings/admin/poll/_answer_option_template.html.erb +7 -0
- data/app/views/decidim/meetings/admin/poll/_form.html.erb +63 -0
- data/app/views/decidim/meetings/admin/poll/_question.html.erb +96 -0
- data/app/views/decidim/meetings/admin/poll/edit.html.erb +9 -0
- data/app/views/decidim/meetings/admin/registrations/_form.html.erb +10 -1
- data/app/views/decidim/meetings/admin/registrations/edit.html.erb +20 -18
- data/app/views/decidim/meetings/close_meeting_reminder_mailer/close_meeting_reminder.html.erb +5 -0
- data/app/views/decidim/meetings/directory/meetings/_filters.html.erb +34 -0
- data/app/views/decidim/meetings/directory/meetings/_meetings.html.erb +6 -1
- data/app/views/decidim/meetings/directory/meetings/index.html.erb +5 -21
- data/app/views/decidim/meetings/directory/meetings/index.js.erb +9 -4
- data/app/views/decidim/meetings/layouts/live_event.html.erb +55 -0
- data/app/views/decidim/meetings/live_events/show.html.erb +12 -0
- data/app/views/decidim/meetings/meeting_closes/_form.html.erb +14 -0
- data/app/views/decidim/meetings/meeting_closes/edit.html.erb +25 -0
- data/app/views/decidim/meetings/meeting_closes/proposals_picker.html.erb +1 -0
- data/app/views/decidim/meetings/meetings/_calendar_modal.html.erb +26 -0
- data/app/views/decidim/meetings/meetings/_count.html.erb +1 -1
- data/app/views/decidim/meetings/meetings/_filters.html.erb +13 -5
- data/app/views/decidim/meetings/meetings/_filters_small_view.html.erb +4 -4
- data/app/views/decidim/meetings/meetings/_form.html.erb +55 -3
- data/app/views/decidim/meetings/meetings/_linked_meetings.html.erb +2 -2
- data/app/views/decidim/meetings/meetings/_meeting_minutes.html.erb +7 -18
- data/app/views/decidim/meetings/meetings/_meetings.html.erb +24 -1
- data/app/views/decidim/meetings/meetings/edit.html.erb +2 -2
- data/app/views/decidim/meetings/meetings/index.html.erb +7 -6
- data/app/views/decidim/meetings/meetings/index.js.erb +7 -4
- data/app/views/decidim/meetings/meetings/new.html.erb +2 -2
- data/app/views/decidim/meetings/meetings/show.html.erb +50 -43
- data/app/views/decidim/meetings/polls/answers/_multiple_option.html.erb +13 -0
- data/app/views/decidim/meetings/polls/answers/_single_option.html.erb +19 -0
- data/app/views/decidim/meetings/polls/answers/create.js.erb +5 -0
- data/app/views/decidim/meetings/polls/questions/_closed_question.html.erb +7 -0
- data/app/views/decidim/meetings/polls/questions/_index.html.erb +5 -0
- data/app/views/decidim/meetings/polls/questions/_index_admin.html.erb +43 -0
- data/app/views/decidim/meetings/polls/questions/_published_question.html.erb +29 -0
- data/app/views/decidim/meetings/polls/questions/_question.html.erb +7 -0
- data/app/views/decidim/meetings/polls/questions/index.js.erb +5 -0
- data/app/views/decidim/meetings/polls/questions/index_admin.js.erb +5 -0
- data/app/views/decidim/meetings/registration_mailer/confirmation.html.erb +8 -3
- data/app/views/decidim/participatory_spaces/_upcoming_meeting_for_card.html.erb +1 -1
- data/app/views/devise/mailer/join_meeting.html.erb +6 -6
- data/config/assets.rb +11 -0
- data/config/locales/ar.yml +27 -40
- data/config/locales/bg.yml +1 -0
- data/config/locales/ca.yml +211 -44
- data/config/locales/cs.yml +220 -51
- data/config/locales/de.yml +249 -106
- data/config/locales/el.yml +6 -43
- data/config/locales/en.yml +208 -42
- data/config/locales/es-MX.yml +208 -41
- data/config/locales/es-PY.yml +209 -42
- data/config/locales/es.yml +210 -43
- data/config/locales/eu.yml +221 -39
- data/config/locales/fi-plain.yml +209 -42
- data/config/locales/fi.yml +337 -170
- data/config/locales/fr-CA.yml +208 -41
- data/config/locales/fr-LU.yml +534 -0
- data/config/locales/fr.yml +221 -54
- data/config/locales/ga-IE.yml +201 -0
- data/config/locales/gl.yml +92 -40
- data/config/locales/hu.yml +194 -41
- data/config/locales/id-ID.yml +6 -40
- data/config/locales/is-IS.yml +4 -30
- data/config/locales/it.yml +145 -42
- data/config/locales/ja.yml +246 -80
- data/config/locales/lb-LU.yml +211 -0
- data/config/locales/lb.yml +403 -0
- data/config/locales/lt.yml +688 -0
- data/config/locales/lv.yml +6 -43
- data/config/locales/nl.yml +264 -89
- data/config/locales/no.yml +167 -42
- data/config/locales/oc-FR.yml +1 -0
- data/config/locales/pl.yml +111 -61
- data/config/locales/pt-BR.yml +174 -40
- data/config/locales/pt.yml +143 -42
- data/config/locales/ro-RO.yml +257 -109
- data/config/locales/ru.yml +4 -39
- data/config/locales/si-LK.yml +1 -0
- data/config/locales/sk.yml +6 -43
- data/config/locales/sl.yml +1 -3
- data/config/locales/sr-CS.yml +1 -0
- data/config/locales/sv.yml +193 -42
- data/config/locales/sw-KE.yml +1 -0
- data/config/locales/tr-TR.yml +187 -120
- data/config/locales/uk.yml +4 -31
- data/config/locales/val-ES.yml +1 -0
- data/config/locales/zh-CN.yml +6 -43
- data/db/migrate/20180809134748_add_upcoming_events_as_content_block.rb +1 -1
- data/db/migrate/20201006140511_add_online_meeting_url.rb +7 -0
- data/db/migrate/20201009124057_add_type_of_meeting.rb +7 -0
- data/db/migrate/20201016112641_add_registration_type_and_url_to_meetings.rb +19 -0
- data/db/migrate/20201111133246_add_salt_to_decidim_meetings.rb +8 -0
- data/db/migrate/20210217124802_add_registration_custom_content_to_meetings.rb +8 -0
- data/db/migrate/20210310120731_add_followable_counter_cache_to_meetings.rb +16 -0
- data/db/migrate/20210413050756_add_published_at_to_meetings.rb +7 -0
- data/db/migrate/20210413050917_update_published_at_to_existing_meetings.rb +20 -0
- data/db/migrate/20210430123416_add_public_participation_to_decidim_meetings_registrations.rb +7 -0
- data/db/migrate/20210506180226_merge_meetings_minutes_into_meetings_table.rb +48 -0
- data/db/migrate/20210512055802_create_decidim_meetings_polls.rb +10 -0
- data/db/migrate/20210512100333_drop_decidim_meetings_minutes_table.rb +78 -0
- data/db/migrate/20210518133236_merge_minutes_with_closing_report_in_meetings_table.rb +57 -0
- data/db/migrate/20210519133705_add_comments_availability_columns_to_meetings_table.rb +14 -0
- data/db/migrate/20210520084247_create_decidim_meetings_questionnaires.rb +11 -0
- data/db/migrate/20210520084253_create_decidim_meetings_questions.rb +15 -0
- data/db/migrate/20210520084321_create_decidim_meetings_answers.rb +13 -0
- data/db/migrate/20210520084330_create_decidim_meetings_answer_options.rb +10 -0
- data/db/migrate/20210520084337_create_decidim_meetings_answer_choices.rb +13 -0
- data/db/migrate/20210520134834_add_status_to_meetings_questions.rb +7 -0
- data/db/migrate/20210602040614_add_setting_embed_iframe_to_meetings.rb +7 -0
- data/db/migrate/20210727085318_add_state_field_to_meeting.rb +7 -0
- data/db/migrate/20210903143040_add_iframe_access_level_to_decidim_meetings.rb +7 -0
- data/db/migrate/20210922140454_transform_show_embedded_iframe_column.rb +15 -0
- data/db/migrate/20210928095036_rename_upcoming_events_content_block_to_upcoming_meetings.rb +13 -0
- data/db/migrate/20211105115625_remove_not_null_on_customize_registration_email.rb +7 -0
- data/lib/decidim/api/agenda_item_type.rb +22 -0
- data/lib/decidim/api/agenda_type.rb +19 -0
- data/lib/decidim/api/linked_resources_interface.rb +14 -6
- data/lib/decidim/api/meeting_type.rb +79 -0
- data/lib/decidim/api/meetings_type.rb +26 -0
- data/{app/types/decidim/meetings → lib/decidim/api}/service_type.rb +4 -4
- data/lib/decidim/api/services_interface.rb +3 -3
- data/lib/decidim/content_parsers/meeting_parser.rb +20 -0
- data/lib/decidim/content_renderers/meeting_renderer.rb +17 -0
- data/lib/decidim/meetings/admin_engine.rb +5 -1
- data/lib/decidim/meetings/api.rb +5 -0
- data/lib/decidim/meetings/component.rb +108 -34
- data/lib/decidim/meetings/directory_engine.rb +3 -3
- data/lib/decidim/meetings/download_your_data_user_answers_serializer.rb +33 -0
- data/lib/decidim/meetings/engine.rb +39 -27
- data/lib/decidim/meetings/meeting_serializer.rb +5 -3
- data/lib/decidim/meetings/polls.rb +10 -0
- data/lib/decidim/meetings/test/factories.rb +131 -13
- data/lib/decidim/meetings/test/notifications_handling.rb +39 -0
- data/lib/decidim/meetings/test/translated_event.rb +22 -0
- data/lib/decidim/meetings/user_answers_serializer.rb +47 -0
- data/lib/decidim/meetings/version.rb +1 -1
- data/lib/decidim/meetings.rb +28 -1
- metadata +160 -137
- data/app/assets/config/decidim_meetings_manifest.js +0 -8
- data/app/assets/javascripts/decidim/meetings/admin/agendas.js.es6 +0 -158
- data/app/assets/javascripts/decidim/meetings/meetings_form.js.es6 +0 -9
- data/app/commands/decidim/meetings/admin/create_minutes.rb +0 -55
- data/app/commands/decidim/meetings/admin/update_minutes.rb +0 -63
- data/app/controllers/decidim/meetings/admin/minutes_controller.rb +0 -69
- data/app/forms/decidim/meetings/admin/minutes_form.rb +0 -20
- data/app/models/decidim/meetings/minutes.rb +0 -22
- data/app/types/decidim/meetings/agenda_item_type.rb +0 -28
- data/app/types/decidim/meetings/agenda_type.rb +0 -25
- data/app/types/decidim/meetings/meeting_type.rb +0 -65
- data/app/types/decidim/meetings/meetings_type.rb +0 -32
- data/app/types/decidim/meetings/minutes_type.rb +0 -26
- data/app/views/decidim/meetings/admin/minutes/_form.html.erb +0 -23
- data/app/views/decidim/meetings/admin/minutes/edit.html.erb +0 -7
- data/app/views/decidim/meetings/admin/minutes/new.html.erb +0 -7
- data/app/views/decidim/participatory_processes/participatory_process_groups/_highlighted_meetings.html.erb +0 -15
- data/app/views/decidim/participatory_processes/participatory_process_groups/_meeting.html.erb +0 -10
- data/config/locales/ja-JP.yml +0 -494
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Meetings
|
5
|
+
class DownloadYourDataUserAnswersSerializer < Decidim::Exporters::Serializer
|
6
|
+
include Decidim::TranslationsHelper
|
7
|
+
# Serializes an user answer for download your data
|
8
|
+
def serialize
|
9
|
+
{
|
10
|
+
id: resource.id,
|
11
|
+
user: {
|
12
|
+
name: resource.user.name,
|
13
|
+
email: resource.user.email
|
14
|
+
},
|
15
|
+
questionnaire: {
|
16
|
+
id: resource.question.questionnaire.id
|
17
|
+
},
|
18
|
+
question: {
|
19
|
+
id: resource.question.id,
|
20
|
+
body: translated_attribute(resource.question.body)
|
21
|
+
},
|
22
|
+
answer: normalize_body(resource)
|
23
|
+
}
|
24
|
+
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def normalize_body(resource)
|
29
|
+
resource.choices.pluck(:body)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -1,12 +1,8 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require "searchlight"
|
4
|
-
require "kaminari"
|
5
|
-
require "jquery-tmpl-rails"
|
6
3
|
require "icalendar"
|
7
|
-
|
8
|
-
require "
|
9
|
-
require "cell/partial"
|
4
|
+
|
5
|
+
require "decidim/core"
|
10
6
|
|
11
7
|
module Decidim
|
12
8
|
module Meetings
|
@@ -17,7 +13,13 @@ module Decidim
|
|
17
13
|
isolate_namespace Decidim::Meetings
|
18
14
|
|
19
15
|
routes do
|
20
|
-
resources :meetings, only: [:index, :show, :new, :create, :edit, :update] do
|
16
|
+
resources :meetings, only: [:index, :show, :new, :create, :edit, :update, :withdraw] do
|
17
|
+
member do
|
18
|
+
put :withdraw
|
19
|
+
end
|
20
|
+
resources :meeting_closes, only: [:edit, :update] do
|
21
|
+
get :proposals_picker, on: :collection
|
22
|
+
end
|
21
23
|
resource :registration, only: [:create, :destroy] do
|
22
24
|
collection do
|
23
25
|
get :create
|
@@ -28,9 +30,22 @@ module Decidim
|
|
28
30
|
end
|
29
31
|
resources :versions, only: [:show, :index]
|
30
32
|
resource :widget, only: :show, path: "embed"
|
33
|
+
resource :live_event, only: :show
|
34
|
+
namespace :polls do
|
35
|
+
resources :questions, only: [:index, :update]
|
36
|
+
resources :answers, only: [:index, :create]
|
37
|
+
end
|
31
38
|
end
|
32
39
|
root to: "meetings#index"
|
33
|
-
resource :calendar, only: [:show], format: :text
|
40
|
+
resource :calendar, only: [:show], format: :text do
|
41
|
+
resources :meetings, only: [:show], controller: :calendars, action: :meeting_calendar
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
initializer "decidim.content_processors" do |_app|
|
46
|
+
Decidim.configure do |config|
|
47
|
+
config.content_processors += [:meeting]
|
48
|
+
end
|
34
49
|
end
|
35
50
|
|
36
51
|
initializer "decidim_meetings.view_hooks" do
|
@@ -38,23 +53,6 @@ module Decidim
|
|
38
53
|
view_context.cell("decidim/meetings/highlighted_meetings", view_context.current_participatory_space)
|
39
54
|
end
|
40
55
|
|
41
|
-
if defined? Decidim::ParticipatoryProcesses
|
42
|
-
Decidim::ParticipatoryProcesses.view_hooks.register(:process_group_highlighted_elements, priority: Decidim::ViewHooks::HIGH_PRIORITY) do |view_context|
|
43
|
-
published_components = Decidim::Component.where(participatory_space: view_context.participatory_processes).published
|
44
|
-
meetings = Decidim::Meetings::Meeting.where(component: published_components)
|
45
|
-
|
46
|
-
next unless meetings.any?
|
47
|
-
|
48
|
-
view_context.render(
|
49
|
-
partial: "decidim/participatory_processes/participatory_process_groups/highlighted_meetings",
|
50
|
-
locals: {
|
51
|
-
past_meetings: meetings.past.order(end_time: :desc, start_time: :desc).limit(3),
|
52
|
-
upcoming_meetings: meetings.upcoming.order(:start_time, :end_time).limit(3)
|
53
|
-
}
|
54
|
-
)
|
55
|
-
end
|
56
|
-
end
|
57
|
-
|
58
56
|
# This view hook is used in card cells. It renders the next upcoming
|
59
57
|
# meeting for the given participatory space.
|
60
58
|
Decidim.view_hooks.register(:upcoming_meeting_for_card, priority: Decidim::ViewHooks::LOW_PRIORITY) do |view_context|
|
@@ -118,8 +116,22 @@ module Decidim
|
|
118
116
|
end
|
119
117
|
end
|
120
118
|
|
121
|
-
initializer "decidim_meetings.
|
122
|
-
|
119
|
+
initializer "decidim_meetings.webpacker.assets_path" do
|
120
|
+
Decidim.register_assets_path File.expand_path("app/packs", root)
|
121
|
+
end
|
122
|
+
|
123
|
+
initializer "decidim_meetings.notification_settings" do
|
124
|
+
Decidim.notification_settings(:close_meeting_reminder) { |ns| ns.settings_area = :administrators }
|
125
|
+
end
|
126
|
+
|
127
|
+
initializer "decidim_meetings.register_reminders" do
|
128
|
+
Decidim.reminders_registry.register(:close_meeting) do |reminder_registry|
|
129
|
+
reminder_registry.generator_class_name = "Decidim::Meetings::CloseMeetingReminderGenerator"
|
130
|
+
|
131
|
+
reminder_registry.settings do |settings|
|
132
|
+
settings.attribute :reminder_times, type: :array, default: [3.days, 7.days]
|
133
|
+
end
|
134
|
+
end
|
123
135
|
end
|
124
136
|
end
|
125
137
|
end
|
@@ -41,17 +41,19 @@ module Decidim
|
|
41
41
|
location: meeting.location,
|
42
42
|
reference: meeting.reference,
|
43
43
|
comments: meeting.comments_count,
|
44
|
-
attachments: meeting.attachments.
|
45
|
-
followers: meeting.
|
44
|
+
attachments: meeting.attachments.size,
|
45
|
+
followers: meeting.follows.size,
|
46
46
|
url: url,
|
47
47
|
related_proposals: related_proposals,
|
48
|
-
related_results: related_results
|
48
|
+
related_results: related_results,
|
49
|
+
published: meeting.published_at.present?
|
49
50
|
}
|
50
51
|
end
|
51
52
|
|
52
53
|
private
|
53
54
|
|
54
55
|
attr_reader :meeting
|
56
|
+
alias resource meeting
|
55
57
|
|
56
58
|
def component
|
57
59
|
meeting.component
|
@@ -3,7 +3,6 @@
|
|
3
3
|
require "decidim/core/test/factories"
|
4
4
|
require "decidim/forms/test/factories"
|
5
5
|
require "decidim/participatory_processes/test/factories"
|
6
|
-
require "decidim/assemblies/test/factories"
|
7
6
|
|
8
7
|
FactoryBot.define do
|
9
8
|
factory :meeting_component, parent: :component do
|
@@ -25,7 +24,7 @@ FactoryBot.define do
|
|
25
24
|
description { Decidim::Faker::Localized.wrapped("<p>", "</p>") { generate_localized_title } }
|
26
25
|
location { Decidim::Faker::Localized.wrapped("<p>", "</p>") { generate_localized_title } }
|
27
26
|
location_hints { Decidim::Faker::Localized.wrapped("<p>", "</p>") { generate_localized_title } }
|
28
|
-
address { Faker::Lorem.sentence(3) }
|
27
|
+
address { Faker::Lorem.sentence(word_count: 3) }
|
29
28
|
latitude { Faker::Address.latitude }
|
30
29
|
longitude { Faker::Address.longitude }
|
31
30
|
start_time { 1.day.from_now }
|
@@ -34,12 +33,39 @@ FactoryBot.define do
|
|
34
33
|
transparent { true }
|
35
34
|
questionnaire { build(:questionnaire) }
|
36
35
|
registration_form_enabled { true }
|
36
|
+
registration_terms { Decidim::Faker::Localized.wrapped("<p>", "</p>") { generate_localized_title } }
|
37
|
+
registration_type { :on_this_platform }
|
38
|
+
type_of_meeting { :in_person }
|
37
39
|
component { build(:component, manifest_name: "meetings") }
|
40
|
+
iframe_access_level { :all }
|
41
|
+
iframe_embed_type { :none }
|
38
42
|
|
39
43
|
author do
|
40
44
|
component.try(:organization)
|
41
45
|
end
|
42
46
|
|
47
|
+
trait :published do
|
48
|
+
published_at { Time.current }
|
49
|
+
end
|
50
|
+
|
51
|
+
trait :withdrawn do
|
52
|
+
state { "withdrawn" }
|
53
|
+
end
|
54
|
+
|
55
|
+
trait :in_person do
|
56
|
+
type_of_meeting { :in_person }
|
57
|
+
end
|
58
|
+
|
59
|
+
trait :online do
|
60
|
+
type_of_meeting { :online }
|
61
|
+
online_meeting_url { "https://decidim.org" }
|
62
|
+
end
|
63
|
+
|
64
|
+
trait :hybrid do
|
65
|
+
type_of_meeting { :hybrid }
|
66
|
+
online_meeting_url { "https://decidim.org" }
|
67
|
+
end
|
68
|
+
|
43
69
|
trait :official do
|
44
70
|
author { component.organization if component }
|
45
71
|
end
|
@@ -60,6 +86,8 @@ FactoryBot.define do
|
|
60
86
|
end
|
61
87
|
end
|
62
88
|
|
89
|
+
trait(:participant_author) { not_official }
|
90
|
+
|
63
91
|
trait :user_group_author do
|
64
92
|
author do
|
65
93
|
create(:user, organization: component.organization) if component
|
@@ -75,6 +103,14 @@ FactoryBot.define do
|
|
75
103
|
contributions_count { rand(50) }
|
76
104
|
attending_organizations { Array.new(3) { Faker::TvShows::GameOfThrones.house }.join(", ") }
|
77
105
|
closed_at { Time.current }
|
106
|
+
closing_visible { true }
|
107
|
+
end
|
108
|
+
|
109
|
+
trait :closed_with_minutes do
|
110
|
+
closed
|
111
|
+
video_url { Faker::Internet.url }
|
112
|
+
audio_url { Faker::Internet.url }
|
113
|
+
closing_visible { true }
|
78
114
|
end
|
79
115
|
|
80
116
|
trait :with_registrations_enabled do
|
@@ -86,11 +122,50 @@ FactoryBot.define do
|
|
86
122
|
|
87
123
|
trait :past do
|
88
124
|
start_time { end_time.ago(2.hours) }
|
89
|
-
end_time { Faker::Time.between(10.days.ago, 1.day.ago) }
|
125
|
+
end_time { Faker::Time.between(from: 10.days.ago, to: 1.day.ago) }
|
90
126
|
end
|
91
127
|
|
92
128
|
trait :upcoming do
|
93
|
-
start_time { Faker::Time.between(1.day.from_now, 10.days.from_now) }
|
129
|
+
start_time { Faker::Time.between(from: 1.day.from_now, to: 10.days.from_now) }
|
130
|
+
end
|
131
|
+
|
132
|
+
trait :live do
|
133
|
+
start_time { 1.day.ago }
|
134
|
+
end_time { 1.day.from_now }
|
135
|
+
end
|
136
|
+
|
137
|
+
trait :embeddable do
|
138
|
+
online_meeting_url { "https://www.youtube.com/watch?v=pj_2G3x6-Zk" }
|
139
|
+
end
|
140
|
+
|
141
|
+
factory :published_meeting do
|
142
|
+
published_at { Time.current }
|
143
|
+
end
|
144
|
+
|
145
|
+
trait :signed_in_iframe_access_level do
|
146
|
+
iframe_access_level { :signed_in }
|
147
|
+
end
|
148
|
+
|
149
|
+
trait :registered_iframe_access_level do
|
150
|
+
iframe_access_level { :registered }
|
151
|
+
end
|
152
|
+
|
153
|
+
trait :embed_in_meeting_page_iframe_embed_type do
|
154
|
+
iframe_embed_type { :embed_in_meeting_page }
|
155
|
+
end
|
156
|
+
|
157
|
+
trait :open_in_live_event_page_iframe_embed_type do
|
158
|
+
iframe_embed_type { :open_in_live_event_page }
|
159
|
+
end
|
160
|
+
|
161
|
+
trait :open_in_new_tab_iframe_embed_type do
|
162
|
+
iframe_embed_type { :open_in_new_tab }
|
163
|
+
end
|
164
|
+
|
165
|
+
trait :moderated do
|
166
|
+
after(:create) do |meeting, _evaluator|
|
167
|
+
create(:moderation, reportable: meeting, hidden_at: 2.days.ago)
|
168
|
+
end
|
94
169
|
end
|
95
170
|
end
|
96
171
|
|
@@ -129,18 +204,10 @@ FactoryBot.define do
|
|
129
204
|
end
|
130
205
|
end
|
131
206
|
|
132
|
-
factory :minutes, class: "Decidim::Meetings::Minutes" do
|
133
|
-
description { Decidim::Faker::Localized.wrapped("<p>", "</p>") { generate_localized_title } }
|
134
|
-
video_url { Faker::Internet.url }
|
135
|
-
audio_url { Faker::Internet.url }
|
136
|
-
visible { true }
|
137
|
-
meeting
|
138
|
-
end
|
139
|
-
|
140
207
|
factory :invite, class: "Decidim::Meetings::Invite" do
|
141
208
|
meeting
|
142
209
|
user
|
143
|
-
sent_at {
|
210
|
+
sent_at { 1.day.ago }
|
144
211
|
accepted_at { nil }
|
145
212
|
rejected_at { nil }
|
146
213
|
|
@@ -158,4 +225,55 @@ FactoryBot.define do
|
|
158
225
|
title { generate_localized_title }
|
159
226
|
description { Decidim::Faker::Localized.wrapped("<p>", "</p>") { generate_localized_title } }
|
160
227
|
end
|
228
|
+
|
229
|
+
factory :poll, class: "Decidim::Meetings::Poll" do
|
230
|
+
meeting
|
231
|
+
end
|
232
|
+
|
233
|
+
factory :meetings_poll_questionnaire, class: "Decidim::Meetings::Questionnaire" do
|
234
|
+
questionnaire_for { build(:poll) }
|
235
|
+
end
|
236
|
+
|
237
|
+
factory :meetings_poll_question, class: "Decidim::Meetings::Question" do
|
238
|
+
transient do
|
239
|
+
options { [] }
|
240
|
+
end
|
241
|
+
|
242
|
+
body { generate_localized_title }
|
243
|
+
position { 0 }
|
244
|
+
status { 0 }
|
245
|
+
question_type { Decidim::Meetings::Question::QUESTION_TYPES.first }
|
246
|
+
questionnaire factory: :meetings_poll_questionnaire
|
247
|
+
answer_options do
|
248
|
+
Array.new(3).collect { build(:meetings_poll_answer_option, question: nil) }
|
249
|
+
end
|
250
|
+
|
251
|
+
trait :unpublished do
|
252
|
+
status { 0 }
|
253
|
+
end
|
254
|
+
|
255
|
+
trait :published do
|
256
|
+
status { 1 }
|
257
|
+
end
|
258
|
+
|
259
|
+
trait :closed do
|
260
|
+
status { 2 }
|
261
|
+
end
|
262
|
+
end
|
263
|
+
|
264
|
+
factory :meetings_poll_answer, class: "Decidim::Meetings::Answer" do
|
265
|
+
questionnaire factory: :meetings_poll_questionnaire
|
266
|
+
question { create(:meetings_poll_question, questionnaire: questionnaire) }
|
267
|
+
user { create(:user, organization: questionnaire.questionnaire_for.organization) }
|
268
|
+
end
|
269
|
+
|
270
|
+
factory :meetings_poll_answer_option, class: "Decidim::Meetings::AnswerOption" do
|
271
|
+
question { create(:meetings_poll_question) }
|
272
|
+
body { generate_localized_title }
|
273
|
+
end
|
274
|
+
|
275
|
+
factory :meetings_poll_answer_choice, class: "Decidim::Meetings::AnswerChoice" do
|
276
|
+
answer factory: :meetings_poll_answer
|
277
|
+
answer_option { create(:meetings_poll_answer_option, question: answer.question) }
|
278
|
+
end
|
161
279
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
shared_examples_for "emits an upcoming notificaton" do
|
4
|
+
context "when it's a future meeting" do
|
5
|
+
let(:future_start_date) { 3.days.from_now }
|
6
|
+
|
7
|
+
before do
|
8
|
+
meeting.start_time = future_start_date
|
9
|
+
end
|
10
|
+
|
11
|
+
it "schedules a upcoming meeting notification job 48h before start time" do
|
12
|
+
expect(Decidim::Meetings::UpcomingMeetingNotificationJob)
|
13
|
+
.to receive(:generate_checksum).and_return "1234"
|
14
|
+
|
15
|
+
expect(Decidim::Meetings::UpcomingMeetingNotificationJob)
|
16
|
+
.to receive_message_chain(:set, :perform_later)
|
17
|
+
.with(set: meeting.start_time - Decidim::Meetings.upcoming_meeting_notification)
|
18
|
+
.with(kind_of(Integer), "1234")
|
19
|
+
|
20
|
+
subject.call
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context "when it's a past meeting" do
|
25
|
+
let(:past_start_date) { 1.day.ago }
|
26
|
+
|
27
|
+
before do
|
28
|
+
meeting.start_time = past_start_date
|
29
|
+
end
|
30
|
+
|
31
|
+
it "doesn't schedule an upcoming meeting notification" do
|
32
|
+
expect(Decidim::Meetings::UpcomingMeetingNotificationJob).not_to receive(:generate_checksum)
|
33
|
+
expect(Decidim::Meetings::UpcomingMeetingNotificationJob).not_to receive(:set)
|
34
|
+
expect(Decidim::Meetings::UpcomingMeetingNotificationJob).not_to receive(:perform_later)
|
35
|
+
|
36
|
+
subject.call
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
shared_examples_for "a translated meeting event" do
|
4
|
+
describe "translated notifications" do
|
5
|
+
let(:en_body) { "This is Sparta!" }
|
6
|
+
let(:body) { { en: en_body, machine_translations: { ca: "C'est Sparta!" } } }
|
7
|
+
let(:participatory_process) { create :participatory_process, organization: organization }
|
8
|
+
let(:meeting_component) { create(:meeting_component, participatory_space: participatory_process) }
|
9
|
+
let(:translatable) { true }
|
10
|
+
let(:en_version) { resource.description["en"] }
|
11
|
+
let(:machine_translated) { resource.description["machine_translations"]["ca"] }
|
12
|
+
|
13
|
+
let(:resource) do
|
14
|
+
create :meeting,
|
15
|
+
component: meeting_component,
|
16
|
+
title: { en: "A nice event", machine_translations: { ca: "Une belle event" } },
|
17
|
+
description: body
|
18
|
+
end
|
19
|
+
|
20
|
+
it_behaves_like "a translated event"
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Meetings
|
5
|
+
# This class serializes the answers given by a User for questionnaire so can be
|
6
|
+
# exported to CSV, JSON or other formats.
|
7
|
+
class UserAnswersSerializer < Decidim::Exporters::Serializer
|
8
|
+
include Decidim::TranslationsHelper
|
9
|
+
|
10
|
+
# Public: Initializes the serializer with a collection of Answers.
|
11
|
+
def initialize(answers)
|
12
|
+
@answers = answers
|
13
|
+
end
|
14
|
+
|
15
|
+
# Public: Exports a hash with the serialized data for the user answers.
|
16
|
+
def serialize
|
17
|
+
@answers.each_with_index.inject({}) do |serialized, (answer, idx)|
|
18
|
+
serialized.update(
|
19
|
+
answer_translated_attribute_name(:id) => [answer.id, answer.user.id].join("_"),
|
20
|
+
answer_translated_attribute_name(:created_at) => answer.created_at.to_s(:db),
|
21
|
+
answer_translated_attribute_name(:user_status) => answer_translated_attribute_name(answer.decidim_user_id.present? ? "registered" : "unregistered"),
|
22
|
+
"#{idx + 1}. #{translated_attribute(answer.question.body)}" => normalize_body(answer)
|
23
|
+
)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
attr_reader :answers
|
30
|
+
alias resource answers
|
31
|
+
|
32
|
+
def normalize_body(answer)
|
33
|
+
normalize_choices(answer.choices)
|
34
|
+
end
|
35
|
+
|
36
|
+
def normalize_choices(choices)
|
37
|
+
choices.map do |choice|
|
38
|
+
choice.try(:body)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
42
|
+
def answer_translated_attribute_name(attribute)
|
43
|
+
I18n.t(attribute.to_sym, scope: "decidim.forms.user_answers_serializer")
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
data/lib/decidim/meetings.rb
CHANGED
@@ -1,17 +1,44 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "decidim/meetings/admin"
|
4
|
+
require "decidim/meetings/api"
|
4
5
|
require "decidim/meetings/engine"
|
5
6
|
require "decidim/meetings/admin_engine"
|
6
7
|
require "decidim/meetings/directory"
|
7
8
|
require "decidim/meetings/directory_engine"
|
8
9
|
require "decidim/meetings/component"
|
9
|
-
require "decidim/meetings/
|
10
|
+
require "decidim/meetings/polls"
|
10
11
|
|
11
12
|
module Decidim
|
12
13
|
# Base module for this engine.
|
13
14
|
module Meetings
|
14
15
|
autoload :Registrations, "decidim/meetings/registrations"
|
15
16
|
autoload :MeetingSerializer, "decidim/meetings/meeting_serializer"
|
17
|
+
autoload :UserAnswersSerializer, "decidim/meetings/user_answers_serializer"
|
18
|
+
autoload :DownloadYourDataUserAnswersSerializer, "decidim/meetings/download_your_data_user_answers_serializer"
|
19
|
+
|
20
|
+
include ActiveSupport::Configurable
|
21
|
+
|
22
|
+
# Public Setting that defines whether proposals can be linked to meetings
|
23
|
+
config_accessor :enable_proposal_linking do
|
24
|
+
Decidim.const_defined?("Proposals")
|
25
|
+
end
|
26
|
+
|
27
|
+
# Public Setting that defines the interval when the upcoming meeting will be sent
|
28
|
+
config_accessor :upcoming_meeting_notification do
|
29
|
+
2.days
|
30
|
+
end
|
31
|
+
|
32
|
+
config_accessor :embeddable_services do
|
33
|
+
%w(www.youtube.com www.twitch.tv meet.jit.si)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
module ContentParsers
|
38
|
+
autoload :MeetingParser, "decidim/content_parsers/meeting_parser"
|
39
|
+
end
|
40
|
+
|
41
|
+
module ContentRenderers
|
42
|
+
autoload :MeetingRenderer, "decidim/content_renderers/meeting_renderer"
|
16
43
|
end
|
17
44
|
end
|