decidim-meetings 0.28.1 → 0.29.0.rc1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of decidim-meetings might be problematic. Click here for more details.

Files changed (149) 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/highlighted_meetings_for_component_cell.rb +1 -2
  5. data/app/cells/decidim/meetings/join_meeting_button/registration_modal.erb +1 -1
  6. data/app/cells/decidim/meetings/join_meeting_button/remaining_slots.erb +1 -0
  7. data/app/cells/decidim/meetings/join_meeting_button_cell.rb +0 -3
  8. data/app/cells/decidim/meetings/meeting_card_metadata_cell.rb +0 -3
  9. data/app/cells/decidim/meetings/meeting_cell.rb +0 -1
  10. data/app/cells/decidim/meetings/meeting_l/image.erb +3 -3
  11. data/app/cells/decidim/meetings/meeting_l_cell.rb +0 -2
  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/meeting_registrations_form.rb +1 -1
  42. data/app/forms/decidim/meetings/admin/question_form.rb +8 -4
  43. data/app/forms/decidim/meetings/answer_form.rb +4 -4
  44. data/app/forms/decidim/meetings/meeting_form.rb +1 -1
  45. data/app/mailers/decidim/meetings/close_meeting_reminder_mailer.rb +1 -1
  46. data/app/models/decidim/meetings/meeting.rb +15 -5
  47. data/app/models/decidim/meetings/poll.rb +8 -0
  48. data/app/models/decidim/meetings/question.rb +1 -0
  49. data/app/models/decidim/meetings/questionnaire.rb +0 -6
  50. data/app/packs/src/decidim/meetings/admin/meetings_form.js +3 -3
  51. data/app/packs/src/decidim/meetings/meetings_form.js +3 -3
  52. data/app/packs/src/decidim/meetings/meetings_polls.js +5 -0
  53. data/app/packs/src/decidim/meetings/poll.component.js +32 -4
  54. data/app/packs/stylesheets/decidim/meetings/_item.scss +109 -1
  55. data/app/packs/stylesheets/decidim/meetings/_live_event.scss +0 -94
  56. data/app/permissions/decidim/meetings/permissions.rb +20 -0
  57. data/app/presenters/decidim/meetings/admin_log/meeting_presenter.rb +0 -4
  58. data/app/presenters/decidim/meetings/admin_log/value_types/meeting_title_description_presenter.rb +1 -1
  59. data/app/services/decidim/meetings/calendar/component_calendar.rb +1 -1
  60. data/app/services/decidim/meetings/calendar/meeting_to_event.rb +1 -1
  61. data/app/services/decidim/meetings/close_meeting_reminder_generator.rb +12 -6
  62. data/app/services/decidim/meetings/meeting_iframe_embedder.rb +2 -2
  63. data/app/views/decidim/meetings/admin/agenda/_agenda_item.html.erb +3 -3
  64. data/app/views/decidim/meetings/admin/agenda/_agenda_item_child.html.erb +3 -3
  65. data/app/views/decidim/meetings/admin/agenda/_agenda_item_fields.html.erb +3 -3
  66. data/app/views/decidim/meetings/admin/invite_join_meeting_mailer/invite.html.erb +3 -1
  67. data/app/views/decidim/meetings/admin/invites/_form.html.erb +4 -4
  68. data/app/views/decidim/meetings/admin/invites/index.html.erb +4 -34
  69. data/app/views/decidim/meetings/admin/meetings/_form.html.erb +8 -8
  70. data/app/views/decidim/meetings/admin/meetings/_service.html.erb +3 -3
  71. data/app/views/decidim/meetings/admin/meetings/index.html.erb +2 -2
  72. data/app/views/decidim/meetings/admin/poll/_answer_option.html.erb +1 -1
  73. data/app/views/decidim/meetings/admin/poll/_answer_option_template.html.erb +1 -1
  74. data/app/views/decidim/meetings/admin/poll/_form.html.erb +26 -25
  75. data/app/views/decidim/meetings/admin/poll/_question.html.erb +18 -16
  76. data/app/views/decidim/meetings/admin/poll/edit.html.erb +4 -6
  77. data/app/views/decidim/meetings/admin/registrations/edit.html.erb +1 -1
  78. data/app/views/decidim/meetings/close_meeting_reminder_mailer/close_meeting_reminder.html.erb +1 -1
  79. data/app/views/decidim/meetings/layouts/live_event.html.erb +1 -15
  80. data/app/views/decidim/meetings/meetings/_datetime.html.erb +4 -4
  81. data/app/views/decidim/meetings/meetings/_form.html.erb +17 -17
  82. data/app/views/decidim/meetings/meetings/_meeting.html.erb +2 -1
  83. data/app/views/decidim/meetings/meetings/_meeting_agenda.html.erb +2 -2
  84. data/app/views/decidim/meetings/meetings/_meeting_aside.html.erb +3 -2
  85. data/app/views/decidim/meetings/meetings/_meeting_poll_actions.html.erb +15 -0
  86. data/app/views/decidim/meetings/polls/answers/_multiple_option.html.erb +6 -10
  87. data/app/views/decidim/meetings/polls/answers/_single_option.html.erb +4 -10
  88. data/app/views/decidim/meetings/polls/answers/admin.html.erb +34 -0
  89. data/app/views/decidim/meetings/polls/answers/index.html.erb +36 -0
  90. data/app/views/decidim/meetings/polls/questions/_closed_question.html.erb +8 -2
  91. data/app/views/decidim/meetings/polls/questions/_index_admin.html.erb +27 -24
  92. data/app/views/decidim/meetings/polls/questions/_published_question.html.erb +14 -11
  93. data/app/views/decidim/meetings/polls/questions/_question.html.erb +1 -1
  94. data/app/views/decidim/meetings/polls/questions/index.js.erb +3 -3
  95. data/app/views/decidim/meetings/polls/questions/index_admin.js.erb +3 -3
  96. data/app/views/devise/mailer/join_meeting.html.erb +3 -1
  97. data/app/views/devise/mailer/join_meeting.text.erb +3 -1
  98. data/config/locales/ar.yml +0 -11
  99. data/config/locales/bg.yml +682 -0
  100. data/config/locales/ca.yml +45 -13
  101. data/config/locales/cs.yml +24 -12
  102. data/config/locales/de.yml +44 -12
  103. data/config/locales/el.yml +0 -11
  104. data/config/locales/en.yml +44 -12
  105. data/config/locales/es-MX.yml +44 -12
  106. data/config/locales/es-PY.yml +44 -12
  107. data/config/locales/es.yml +44 -12
  108. data/config/locales/eu.yml +44 -12
  109. data/config/locales/fi-plain.yml +44 -12
  110. data/config/locales/fi.yml +44 -12
  111. data/config/locales/fr-CA.yml +44 -12
  112. data/config/locales/fr.yml +44 -12
  113. data/config/locales/ga-IE.yml +0 -5
  114. data/config/locales/gl.yml +0 -5
  115. data/config/locales/hu.yml +0 -8
  116. data/config/locales/id-ID.yml +0 -3
  117. data/config/locales/is-IS.yml +0 -3
  118. data/config/locales/it.yml +0 -9
  119. data/config/locales/ja.yml +44 -12
  120. data/config/locales/lb.yml +0 -3
  121. data/config/locales/lt.yml +0 -11
  122. data/config/locales/lv.yml +0 -3
  123. data/config/locales/nl.yml +0 -11
  124. data/config/locales/no.yml +0 -10
  125. data/config/locales/pl.yml +137 -9
  126. data/config/locales/pt-BR.yml +17 -13
  127. data/config/locales/pt.yml +0 -9
  128. data/config/locales/ro-RO.yml +0 -11
  129. data/config/locales/ru.yml +0 -3
  130. data/config/locales/sk.yml +0 -3
  131. data/config/locales/sv.yml +0 -10
  132. data/config/locales/tr-TR.yml +3 -4
  133. data/config/locales/uk.yml +0 -3
  134. data/config/locales/zh-CN.yml +0 -4
  135. data/config/locales/zh-TW.yml +0 -11
  136. data/db/migrate/20240130135858_add_withdrawn_fields_on_meetings.rb +23 -0
  137. data/decidim-meetings.gemspec +1 -1
  138. data/lib/decidim/api/meeting_type.rb +3 -0
  139. data/lib/decidim/meetings/component.rb +2 -2
  140. data/lib/decidim/meetings/engine.rb +5 -1
  141. data/lib/decidim/meetings/meeting_serializer.rb +3 -1
  142. data/lib/decidim/meetings/seeds.rb +25 -18
  143. data/lib/decidim/meetings/test/factories.rb +1 -1
  144. data/lib/decidim/meetings/test/notifications_handling.rb +1 -1
  145. data/lib/decidim/meetings/version.rb +1 -1
  146. data/lib/tasks/decidim_meetings.rake +1 -1
  147. metadata +26 -23
  148. data/app/presenters/decidim/meetings/log/resource_presenter.rb +0 -18
  149. data/app/views/decidim/meetings/admin/agenda/show.html.erb +0 -0
@@ -91,6 +91,11 @@ pt-BR:
91
91
  decidim:
92
92
  admin:
93
93
  filters:
94
+ accepted_at_not_null:
95
+ label: Aceitou
96
+ values:
97
+ 'false': Não aceito
98
+ 'true': Aceitou
94
99
  meetings:
95
100
  category_id_eq:
96
101
  label: Categoria
@@ -118,6 +123,18 @@ pt-BR:
118
123
  hybrid: Híbrido
119
124
  in_person: Presencialmente
120
125
  online: Virtual
126
+ rejected_at_not_null:
127
+ label: Rejeitado
128
+ values:
129
+ 'false': Não rejeitado
130
+ 'true': Rejeitado
131
+ search_placeholder:
132
+ user_name_or_user_email_cont: Buscar por nome ou email
133
+ sent_at_not_null:
134
+ label: Enviado
135
+ values:
136
+ 'false': Não enviado
137
+ 'true': Enviado
121
138
  meeting_copies:
122
139
  create:
123
140
  error: Ocorreu um erro ao duplicar esta reunião.
@@ -282,15 +299,9 @@ pt-BR:
282
299
  non_user: Usuário inexistente
283
300
  select_user: Selecionar usuário
284
301
  index:
285
- filter:
286
- accepted: Aceitou
287
- all: Tudo
288
- rejected: Rejeitado
289
- sent: Enviado
290
302
  invite_attendee: Convidar participante
291
303
  invites: Convites
292
304
  registrations_disabled: Você não pode convidar um participante porque os registros estão desativados.
293
- search: Pesquisa
294
305
  meeting_closes:
295
306
  edit:
296
307
  close: Fechar
@@ -413,7 +424,6 @@ pt-BR:
413
424
  body: A reunião <a href="%{meeting_path}">"%{meeting_title}"</a> está pendente para ser fechada. Adicione um relatório da reunião usando o botão "Fechar reunião".
414
425
  greetings: Saudações,<br/>%{organization_name}<br/><a href="%{organization_url}">%{organization_url}</a>
415
426
  hello: Olá %{username},
416
- subject: Agora você pode encerrar sua reunião com um relatório na plataforma %{organization_name}
417
427
  conference_venues: Locais de conferência
418
428
  content_blocks:
419
429
  upcoming_meetings:
@@ -430,16 +440,13 @@ pt-BR:
430
440
  iframe_embed_type:
431
441
  embed_in_meeting_page: Incorporar na página da reunião
432
442
  none: Nenhum
433
- open_in_live_event_page: Abrir na página de eventos ao vivo (com enquetes opcionais)
434
443
  open_in_new_tab: Abrir URL em uma nova aba
435
444
  last_activity:
436
445
  meeting_updated: 'Reunião atualizada:'
437
446
  new_meeting: 'Nova reunião:'
438
447
  layouts:
439
448
  live_event:
440
- administrate: Administrar
441
449
  close: fechar
442
- questions: Perguntas
443
450
  mailer:
444
451
  invite_join_meeting_mailer:
445
452
  invite:
@@ -579,12 +586,9 @@ pt-BR:
579
586
  title: Título
580
587
  polls:
581
588
  questions:
582
- closed_question:
583
- question_results: Resultados das perguntas
584
589
  index:
585
590
  empty_questions: Durante esta reunião, algumas perguntas serão enviadas e você poderá respondê-las. Elas serão exibidas aqui.
586
591
  index_admin:
587
- admin_dashboard: Painel de administração
588
592
  edit: Editar no painel de administração
589
593
  question: Pergunta
590
594
  received_answer: resposta recebida
@@ -229,12 +229,8 @@ pt:
229
229
  non_user: Participante inexistente
230
230
  select_user: Selecione o participante
231
231
  index:
232
- filter:
233
- all: Todos
234
- sent: Enviado
235
232
  invite_attendee: Convidar participante
236
233
  invites: Convites
237
- search: Pesquisar
238
234
  meeting_closes:
239
235
  edit:
240
236
  close: Fechar
@@ -320,9 +316,7 @@ pt:
320
316
  space_type: Espaço participativo
321
317
  layouts:
322
318
  live_event:
323
- administrate: Administradores
324
319
  close: Fechar
325
- questions: Pergunta
326
320
  mailer:
327
321
  invite_join_meeting_mailer:
328
322
  invite:
@@ -440,12 +434,9 @@ pt:
440
434
  title: Título
441
435
  polls:
442
436
  questions:
443
- closed_question:
444
- question_results: Resultados das questões
445
437
  index:
446
438
  empty_questions: Durante esta reunião irão ser-lhe enviadas algumas questões e poderá responder-lhes. Serão exibidas aqui.
447
439
  index_admin:
448
- admin_dashboard: Painel de controlo de administrador
449
440
  question: Questão
450
441
  received_answer: resposta recebida
451
442
  received_answers: respostas recebidas
@@ -265,12 +265,8 @@ ro:
265
265
  non_user: Participant neexistent
266
266
  select_user: Selecteză un participant
267
267
  index:
268
- filter:
269
- all: Toate
270
- sent: Trimis
271
268
  invite_attendee: Invită participantul
272
269
  invites: Invitații
273
- search: Caută
274
270
  meeting_closes:
275
271
  edit:
276
272
  close: Închide
@@ -368,7 +364,6 @@ ro:
368
364
  close_meeting_reminder_mailer:
369
365
  close_meeting_reminder:
370
366
  hello: Salut %{username},
371
- subject: Acum poți închide întâlnirea cu un raport pe platforma %{organization_name}
372
367
  conference_venues: Locuri ale conferinței
373
368
  content_blocks:
374
369
  upcoming_meetings:
@@ -384,16 +379,13 @@ ro:
384
379
  iframe_embed_type:
385
380
  embed_in_meeting_page: Incorporează în pagina de şedinţe
386
381
  none: Niciunul
387
- open_in_live_event_page: Deschide în pagina de evenimente live (cu sondaje opționale)
388
382
  open_in_new_tab: Deschideți în filă nouă
389
383
  last_activity:
390
384
  meeting_updated: 'Ședință actualizată:'
391
385
  new_meeting: 'Ședință nouă:'
392
386
  layouts:
393
387
  live_event:
394
- administrate: Administrează
395
388
  close: închide
396
- questions: Întrebări
397
389
  mailer:
398
390
  invite_join_meeting_mailer:
399
391
  invite:
@@ -522,12 +514,9 @@ ro:
522
514
  title: Titlu
523
515
  polls:
524
516
  questions:
525
- closed_question:
526
- question_results: Rezultatele întrebării
527
517
  index:
528
518
  empty_questions: Pe parcursul acestei întâlniri, vor fi trimise câteva întrebări și vei putea răspunde la acestea. Acestea vor fi afișate aici.
529
519
  index_admin:
530
- admin_dashboard: Panou de administrare
531
520
  edit: Editează în panoul de administrare
532
521
  question: Întrebare
533
522
  received_answer: răspuns primit
@@ -182,11 +182,8 @@ ru:
182
182
  non_user: Не существующий участник
183
183
  select_user: Выберите участника
184
184
  index:
185
- filter:
186
- sent: Отправлено
187
185
  invite_attendee: Пригласить участника
188
186
  invites: Приглашения
189
- search: Поиск
190
187
  meeting_closes:
191
188
  edit:
192
189
  close: Закрыть
@@ -184,11 +184,8 @@ sk:
184
184
  non_user: Neexistujúca užívateľ
185
185
  select_user: Vyberte používateľa
186
186
  index:
187
- filter:
188
- sent: Odoslaná
189
187
  invite_attendee: Pozvať účastníka
190
188
  invites: Pozvánky
191
- search: Vyhľadávanie
192
189
  meeting_closes:
193
190
  edit:
194
191
  close: Zavrieť
@@ -248,12 +248,8 @@ sv:
248
248
  non_user: Icke befintlig deltagare
249
249
  select_user: Välj deltagare
250
250
  index:
251
- filter:
252
- all: Alla
253
- sent: Skickat
254
251
  invite_attendee: Bjud in deltagare
255
252
  invites: Inbjudningar
256
- search: Sök
257
253
  meeting_closes:
258
254
  edit:
259
255
  close: Stäng
@@ -355,15 +351,12 @@ sv:
355
351
  iframe_embed_type:
356
352
  embed_in_meeting_page: Bädda in på mötessidan
357
353
  none: Ingen
358
- open_in_live_event_page: Öppna i live event sida (med valfria omröstningar)
359
354
  open_in_new_tab: Öppna länk i ny flik
360
355
  last_activity:
361
356
  new_meeting: 'Nytt möte:'
362
357
  layouts:
363
358
  live_event:
364
- administrate: Administrera
365
359
  close: stäng
366
- questions: Frågor
367
360
  mailer:
368
361
  invite_join_meeting_mailer:
369
362
  invite:
@@ -495,12 +488,9 @@ sv:
495
488
  title: Titel
496
489
  polls:
497
490
  questions:
498
- closed_question:
499
- question_results: Resultat
500
491
  index:
501
492
  empty_questions: Under hela mötet kommer några frågor att skickas och du kommer kunna svara på dem. De kommer att visas här.
502
493
  index_admin:
503
- admin_dashboard: Adminpanel
504
494
  question: Fråga
505
495
  received_answer: mottaget svar
506
496
  received_answers: mottagna svar
@@ -199,12 +199,8 @@ tr:
199
199
  non_user: Mevcut olmayan katılımcı
200
200
  select_user: Katılımcı seç
201
201
  index:
202
- filter:
203
- all: Tümü
204
- sent: Gönderilen
205
202
  invite_attendee: Katılımcı davet et
206
203
  invites: Davetler
207
- search: Arama
208
204
  meeting_closes:
209
205
  edit:
210
206
  close: Kapat
@@ -273,6 +269,9 @@ tr:
273
269
  value_types:
274
270
  organizer_presenter:
275
271
  not_found: 'Organizatör veritabanında bulunamadı (ID: %{id})'
272
+ calendar:
273
+ meeting_to_event:
274
+ read_more: Bu toplantı hakkında daha fazlasını okuyun
276
275
  calendar_modal:
277
276
  calendar_url: Takvim URL'si
278
277
  export_calendar: Takvimi dışa aktar
@@ -164,11 +164,8 @@ uk:
164
164
  non_user: Не чинний учасник
165
165
  select_user: Оберіть учасника
166
166
  index:
167
- filter:
168
- sent: Надіслано
169
167
  invite_attendee: Запросити учасника
170
168
  invites: Запрошення
171
- search: Шукати
172
169
  meeting_closes:
173
170
  edit:
174
171
  close: Закрити
@@ -186,12 +186,8 @@ zh-CN:
186
186
  non_user: 非现有参与者
187
187
  select_user: 选择参与者
188
188
  index:
189
- filter:
190
- all: 所有的
191
- sent: 已发送
192
189
  invite_attendee: 邀请参与者
193
190
  invites: 邀请
194
- search: 搜索
195
191
  meeting_closes:
196
192
  edit:
197
193
  close: 关闭
@@ -273,13 +273,9 @@ zh-TW:
273
273
  non_user: 不存在的參與者。
274
274
  select_user: 選擇參與者
275
275
  index:
276
- filter:
277
- all: 全部
278
- sent: 傳送
279
276
  invite_attendee: 邀請的與會者
280
277
  invites: 邀請
281
278
  registrations_disabled: 你無法邀請參加者,因為註冊已被禁用。
282
- search: 搜尋
283
279
  meeting_closes:
284
280
  edit:
285
281
  close: 關閉
@@ -396,7 +392,6 @@ zh-TW:
396
392
  body: 會議<a href="%{meeting_path}">"%{meeting_title}"</a>等待關閉,請使用“關閉會議”按鈕添加會議報告。
397
393
  greetings: 問候,<br/>%{organization_name}<br/><a href="%{organization_url}">%{organization_url}</a>
398
394
  hello: 哈囉,%{username}!
399
- subject: 您現在可以在 %{organization_name} 平台上透過報告結束您的會議。
400
395
  conference_venues: 會議場地
401
396
  content_blocks:
402
397
  upcoming_meetings:
@@ -413,16 +408,13 @@ zh-TW:
413
408
  iframe_embed_type:
414
409
  embed_in_meeting_page: 嵌入會議頁面
415
410
  none: 沒有
416
- open_in_live_event_page: 在直播活動頁面開啟(附加投票選項)
417
411
  open_in_new_tab: 在新頁籤中開啟 URL
418
412
  last_activity:
419
413
  meeting_updated: '會議已更新:'
420
414
  new_meeting: '新會議:'
421
415
  layouts:
422
416
  live_event:
423
- administrate: 管理員
424
417
  close: 關閉
425
- questions: 問題
426
418
  mailer:
427
419
  invite_join_meeting_mailer:
428
420
  invite:
@@ -553,12 +545,9 @@ zh-TW:
553
545
  title: 標題
554
546
  polls:
555
547
  questions:
556
- closed_question:
557
- question_results: 問題結果
558
548
  index:
559
549
  empty_questions: 在本次會議期間,您將收到一些問題並且您可以回答這些問題。這些問題將會在此顯示。
560
550
  index_admin:
561
- admin_dashboard: 管理員儀表板
562
551
  edit: 在管理面板中編輯
563
552
  question: 問題
564
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
@@ -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
 
@@ -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,7 +46,9 @@ module Decidim
46
46
  url:,
47
47
  related_proposals:,
48
48
  related_results:,
49
- published: meeting.published_at.present?
49
+ published: meeting.published_at.present?,
50
+ withdrawn: meeting.withdrawn?,
51
+ withdrawn_at: meeting.withdrawn_at
50
52
  }
51
53
  end
52
54
 
@@ -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,
@@ -87,7 +89,6 @@ module Decidim
87
89
  params = case type
88
90
  when :hybrid
89
91
  params.merge(
90
- end_time: Time.zone.now + [rand(1..4).hours, rand(1..20).days].sample,
91
92
  type_of_meeting: :hybrid,
92
93
  online_meeting_url: "https://www.youtube.com/watch?v=f6JMgJAQ2tc",
93
94
  iframe_access_level: :all,
@@ -95,7 +96,6 @@ module Decidim
95
96
  )
96
97
  when :online
97
98
  params.merge(
98
- end_time: Time.zone.now + [rand(1..4).hours, rand(1..20).days].sample,
99
99
  location: nil,
100
100
  location_hints: nil,
101
101
  latitude: nil,
@@ -107,7 +107,6 @@ module Decidim
107
107
  )
108
108
  when :online_live_event
109
109
  params.merge(
110
- end_time: Time.zone.now + [rand(1..4).hours, rand(1..20).days].sample,
111
110
  location: nil,
112
111
  location_hints: nil,
113
112
  latitude: nil,
@@ -121,6 +120,15 @@ module Decidim
121
120
  params # :in_person
122
121
  end
123
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
+
124
132
  case author_type
125
133
  when :user
126
134
  params.merge(
@@ -135,7 +143,7 @@ module Decidim
135
143
  user_group:
136
144
  )
137
145
  else
138
- params # oficial
146
+ params # official
139
147
  end
140
148
  end
141
149
 
@@ -149,12 +157,23 @@ module Decidim
149
157
  def create_meeting!(component:, type: :in_person, author_type: :official)
150
158
  params = meeting_params(component:, type:, author_type:)
151
159
 
152
- Decidim.traceability.create!(
160
+ resource = Decidim.traceability.create!(
153
161
  Decidim::Meetings::Meeting,
154
162
  admin_user,
155
163
  params,
156
164
  visibility: "all"
157
165
  )
166
+
167
+ Decidim::EventsManager.publish(
168
+ event: "decidim.events.meetings.meeting_created",
169
+ event_class: Decidim::Meetings::CreateMeetingEvent,
170
+ resource:,
171
+ followers: resource.participatory_space.followers
172
+ )
173
+
174
+ Decidim::Comments::Seed.comments_for(resource)
175
+
176
+ resource
158
177
  end
159
178
 
160
179
  def create_service!(meeting:)
@@ -181,19 +200,7 @@ module Decidim
181
200
  def create_meeting_registration!(meeting:)
182
201
  r = SecureRandom.hex(4)
183
202
  email = "meeting-registered-user-#{meeting.id}-#{r}@example.org"
184
- name = "#{::Faker::Name.name} #{meeting.id} #{r}"
185
- user = Decidim::User.find_or_initialize_by(email:)
186
-
187
- user.update!(
188
- password: "decidim123456789",
189
- name:,
190
- nickname: ::Faker::Twitter.unique.screen_name,
191
- organization:,
192
- tos_agreement: "1",
193
- confirmed_at: Time.current,
194
- personal_url: ::Faker::Internet.url,
195
- about: ::Faker::Lorem.paragraph(sentence_count: 2)
196
- )
203
+ user = find_or_initialize_user_by(email:)
197
204
 
198
205
  Decidim::Meetings::Registration.create!(
199
206
  meeting:,
@@ -57,7 +57,7 @@ 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
@@ -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.1"
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