decidim-meetings 0.28.5 → 0.29.0.rc1
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.
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/attending_organizations_list_cell.rb +1 -1
- data/app/cells/decidim/meetings/cancel_registration_meeting_button_cell.rb +1 -2
- data/app/cells/decidim/meetings/dates_and_map/show.erb +3 -5
- data/app/cells/decidim/meetings/dates_and_map_cell.rb +1 -1
- data/app/cells/decidim/meetings/highlighted_meetings_for_component_cell.rb +1 -2
- data/app/cells/decidim/meetings/join_meeting_button/remaining_slots.erb +1 -0
- data/app/cells/decidim/meetings/join_meeting_button_cell.rb +0 -3
- data/app/cells/decidim/meetings/meeting_card_metadata_cell.rb +0 -3
- data/app/cells/decidim/meetings/meeting_cell.rb +0 -1
- data/app/cells/decidim/meetings/meeting_l_cell.rb +4 -7
- data/app/cells/decidim/meetings/meeting_url/show.erb +5 -5
- data/app/cells/decidim/meetings/meeting_url_cell.rb +0 -1
- data/app/cells/decidim/meetings/online_meeting_link_cell.rb +0 -2
- data/app/cells/decidim/meetings/question_responses/show.erb +7 -3
- data/app/cells/decidim/meetings/question_responses_cell.rb +0 -2
- data/app/commands/decidim/meetings/admin/copy_meeting.rb +2 -2
- data/app/commands/decidim/meetings/admin/create_agenda.rb +9 -37
- data/app/commands/decidim/meetings/admin/create_meeting.rb +28 -61
- data/app/commands/decidim/meetings/admin/destroy_meeting.rb +4 -33
- data/app/commands/decidim/meetings/admin/update_agenda.rb +7 -35
- data/app/commands/decidim/meetings/admin/update_meeting.rb +30 -68
- data/app/commands/decidim/meetings/admin/update_question_status.rb +1 -1
- data/app/commands/decidim/meetings/admin/update_questionnaire.rb +19 -11
- data/app/commands/decidim/meetings/admin/update_registrations.rb +20 -46
- data/app/commands/decidim/meetings/create_answer.rb +5 -4
- data/app/commands/decidim/meetings/create_meeting.rb +38 -62
- data/app/commands/decidim/meetings/join_meeting.rb +18 -19
- data/app/commands/decidim/meetings/update_meeting.rb +6 -7
- data/app/commands/decidim/meetings/withdraw_meeting.rb +1 -1
- data/app/controllers/concerns/decidim/meetings/admin/invites/filterable.rb +33 -0
- data/app/controllers/decidim/meetings/admin/agenda_controller.rb +1 -1
- data/app/controllers/decidim/meetings/admin/invites_controller.rb +6 -6
- data/app/controllers/decidim/meetings/admin/meetings_controller.rb +2 -2
- data/app/controllers/decidim/meetings/admin/meetings_poll_controller.rb +12 -0
- data/app/controllers/decidim/meetings/application_controller.rb +1 -1
- data/app/controllers/decidim/meetings/live_events_controller.rb +1 -1
- data/app/controllers/decidim/meetings/meetings_controller.rb +3 -33
- data/app/controllers/decidim/meetings/polls/answers_controller.rb +10 -2
- data/app/controllers/decidim/meetings/registrations_controller.rb +3 -3
- data/app/forms/decidim/meetings/admin/close_meeting_form.rb +1 -1
- data/app/forms/decidim/meetings/admin/meeting_agenda_items_form.rb +1 -1
- data/app/forms/decidim/meetings/admin/meeting_form.rb +1 -1
- data/app/forms/decidim/meetings/admin/meeting_registrations_form.rb +3 -3
- data/app/forms/decidim/meetings/admin/question_form.rb +8 -4
- data/app/forms/decidim/meetings/answer_form.rb +4 -4
- data/app/forms/decidim/meetings/meeting_form.rb +1 -1
- data/app/helpers/decidim/meetings/application_helper.rb +1 -5
- data/app/mailers/decidim/meetings/close_meeting_reminder_mailer.rb +1 -1
- data/app/models/decidim/meetings/meeting.rb +10 -4
- data/app/models/decidim/meetings/poll.rb +8 -0
- data/app/models/decidim/meetings/question.rb +1 -0
- data/app/models/decidim/meetings/questionnaire.rb +0 -6
- data/app/packs/src/decidim/meetings/admin/meetings_form.js +3 -3
- data/app/packs/src/decidim/meetings/meetings_form.js +3 -3
- data/app/packs/src/decidim/meetings/meetings_polls.js +5 -0
- data/app/packs/src/decidim/meetings/poll.component.js +32 -4
- data/app/packs/stylesheets/decidim/meetings/_item.scss +126 -6
- data/app/packs/stylesheets/decidim/meetings/_live_event.scss +0 -94
- data/app/permissions/decidim/meetings/permissions.rb +22 -7
- data/app/presenters/decidim/meetings/meeting_presenter.rb +10 -3
- data/app/services/decidim/meetings/calendar/component_calendar.rb +1 -1
- data/app/services/decidim/meetings/calendar/meeting_to_event.rb +1 -1
- data/app/services/decidim/meetings/close_meeting_reminder_generator.rb +1 -1
- data/app/services/decidim/meetings/meeting_iframe_embedder.rb +2 -2
- data/app/views/decidim/meetings/_calendar_modal.html.erb +1 -1
- data/app/views/decidim/meetings/admin/agenda/_agenda_item.html.erb +3 -3
- data/app/views/decidim/meetings/admin/agenda/_agenda_item_child.html.erb +3 -3
- data/app/views/decidim/meetings/admin/agenda/_agenda_item_fields.html.erb +3 -3
- data/app/views/decidim/meetings/admin/invite_join_meeting_mailer/invite.html.erb +3 -1
- data/app/views/decidim/meetings/admin/invites/_form.html.erb +4 -4
- data/app/views/decidim/meetings/admin/invites/index.html.erb +4 -34
- data/app/views/decidim/meetings/admin/meetings/_form.html.erb +8 -8
- data/app/views/decidim/meetings/admin/meetings/_service.html.erb +3 -3
- data/app/views/decidim/meetings/admin/meetings/index.html.erb +2 -2
- 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 +26 -25
- data/app/views/decidim/meetings/admin/poll/_question.html.erb +18 -16
- data/app/views/decidim/meetings/admin/poll/edit.html.erb +4 -6
- data/app/views/decidim/meetings/admin/registrations/edit.html.erb +2 -4
- data/app/views/decidim/meetings/close_meeting_reminder_mailer/close_meeting_reminder.html.erb +1 -1
- data/app/views/decidim/meetings/layouts/live_event.html.erb +1 -15
- data/app/views/decidim/meetings/meetings/_datetime.html.erb +4 -4
- data/app/views/decidim/meetings/meetings/_form.html.erb +17 -17
- data/app/views/decidim/meetings/meetings/_meeting.html.erb +2 -1
- data/app/views/decidim/meetings/meetings/_meeting_agenda.html.erb +2 -2
- data/app/views/decidim/meetings/meetings/_meeting_aside.html.erb +3 -1
- data/app/views/decidim/meetings/meetings/_meeting_minutes.html.erb +1 -1
- data/app/views/decidim/meetings/meetings/_meeting_poll_actions.html.erb +15 -0
- data/app/views/decidim/meetings/polls/answers/_multiple_option.html.erb +6 -10
- data/app/views/decidim/meetings/polls/answers/_single_option.html.erb +4 -10
- data/app/views/decidim/meetings/polls/answers/admin.html.erb +34 -0
- data/app/views/decidim/meetings/polls/answers/index.html.erb +36 -0
- data/app/views/decidim/meetings/polls/questions/_closed_question.html.erb +8 -2
- data/app/views/decidim/meetings/polls/questions/_index_admin.html.erb +27 -24
- data/app/views/decidim/meetings/polls/questions/_published_question.html.erb +14 -11
- data/app/views/decidim/meetings/polls/questions/_question.html.erb +1 -1
- data/app/views/decidim/meetings/polls/questions/index.js.erb +3 -3
- data/app/views/decidim/meetings/polls/questions/index_admin.js.erb +3 -3
- data/app/views/decidim/meetings/registration_mailer/confirmation.html.erb +1 -1
- data/app/views/devise/mailer/join_meeting.html.erb +3 -1
- data/app/views/devise/mailer/join_meeting.text.erb +3 -1
- data/config/locales/ar.yml +1 -13
- data/config/locales/bg.yml +45 -12
- data/config/locales/ca.yml +45 -13
- data/config/locales/cs.yml +28 -16
- data/config/locales/de.yml +114 -82
- data/config/locales/el.yml +1 -13
- data/config/locales/en.yml +44 -12
- data/config/locales/es-MX.yml +47 -15
- data/config/locales/es-PY.yml +47 -15
- data/config/locales/es.yml +48 -16
- data/config/locales/eu.yml +79 -47
- data/config/locales/fi-plain.yml +46 -14
- data/config/locales/fi.yml +56 -24
- data/config/locales/fr-CA.yml +48 -16
- data/config/locales/fr.yml +48 -16
- data/config/locales/ga-IE.yml +0 -8
- data/config/locales/gl.yml +3 -11
- data/config/locales/hu.yml +3 -12
- data/config/locales/id-ID.yml +1 -12
- data/config/locales/is-IS.yml +1 -12
- data/config/locales/it.yml +3 -16
- data/config/locales/ja.yml +47 -15
- data/config/locales/lb.yml +1 -7
- data/config/locales/lt.yml +3 -12
- data/config/locales/lv.yml +1 -12
- data/config/locales/nl.yml +1 -13
- data/config/locales/no.yml +1 -12
- data/config/locales/pl.yml +45 -12
- data/config/locales/pt-BR.yml +23 -17
- data/config/locales/pt.yml +1 -14
- data/config/locales/ro-RO.yml +2 -15
- data/config/locales/ru.yml +1 -12
- data/config/locales/sk.yml +1 -12
- data/config/locales/sv.yml +108 -206
- data/config/locales/tr-TR.yml +2 -17
- data/config/locales/uk.yml +1 -12
- data/config/locales/zh-CN.yml +1 -15
- data/config/locales/zh-TW.yml +1 -13
- data/db/migrate/20240130135858_add_withdrawn_fields_on_meetings.rb +23 -0
- data/decidim-meetings.gemspec +2 -2
- data/lib/decidim/api/meeting_type.rb +3 -12
- data/lib/decidim/api/meetings_type.rb +3 -1
- data/lib/decidim/meetings/component.rb +2 -2
- data/lib/decidim/meetings/engine.rb +5 -3
- data/lib/decidim/meetings/meeting_serializer.rb +3 -38
- data/lib/decidim/meetings/seeds.rb +13 -18
- data/lib/decidim/meetings/test/factories.rb +1 -7
- data/lib/decidim/meetings/test/notifications_handling.rb +1 -1
- data/lib/decidim/meetings/version.rb +1 -1
- data/lib/tasks/decidim_meetings.rake +1 -1
- metadata +24 -22
- data/app/views/decidim/meetings/admin/agenda/show.html.erb +0 -0
- data/config/locales/bn-BD.yml +0 -1
- data/config/locales/bs-BA.yml +0 -8
data/config/locales/tr-TR.yml
CHANGED
@@ -51,12 +51,6 @@ tr:
|
|
51
51
|
other: Kayıtlar
|
52
52
|
decidim:
|
53
53
|
admin:
|
54
|
-
filters:
|
55
|
-
meetings:
|
56
|
-
category_id_eq:
|
57
|
-
label: Kategori
|
58
|
-
scope_id_eq:
|
59
|
-
label: kapsam
|
60
54
|
meeting_copies:
|
61
55
|
create:
|
62
56
|
error: Bu toplantıyı kopyalarken bir sorun oluştu.
|
@@ -79,7 +73,7 @@ tr:
|
|
79
73
|
enable_pads_creation: Altlık oluşturmayı etkinleştirin
|
80
74
|
registration_code_enabled: Kayıt kodu etkinleştirildi
|
81
75
|
resources_permissions_enabled: Her toplantı için işlem izinleri ayarlanabilir
|
82
|
-
scope_id:
|
76
|
+
scope_id: Kapsam
|
83
77
|
scopes_enabled: Kapsamlar etkinleştirildi
|
84
78
|
terms_and_conditions_url_for_meeting_creators: Toplantı oluşturucuları için şartlar ve koşullar URL'si
|
85
79
|
step:
|
@@ -148,6 +142,7 @@ tr:
|
|
148
142
|
attachment_collections: Klasörler
|
149
143
|
attachments: Ekler
|
150
144
|
close: Kapat
|
145
|
+
confirm_destroy: Bu toplantıyı silmek istediğinizden emin misiniz?
|
151
146
|
destroy: Sil
|
152
147
|
edit: Düzenle
|
153
148
|
invalid_destroy:
|
@@ -204,12 +199,8 @@ tr:
|
|
204
199
|
non_user: Mevcut olmayan katılımcı
|
205
200
|
select_user: Katılımcı seç
|
206
201
|
index:
|
207
|
-
filter:
|
208
|
-
all: Tümü
|
209
|
-
sent: Gönderilen
|
210
202
|
invite_attendee: Katılımcı davet et
|
211
203
|
invites: Davetler
|
212
|
-
search: Arama
|
213
204
|
meeting_closes:
|
214
205
|
edit:
|
215
206
|
close: Kapat
|
@@ -278,9 +269,6 @@ tr:
|
|
278
269
|
value_types:
|
279
270
|
organizer_presenter:
|
280
271
|
not_found: 'Organizatör veritabanında bulunamadı (ID: %{id})'
|
281
|
-
application_helper:
|
282
|
-
filter_category_values:
|
283
|
-
all: Tümü
|
284
272
|
calendar:
|
285
273
|
meeting_to_event:
|
286
274
|
read_more: Bu toplantı hakkında daha fazlasını okuyun
|
@@ -347,9 +335,6 @@ tr:
|
|
347
335
|
select_a_registration_type: Lütfen bir kayıt türü seçin
|
348
336
|
index:
|
349
337
|
new_meeting: Yeni toplantı
|
350
|
-
meeting:
|
351
|
-
close_meeting: Toplantıyı kapat
|
352
|
-
edit_meeting: Toplantıyı Düzenle
|
353
338
|
meetings:
|
354
339
|
upcoming_meetings_warning: Şu anda planlanmış bir toplantı yok, ancak burada listelenen tüm geçmiş toplantıları bulabilirsiniz.
|
355
340
|
new:
|
data/config/locales/uk.yml
CHANGED
@@ -49,12 +49,6 @@ uk:
|
|
49
49
|
other: Зареєстрованих
|
50
50
|
decidim:
|
51
51
|
admin:
|
52
|
-
filters:
|
53
|
-
meetings:
|
54
|
-
category_id_eq:
|
55
|
-
label: Категорія
|
56
|
-
scope_id_eq:
|
57
|
-
label: Обсяг
|
58
52
|
meeting_copies:
|
59
53
|
create:
|
60
54
|
error: При спробі створити копію цієї зустрічі сталася помилка.
|
@@ -73,7 +67,6 @@ uk:
|
|
73
67
|
comments_enabled: Коментарі увімкнено
|
74
68
|
default_registration_terms: Умови реєстрації за умовчанням
|
75
69
|
resources_permissions_enabled: Права на дії можна встановити для кожної зустрічі
|
76
|
-
scope_id: Обсяг
|
77
70
|
step:
|
78
71
|
announcement: Оголошення
|
79
72
|
comments_blocked: Коментарі вимкнено
|
@@ -121,6 +114,7 @@ uk:
|
|
121
114
|
attachment_collections: Теки
|
122
115
|
attachments: Вкладені файли
|
123
116
|
close: Закрити
|
117
|
+
confirm_destroy: Ви впевнені, що хочете видалити цю зустріч?
|
124
118
|
destroy: Видалити
|
125
119
|
edit: Редагувати
|
126
120
|
preview: Попередній перегляд
|
@@ -170,11 +164,8 @@ uk:
|
|
170
164
|
non_user: Не чинний учасник
|
171
165
|
select_user: Оберіть учасника
|
172
166
|
index:
|
173
|
-
filter:
|
174
|
-
sent: Надіслано
|
175
167
|
invite_attendee: Запросити учасника
|
176
168
|
invites: Запрошення
|
177
|
-
search: Шукати
|
178
169
|
meeting_closes:
|
179
170
|
edit:
|
180
171
|
close: Закрити
|
@@ -240,8 +231,6 @@ uk:
|
|
240
231
|
category: Категорія
|
241
232
|
date: Дата
|
242
233
|
search: Шукати
|
243
|
-
meeting:
|
244
|
-
close_meeting: Закрити зустріч
|
245
234
|
meetings:
|
246
235
|
upcoming_meetings_warning: Наразі нема запланованих зустрічей, але тут ви можете знайти перелік усіх попередніх зустрічей.
|
247
236
|
registration_confirm:
|
data/config/locales/zh-CN.yml
CHANGED
@@ -43,12 +43,6 @@ zh-CN:
|
|
43
43
|
other: 注册
|
44
44
|
decidim:
|
45
45
|
admin:
|
46
|
-
filters:
|
47
|
-
meetings:
|
48
|
-
category_id_eq:
|
49
|
-
label: 类别
|
50
|
-
scope_id_eq:
|
51
|
-
label: 范围
|
52
46
|
meeting_copies:
|
53
47
|
create:
|
54
48
|
error: 重复这次会议时出现问题。
|
@@ -138,6 +132,7 @@ zh-CN:
|
|
138
132
|
attachment_collections: 文件夹
|
139
133
|
attachments: 附件
|
140
134
|
close: 关闭
|
135
|
+
confirm_destroy: 您确定要删除这个会议吗?
|
141
136
|
destroy: 删除
|
142
137
|
edit: 编辑
|
143
138
|
invalid_destroy:
|
@@ -191,12 +186,8 @@ zh-CN:
|
|
191
186
|
non_user: 非现有参与者
|
192
187
|
select_user: 选择参与者
|
193
188
|
index:
|
194
|
-
filter:
|
195
|
-
all: 所有的
|
196
|
-
sent: 已发送
|
197
189
|
invite_attendee: 邀请参与者
|
198
190
|
invites: 邀请
|
199
|
-
search: 搜索
|
200
191
|
meeting_closes:
|
201
192
|
edit:
|
202
193
|
close: 关闭
|
@@ -258,9 +249,6 @@ zh-CN:
|
|
258
249
|
value_types:
|
259
250
|
organizer_presenter:
|
260
251
|
not_found: '在数据库中找不到组织者 (ID: %{id})'
|
261
|
-
application_helper:
|
262
|
-
filter_category_values:
|
263
|
-
all: 所有的
|
264
252
|
calendar_modal:
|
265
253
|
calendar_url: 日历 URL
|
266
254
|
export_calendar: 导出日历
|
@@ -307,8 +295,6 @@ zh-CN:
|
|
307
295
|
select_a_category: 请选择一个类别
|
308
296
|
index:
|
309
297
|
new_meeting: 新会议
|
310
|
-
meeting:
|
311
|
-
close_meeting: 关闭会议
|
312
298
|
meetings:
|
313
299
|
upcoming_meetings_warning: 目前没有排定的会议,但在这里你可以找到过去所有会议的清单。
|
314
300
|
new:
|
data/config/locales/zh-TW.yml
CHANGED
@@ -210,6 +210,7 @@ zh-TW:
|
|
210
210
|
attachment_collections: 資料夾
|
211
211
|
attachments: 附件
|
212
212
|
close: 關閉
|
213
|
+
confirm_destroy: 你確定要刪除此會議?
|
213
214
|
destroy: 刪除
|
214
215
|
edit: 編輯
|
215
216
|
invalid_destroy:
|
@@ -272,13 +273,9 @@ zh-TW:
|
|
272
273
|
non_user: 不存在的參與者。
|
273
274
|
select_user: 選擇參與者
|
274
275
|
index:
|
275
|
-
filter:
|
276
|
-
all: 全部
|
277
|
-
sent: 傳送
|
278
276
|
invite_attendee: 邀請的與會者
|
279
277
|
invites: 邀請
|
280
278
|
registrations_disabled: 你無法邀請參加者,因為註冊已被禁用。
|
281
|
-
search: 搜尋
|
282
279
|
meeting_closes:
|
283
280
|
edit:
|
284
281
|
close: 關閉
|
@@ -395,7 +392,6 @@ zh-TW:
|
|
395
392
|
body: 會議<a href="%{meeting_path}">"%{meeting_title}"</a>等待關閉,請使用“關閉會議”按鈕添加會議報告。
|
396
393
|
greetings: 問候,<br/>%{organization_name}<br/><a href="%{organization_url}">%{organization_url}</a>
|
397
394
|
hello: 哈囉,%{username}!
|
398
|
-
subject: 您現在可以在 %{organization_name} 平台上透過報告結束您的會議。
|
399
395
|
conference_venues: 會議場地
|
400
396
|
content_blocks:
|
401
397
|
upcoming_meetings:
|
@@ -412,7 +408,6 @@ zh-TW:
|
|
412
408
|
iframe_embed_type:
|
413
409
|
embed_in_meeting_page: 嵌入會議頁面
|
414
410
|
none: 沒有
|
415
|
-
open_in_live_event_page: 在直播活動頁面開啟(附加投票選項)
|
416
411
|
open_in_new_tab: 在新頁籤中開啟 URL
|
417
412
|
last_activity:
|
418
413
|
meeting_updated: '會議已更新:'
|
@@ -420,7 +415,6 @@ zh-TW:
|
|
420
415
|
layouts:
|
421
416
|
live_event:
|
422
417
|
close: 關閉
|
423
|
-
questions: 問題
|
424
418
|
mailer:
|
425
419
|
invite_join_meeting_mailer:
|
426
420
|
invite:
|
@@ -493,9 +487,6 @@ zh-TW:
|
|
493
487
|
see_all: 查看所有會議
|
494
488
|
see_all_withdrawn: 查看所有撤回的會議
|
495
489
|
text_banner: 您正在查看已被其作者撤回的會議列表。 %{go_back_link}。
|
496
|
-
meeting:
|
497
|
-
close_meeting: 關閉會議
|
498
|
-
edit_meeting: 編輯會議
|
499
490
|
meetings:
|
500
491
|
no_meetings_warning: 沒有符合搜尋條件的會議或者目前沒有任何已排定的會議。
|
501
492
|
upcoming_meetings_warning: 目前沒有安排的會議,但您可以在這裡找到所有過去的會議列表。
|
@@ -554,12 +545,9 @@ zh-TW:
|
|
554
545
|
title: 標題
|
555
546
|
polls:
|
556
547
|
questions:
|
557
|
-
closed_question:
|
558
|
-
question_results: 問題結果
|
559
548
|
index:
|
560
549
|
empty_questions: 在本次會議期間,您將收到一些問題並且您可以回答這些問題。這些問題將會在此顯示。
|
561
550
|
index_admin:
|
562
|
-
admin_dashboard: 管理員儀表板
|
563
551
|
edit: 在管理面板中編輯
|
564
552
|
question: 問題
|
565
553
|
received_answer: 收到回答
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class AddWithdrawnFieldsOnMeetings < ActiveRecord::Migration[6.1]
|
4
|
+
class CustomMeeting < Decidim::Meetings::ApplicationRecord
|
5
|
+
self.table_name = "decidim_meetings_meetings"
|
6
|
+
end
|
7
|
+
|
8
|
+
def up
|
9
|
+
add_column :decidim_meetings_meetings, :withdrawn_at, :datetime
|
10
|
+
|
11
|
+
CustomMeeting.where(state: "withdrawn").find_each do |meeting|
|
12
|
+
meeting.withdrawn_at = meeting.updated_at
|
13
|
+
meeting.save!
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
def down
|
18
|
+
# rubocop:disable Rails/SkipsModelValidations
|
19
|
+
CustomMeeting.where.not(withdrawn_at: null).update_all(state: :withdrawn)
|
20
|
+
# rubocop:enable Rails/SkipsModelValidations
|
21
|
+
remove_column :decidim_meetings_meetings, :withdrawn_at
|
22
|
+
end
|
23
|
+
end
|
data/decidim-meetings.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
|
|
10
10
|
s.version = Decidim::Meetings.version
|
11
11
|
s.authors = ["Josep Jaume Rey Peroy", "Marc Riera Casals", "Oriol Gual Oliva"]
|
12
12
|
s.email = ["josepjaume@gmail.com", "mrc2407@gmail.com", "oriolgual@gmail.com"]
|
13
|
-
s.license = "AGPL-3.0
|
13
|
+
s.license = "AGPL-3.0"
|
14
14
|
s.homepage = "https://decidim.org"
|
15
15
|
s.metadata = {
|
16
16
|
"bug_tracker_uri" => "https://github.com/decidim/decidim/issues",
|
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
|
|
19
19
|
"homepage_uri" => "https://decidim.org",
|
20
20
|
"source_code_uri" => "https://github.com/decidim/decidim"
|
21
21
|
}
|
22
|
-
s.required_ruby_version = "~> 3.
|
22
|
+
s.required_ruby_version = "~> 3.2.0"
|
23
23
|
|
24
24
|
s.name = "decidim-meetings"
|
25
25
|
s.summary = "Decidim meetings module"
|
@@ -45,6 +45,9 @@ module Decidim
|
|
45
45
|
object.audio_url if object.closing_visible?
|
46
46
|
end
|
47
47
|
|
48
|
+
field :withdrawn_at, Decidim::Core::DateTimeType, description: "The date and time this meeting was withdrawn", null: true
|
49
|
+
field :withdrawn, GraphQL::Types::Boolean, "Whether this meeting has been withdrawn or not", method: :withdrawn?, null: true
|
50
|
+
|
48
51
|
field :created_at, Decidim::Core::DateTimeType, description: "The date and time this minutes was created", null: true
|
49
52
|
field :updated_at, Decidim::Core::DateTimeType, description: "The date and time this minutes was updated", null: true
|
50
53
|
|
@@ -74,18 +77,6 @@ module Decidim
|
|
74
77
|
field :type_of_meeting, GraphQL::Types::String, "The type of the meeting (online or in-person)", null: false
|
75
78
|
field :online_meeting_url, GraphQL::Types::String, "The URL of the meeting (when the type is online)", null: false
|
76
79
|
field :iframe_embed_type, GraphQL::Types::String, "The type of displaying of the online meeting URL", null: true
|
77
|
-
|
78
|
-
def self.authorized?(object, context)
|
79
|
-
context[:meeting] = object
|
80
|
-
|
81
|
-
chain = [
|
82
|
-
allowed_to?(:read, :meeting, object, context),
|
83
|
-
object.published?,
|
84
|
-
object.current_user_can_visit_meeting?(context[:current_user])
|
85
|
-
].all?
|
86
|
-
|
87
|
-
super && chain
|
88
|
-
end
|
89
80
|
end
|
90
81
|
end
|
91
82
|
end
|
@@ -2,7 +2,9 @@
|
|
2
2
|
|
3
3
|
module Decidim
|
4
4
|
module Meetings
|
5
|
-
class MeetingsType < Decidim::
|
5
|
+
class MeetingsType < Decidim::Api::Types::BaseObject
|
6
|
+
implements Decidim::Core::ComponentInterface
|
7
|
+
|
6
8
|
graphql_name "Meetings"
|
7
9
|
description "A meetings component of a participatory space."
|
8
10
|
|
@@ -19,12 +19,12 @@ Decidim.register_component(:meetings) do |component|
|
|
19
19
|
resource.template = "decidim/meetings/meetings/linked_meetings"
|
20
20
|
resource.card = "decidim/meetings/meeting"
|
21
21
|
resource.reported_content_cell = "decidim/meetings/reported_content"
|
22
|
-
resource.actions = %w(join comment)
|
22
|
+
resource.actions = %w(join comment reply_poll)
|
23
23
|
resource.searchable = true
|
24
24
|
end
|
25
25
|
|
26
26
|
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).
|
27
|
+
meetings = Decidim::Meetings::FilteredMeetings.for(components, start_at, end_at).not_withdrawn
|
28
28
|
meetings.count
|
29
29
|
end
|
30
30
|
|
@@ -32,7 +32,11 @@ module Decidim
|
|
32
32
|
resource :live_event, only: :show
|
33
33
|
namespace :polls do
|
34
34
|
resources :questions, only: [:index, :update]
|
35
|
-
resources :answers, only: [:index, :create]
|
35
|
+
resources :answers, only: [:index, :create] do
|
36
|
+
collection do
|
37
|
+
get :admin
|
38
|
+
end
|
39
|
+
end
|
36
40
|
end
|
37
41
|
end
|
38
42
|
scope "/meetings" do
|
@@ -46,8 +50,6 @@ module Decidim
|
|
46
50
|
end
|
47
51
|
|
48
52
|
initializer "decidim_meetings.register_icons" do
|
49
|
-
Decidim.icons.register(name: "headphone-line", icon: "headphone-line", category: "system", description: "", engine: :meetings)
|
50
|
-
Decidim.icons.register(name: "video-line", icon: "video-line", category: "system", description: "", engine: :meetings)
|
51
53
|
Decidim.icons.register(name: "Decidim::Meetings::Meeting", icon: "map-pin-line", description: "Meeting", category: "activity", engine: :meetings)
|
52
54
|
Decidim.icons.register(name: "in_person", icon: "community-line", description: "In person", category: "meetings", engine: :meetings)
|
53
55
|
Decidim.icons.register(name: "online", icon: "webcam-line", description: "Online", category: "meetings", engine: :meetings)
|
@@ -25,9 +25,6 @@ module Decidim
|
|
25
25
|
id: meeting.scope.try(:id),
|
26
26
|
name: meeting.scope.try(:name)
|
27
27
|
},
|
28
|
-
author: {
|
29
|
-
**author_fields
|
30
|
-
},
|
31
28
|
participatory_space: {
|
32
29
|
id: meeting.participatory_space.id,
|
33
30
|
url: Decidim::ResourceLocatorPresenter.new(meeting.participatory_space).url
|
@@ -49,7 +46,9 @@ module Decidim
|
|
49
46
|
url:,
|
50
47
|
related_proposals:,
|
51
48
|
related_results:,
|
52
|
-
published: meeting.published_at.present
|
49
|
+
published: meeting.published_at.present?,
|
50
|
+
withdrawn: meeting.withdrawn?,
|
51
|
+
withdrawn_at: meeting.withdrawn_at
|
53
52
|
}
|
54
53
|
end
|
55
54
|
|
@@ -58,40 +57,6 @@ module Decidim
|
|
58
57
|
attr_reader :meeting
|
59
58
|
alias resource meeting
|
60
59
|
|
61
|
-
def author_fields
|
62
|
-
{
|
63
|
-
id: meeting.author.id,
|
64
|
-
name: author_name(meeting.author),
|
65
|
-
url: author_url(meeting.author)
|
66
|
-
}
|
67
|
-
end
|
68
|
-
|
69
|
-
def author_name(author)
|
70
|
-
translated_attribute(author.name)
|
71
|
-
end
|
72
|
-
|
73
|
-
def author_url(author)
|
74
|
-
if author.respond_to?(:nickname)
|
75
|
-
profile_url(author) # is a Decidim::User or Decidim::UserGroup
|
76
|
-
else
|
77
|
-
root_url # is a Decidim::Organization
|
78
|
-
end
|
79
|
-
end
|
80
|
-
|
81
|
-
def profile_url(author)
|
82
|
-
return "" if author.respond_to?(:deleted?) && author.deleted?
|
83
|
-
|
84
|
-
Decidim::Core::Engine.routes.url_helpers.profile_url(author.nickname, host:)
|
85
|
-
end
|
86
|
-
|
87
|
-
def root_url
|
88
|
-
Decidim::Core::Engine.routes.url_helpers.root_url(host:)
|
89
|
-
end
|
90
|
-
|
91
|
-
def host
|
92
|
-
resource.organization.host
|
93
|
-
end
|
94
|
-
|
95
60
|
def component
|
96
61
|
meeting.component
|
97
62
|
end
|
@@ -59,6 +59,7 @@ module Decidim
|
|
59
59
|
def meeting_params(component:, type:, author_type:)
|
60
60
|
start_time = ::Faker::Date.between(from: 20.weeks.ago, to: 20.weeks.from_now)
|
61
61
|
end_time = start_time + [rand(1..4).hours, rand(1..20).days].sample
|
62
|
+
registration_type = Decidim::Meetings::Meeting::REGISTRATION_TYPES.keys.sample
|
62
63
|
|
63
64
|
params = {
|
64
65
|
component:,
|
@@ -78,6 +79,7 @@ module Decidim
|
|
78
79
|
registrations_enabled: [true, false].sample,
|
79
80
|
available_slots: (10..50).step(10).to_a.sample,
|
80
81
|
author: participatory_space.organization,
|
82
|
+
registration_type:,
|
81
83
|
registration_terms: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
|
82
84
|
Decidim::Faker::Localized.paragraph(sentence_count: 3)
|
83
85
|
end,
|
@@ -118,6 +120,15 @@ module Decidim
|
|
118
120
|
params # :in_person
|
119
121
|
end
|
120
122
|
|
123
|
+
params = case registration_type
|
124
|
+
when :on_different_platform
|
125
|
+
params.merge(registration_url: Faker::Internet.url)
|
126
|
+
when :on_this_platform
|
127
|
+
params.merge(registrations_enabled: true)
|
128
|
+
else
|
129
|
+
params # registration_disabled
|
130
|
+
end
|
131
|
+
|
121
132
|
case author_type
|
122
133
|
when :user
|
123
134
|
params.merge(
|
@@ -132,7 +143,7 @@ module Decidim
|
|
132
143
|
user_group:
|
133
144
|
)
|
134
145
|
else
|
135
|
-
params #
|
146
|
+
params # official
|
136
147
|
end
|
137
148
|
end
|
138
149
|
|
@@ -160,10 +171,6 @@ module Decidim
|
|
160
171
|
followers: resource.participatory_space.followers
|
161
172
|
)
|
162
173
|
|
163
|
-
Decidim.traceability.perform_action!(:publish, resource, admin_user, visibility: "all") do
|
164
|
-
resource.publish!
|
165
|
-
end
|
166
|
-
|
167
174
|
Decidim::Comments::Seed.comments_for(resource)
|
168
175
|
|
169
176
|
resource
|
@@ -193,19 +200,7 @@ module Decidim
|
|
193
200
|
def create_meeting_registration!(meeting:)
|
194
201
|
r = SecureRandom.hex(4)
|
195
202
|
email = "meeting-registered-user-#{meeting.id}-#{r}@example.org"
|
196
|
-
|
197
|
-
user = Decidim::User.find_or_initialize_by(email:)
|
198
|
-
|
199
|
-
user.update!(
|
200
|
-
password: "decidim123456789",
|
201
|
-
name:,
|
202
|
-
nickname: ::Faker::Twitter.unique.screen_name,
|
203
|
-
organization:,
|
204
|
-
tos_agreement: "1",
|
205
|
-
confirmed_at: Time.current,
|
206
|
-
personal_url: ::Faker::Internet.url,
|
207
|
-
about: ::Faker::Lorem.paragraph(sentence_count: 2)
|
208
|
-
)
|
203
|
+
user = find_or_initialize_user_by(email:)
|
209
204
|
|
210
205
|
Decidim::Meetings::Registration.create!(
|
211
206
|
meeting:,
|
@@ -57,19 +57,13 @@ FactoryBot.define do
|
|
57
57
|
end
|
58
58
|
|
59
59
|
trait :withdrawn do
|
60
|
-
|
60
|
+
withdrawn_at { Time.current }
|
61
61
|
end
|
62
62
|
|
63
63
|
trait :in_person do
|
64
64
|
type_of_meeting { :in_person }
|
65
65
|
end
|
66
66
|
|
67
|
-
trait :hidden do
|
68
|
-
after :create do |meeting, evaluator|
|
69
|
-
create(:moderation, hidden_at: Time.current, reportable: meeting, skip_injection: evaluator.skip_injection)
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
67
|
trait :online do
|
74
68
|
type_of_meeting { :online }
|
75
69
|
online_meeting_url { "https://decidim.org" }
|
@@ -3,7 +3,7 @@
|
|
3
3
|
namespace :decidim_meetings do
|
4
4
|
# For privacy reasons we recommend that you delete this registration form when you no longer need it.
|
5
5
|
# By default this is 3 months after the meeting has passed
|
6
|
-
desc "
|
6
|
+
desc "Removes registration forms belonging to meetings that have ended more than X months ago"
|
7
7
|
task :clean_registration_forms, [:months] => :environment do |_t, args|
|
8
8
|
args.with_defaults(months: 3)
|
9
9
|
|