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.
- checksums.yaml +4 -4
- data/app/cells/decidim/meetings/attending_organizations_list_cell.rb +1 -1
- data/app/cells/decidim/meetings/cancel_registration_meeting_button_cell.rb +1 -2
- data/app/cells/decidim/meetings/dates_and_map/show.erb +3 -5
- data/app/cells/decidim/meetings/dates_and_map_cell.rb +1 -1
- data/app/cells/decidim/meetings/highlighted_meetings_for_component_cell.rb +1 -2
- data/app/cells/decidim/meetings/join_meeting_button/remaining_slots.erb +1 -0
- data/app/cells/decidim/meetings/join_meeting_button_cell.rb +0 -3
- data/app/cells/decidim/meetings/meeting_card_metadata_cell.rb +0 -3
- data/app/cells/decidim/meetings/meeting_cell.rb +0 -1
- data/app/cells/decidim/meetings/meeting_l_cell.rb +4 -7
- data/app/cells/decidim/meetings/meeting_url/show.erb +5 -5
- data/app/cells/decidim/meetings/meeting_url_cell.rb +0 -1
- data/app/cells/decidim/meetings/online_meeting_link_cell.rb +0 -2
- data/app/cells/decidim/meetings/question_responses/show.erb +7 -3
- data/app/cells/decidim/meetings/question_responses_cell.rb +0 -2
- data/app/commands/decidim/meetings/admin/copy_meeting.rb +2 -2
- data/app/commands/decidim/meetings/admin/create_agenda.rb +9 -37
- data/app/commands/decidim/meetings/admin/create_meeting.rb +28 -61
- data/app/commands/decidim/meetings/admin/destroy_meeting.rb +4 -33
- data/app/commands/decidim/meetings/admin/update_agenda.rb +7 -35
- data/app/commands/decidim/meetings/admin/update_meeting.rb +30 -68
- data/app/commands/decidim/meetings/admin/update_question_status.rb +1 -1
- data/app/commands/decidim/meetings/admin/update_questionnaire.rb +19 -11
- data/app/commands/decidim/meetings/admin/update_registrations.rb +20 -46
- data/app/commands/decidim/meetings/create_answer.rb +5 -4
- data/app/commands/decidim/meetings/create_meeting.rb +38 -62
- data/app/commands/decidim/meetings/join_meeting.rb +18 -19
- data/app/commands/decidim/meetings/update_meeting.rb +6 -7
- data/app/commands/decidim/meetings/withdraw_meeting.rb +1 -1
- data/app/controllers/concerns/decidim/meetings/admin/invites/filterable.rb +33 -0
- data/app/controllers/decidim/meetings/admin/agenda_controller.rb +1 -1
- data/app/controllers/decidim/meetings/admin/invites_controller.rb +6 -6
- data/app/controllers/decidim/meetings/admin/meetings_controller.rb +2 -2
- data/app/controllers/decidim/meetings/admin/meetings_poll_controller.rb +12 -0
- data/app/controllers/decidim/meetings/application_controller.rb +1 -1
- data/app/controllers/decidim/meetings/live_events_controller.rb +1 -1
- data/app/controllers/decidim/meetings/meetings_controller.rb +3 -33
- data/app/controllers/decidim/meetings/polls/answers_controller.rb +10 -2
- data/app/controllers/decidim/meetings/registrations_controller.rb +3 -3
- data/app/forms/decidim/meetings/admin/close_meeting_form.rb +1 -1
- data/app/forms/decidim/meetings/admin/meeting_agenda_items_form.rb +1 -1
- data/app/forms/decidim/meetings/admin/meeting_form.rb +1 -1
- data/app/forms/decidim/meetings/admin/meeting_registrations_form.rb +3 -3
- data/app/forms/decidim/meetings/admin/question_form.rb +8 -4
- data/app/forms/decidim/meetings/answer_form.rb +4 -4
- data/app/forms/decidim/meetings/meeting_form.rb +1 -1
- data/app/helpers/decidim/meetings/application_helper.rb +1 -5
- data/app/mailers/decidim/meetings/close_meeting_reminder_mailer.rb +1 -1
- data/app/models/decidim/meetings/meeting.rb +15 -4
- data/app/models/decidim/meetings/poll.rb +8 -0
- data/app/models/decidim/meetings/question.rb +1 -0
- data/app/models/decidim/meetings/questionnaire.rb +0 -6
- data/app/packs/src/decidim/meetings/admin/meetings_form.js +3 -3
- data/app/packs/src/decidim/meetings/meetings_form.js +3 -3
- data/app/packs/src/decidim/meetings/meetings_polls.js +5 -0
- data/app/packs/src/decidim/meetings/poll.component.js +32 -4
- data/app/packs/stylesheets/decidim/meetings/_item.scss +126 -6
- data/app/packs/stylesheets/decidim/meetings/_live_event.scss +0 -94
- data/app/permissions/decidim/meetings/permissions.rb +22 -7
- data/app/presenters/decidim/meetings/meeting_presenter.rb +10 -3
- data/app/services/decidim/meetings/calendar/component_calendar.rb +1 -1
- data/app/services/decidim/meetings/calendar/meeting_to_event.rb +1 -1
- data/app/services/decidim/meetings/close_meeting_reminder_generator.rb +1 -1
- data/app/services/decidim/meetings/meeting_iframe_embedder.rb +2 -2
- data/app/views/decidim/meetings/_calendar_modal.html.erb +1 -1
- data/app/views/decidim/meetings/admin/agenda/_agenda_item.html.erb +3 -3
- data/app/views/decidim/meetings/admin/agenda/_agenda_item_child.html.erb +3 -3
- data/app/views/decidim/meetings/admin/agenda/_agenda_item_fields.html.erb +3 -3
- data/app/views/decidim/meetings/admin/invite_join_meeting_mailer/invite.html.erb +3 -1
- data/app/views/decidim/meetings/admin/invites/_form.html.erb +4 -4
- data/app/views/decidim/meetings/admin/invites/index.html.erb +4 -34
- data/app/views/decidim/meetings/admin/meetings/_form.html.erb +8 -8
- data/app/views/decidim/meetings/admin/meetings/_service.html.erb +3 -3
- data/app/views/decidim/meetings/admin/meetings/index.html.erb +2 -2
- data/app/views/decidim/meetings/admin/poll/_answer_option.html.erb +1 -1
- data/app/views/decidim/meetings/admin/poll/_answer_option_template.html.erb +1 -1
- data/app/views/decidim/meetings/admin/poll/_form.html.erb +26 -25
- data/app/views/decidim/meetings/admin/poll/_question.html.erb +18 -16
- data/app/views/decidim/meetings/admin/poll/edit.html.erb +4 -6
- data/app/views/decidim/meetings/admin/registrations/edit.html.erb +2 -4
- data/app/views/decidim/meetings/close_meeting_reminder_mailer/close_meeting_reminder.html.erb +1 -1
- data/app/views/decidim/meetings/layouts/live_event.html.erb +1 -15
- data/app/views/decidim/meetings/meetings/_datetime.html.erb +4 -4
- data/app/views/decidim/meetings/meetings/_form.html.erb +17 -17
- data/app/views/decidim/meetings/meetings/_meeting.html.erb +2 -1
- data/app/views/decidim/meetings/meetings/_meeting_agenda.html.erb +2 -2
- data/app/views/decidim/meetings/meetings/_meeting_aside.html.erb +3 -1
- data/app/views/decidim/meetings/meetings/_meeting_minutes.html.erb +1 -1
- data/app/views/decidim/meetings/meetings/_meeting_poll_actions.html.erb +15 -0
- data/app/views/decidim/meetings/meetings/index.html.erb +0 -9
- data/app/views/decidim/meetings/meetings/new.html.erb +0 -1
- data/app/views/decidim/meetings/polls/answers/_multiple_option.html.erb +6 -10
- data/app/views/decidim/meetings/polls/answers/_single_option.html.erb +4 -10
- data/app/views/decidim/meetings/polls/answers/admin.html.erb +34 -0
- data/app/views/decidim/meetings/polls/answers/index.html.erb +36 -0
- data/app/views/decidim/meetings/polls/questions/_closed_question.html.erb +8 -2
- data/app/views/decidim/meetings/polls/questions/_index_admin.html.erb +27 -24
- data/app/views/decidim/meetings/polls/questions/_published_question.html.erb +14 -11
- data/app/views/decidim/meetings/polls/questions/_question.html.erb +1 -1
- data/app/views/decidim/meetings/polls/questions/index.js.erb +3 -3
- data/app/views/decidim/meetings/polls/questions/index_admin.js.erb +3 -3
- data/app/views/decidim/meetings/registration_mailer/confirmation.html.erb +1 -1
- data/app/views/decidim/meetings/shared/_meetings.html.erb +1 -1
- data/app/views/devise/mailer/join_meeting.html.erb +3 -1
- data/app/views/devise/mailer/join_meeting.text.erb +3 -1
- data/config/locales/ar.yml +7 -13
- data/config/locales/bg.yml +51 -11
- data/config/locales/ca.yml +48 -18
- data/config/locales/cs.yml +34 -16
- data/config/locales/de.yml +161 -131
- data/config/locales/el.yml +7 -13
- data/config/locales/en.yml +45 -15
- data/config/locales/es-MX.yml +53 -23
- data/config/locales/es-PY.yml +54 -24
- data/config/locales/es.yml +55 -25
- data/config/locales/eu.yml +102 -72
- data/config/locales/fi-plain.yml +52 -17
- data/config/locales/fi.yml +62 -27
- data/config/locales/fr-CA.yml +50 -19
- data/config/locales/fr.yml +50 -19
- data/config/locales/ga-IE.yml +0 -8
- data/config/locales/gl.yml +8 -11
- data/config/locales/hu.yml +10 -13
- data/config/locales/id-ID.yml +6 -12
- data/config/locales/is-IS.yml +1 -15
- data/config/locales/it.yml +9 -23
- data/config/locales/ja.yml +48 -18
- data/config/locales/lb.yml +7 -10
- data/config/locales/lt.yml +9 -12
- data/config/locales/lv.yml +6 -12
- data/config/locales/nl.yml +8 -14
- data/config/locales/no.yml +6 -12
- data/config/locales/pl.yml +51 -11
- data/config/locales/pt-BR.yml +29 -17
- data/config/locales/pt.yml +7 -14
- data/config/locales/ro-RO.yml +4 -17
- data/config/locales/ru.yml +6 -12
- data/config/locales/sk.yml +7 -13
- data/config/locales/sv.yml +110 -206
- data/config/locales/tr-TR.yml +8 -17
- data/config/locales/uk.yml +6 -15
- data/config/locales/zh-CN.yml +7 -15
- data/config/locales/zh-TW.yml +7 -13
- data/db/migrate/20240130135858_add_withdrawn_fields_on_meetings.rb +23 -0
- data/decidim-meetings.gemspec +2 -2
- data/lib/decidim/api/meeting_type.rb +3 -12
- data/lib/decidim/api/meetings_type.rb +3 -1
- data/lib/decidim/meetings/component.rb +2 -2
- data/lib/decidim/meetings/engine.rb +6 -9
- data/lib/decidim/meetings/meeting_serializer.rb +3 -38
- data/lib/decidim/meetings/seeds.rb +13 -18
- data/lib/decidim/meetings/test/factories.rb +1 -7
- data/lib/decidim/meetings/test/notifications_handling.rb +1 -1
- data/lib/decidim/meetings/version.rb +1 -1
- data/lib/tasks/decidim_meetings.rake +1 -1
- metadata +24 -23
- data/app/views/decidim/meetings/admin/agenda/show.html.erb +0 -0
- data/config/locales/bn-BD.yml +0 -1
- data/config/locales/bs-BA.yml +0 -8
- data/config/locales/ca-IT.yml +0 -661
data/config/locales/tr-TR.yml
CHANGED
@@ -51,12 +51,6 @@ tr:
|
|
51
51
|
other: Kayıtlar
|
52
52
|
decidim:
|
53
53
|
admin:
|
54
|
-
filters:
|
55
|
-
meetings:
|
56
|
-
category_id_eq:
|
57
|
-
label: Kategori
|
58
|
-
scope_id_eq:
|
59
|
-
label: kapsam
|
60
54
|
meeting_copies:
|
61
55
|
create:
|
62
56
|
error: Bu toplantıyı kopyalarken bir sorun oluştu.
|
@@ -79,7 +73,7 @@ tr:
|
|
79
73
|
enable_pads_creation: Altlık oluşturmayı etkinleştirin
|
80
74
|
registration_code_enabled: Kayıt kodu etkinleştirildi
|
81
75
|
resources_permissions_enabled: Her toplantı için işlem izinleri ayarlanabilir
|
82
|
-
scope_id:
|
76
|
+
scope_id: Kapsam
|
83
77
|
scopes_enabled: Kapsamlar etkinleştirildi
|
84
78
|
terms_and_conditions_url_for_meeting_creators: Toplantı oluşturucuları için şartlar ve koşullar URL'si
|
85
79
|
step:
|
@@ -148,6 +142,7 @@ tr:
|
|
148
142
|
attachment_collections: Klasörler
|
149
143
|
attachments: Ekler
|
150
144
|
close: Kapat
|
145
|
+
confirm_destroy: Bu toplantıyı silmek istediğinizden emin misiniz?
|
151
146
|
destroy: Sil
|
152
147
|
edit: Düzenle
|
153
148
|
invalid_destroy:
|
@@ -204,12 +199,8 @@ tr:
|
|
204
199
|
non_user: Mevcut olmayan katılımcı
|
205
200
|
select_user: Katılımcı seç
|
206
201
|
index:
|
207
|
-
filter:
|
208
|
-
all: Tümü
|
209
|
-
sent: Gönderilen
|
210
202
|
invite_attendee: Katılımcı davet et
|
211
203
|
invites: Davetler
|
212
|
-
search: Arama
|
213
204
|
meeting_closes:
|
214
205
|
edit:
|
215
206
|
close: Kapat
|
@@ -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
|
data/config/locales/uk.yml
CHANGED
@@ -49,12 +49,6 @@ uk:
|
|
49
49
|
other: Зареєстрованих
|
50
50
|
decidim:
|
51
51
|
admin:
|
52
|
-
filters:
|
53
|
-
meetings:
|
54
|
-
category_id_eq:
|
55
|
-
label: Категорія
|
56
|
-
scope_id_eq:
|
57
|
-
label: Обсяг
|
58
52
|
meeting_copies:
|
59
53
|
create:
|
60
54
|
error: При спробі створити копію цієї зустрічі сталася помилка.
|
@@ -73,7 +67,6 @@ uk:
|
|
73
67
|
comments_enabled: Коментарі увімкнено
|
74
68
|
default_registration_terms: Умови реєстрації за умовчанням
|
75
69
|
resources_permissions_enabled: Права на дії можна встановити для кожної зустрічі
|
76
|
-
scope_id: Обсяг
|
77
70
|
step:
|
78
71
|
announcement: Оголошення
|
79
72
|
comments_blocked: Коментарі вимкнено
|
@@ -121,6 +114,7 @@ uk:
|
|
121
114
|
attachment_collections: Теки
|
122
115
|
attachments: Вкладені файли
|
123
116
|
close: Закрити
|
117
|
+
confirm_destroy: Ви впевнені, що хочете видалити цю зустріч?
|
124
118
|
destroy: Видалити
|
125
119
|
edit: Редагувати
|
126
120
|
preview: Попередній перегляд
|
@@ -170,11 +164,8 @@ uk:
|
|
170
164
|
non_user: Не чинний учасник
|
171
165
|
select_user: Оберіть учасника
|
172
166
|
index:
|
173
|
-
filter:
|
174
|
-
sent: Надіслано
|
175
167
|
invite_attendee: Запросити учасника
|
176
168
|
invites: Запрошення
|
177
|
-
search: Шукати
|
178
169
|
meeting_closes:
|
179
170
|
edit:
|
180
171
|
close: Закрити
|
@@ -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: Минулі зустрічі
|
data/config/locales/zh-CN.yml
CHANGED
@@ -43,12 +43,6 @@ zh-CN:
|
|
43
43
|
other: 注册
|
44
44
|
decidim:
|
45
45
|
admin:
|
46
|
-
filters:
|
47
|
-
meetings:
|
48
|
-
category_id_eq:
|
49
|
-
label: 类别
|
50
|
-
scope_id_eq:
|
51
|
-
label: 范围
|
52
46
|
meeting_copies:
|
53
47
|
create:
|
54
48
|
error: 重复这次会议时出现问题。
|
@@ -138,6 +132,7 @@ zh-CN:
|
|
138
132
|
attachment_collections: 文件夹
|
139
133
|
attachments: 附件
|
140
134
|
close: 关闭
|
135
|
+
confirm_destroy: 您确定要删除这个会议吗?
|
141
136
|
destroy: 删除
|
142
137
|
edit: 编辑
|
143
138
|
invalid_destroy:
|
@@ -191,12 +186,8 @@ zh-CN:
|
|
191
186
|
non_user: 非现有参与者
|
192
187
|
select_user: 选择参与者
|
193
188
|
index:
|
194
|
-
filter:
|
195
|
-
all: 所有的
|
196
|
-
sent: 已发送
|
197
189
|
invite_attendee: 邀请参与者
|
198
190
|
invites: 邀请
|
199
|
-
search: 搜索
|
200
191
|
meeting_closes:
|
201
192
|
edit:
|
202
193
|
close: 关闭
|
@@ -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: 确认
|
data/config/locales/zh-TW.yml
CHANGED
@@ -210,6 +210,7 @@ zh-TW:
|
|
210
210
|
attachment_collections: 資料夾
|
211
211
|
attachments: 附件
|
212
212
|
close: 關閉
|
213
|
+
confirm_destroy: 你確定要刪除此會議?
|
213
214
|
destroy: 刪除
|
214
215
|
edit: 編輯
|
215
216
|
invalid_destroy:
|
@@ -272,13 +273,9 @@ zh-TW:
|
|
272
273
|
non_user: 不存在的參與者。
|
273
274
|
select_user: 選擇參與者
|
274
275
|
index:
|
275
|
-
filter:
|
276
|
-
all: 全部
|
277
|
-
sent: 傳送
|
278
276
|
invite_attendee: 邀請的與會者
|
279
277
|
invites: 邀請
|
280
278
|
registrations_disabled: 你無法邀請參加者,因為註冊已被禁用。
|
281
|
-
search: 搜尋
|
282
279
|
meeting_closes:
|
283
280
|
edit:
|
284
281
|
close: 關閉
|
@@ -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
|
data/decidim-meetings.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |s|
|
|
10
10
|
s.version = Decidim::Meetings.version
|
11
11
|
s.authors = ["Josep Jaume Rey Peroy", "Marc Riera Casals", "Oriol Gual Oliva"]
|
12
12
|
s.email = ["josepjaume@gmail.com", "mrc2407@gmail.com", "oriolgual@gmail.com"]
|
13
|
-
s.license = "AGPL-3.0
|
13
|
+
s.license = "AGPL-3.0"
|
14
14
|
s.homepage = "https://decidim.org"
|
15
15
|
s.metadata = {
|
16
16
|
"bug_tracker_uri" => "https://github.com/decidim/decidim/issues",
|
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
|
|
19
19
|
"homepage_uri" => "https://decidim.org",
|
20
20
|
"source_code_uri" => "https://github.com/decidim/decidim"
|
21
21
|
}
|
22
|
-
s.required_ruby_version = "~> 3.
|
22
|
+
s.required_ruby_version = "~> 3.2.0"
|
23
23
|
|
24
24
|
s.name = "decidim-meetings"
|
25
25
|
s.summary = "Decidim meetings module"
|
@@ -45,6 +45,9 @@ module Decidim
|
|
45
45
|
object.audio_url if object.closing_visible?
|
46
46
|
end
|
47
47
|
|
48
|
+
field :withdrawn_at, Decidim::Core::DateTimeType, description: "The date and time this meeting was withdrawn", null: true
|
49
|
+
field :withdrawn, GraphQL::Types::Boolean, "Whether this meeting has been withdrawn or not", method: :withdrawn?, null: true
|
50
|
+
|
48
51
|
field :created_at, Decidim::Core::DateTimeType, description: "The date and time this minutes was created", null: true
|
49
52
|
field :updated_at, Decidim::Core::DateTimeType, description: "The date and time this minutes was updated", null: true
|
50
53
|
|
@@ -74,18 +77,6 @@ module Decidim
|
|
74
77
|
field :type_of_meeting, GraphQL::Types::String, "The type of the meeting (online or in-person)", null: false
|
75
78
|
field :online_meeting_url, GraphQL::Types::String, "The URL of the meeting (when the type is online)", null: false
|
76
79
|
field :iframe_embed_type, GraphQL::Types::String, "The type of displaying of the online meeting URL", null: true
|
77
|
-
|
78
|
-
def self.authorized?(object, context)
|
79
|
-
context[:meeting] = object
|
80
|
-
|
81
|
-
chain = [
|
82
|
-
allowed_to?(:read, :meeting, object, context),
|
83
|
-
object.published?,
|
84
|
-
object.current_user_can_visit_meeting?(context[:current_user])
|
85
|
-
].all?
|
86
|
-
|
87
|
-
super && chain
|
88
|
-
end
|
89
80
|
end
|
90
81
|
end
|
91
82
|
end
|
@@ -2,7 +2,9 @@
|
|
2
2
|
|
3
3
|
module Decidim
|
4
4
|
module Meetings
|
5
|
-
class MeetingsType < Decidim::
|
5
|
+
class MeetingsType < Decidim::Api::Types::BaseObject
|
6
|
+
implements Decidim::Core::ComponentInterface
|
7
|
+
|
6
8
|
graphql_name "Meetings"
|
7
9
|
description "A meetings component of a participatory space."
|
8
10
|
|
@@ -19,12 +19,12 @@ Decidim.register_component(:meetings) do |component|
|
|
19
19
|
resource.template = "decidim/meetings/meetings/linked_meetings"
|
20
20
|
resource.card = "decidim/meetings/meeting"
|
21
21
|
resource.reported_content_cell = "decidim/meetings/reported_content"
|
22
|
-
resource.actions = %w(join comment)
|
22
|
+
resource.actions = %w(join comment reply_poll)
|
23
23
|
resource.searchable = true
|
24
24
|
end
|
25
25
|
|
26
26
|
component.register_stat :meetings_count, primary: true, priority: Decidim::StatsRegistry::MEDIUM_PRIORITY do |components, start_at, end_at|
|
27
|
-
meetings = Decidim::Meetings::FilteredMeetings.for(components, start_at, end_at).
|
27
|
+
meetings = Decidim::Meetings::FilteredMeetings.for(components, start_at, end_at).not_withdrawn
|
28
28
|
meetings.count
|
29
29
|
end
|
30
30
|
|
@@ -32,7 +32,11 @@ module Decidim
|
|
32
32
|
resource :live_event, only: :show
|
33
33
|
namespace :polls do
|
34
34
|
resources :questions, only: [:index, :update]
|
35
|
-
resources :answers, only: [:index, :create]
|
35
|
+
resources :answers, only: [:index, :create] do
|
36
|
+
collection do
|
37
|
+
get :admin
|
38
|
+
end
|
39
|
+
end
|
36
40
|
end
|
37
41
|
end
|
38
42
|
scope "/meetings" do
|
@@ -46,8 +50,6 @@ module Decidim
|
|
46
50
|
end
|
47
51
|
|
48
52
|
initializer "decidim_meetings.register_icons" do
|
49
|
-
Decidim.icons.register(name: "headphone-line", icon: "headphone-line", category: "system", description: "", engine: :meetings)
|
50
|
-
Decidim.icons.register(name: "video-line", icon: "video-line", category: "system", description: "", engine: :meetings)
|
51
53
|
Decidim.icons.register(name: "Decidim::Meetings::Meeting", icon: "map-pin-line", description: "Meeting", category: "activity", engine: :meetings)
|
52
54
|
Decidim.icons.register(name: "in_person", icon: "community-line", description: "In person", category: "meetings", engine: :meetings)
|
53
55
|
Decidim.icons.register(name: "online", icon: "webcam-line", description: "Online", category: "meetings", engine: :meetings)
|
@@ -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
|
-
|
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 #
|
146
|
+
params # official
|
136
147
|
end
|
137
148
|
end
|
138
149
|
|
@@ -160,10 +171,6 @@ module Decidim
|
|
160
171
|
followers: resource.participatory_space.followers
|
161
172
|
)
|
162
173
|
|
163
|
-
Decidim.traceability.perform_action!(:publish, resource, admin_user, visibility: "all") do
|
164
|
-
resource.publish!
|
165
|
-
end
|
166
|
-
|
167
174
|
Decidim::Comments::Seed.comments_for(resource)
|
168
175
|
|
169
176
|
resource
|
@@ -193,19 +200,7 @@ module Decidim
|
|
193
200
|
def create_meeting_registration!(meeting:)
|
194
201
|
r = SecureRandom.hex(4)
|
195
202
|
email = "meeting-registered-user-#{meeting.id}-#{r}@example.org"
|
196
|
-
|
197
|
-
user = Decidim::User.find_or_initialize_by(email:)
|
198
|
-
|
199
|
-
user.update!(
|
200
|
-
password: "decidim123456789",
|
201
|
-
name:,
|
202
|
-
nickname: ::Faker::Twitter.unique.screen_name,
|
203
|
-
organization:,
|
204
|
-
tos_agreement: "1",
|
205
|
-
confirmed_at: Time.current,
|
206
|
-
personal_url: ::Faker::Internet.url,
|
207
|
-
about: ::Faker::Lorem.paragraph(sentence_count: 2)
|
208
|
-
)
|
203
|
+
user = find_or_initialize_user_by(email:)
|
209
204
|
|
210
205
|
Decidim::Meetings::Registration.create!(
|
211
206
|
meeting:,
|
@@ -57,19 +57,13 @@ FactoryBot.define do
|
|
57
57
|
end
|
58
58
|
|
59
59
|
trait :withdrawn do
|
60
|
-
|
60
|
+
withdrawn_at { Time.current }
|
61
61
|
end
|
62
62
|
|
63
63
|
trait :in_person do
|
64
64
|
type_of_meeting { :in_person }
|
65
65
|
end
|
66
66
|
|
67
|
-
trait :hidden do
|
68
|
-
after :create do |meeting, evaluator|
|
69
|
-
create(:moderation, hidden_at: Time.current, reportable: meeting, skip_injection: evaluator.skip_injection)
|
70
|
-
end
|
71
|
-
end
|
72
|
-
|
73
67
|
trait :online do
|
74
68
|
type_of_meeting { :online }
|
75
69
|
online_meeting_url { "https://decidim.org" }
|
@@ -3,7 +3,7 @@
|
|
3
3
|
namespace :decidim_meetings do
|
4
4
|
# For privacy reasons we recommend that you delete this registration form when you no longer need it.
|
5
5
|
# By default this is 3 months after the meeting has passed
|
6
|
-
desc "
|
6
|
+
desc "Removes registration forms belonging to meetings that have ended more than X months ago"
|
7
7
|
task :clean_registration_forms, [:months] => :environment do |_t, args|
|
8
8
|
args.with_defaults(months: 3)
|
9
9
|
|