decidim-meetings 0.27.10 → 0.28.0.rc4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/cells/decidim/meetings/attending_organizations_list_cell.rb +32 -0
- data/app/cells/decidim/meetings/cancel_registration_meeting_button/cancelation_modal.erb +21 -0
- data/app/cells/decidim/meetings/cancel_registration_meeting_button/show.erb +10 -13
- data/app/cells/decidim/meetings/cancel_registration_meeting_button_cell.rb +2 -2
- data/app/cells/decidim/meetings/content_blocks/highlighted_meetings_cell.rb +8 -18
- data/app/cells/decidim/meetings/dates_and_map/show.erb +25 -0
- data/app/cells/decidim/meetings/dates_and_map/static_map.erb +1 -0
- data/app/cells/decidim/meetings/dates_and_map_cell.rb +35 -0
- data/app/cells/decidim/meetings/highlighted_meetings_for_component/show.erb +32 -30
- data/app/cells/decidim/meetings/highlighted_meetings_for_component_cell.rb +76 -16
- data/app/cells/decidim/meetings/join_meeting_button/registration_modal.erb +25 -0
- data/app/cells/decidim/meetings/join_meeting_button/remaining_slots.erb +4 -0
- data/app/cells/decidim/meetings/join_meeting_button/show.erb +6 -4
- data/app/cells/decidim/meetings/join_meeting_button_cell.rb +3 -7
- data/app/cells/decidim/meetings/meeting_activity_cell.rb +1 -12
- data/app/cells/decidim/meetings/meeting_card_metadata_cell.rb +64 -0
- data/app/cells/decidim/meetings/meeting_cell.rb +2 -6
- data/app/cells/decidim/meetings/meeting_l/image.erb +5 -0
- data/app/cells/decidim/meetings/meeting_l_cell.rb +33 -0
- data/app/cells/decidim/meetings/meeting_month/show.erb +33 -0
- data/app/cells/decidim/meetings/meeting_month_cell.rb +72 -0
- data/app/cells/decidim/meetings/meeting_s_cell.rb +5 -37
- data/app/cells/decidim/meetings/meetings_map/show.erb +9 -24
- data/app/cells/decidim/meetings/meetings_map_cell.rb +1 -1
- data/app/cells/decidim/meetings/online_meeting_cell.rb +1 -0
- data/app/cells/decidim/meetings/online_meeting_link/show.erb +18 -41
- data/app/cells/decidim/meetings/public_participants_list/show.erb +4 -15
- data/app/commands/decidim/meetings/admin/copy_meeting.rb +1 -1
- data/app/commands/decidim/meetings/admin/create_meeting.rb +1 -1
- data/app/commands/decidim/meetings/admin/invite_user_to_join_meeting.rb +5 -5
- data/app/commands/decidim/meetings/admin/publish_meeting.rb +1 -1
- data/app/commands/decidim/meetings/admin/unpublish_meeting.rb +1 -1
- data/app/commands/decidim/meetings/create_meeting.rb +14 -3
- data/app/commands/decidim/meetings/decline_invitation.rb +1 -1
- data/app/commands/decidim/meetings/join_meeting.rb +5 -5
- data/app/commands/decidim/meetings/update_meeting.rb +13 -3
- data/app/controllers/concerns/decidim/meetings/component_filterable.rb +4 -4
- data/app/controllers/decidim/meetings/admin/agenda_controller.rb +6 -6
- data/app/controllers/decidim/meetings/admin/invites_controller.rb +3 -3
- data/app/controllers/decidim/meetings/admin/meeting_closes_controller.rb +2 -4
- data/app/controllers/decidim/meetings/admin/meeting_copies_controller.rb +3 -3
- data/app/controllers/decidim/meetings/admin/meetings_controller.rb +7 -7
- data/app/controllers/decidim/meetings/admin/meetings_poll_controller.rb +4 -4
- data/app/controllers/decidim/meetings/admin/registrations_controller.rb +6 -6
- data/app/controllers/decidim/meetings/application_controller.rb +11 -0
- data/app/controllers/decidim/meetings/calendars_controller.rb +0 -1
- data/app/controllers/decidim/meetings/directory/application_controller.rb +12 -0
- data/app/controllers/decidim/meetings/directory/meetings_controller.rb +5 -30
- data/app/controllers/decidim/meetings/live_events_controller.rb +1 -0
- data/app/controllers/decidim/meetings/meeting_closes_controller.rb +2 -3
- data/app/controllers/decidim/meetings/meetings_controller.rb +75 -7
- data/app/controllers/decidim/meetings/polls/answers_controller.rb +2 -2
- data/app/controllers/decidim/meetings/polls/questions_controller.rb +1 -1
- data/app/controllers/decidim/meetings/registrations_controller.rb +5 -5
- data/app/events/decidim/meetings/close_meeting_event.rb +1 -1
- data/app/events/decidim/meetings/meeting_event.rb +1 -1
- data/app/events/decidim/meetings/meeting_registration_notification_event.rb +3 -3
- data/app/events/decidim/meetings/meeting_registrations_enabled_event.rb +1 -1
- data/app/events/decidim/meetings/meeting_registrations_over_percentage_event.rb +1 -1
- data/app/events/decidim/meetings/registration_code_validated_event.rb +1 -1
- data/app/forms/decidim/meetings/admin/meeting_form.rb +5 -1
- data/app/forms/decidim/meetings/admin/meeting_registrations_form.rb +2 -2
- data/app/forms/decidim/meetings/admin/validate_registration_code_form.rb +1 -1
- data/app/forms/decidim/meetings/base_meeting_form.rb +1 -1
- data/app/forms/decidim/meetings/meeting_form.rb +3 -3
- data/app/helpers/decidim/meetings/admin/application_helper.rb +1 -0
- data/app/helpers/decidim/meetings/application_helper.rb +18 -25
- data/app/helpers/decidim/meetings/directory/application_helper.rb +11 -59
- data/app/helpers/decidim/meetings/map_helper.rb +2 -9
- data/app/helpers/decidim/meetings/meetings_helper.rb +6 -5
- data/app/jobs/decidim/meetings/hide_all_created_by_author_job.rb +13 -0
- data/app/mailers/decidim/meetings/admin/invite_join_meeting_mailer.rb +1 -1
- data/app/mailers/decidim/meetings/registration_mailer.rb +1 -1
- data/app/models/decidim/meetings/meeting.rb +11 -32
- data/app/models/decidim/meetings/question.rb +1 -1
- data/app/packs/entrypoints/decidim_meetings.js +3 -0
- data/app/packs/images/decidim/gamification/badges/decidim_gamification_badges_attended_meetings.svg +42 -1
- data/app/packs/src/decidim/meetings/admin/agendas.js +3 -4
- data/app/packs/src/decidim/meetings/admin/registrations_form.js +12 -4
- data/app/packs/src/decidim/meetings/meetings_form.js +1 -1
- data/app/packs/src/decidim/meetings/poll.component.js +1 -28
- data/app/packs/stylesheets/decidim/meetings/_calendar.scss +47 -0
- data/app/packs/stylesheets/decidim/meetings/_item.scss +177 -0
- data/app/packs/stylesheets/decidim/meetings/_list.scss +58 -0
- data/app/packs/stylesheets/decidim/meetings/_live_event.scss +128 -0
- data/app/packs/stylesheets/decidim/meetings/meetings.scss +4 -0
- data/app/permissions/decidim/meetings/permissions.rb +15 -12
- data/app/presenters/decidim/meetings/admin_log/invite_presenter.rb +2 -2
- data/app/presenters/decidim/meetings/admin_log/meeting_presenter.rb +6 -2
- data/app/presenters/decidim/meetings/admin_log/questionnaire_presenter.rb +2 -2
- data/app/presenters/decidim/meetings/admin_log/value_types/meeting_title_description_presenter.rb +1 -1
- data/app/presenters/decidim/meetings/log/resource_presenter.rb +18 -0
- data/app/presenters/decidim/meetings/meeting_presenter.rb +8 -2
- data/app/services/decidim/meetings/calendar/component_calendar.rb +1 -1
- data/app/services/decidim/meetings/close_meeting_reminder_generator.rb +7 -13
- data/app/services/decidim/meetings/meeting_iframe_embedder.rb +1 -1
- data/app/views/decidim/meetings/_calendar_modal.html.erb +19 -21
- data/app/views/decidim/meetings/admin/agenda/_agenda_item.html.erb +12 -12
- data/app/views/decidim/meetings/admin/agenda/_agenda_item_child.html.erb +8 -8
- data/app/views/decidim/meetings/admin/agenda/_agenda_item_child_template.html.erb +1 -1
- data/app/views/decidim/meetings/admin/agenda/_agenda_item_fields.html.erb +3 -3
- data/app/views/decidim/meetings/admin/agenda/_form.html.erb +54 -50
- data/app/views/decidim/meetings/admin/agenda/edit.html.erb +18 -6
- data/app/views/decidim/meetings/admin/agenda/new.html.erb +17 -5
- data/app/views/decidim/meetings/admin/invite_join_meeting_mailer/invite.html.erb +11 -2
- data/app/views/decidim/meetings/admin/invites/_form.html.erb +38 -28
- data/app/views/decidim/meetings/admin/invites/index.html.erb +77 -81
- data/app/views/decidim/meetings/admin/meeting_closes/_form.html.erb +26 -28
- data/app/views/decidim/meetings/admin/meeting_closes/edit.html.erb +17 -5
- data/app/views/decidim/meetings/admin/meeting_copies/new.html.erb +17 -6
- data/app/views/decidim/meetings/admin/meetings/_form.html.erb +76 -83
- data/app/views/decidim/meetings/admin/meetings/_service.html.erb +14 -10
- data/app/views/decidim/meetings/admin/meetings/_services.html.erb +9 -5
- data/app/views/decidim/meetings/admin/meetings/edit.html.erb +17 -7
- data/app/views/decidim/meetings/admin/meetings/index.html.erb +133 -129
- data/app/views/decidim/meetings/admin/meetings/new.html.erb +16 -6
- data/app/views/decidim/meetings/admin/poll/_answer_option.html.erb +1 -1
- data/app/views/decidim/meetings/admin/poll/_answer_option_template.html.erb +1 -1
- data/app/views/decidim/meetings/admin/poll/_form.html.erb +17 -32
- data/app/views/decidim/meetings/admin/poll/_question.html.erb +81 -75
- data/app/views/decidim/meetings/admin/poll/edit.html.erb +28 -8
- data/app/views/decidim/meetings/admin/registrations/_form.html.erb +32 -55
- data/app/views/decidim/meetings/admin/registrations/edit.html.erb +59 -26
- data/app/views/decidim/meetings/directory/meetings/index.html.erb +15 -20
- data/app/views/decidim/meetings/directory/meetings/index.js.erb +1 -23
- data/app/views/decidim/meetings/layouts/_aside_block.html.erb +8 -0
- data/app/views/decidim/meetings/layouts/live_event.html.erb +20 -19
- data/app/views/decidim/meetings/live_events/show.html.erb +4 -5
- data/app/views/decidim/meetings/meeting_closes/_form.html.erb +3 -10
- data/app/views/decidim/meetings/meeting_closes/edit.html.erb +17 -21
- data/app/views/decidim/meetings/meetings/_actions.html.erb +6 -0
- data/app/views/decidim/meetings/meetings/_add_to_calendar_modal.html.erb +17 -0
- data/app/views/decidim/meetings/meetings/_form.html.erb +26 -34
- data/app/views/decidim/meetings/meetings/_linked_meetings.html.erb +3 -22
- data/app/views/decidim/meetings/meetings/_meeting.html.erb +74 -0
- data/app/views/decidim/meetings/meetings/_meeting_agenda.html.erb +28 -26
- data/app/views/decidim/meetings/meetings/_meeting_aside.html.erb +98 -0
- data/app/views/decidim/meetings/meetings/_meeting_minutes.html.erb +23 -36
- data/app/views/decidim/meetings/meetings/edit.html.erb +17 -21
- data/app/views/decidim/meetings/meetings/index.html.erb +15 -33
- data/app/views/decidim/meetings/meetings/index.js.erb +1 -23
- data/app/views/decidim/meetings/meetings/new.html.erb +17 -21
- data/app/views/decidim/meetings/meetings/show.html.erb +8 -167
- data/app/views/decidim/meetings/polls/answers/_multiple_option.html.erb +9 -13
- data/app/views/decidim/meetings/polls/answers/_single_option.html.erb +4 -4
- data/app/views/decidim/meetings/polls/answers/create.js.erb +1 -1
- data/app/views/decidim/meetings/polls/questions/_index.html.erb +1 -1
- data/app/views/decidim/meetings/polls/questions/_index_admin.html.erb +5 -5
- data/app/views/decidim/meetings/polls/questions/_published_question.html.erb +9 -11
- data/app/views/decidim/meetings/polls/questions/_question.html.erb +3 -3
- data/app/views/decidim/meetings/polls/questions/index_admin.js.erb +1 -1
- data/app/views/decidim/meetings/shared/_filters.html.erb +20 -0
- data/app/views/decidim/meetings/shared/_index.html.erb +24 -0
- data/app/views/decidim/meetings/shared/_index.js.erb +16 -0
- data/app/views/decidim/meetings/shared/_meetings.html.erb +33 -0
- data/app/views/decidim/meetings/shared/_meetings_aside.html.erb +18 -0
- data/app/views/decidim/meetings/versions/show.html.erb +14 -4
- data/app/views/decidim/participatory_spaces/_conference_venues.html.erb +13 -15
- data/config/assets.rb +0 -2
- data/config/locales/ar.yml +6 -94
- data/config/locales/bg.yml +0 -673
- data/config/locales/ca.yml +52 -75
- data/config/locales/cs.yml +48 -71
- data/config/locales/de.yml +53 -76
- data/config/locales/el.yml +48 -51
- data/config/locales/en.yml +51 -74
- data/config/locales/es-MX.yml +50 -73
- data/config/locales/es-PY.yml +48 -71
- data/config/locales/es.yml +53 -76
- data/config/locales/eu.yml +53 -76
- data/config/locales/fi-plain.yml +46 -69
- data/config/locales/fi.yml +44 -67
- data/config/locales/fr-CA.yml +43 -69
- data/config/locales/fr.yml +48 -71
- data/config/locales/ga-IE.yml +2 -16
- data/config/locales/gl.yml +5 -63
- data/config/locales/hu.yml +6 -92
- data/config/locales/id-ID.yml +4 -60
- data/config/locales/is-IS.yml +1 -22
- data/config/locales/it.yml +6 -86
- data/config/locales/ja.yml +45 -74
- data/config/locales/lb.yml +6 -67
- data/config/locales/lt.yml +42 -65
- data/config/locales/lv.yml +4 -61
- data/config/locales/nl.yml +4 -92
- data/config/locales/no.yml +4 -80
- data/config/locales/pl.yml +2 -199
- data/config/locales/pt-BR.yml +4 -200
- data/config/locales/pt.yml +5 -85
- data/config/locales/ro-RO.yml +11 -81
- data/config/locales/ru.yml +5 -60
- data/config/locales/sk.yml +4 -61
- data/config/locales/sl.yml +0 -3
- data/config/locales/sr-CS.yml +0 -6
- data/config/locales/sv.yml +14 -94
- data/config/locales/tr-TR.yml +5 -78
- data/config/locales/uk.yml +5 -53
- data/config/locales/zh-CN.yml +3 -70
- data/config/locales/zh-TW.yml +24 -51
- data/db/migrate/20201016065302_fix_meetings_registration_terms.rb +1 -1
- data/db/migrate/20230427105701_change_types_and_registration_types_on_meetings.rb +49 -0
- data/lib/decidim/meetings/admin_engine.rb +2 -2
- data/lib/decidim/meetings/component.rb +4 -216
- data/lib/decidim/meetings/content_blocks/registry_manager.rb +17 -0
- data/lib/decidim/meetings/directory_engine.rb +4 -6
- data/lib/decidim/meetings/engine.rb +62 -27
- data/lib/decidim/meetings/meeting_serializer.rb +3 -3
- data/lib/decidim/meetings/seeds.rb +188 -0
- data/lib/decidim/meetings/test/factories.rb +124 -54
- data/lib/decidim/meetings/test/notifications_handling.rb +3 -3
- data/lib/decidim/meetings/test/translated_event.rb +1 -1
- data/lib/decidim/meetings/version.rb +1 -1
- metadata +58 -58
- data/app/cells/decidim/meetings/content_blocks/highlighted_meetings/elements.erb +0 -16
- data/app/cells/decidim/meetings/content_blocks/highlighted_meetings/heading.erb +0 -1
- data/app/cells/decidim/meetings/content_blocks/upcoming_meetings/show.erb +0 -26
- data/app/cells/decidim/meetings/content_blocks/upcoming_meetings_cell.rb +0 -63
- data/app/cells/decidim/meetings/join_meeting_button/registration_confirm.erb +0 -31
- data/app/cells/decidim/meetings/meeting_highlighted_list_item/show.erb +0 -21
- data/app/cells/decidim/meetings/meeting_highlighted_list_item_cell.rb +0 -10
- data/app/cells/decidim/meetings/meeting_list_item/show.erb +0 -14
- data/app/cells/decidim/meetings/meeting_list_item_cell.rb +0 -44
- data/app/cells/decidim/meetings/meeting_m/address.erb +0 -5
- data/app/cells/decidim/meetings/meeting_m/data.erb +0 -2
- data/app/cells/decidim/meetings/meeting_m/date.erb +0 -8
- data/app/cells/decidim/meetings/meeting_m/footer.erb +0 -9
- data/app/cells/decidim/meetings/meeting_m/multiple_dates.erb +0 -17
- data/app/cells/decidim/meetings/meeting_m/single_date.erb +0 -9
- data/app/cells/decidim/meetings/meeting_m/tags.erb +0 -1
- data/app/cells/decidim/meetings/meeting_m_cell.rb +0 -121
- data/app/cells/decidim/meetings/meeting_s/show.erb +0 -27
- data/app/controllers/concerns/decidim/meetings/filterable.rb +0 -27
- data/app/controllers/decidim/meetings/widgets_controller.rb +0 -30
- data/app/packs/stylesheets/decidim/meetings/_header.scss +0 -52
- data/app/packs/stylesheets/decidim/meetings/_main.scss +0 -178
- data/app/packs/stylesheets/decidim/meetings/_meetings.scss +0 -2
- data/app/queries/decidim/meetings/admin/invites.rb +0 -60
- data/app/views/decidim/meetings/admin/meeting_closes/proposals_picker.html.erb +0 -1
- data/app/views/decidim/meetings/directory/meetings/_filters.html.erb +0 -34
- data/app/views/decidim/meetings/directory/meetings/_meetings.html.erb +0 -26
- data/app/views/decidim/meetings/meeting_closes/proposals_picker.html.erb +0 -1
- data/app/views/decidim/meetings/meetings/_calendar_modal.html.erb +0 -26
- data/app/views/decidim/meetings/meetings/_filters.html.erb +0 -40
- data/app/views/decidim/meetings/meetings/_filters_small_view.html.erb +0 -18
- data/app/views/decidim/meetings/meetings/_meetings.html.erb +0 -48
- data/app/views/decidim/meetings/versions/index.html.erb +0 -8
- data/app/views/decidim/participatory_spaces/_upcoming_meeting_for_card.html.erb +0 -4
- data/config/locales/he-IL.yml +0 -1
- data/decidim-meetings.gemspec +0 -36
- data/lib/decidim/meetings/seeds/city.jpeg +0 -0
@@ -0,0 +1,47 @@
|
|
1
|
+
.meeting-calendar {
|
2
|
+
@apply grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 grid-rows-4 md:gap-y-6 md:gap-x-8 lg:gap-y-12 lg:gap-x-16 place-items-start;
|
3
|
+
|
4
|
+
&__selector {
|
5
|
+
@apply flex items-center gap-4;
|
6
|
+
|
7
|
+
&-container {
|
8
|
+
@apply flex justify-between items-center mb-8;
|
9
|
+
}
|
10
|
+
|
11
|
+
&-arrow {
|
12
|
+
@apply w-6 h-6 rounded-full bg-background;
|
13
|
+
}
|
14
|
+
}
|
15
|
+
|
16
|
+
&__link {
|
17
|
+
@apply flex items-center gap-2 text-secondary font-semibold;
|
18
|
+
}
|
19
|
+
|
20
|
+
&__month {
|
21
|
+
@apply text-center border-separate;
|
22
|
+
|
23
|
+
caption {
|
24
|
+
@apply text-lg text-gray-2 text-left font-semibold mb-4;
|
25
|
+
}
|
26
|
+
|
27
|
+
th {
|
28
|
+
@apply text-xs text-black uppercase font-semibold;
|
29
|
+
}
|
30
|
+
|
31
|
+
td {
|
32
|
+
@apply text-md text-gray-2 font-semibold w-9 h-9 rounded;
|
33
|
+
}
|
34
|
+
|
35
|
+
.is-today {
|
36
|
+
@apply border border-gray bg-background font-bold;
|
37
|
+
}
|
38
|
+
|
39
|
+
.is-past-event {
|
40
|
+
@apply bg-gray-2 text-white font-bold;
|
41
|
+
}
|
42
|
+
|
43
|
+
.is-upcoming-event {
|
44
|
+
@apply bg-secondary text-white font-bold;
|
45
|
+
}
|
46
|
+
}
|
47
|
+
}
|
@@ -0,0 +1,177 @@
|
|
1
|
+
.meeting {
|
2
|
+
&__filter {
|
3
|
+
&-container {
|
4
|
+
@apply self-stretch;
|
5
|
+
}
|
6
|
+
}
|
7
|
+
|
8
|
+
&__calendar {
|
9
|
+
@apply w-14 flex flex-col justify-start rounded bg-background text-center;
|
10
|
+
|
11
|
+
&:only-child &-month {
|
12
|
+
@apply rounded-t;
|
13
|
+
}
|
14
|
+
|
15
|
+
&-container {
|
16
|
+
@apply grid grid-cols-[auto_1fr] md:grid-cols-[auto_1fr_1fr] items-center gap-0 md:gap-x-5 border-4 border-background rounded md:h-[120px] overflow-hidden;
|
17
|
+
|
18
|
+
> *:nth-child(2) {
|
19
|
+
@apply p-4 md:p-0;
|
20
|
+
|
21
|
+
&:not(:last-child) {
|
22
|
+
@apply col-span-2 md:col-auto order-2 md:order-1;
|
23
|
+
}
|
24
|
+
|
25
|
+
&:last-child {
|
26
|
+
@apply md:col-span-2 pr-4;
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
30
|
+
> *:nth-child(3) {
|
31
|
+
@apply order-1 md:order-2 h-[116px] md:h-full;
|
32
|
+
}
|
33
|
+
}
|
34
|
+
|
35
|
+
&-month {
|
36
|
+
@apply bg-primary uppercase text-white text-xs rounded-tl;
|
37
|
+
}
|
38
|
+
|
39
|
+
&-day {
|
40
|
+
@apply text-black text-2xl font-bold;
|
41
|
+
}
|
42
|
+
|
43
|
+
&-time {
|
44
|
+
@apply text-black text-xs;
|
45
|
+
}
|
46
|
+
|
47
|
+
&-month,
|
48
|
+
&-day,
|
49
|
+
&-time {
|
50
|
+
@apply inline-flex items-center justify-evenly empty:[&>span]:hidden;
|
51
|
+
}
|
52
|
+
|
53
|
+
&-separator {
|
54
|
+
@apply mx-2 font-normal text-sm;
|
55
|
+
}
|
56
|
+
|
57
|
+
&__lg {
|
58
|
+
@apply w-fit justify-center [&>*]:px-2;
|
59
|
+
}
|
60
|
+
|
61
|
+
&__lg &-month {
|
62
|
+
@apply py-1 text-md;
|
63
|
+
}
|
64
|
+
|
65
|
+
&__lg &-day {
|
66
|
+
@apply text-5xl;
|
67
|
+
}
|
68
|
+
|
69
|
+
&__lg &-time {
|
70
|
+
@apply text-md pb-2;
|
71
|
+
}
|
72
|
+
}
|
73
|
+
|
74
|
+
&__author {
|
75
|
+
@apply flex items-center gap-4;
|
76
|
+
}
|
77
|
+
|
78
|
+
&__grid {
|
79
|
+
@apply grid grid-cols-4 gap-x-12 gap-y-4;
|
80
|
+
}
|
81
|
+
|
82
|
+
&__online {
|
83
|
+
@apply bg-background flex flex-col grid place-items-center p-8 space-y-4 text-gray-2 text-center text-lg;
|
84
|
+
}
|
85
|
+
|
86
|
+
&__agenda {
|
87
|
+
&-title {
|
88
|
+
@apply flex gap-1 items-center;
|
89
|
+
|
90
|
+
svg {
|
91
|
+
@apply w-6 h-6 text-tertiary fill-current;
|
92
|
+
}
|
93
|
+
}
|
94
|
+
|
95
|
+
&-item {
|
96
|
+
@apply mt-6 bg-background rounded p-4 text-gray-2;
|
97
|
+
|
98
|
+
&__title {
|
99
|
+
@apply text-lg inline-flex gap-1 first:[&>*]:font-bold;
|
100
|
+
}
|
101
|
+
|
102
|
+
&__description {
|
103
|
+
@apply mt-2 text-md text-gray-2;
|
104
|
+
}
|
105
|
+
}
|
106
|
+
|
107
|
+
&-subitem {
|
108
|
+
@apply ml-4 mt-4;
|
109
|
+
}
|
110
|
+
|
111
|
+
&-subitem &-item__title {
|
112
|
+
@apply text-md;
|
113
|
+
}
|
114
|
+
}
|
115
|
+
|
116
|
+
&__aside {
|
117
|
+
&-progress {
|
118
|
+
@apply text-sm text-gray-2 text-center space-y-1;
|
119
|
+
|
120
|
+
progress {
|
121
|
+
@apply block w-full h-1 appearance-none rounded-full overflow-hidden bg-gray;
|
122
|
+
|
123
|
+
&::-webkit-progress-value {
|
124
|
+
@apply bg-success;
|
125
|
+
}
|
126
|
+
|
127
|
+
&::-webkit-progress-bar {
|
128
|
+
@apply bg-white;
|
129
|
+
}
|
130
|
+
|
131
|
+
&::-moz-progress-bar {
|
132
|
+
@apply bg-success;
|
133
|
+
}
|
134
|
+
}
|
135
|
+
}
|
136
|
+
|
137
|
+
&-block {
|
138
|
+
@apply bg-background rounded p-2 [&>*]:flex [&>*]:gap-1 first:[&>*>*]:flex-none last:[&>*>*]:space-y-1;
|
139
|
+
|
140
|
+
& + & {
|
141
|
+
@apply mt-4;
|
142
|
+
}
|
143
|
+
|
144
|
+
&__title {
|
145
|
+
@apply text-gray-2 text-sm font-semibold;
|
146
|
+
}
|
147
|
+
|
148
|
+
&__text {
|
149
|
+
@apply text-gray-2 text-sm;
|
150
|
+
}
|
151
|
+
|
152
|
+
&__large {
|
153
|
+
@apply text-gray-2 text-xl font-bold;
|
154
|
+
}
|
155
|
+
|
156
|
+
&__list {
|
157
|
+
@apply ml-4 list-disc text-gray-2 text-sm;
|
158
|
+
}
|
159
|
+
}
|
160
|
+
|
161
|
+
&-actions {
|
162
|
+
@apply flex flex-wrap justify-center gap-x-2;
|
163
|
+
}
|
164
|
+
}
|
165
|
+
|
166
|
+
&__registration-modal {
|
167
|
+
&__terms {
|
168
|
+
@apply text-xs text-gray-2;
|
169
|
+
}
|
170
|
+
}
|
171
|
+
|
172
|
+
&__cancelation-modal {
|
173
|
+
&__description {
|
174
|
+
@apply mt-8 mb-16 text-lg text-gray-2;
|
175
|
+
}
|
176
|
+
}
|
177
|
+
}
|
@@ -0,0 +1,58 @@
|
|
1
|
+
.meeting-list {
|
2
|
+
@apply flex items-stretch gap-4 cursor-pointer;
|
3
|
+
|
4
|
+
&__map {
|
5
|
+
/* negative main padding values */
|
6
|
+
@apply md:-ml-16 -mt-6 md:-mt-12 aspect-square md:aspect-[21/9] [&>*]:h-full [&+*]:mt-6 md:[&+*]:mt-12;
|
7
|
+
}
|
8
|
+
|
9
|
+
&__link {
|
10
|
+
@apply py-6 flex items-center justify-end gap-1 text-secondary;
|
11
|
+
}
|
12
|
+
|
13
|
+
&__modal {
|
14
|
+
@apply pr-16 pb-16;
|
15
|
+
|
16
|
+
&-title {
|
17
|
+
@apply flex items-baseline gap-2;
|
18
|
+
}
|
19
|
+
|
20
|
+
&-text {
|
21
|
+
@apply text-lg text-gray-2;
|
22
|
+
}
|
23
|
+
|
24
|
+
&-input {
|
25
|
+
@apply text-lg text-gray-2 relative;
|
26
|
+
|
27
|
+
input {
|
28
|
+
@apply w-full;
|
29
|
+
}
|
30
|
+
|
31
|
+
button {
|
32
|
+
@apply z-10 absolute top-1/2 right-2 -translate-y-1/2 text-sm;
|
33
|
+
}
|
34
|
+
}
|
35
|
+
}
|
36
|
+
|
37
|
+
&:hover h2 {
|
38
|
+
@apply underline;
|
39
|
+
}
|
40
|
+
|
41
|
+
&__block {
|
42
|
+
&-map {
|
43
|
+
@apply aspect-[2/1] md:aspect-[4/1] rounded overflow-hidden [&>*]:h-full;
|
44
|
+
}
|
45
|
+
|
46
|
+
&-list {
|
47
|
+
@apply flex flex-col md:flex-row justify-start gap-16 last:[&>*]:grow;
|
48
|
+
|
49
|
+
&-aside {
|
50
|
+
@apply flex flex-col gap-4 items-stretch;
|
51
|
+
}
|
52
|
+
|
53
|
+
&-title {
|
54
|
+
@apply text-gray-2 font-semibold uppercase;
|
55
|
+
}
|
56
|
+
}
|
57
|
+
}
|
58
|
+
}
|
@@ -0,0 +1,128 @@
|
|
1
|
+
.meeting-polls {
|
2
|
+
&__body {
|
3
|
+
@apply flex flex-col min-h-screen;
|
4
|
+
}
|
5
|
+
|
6
|
+
&__header {
|
7
|
+
@apply flex items-center justify-between p-2.5 bg-background border;
|
8
|
+
}
|
9
|
+
|
10
|
+
&__main {
|
11
|
+
@apply flex grow items-stretch;
|
12
|
+
}
|
13
|
+
|
14
|
+
&__iframe {
|
15
|
+
@apply flex grow bg-gray-2 [&>*]:grow [&>*]:border-0;
|
16
|
+
}
|
17
|
+
|
18
|
+
&__aside {
|
19
|
+
@apply flex-none bg-background-2;
|
20
|
+
|
21
|
+
counter-reset: question;
|
22
|
+
|
23
|
+
&.is-open {
|
24
|
+
@apply w-1/5 [&+div]:w-4/5;
|
25
|
+
|
26
|
+
// shrink iframe when there is two panels
|
27
|
+
& + & + div {
|
28
|
+
@apply w-3/5;
|
29
|
+
}
|
30
|
+
|
31
|
+
& + & {
|
32
|
+
@apply border-l border-l-background;
|
33
|
+
}
|
34
|
+
}
|
35
|
+
}
|
36
|
+
|
37
|
+
&__question {
|
38
|
+
@apply bg-white;
|
39
|
+
|
40
|
+
summary {
|
41
|
+
@apply p-4 cursor-pointer font-bold text-secondary text-md transition border-b border-b-background hover:bg-background;
|
42
|
+
|
43
|
+
transition: background-color 0.2s ease-in-out;
|
44
|
+
|
45
|
+
&::after {
|
46
|
+
counter-increment: question;
|
47
|
+
content: "#" counter(question);
|
48
|
+
}
|
49
|
+
|
50
|
+
& ~ * {
|
51
|
+
@apply p-4;
|
52
|
+
|
53
|
+
// dynamic content
|
54
|
+
> :first-child {
|
55
|
+
@apply font-bold;
|
56
|
+
}
|
57
|
+
|
58
|
+
label {
|
59
|
+
@apply flex items-baseline cursor-pointer;
|
60
|
+
}
|
61
|
+
|
62
|
+
label + label {
|
63
|
+
@apply mt-4;
|
64
|
+
}
|
65
|
+
// end dynamic content
|
66
|
+
}
|
67
|
+
}
|
68
|
+
|
69
|
+
&[open] .meeting-polls__answer--bar > * {
|
70
|
+
opacity: 1;
|
71
|
+
transform: translateX(0);
|
72
|
+
}
|
73
|
+
|
74
|
+
&.is-new {
|
75
|
+
animation: animateHighlight 5s ease-in-out forwards;
|
76
|
+
}
|
77
|
+
|
78
|
+
@keyframes animateHighlight {
|
79
|
+
0%,
|
80
|
+
80% {
|
81
|
+
background-color: rgba(var(--warning-rgb), 0.1);
|
82
|
+
}
|
83
|
+
}
|
84
|
+
}
|
85
|
+
|
86
|
+
&__question--admin {
|
87
|
+
summary ~ * {
|
88
|
+
@apply border-t border-t-background p-4 bg-background-2;
|
89
|
+
|
90
|
+
a {
|
91
|
+
@apply my-4 block text-sm underline;
|
92
|
+
}
|
93
|
+
|
94
|
+
> :first-child {
|
95
|
+
@apply font-normal;
|
96
|
+
}
|
97
|
+
}
|
98
|
+
}
|
99
|
+
|
100
|
+
&__answer {
|
101
|
+
@apply flex items-center gap-2;
|
102
|
+
|
103
|
+
&--value {
|
104
|
+
@apply w-1/5 font-bold;
|
105
|
+
}
|
106
|
+
|
107
|
+
&--bar {
|
108
|
+
@apply w-4/5 h-2.5 overflow-hidden;
|
109
|
+
|
110
|
+
> * {
|
111
|
+
@apply bg-primary h-full opacity-0;
|
112
|
+
}
|
113
|
+
}
|
114
|
+
}
|
115
|
+
|
116
|
+
// vertical flow
|
117
|
+
label + &__answer + label {
|
118
|
+
@apply mt-6;
|
119
|
+
}
|
120
|
+
|
121
|
+
&__admin-label {
|
122
|
+
@apply p-4 bg-secondary text-white font-bold text-sm;
|
123
|
+
}
|
124
|
+
|
125
|
+
&__admin-action {
|
126
|
+
@apply py-2 flex items-center border-t-background [&>*]:flex-none first:[&>*]:w-2/5 last:[&>*]:w-3/5;
|
127
|
+
}
|
128
|
+
}
|
@@ -4,7 +4,6 @@ module Decidim
|
|
4
4
|
module Meetings
|
5
5
|
class Permissions < Decidim::DefaultPermissions
|
6
6
|
def permissions
|
7
|
-
allow_embed_meeting?
|
8
7
|
return permission_action unless user
|
9
8
|
|
10
9
|
# Delegate the admin permission checks to the admin permissions class
|
@@ -58,15 +57,6 @@ module Decidim
|
|
58
57
|
@question ||= context.fetch(:question, nil)
|
59
58
|
end
|
60
59
|
|
61
|
-
# As this is a public action, we need to run this before other checks
|
62
|
-
def allow_embed_meeting?
|
63
|
-
return unless permission_action.action == :embed && permission_action.subject == :meeting && meeting
|
64
|
-
return disallow! if meeting.withdrawn?
|
65
|
-
return allow! if meeting.published?
|
66
|
-
|
67
|
-
disallow!
|
68
|
-
end
|
69
|
-
|
70
60
|
def can_join_meeting?
|
71
61
|
meeting.can_be_joined_by?(user) &&
|
72
62
|
authorized?(:join, resource: meeting)
|
@@ -78,11 +68,24 @@ module Decidim
|
|
78
68
|
|
79
69
|
def can_decline_invitation?
|
80
70
|
meeting.registrations_enabled? &&
|
81
|
-
meeting.invites.exists?(user:
|
71
|
+
meeting.invites.exists?(user:)
|
82
72
|
end
|
83
73
|
|
84
74
|
def can_create_meetings?
|
85
|
-
component_settings&.creation_enabled_for_participants?
|
75
|
+
component_settings&.creation_enabled_for_participants? && public_space_or_member?
|
76
|
+
end
|
77
|
+
|
78
|
+
def public_space_or_member?
|
79
|
+
participatory_space = context[:current_component].participatory_space
|
80
|
+
|
81
|
+
participatory_space.private_space? ? space_member?(participatory_space, user) : true
|
82
|
+
end
|
83
|
+
|
84
|
+
# Neither platform admins, nor space admins should be able to create meetings from the public side.
|
85
|
+
def space_member?(participatory_space, user)
|
86
|
+
return false unless user
|
87
|
+
|
88
|
+
participatory_space.participatory_space_private_users.exists?(decidim_user_id: user.id)
|
86
89
|
end
|
87
90
|
|
88
91
|
def can_update_meeting?
|
@@ -6,8 +6,8 @@ module Decidim
|
|
6
6
|
# This class holds the logic to present a `Decidim::Meetings::Invite`
|
7
7
|
# for the `AdminLog` log.
|
8
8
|
#
|
9
|
-
# Usage should be automatic and you
|
10
|
-
# directly, but here
|
9
|
+
# Usage should be automatic and you should not need to call this class
|
10
|
+
# directly, but here is an example:
|
11
11
|
#
|
12
12
|
# action_log = Decidim::ActionLog.last
|
13
13
|
# view_helpers # => this comes from the views
|
@@ -6,8 +6,8 @@ module Decidim
|
|
6
6
|
# This class holds the logic to present a `Decidim::Meetings::Meeting`
|
7
7
|
# for the `AdminLog` log.
|
8
8
|
#
|
9
|
-
# Usage should be automatic and you
|
10
|
-
# directly, but here
|
9
|
+
# Usage should be automatic and you should not need to call this class
|
10
|
+
# directly, but here is an example:
|
11
11
|
#
|
12
12
|
# action_log = Decidim::ActionLog.last
|
13
13
|
# view_helpers # => this comes from the views
|
@@ -15,6 +15,10 @@ module Decidim
|
|
15
15
|
class MeetingPresenter < Decidim::Log::BasePresenter
|
16
16
|
private
|
17
17
|
|
18
|
+
def resource_presenter
|
19
|
+
@resource_presenter ||= Decidim::Meetings::Log::ResourcePresenter.new(action_log.resource, h, action_log.extra["resource"])
|
20
|
+
end
|
21
|
+
|
18
22
|
def diff_fields_mapping
|
19
23
|
{
|
20
24
|
address: :string,
|
@@ -6,8 +6,8 @@ module Decidim
|
|
6
6
|
# This class holds the logic to present a `Decidim::Meetings::Questionnaire`
|
7
7
|
# for the `AdminLog` log.
|
8
8
|
#
|
9
|
-
# Usage should be automatic and you
|
10
|
-
# directly, but here
|
9
|
+
# Usage should be automatic and you should not need to call this class
|
10
|
+
# directly, but here is an example:
|
11
11
|
#
|
12
12
|
# action_log = Decidim::ActionLog.last
|
13
13
|
# view_helpers # => this comes from the views
|
data/app/presenters/decidim/meetings/admin_log/value_types/meeting_title_description_presenter.rb
CHANGED
@@ -10,7 +10,7 @@ module Decidim
|
|
10
10
|
def present
|
11
11
|
return unless value
|
12
12
|
|
13
|
-
renderer = Decidim::ContentRenderers::HashtagRenderer.new(h.
|
13
|
+
renderer = Decidim::ContentRenderers::HashtagRenderer.new(h.translated_attribute(value))
|
14
14
|
renderer.render(links: false).html_safe
|
15
15
|
end
|
16
16
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Meetings
|
5
|
+
module Log
|
6
|
+
class ResourcePresenter < Decidim::Log::ResourcePresenter
|
7
|
+
private
|
8
|
+
|
9
|
+
# Private: Presents resource name.
|
10
|
+
#
|
11
|
+
# Returns an HTML-safe String.
|
12
|
+
def present_resource_name
|
13
|
+
Decidim::Meetings::MeetingPresenter.new(resource).title
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -34,6 +34,12 @@ module Decidim
|
|
34
34
|
content_handle_locale(meeting.description, all_locales, extras, links, strip_tags)
|
35
35
|
end
|
36
36
|
|
37
|
+
def editor_description(all_locales: false, extras: true)
|
38
|
+
return unless meeting
|
39
|
+
|
40
|
+
editor_locales(meeting.description, all_locales, extras:)
|
41
|
+
end
|
42
|
+
|
37
43
|
def location(all_locales: false)
|
38
44
|
return unless meeting
|
39
45
|
|
@@ -63,7 +69,7 @@ module Decidim
|
|
63
69
|
|
64
70
|
handle_locales(meeting.closing_report, all_locales) do |content|
|
65
71
|
renderer = Decidim::ContentRenderers::HashtagRenderer.new(sanitized(content))
|
66
|
-
renderer.render(links:
|
72
|
+
renderer.render(links:).html_safe
|
67
73
|
end
|
68
74
|
end
|
69
75
|
|
@@ -72,7 +78,7 @@ module Decidim
|
|
72
78
|
|
73
79
|
handle_locales(meeting.registration_email_custom_content, all_locales) do |content|
|
74
80
|
renderer = Decidim::ContentRenderers::HashtagRenderer.new(sanitized(content))
|
75
|
-
renderer.render(links:
|
81
|
+
renderer.render(links:).html_safe
|
76
82
|
end
|
77
83
|
end
|
78
84
|
|
@@ -38,15 +38,17 @@ module Decidim
|
|
38
38
|
|
39
39
|
def send_reminders(component)
|
40
40
|
intervals = Array(reminder_manifest.settings.attributes[:reminder_times].default)
|
41
|
+
space_admins = Decidim::ParticipatoryProcessUserRole.where(decidim_participatory_process_id: component.participatory_space_id, role: "admin").collect(&:user)
|
42
|
+
space_admins = (global_admins + space_admins).uniq
|
41
43
|
intervals.each do |interval|
|
42
44
|
finder_query(component.id, interval).find_each do |meeting|
|
43
|
-
authors = meeting.official? ? space_admins
|
45
|
+
authors = meeting.official? ? space_admins : [meeting.author]
|
44
46
|
authors.each do |author|
|
45
47
|
send_notif = author.notification_settings.fetch("close_meeting_reminder", "1")
|
46
48
|
next unless send_notif == "1"
|
47
49
|
|
48
|
-
reminder = Decidim::Reminder.find_or_create_by(user: author, component:
|
49
|
-
record = Decidim::ReminderRecord.find_or_create_by(reminder
|
50
|
+
reminder = Decidim::Reminder.find_or_create_by(user: author, component:)
|
51
|
+
record = Decidim::ReminderRecord.find_or_create_by(reminder:, remindable: meeting)
|
50
52
|
record.update(state: "active") unless record.active?
|
51
53
|
reminder.records << record
|
52
54
|
reminder.save!
|
@@ -58,16 +60,8 @@ module Decidim
|
|
58
60
|
end
|
59
61
|
end
|
60
62
|
|
61
|
-
def
|
62
|
-
@
|
63
|
-
space_admins = if component.participatory_space.respond_to?(:user_roles)
|
64
|
-
component.participatory_space.user_roles(:admin).collect(&:user)
|
65
|
-
else
|
66
|
-
[]
|
67
|
-
end
|
68
|
-
global_admins = component.organization.admins
|
69
|
-
(global_admins + space_admins).uniq
|
70
|
-
end
|
63
|
+
def global_admins
|
64
|
+
@global_admins ||= Decidim::User.where(admin: true).all
|
71
65
|
end
|
72
66
|
end
|
73
67
|
end
|
@@ -5,7 +5,7 @@ require "cgi"
|
|
5
5
|
module Decidim
|
6
6
|
module Meetings
|
7
7
|
# This class handles the streaming url to be included in the iframe present
|
8
|
-
# in the live event. For some services it
|
8
|
+
# in the live event. For some services it is required to transforma a bit
|
9
9
|
# the structure of the URL.
|
10
10
|
class MeetingIframeEmbedder
|
11
11
|
# Public: Initializes the service.
|
@@ -1,30 +1,28 @@
|
|
1
|
-
<button class="button
|
1
|
+
<button class="button button__sm button__transparent-secondary mt-6 md:mt-12 md:self-start" data-dialog-open="calendarShare">
|
2
2
|
<%= t(".export_calendar") %>
|
3
|
-
<%= icon "
|
3
|
+
<%= icon "download-cloud-2-line", class: "fill-current" %>
|
4
4
|
</button>
|
5
5
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
</button>
|
12
|
-
</div>
|
6
|
+
<%= decidim_modal id: "calendarShare", class: "meeting-list__modal" do %>
|
7
|
+
<div class="meeting-list__modal-title">
|
8
|
+
<%= icon "share-forward-2-line", class: "w-6 h-6 text-gray fill-current flex-none" %>
|
9
|
+
<div class="space-y-8">
|
10
|
+
<h3 id="dialog-title-calendarShare" class="h3"><%= t(".calendar_url") %></h3>
|
13
11
|
|
14
|
-
|
15
|
-
|
12
|
+
<div id="dialog-desc-calendarShare" class="meeting-list__modal-text"><%= t(".copy_calendar_url_description") %></div>
|
13
|
+
<div class="meeting-list__modal-text"><%= t(".copy_calendar_url_explanation") %></div>
|
16
14
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
<%= t(".copy_calendar_url") %>
|
15
|
+
<div class="meeting-list__modal-input">
|
16
|
+
<input id="urlCalendarUrl" type="text" title="<%= t(".calendar_url") %>" value="<%= "#{path}" %>" readonly>
|
17
|
+
<button
|
18
|
+
data-clipboard-copy="#urlCalendarUrl"
|
19
|
+
data-clipboard-copy-label="<%= t(".copy_calendar_url_copied") %>"
|
20
|
+
data-clipboard-copy-message="<%= t(".copy_calendar_url_message") %>"
|
21
|
+
aria-label="<%= t(".copy_calendar_url_clarification") %>">
|
22
|
+
<%= icon "file-copy-line", class: "w-5 h-6 text-secondary fill-current" %>
|
23
|
+
<span class="sr-only"><%= t(".copy_calendar_url") %></span>
|
27
24
|
</button>
|
28
25
|
</div>
|
29
26
|
</div>
|
30
27
|
</div>
|
28
|
+
<% end %>
|