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,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class TransformShowEmbeddedIframeColumn < ActiveRecord::Migration[6.0]
|
4
|
+
def up
|
5
|
+
add_column :decidim_meetings_meetings, :iframe_embed_type, :integer, default: 0
|
6
|
+
execute "UPDATE decidim_meetings_meetings SET iframe_embed_type = 1 WHERE show_embedded_iframe = 't'"
|
7
|
+
remove_column :decidim_meetings_meetings, :show_embedded_iframe
|
8
|
+
end
|
9
|
+
|
10
|
+
def down
|
11
|
+
add_column :decidim_meetings_meetings, :show_embedded_iframe, :boolean, default: false
|
12
|
+
execute "UPDATE decidim_meetings_meetings SET show_embedded_iframe = 't' WHERE iframe_embed_type = 1"
|
13
|
+
remove_column :decidim_meetings_meetings, :iframe_embed_type
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class RenameUpcomingEventsContentBlockToUpcomingMeetings < ActiveRecord::Migration[6.0]
|
4
|
+
class ContentBlock < ApplicationRecord
|
5
|
+
self.table_name = :decidim_content_blocks
|
6
|
+
end
|
7
|
+
|
8
|
+
def change
|
9
|
+
# rubocop:disable Rails/SkipsModelValidations
|
10
|
+
ContentBlock.where(manifest_name: "upcoming_events").update_all(manifest_name: "upcoming_meetings")
|
11
|
+
# rubocop:enable Rails/SkipsModelValidations
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Meetings
|
5
|
+
class AgendaItemType < Decidim::Api::Types::BaseObject
|
6
|
+
graphql_name "MeetingAgendaItem"
|
7
|
+
description "A meeting agenda item"
|
8
|
+
|
9
|
+
field :id, GraphQL::Types::ID, "The ID for this agenda item", null: false
|
10
|
+
field :title, Decidim::Core::TranslatedFieldType, "The title for this agenda item", null: true
|
11
|
+
field :description, Decidim::Core::TranslatedFieldType, "The description for this agenda item", null: true
|
12
|
+
field :items, [Decidim::Meetings::AgendaItemType, { null: true }], "Sub-items (children) of this agenda item", method: :agenda_item_children, null: false
|
13
|
+
field :parent, Decidim::Meetings::AgendaItemType, "Parent agenda item, if available", null: true
|
14
|
+
field :agenda, Decidim::Meetings::AgendaType, "Belonging agenda", null: true
|
15
|
+
field :duration, GraphQL::Types::Int, "Duration in number of minutes for this item in this agenda", null: false
|
16
|
+
field :position, GraphQL::Types::Int, "Order position for this agenda item", null: false
|
17
|
+
|
18
|
+
field :created_at, Decidim::Core::DateTimeType, description: "The date and time this agenda item was created", null: true
|
19
|
+
field :updated_at, Decidim::Core::DateTimeType, description: "The date and time this agenda item was updated", null: true
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Meetings
|
5
|
+
class AgendaType < Decidim::Api::Types::BaseObject
|
6
|
+
graphql_name "MeetingAgenda"
|
7
|
+
description "A meeting agenda"
|
8
|
+
|
9
|
+
field :id, GraphQL::Types::ID, "The ID for the agenda", null: false
|
10
|
+
field :title, Decidim::Core::TranslatedFieldType, "The title for the agenda", null: true
|
11
|
+
field :items, [Decidim::Meetings::AgendaItemType, { null: true }], "Items and sub-items of the agenda", method: :agenda_items, null: false
|
12
|
+
# probably useful in the future, when handling user permissions
|
13
|
+
# field :visible, !types.Boolean, "Whether this minutes is public or not", property: :visible
|
14
|
+
|
15
|
+
field :created_at, Decidim::Core::DateTimeType, description: "The date and time this agenda was created", null: true
|
16
|
+
field :updated_at, Decidim::Core::DateTimeType, description: "The date and time this agenda was updated", null: true
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -3,14 +3,22 @@
|
|
3
3
|
module Decidim
|
4
4
|
module Meetings
|
5
5
|
# This interface represents all linked resources available in the module meetings
|
6
|
-
LinkedResourcesInterface
|
7
|
-
|
6
|
+
module LinkedResourcesInterface
|
7
|
+
include Decidim::Api::Types::BaseInterface
|
8
|
+
graphql_name "MeetingsLinkedResourcesInterface"
|
8
9
|
description "An interface that can be used with Resourceable models."
|
9
10
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
11
|
+
if Decidim::Meetings.enable_proposal_linking
|
12
|
+
field(
|
13
|
+
:proposals_from_meeting,
|
14
|
+
[Decidim::Proposals::ProposalType, { null: true }],
|
15
|
+
"Proposals created in this meeting",
|
16
|
+
null: false
|
17
|
+
)
|
18
|
+
end
|
19
|
+
|
20
|
+
def proposals_from_meeting
|
21
|
+
object.linked_resources(:proposals, :proposals_from_meeting)
|
14
22
|
end
|
15
23
|
end
|
16
24
|
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Meetings
|
5
|
+
class MeetingType < Decidim::Api::Types::BaseObject
|
6
|
+
description "A meeting"
|
7
|
+
|
8
|
+
implements Decidim::Comments::CommentableInterface
|
9
|
+
implements Decidim::Core::AuthorableInterface
|
10
|
+
implements Decidim::Core::CategorizableInterface
|
11
|
+
implements Decidim::Core::ScopableInterface
|
12
|
+
implements Decidim::Core::AttachableInterface
|
13
|
+
implements Decidim::Core::TimestampsInterface
|
14
|
+
implements Decidim::Meetings::ServicesInterface
|
15
|
+
implements Decidim::Meetings::LinkedResourcesInterface if Decidim::Meetings.enable_proposal_linking
|
16
|
+
implements Decidim::Forms::QuestionnaireEntityInterface
|
17
|
+
|
18
|
+
field :id, GraphQL::Types::ID, "ID of this meeting", null: false
|
19
|
+
field :reference, GraphQL::Types::String, "Reference for this meeting", null: false
|
20
|
+
field :title, Decidim::Core::TranslatedFieldType, "The title of this meeting.", null: false
|
21
|
+
field :description, Decidim::Core::TranslatedFieldType, "The description of this meeting.", null: true
|
22
|
+
field :start_time, Decidim::Core::DateTimeType, "The time this meeting starts", null: false
|
23
|
+
field :end_time, Decidim::Core::DateTimeType, "The time this meeting ends", null: false
|
24
|
+
field :agenda, Decidim::Meetings::AgendaType, "Agenda for this meeting, if available", null: true
|
25
|
+
|
26
|
+
def agenda
|
27
|
+
object.agenda if object.agenda&.visible?
|
28
|
+
end
|
29
|
+
|
30
|
+
field :closed, GraphQL::Types::Boolean, "Whether this meeting is closed or not.", method: :closed?, null: false
|
31
|
+
field :isWithdrawn, GraphQL::Types::Boolean, "Whether this meeting is withdrawn or not.", method: :withdrawn?, null: false
|
32
|
+
field :closing_report, Decidim::Core::TranslatedFieldType, "The closing report of this meeting.", null: true
|
33
|
+
field :video_url, GraphQL::Types::String, "URL for the video of the session, if any", null: true
|
34
|
+
field :audio_url, GraphQL::Types::String, "URL for the audio of the session, if any", null: true
|
35
|
+
|
36
|
+
def closing_report
|
37
|
+
object.closing_report if object.closing_visible?
|
38
|
+
end
|
39
|
+
|
40
|
+
def video_url
|
41
|
+
object.video_url if object.closing_visible?
|
42
|
+
end
|
43
|
+
|
44
|
+
def audio_url
|
45
|
+
object.audio_url if object.closing_visible?
|
46
|
+
end
|
47
|
+
|
48
|
+
field :created_at, Decidim::Core::DateTimeType, description: "The date and time this minutes was created", null: true
|
49
|
+
field :updated_at, Decidim::Core::DateTimeType, description: "The date and time this minutes was updated", null: true
|
50
|
+
|
51
|
+
field :attending_organizations, GraphQL::Types::String, "list of attending organizations", null: true
|
52
|
+
field :attendee_count, GraphQL::Types::Int, "Amount of attendees to this meeting", method: :attendees_count, null: true
|
53
|
+
field :contribution_count, GraphQL::Types::Int, "Amount of contributions to this meeting", method: :contributions_count, null: true
|
54
|
+
|
55
|
+
field :private_meeting, GraphQL::Types::Boolean, "Whether the meeting is private or not (it can only be true if transparent)", null: false
|
56
|
+
field :transparent, GraphQL::Types::Boolean, "For private meetings, information is public if transparent", null: false
|
57
|
+
field :registrations_enabled, GraphQL::Types::Boolean, "Whether the registrations are enabled or not", null: false
|
58
|
+
field :registration_terms, Decidim::Core::TranslatedFieldType, "The registration terms", null: true
|
59
|
+
field :remaining_slots, GraphQL::Types::Int, "Amount of slots available for this meeting", null: true
|
60
|
+
field :registration_form_enabled, GraphQL::Types::Boolean, "Whether the registrations have a form or not", null: false
|
61
|
+
field :registration_form, Decidim::Forms::QuestionnaireType, description: "If registration requires to fill a form, this is the questionnaire", null: true
|
62
|
+
|
63
|
+
def registration_form
|
64
|
+
object.questionnaire if object.registration_form_enabled?
|
65
|
+
end
|
66
|
+
field :location, Decidim::Core::TranslatedFieldType, "The location of this meeting (free format)", null: true
|
67
|
+
field :location_hints, Decidim::Core::TranslatedFieldType, "The location of this meeting (free format)", null: true
|
68
|
+
field :address, GraphQL::Types::String, "The physical address of this meeting (used for geolocation)", null: true
|
69
|
+
field :coordinates, Decidim::Core::CoordinatesType, "Physical coordinates for this meeting", null: true
|
70
|
+
|
71
|
+
def coordinates
|
72
|
+
[object.latitude, object.longitude]
|
73
|
+
end
|
74
|
+
field :type_of_meeting, GraphQL::Types::String, "The type of the meeting (online or in-person)", null: false
|
75
|
+
field :online_meeting_url, GraphQL::Types::String, "The URL of the meeting (when the type is online)", null: false
|
76
|
+
field :iframe_embed_type, GraphQL::Types::String, "The type of displaying of the online meeting URL", null: true
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Meetings
|
5
|
+
class MeetingsType < Decidim::Api::Types::BaseObject
|
6
|
+
implements Decidim::Core::ComponentInterface
|
7
|
+
|
8
|
+
graphql_name "Meetings"
|
9
|
+
description "A meetings component of a participatory space."
|
10
|
+
|
11
|
+
field :meetings, Decidim::Meetings::MeetingType.connection_type, null: true, connection: true
|
12
|
+
|
13
|
+
def meetings
|
14
|
+
Meeting.published.visible.where(component: object).includes(:component)
|
15
|
+
end
|
16
|
+
|
17
|
+
field :meeting, Decidim::Meetings::MeetingType, null: true do
|
18
|
+
argument :id, GraphQL::Types::ID, required: true
|
19
|
+
end
|
20
|
+
|
21
|
+
def meeting(**args)
|
22
|
+
Meeting.published.visible.where(component: object).find_by(id: args[:id])
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -2,12 +2,12 @@
|
|
2
2
|
|
3
3
|
module Decidim
|
4
4
|
module Meetings
|
5
|
-
ServiceType
|
6
|
-
|
5
|
+
class ServiceType < Decidim::Api::Types::BaseObject
|
6
|
+
graphql_name "MeetingService"
|
7
7
|
description "A meeting service"
|
8
8
|
|
9
|
-
field :title, Decidim::Core::TranslatedFieldType, "The title for the service"
|
10
|
-
field :description, Decidim::Core::TranslatedFieldType, "The description for the service"
|
9
|
+
field :title, Decidim::Core::TranslatedFieldType, "The title for the service", null: true
|
10
|
+
field :description, Decidim::Core::TranslatedFieldType, "The description for the service", null: true
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
@@ -3,11 +3,11 @@
|
|
3
3
|
module Decidim
|
4
4
|
module Meetings
|
5
5
|
# This interface represents a categorizable object.
|
6
|
-
ServicesInterface
|
7
|
-
|
6
|
+
module ServicesInterface
|
7
|
+
include Decidim::Api::Types::BaseInterface
|
8
8
|
description "An interface that can be used with services."
|
9
9
|
|
10
|
-
field :services,
|
10
|
+
field :services, [Decidim::Meetings::ServiceType, { null: true }], "The object's services", null: false
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module ContentParsers
|
5
|
+
# A parser that searches mentions of Meetings in content.
|
6
|
+
#
|
7
|
+
# @see BaseParser Examples of how to use a content parser
|
8
|
+
class MeetingParser < ResourceParser
|
9
|
+
private
|
10
|
+
|
11
|
+
def url_regex
|
12
|
+
%r{#{URL_REGEX_SCHEME}#{URL_REGEX_CONTENT}/meetings/#{URL_REGEX_END_CHAR}+}i
|
13
|
+
end
|
14
|
+
|
15
|
+
def model_class
|
16
|
+
"Decidim::Meetings::Meeting"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module ContentRenderers
|
5
|
+
# A renderer that searches Global IDs representing meetings in content
|
6
|
+
# and replaces it with a link to their show page.
|
7
|
+
#
|
8
|
+
# e.g. gid://<APP_NAME>/Decidim::Meetings::Meeting/1
|
9
|
+
#
|
10
|
+
# @see BaseRenderer Examples of how to use a content renderer
|
11
|
+
class MeetingRenderer < ResourceRenderer
|
12
|
+
def regex
|
13
|
+
%r{gid://([\w-]*/Decidim::Meetings::Meeting/(\d+))}i
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -15,6 +15,10 @@ module Decidim
|
|
15
15
|
get "/answer_options", to: "registration_form#answer_options", as: :answer_options_meeting
|
16
16
|
|
17
17
|
resources :meetings do
|
18
|
+
member do
|
19
|
+
put :publish
|
20
|
+
put :unpublish
|
21
|
+
end
|
18
22
|
resources :meeting_closes, only: [:edit, :update] do
|
19
23
|
get :proposals_picker, on: :collection
|
20
24
|
end
|
@@ -30,7 +34,7 @@ module Decidim
|
|
30
34
|
resources :attachment_collections
|
31
35
|
resources :attachments
|
32
36
|
resources :copies, controller: "meeting_copies", only: [:new, :create]
|
33
|
-
|
37
|
+
resource :poll, only: [:edit, :update], controller: "meetings_poll"
|
34
38
|
end
|
35
39
|
root to: "meetings#index"
|
36
40
|
end
|
data/lib/decidim/meetings/api.rb
CHANGED
@@ -2,6 +2,11 @@
|
|
2
2
|
|
3
3
|
module Decidim
|
4
4
|
module Meetings
|
5
|
+
autoload :AgendaItemType, "decidim/api/agenda_item_type"
|
6
|
+
autoload :AgendaType, "decidim/api/agenda_type"
|
7
|
+
autoload :MeetingType, "decidim/api/meeting_type"
|
8
|
+
autoload :MeetingsType, "decidim/api/meetings_type"
|
9
|
+
autoload :ServiceType, "decidim/api/service_type"
|
5
10
|
autoload :LinkedResourcesInterface, "decidim/api/linked_resources_interface"
|
6
11
|
autoload :ServicesInterface, "decidim/api/services_interface"
|
7
12
|
end
|
@@ -5,7 +5,7 @@ require "decidim/components/namer"
|
|
5
5
|
Decidim.register_component(:meetings) do |component|
|
6
6
|
component.engine = Decidim::Meetings::Engine
|
7
7
|
component.admin_engine = Decidim::Meetings::AdminEngine
|
8
|
-
component.icon = "
|
8
|
+
component.icon = "media/images/decidim_meetings.svg"
|
9
9
|
component.permissions_class_name = "Decidim::Meetings::Permissions"
|
10
10
|
|
11
11
|
component.query_type = "Decidim::Meetings::MeetingsType"
|
@@ -19,12 +19,13 @@ Decidim.register_component(:meetings) do |component|
|
|
19
19
|
resource.model_class_name = "Decidim::Meetings::Meeting"
|
20
20
|
resource.template = "decidim/meetings/meetings/linked_meetings"
|
21
21
|
resource.card = "decidim/meetings/meeting"
|
22
|
-
resource.
|
22
|
+
resource.reported_content_cell = "decidim/meetings/reported_content"
|
23
|
+
resource.actions = %w(join comment)
|
23
24
|
resource.searchable = true
|
24
25
|
end
|
25
26
|
|
26
27
|
component.register_stat :meetings_count, primary: true, priority: Decidim::StatsRegistry::MEDIUM_PRIORITY do |components, start_at, end_at|
|
27
|
-
meetings = Decidim::Meetings::FilteredMeetings.for(components, start_at, end_at)
|
28
|
+
meetings = Decidim::Meetings::FilteredMeetings.for(components, start_at, end_at).except_withdrawn
|
28
29
|
meetings.count
|
29
30
|
end
|
30
31
|
|
@@ -33,13 +34,18 @@ Decidim.register_component(:meetings) do |component|
|
|
33
34
|
Decidim::Follow.where(decidim_followable_type: "Decidim::Meetings::Meeting", decidim_followable_id: meetings_ids).count
|
34
35
|
end
|
35
36
|
|
37
|
+
component.register_stat :comments_count, tag: :comments do |components, start_at, end_at|
|
38
|
+
meetings = Decidim::Meetings::FilteredMeetings.for(components, start_at, end_at).not_hidden
|
39
|
+
meetings.sum(:comments_count)
|
40
|
+
end
|
41
|
+
|
36
42
|
component.exports :meetings do |exports|
|
37
43
|
exports.collection do |component_instance|
|
38
44
|
Decidim::Meetings::Meeting
|
39
45
|
.not_hidden
|
40
46
|
.visible
|
41
47
|
.where(component: component_instance)
|
42
|
-
.includes(component: { participatory_space: :organization })
|
48
|
+
.includes(:scope, :category, :attachments, component: { participatory_space: :organization })
|
43
49
|
end
|
44
50
|
|
45
51
|
exports.include_in_open_data = true
|
@@ -47,7 +53,29 @@ Decidim.register_component(:meetings) do |component|
|
|
47
53
|
exports.serializer Decidim::Meetings::MeetingSerializer
|
48
54
|
end
|
49
55
|
|
50
|
-
component.
|
56
|
+
component.exports :meeting_comments do |exports|
|
57
|
+
exports.collection do |component_instance|
|
58
|
+
Decidim::Comments::Export.comments_for_resource(
|
59
|
+
Decidim::Meetings::Meeting, component_instance
|
60
|
+
).includes(:author, :user_group, root_commentable: { component: { participatory_space: :organization } })
|
61
|
+
end
|
62
|
+
|
63
|
+
exports.include_in_open_data = true
|
64
|
+
|
65
|
+
exports.serializer Decidim::Comments::CommentSerializer
|
66
|
+
end
|
67
|
+
|
68
|
+
component.exports :answers do |exports|
|
69
|
+
exports.collection do |_component, _user, resource_id|
|
70
|
+
Decidim::Meetings::QuestionnaireUserAnswers.for(resource_id)
|
71
|
+
end
|
72
|
+
|
73
|
+
exports.formats %w(CSV JSON Excel FormPDF)
|
74
|
+
|
75
|
+
exports.serializer Decidim::Meetings::UserAnswersSerializer
|
76
|
+
end
|
77
|
+
|
78
|
+
component.actions = %w(join comment)
|
51
79
|
|
52
80
|
component.settings(:global) do |settings|
|
53
81
|
settings.attribute :scopes_enabled, type: :boolean, default: false
|
@@ -56,9 +84,11 @@ Decidim.register_component(:meetings) do |component|
|
|
56
84
|
settings.attribute :default_registration_terms, type: :text, translated: true, editor: true
|
57
85
|
settings.attribute :comments_enabled, type: :boolean, default: true
|
58
86
|
settings.attribute :comments_max_length, type: :integer, required: false
|
87
|
+
settings.attribute :registration_code_enabled, type: :boolean, default: true
|
59
88
|
settings.attribute :resources_permissions_enabled, type: :boolean, default: true
|
60
89
|
settings.attribute :enable_pads_creation, type: :boolean, default: false
|
61
90
|
settings.attribute :creation_enabled_for_participants, type: :boolean, default: false
|
91
|
+
settings.attribute :maps_enabled, type: :boolean, default: true
|
62
92
|
end
|
63
93
|
|
64
94
|
component.settings(:step) do |settings|
|
@@ -97,18 +127,20 @@ Decidim.register_component(:meetings) do |component|
|
|
97
127
|
end
|
98
128
|
|
99
129
|
2.times do
|
130
|
+
start_time = Faker::Date.between(from: 20.weeks.ago, to: 20.weeks.from_now)
|
131
|
+
end_time = start_time + [rand(1..4).hours, rand(1..20).days].sample
|
100
132
|
params = {
|
101
133
|
component: component,
|
102
|
-
scope: Faker::Boolean.boolean(0.5) ? global : scopes.sample,
|
134
|
+
scope: Faker::Boolean.boolean(true_ratio: 0.5) ? global : scopes.sample,
|
103
135
|
category: participatory_space.categories.sample,
|
104
|
-
title: Decidim::Faker::Localized.sentence(2),
|
136
|
+
title: Decidim::Faker::Localized.sentence(word_count: 2),
|
105
137
|
description: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
|
106
|
-
Decidim::Faker::Localized.paragraph(3)
|
138
|
+
Decidim::Faker::Localized.paragraph(sentence_count: 3)
|
107
139
|
end,
|
108
140
|
location: Decidim::Faker::Localized.sentence,
|
109
141
|
location_hints: Decidim::Faker::Localized.sentence,
|
110
|
-
start_time:
|
111
|
-
end_time:
|
142
|
+
start_time: start_time,
|
143
|
+
end_time: end_time,
|
112
144
|
address: "#{Faker::Address.street_address} #{Faker::Address.zip} #{Faker::Address.city}",
|
113
145
|
latitude: Faker::Address.latitude,
|
114
146
|
longitude: Faker::Address.longitude,
|
@@ -116,10 +148,33 @@ Decidim.register_component(:meetings) do |component|
|
|
116
148
|
available_slots: (10..50).step(10).to_a.sample,
|
117
149
|
author: participatory_space.organization,
|
118
150
|
registration_terms: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
|
119
|
-
Decidim::Faker::Localized.paragraph(3)
|
120
|
-
end
|
151
|
+
Decidim::Faker::Localized.paragraph(sentence_count: 3)
|
152
|
+
end,
|
153
|
+
published_at: Faker::Boolean.boolean(true_ratio: 0.8) ? Time.current : nil
|
121
154
|
}
|
122
155
|
|
156
|
+
_hybrid_meeting = Decidim.traceability.create!(
|
157
|
+
Decidim::Meetings::Meeting,
|
158
|
+
admin_user,
|
159
|
+
params.merge(
|
160
|
+
title: Decidim::Faker::Localized.sentence(word_count: 2),
|
161
|
+
type_of_meeting: :hybrid,
|
162
|
+
online_meeting_url: "http://example.org"
|
163
|
+
),
|
164
|
+
visibility: "all"
|
165
|
+
)
|
166
|
+
|
167
|
+
_online_meeting = Decidim.traceability.create!(
|
168
|
+
Decidim::Meetings::Meeting,
|
169
|
+
admin_user,
|
170
|
+
params.merge(
|
171
|
+
title: Decidim::Faker::Localized.sentence(word_count: 2),
|
172
|
+
type_of_meeting: :online,
|
173
|
+
online_meeting_url: "http://example.org"
|
174
|
+
),
|
175
|
+
visibility: "all"
|
176
|
+
)
|
177
|
+
|
123
178
|
meeting = Decidim.traceability.create!(
|
124
179
|
Decidim::Meetings::Meeting,
|
125
180
|
admin_user,
|
@@ -130,18 +185,18 @@ Decidim.register_component(:meetings) do |component|
|
|
130
185
|
2.times do
|
131
186
|
Decidim::Meetings::Service.create!(
|
132
187
|
meeting: meeting,
|
133
|
-
title: Decidim::Faker::Localized.sentence(2),
|
134
|
-
description: Decidim::Faker::Localized.sentence(5)
|
188
|
+
title: Decidim::Faker::Localized.sentence(word_count: 2),
|
189
|
+
description: Decidim::Faker::Localized.sentence(word_count: 5)
|
135
190
|
)
|
136
191
|
end
|
137
192
|
|
138
193
|
Decidim::Forms::Questionnaire.create!(
|
139
194
|
title: Decidim::Faker::Localized.paragraph,
|
140
195
|
description: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
|
141
|
-
Decidim::Faker::Localized.paragraph(3)
|
196
|
+
Decidim::Faker::Localized.paragraph(sentence_count: 3)
|
142
197
|
end,
|
143
198
|
tos: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
|
144
|
-
Decidim::Faker::Localized.paragraph(2)
|
199
|
+
Decidim::Faker::Localized.paragraph(sentence_count: 2)
|
145
200
|
end,
|
146
201
|
questionnaire_for: meeting
|
147
202
|
)
|
@@ -152,15 +207,15 @@ Decidim.register_component(:meetings) do |component|
|
|
152
207
|
user = Decidim::User.find_or_initialize_by(email: email)
|
153
208
|
|
154
209
|
user.update!(
|
155
|
-
password: "
|
156
|
-
password_confirmation: "
|
210
|
+
password: "decidim123456789",
|
211
|
+
password_confirmation: "decidim123456789",
|
157
212
|
name: name,
|
158
213
|
nickname: Faker::Twitter.unique.screen_name,
|
159
214
|
organization: component.organization,
|
160
215
|
tos_agreement: "1",
|
161
216
|
confirmed_at: Time.current,
|
162
217
|
personal_url: Faker::Internet.url,
|
163
|
-
about: Faker::Lorem.paragraph(2)
|
218
|
+
about: Faker::Lorem.paragraph(sentence_count: 2)
|
164
219
|
)
|
165
220
|
|
166
221
|
Decidim::Meetings::Registration.create!(
|
@@ -171,28 +226,46 @@ Decidim.register_component(:meetings) do |component|
|
|
171
226
|
|
172
227
|
attachment_collection = Decidim::AttachmentCollection.create!(
|
173
228
|
name: Decidim::Faker::Localized.word,
|
174
|
-
description: Decidim::Faker::Localized.sentence(5),
|
229
|
+
description: Decidim::Faker::Localized.sentence(word_count: 5),
|
175
230
|
collection_for: meeting
|
176
231
|
)
|
177
232
|
|
178
233
|
Decidim::Attachment.create!(
|
179
|
-
title: Decidim::Faker::Localized.sentence(2),
|
180
|
-
description: Decidim::Faker::Localized.sentence(5),
|
234
|
+
title: Decidim::Faker::Localized.sentence(word_count: 2),
|
235
|
+
description: Decidim::Faker::Localized.sentence(word_count: 5),
|
181
236
|
attachment_collection: attachment_collection,
|
182
237
|
attached_to: meeting,
|
183
|
-
|
238
|
+
content_type: "application/pdf",
|
239
|
+
file: ActiveStorage::Blob.create_and_upload!(
|
240
|
+
io: File.open(File.join(__dir__, "seeds", "Exampledocument.pdf")),
|
241
|
+
filename: "Exampledocument.pdf",
|
242
|
+
content_type: "application/pdf",
|
243
|
+
metadata: nil
|
244
|
+
) # Keep after attached_to
|
184
245
|
)
|
185
246
|
Decidim::Attachment.create!(
|
186
|
-
title: Decidim::Faker::Localized.sentence(2),
|
187
|
-
description: Decidim::Faker::Localized.sentence(5),
|
247
|
+
title: Decidim::Faker::Localized.sentence(word_count: 2),
|
248
|
+
description: Decidim::Faker::Localized.sentence(word_count: 5),
|
188
249
|
attached_to: meeting,
|
189
|
-
|
250
|
+
content_type: "image/jpeg",
|
251
|
+
file: ActiveStorage::Blob.create_and_upload!(
|
252
|
+
io: File.open(File.join(__dir__, "seeds", "city.jpeg")),
|
253
|
+
filename: "city.jpeg",
|
254
|
+
content_type: "image/jpeg",
|
255
|
+
metadata: nil
|
256
|
+
) # Keep after attached_to
|
190
257
|
)
|
191
258
|
Decidim::Attachment.create!(
|
192
|
-
title: Decidim::Faker::Localized.sentence(2),
|
193
|
-
description: Decidim::Faker::Localized.sentence(5),
|
259
|
+
title: Decidim::Faker::Localized.sentence(word_count: 2),
|
260
|
+
description: Decidim::Faker::Localized.sentence(word_count: 5),
|
194
261
|
attached_to: meeting,
|
195
|
-
|
262
|
+
content_type: "application/pdf",
|
263
|
+
file: ActiveStorage::Blob.create_and_upload!(
|
264
|
+
io: File.open(File.join(__dir__, "seeds", "Exampledocument.pdf")),
|
265
|
+
filename: "Exampledocument.pdf",
|
266
|
+
content_type: "application/pdf",
|
267
|
+
metadata: nil
|
268
|
+
) # Keep after attached_to
|
196
269
|
)
|
197
270
|
end
|
198
271
|
|
@@ -209,18 +282,19 @@ Decidim.register_component(:meetings) do |component|
|
|
209
282
|
author = user_group.users.sample
|
210
283
|
end
|
211
284
|
|
285
|
+
start_time = Faker::Date.between(from: 20.weeks.ago, to: 20.weeks.from_now)
|
212
286
|
params = {
|
213
287
|
component: component,
|
214
|
-
scope: Faker::Boolean.boolean(0.5) ? global : scopes.sample,
|
288
|
+
scope: Faker::Boolean.boolean(true_ratio: 0.5) ? global : scopes.sample,
|
215
289
|
category: participatory_space.categories.sample,
|
216
|
-
title: Decidim::Faker::Localized.sentence(2),
|
290
|
+
title: Decidim::Faker::Localized.sentence(word_count: 2),
|
217
291
|
description: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
|
218
|
-
Decidim::Faker::Localized.paragraph(3)
|
292
|
+
Decidim::Faker::Localized.paragraph(sentence_count: 3)
|
219
293
|
end,
|
220
294
|
location: Decidim::Faker::Localized.sentence,
|
221
295
|
location_hints: Decidim::Faker::Localized.sentence,
|
222
|
-
start_time:
|
223
|
-
end_time:
|
296
|
+
start_time: start_time,
|
297
|
+
end_time: start_time + rand(1..4).hours,
|
224
298
|
address: "#{Faker::Address.street_address} #{Faker::Address.zip} #{Faker::Address.city}",
|
225
299
|
latitude: Faker::Address.latitude,
|
226
300
|
longitude: Faker::Address.longitude,
|
@@ -22,9 +22,9 @@ module Decidim
|
|
22
22
|
end
|
23
23
|
|
24
24
|
initializer "decidim.meetings.content_blocks" do
|
25
|
-
Decidim.content_blocks.register(:homepage, :
|
26
|
-
content_block.cell = "decidim/meetings/content_blocks/
|
27
|
-
content_block.public_name_key = "decidim.meetings.content_blocks.
|
25
|
+
Decidim.content_blocks.register(:homepage, :upcoming_meetings) do |content_block|
|
26
|
+
content_block.cell = "decidim/meetings/content_blocks/upcoming_meetings"
|
27
|
+
content_block.public_name_key = "decidim.meetings.content_blocks.upcoming_meetings.name"
|
28
28
|
content_block.default!
|
29
29
|
end
|
30
30
|
end
|