decidim-meetings 0.24.1 → 0.25.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (216) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/meetings/join_meeting_button/registration_confirm.erb +6 -0
  3. data/app/cells/decidim/meetings/join_meeting_button/show.erb +8 -6
  4. data/app/cells/decidim/meetings/meeting_m_cell.rb +4 -0
  5. data/app/cells/decidim/meetings/meeting_url/show.erb +7 -2
  6. data/app/cells/decidim/meetings/meeting_url_cell.rb +14 -2
  7. data/app/cells/decidim/meetings/meetings_map/show.erb +1 -1
  8. data/app/cells/decidim/meetings/meetings_map_cell.rb +1 -1
  9. data/app/cells/decidim/meetings/online_meeting_cell.rb +36 -0
  10. data/app/cells/decidim/meetings/online_meeting_link/show.erb +44 -0
  11. data/app/cells/decidim/meetings/online_meeting_link_cell.rb +27 -0
  12. data/app/cells/decidim/meetings/public_participants_list/show.erb +16 -0
  13. data/app/cells/decidim/meetings/public_participants_list_cell.rb +31 -0
  14. data/app/cells/decidim/meetings/question_responses/show.erb +7 -0
  15. data/app/cells/decidim/meetings/question_responses_cell.rb +72 -0
  16. data/app/commands/decidim/meetings/admin/close_meeting.rb +3 -0
  17. data/app/commands/decidim/meetings/admin/copy_meeting.rb +0 -9
  18. data/app/commands/decidim/meetings/admin/create_meeting.rb +4 -20
  19. data/app/commands/decidim/meetings/admin/destroy_meeting.rb +2 -0
  20. data/app/commands/decidim/meetings/admin/publish_meeting.rb +72 -0
  21. data/app/commands/decidim/meetings/admin/unpublish_meeting.rb +45 -0
  22. data/app/commands/decidim/meetings/admin/update_meeting.rb +6 -3
  23. data/app/commands/decidim/meetings/admin/update_question_status.rb +57 -0
  24. data/app/commands/decidim/meetings/admin/update_questionnaire.rb +93 -0
  25. data/app/commands/decidim/meetings/close_meeting.rb +2 -0
  26. data/app/commands/decidim/meetings/create_answer.rb +52 -0
  27. data/app/commands/decidim/meetings/create_meeting.rb +3 -1
  28. data/app/commands/decidim/meetings/join_meeting.rb +2 -1
  29. data/app/commands/decidim/meetings/update_meeting.rb +2 -1
  30. data/app/controllers/concerns/decidim/meetings/admin/filterable.rb +55 -0
  31. data/app/controllers/concerns/decidim/meetings/polls_resources.rb +29 -0
  32. data/app/controllers/decidim/meetings/admin/application_controller.rb +6 -2
  33. data/app/controllers/decidim/meetings/admin/invites_controller.rb +0 -2
  34. data/app/controllers/decidim/meetings/admin/meeting_closes_controller.rb +1 -1
  35. data/app/controllers/decidim/meetings/admin/meetings_controller.rb +46 -1
  36. data/app/controllers/decidim/meetings/admin/meetings_poll_controller.rb +107 -0
  37. data/app/controllers/decidim/meetings/calendars_controller.rb +8 -0
  38. data/app/controllers/decidim/meetings/live_events_controller.rb +29 -0
  39. data/app/controllers/decidim/meetings/meeting_closes_controller.rb +1 -1
  40. data/app/controllers/decidim/meetings/polls/answers_controller.rb +37 -0
  41. data/app/controllers/decidim/meetings/polls/questions_controller.rb +45 -0
  42. data/app/events/decidim/meetings/create_meeting_event.rb +16 -0
  43. data/app/forms/decidim/meetings/admin/answer_option_form.rb +24 -0
  44. data/app/forms/decidim/meetings/admin/close_meeting_form.rb +3 -1
  45. data/app/forms/decidim/meetings/admin/meeting_form.rb +12 -1
  46. data/app/forms/decidim/meetings/admin/question_form.rb +44 -0
  47. data/app/forms/decidim/meetings/admin/questionnaire_form.rb +19 -0
  48. data/app/forms/decidim/meetings/answer_choice_form.rb +14 -0
  49. data/app/forms/decidim/meetings/answer_form.rb +65 -0
  50. data/app/forms/decidim/meetings/close_meeting_form.rb +4 -0
  51. data/app/forms/decidim/meetings/join_meeting_form.rb +1 -0
  52. data/app/forms/decidim/meetings/meeting_form.rb +9 -0
  53. data/app/helpers/decidim/meetings/admin/filterable_helper.rb +13 -0
  54. data/app/helpers/decidim/meetings/application_helper.rb +3 -2
  55. data/app/helpers/decidim/meetings/map_helper.rb +1 -1
  56. data/app/helpers/decidim/meetings/meetings_helper.rb +21 -0
  57. data/app/models/decidim/meetings/answer.rb +48 -0
  58. data/app/models/decidim/meetings/answer_choice.rb +15 -0
  59. data/app/models/decidim/meetings/answer_option.rb +24 -0
  60. data/app/models/decidim/meetings/meeting.rb +88 -42
  61. data/app/models/decidim/meetings/poll.rb +19 -0
  62. data/app/models/decidim/meetings/question.rb +54 -0
  63. data/app/models/decidim/meetings/questionnaire.rb +23 -0
  64. data/app/models/decidim/meetings/registration.rb +2 -0
  65. data/app/packs/entrypoints/decidim_meetings.js +6 -0
  66. data/app/packs/entrypoints/decidim_meetings_admin.js +5 -0
  67. data/app/{assets/images/decidim/gamification/badges/attended_meetings.svg → packs/images/decidim/gamification/badges/decidim_gamification_badges_attended_meetings.svg} +0 -0
  68. data/app/{assets/images/decidim/meetings/icon.svg → packs/images/decidim/meetings/decidim_meetings.svg} +0 -0
  69. data/app/packs/src/decidim/meetings/admin/agendas.js +159 -0
  70. data/app/{assets/javascripts/decidim/meetings/admin/destroy_meeting_alert.js.es6 → packs/src/decidim/meetings/admin/destroy_meeting_alert.js} +0 -0
  71. data/app/{assets/javascripts/decidim/meetings/admin/meetings_form.js.es6 → packs/src/decidim/meetings/admin/meetings_form.js} +7 -4
  72. data/app/{assets/javascripts/decidim/meetings/admin/registrations_form.js.es6 → packs/src/decidim/meetings/admin/registrations_form.js} +0 -0
  73. data/app/{assets/javascripts/decidim/meetings/admin/registrations_invite_form.es6 → packs/src/decidim/meetings/admin/registrations_invite_form.js} +3 -3
  74. data/app/packs/src/decidim/meetings/meetings_form.js +54 -0
  75. data/app/packs/src/decidim/meetings/meetings_polls.js +41 -0
  76. data/app/packs/src/decidim/meetings/poll.component.js +166 -0
  77. data/app/packs/stylesheets/decidim/meetings/_header.scss +52 -0
  78. data/app/packs/stylesheets/decidim/meetings/_main.scss +178 -0
  79. data/app/packs/stylesheets/decidim/meetings/_meetings.scss +2 -0
  80. data/app/permissions/decidim/meetings/admin/permissions.rb +16 -8
  81. data/app/permissions/decidim/meetings/permissions.rb +42 -17
  82. data/app/presenters/decidim/meetings/admin_log/meeting_presenter.rb +5 -1
  83. data/app/presenters/decidim/meetings/meeting_presenter.rb +25 -25
  84. data/app/queries/decidim/meetings/filtered_meetings.rb +1 -1
  85. data/app/queries/decidim/meetings/metrics/meetings_metric_manage.rb +1 -1
  86. data/app/queries/decidim/meetings/questionnaire_user_answers.rb +29 -0
  87. data/app/serializers/decidim/meetings/data_portability_invite_serializer.rb +2 -1
  88. data/app/serializers/decidim/meetings/data_portability_registration_serializer.rb +2 -1
  89. data/app/serializers/decidim/meetings/registration_serializer.rb +3 -12
  90. data/app/services/decidim/meetings/calendar/component_calendar.rb +2 -2
  91. data/app/services/decidim/meetings/calendar/meeting_calendar.rb +33 -0
  92. data/app/services/decidim/meetings/calendar_renderer.rb +2 -0
  93. data/app/services/decidim/meetings/meeting_iframe_embedder.rb +86 -0
  94. data/app/services/decidim/meetings/meeting_search.rb +2 -2
  95. data/app/views/decidim/meetings/admin/agenda/_form.html.erb +1 -1
  96. data/app/views/decidim/meetings/admin/invite_join_meeting_mailer/invite.html.erb +4 -4
  97. data/app/views/decidim/meetings/admin/invites/_form.html.erb +1 -1
  98. data/app/views/decidim/meetings/admin/meeting_closes/_form.html.erb +16 -1
  99. data/app/views/decidim/meetings/admin/meeting_copies/_form.html.erb +1 -1
  100. data/app/views/decidim/meetings/admin/meetings/_form.html.erb +16 -1
  101. data/app/views/decidim/meetings/admin/meetings/index.html.erb +39 -11
  102. data/app/views/decidim/meetings/admin/poll/_answer_option.html.erb +34 -0
  103. data/app/views/decidim/meetings/admin/poll/_answer_option_template.html.erb +7 -0
  104. data/app/views/decidim/meetings/admin/poll/_form.html.erb +63 -0
  105. data/app/views/decidim/meetings/admin/poll/_question.html.erb +96 -0
  106. data/app/views/decidim/meetings/admin/poll/edit.html.erb +9 -0
  107. data/app/views/decidim/meetings/admin/registrations/_form.html.erb +1 -1
  108. data/app/views/decidim/meetings/directory/meetings/index.html.erb +4 -4
  109. data/app/views/decidim/meetings/directory/meetings/index.js.erb +2 -0
  110. data/app/views/decidim/meetings/layouts/live_event.html.erb +50 -0
  111. data/app/views/decidim/meetings/live_events/show.html.erb +12 -0
  112. data/app/views/decidim/meetings/meeting_closes/_form.html.erb +8 -1
  113. data/app/views/decidim/meetings/meeting_closes/edit.html.erb +1 -1
  114. data/app/views/decidim/meetings/meetings/_calendar_modal.html.erb +26 -0
  115. data/app/views/decidim/meetings/meetings/_filters.html.erb +1 -1
  116. data/app/views/decidim/meetings/meetings/_form.html.erb +6 -1
  117. data/app/views/decidim/meetings/meetings/_linked_meetings.html.erb +1 -1
  118. data/app/views/decidim/meetings/meetings/_meeting_minutes.html.erb +7 -18
  119. data/app/views/decidim/meetings/meetings/edit.html.erb +1 -1
  120. data/app/views/decidim/meetings/meetings/index.html.erb +4 -4
  121. data/app/views/decidim/meetings/meetings/index.js.erb +1 -1
  122. data/app/views/decidim/meetings/meetings/new.html.erb +1 -1
  123. data/app/views/decidim/meetings/meetings/show.html.erb +13 -14
  124. data/app/views/decidim/meetings/polls/answers/_multiple_option.html.erb +13 -0
  125. data/app/views/decidim/meetings/polls/answers/_single_option.html.erb +19 -0
  126. data/app/views/decidim/meetings/polls/answers/create.js.erb +5 -0
  127. data/app/views/decidim/meetings/polls/questions/_closed_question.html.erb +7 -0
  128. data/app/views/decidim/meetings/polls/questions/_index.html.erb +5 -0
  129. data/app/views/decidim/meetings/polls/questions/_index_admin.html.erb +43 -0
  130. data/app/views/decidim/meetings/polls/questions/_published_question.html.erb +29 -0
  131. data/app/views/decidim/meetings/polls/questions/_question.html.erb +7 -0
  132. data/app/views/decidim/meetings/polls/questions/index.js.erb +5 -0
  133. data/app/views/decidim/meetings/polls/questions/index_admin.js.erb +5 -0
  134. data/app/views/decidim/meetings/registration_mailer/confirmation.html.erb +5 -2
  135. data/app/views/devise/mailer/join_meeting.html.erb +6 -6
  136. data/config/assets.rb +11 -0
  137. data/config/locales/ar.yml +3 -24
  138. data/config/locales/ca.yml +36 -27
  139. data/config/locales/cs.yml +74 -28
  140. data/config/locales/de.yml +22 -27
  141. data/config/locales/el.yml +3 -24
  142. data/config/locales/en.yml +112 -26
  143. data/config/locales/es-MX.yml +13 -27
  144. data/config/locales/es-PY.yml +13 -27
  145. data/config/locales/es.yml +13 -27
  146. data/config/locales/eu.yml +3 -24
  147. data/config/locales/fi-plain.yml +70 -26
  148. data/config/locales/fi.yml +72 -28
  149. data/config/locales/fr-CA.yml +19 -26
  150. data/config/locales/fr-LU.yml +534 -0
  151. data/config/locales/fr.yml +19 -26
  152. data/config/locales/gl.yml +46 -24
  153. data/config/locales/hu.yml +5 -24
  154. data/config/locales/id-ID.yml +3 -24
  155. data/config/locales/is-IS.yml +2 -22
  156. data/config/locales/it.yml +117 -23
  157. data/config/locales/ja.yml +148 -58
  158. data/config/locales/lb-LU.yml +1 -0
  159. data/config/locales/lv.yml +3 -24
  160. data/config/locales/nl.yml +70 -25
  161. data/config/locales/no.yml +5 -26
  162. data/config/locales/pl.yml +27 -38
  163. data/config/locales/pt-BR.yml +178 -23
  164. data/config/locales/pt.yml +3 -24
  165. data/config/locales/ro-RO.yml +38 -27
  166. data/config/locales/ru.yml +3 -24
  167. data/config/locales/sk.yml +3 -24
  168. data/config/locales/sv.yml +36 -27
  169. data/config/locales/tr-TR.yml +5 -27
  170. data/config/locales/uk.yml +3 -24
  171. data/config/locales/zh-CN.yml +3 -24
  172. data/db/migrate/20210217124802_add_registration_custom_content_to_meetings.rb +8 -0
  173. data/db/migrate/20210413050756_add_published_at_to_meetings.rb +7 -0
  174. data/db/migrate/20210413050917_update_published_at_to_existing_meetings.rb +20 -0
  175. data/db/migrate/20210430123416_add_public_participation_to_decidim_meetings_registrations.rb +7 -0
  176. data/db/migrate/20210506180226_merge_meetings_minutes_into_meetings_table.rb +48 -0
  177. data/db/migrate/20210512055802_create_decidim_meetings_polls.rb +10 -0
  178. data/db/migrate/20210512100333_drop_decidim_meetings_minutes_table.rb +77 -0
  179. data/db/migrate/20210518133236_merge_minutes_with_closing_report_in_meetings_table.rb +57 -0
  180. data/db/migrate/20210520084247_create_decidim_meetings_questionnaires.rb +11 -0
  181. data/db/migrate/20210520084253_create_decidim_meetings_questions.rb +15 -0
  182. data/db/migrate/20210520084321_create_decidim_meetings_answers.rb +13 -0
  183. data/db/migrate/20210520084330_create_decidim_meetings_answer_options.rb +10 -0
  184. data/db/migrate/20210520084337_create_decidim_meetings_answer_choices.rb +13 -0
  185. data/db/migrate/20210520134834_add_status_to_meetings_questions.rb +7 -0
  186. data/db/migrate/20210602040614_add_setting_embed_iframe_to_meetings.rb +7 -0
  187. data/lib/decidim/api/linked_resources_interface.rb +8 -1
  188. data/lib/decidim/api/meeting_type.rb +19 -4
  189. data/lib/decidim/api/meetings_type.rb +2 -2
  190. data/lib/decidim/meetings/admin_engine.rb +5 -1
  191. data/lib/decidim/meetings/api.rb +0 -1
  192. data/lib/decidim/meetings/component.rb +41 -6
  193. data/lib/decidim/meetings/data_portability_user_answers_serializer.rb +33 -0
  194. data/lib/decidim/meetings/engine.rb +10 -11
  195. data/lib/decidim/meetings/meeting_serializer.rb +1 -0
  196. data/lib/decidim/meetings/polls.rb +10 -0
  197. data/lib/decidim/meetings/test/factories.rb +85 -9
  198. data/lib/decidim/meetings/user_answers_serializer.rb +47 -0
  199. data/lib/decidim/meetings/version.rb +1 -1
  200. data/lib/decidim/meetings.rb +10 -0
  201. metadata +103 -113
  202. data/app/assets/config/decidim_meetings_manifest.js +0 -9
  203. data/app/assets/javascripts/decidim/meetings/admin/agendas.js.es6 +0 -158
  204. data/app/assets/javascripts/decidim/meetings/meetings_form.js.es6 +0 -54
  205. data/app/commands/decidim/meetings/admin/create_minutes.rb +0 -55
  206. data/app/commands/decidim/meetings/admin/update_minutes.rb +0 -63
  207. data/app/controllers/decidim/meetings/admin/minutes_controller.rb +0 -69
  208. data/app/forms/decidim/meetings/admin/minutes_form.rb +0 -20
  209. data/app/models/decidim/meetings/minutes.rb +0 -22
  210. data/app/presenters/decidim/meetings/admin_log/minutes_presenter.rb +0 -42
  211. data/app/views/decidim/meetings/admin/minutes/_form.html.erb +0 -23
  212. data/app/views/decidim/meetings/admin/minutes/edit.html.erb +0 -7
  213. data/app/views/decidim/meetings/admin/minutes/new.html.erb +0 -7
  214. data/app/views/decidim/meetings/meetings/_online_meeting_link.html.erb +0 -11
  215. data/config/locales/ja-JP.yml +0 -494
  216. data/lib/decidim/api/minutes_type.rb +0 -20
@@ -8,9 +8,12 @@ tr:
8
8
  close_meeting:
9
9
  attendees_count: Katılımcı sayısı
10
10
  attending_organizations: Katılan kuruluşların listesi
11
- closing_report: Rapor
11
+ audio_url: Ses URL'si
12
+ closing_report: Dakika
13
+ closing_visible: Görünür
12
14
  contributions_count: Katkı sayısı
13
15
  proposal_ids: Toplantıda oluşturulan teklifler
16
+ video_url: Video URL'si
14
17
  meeting:
15
18
  address: Adres
16
19
  available_slots: Bu toplantı için mevcut yuvalar
@@ -33,11 +36,6 @@ tr:
33
36
  title: Başlık
34
37
  transparent: Şeffaf
35
38
  type_of_meeting: Tür
36
- minutes:
37
- audio_url: Ses URL'si
38
- description: Açıklama
39
- video_url: Video URL'si
40
- visible: Görünür
41
39
  errors:
42
40
  models:
43
41
  meeting_agenda:
@@ -170,7 +168,6 @@ tr:
170
168
  proposals_count:
171
169
  one: 'Toplantı, kendisiyle ilişkilendirilmiş %{count} teklif içerdiğinden yok edilemez:'
172
170
  other: 'Toplantı, kendisiyle ilişkilendirilmiş %{count} teklif içerdiğinden yok edilemez:'
173
- minutes: Dakika
174
171
  new: Yeni toplantı
175
172
  preview: Ön izleme
176
173
  registrations: Kayıtlar
@@ -247,7 +244,6 @@ tr:
247
244
  success: Toplantı başarıyla kapatıldı
248
245
  create:
249
246
  invalid: Bu toplantıyı oluştururken bir sorun oluştu
250
- success: Toplantı başarıyla oluşturuldu
251
247
  destroy:
252
248
  invalid:
253
249
  proposals_count:
@@ -285,19 +281,6 @@ tr:
285
281
  update:
286
282
  invalid: Bu toplantı güncellenirken bir sorun oluştu
287
283
  success: Toplantı başarıyla güncellendi
288
- minutes:
289
- create:
290
- invalid: Bu dakikalar oluşturulurken bir sorunla karşılaşıldı
291
- success: Dakika başarıyla oluşturuldu
292
- edit:
293
- title: Dakikaları düzenleyin
294
- update: Güncelle
295
- new:
296
- create: Oluştur
297
- title: Dakika oluşturun
298
- update:
299
- invalid: Bu dakikalar güncellenirken bir sorun oluştu
300
- success: Dakika başarıyla güncellendi
301
284
  models:
302
285
  meeting:
303
286
  name: Toplantı
@@ -337,9 +320,6 @@ tr:
337
320
  value_types:
338
321
  organizer_presenter:
339
322
  not_found: 'Organizatör veritabanında bulunamadı (ID: %{id})'
340
- minutes:
341
- create: "%{user_name}, %{space_name} alanında%{resource_name} toplantısının dakikalarını oluşturdu"
342
- update: "%{user_name}, %{space_name} alanında %{resource_name} toplantısının dakikalarını güncelledi"
343
323
  calendar_modal:
344
324
  calendar_url: Takvim URL'si
345
325
  close_window: Pencereyi kapat
@@ -429,7 +409,6 @@ tr:
429
409
  index:
430
410
  new_meeting: Yeni toplantı
431
411
  meeting_minutes:
432
- meeting_minutes: Görüşme süreleri
433
412
  related_information: İlgili bilgi
434
413
  meetings:
435
414
  no_meetings_warning: Hiçbir toplantı, arama kriterinizle eşleşmiyor veya planlanmış bir toplantı yok.
@@ -448,9 +427,8 @@ tr:
448
427
  contributions: Katkı sayımı
449
428
  date: Tarih
450
429
  edit_meeting: Toplantıyı Düzenle
451
- going: Devam eden
452
430
  join: Toplantıya katıl
453
- meeting_report: Toplantı Raporu
431
+ meeting_minutes: Görüşme süreleri
454
432
  no_slots_available: Kullanılabilir yer yok
455
433
  organizations: Katılan kuruluşlar
456
434
  registration_code_help_text: Kayıt kodunuz
@@ -8,7 +8,8 @@ uk:
8
8
  close_meeting:
9
9
  attendees_count: Кількість учасників
10
10
  attending_organizations: Перелік організацій, які брали участь
11
- closing_report: Звіт
11
+ closing_report: Протокол
12
+ closing_visible: Видимий
12
13
  contributions_count: Кількість внесених пропозицій
13
14
  proposal_ids: Пропозиції, вироблені під час зустрічі
14
15
  meeting:
@@ -27,9 +28,6 @@ uk:
27
28
  start_time: Час початку
28
29
  title: Назва
29
30
  transparent: Прозора
30
- minutes:
31
- description: Опис
32
- visible: Видимий
33
31
  errors:
34
32
  models:
35
33
  meeting_agenda:
@@ -136,7 +134,6 @@ uk:
136
134
  confirm_destroy: Ви впевнені, що хочете видалити цю зустріч?
137
135
  destroy: Видалити
138
136
  edit: Редагувати
139
- minutes: Протокол
140
137
  new: Додати зустріч
141
138
  preview: Попередній перегляд
142
139
  registrations: Реєстрації
@@ -211,7 +208,6 @@ uk:
211
208
  success: Зустріч успішно завершено
212
209
  create:
213
210
  invalid: При спробі додати цю зустріч сталася помилка
214
- success: Зустріч успішно додано
215
211
  destroy:
216
212
  success: Зустріч успішно видалено
217
213
  edit:
@@ -234,18 +230,6 @@ uk:
234
230
  update:
235
231
  invalid: При спробі оновити цю зустріч сталася помилка
236
232
  success: Зустріч успішно оновлено
237
- minutes:
238
- create:
239
- invalid: При спробі створити цей протокол сталася помилка
240
- success: Протокол успішно створено
241
- edit:
242
- update: Оновити
243
- new:
244
- create: Додати
245
- title: Додати протокол
246
- update:
247
- invalid: При спробі оновити цей протокол сталася помилка
248
- success: Протокол успішно оновлено
249
233
  models:
250
234
  meeting:
251
235
  name: Зустріч
@@ -279,9 +263,6 @@ uk:
279
263
  value_types:
280
264
  organizer_presenter:
281
265
  not_found: 'Цього організатора не знайдено в базі даних (ID: %{id})'
282
- minutes:
283
- create: "%{user_name} створив протокол зустрічі %{resource_name} у просторі %{space_name}"
284
- update: "%{user_name} оновив протокол зустрічі %{resource_name} у просторі %{space_name}"
285
266
  mailer:
286
267
  invite_join_meeting_mailer:
287
268
  invite:
@@ -302,7 +283,6 @@ uk:
302
283
  filter_by: 'Відібрати за ознакою:'
303
284
  unfold: Розгорнути
304
285
  meeting_minutes:
305
- meeting_minutes: Протокол зустрічі
306
286
  related_information: Супутні відомості
307
287
  meetings:
308
288
  no_meetings_warning: Жодна зустріч не відповідає вашим критеріям пошуку, або жодних зустрічей не заплановано.
@@ -313,9 +293,8 @@ uk:
313
293
  show:
314
294
  attendees: Кількість учасників
315
295
  contributions: Кількість внесених пропозицій
316
- going: Збираєтесь відвідати
317
296
  join: Долучитись до зустрічі
318
- meeting_report: Звіт про зустріч
297
+ meeting_minutes: Протокол зустрічі
319
298
  no_slots_available: Не залишилось місць
320
299
  organizations: Організації, що приймають участь
321
300
  view: Переглянути
@@ -8,7 +8,8 @@ zh-CN:
8
8
  close_meeting:
9
9
  attendees_count: 参与者人数
10
10
  attending_organizations: 与会组织名单
11
- closing_report: 报告
11
+ closing_report: 分钟
12
+ closing_visible: 可见
12
13
  contributions_count: 捐款数目
13
14
  proposal_ids: 会议上提出的建议
14
15
  meeting:
@@ -30,9 +31,6 @@ zh-CN:
30
31
  start_time: 开始时间
31
32
  title: 标题
32
33
  transparent: 透明的
33
- minutes:
34
- description: 描述
35
- visible: 可见
36
34
  errors:
37
35
  models:
38
36
  meeting_agenda:
@@ -159,7 +157,6 @@ zh-CN:
159
157
  invalid_destroy:
160
158
  proposals_count:
161
159
  other: '会议不能被破坏,因为它有 %{count} 个建议与此相关联:'
162
- minutes: 分钟
163
160
  new: 新会议
164
161
  preview: 预览
165
162
  registrations: 注册
@@ -235,7 +232,6 @@ zh-CN:
235
232
  success: 会议已成功关闭
236
233
  create:
237
234
  invalid: 创建此会议时出现问题
238
- success: 会议已成功创建
239
235
  destroy:
240
236
  invalid:
241
237
  proposals_count:
@@ -264,18 +260,6 @@ zh-CN:
264
260
  update:
265
261
  invalid: 更新本次会议时出错
266
262
  success: 会议已成功更新
267
- minutes:
268
- create:
269
- invalid: 创建这分钟时出错
270
- success: 创建分钟成功
271
- edit:
272
- update: 更新
273
- new:
274
- create: 创建
275
- title: 创建分钟
276
- update:
277
- invalid: 更新这分钟时出现问题
278
- success: 分钟已成功更新
279
263
  models:
280
264
  meeting:
281
265
  name: 会议
@@ -314,9 +298,6 @@ zh-CN:
314
298
  value_types:
315
299
  organizer_presenter:
316
300
  not_found: '在数据库中找不到组织者 (ID: %{id})'
317
- minutes:
318
- create: "%{user_name} 在 %{space_name} 空间创建了会议记录 %{resource_name}"
319
- update: "%{user_name} 更新了会议记录 %{resource_name} 在 %{space_name} 空间"
320
301
  calendar_modal:
321
302
  calendar_url: 日历 URL
322
303
  close_window: 关闭窗口
@@ -387,7 +368,6 @@ zh-CN:
387
368
  index:
388
369
  new_meeting: 新会议
389
370
  meeting_minutes:
390
- meeting_minutes: 会议分钟
391
371
  related_information: 相关信息
392
372
  meetings:
393
373
  no_meetings_warning: 没有符合您搜索条件的会议,也没有安排任何会议。
@@ -405,9 +385,8 @@ zh-CN:
405
385
  contributions: 捐款计数
406
386
  date: 日期
407
387
  edit_meeting: 编辑会议
408
- going: 去了
409
388
  join: 加入会议
410
- meeting_report: 会议报告
389
+ meeting_minutes: 会议分钟
411
390
  no_slots_available: 无可用槽位
412
391
  organizations: B. 参加组织
413
392
  registration_code_help_text: 您的注册码
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddRegistrationCustomContentToMeetings < ActiveRecord::Migration[5.2]
4
+ def change
5
+ add_column :decidim_meetings_meetings, :customize_registration_email, :boolean, default: false, null: false
6
+ add_column :decidim_meetings_meetings, :registration_email_custom_content, :jsonb
7
+ end
8
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddPublishedAtToMeetings < ActiveRecord::Migration[5.2]
4
+ def change
5
+ add_column :decidim_meetings_meetings, :published_at, :datetime, index: true
6
+ end
7
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ # By default all existing meetings were published when created
4
+ # This migration prevents un-publishing all existing meetings
5
+ class UpdatePublishedAtToExistingMeetings < ActiveRecord::Migration[5.2]
6
+ class Meeting < ApplicationRecord
7
+ self.table_name = :decidim_meetings_meetings
8
+ end
9
+
10
+ def change
11
+ Meeting.reset_column_information
12
+
13
+ Meeting.find_each do |meeting|
14
+ if meeting.published_at.nil?
15
+ meeting.published_at = meeting.created_at
16
+ meeting.save!
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddPublicParticipationToDecidimMeetingsRegistrations < ActiveRecord::Migration[6.0]
4
+ def change
5
+ add_column :decidim_meetings_registrations, :public_participation, :boolean, default: false
6
+ end
7
+ end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ class MergeMeetingsMinutesIntoMeetingsTable < ActiveRecord::Migration[6.0]
4
+ class Minutes < ApplicationRecord
5
+ self.table_name = "decidim_meetings_minutes"
6
+
7
+ belongs_to :meeting, foreign_key: "decidim_meeting_id", class_name: "Meeting"
8
+ end
9
+
10
+ class Meeting < ApplicationRecord
11
+ self.table_name = "decidim_meetings_meetings"
12
+ end
13
+
14
+ def up
15
+ add_column :decidim_meetings_meetings, :minutes_description, :jsonb
16
+ add_column :decidim_meetings_meetings, :video_url, :string
17
+ add_column :decidim_meetings_meetings, :audio_url, :string
18
+ add_column :decidim_meetings_meetings, :minutes_visible, :boolean
19
+
20
+ Minutes.find_each do |minutes|
21
+ minutes.meeting.update!(
22
+ minutes_description: minutes.description,
23
+ video_url: minutes.video_url,
24
+ audio_url: minutes.audio_url,
25
+ minutes_visible: minutes.visible
26
+ )
27
+ end
28
+ end
29
+
30
+ def down
31
+ Meeting.find_each do |meeting|
32
+ next if meeting.video_url.blank? && meeting.audio_url.blank?
33
+
34
+ Minutes.find_or_create_by!(
35
+ decidim_meeting_id: meeting.id,
36
+ description: meeting.minutes_description,
37
+ video_url: meeting.video_url,
38
+ audio_url: meeting.audio_url,
39
+ visible: meeting.minutes_visible
40
+ )
41
+ end
42
+
43
+ remove_column :decidim_meetings_meetings, :minutes_description
44
+ remove_column :decidim_meetings_meetings, :video_url
45
+ remove_column :decidim_meetings_meetings, :audio_url
46
+ remove_column :decidim_meetings_meetings, :minutes_visible
47
+ end
48
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ class CreateDecidimMeetingsPolls < ActiveRecord::Migration[6.0]
4
+ def change
5
+ create_table :decidim_meetings_polls do |t|
6
+ t.references :decidim_meeting, index: true
7
+ t.timestamps
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,77 @@
1
+ # frozen_string_literal: true
2
+
3
+ class DropDecidimMeetingsMinutesTable < ActiveRecord::Migration[6.0]
4
+ class Minutes < ApplicationRecord
5
+ self.table_name = "decidim_meetings_minutes"
6
+ end
7
+
8
+ class ActionLog < ApplicationRecord
9
+ self.table_name = "decidim_action_logs"
10
+ end
11
+
12
+ class Version < ApplicationRecord
13
+ self.table_name = :versions
14
+ end
15
+
16
+ class Meeting < ApplicationRecord
17
+ self.table_name = "decidim_meetings_meetings"
18
+ end
19
+
20
+ def up
21
+ ActionLog.where(resource_type: "Decidim::Meetings::Minutes").each do |action_log|
22
+ minutes = Minutes.find_by(id: action_log.resource_id)
23
+ version = Version.find_by(id: action_log.version_id)
24
+
25
+ version_updates = {
26
+ item_type: "Decidim::Meetings::Meeting",
27
+ item_id: minutes.decidim_meeting_id
28
+ }
29
+ if version.object_changes.present?
30
+ version_updates[:object_changes] = version.object_changes
31
+ .gsub("\ndescription:\n-\n-", "\nminutes_description:\n-\n-")
32
+ .gsub("\ndescription:\n-\n-", "\nminutes_description:\n-\n-")
33
+ end
34
+
35
+ version.update!(version_updates)
36
+ action_log.update!(
37
+ resource_type: "Decidim::Meetings::Meeting",
38
+ resource_id: minutes.decidim_meeting_id,
39
+ action: "close"
40
+ )
41
+ end
42
+
43
+ drop_table :decidim_meetings_minutes
44
+ end
45
+
46
+ def down
47
+ create_table :decidim_meetings_minutes do |t|
48
+ t.references :decidim_meeting, index: true
49
+ t.jsonb :description
50
+ t.string :video_url
51
+ t.string :audio_url
52
+ t.boolean :visible
53
+
54
+ t.timestamps
55
+ end
56
+
57
+ Meeting.find_each do |meeting|
58
+ next if blank_minutes?(meeting)
59
+
60
+ Minutes.create!(
61
+ decidim_meeting_id: meeting.id,
62
+ description: meeting.minutes_description,
63
+ video_url: meeting.video_url,
64
+ audio_url: meeting.audio_url,
65
+ visible: meeting.minutes_visible
66
+ )
67
+ end
68
+ end
69
+ end
70
+
71
+ private
72
+
73
+ def blank_minutes?(meeting)
74
+ meeting.video_url.blank? &&
75
+ meeting.audio_url.blank? &&
76
+ meeting.minutes_description.blank? || meeting.minutes_description.is_a?(Hash) && meeting.minutes_description.values.all?(&:blank?)
77
+ end
@@ -0,0 +1,57 @@
1
+ # frozen_string_literal: true
2
+
3
+ class MergeMinutesWithClosingReportInMeetingsTable < ActiveRecord::Migration[6.0]
4
+ class Meeting < ApplicationRecord
5
+ self.table_name = "decidim_meetings_meetings"
6
+ end
7
+
8
+ def up
9
+ Meeting.find_each do |meeting|
10
+ check_close_data_presence(meeting)
11
+ check_closing_visibility(meeting)
12
+ merge_closing_report(meeting)
13
+
14
+ meeting.save!
15
+ end
16
+
17
+ rename_column :decidim_meetings_meetings, :minutes_visible, :closing_visible
18
+ remove_column :decidim_meetings_meetings, :minutes_description
19
+ end
20
+
21
+ def down
22
+ add_column :decidim_meetings_meetings, :minutes_description, :jsonb
23
+ rename_column :decidim_meetings_meetings, :closing_visible, :minutes_visible
24
+ end
25
+ end
26
+
27
+ private
28
+
29
+ # Ensures close meeting if minutes_data exists
30
+ def check_close_data_presence(meeting)
31
+ return if meeting.closed_at.present? || !minutes_data?(meeting)
32
+
33
+ meeting.closed_at = Time.current
34
+ end
35
+
36
+ # If meeting is closed and minutes data is blank the closing
37
+ # should remain visible unless it has already been defined
38
+ def check_closing_visibility(meeting)
39
+ return unless meeting.minutes_visible.nil?
40
+ return if minutes_data?(meeting) || meeting.closed_at.blank?
41
+
42
+ meeting.minutes_visible = true
43
+ end
44
+
45
+ # Ignore minutes_description if already exists a closing report or
46
+ # minutes_description is blank
47
+ def merge_closing_report(meeting)
48
+ return if meeting.closing_report.is_a?(Hash) && meeting.closing_report.values.any?(&:present?)
49
+ return unless meeting.minutes_description.is_a?(Hash) && meeting.minutes_description.values.any?(&:present?)
50
+
51
+ meeting.closing_report = meeting.minutes_description
52
+ end
53
+
54
+ def minutes_data?(meeting)
55
+ [meeting.video_url, meeting.audio_url].any?(&:present?) ||
56
+ meeting.minutes_description.is_a?(Hash) && meeting.minutes_description.values.any?(&:present?)
57
+ end