decidim-meetings 0.27.4 → 0.28.0.rc5
Sign up to get free protection for your applications and to get access to all the features.
- 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 -0
- data/app/cells/decidim/meetings/cancel_registration_meeting_button_cell.rb +36 -0
- 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 +7 -19
- 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 +10 -58
- 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 -1
- 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 -2
- data/app/presenters/decidim/meetings/admin_log/invite_presenter.rb +2 -2
- data/app/presenters/decidim/meetings/admin_log/meeting_presenter.rb +2 -2
- data/app/presenters/decidim/meetings/admin_log/questionnaire_presenter.rb +2 -2
- 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/calendar/meeting_to_event.rb +6 -1
- data/app/services/decidim/meetings/close_meeting_reminder_generator.rb +2 -2
- 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 +2 -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 -164
- data/app/views/decidim/meetings/polls/answers/_multiple_option.html.erb +2 -2
- data/app/views/decidim/meetings/polls/answers/_single_option.html.erb +6 -6
- 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 +7 -9
- 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 +13 -3
- data/app/views/decidim/participatory_spaces/_conference_venues.html.erb +15 -14
- data/config/assets.rb +0 -2
- data/config/environment.rb +3 -0
- data/config/locales/ar.yml +3 -97
- data/config/locales/bg.yml +0 -7
- data/config/locales/ca.yml +49 -70
- data/config/locales/cs.yml +52 -73
- data/config/locales/de.yml +52 -70
- data/config/locales/el.yml +45 -54
- data/config/locales/en.yml +54 -75
- data/config/locales/es-MX.yml +50 -68
- data/config/locales/es-PY.yml +51 -69
- data/config/locales/es.yml +48 -69
- data/config/locales/eu.yml +131 -149
- data/config/locales/fi-plain.yml +49 -67
- data/config/locales/fi.yml +64 -82
- data/config/locales/fr-CA.yml +45 -66
- data/config/locales/fr.yml +49 -70
- data/config/locales/ga-IE.yml +0 -16
- data/config/locales/gl.yml +1 -66
- data/config/locales/hu.yml +3 -89
- data/config/locales/id-ID.yml +1 -63
- data/config/locales/is-IS.yml +1 -21
- data/config/locales/it.yml +1 -85
- data/config/locales/ja.yml +43 -67
- data/config/locales/lb.yml +1 -66
- data/config/locales/lt.yml +59 -66
- data/config/locales/lv.yml +1 -64
- data/config/locales/nl.yml +1 -95
- data/config/locales/no.yml +1 -80
- data/config/locales/pl.yml +10 -83
- data/config/locales/pt-BR.yml +1 -86
- data/config/locales/pt.yml +1 -85
- data/config/locales/ro-RO.yml +8 -82
- data/config/locales/ru.yml +1 -62
- data/config/locales/sk.yml +1 -64
- data/config/locales/sq-AL.yml +1 -0
- data/config/locales/sr-CS.yml +0 -6
- data/config/locales/sv.yml +7 -88
- data/config/locales/th-TH.yml +1 -0
- data/config/locales/tr-TR.yml +2 -74
- data/config/locales/uk.yml +1 -55
- data/config/locales/zh-CN.yml +1 -70
- data/config/locales/zh-TW.yml +21 -54
- 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 +5 -217
- 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 +65 -29
- data/lib/decidim/meetings/meeting_serializer.rb +5 -5
- data/lib/decidim/meetings/seeds.rb +188 -0
- data/lib/decidim/meetings/test/factories.rb +126 -18
- data/lib/decidim/meetings/test/notifications_handling.rb +3 -3
- data/lib/decidim/meetings/test/translated_event.rb +1 -1
- data/lib/decidim/meetings/user_answers_serializer.rb +1 -1
- data/lib/decidim/meetings/version.rb +1 -1
- metadata +60 -55
- 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 -55
- 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 -20
- 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/lib/decidim/meetings/seeds/city.jpeg +0 -0
@@ -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
|
+
}
|
@@ -68,11 +68,24 @@ module Decidim
|
|
68
68
|
|
69
69
|
def can_decline_invitation?
|
70
70
|
meeting.registrations_enabled? &&
|
71
|
-
meeting.invites.exists?(user:
|
71
|
+
meeting.invites.exists?(user:)
|
72
72
|
end
|
73
73
|
|
74
74
|
def can_create_meetings?
|
75
|
-
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)
|
76
89
|
end
|
77
90
|
|
78
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
|
@@ -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
|
@@ -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
|
|
@@ -39,7 +39,7 @@ module Decidim
|
|
39
39
|
@event.dtstart = Icalendar::Values::DateTime.new(meeting.start_time.utc, "tzid" => "UTC")
|
40
40
|
@event.dtend = Icalendar::Values::DateTime.new(meeting.end_time.utc, "tzid" => "UTC")
|
41
41
|
@event.summary = present(meeting).title
|
42
|
-
@event.description =
|
42
|
+
@event.description = description_with_link
|
43
43
|
@event.location = meeting.address
|
44
44
|
@event.geo = [meeting.latitude, meeting.longitude]
|
45
45
|
@event.url = url_for(meeting)
|
@@ -64,6 +64,11 @@ module Decidim
|
|
64
64
|
def present(meeting)
|
65
65
|
Decidim::Meetings::MeetingPresenter.new(meeting)
|
66
66
|
end
|
67
|
+
|
68
|
+
def description_with_link
|
69
|
+
link = "\n\n#{I18n.t("read_more", scope: "decidim.meetings.calendar.meeting_to_event")} #{url_for(meeting)}"
|
70
|
+
strip_tags(CGI.unescapeHTML(present(meeting).description)) + link
|
71
|
+
end
|
67
72
|
end
|
68
73
|
end
|
69
74
|
end
|
@@ -47,8 +47,8 @@ module Decidim
|
|
47
47
|
send_notif = author.notification_settings.fetch("close_meeting_reminder", "1")
|
48
48
|
next unless send_notif == "1"
|
49
49
|
|
50
|
-
reminder = Decidim::Reminder.find_or_create_by(user: author, component:
|
51
|
-
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)
|
52
52
|
record.update(state: "active") unless record.active?
|
53
53
|
reminder.records << record
|
54
54
|
reminder.save!
|
@@ -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 %>
|
@@ -1,42 +1,42 @@
|
|
1
1
|
<% agenda_item = form.object %>
|
2
|
-
<div class="card meeting-agenda-item" id="<%= tabs_id %>-field">
|
2
|
+
<div class="card meeting-agenda-item p-4" id="<%= tabs_id %>-field">
|
3
3
|
<div class="card-divider agenda-item-divider">
|
4
4
|
<h2 class="card-title">
|
5
5
|
<span>
|
6
|
-
<%== "#{icon("move")} #{t(".agenda_item")}" %>
|
6
|
+
<%== "#{icon("drag-move-2-fill")} #{t(".agenda_item")}" %>
|
7
7
|
</span>
|
8
8
|
|
9
|
-
<button class="button small alert hollow move-up-agenda-item button--title">
|
10
|
-
<%== "#{icon("arrow-
|
9
|
+
<button class="button button__sm button__transparent-secondary small alert hollow move-up-agenda-item button--title">
|
10
|
+
<%== "#{icon("arrow-up-line")} #{t(".up")}" %>
|
11
11
|
</button>
|
12
12
|
|
13
|
-
<button class="button small alert hollow move-down-agenda-item button--title">
|
14
|
-
<%== "#{icon("arrow-
|
13
|
+
<button class="button button__sm button__transparent-secondary small alert hollow move-down-agenda-item button--title">
|
14
|
+
<%== "#{icon("arrow-down-line")} #{t(".down")}" %>
|
15
15
|
</button>
|
16
16
|
|
17
|
-
<button class="button small alert hollow remove-agenda-item button--title">
|
17
|
+
<button class="button button__sm button__transparent-secondary small alert hollow remove-agenda-item button--title">
|
18
18
|
<%= t(".remove") %>
|
19
19
|
</button>
|
20
20
|
</h2>
|
21
21
|
</div>
|
22
22
|
|
23
23
|
<div class="card-section">
|
24
|
-
<%= render "agenda_item_fields", tabs_id
|
24
|
+
<%= render "agenda_item_fields", tabs_id:, form:, agenda_item: %>
|
25
25
|
|
26
|
-
<div class="card">
|
26
|
+
<div class="card my-4">
|
27
27
|
<div class="card-divider">
|
28
28
|
<h2 class="card-title"><%= t(".agenda_item_children") %></h2>
|
29
29
|
</div>
|
30
|
-
<div class="
|
30
|
+
<div class="row column">
|
31
31
|
<div class="meeting-agenda-item-childs" data-template="<%= child_template_selector %>">
|
32
32
|
<div class="meeting-agenda-item-childs-list">
|
33
33
|
<% agenda_item.agenda_item_children.each do |agenda_item_child| %>
|
34
34
|
<%= fields_for "meeting_agenda[agenda_items][#{agenda_item.to_param}][agenda_item_children][]", agenda_item_child do |agenda_item_child_form| %>
|
35
|
-
<%= render "agenda_item_child", form: agenda_item_child_form, tabs_id
|
35
|
+
<%= render "agenda_item_child", form: agenda_item_child_form, tabs_id:, tabs_id_child: tabs_id_for_agenda_item_child(agenda_item_child), editable: true %>
|
36
36
|
<% end %>
|
37
37
|
<% end %>
|
38
38
|
</div>
|
39
|
-
<button class="button add-agenda-item-child"><%= t(".add_agenda_item_child") %></button>
|
39
|
+
<button class="button button__sm button__secondary add-agenda-item-child"><%= t(".add_agenda_item_child") %></button>
|
40
40
|
</div>
|
41
41
|
</div>
|
42
42
|
</div>
|
@@ -1,26 +1,26 @@
|
|
1
1
|
<% agenda_item_child = form.object %>
|
2
|
-
<div class="card meeting-agenda-item-child" id="<%= tabs_id %>-child-<%= tabs_id_child %>-field">
|
2
|
+
<div class="card meeting-agenda-item-child p-4" id="<%= tabs_id %>-child-<%= tabs_id_child %>-field">
|
3
3
|
<div class="card-divider agenda-item-child-divider">
|
4
4
|
<h2 class="card-title">
|
5
5
|
<span>
|
6
|
-
<%== "#{icon("move")} #{t(".agenda_item_child")}" %>
|
6
|
+
<%== "#{icon("drag-move-2-fill")} #{t(".agenda_item_child")}" %>
|
7
7
|
</span>
|
8
8
|
|
9
|
-
<button class="button small alert hollow move-up-agenda-item-child button--title">
|
10
|
-
<%== "#{icon("arrow-
|
9
|
+
<button class="button button__sm button__transparent-secondary small alert hollow move-up-agenda-item-child button--title">
|
10
|
+
<%== "#{icon("arrow-up-line")} #{t(".up")}" %>
|
11
11
|
</button>
|
12
12
|
|
13
|
-
<button class="button small alert hollow move-down-agenda-item-child button--title">
|
14
|
-
<%== "#{icon("arrow-
|
13
|
+
<button class="button button__sm button__transparent-secondary small alert hollow move-down-agenda-item-child button--title">
|
14
|
+
<%== "#{icon("arrow-down-line")} #{t(".down")}" %>
|
15
15
|
</button>
|
16
16
|
|
17
|
-
<button class="button small alert hollow remove-agenda-item-child button--title">
|
17
|
+
<button class="button button__sm button__transparent-secondary small alert hollow remove-agenda-item-child button--title">
|
18
18
|
<%= t(".remove") %>
|
19
19
|
</button>
|
20
20
|
</h2>
|
21
21
|
</div>
|
22
22
|
|
23
23
|
<div class="card-section">
|
24
|
-
<%= render "agenda_item_fields", tabs_id: tabs_id_child, form
|
24
|
+
<%= render "agenda_item_fields", tabs_id: tabs_id_child, form:, agenda_item: agenda_item_child %>
|
25
25
|
</div>
|
26
26
|
</div>
|
@@ -2,6 +2,6 @@
|
|
2
2
|
|
3
3
|
<script type="text/template" class="decidim-template" id="<%= template_id %>">
|
4
4
|
<%= fields_for "meeting_agenda[agenda_items][#{agenda_item.to_param}][agenda_item_children][#{blank_agenda_item.to_param_child}]", blank_agenda_item do |agenda_item_child_form| %>
|
5
|
-
<%= render "agenda_item_child", form: agenda_item_child_form, tabs_id: tabs_id_for_agenda_item(blank_agenda_item), tabs_id_child: tabs_id_for_agenda_item_child(blank_agenda_item), editable:
|
5
|
+
<%= render "agenda_item_child", form: agenda_item_child_form, tabs_id: tabs_id_for_agenda_item(blank_agenda_item), tabs_id_child: tabs_id_for_agenda_item_child(blank_agenda_item), editable: %>
|
6
6
|
<% end %>
|
7
7
|
</script>
|