decidim-meetings 0.28.6 → 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.

Files changed (161) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/meetings/attending_organizations_list_cell.rb +1 -1
  3. data/app/cells/decidim/meetings/cancel_registration_meeting_button_cell.rb +1 -2
  4. data/app/cells/decidim/meetings/dates_and_map/show.erb +3 -5
  5. data/app/cells/decidim/meetings/dates_and_map_cell.rb +1 -1
  6. data/app/cells/decidim/meetings/highlighted_meetings_for_component_cell.rb +1 -2
  7. data/app/cells/decidim/meetings/join_meeting_button/remaining_slots.erb +1 -0
  8. data/app/cells/decidim/meetings/join_meeting_button_cell.rb +0 -3
  9. data/app/cells/decidim/meetings/meeting_card_metadata_cell.rb +0 -3
  10. data/app/cells/decidim/meetings/meeting_cell.rb +0 -1
  11. data/app/cells/decidim/meetings/meeting_l_cell.rb +4 -7
  12. data/app/cells/decidim/meetings/meeting_url/show.erb +5 -5
  13. data/app/cells/decidim/meetings/meeting_url_cell.rb +0 -1
  14. data/app/cells/decidim/meetings/online_meeting_link_cell.rb +0 -2
  15. data/app/cells/decidim/meetings/question_responses/show.erb +7 -3
  16. data/app/cells/decidim/meetings/question_responses_cell.rb +0 -2
  17. data/app/commands/decidim/meetings/admin/copy_meeting.rb +2 -2
  18. data/app/commands/decidim/meetings/admin/create_agenda.rb +9 -37
  19. data/app/commands/decidim/meetings/admin/create_meeting.rb +28 -61
  20. data/app/commands/decidim/meetings/admin/destroy_meeting.rb +4 -33
  21. data/app/commands/decidim/meetings/admin/update_agenda.rb +7 -35
  22. data/app/commands/decidim/meetings/admin/update_meeting.rb +30 -68
  23. data/app/commands/decidim/meetings/admin/update_question_status.rb +1 -1
  24. data/app/commands/decidim/meetings/admin/update_questionnaire.rb +19 -11
  25. data/app/commands/decidim/meetings/admin/update_registrations.rb +20 -46
  26. data/app/commands/decidim/meetings/create_answer.rb +5 -4
  27. data/app/commands/decidim/meetings/create_meeting.rb +38 -62
  28. data/app/commands/decidim/meetings/join_meeting.rb +18 -19
  29. data/app/commands/decidim/meetings/update_meeting.rb +6 -7
  30. data/app/commands/decidim/meetings/withdraw_meeting.rb +1 -1
  31. data/app/controllers/concerns/decidim/meetings/admin/invites/filterable.rb +33 -0
  32. data/app/controllers/decidim/meetings/admin/agenda_controller.rb +1 -1
  33. data/app/controllers/decidim/meetings/admin/invites_controller.rb +6 -6
  34. data/app/controllers/decidim/meetings/admin/meetings_controller.rb +2 -2
  35. data/app/controllers/decidim/meetings/admin/meetings_poll_controller.rb +12 -0
  36. data/app/controllers/decidim/meetings/application_controller.rb +1 -1
  37. data/app/controllers/decidim/meetings/live_events_controller.rb +1 -1
  38. data/app/controllers/decidim/meetings/meetings_controller.rb +3 -33
  39. data/app/controllers/decidim/meetings/polls/answers_controller.rb +10 -2
  40. data/app/controllers/decidim/meetings/registrations_controller.rb +3 -3
  41. data/app/forms/decidim/meetings/admin/close_meeting_form.rb +1 -1
  42. data/app/forms/decidim/meetings/admin/meeting_agenda_items_form.rb +1 -1
  43. data/app/forms/decidim/meetings/admin/meeting_form.rb +1 -1
  44. data/app/forms/decidim/meetings/admin/meeting_registrations_form.rb +3 -3
  45. data/app/forms/decidim/meetings/admin/question_form.rb +8 -4
  46. data/app/forms/decidim/meetings/answer_form.rb +4 -4
  47. data/app/forms/decidim/meetings/meeting_form.rb +1 -1
  48. data/app/helpers/decidim/meetings/application_helper.rb +1 -5
  49. data/app/mailers/decidim/meetings/close_meeting_reminder_mailer.rb +1 -1
  50. data/app/models/decidim/meetings/meeting.rb +15 -4
  51. data/app/models/decidim/meetings/poll.rb +8 -0
  52. data/app/models/decidim/meetings/question.rb +1 -0
  53. data/app/models/decidim/meetings/questionnaire.rb +0 -6
  54. data/app/packs/src/decidim/meetings/admin/meetings_form.js +3 -3
  55. data/app/packs/src/decidim/meetings/meetings_form.js +3 -3
  56. data/app/packs/src/decidim/meetings/meetings_polls.js +5 -0
  57. data/app/packs/src/decidim/meetings/poll.component.js +32 -4
  58. data/app/packs/stylesheets/decidim/meetings/_item.scss +126 -6
  59. data/app/packs/stylesheets/decidim/meetings/_live_event.scss +0 -94
  60. data/app/permissions/decidim/meetings/permissions.rb +22 -7
  61. data/app/presenters/decidim/meetings/meeting_presenter.rb +10 -3
  62. data/app/services/decidim/meetings/calendar/component_calendar.rb +1 -1
  63. data/app/services/decidim/meetings/calendar/meeting_to_event.rb +1 -1
  64. data/app/services/decidim/meetings/close_meeting_reminder_generator.rb +1 -1
  65. data/app/services/decidim/meetings/meeting_iframe_embedder.rb +2 -2
  66. data/app/views/decidim/meetings/_calendar_modal.html.erb +1 -1
  67. data/app/views/decidim/meetings/admin/agenda/_agenda_item.html.erb +3 -3
  68. data/app/views/decidim/meetings/admin/agenda/_agenda_item_child.html.erb +3 -3
  69. data/app/views/decidim/meetings/admin/agenda/_agenda_item_fields.html.erb +3 -3
  70. data/app/views/decidim/meetings/admin/invite_join_meeting_mailer/invite.html.erb +3 -1
  71. data/app/views/decidim/meetings/admin/invites/_form.html.erb +4 -4
  72. data/app/views/decidim/meetings/admin/invites/index.html.erb +4 -34
  73. data/app/views/decidim/meetings/admin/meetings/_form.html.erb +8 -8
  74. data/app/views/decidim/meetings/admin/meetings/_service.html.erb +3 -3
  75. data/app/views/decidim/meetings/admin/meetings/index.html.erb +2 -2
  76. data/app/views/decidim/meetings/admin/poll/_answer_option.html.erb +1 -1
  77. data/app/views/decidim/meetings/admin/poll/_answer_option_template.html.erb +1 -1
  78. data/app/views/decidim/meetings/admin/poll/_form.html.erb +26 -25
  79. data/app/views/decidim/meetings/admin/poll/_question.html.erb +18 -16
  80. data/app/views/decidim/meetings/admin/poll/edit.html.erb +4 -6
  81. data/app/views/decidim/meetings/admin/registrations/edit.html.erb +2 -4
  82. data/app/views/decidim/meetings/close_meeting_reminder_mailer/close_meeting_reminder.html.erb +1 -1
  83. data/app/views/decidim/meetings/layouts/live_event.html.erb +1 -15
  84. data/app/views/decidim/meetings/meetings/_datetime.html.erb +4 -4
  85. data/app/views/decidim/meetings/meetings/_form.html.erb +17 -17
  86. data/app/views/decidim/meetings/meetings/_meeting.html.erb +2 -1
  87. data/app/views/decidim/meetings/meetings/_meeting_agenda.html.erb +2 -2
  88. data/app/views/decidim/meetings/meetings/_meeting_aside.html.erb +3 -1
  89. data/app/views/decidim/meetings/meetings/_meeting_minutes.html.erb +1 -1
  90. data/app/views/decidim/meetings/meetings/_meeting_poll_actions.html.erb +15 -0
  91. data/app/views/decidim/meetings/meetings/index.html.erb +0 -9
  92. data/app/views/decidim/meetings/meetings/new.html.erb +0 -1
  93. data/app/views/decidim/meetings/polls/answers/_multiple_option.html.erb +6 -10
  94. data/app/views/decidim/meetings/polls/answers/_single_option.html.erb +4 -10
  95. data/app/views/decidim/meetings/polls/answers/admin.html.erb +34 -0
  96. data/app/views/decidim/meetings/polls/answers/index.html.erb +36 -0
  97. data/app/views/decidim/meetings/polls/questions/_closed_question.html.erb +8 -2
  98. data/app/views/decidim/meetings/polls/questions/_index_admin.html.erb +27 -24
  99. data/app/views/decidim/meetings/polls/questions/_published_question.html.erb +14 -11
  100. data/app/views/decidim/meetings/polls/questions/_question.html.erb +1 -1
  101. data/app/views/decidim/meetings/polls/questions/index.js.erb +3 -3
  102. data/app/views/decidim/meetings/polls/questions/index_admin.js.erb +3 -3
  103. data/app/views/decidim/meetings/registration_mailer/confirmation.html.erb +1 -1
  104. data/app/views/decidim/meetings/shared/_meetings.html.erb +1 -1
  105. data/app/views/devise/mailer/join_meeting.html.erb +3 -1
  106. data/app/views/devise/mailer/join_meeting.text.erb +3 -1
  107. data/config/locales/ar.yml +7 -13
  108. data/config/locales/bg.yml +51 -11
  109. data/config/locales/ca.yml +48 -18
  110. data/config/locales/cs.yml +34 -16
  111. data/config/locales/de.yml +161 -131
  112. data/config/locales/el.yml +7 -13
  113. data/config/locales/en.yml +45 -15
  114. data/config/locales/es-MX.yml +53 -23
  115. data/config/locales/es-PY.yml +54 -24
  116. data/config/locales/es.yml +55 -25
  117. data/config/locales/eu.yml +102 -72
  118. data/config/locales/fi-plain.yml +52 -17
  119. data/config/locales/fi.yml +62 -27
  120. data/config/locales/fr-CA.yml +50 -19
  121. data/config/locales/fr.yml +50 -19
  122. data/config/locales/ga-IE.yml +0 -8
  123. data/config/locales/gl.yml +8 -11
  124. data/config/locales/hu.yml +10 -13
  125. data/config/locales/id-ID.yml +6 -12
  126. data/config/locales/is-IS.yml +1 -15
  127. data/config/locales/it.yml +9 -23
  128. data/config/locales/ja.yml +48 -18
  129. data/config/locales/lb.yml +7 -10
  130. data/config/locales/lt.yml +9 -12
  131. data/config/locales/lv.yml +6 -12
  132. data/config/locales/nl.yml +8 -14
  133. data/config/locales/no.yml +6 -12
  134. data/config/locales/pl.yml +51 -11
  135. data/config/locales/pt-BR.yml +29 -17
  136. data/config/locales/pt.yml +7 -14
  137. data/config/locales/ro-RO.yml +4 -17
  138. data/config/locales/ru.yml +6 -12
  139. data/config/locales/sk.yml +7 -13
  140. data/config/locales/sv.yml +110 -206
  141. data/config/locales/tr-TR.yml +8 -17
  142. data/config/locales/uk.yml +6 -15
  143. data/config/locales/zh-CN.yml +7 -15
  144. data/config/locales/zh-TW.yml +7 -13
  145. data/db/migrate/20240130135858_add_withdrawn_fields_on_meetings.rb +23 -0
  146. data/decidim-meetings.gemspec +2 -2
  147. data/lib/decidim/api/meeting_type.rb +3 -12
  148. data/lib/decidim/api/meetings_type.rb +3 -1
  149. data/lib/decidim/meetings/component.rb +2 -2
  150. data/lib/decidim/meetings/engine.rb +6 -9
  151. data/lib/decidim/meetings/meeting_serializer.rb +3 -38
  152. data/lib/decidim/meetings/seeds.rb +13 -18
  153. data/lib/decidim/meetings/test/factories.rb +1 -7
  154. data/lib/decidim/meetings/test/notifications_handling.rb +1 -1
  155. data/lib/decidim/meetings/version.rb +1 -1
  156. data/lib/tasks/decidim_meetings.rake +1 -1
  157. metadata +24 -23
  158. data/app/views/decidim/meetings/admin/agenda/show.html.erb +0 -0
  159. data/config/locales/bn-BD.yml +0 -1
  160. data/config/locales/bs-BA.yml +0 -8
  161. data/config/locales/ca-IT.yml +0 -661
@@ -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: kapsam
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
@@ -246,6 +237,8 @@ tr:
246
237
  registrations:
247
238
  edit:
248
239
  save: Kaydet
240
+ validate: Doğrula
241
+ validate_registration_code: Kayıt kodunu doğrula
249
242
  form:
250
243
  available_slots_help: Mevcut sınırsız yuvaya sahipseniz 0'a bırakın.
251
244
  invites: Davetiyeler
@@ -259,6 +252,9 @@ tr:
259
252
  update:
260
253
  invalid: Kayıt ayarları kaydedilirken bir sorun oluştu.
261
254
  success: Toplantı kayıtları ayarları başarıyla kaydedildi.
255
+ validate_registration_code:
256
+ invalid: Bu kayıt kodu geçersiz.
257
+ success: Kayıt kodu başarıyla doğrulandı.
262
258
  admin_log:
263
259
  invite:
264
260
  create: "%{user_name}, %{attendee_name} adlı kişiyi %{space_name} alanındaki %{resource_name} toplantısına katılmaya davet etti"
@@ -273,9 +269,6 @@ tr:
273
269
  value_types:
274
270
  organizer_presenter:
275
271
  not_found: 'Organizatör veritabanında bulunamadı (ID: %{id})'
276
- application_helper:
277
- filter_category_values:
278
- all: Tümü
279
272
  calendar:
280
273
  meeting_to_event:
281
274
  read_more: Bu toplantı hakkında daha fazlasını okuyun
@@ -342,14 +335,12 @@ tr:
342
335
  select_a_registration_type: Lütfen bir kayıt türü seçin
343
336
  index:
344
337
  new_meeting: Yeni toplantı
345
- meeting:
346
- close_meeting: Toplantıyı kapat
347
- edit_meeting: Toplantıyı Düzenle
348
338
  meetings:
349
339
  upcoming_meetings_warning: Şu anda planlanmış bir toplantı yok, ancak burada listelenen tüm geçmiş toplantıları bulabilirsiniz.
350
340
  new:
351
341
  back: Geri
352
342
  create: Oluştur
343
+ title: Bir Toplantı Oluştur
353
344
  registration_confirm:
354
345
  cancel: İptal Et
355
346
  confirm: Onayla
@@ -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: Закрити
@@ -202,6 +193,8 @@ uk:
202
193
  registrations:
203
194
  edit:
204
195
  save: Зберегти
196
+ validate: Підтвердити
197
+ validate_registration_code: Підтвердити реєстраційний код
205
198
  form:
206
199
  available_slots_help: Залиште це число нульовим, якщо у вас не обмежена кількість місць.
207
200
  invites: Запрошення
@@ -209,6 +202,9 @@ uk:
209
202
  update:
210
203
  invalid: При спробі зберегти налаштування реєстрації сталася помилка.
211
204
  success: Налаштування реєстрації на зустріч успішно збережено.
205
+ validate_registration_code:
206
+ invalid: Цей реєстраційний код неналежний.
207
+ success: Реєстраційний код успішно підтверджено.
212
208
  admin_log:
213
209
  invite:
214
210
  create: "%{user_name} запросив %{attendee_name} приєднатися до зустрічі %{resource_name} у просторі %{space_name}"
@@ -235,8 +231,6 @@ uk:
235
231
  category: Категорія
236
232
  date: Дата
237
233
  search: Шукати
238
- meeting:
239
- close_meeting: Закрити зустріч
240
234
  meetings:
241
235
  upcoming_meetings_warning: Наразі нема запланованих зустрічей, але тут ви можете знайти перелік усіх попередніх зустрічей.
242
236
  registration_confirm:
@@ -285,9 +279,6 @@ uk:
285
279
  types:
286
280
  private_meeting: Приватна зустріч
287
281
  transparent: Прозора
288
- metrics:
289
- meetings:
290
- title: Зустрічі
291
282
  participatory_spaces:
292
283
  highlighted_meetings:
293
284
  past_meetings: Минулі зустрічі
@@ -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: 关闭
@@ -227,6 +218,8 @@ zh-CN:
227
218
  registrations:
228
219
  edit:
229
220
  save: 保存
221
+ validate: Validate
222
+ validate_registration_code: 验证注册码
230
223
  form:
231
224
  available_slots_help: 如果您有无限空位可用,则将其留给0。
232
225
  invites: 邀请
@@ -239,6 +232,9 @@ zh-CN:
239
232
  update:
240
233
  invalid: 保存注册设置时出现问题。
241
234
  success: 会议注册设置保存成功。
235
+ validate_registration_code:
236
+ invalid: 此注册码无效。
237
+ success: 注册码已成功验证。
242
238
  admin_log:
243
239
  invite:
244
240
  create: "%{user_name} 邀請了 %{attendee_name} 在 %{space_name} 空间加入 %{resource_name} 次会议"
@@ -253,9 +249,6 @@ zh-CN:
253
249
  value_types:
254
250
  organizer_presenter:
255
251
  not_found: '在数据库中找不到组织者 (ID: %{id})'
256
- application_helper:
257
- filter_category_values:
258
- all: 所有的
259
252
  calendar_modal:
260
253
  calendar_url: 日历 URL
261
254
  export_calendar: 导出日历
@@ -302,13 +295,12 @@ zh-CN:
302
295
  select_a_category: 请选择一个类别
303
296
  index:
304
297
  new_meeting: 新会议
305
- meeting:
306
- close_meeting: 关闭会议
307
298
  meetings:
308
299
  upcoming_meetings_warning: 目前没有排定的会议,但在这里你可以找到过去所有会议的清单。
309
300
  new:
310
301
  back: 后退
311
302
  create: 创建
303
+ title: 创建您的会议
312
304
  registration_confirm:
313
305
  cancel: 取消
314
306
  confirm: 确认
@@ -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: 關閉
@@ -341,6 +338,8 @@ zh-TW:
341
338
  registrations:
342
339
  edit:
343
340
  save: 儲存
341
+ validate: 驗證
342
+ validate_registration_code: 驗證註冊碼
344
343
  form:
345
344
  available_slots_help: 如果您有無限的可用名額,請將其設置為0。
346
345
  invites: 邀請
@@ -355,6 +354,9 @@ zh-TW:
355
354
  update:
356
355
  invalid: 儲存註冊設定時出現問題。
357
356
  success: 會議註冊設定已成功保存。
357
+ validate_registration_code:
358
+ invalid: 此註冊碼無效。
359
+ success: 註冊碼已成功驗證。
358
360
  admin_log:
359
361
  invite:
360
362
  create: "%{user_name} 邀請 %{attendee_name} 參加在 %{space_name} 空間舉行的 %{resource_name} 會議。"
@@ -390,7 +392,6 @@ zh-TW:
390
392
  body: 會議<a href="%{meeting_path}">"%{meeting_title}"</a>等待關閉,請使用“關閉會議”按鈕添加會議報告。
391
393
  greetings: 問候,<br/>%{organization_name}<br/><a href="%{organization_url}">%{organization_url}</a>
392
394
  hello: 哈囉,%{username}!
393
- subject: 您現在可以在 %{organization_name} 平台上透過報告結束您的會議。
394
395
  conference_venues: 會議場地
395
396
  content_blocks:
396
397
  upcoming_meetings:
@@ -407,7 +408,6 @@ zh-TW:
407
408
  iframe_embed_type:
408
409
  embed_in_meeting_page: 嵌入會議頁面
409
410
  none: 沒有
410
- open_in_live_event_page: 在直播活動頁面開啟(附加投票選項)
411
411
  open_in_new_tab: 在新頁籤中開啟 URL
412
412
  last_activity:
413
413
  meeting_updated: '會議已更新:'
@@ -415,7 +415,6 @@ zh-TW:
415
415
  layouts:
416
416
  live_event:
417
417
  close: 關閉
418
- questions: 問題
419
418
  mailer:
420
419
  invite_join_meeting_mailer:
421
420
  invite:
@@ -488,15 +487,13 @@ zh-TW:
488
487
  see_all: 查看所有會議
489
488
  see_all_withdrawn: 查看所有撤回的會議
490
489
  text_banner: 您正在查看已被其作者撤回的會議列表。 %{go_back_link}。
491
- meeting:
492
- close_meeting: 關閉會議
493
- edit_meeting: 編輯會議
494
490
  meetings:
495
491
  no_meetings_warning: 沒有符合搜尋條件的會議或者目前沒有任何已排定的會議。
496
492
  upcoming_meetings_warning: 目前沒有安排的會議,但您可以在這裡找到所有過去的會議列表。
497
493
  new:
498
494
  back: 返回
499
495
  create: 建立
496
+ title: 新增您的會議
500
497
  registration_confirm:
501
498
  cancel: 取消
502
499
  confirm: 確認
@@ -548,12 +545,9 @@ zh-TW:
548
545
  title: 標題
549
546
  polls:
550
547
  questions:
551
- closed_question:
552
- question_results: 問題結果
553
548
  index:
554
549
  empty_questions: 在本次會議期間,您將收到一些問題並且您可以回答這些問題。這些問題將會在此顯示。
555
550
  index_admin:
556
- admin_dashboard: 管理員儀表板
557
551
  edit: 在管理面板中編輯
558
552
  question: 問題
559
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
@@ -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-or-later"
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.1.0"
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::Core::ComponentType
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).except_withdrawn
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)
@@ -77,12 +79,7 @@ module Decidim
77
79
 
78
80
  initializer "decidim_meetings.content_security_handlers" do |_app|
79
81
  Decidim.configure do |config|
80
- if config.content_security_policies_extra["frame-src"].respond_to?(:<<)
81
- config.content_security_policies_extra["frame-src"] << "player.twitch.tv"
82
- config.content_security_policies_extra["frame-src"] << "meet.jit.si"
83
- else
84
- config.content_security_policies_extra["frame-src"] = %w(player.twitch.tv meet.jit.si)
85
- end
82
+ config.content_security_policies_extra.deep_merge!({ "frame-src" => %w(player.twitch.tv meet.jit.si) })
86
83
  end
87
84
  end
88
85
 
@@ -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 # oficial
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
- name = "#{::Faker::Name.name} #{meeting.id} #{r}"
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
- state { "withdrawn" }
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" }
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- shared_examples_for "emits an upcoming notificaton" do
3
+ shared_examples_for "emits an upcoming notification" do
4
4
  context "when it is a future meeting" do
5
5
  let(:future_start_date) { 3.days.from_now }
6
6
 
@@ -4,7 +4,7 @@ module Decidim
4
4
  # This holds the decidim-meetings version.
5
5
  module Meetings
6
6
  def self.version
7
- "0.28.6"
7
+ "0.29.0.rc1"
8
8
  end
9
9
  end
10
10
  end
@@ -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 "Remove registration forms belonging to meetings that have ended more than X months ago"
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