decidim-meetings 0.29.3 → 0.30.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.
- checksums.yaml +4 -4
- data/app/cells/decidim/meetings/cancel_registration_meeting_button/cancelation_modal.erb +1 -1
- data/app/cells/decidim/meetings/cancel_registration_meeting_button/show.erb +3 -1
- data/app/cells/decidim/meetings/cancel_registration_meeting_button_cell.rb +1 -1
- data/app/cells/decidim/meetings/dates_and_map/show.erb +1 -1
- data/app/cells/decidim/meetings/highlighted_meetings_for_component/show.erb +1 -1
- data/app/cells/decidim/meetings/join_meeting_button/show.erb +5 -2
- data/app/cells/decidim/meetings/meeting_card_metadata_cell.rb +3 -3
- data/app/cells/decidim/meetings/meeting_l_cell.rb +12 -0
- data/app/commands/decidim/meetings/admin/copy_meeting.rb +1 -2
- data/app/commands/decidim/meetings/admin/create_meeting.rb +8 -2
- data/app/commands/decidim/meetings/admin/update_meeting.rb +8 -2
- data/app/commands/decidim/meetings/create_meeting.rb +2 -2
- data/app/commands/decidim/meetings/update_meeting.rb +2 -3
- data/app/controllers/concerns/decidim/meetings/admin/filterable.rb +9 -5
- data/app/controllers/concerns/decidim/meetings/component_filterable.rb +1 -2
- data/app/controllers/decidim/meetings/admin/meetings_controller.rb +14 -22
- data/app/controllers/decidim/meetings/admin/registration_form_controller.rb +8 -0
- data/app/controllers/decidim/meetings/directory/meetings_controller.rb +2 -4
- data/app/controllers/decidim/meetings/meetings_controller.rb +40 -6
- data/app/forms/decidim/meetings/admin/meeting_form.rb +16 -30
- data/app/forms/decidim/meetings/base_meeting_form.rb +6 -0
- data/app/forms/decidim/meetings/meeting_form.rb +2 -30
- data/app/helpers/decidim/meetings/admin/application_helper.rb +11 -1
- data/app/helpers/decidim/meetings/application_helper.rb +35 -1
- data/app/helpers/decidim/meetings/directory/application_helper.rb +9 -48
- data/app/helpers/decidim/meetings/meetings_helper.rb +5 -0
- data/app/models/decidim/meetings/invite.rb +10 -0
- data/app/models/decidim/meetings/meeting.rb +28 -1
- data/app/models/decidim/meetings/meeting_link.rb +25 -0
- data/app/packs/entrypoints/decidim_meetings_admin.js +1 -0
- data/app/packs/src/decidim/meetings/admin/meetings_components_form.js +77 -0
- data/app/packs/src/decidim/meetings/admin/meetings_form.js +8 -0
- data/app/permissions/decidim/meetings/admin/permissions.rb +1 -1
- data/app/permissions/decidim/meetings/permissions.rb +13 -9
- data/app/presenters/decidim/meetings/admin_log/meeting_presenter.rb +1 -1
- data/app/presenters/decidim/meetings/meeting_presenter.rb +13 -1
- data/app/queries/decidim/meetings/filtered_meetings.rb +2 -2
- data/app/queries/decidim/meetings/metrics/meeting_followers_metric_measure.rb +2 -2
- data/app/queries/decidim/meetings/metrics/meetings_metric_manage.rb +6 -6
- data/app/serializers/decidim/meetings/base_download_your_data_serializer.rb +32 -0
- data/app/serializers/decidim/meetings/download_your_data_invite_serializer.rb +6 -26
- data/app/serializers/decidim/meetings/download_your_data_meeting_serializer.rb +15 -0
- data/app/serializers/decidim/meetings/download_your_data_registration_serializer.rb +6 -24
- data/app/views/decidim/meetings/admin/meetings/_component.html.erb +15 -0
- data/app/views/decidim/meetings/admin/meetings/_form.html.erb +7 -9
- data/app/views/decidim/meetings/admin/meetings/_linked_spaces.html.erb +53 -0
- data/app/views/decidim/meetings/admin/meetings/_meeting-tr.html.erb +42 -0
- data/app/views/decidim/meetings/admin/meetings/_meeting_actions.html.erb +70 -0
- data/app/views/decidim/meetings/admin/meetings/_meetings-thead.html.erb +26 -0
- data/app/views/decidim/meetings/admin/meetings/index.html.erb +16 -142
- data/app/views/decidim/meetings/admin/meetings/manage_trash.html.erb +23 -0
- data/app/views/decidim/meetings/admin/registration_form/edit_questions.html.erb +44 -0
- data/app/views/decidim/meetings/admin/registrations/edit.html.erb +1 -0
- data/app/views/decidim/meetings/directory/meetings/index.html.erb +1 -2
- data/app/views/decidim/meetings/live_events/show.html.erb +5 -5
- data/app/views/decidim/meetings/meetings/_form.html.erb +4 -8
- data/app/views/decidim/meetings/meetings/_meeting.html.erb +51 -26
- data/app/views/decidim/meetings/meetings/_meeting_actions.html.erb +34 -0
- data/app/views/decidim/meetings/meetings/_meeting_aside.html.erb +20 -59
- data/app/views/decidim/meetings/meetings/_meeting_poll_actions.html.erb +2 -5
- data/app/views/decidim/meetings/meetings/_schema_org_event_meeting.html.erb +3 -0
- data/app/views/decidim/meetings/meetings/index.html.erb +1 -2
- data/app/views/decidim/meetings/meetings/new.html.erb +0 -1
- data/app/views/decidim/meetings/meetings/show.html.erb +5 -5
- data/app/views/decidim/meetings/polls/answers/index.html.erb +5 -5
- data/app/views/decidim/meetings/shared/_filters.html.erb +1 -13
- data/app/views/decidim/meetings/shared/_index.html.erb +1 -1
- data/app/views/decidim/meetings/shared/_index.js.erb +3 -2
- data/app/views/decidim/meetings/shared/_meetings.html.erb +1 -1
- data/app/views/decidim/meetings/shared/_meetings_aside.html.erb +2 -2
- data/app/views/decidim/participatory_spaces/_conference_venues.html.erb +1 -1
- data/config/locales/ar.yml +23 -17
- data/config/locales/bg.yml +16 -25
- data/config/locales/ca.yml +140 -30
- data/config/locales/cs.yml +145 -28
- data/config/locales/de.yml +152 -74
- data/config/locales/el.yml +7 -22
- data/config/locales/en.yml +132 -22
- data/config/locales/es-MX.yml +144 -34
- data/config/locales/es-PY.yml +145 -35
- data/config/locales/es.yml +145 -35
- data/config/locales/eu.yml +159 -49
- data/config/locales/fi-plain.yml +142 -27
- data/config/locales/fi.yml +142 -27
- data/config/locales/fr-CA.yml +79 -27
- data/config/locales/fr.yml +79 -27
- data/config/locales/ga-IE.yml +0 -13
- data/config/locales/gl.yml +6 -12
- data/config/locales/hu.yml +8 -20
- data/config/locales/id-ID.yml +6 -13
- data/config/locales/is-IS.yml +0 -15
- data/config/locales/it.yml +7 -19
- data/config/locales/ja.yml +94 -26
- data/config/locales/lb.yml +6 -14
- data/config/locales/lt.yml +7 -23
- data/config/locales/lv.yml +6 -13
- data/config/locales/nl.yml +8 -18
- data/config/locales/no.yml +6 -16
- data/config/locales/pl.yml +16 -21
- data/config/locales/pt-BR.yml +7 -21
- data/config/locales/pt.yml +7 -17
- data/config/locales/ro-RO.yml +32 -19
- data/config/locales/ru.yml +6 -13
- data/config/locales/sk.yml +7 -14
- data/config/locales/sv.yml +82 -28
- data/config/locales/tr-TR.yml +7 -19
- data/config/locales/uk.yml +5 -15
- data/config/locales/zh-CN.yml +7 -18
- data/config/locales/zh-TW.yml +7 -21
- data/db/migrate/20181107175558_add_questionnaire_to_existing_meetings.rb +1 -1
- data/db/migrate/20200827153856_add_commentable_counter_cache_to_meetings.rb +1 -1
- data/db/migrate/20201016065302_fix_meetings_registration_terms.rb +1 -1
- data/db/migrate/20210310120731_add_followable_counter_cache_to_meetings.rb +1 -1
- data/db/migrate/20240712104245_create_decidim_meetings_meeting_link.rb +12 -0
- data/db/migrate/20240828103603_add_deleted_at_to_decidim_meetings_meetings.rb +8 -0
- data/decidim-meetings.gemspec +1 -1
- data/lib/decidim/api/agenda_item_type.rb +6 -7
- data/lib/decidim/api/agenda_type.rb +3 -4
- data/lib/decidim/api/meeting_type.rb +33 -41
- data/lib/decidim/api/meetings_type.rb +4 -5
- data/lib/decidim/api/service_type.rb +1 -1
- data/lib/decidim/meetings/admin_engine.rb +9 -1
- data/lib/decidim/meetings/component.rb +14 -4
- data/lib/decidim/meetings/download_your_data_user_answers_serializer.rb +13 -7
- data/lib/decidim/meetings/engine.rb +1 -6
- data/lib/decidim/meetings/meeting_serializer.rb +70 -59
- data/lib/decidim/meetings/schema_org_event_meeting_serializer.rb +151 -0
- data/lib/decidim/meetings/seeds.rb +2 -4
- data/lib/decidim/meetings/test/factories.rb +8 -0
- data/lib/decidim/meetings/test/translated_event.rb +3 -3
- data/lib/decidim/meetings/version.rb +1 -1
- data/lib/decidim/meetings.rb +1 -0
- metadata +32 -22
- data/app/cells/decidim/meetings/meetings_map/show.erb +0 -16
- data/app/cells/decidim/meetings/meetings_map_cell.rb +0 -32
- data/app/commands/decidim/meetings/admin/destroy_meeting.rb +0 -21
- data/app/helpers/decidim/meetings/map_helper.rb +0 -21
- data/app/views/decidim/meetings/meetings/_actions.html.erb +0 -6
- data/config/locales/ca-IT.yml +0 -693
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,8 +73,6 @@ 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
|
83
|
-
scopes_enabled: Kapsamlar etkinleştirildi
|
84
76
|
terms_and_conditions_url_for_meeting_creators: Toplantı oluşturucuları için şartlar ve koşullar URL'si
|
85
77
|
step:
|
86
78
|
announcement: Duyuru
|
@@ -136,7 +128,7 @@ tr:
|
|
136
128
|
badges:
|
137
129
|
attended_meetings:
|
138
130
|
conditions:
|
139
|
-
|
131
|
+
- Katılmak istediğiniz toplantılara kayıt olun
|
140
132
|
description: Yüz yüze yapılan toplantılara katıldığınızda bu rozet verilir.
|
141
133
|
description_another: Bu katılımcı %{score} toplantıya katılmıştır.
|
142
134
|
description_own: '%{score} toplantıya katıldınız.'
|
@@ -148,7 +140,6 @@ tr:
|
|
148
140
|
attachment_collections: Klasörler
|
149
141
|
attachments: Ekler
|
150
142
|
close: Kapat
|
151
|
-
destroy: Sil
|
152
143
|
edit: Düzenle
|
153
144
|
invalid_destroy:
|
154
145
|
proposals_count:
|
@@ -211,8 +202,6 @@ tr:
|
|
211
202
|
close: Kapat
|
212
203
|
title: Toplantıyı kapat
|
213
204
|
meetings:
|
214
|
-
destroy:
|
215
|
-
success: Toplantı başarıyla silindi
|
216
205
|
edit:
|
217
206
|
title: Toplantıyı Düzenle
|
218
207
|
update: Güncelle
|
@@ -242,6 +231,8 @@ tr:
|
|
242
231
|
registrations:
|
243
232
|
edit:
|
244
233
|
save: Kaydet
|
234
|
+
validate: Doğrula
|
235
|
+
validate_registration_code: Kayıt kodunu doğrula
|
245
236
|
form:
|
246
237
|
available_slots_help: Mevcut sınırsız yuvaya sahipseniz 0'a bırakın.
|
247
238
|
invites: Davetiyeler
|
@@ -255,6 +246,9 @@ tr:
|
|
255
246
|
update:
|
256
247
|
invalid: Kayıt ayarları kaydedilirken bir sorun oluştu.
|
257
248
|
success: Toplantı kayıtları ayarları başarıyla kaydedildi.
|
249
|
+
validate_registration_code:
|
250
|
+
invalid: Bu kayıt kodu geçersiz.
|
251
|
+
success: Kayıt kodu başarıyla doğrulandı.
|
258
252
|
admin_log:
|
259
253
|
invite:
|
260
254
|
create: "%{user_name}, %{attendee_name} adlı kişiyi %{space_name} alanındaki %{resource_name} toplantısına katılmaya davet etti"
|
@@ -269,9 +263,6 @@ tr:
|
|
269
263
|
value_types:
|
270
264
|
organizer_presenter:
|
271
265
|
not_found: 'Organizatör veritabanında bulunamadı (ID: %{id})'
|
272
|
-
application_helper:
|
273
|
-
filter_category_values:
|
274
|
-
all: Tümü
|
275
266
|
calendar:
|
276
267
|
meeting_to_event:
|
277
268
|
read_more: Bu toplantı hakkında daha fazlasını okuyun
|
@@ -333,19 +324,16 @@ tr:
|
|
333
324
|
location_hints_help: 'Konum ipuçları: ek bilgi. Örnek: Yüz yüze bir toplantıysa binanın katı veya kısıtlı erişime sahip çevrimiçi bir toplantıysa toplantı parolası.'
|
334
325
|
online_meeting_url_help: 'Bağlantı: katılımcıların toplantınıza doğrudan bağlanmasına izin verin'
|
335
326
|
registration_url_help: 'Bağlantı: katılımcıların kayıtlar için kullandığınız harici hizmete girmesine izin verin'
|
336
|
-
select_a_category: Lütfen bir kategori seçin
|
337
327
|
select_a_meeting_type: Lütfen bir toplantı türü seçin
|
338
328
|
select_a_registration_type: Lütfen bir kayıt türü seçin
|
339
329
|
index:
|
340
330
|
new_meeting: Yeni toplantı
|
341
|
-
meeting:
|
342
|
-
close_meeting: Toplantıyı kapat
|
343
|
-
edit_meeting: Toplantıyı Düzenle
|
344
331
|
meetings:
|
345
332
|
upcoming_meetings_warning: Şu anda planlanmış bir toplantı yok, ancak burada listelenen tüm geçmiş toplantıları bulabilirsiniz.
|
346
333
|
new:
|
347
334
|
back: Geri
|
348
335
|
create: Oluştur
|
336
|
+
title: Bir Toplantı Oluştur
|
349
337
|
registration_confirm:
|
350
338
|
cancel: İptal Et
|
351
339
|
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,7 +114,6 @@ uk:
|
|
121
114
|
attachment_collections: Теки
|
122
115
|
attachments: Вкладені файли
|
123
116
|
close: Закрити
|
124
|
-
destroy: Видалити
|
125
117
|
edit: Редагувати
|
126
118
|
preview: Попередній перегляд
|
127
119
|
registrations: Реєстрації
|
@@ -177,8 +169,6 @@ uk:
|
|
177
169
|
close: Закрити
|
178
170
|
title: Закрити зустріч
|
179
171
|
meetings:
|
180
|
-
destroy:
|
181
|
-
success: Зустріч успішно видалено
|
182
172
|
edit:
|
183
173
|
update: Оновити
|
184
174
|
index:
|
@@ -199,6 +189,8 @@ uk:
|
|
199
189
|
registrations:
|
200
190
|
edit:
|
201
191
|
save: Зберегти
|
192
|
+
validate: Підтвердити
|
193
|
+
validate_registration_code: Підтвердити реєстраційний код
|
202
194
|
form:
|
203
195
|
available_slots_help: Залиште це число нульовим, якщо у вас не обмежена кількість місць.
|
204
196
|
invites: Запрошення
|
@@ -206,6 +198,9 @@ uk:
|
|
206
198
|
update:
|
207
199
|
invalid: При спробі зберегти налаштування реєстрації сталася помилка.
|
208
200
|
success: Налаштування реєстрації на зустріч успішно збережено.
|
201
|
+
validate_registration_code:
|
202
|
+
invalid: Цей реєстраційний код неналежний.
|
203
|
+
success: Реєстраційний код успішно підтверджено.
|
209
204
|
admin_log:
|
210
205
|
invite:
|
211
206
|
create: "%{user_name} запросив %{attendee_name} приєднатися до зустрічі %{resource_name} у просторі %{space_name}"
|
@@ -232,8 +227,6 @@ uk:
|
|
232
227
|
category: Категорія
|
233
228
|
date: Дата
|
234
229
|
search: Шукати
|
235
|
-
meeting:
|
236
|
-
close_meeting: Закрити зустріч
|
237
230
|
meetings:
|
238
231
|
upcoming_meetings_warning: Наразі нема запланованих зустрічей, але тут ви можете знайти перелік усіх попередніх зустрічей.
|
239
232
|
registration_confirm:
|
@@ -282,9 +275,6 @@ uk:
|
|
282
275
|
types:
|
283
276
|
private_meeting: Приватна зустріч
|
284
277
|
transparent: Прозора
|
285
|
-
metrics:
|
286
|
-
meetings:
|
287
|
-
title: Зустрічі
|
288
278
|
participatory_spaces:
|
289
279
|
highlighted_meetings:
|
290
280
|
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: 重复这次会议时出现问题。
|
@@ -70,8 +64,6 @@ zh-CN:
|
|
70
64
|
default_registration_terms: 默认注册条款
|
71
65
|
enable_pads_creation: 启用页面创建
|
72
66
|
resources_permissions_enabled: 每次会议都可以设置动作权限
|
73
|
-
scope_id: 范围
|
74
|
-
scopes_enabled: 范围已启用
|
75
67
|
step:
|
76
68
|
announcement: 通 知
|
77
69
|
comments_blocked: 评论已阻止
|
@@ -126,7 +118,7 @@ zh-CN:
|
|
126
118
|
badges:
|
127
119
|
attended_meetings:
|
128
120
|
conditions:
|
129
|
-
|
121
|
+
- 注册您想要参加的会议
|
130
122
|
description: 当你参加几次面对面的会议时颁发这个徽章。
|
131
123
|
description_another: 此参与者已经参加了 %{score} 次会议。
|
132
124
|
description_own: 您已经参加了 %{score} 次会议。
|
@@ -138,7 +130,6 @@ zh-CN:
|
|
138
130
|
attachment_collections: 文件夹
|
139
131
|
attachments: 附件
|
140
132
|
close: 关闭
|
141
|
-
destroy: 删除
|
142
133
|
edit: 编辑
|
143
134
|
invalid_destroy:
|
144
135
|
proposals_count:
|
@@ -198,8 +189,6 @@ zh-CN:
|
|
198
189
|
close: 关闭
|
199
190
|
title: 关闭会议
|
200
191
|
meetings:
|
201
|
-
destroy:
|
202
|
-
success: 会议已成功删除
|
203
192
|
edit:
|
204
193
|
update: 更新
|
205
194
|
form:
|
@@ -223,6 +212,8 @@ zh-CN:
|
|
223
212
|
registrations:
|
224
213
|
edit:
|
225
214
|
save: 保存
|
215
|
+
validate: Validate
|
216
|
+
validate_registration_code: 验证注册码
|
226
217
|
form:
|
227
218
|
available_slots_help: 如果您有无限空位可用,则将其留给0。
|
228
219
|
invites: 邀请
|
@@ -235,6 +226,9 @@ zh-CN:
|
|
235
226
|
update:
|
236
227
|
invalid: 保存注册设置时出现问题。
|
237
228
|
success: 会议注册设置保存成功。
|
229
|
+
validate_registration_code:
|
230
|
+
invalid: 此注册码无效。
|
231
|
+
success: 注册码已成功验证。
|
238
232
|
admin_log:
|
239
233
|
invite:
|
240
234
|
create: "%{user_name} 邀請了 %{attendee_name} 在 %{space_name} 空间加入 %{resource_name} 次会议"
|
@@ -249,9 +243,6 @@ zh-CN:
|
|
249
243
|
value_types:
|
250
244
|
organizer_presenter:
|
251
245
|
not_found: '在数据库中找不到组织者 (ID: %{id})'
|
252
|
-
application_helper:
|
253
|
-
filter_category_values:
|
254
|
-
all: 所有的
|
255
246
|
calendar_modal:
|
256
247
|
calendar_url: 日历 URL
|
257
248
|
export_calendar: 导出日历
|
@@ -295,16 +286,14 @@ zh-CN:
|
|
295
286
|
address_help: '地址:由地理编码器用来查找位置'
|
296
287
|
create_as: 创建会议为
|
297
288
|
location_help: '位置:发送给用户的消息,这些消息暗示要会见的地点'
|
298
|
-
select_a_category: 请选择一个类别
|
299
289
|
index:
|
300
290
|
new_meeting: 新会议
|
301
|
-
meeting:
|
302
|
-
close_meeting: 关闭会议
|
303
291
|
meetings:
|
304
292
|
upcoming_meetings_warning: 目前没有排定的会议,但在这里你可以找到过去所有会议的清单。
|
305
293
|
new:
|
306
294
|
back: 后退
|
307
295
|
create: 创建
|
296
|
+
title: 创建您的会议
|
308
297
|
registration_confirm:
|
309
298
|
cancel: 取消
|
310
299
|
confirm: 确认
|
data/config/locales/zh-TW.yml
CHANGED
@@ -85,8 +85,6 @@ zh-TW:
|
|
85
85
|
admin:
|
86
86
|
filters:
|
87
87
|
meetings:
|
88
|
-
category_id_eq:
|
89
|
-
label: 分類
|
90
88
|
closed_at_present:
|
91
89
|
label: 狀態
|
92
90
|
values:
|
@@ -97,8 +95,6 @@ zh-TW:
|
|
97
95
|
values:
|
98
96
|
'false': 過去
|
99
97
|
'true': 即將舉行
|
100
|
-
scope_id_eq:
|
101
|
-
label: 範圍
|
102
98
|
with_any_origin:
|
103
99
|
label: 起源
|
104
100
|
values:
|
@@ -135,8 +131,6 @@ zh-TW:
|
|
135
131
|
maps_enabled: 啟用地圖
|
136
132
|
registration_code_enabled: 啟用註冊碼
|
137
133
|
resources_permissions_enabled: 可以針對每個會議設定操作權限
|
138
|
-
scope_id: 範圍
|
139
|
-
scopes_enabled: 啟用範圍
|
140
134
|
terms_and_conditions_url_for_meeting_creators: 會議創建者的使用條款和條件 URL
|
141
135
|
step:
|
142
136
|
announcement: 公告
|
@@ -196,7 +190,7 @@ zh-TW:
|
|
196
190
|
badges:
|
197
191
|
attended_meetings:
|
198
192
|
conditions:
|
199
|
-
|
193
|
+
- 註冊您想參加的會議
|
200
194
|
description: 這個徽章是當您參加多個面對面會議時獲得的。
|
201
195
|
description_another: 此參與者已經參加了 %{score} 場會議。
|
202
196
|
description_own: 您已經參加了 %{score} 場會議。
|
@@ -210,7 +204,6 @@ zh-TW:
|
|
210
204
|
attachment_collections: 資料夾
|
211
205
|
attachments: 附件
|
212
206
|
close: 關閉
|
213
|
-
destroy: 刪除
|
214
207
|
edit: 編輯
|
215
208
|
invalid_destroy:
|
216
209
|
proposals_count:
|
@@ -286,11 +279,6 @@ zh-TW:
|
|
286
279
|
create:
|
287
280
|
invalid: 建立會議時發生問題.
|
288
281
|
success: 會議已成功建立。請注意這仍未發佈,您需要手動發佈。
|
289
|
-
destroy:
|
290
|
-
invalid:
|
291
|
-
proposals_count:
|
292
|
-
other: 該會議因有 %{count} 個相關提案而無法刪除.
|
293
|
-
success: 會議已成功刪除
|
294
282
|
edit:
|
295
283
|
title: 編輯會議
|
296
284
|
update: 更新
|
@@ -337,6 +325,8 @@ zh-TW:
|
|
337
325
|
registrations:
|
338
326
|
edit:
|
339
327
|
save: 儲存
|
328
|
+
validate: 驗證
|
329
|
+
validate_registration_code: 驗證註冊碼
|
340
330
|
form:
|
341
331
|
available_slots_help: 如果您有無限的可用名額,請將其設置為0。
|
342
332
|
invites: 邀請
|
@@ -351,6 +341,9 @@ zh-TW:
|
|
351
341
|
update:
|
352
342
|
invalid: 儲存註冊設定時出現問題。
|
353
343
|
success: 會議註冊設定已成功保存。
|
344
|
+
validate_registration_code:
|
345
|
+
invalid: 此註冊碼無效。
|
346
|
+
success: 註冊碼已成功驗證。
|
354
347
|
admin_log:
|
355
348
|
invite:
|
356
349
|
create: "%{user_name} 邀請 %{attendee_name} 參加在 %{space_name} 空間舉行的 %{resource_name} 會議。"
|
@@ -368,8 +361,6 @@ zh-TW:
|
|
368
361
|
questionnaire:
|
369
362
|
update: "%{user_name} 更新了 %{meeting_name} 會議的問卷"
|
370
363
|
application_helper:
|
371
|
-
filter_category_values:
|
372
|
-
all: 全部
|
373
364
|
filter_meeting_space_values:
|
374
365
|
all: 全部
|
375
366
|
calendar_modal:
|
@@ -471,7 +462,6 @@ zh-TW:
|
|
471
462
|
location_hints_help: '地點提示:額外的訊息。例如,如果是面對面的會議,可以提供建築物樓層的資訊;如果是限制存取權限的線上會議,可以提供會議密碼的資訊。'
|
472
463
|
online_meeting_url_help: '連結:允許參與者直接連接到您的會議'
|
473
464
|
registration_url_help: '連結:允許參與者進入您用於註冊的外部服務'
|
474
|
-
select_a_category: 請選擇一個類別
|
475
465
|
select_a_meeting_type: 請選擇一種會議類型。
|
476
466
|
select_a_registration_type: 請選擇一種註冊類型
|
477
467
|
select_an_iframe_access_level: 請選擇一個 iframe 存取級別
|
@@ -481,15 +471,13 @@ zh-TW:
|
|
481
471
|
see_all: 查看所有會議
|
482
472
|
see_all_withdrawn: 查看所有撤回的會議
|
483
473
|
text_banner: 您正在查看已被其作者撤回的會議列表。 %{go_back_link}。
|
484
|
-
meeting:
|
485
|
-
close_meeting: 關閉會議
|
486
|
-
edit_meeting: 編輯會議
|
487
474
|
meetings:
|
488
475
|
no_meetings_warning: 沒有符合搜尋條件的會議或者目前沒有任何已排定的會議。
|
489
476
|
upcoming_meetings_warning: 目前沒有安排的會議,但您可以在這裡找到所有過去的會議列表。
|
490
477
|
new:
|
491
478
|
back: 返回
|
492
479
|
create: 建立
|
480
|
+
title: 新增您的會議
|
493
481
|
registration_confirm:
|
494
482
|
cancel: 取消
|
495
483
|
confirm: 確認
|
@@ -515,7 +503,6 @@ zh-TW:
|
|
515
503
|
visit_finished: 查看過去的會議
|
516
504
|
withdraw_btn_hint: 您可以撤回您的會議,如果您改變了主意。會議不會被刪除,而是會顯示在已撤回的會議列表中。
|
517
505
|
withdraw_confirmation_html: 您確定要撤回此會議嗎?<br><br><strong>此操作無法取消!</strong>
|
518
|
-
withdraw_meeting: 撤回會議
|
519
506
|
update:
|
520
507
|
invalid: 更新會議時發生問題.
|
521
508
|
success: 您已成功更新會議。
|
@@ -589,7 +576,6 @@ zh-TW:
|
|
589
576
|
transparent: 透明
|
590
577
|
withdraw: 撤回
|
591
578
|
withdraw:
|
592
|
-
error: 退出會議時發生錯誤.
|
593
579
|
success: 會議已成功撤回.
|
594
580
|
metrics:
|
595
581
|
meetings:
|
@@ -3,7 +3,7 @@
|
|
3
3
|
class AddQuestionnaireToExistingMeetings < ActiveRecord::Migration[5.2]
|
4
4
|
def change
|
5
5
|
Decidim::Meetings::Meeting.transaction do
|
6
|
-
Decidim::Meetings::Meeting.find_each do |meeting|
|
6
|
+
Decidim::Meetings::Meeting.unscoped.find_each do |meeting|
|
7
7
|
if meeting.component.present? && meeting.questionnaire.blank?
|
8
8
|
meeting.update!(
|
9
9
|
questionnaire: Decidim::Forms::Questionnaire.new
|
@@ -4,6 +4,6 @@ class AddCommentableCounterCacheToMeetings < ActiveRecord::Migration[5.2]
|
|
4
4
|
def change
|
5
5
|
add_column :decidim_meetings_meetings, :comments_count, :integer, null: false, default: 0
|
6
6
|
Decidim::Meetings::Meeting.reset_column_information
|
7
|
-
Decidim::Meetings::Meeting.find_each(&:update_comments_count)
|
7
|
+
Decidim::Meetings::Meeting.unscoped.find_each(&:update_comments_count)
|
8
8
|
end
|
9
9
|
end
|
@@ -5,7 +5,7 @@ class FixMeetingsRegistrationTerms < ActiveRecord::Migration[5.2]
|
|
5
5
|
reset_column_information
|
6
6
|
|
7
7
|
PaperTrail.request(enabled: false) do
|
8
|
-
Decidim::Meetings::Meeting.find_each do |meeting|
|
8
|
+
Decidim::Meetings::Meeting.unscoped.find_each do |meeting|
|
9
9
|
next if meeting.component.nil?
|
10
10
|
# Only user-created meetings have this problem
|
11
11
|
next if meeting.official?
|
@@ -7,7 +7,7 @@ class AddFollowableCounterCacheToMeetings < ActiveRecord::Migration[5.2]
|
|
7
7
|
reversible do |dir|
|
8
8
|
dir.up do
|
9
9
|
Decidim::Meetings::Meeting.reset_column_information
|
10
|
-
Decidim::Meetings::Meeting.find_each do |record|
|
10
|
+
Decidim::Meetings::Meeting.unscoped.find_each do |record|
|
11
11
|
record.class.reset_counters(record.id, :follows)
|
12
12
|
end
|
13
13
|
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class CreateDecidimMeetingsMeetingLink < ActiveRecord::Migration[7.0]
|
4
|
+
def change
|
5
|
+
create_table :decidim_meetings_meeting_links do |t|
|
6
|
+
t.references :decidim_component, null: false, index: true
|
7
|
+
t.references :decidim_meeting, null: false, index: true
|
8
|
+
|
9
|
+
t.timestamps
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
data/decidim-meetings.gemspec
CHANGED
@@ -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.3.0"
|
23
23
|
|
24
24
|
s.name = "decidim-meetings"
|
25
25
|
s.summary = "Decidim meetings module"
|
@@ -3,20 +3,19 @@
|
|
3
3
|
module Decidim
|
4
4
|
module Meetings
|
5
5
|
class AgendaItemType < Decidim::Api::Types::BaseObject
|
6
|
+
implements Decidim::Core::TimestampsInterface
|
7
|
+
|
6
8
|
graphql_name "MeetingAgendaItem"
|
7
9
|
description "A meeting agenda item"
|
8
10
|
|
9
|
-
field :
|
10
|
-
field :title, Decidim::Core::TranslatedFieldType, "The title for this agenda item", null: true
|
11
|
+
field :agenda, Decidim::Meetings::AgendaType, "Belonging agenda", null: true
|
11
12
|
field :description, Decidim::Core::TranslatedFieldType, "The description for this agenda item", null: true
|
13
|
+
field :duration, GraphQL::Types::Int, "Duration in number of minutes for this item in this agenda", null: false
|
14
|
+
field :id, GraphQL::Types::ID, "The ID for this agenda item", null: false
|
12
15
|
field :items, [Decidim::Meetings::AgendaItemType, { null: true }], "Sub-items (children) of this agenda item", method: :agenda_item_children, null: false
|
13
16
|
field :parent, Decidim::Meetings::AgendaItemType, "Parent agenda item, if available", null: true
|
14
|
-
field :agenda, Decidim::Meetings::AgendaType, "Belonging agenda", null: true
|
15
|
-
field :duration, GraphQL::Types::Int, "Duration in number of minutes for this item in this agenda", null: false
|
16
17
|
field :position, GraphQL::Types::Int, "Order position for this agenda item", null: false
|
17
|
-
|
18
|
-
field :created_at, Decidim::Core::DateTimeType, description: "The date and time this agenda item was created", null: true
|
19
|
-
field :updated_at, Decidim::Core::DateTimeType, description: "The date and time this agenda item was updated", null: true
|
18
|
+
field :title, Decidim::Core::TranslatedFieldType, "The title for this agenda item", null: true
|
20
19
|
end
|
21
20
|
end
|
22
21
|
end
|
@@ -3,17 +3,16 @@
|
|
3
3
|
module Decidim
|
4
4
|
module Meetings
|
5
5
|
class AgendaType < Decidim::Api::Types::BaseObject
|
6
|
+
implements Decidim::Core::TimestampsInterface
|
7
|
+
|
6
8
|
graphql_name "MeetingAgenda"
|
7
9
|
description "A meeting agenda"
|
8
10
|
|
9
11
|
field :id, GraphQL::Types::ID, "The ID for the agenda", null: false
|
10
|
-
field :title, Decidim::Core::TranslatedFieldType, "The title for the agenda", null: true
|
11
12
|
field :items, [Decidim::Meetings::AgendaItemType, { null: true }], "Items and sub-items of the agenda", method: :agenda_items, null: false
|
13
|
+
field :title, Decidim::Core::TranslatedFieldType, "The title for the agenda", null: true
|
12
14
|
# probably useful in the future, when handling user permissions
|
13
15
|
# field :visible, !types.Boolean, "Whether this minutes is public or not", property: :visible
|
14
|
-
|
15
|
-
field :created_at, Decidim::Core::DateTimeType, description: "The date and time this agenda was created", null: true
|
16
|
-
field :updated_at, Decidim::Core::DateTimeType, description: "The date and time this agenda was updated", null: true
|
17
16
|
end
|
18
17
|
end
|
19
18
|
end
|
@@ -7,32 +7,53 @@ module Decidim
|
|
7
7
|
|
8
8
|
implements Decidim::Comments::CommentableInterface
|
9
9
|
implements Decidim::Core::AuthorableInterface
|
10
|
-
implements Decidim::Core::
|
11
|
-
implements Decidim::Core::ScopableInterface
|
10
|
+
implements Decidim::Core::TaxonomizableInterface
|
12
11
|
implements Decidim::Core::AttachableInterface
|
13
12
|
implements Decidim::Core::TimestampsInterface
|
14
13
|
implements Decidim::Meetings::ServicesInterface
|
15
14
|
implements Decidim::Meetings::LinkedResourcesInterface if Decidim::Meetings.enable_proposal_linking
|
16
15
|
implements Decidim::Forms::QuestionnaireEntityInterface
|
17
16
|
|
17
|
+
field :address, GraphQL::Types::String, "The physical address of this meeting (used for geolocation)", null: true
|
18
|
+
field :agenda, Decidim::Meetings::AgendaType, "Agenda for this meeting, if available", null: true
|
19
|
+
field :attendee_count, GraphQL::Types::Int, "Amount of attendees to this meeting", method: :attendees_count, null: true
|
20
|
+
field :attending_organizations, GraphQL::Types::String, "list of attending organizations", null: true
|
21
|
+
field :audio_url, GraphQL::Types::String, "URL for the audio of the session, if any", null: true
|
22
|
+
field :closed, GraphQL::Types::Boolean, "Whether this meeting is closed or not.", method: :closed?, null: false
|
23
|
+
field :closing_report, Decidim::Core::TranslatedFieldType, "The closing report of this meeting.", null: true
|
24
|
+
field :contribution_count, GraphQL::Types::Int, "Amount of contributions to this meeting", method: :contributions_count, null: true
|
25
|
+
field :coordinates, Decidim::Core::CoordinatesType, "Physical coordinates for this meeting", null: true
|
26
|
+
field :description, Decidim::Core::TranslatedFieldType, "The description of this meeting.", null: true
|
27
|
+
field :end_time, Decidim::Core::DateTimeType, "The time this meeting ends", null: false
|
18
28
|
field :id, GraphQL::Types::ID, "ID of this meeting", null: false
|
29
|
+
field :iframe_embed_type, GraphQL::Types::String, "The type of displaying of the online meeting URL", null: true
|
30
|
+
field :is_withdrawn, GraphQL::Types::Boolean, "Whether this meeting is withdrawn or not.", method: :withdrawn?, null: false
|
31
|
+
field :location, Decidim::Core::TranslatedFieldType, "The location of this meeting (free format)", null: true
|
32
|
+
field :location_hints, Decidim::Core::TranslatedFieldType, "The location of this meeting (free format)", null: true
|
33
|
+
field :online_meeting_url, GraphQL::Types::String, "The URL of the meeting (when the type is online)", null: false
|
34
|
+
field :private_meeting, GraphQL::Types::Boolean, "Whether the meeting is private or not (it can only be true if transparent)", null: false
|
19
35
|
field :reference, GraphQL::Types::String, "Reference for this meeting", null: false
|
20
|
-
field :
|
21
|
-
field :
|
36
|
+
field :registration_form, Decidim::Forms::QuestionnaireType, description: "If registration requires to fill a form, this is the questionnaire", null: true
|
37
|
+
field :registration_form_enabled, GraphQL::Types::Boolean, "Whether the registrations have a form or not", null: false
|
38
|
+
field :registration_terms, Decidim::Core::TranslatedFieldType, "The registration terms", null: true
|
39
|
+
field :registrations_enabled, GraphQL::Types::Boolean, "Whether the registrations are enabled or not", null: false
|
40
|
+
field :remaining_slots, GraphQL::Types::Int, "Amount of slots available for this meeting", null: true
|
22
41
|
field :start_time, Decidim::Core::DateTimeType, "The time this meeting starts", null: false
|
23
|
-
field :
|
24
|
-
field :
|
42
|
+
field :title, Decidim::Core::TranslatedFieldType, "The title of this meeting.", null: false
|
43
|
+
field :transparent, GraphQL::Types::Boolean, "For private meetings, information is public if transparent", null: false
|
44
|
+
field :type_of_meeting, GraphQL::Types::String, "The type of the meeting (online or in-person)", null: false
|
45
|
+
field :video_url, GraphQL::Types::String, "URL for the video of the session, if any", null: true
|
46
|
+
field :withdrawn, GraphQL::Types::Boolean, "Whether this meeting has been withdrawn or not", method: :withdrawn?, null: true
|
47
|
+
field :withdrawn_at, Decidim::Core::DateTimeType, description: "The date and time this meeting was withdrawn", null: true
|
48
|
+
|
49
|
+
def registration_form
|
50
|
+
object.questionnaire if object.registration_form_enabled?
|
51
|
+
end
|
25
52
|
|
26
53
|
def agenda
|
27
54
|
object.agenda if object.agenda&.visible?
|
28
55
|
end
|
29
56
|
|
30
|
-
field :closed, GraphQL::Types::Boolean, "Whether this meeting is closed or not.", method: :closed?, null: false
|
31
|
-
field :isWithdrawn, GraphQL::Types::Boolean, "Whether this meeting is withdrawn or not.", method: :withdrawn?, null: false
|
32
|
-
field :closing_report, Decidim::Core::TranslatedFieldType, "The closing report of this meeting.", null: true
|
33
|
-
field :video_url, GraphQL::Types::String, "URL for the video of the session, if any", null: true
|
34
|
-
field :audio_url, GraphQL::Types::String, "URL for the audio of the session, if any", null: true
|
35
|
-
|
36
57
|
def closing_report
|
37
58
|
object.closing_report if object.closing_visible?
|
38
59
|
end
|
@@ -45,38 +66,9 @@ module Decidim
|
|
45
66
|
object.audio_url if object.closing_visible?
|
46
67
|
end
|
47
68
|
|
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
|
-
|
51
|
-
field :created_at, Decidim::Core::DateTimeType, description: "The date and time this minutes was created", null: true
|
52
|
-
field :updated_at, Decidim::Core::DateTimeType, description: "The date and time this minutes was updated", null: true
|
53
|
-
|
54
|
-
field :attending_organizations, GraphQL::Types::String, "list of attending organizations", null: true
|
55
|
-
field :attendee_count, GraphQL::Types::Int, "Amount of attendees to this meeting", method: :attendees_count, null: true
|
56
|
-
field :contribution_count, GraphQL::Types::Int, "Amount of contributions to this meeting", method: :contributions_count, null: true
|
57
|
-
|
58
|
-
field :private_meeting, GraphQL::Types::Boolean, "Whether the meeting is private or not (it can only be true if transparent)", null: false
|
59
|
-
field :transparent, GraphQL::Types::Boolean, "For private meetings, information is public if transparent", null: false
|
60
|
-
field :registrations_enabled, GraphQL::Types::Boolean, "Whether the registrations are enabled or not", null: false
|
61
|
-
field :registration_terms, Decidim::Core::TranslatedFieldType, "The registration terms", null: true
|
62
|
-
field :remaining_slots, GraphQL::Types::Int, "Amount of slots available for this meeting", null: true
|
63
|
-
field :registration_form_enabled, GraphQL::Types::Boolean, "Whether the registrations have a form or not", null: false
|
64
|
-
field :registration_form, Decidim::Forms::QuestionnaireType, description: "If registration requires to fill a form, this is the questionnaire", null: true
|
65
|
-
|
66
|
-
def registration_form
|
67
|
-
object.questionnaire if object.registration_form_enabled?
|
68
|
-
end
|
69
|
-
field :location, Decidim::Core::TranslatedFieldType, "The location of this meeting (free format)", null: true
|
70
|
-
field :location_hints, Decidim::Core::TranslatedFieldType, "The location of this meeting (free format)", null: true
|
71
|
-
field :address, GraphQL::Types::String, "The physical address of this meeting (used for geolocation)", null: true
|
72
|
-
field :coordinates, Decidim::Core::CoordinatesType, "Physical coordinates for this meeting", null: true
|
73
|
-
|
74
69
|
def coordinates
|
75
70
|
[object.latitude, object.longitude]
|
76
71
|
end
|
77
|
-
field :type_of_meeting, GraphQL::Types::String, "The type of the meeting (online or in-person)", null: false
|
78
|
-
field :online_meeting_url, GraphQL::Types::String, "The URL of the meeting (when the type is online)", null: false
|
79
|
-
field :iframe_embed_type, GraphQL::Types::String, "The type of displaying of the online meeting URL", null: true
|
80
72
|
|
81
73
|
def self.authorized?(object, context)
|
82
74
|
context[:meeting] = object
|
@@ -6,16 +6,15 @@ module Decidim
|
|
6
6
|
graphql_name "Meetings"
|
7
7
|
description "A meetings component of a participatory space."
|
8
8
|
|
9
|
-
field :
|
9
|
+
field :meeting, Decidim::Meetings::MeetingType, "A single Meeting object", null: true do
|
10
|
+
argument :id, GraphQL::Types::ID, "The id of the Meeting requested", required: true
|
11
|
+
end
|
12
|
+
field :meetings, Decidim::Meetings::MeetingType.connection_type, "A collection of Meetings", null: true, connection: true
|
10
13
|
|
11
14
|
def meetings
|
12
15
|
Meeting.published.visible.where(component: object).includes(:component)
|
13
16
|
end
|
14
17
|
|
15
|
-
field :meeting, Decidim::Meetings::MeetingType, null: true do
|
16
|
-
argument :id, GraphQL::Types::ID, required: true
|
17
|
-
end
|
18
|
-
|
19
18
|
def meeting(**args)
|
20
19
|
Meeting.published.visible.where(component: object).find_by(id: args[:id])
|
21
20
|
end
|
@@ -6,8 +6,8 @@ module Decidim
|
|
6
6
|
graphql_name "MeetingService"
|
7
7
|
description "A meeting service"
|
8
8
|
|
9
|
-
field :title, Decidim::Core::TranslatedFieldType, "The title for the service", null: true
|
10
9
|
field :description, Decidim::Core::TranslatedFieldType, "The description for the service", null: true
|
10
|
+
field :title, Decidim::Core::TranslatedFieldType, "The title for the service", null: true
|
11
11
|
end
|
12
12
|
end
|
13
13
|
end
|