decidim-meetings 0.28.5 → 0.29.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (157) 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 +10 -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/polls/answers/_multiple_option.html.erb +6 -10
  92. data/app/views/decidim/meetings/polls/answers/_single_option.html.erb +4 -10
  93. data/app/views/decidim/meetings/polls/answers/admin.html.erb +34 -0
  94. data/app/views/decidim/meetings/polls/answers/index.html.erb +36 -0
  95. data/app/views/decidim/meetings/polls/questions/_closed_question.html.erb +8 -2
  96. data/app/views/decidim/meetings/polls/questions/_index_admin.html.erb +27 -24
  97. data/app/views/decidim/meetings/polls/questions/_published_question.html.erb +14 -11
  98. data/app/views/decidim/meetings/polls/questions/_question.html.erb +1 -1
  99. data/app/views/decidim/meetings/polls/questions/index.js.erb +3 -3
  100. data/app/views/decidim/meetings/polls/questions/index_admin.js.erb +3 -3
  101. data/app/views/decidim/meetings/registration_mailer/confirmation.html.erb +1 -1
  102. data/app/views/devise/mailer/join_meeting.html.erb +3 -1
  103. data/app/views/devise/mailer/join_meeting.text.erb +3 -1
  104. data/config/locales/ar.yml +1 -13
  105. data/config/locales/bg.yml +45 -12
  106. data/config/locales/ca.yml +45 -13
  107. data/config/locales/cs.yml +28 -16
  108. data/config/locales/de.yml +114 -82
  109. data/config/locales/el.yml +1 -13
  110. data/config/locales/en.yml +44 -12
  111. data/config/locales/es-MX.yml +47 -15
  112. data/config/locales/es-PY.yml +47 -15
  113. data/config/locales/es.yml +48 -16
  114. data/config/locales/eu.yml +79 -47
  115. data/config/locales/fi-plain.yml +46 -14
  116. data/config/locales/fi.yml +56 -24
  117. data/config/locales/fr-CA.yml +48 -16
  118. data/config/locales/fr.yml +48 -16
  119. data/config/locales/ga-IE.yml +0 -8
  120. data/config/locales/gl.yml +3 -11
  121. data/config/locales/hu.yml +3 -12
  122. data/config/locales/id-ID.yml +1 -12
  123. data/config/locales/is-IS.yml +1 -12
  124. data/config/locales/it.yml +3 -16
  125. data/config/locales/ja.yml +47 -15
  126. data/config/locales/lb.yml +1 -7
  127. data/config/locales/lt.yml +3 -12
  128. data/config/locales/lv.yml +1 -12
  129. data/config/locales/nl.yml +1 -13
  130. data/config/locales/no.yml +1 -12
  131. data/config/locales/pl.yml +45 -12
  132. data/config/locales/pt-BR.yml +23 -17
  133. data/config/locales/pt.yml +1 -14
  134. data/config/locales/ro-RO.yml +2 -15
  135. data/config/locales/ru.yml +1 -12
  136. data/config/locales/sk.yml +1 -12
  137. data/config/locales/sv.yml +108 -206
  138. data/config/locales/tr-TR.yml +2 -17
  139. data/config/locales/uk.yml +1 -12
  140. data/config/locales/zh-CN.yml +1 -15
  141. data/config/locales/zh-TW.yml +1 -13
  142. data/db/migrate/20240130135858_add_withdrawn_fields_on_meetings.rb +23 -0
  143. data/decidim-meetings.gemspec +2 -2
  144. data/lib/decidim/api/meeting_type.rb +3 -12
  145. data/lib/decidim/api/meetings_type.rb +3 -1
  146. data/lib/decidim/meetings/component.rb +2 -2
  147. data/lib/decidim/meetings/engine.rb +5 -3
  148. data/lib/decidim/meetings/meeting_serializer.rb +3 -38
  149. data/lib/decidim/meetings/seeds.rb +13 -18
  150. data/lib/decidim/meetings/test/factories.rb +1 -7
  151. data/lib/decidim/meetings/test/notifications_handling.rb +1 -1
  152. data/lib/decidim/meetings/version.rb +1 -1
  153. data/lib/tasks/decidim_meetings.rake +1 -1
  154. metadata +24 -22
  155. data/app/views/decidim/meetings/admin/agenda/show.html.erb +0 -0
  156. data/config/locales/bn-BD.yml +0 -1
  157. data/config/locales/bs-BA.yml +0 -8
@@ -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
@@ -278,9 +269,6 @@ tr:
278
269
  value_types:
279
270
  organizer_presenter:
280
271
  not_found: 'Organizatör veritabanında bulunamadı (ID: %{id})'
281
- application_helper:
282
- filter_category_values:
283
- all: Tümü
284
272
  calendar:
285
273
  meeting_to_event:
286
274
  read_more: Bu toplantı hakkında daha fazlasını okuyun
@@ -347,9 +335,6 @@ tr:
347
335
  select_a_registration_type: Lütfen bir kayıt türü seçin
348
336
  index:
349
337
  new_meeting: Yeni toplantı
350
- meeting:
351
- close_meeting: Toplantıyı kapat
352
- edit_meeting: Toplantıyı Düzenle
353
338
  meetings:
354
339
  upcoming_meetings_warning: Şu anda planlanmış bir toplantı yok, ancak burada listelenen tüm geçmiş toplantıları bulabilirsiniz.
355
340
  new:
@@ -49,12 +49,6 @@ uk:
49
49
  other: Зареєстрованих
50
50
  decidim:
51
51
  admin:
52
- filters:
53
- meetings:
54
- category_id_eq:
55
- label: Категорія
56
- scope_id_eq:
57
- label: Обсяг
58
52
  meeting_copies:
59
53
  create:
60
54
  error: При спробі створити копію цієї зустрічі сталася помилка.
@@ -73,7 +67,6 @@ uk:
73
67
  comments_enabled: Коментарі увімкнено
74
68
  default_registration_terms: Умови реєстрації за умовчанням
75
69
  resources_permissions_enabled: Права на дії можна встановити для кожної зустрічі
76
- scope_id: Обсяг
77
70
  step:
78
71
  announcement: Оголошення
79
72
  comments_blocked: Коментарі вимкнено
@@ -121,6 +114,7 @@ uk:
121
114
  attachment_collections: Теки
122
115
  attachments: Вкладені файли
123
116
  close: Закрити
117
+ confirm_destroy: Ви впевнені, що хочете видалити цю зустріч?
124
118
  destroy: Видалити
125
119
  edit: Редагувати
126
120
  preview: Попередній перегляд
@@ -170,11 +164,8 @@ uk:
170
164
  non_user: Не чинний учасник
171
165
  select_user: Оберіть учасника
172
166
  index:
173
- filter:
174
- sent: Надіслано
175
167
  invite_attendee: Запросити учасника
176
168
  invites: Запрошення
177
- search: Шукати
178
169
  meeting_closes:
179
170
  edit:
180
171
  close: Закрити
@@ -240,8 +231,6 @@ uk:
240
231
  category: Категорія
241
232
  date: Дата
242
233
  search: Шукати
243
- meeting:
244
- close_meeting: Закрити зустріч
245
234
  meetings:
246
235
  upcoming_meetings_warning: Наразі нема запланованих зустрічей, але тут ви можете знайти перелік усіх попередніх зустрічей.
247
236
  registration_confirm:
@@ -43,12 +43,6 @@ zh-CN:
43
43
  other: 注册
44
44
  decidim:
45
45
  admin:
46
- filters:
47
- meetings:
48
- category_id_eq:
49
- label: 类别
50
- scope_id_eq:
51
- label: 范围
52
46
  meeting_copies:
53
47
  create:
54
48
  error: 重复这次会议时出现问题。
@@ -138,6 +132,7 @@ zh-CN:
138
132
  attachment_collections: 文件夹
139
133
  attachments: 附件
140
134
  close: 关闭
135
+ confirm_destroy: 您确定要删除这个会议吗?
141
136
  destroy: 删除
142
137
  edit: 编辑
143
138
  invalid_destroy:
@@ -191,12 +186,8 @@ zh-CN:
191
186
  non_user: 非现有参与者
192
187
  select_user: 选择参与者
193
188
  index:
194
- filter:
195
- all: 所有的
196
- sent: 已发送
197
189
  invite_attendee: 邀请参与者
198
190
  invites: 邀请
199
- search: 搜索
200
191
  meeting_closes:
201
192
  edit:
202
193
  close: 关闭
@@ -258,9 +249,6 @@ zh-CN:
258
249
  value_types:
259
250
  organizer_presenter:
260
251
  not_found: '在数据库中找不到组织者 (ID: %{id})'
261
- application_helper:
262
- filter_category_values:
263
- all: 所有的
264
252
  calendar_modal:
265
253
  calendar_url: 日历 URL
266
254
  export_calendar: 导出日历
@@ -307,8 +295,6 @@ zh-CN:
307
295
  select_a_category: 请选择一个类别
308
296
  index:
309
297
  new_meeting: 新会议
310
- meeting:
311
- close_meeting: 关闭会议
312
298
  meetings:
313
299
  upcoming_meetings_warning: 目前没有排定的会议,但在这里你可以找到过去所有会议的清单。
314
300
  new:
@@ -210,6 +210,7 @@ zh-TW:
210
210
  attachment_collections: 資料夾
211
211
  attachments: 附件
212
212
  close: 關閉
213
+ confirm_destroy: 你確定要刪除此會議?
213
214
  destroy: 刪除
214
215
  edit: 編輯
215
216
  invalid_destroy:
@@ -272,13 +273,9 @@ zh-TW:
272
273
  non_user: 不存在的參與者。
273
274
  select_user: 選擇參與者
274
275
  index:
275
- filter:
276
- all: 全部
277
- sent: 傳送
278
276
  invite_attendee: 邀請的與會者
279
277
  invites: 邀請
280
278
  registrations_disabled: 你無法邀請參加者,因為註冊已被禁用。
281
- search: 搜尋
282
279
  meeting_closes:
283
280
  edit:
284
281
  close: 關閉
@@ -395,7 +392,6 @@ zh-TW:
395
392
  body: 會議<a href="%{meeting_path}">"%{meeting_title}"</a>等待關閉,請使用“關閉會議”按鈕添加會議報告。
396
393
  greetings: 問候,<br/>%{organization_name}<br/><a href="%{organization_url}">%{organization_url}</a>
397
394
  hello: 哈囉,%{username}!
398
- subject: 您現在可以在 %{organization_name} 平台上透過報告結束您的會議。
399
395
  conference_venues: 會議場地
400
396
  content_blocks:
401
397
  upcoming_meetings:
@@ -412,7 +408,6 @@ zh-TW:
412
408
  iframe_embed_type:
413
409
  embed_in_meeting_page: 嵌入會議頁面
414
410
  none: 沒有
415
- open_in_live_event_page: 在直播活動頁面開啟(附加投票選項)
416
411
  open_in_new_tab: 在新頁籤中開啟 URL
417
412
  last_activity:
418
413
  meeting_updated: '會議已更新:'
@@ -420,7 +415,6 @@ zh-TW:
420
415
  layouts:
421
416
  live_event:
422
417
  close: 關閉
423
- questions: 問題
424
418
  mailer:
425
419
  invite_join_meeting_mailer:
426
420
  invite:
@@ -493,9 +487,6 @@ zh-TW:
493
487
  see_all: 查看所有會議
494
488
  see_all_withdrawn: 查看所有撤回的會議
495
489
  text_banner: 您正在查看已被其作者撤回的會議列表。 %{go_back_link}。
496
- meeting:
497
- close_meeting: 關閉會議
498
- edit_meeting: 編輯會議
499
490
  meetings:
500
491
  no_meetings_warning: 沒有符合搜尋條件的會議或者目前沒有任何已排定的會議。
501
492
  upcoming_meetings_warning: 目前沒有安排的會議,但您可以在這裡找到所有過去的會議列表。
@@ -554,12 +545,9 @@ zh-TW:
554
545
  title: 標題
555
546
  polls:
556
547
  questions:
557
- closed_question:
558
- question_results: 問題結果
559
548
  index:
560
549
  empty_questions: 在本次會議期間,您將收到一些問題並且您可以回答這些問題。這些問題將會在此顯示。
561
550
  index_admin:
562
- admin_dashboard: 管理員儀表板
563
551
  edit: 在管理面板中編輯
564
552
  question: 問題
565
553
  received_answer: 收到回答
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddWithdrawnFieldsOnMeetings < ActiveRecord::Migration[6.1]
4
+ class CustomMeeting < Decidim::Meetings::ApplicationRecord
5
+ self.table_name = "decidim_meetings_meetings"
6
+ end
7
+
8
+ def up
9
+ add_column :decidim_meetings_meetings, :withdrawn_at, :datetime
10
+
11
+ CustomMeeting.where(state: "withdrawn").find_each do |meeting|
12
+ meeting.withdrawn_at = meeting.updated_at
13
+ meeting.save!
14
+ end
15
+ end
16
+
17
+ def down
18
+ # rubocop:disable Rails/SkipsModelValidations
19
+ CustomMeeting.where.not(withdrawn_at: null).update_all(state: :withdrawn)
20
+ # rubocop:enable Rails/SkipsModelValidations
21
+ remove_column :decidim_meetings_meetings, :withdrawn_at
22
+ end
23
+ end
@@ -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)
@@ -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.5"
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