decidim-meetings 0.27.4 → 0.27.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/cells/decidim/meetings/cancel_registration_meeting_button/show.erb +13 -0
- data/app/cells/decidim/meetings/cancel_registration_meeting_button_cell.rb +36 -0
- data/app/cells/decidim/meetings/content_blocks/upcoming_meetings/show.erb +1 -1
- data/app/cells/decidim/meetings/content_blocks/upcoming_meetings_cell.rb +10 -2
- data/app/cells/decidim/meetings/highlighted_meetings_for_component/show.erb +2 -2
- data/app/cells/decidim/meetings/join_meeting_button/show.erb +1 -15
- data/app/cells/decidim/meetings/meeting_s_cell.rb +1 -1
- data/app/controllers/decidim/meetings/widgets_controller.rb +11 -1
- data/app/helpers/decidim/meetings/directory/application_helper.rb +1 -1
- data/app/packs/src/decidim/meetings/poll.component.js +27 -0
- data/app/permissions/decidim/meetings/permissions.rb +10 -0
- data/app/services/decidim/meetings/calendar/meeting_to_event.rb +6 -1
- data/app/views/decidim/meetings/admin/agenda/_form.html.erb +1 -1
- data/app/views/decidim/meetings/layouts/live_event.html.erb +1 -1
- data/app/views/decidim/meetings/meetings/_meeting_agenda.html.erb +2 -2
- data/app/views/decidim/meetings/meetings/index.html.erb +1 -1
- data/app/views/decidim/meetings/meetings/show.html.erb +4 -1
- data/app/views/decidim/meetings/polls/answers/_multiple_option.html.erb +13 -9
- data/app/views/decidim/meetings/polls/answers/_single_option.html.erb +8 -8
- data/app/views/decidim/meetings/polls/questions/_published_question.html.erb +2 -2
- data/app/views/decidim/participatory_spaces/_conference_venues.html.erb +3 -0
- data/config/locales/ar.yml +0 -5
- data/config/locales/bg.yml +105 -0
- data/config/locales/ca.yml +11 -9
- data/config/locales/cs.yml +5 -3
- data/config/locales/de.yml +14 -9
- data/config/locales/el.yml +1 -6
- data/config/locales/en.yml +3 -1
- data/config/locales/es-MX.yml +12 -7
- data/config/locales/es-PY.yml +9 -4
- data/config/locales/es.yml +15 -13
- data/config/locales/eu.yml +105 -100
- data/config/locales/fi-plain.yml +9 -4
- data/config/locales/fi.yml +26 -21
- data/config/locales/fr-CA.yml +9 -4
- data/config/locales/fr.yml +6 -4
- data/config/locales/ga-IE.yml +0 -2
- data/config/locales/gl.yml +1 -7
- data/config/locales/he-IL.yml +1 -0
- data/config/locales/hu.yml +5 -4
- data/config/locales/id-ID.yml +1 -7
- data/config/locales/is-IS.yml +4 -3
- data/config/locales/it.yml +5 -8
- data/config/locales/ja.yml +10 -5
- data/config/locales/lb.yml +6 -10
- data/config/locales/lt.yml +25 -8
- data/config/locales/lv.yml +1 -7
- data/config/locales/nl.yml +0 -5
- data/config/locales/no.yml +0 -2
- data/config/locales/pl.yml +72 -5
- data/config/locales/pt-BR.yml +119 -7
- data/config/locales/pt.yml +1 -4
- data/config/locales/ro-RO.yml +2 -5
- data/config/locales/ru.yml +2 -8
- data/config/locales/sk.yml +2 -8
- data/config/locales/sl.yml +3 -0
- data/config/locales/sq-AL.yml +1 -0
- data/config/locales/sv.yml +5 -5
- data/config/locales/th-TH.yml +1 -0
- data/config/locales/tr-TR.yml +1 -3
- data/config/locales/uk.yml +2 -8
- data/config/locales/zh-CN.yml +0 -2
- data/config/locales/zh-TW.yml +0 -5
- data/decidim-meetings.gemspec +36 -0
- data/lib/decidim/meetings/component.rb +1 -1
- data/lib/decidim/meetings/engine.rb +4 -3
- data/lib/decidim/meetings/meeting_serializer.rb +2 -2
- data/lib/decidim/meetings/test/factories.rb +68 -30
- data/lib/decidim/meetings/user_answers_serializer.rb +1 -1
- data/lib/decidim/meetings/version.rb +1 -1
- metadata +25 -20
- data/config/environment.rb +0 -0
data/config/locales/pt.yml
CHANGED
@@ -251,10 +251,8 @@ pt:
|
|
251
251
|
select_user: Selecione o participante
|
252
252
|
index:
|
253
253
|
filter:
|
254
|
-
accepted: Aceite
|
255
254
|
all: Todos
|
256
|
-
|
257
|
-
sent: Enviados
|
255
|
+
sent: Enviado
|
258
256
|
filter_by: Filtrar por
|
259
257
|
invite_attendee: Convidar participante
|
260
258
|
invites: Convites
|
@@ -476,7 +474,6 @@ pt:
|
|
476
474
|
contributions: Contagem de contribuições
|
477
475
|
date: Data
|
478
476
|
edit_meeting: Editar reunião
|
479
|
-
going: Inscreveu-se para esta reunião
|
480
477
|
leave: Cancele o seu registo
|
481
478
|
leave_confirmation: Tem a certeza que quer cancelar o seu registo para esta reunião?
|
482
479
|
link_available_soon: Ligação disponível em breve
|
data/config/locales/ro-RO.yml
CHANGED
@@ -226,7 +226,7 @@ ro:
|
|
226
226
|
few: 'Întâlnirea nu poate fi eliminată deoarece are %{count} propuneri asociate:'
|
227
227
|
other: 'Întâlnirea nu poate fi eliminată deoarece are %{count} propuneri asociate acestuia:'
|
228
228
|
manage_poll: Gestionare sondaj
|
229
|
-
new:
|
229
|
+
new: Întâlnire nouă
|
230
230
|
preview: Previzualizare
|
231
231
|
registrations: Înregistrări
|
232
232
|
title: Acțiuni
|
@@ -284,9 +284,7 @@ ro:
|
|
284
284
|
select_user: Selecteză un participant
|
285
285
|
index:
|
286
286
|
filter:
|
287
|
-
accepted: Acceptat
|
288
287
|
all: Toate
|
289
|
-
rejected: Respins
|
290
288
|
sent: Trimis
|
291
289
|
filter_by: Filtrare după
|
292
290
|
invite_attendee: Invită participantul
|
@@ -541,7 +539,6 @@ ro:
|
|
541
539
|
contributions: Număr de contribuții
|
542
540
|
date: Data
|
543
541
|
edit_meeting: Editați ședința
|
544
|
-
going: Te-ai înregistrat pentru această întâlnire
|
545
542
|
leave: Anulează înregistrarea
|
546
543
|
leave_confirmation: Sigur dorești să anulezi înregistrarea la această întâlnire?
|
547
544
|
link_available_soon: Link disponibil în curând
|
@@ -658,7 +655,7 @@ ro:
|
|
658
655
|
see_all: Afișează toate întâlnirile (%{count})
|
659
656
|
upcoming_meetings: Întâlniri viitoare
|
660
657
|
upcoming_meeting_for_card:
|
661
|
-
upcoming_meeting:
|
658
|
+
upcoming_meeting: Şedinţa viitoare
|
662
659
|
resource_links:
|
663
660
|
meetings_through_proposals:
|
664
661
|
meeting_result: 'Rezultate asociate:'
|
data/config/locales/ru.yml
CHANGED
@@ -148,7 +148,6 @@ ru:
|
|
148
148
|
confirm_destroy: Вы действительно хотите удалить эту встречу?
|
149
149
|
destroy: Удалить
|
150
150
|
edit: Редактировать
|
151
|
-
new: Новая встреча
|
152
151
|
preview: Предпросмотр
|
153
152
|
registrations: Регистрации
|
154
153
|
title: Действия
|
@@ -204,10 +203,7 @@ ru:
|
|
204
203
|
select_user: Выберите участника
|
205
204
|
index:
|
206
205
|
filter:
|
207
|
-
|
208
|
-
all: Все
|
209
|
-
rejected: Отклоненные
|
210
|
-
sent: Отправленные
|
206
|
+
sent: Отправлено
|
211
207
|
filter_by: 'Отобрать по признаку:'
|
212
208
|
invite_attendee: Пригласить участника
|
213
209
|
invites: Приглашения
|
@@ -280,9 +276,6 @@ ru:
|
|
280
276
|
value_types:
|
281
277
|
organizer_presenter:
|
282
278
|
not_found: 'Организатор не найден в базе данных (ID: %{id})'
|
283
|
-
application_helper:
|
284
|
-
filter_scope_values:
|
285
|
-
all: Все
|
286
279
|
calendar_modal:
|
287
280
|
calendar_url: Ссылка на календарь
|
288
281
|
close_window: Закрыть окно
|
@@ -328,6 +321,7 @@ ru:
|
|
328
321
|
attendees: Количество участников
|
329
322
|
close_meeting: Закрыть встречу
|
330
323
|
contributions: Количество внесенных предложений
|
324
|
+
date: Дата
|
331
325
|
meeting_minutes: Протокол встречи
|
332
326
|
no_slots_available: Не осталось мест
|
333
327
|
organizations: Участвующие организации
|
data/config/locales/sk.yml
CHANGED
@@ -150,7 +150,6 @@ sk:
|
|
150
150
|
confirm_destroy: Naozaj chcete túto schôdzku vymazať?
|
151
151
|
destroy: Odstrániť
|
152
152
|
edit: Upraviť
|
153
|
-
new: Nové stretnutie
|
154
153
|
preview: Náhľad
|
155
154
|
registrations: Registrácia
|
156
155
|
title: Akcia
|
@@ -206,9 +205,6 @@ sk:
|
|
206
205
|
select_user: Vyberte používateľa
|
207
206
|
index:
|
208
207
|
filter:
|
209
|
-
accepted: Prijal
|
210
|
-
all: Všetko
|
211
|
-
rejected: Odmietnuté
|
212
208
|
sent: Odoslaná
|
213
209
|
filter_by: Filtrovať podľa
|
214
210
|
invite_attendee: Pozvať účastníka
|
@@ -291,9 +287,6 @@ sk:
|
|
291
287
|
value_types:
|
292
288
|
organizer_presenter:
|
293
289
|
not_found: 'Organizátor nebol nájdený v databáze (ID:%{id})'
|
294
|
-
application_helper:
|
295
|
-
filter_scope_values:
|
296
|
-
all: Všetko
|
297
290
|
calendar_modal:
|
298
291
|
calendar_url: URL kalendára
|
299
292
|
close_window: Zatvorte okno
|
@@ -343,6 +336,7 @@ sk:
|
|
343
336
|
back: Späť na zoznam
|
344
337
|
close_meeting: Zatvorte schôdzku
|
345
338
|
contributions: Počet príspevkov
|
339
|
+
date: dátum
|
346
340
|
meeting_minutes: Zápisnica z porady
|
347
341
|
no_slots_available: Žiadne sloty nie sú k dispozícii
|
348
342
|
organizations: Účastnícke organizácie
|
@@ -406,7 +400,7 @@ sk:
|
|
406
400
|
see_all: Zobraziť všetky (%{count})
|
407
401
|
upcoming_meetings: Nadchádzajúce schôdzky
|
408
402
|
upcoming_meeting_for_card:
|
409
|
-
upcoming_meeting: Nadchádzajúce
|
403
|
+
upcoming_meeting: Nadchádzajúce stretnutie
|
410
404
|
resource_links:
|
411
405
|
meetings_through_proposals:
|
412
406
|
meeting_result: 'Súvisiace výsledky:'
|
data/config/locales/sl.yml
CHANGED
@@ -0,0 +1 @@
|
|
1
|
+
sq:
|
data/config/locales/sv.yml
CHANGED
@@ -32,6 +32,7 @@ sv:
|
|
32
32
|
registration_terms: Registreringsvillkor
|
33
33
|
registration_url: URL för anmälan
|
34
34
|
registrations_enabled: Registreringar aktiverade
|
35
|
+
start_time: Starttid
|
35
36
|
title: Titel
|
36
37
|
transparent: Transparent
|
37
38
|
type_of_meeting: Typ
|
@@ -39,6 +40,7 @@ sv:
|
|
39
40
|
title: Titel
|
40
41
|
visible: Synlig
|
41
42
|
meeting_agenda_items:
|
43
|
+
description: Beskrivning
|
42
44
|
duration: Varaktighet
|
43
45
|
title: Titel
|
44
46
|
meeting_registration_invite:
|
@@ -272,9 +274,7 @@ sv:
|
|
272
274
|
select_user: Välj deltagare
|
273
275
|
index:
|
274
276
|
filter:
|
275
|
-
|
276
|
-
all: Allt
|
277
|
-
rejected: Avvisad
|
277
|
+
all: Alla
|
278
278
|
sent: Skickat
|
279
279
|
filter_by: Filtrera efter
|
280
280
|
invite_attendee: Bjud in deltagare
|
@@ -387,7 +387,7 @@ sv:
|
|
387
387
|
filter_meeting_space_values:
|
388
388
|
all: Alla
|
389
389
|
filter_scope_values:
|
390
|
-
all:
|
390
|
+
all: Alla
|
391
391
|
calendar_modal:
|
392
392
|
calendar_url: Kalender-URL
|
393
393
|
close_window: Stäng fönster
|
@@ -470,6 +470,7 @@ sv:
|
|
470
470
|
all: Alla
|
471
471
|
official: Officiell
|
472
472
|
participants: Deltagare
|
473
|
+
user_groups: Grupper
|
473
474
|
scope: Omfång
|
474
475
|
search: Sök
|
475
476
|
type: Typ
|
@@ -521,7 +522,6 @@ sv:
|
|
521
522
|
contributions: Antal bidrag
|
522
523
|
date: Datum
|
523
524
|
edit_meeting: Redigera möte
|
524
|
-
going: Du har anmält dig för detta möte
|
525
525
|
leave: Avbryt din registrering
|
526
526
|
leave_confirmation: Är du säker på att du vill avboka från detta möte?
|
527
527
|
link_available_soon: Länk snart tillgänglig
|
@@ -0,0 +1 @@
|
|
1
|
+
th:
|
data/config/locales/tr-TR.yml
CHANGED
@@ -220,10 +220,8 @@ tr:
|
|
220
220
|
select_user: Katılımcı seç
|
221
221
|
index:
|
222
222
|
filter:
|
223
|
-
accepted: Kabul edilmiş
|
224
223
|
all: Tümü
|
225
|
-
|
226
|
-
sent: Gönderildi
|
224
|
+
sent: Gönderilen
|
227
225
|
filter_by: Tarafından filtre
|
228
226
|
invite_attendee: Katılımcı davet et
|
229
227
|
invites: Davetler
|
data/config/locales/uk.yml
CHANGED
@@ -129,7 +129,6 @@ uk:
|
|
129
129
|
confirm_destroy: Ви впевнені, що хочете видалити цю зустріч?
|
130
130
|
destroy: Видалити
|
131
131
|
edit: Редагувати
|
132
|
-
new: Додати зустріч
|
133
132
|
preview: Попередній перегляд
|
134
133
|
registrations: Реєстрації
|
135
134
|
title: Дії
|
@@ -184,10 +183,7 @@ uk:
|
|
184
183
|
select_user: Оберіть учасника
|
185
184
|
index:
|
186
185
|
filter:
|
187
|
-
|
188
|
-
all: Усі
|
189
|
-
rejected: Відхилені
|
190
|
-
sent: Надіслані
|
186
|
+
sent: Надіслано
|
191
187
|
filter_by: 'Відібрати за ознакою:'
|
192
188
|
invite_attendee: Запросити учасника
|
193
189
|
invites: Запрошення
|
@@ -258,9 +254,6 @@ uk:
|
|
258
254
|
value_types:
|
259
255
|
organizer_presenter:
|
260
256
|
not_found: 'Цього організатора не знайдено в базі даних (ID: %{id})'
|
261
|
-
application_helper:
|
262
|
-
filter_scope_values:
|
263
|
-
all: Усі
|
264
257
|
content_blocks:
|
265
258
|
upcoming_meetings:
|
266
259
|
upcoming_meetings: Прийдешні зустрічі
|
@@ -296,6 +289,7 @@ uk:
|
|
296
289
|
attendees: Кількість учасників
|
297
290
|
close_meeting: Закрити зустріч
|
298
291
|
contributions: Кількість внесених пропозицій
|
292
|
+
date: Дата
|
299
293
|
meeting_minutes: Протокол зустрічі
|
300
294
|
no_slots_available: Не залишилось місць
|
301
295
|
organizations: Організації, що приймають участь
|
data/config/locales/zh-CN.yml
CHANGED
data/config/locales/zh-TW.yml
CHANGED
@@ -276,9 +276,7 @@ zh-TW:
|
|
276
276
|
select_user: 選擇參與者
|
277
277
|
index:
|
278
278
|
filter:
|
279
|
-
accepted: 已接受
|
280
279
|
all: 全部
|
281
|
-
rejected: 已拒絕
|
282
280
|
sent: 傳送
|
283
281
|
filter_by: 篩選條件
|
284
282
|
invite_attendee: 邀請的與會者
|
@@ -314,7 +312,6 @@ zh-TW:
|
|
314
312
|
select_a_meeting_type: 請選擇一種會議類型。
|
315
313
|
select_a_registration_type: 請選擇一種註冊類型
|
316
314
|
select_an_iframe_access_level: 請選擇一個 iframe 存取級別
|
317
|
-
show_embedded_iframe_help: '只有以下域名的部分服務允許將會議或直播活動嵌入: %{domains}'
|
318
315
|
index:
|
319
316
|
title: 會議
|
320
317
|
new:
|
@@ -510,7 +507,6 @@ zh-TW:
|
|
510
507
|
select_a_meeting_type: 請選擇一種會議類型。
|
511
508
|
select_a_registration_type: 請選擇一種註冊類型
|
512
509
|
select_an_iframe_access_level: 請選擇一個 iframe 存取級別
|
513
|
-
show_embedded_iframe_help: '只有以下域名的部分服務允許將會議或直播活動嵌入: %{domains}'
|
514
510
|
index:
|
515
511
|
click_here: 查看所有會議
|
516
512
|
new_meeting: 新會議
|
@@ -536,7 +532,6 @@ zh-TW:
|
|
536
532
|
contributions: 貢獻次數
|
537
533
|
date: 日期
|
538
534
|
edit_meeting: 編輯會議
|
539
|
-
going: 您已經註冊參加此會議
|
540
535
|
leave: 取消您的註冊
|
541
536
|
leave_confirmation: 您確定要取消此次會議的註冊嗎?
|
542
537
|
link_available_soon: 連結即將推出
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
$LOAD_PATH.push File.expand_path("lib", __dir__)
|
4
|
+
|
5
|
+
# Maintain your gem's version:
|
6
|
+
require "decidim/meetings/version"
|
7
|
+
|
8
|
+
# Describe your gem and declare its dependencies:
|
9
|
+
Gem::Specification.new do |s|
|
10
|
+
s.version = Decidim::Meetings.version
|
11
|
+
s.authors = ["Josep Jaume Rey Peroy", "Marc Riera Casals", "Oriol Gual Oliva"]
|
12
|
+
s.email = ["josepjaume@gmail.com", "mrc2407@gmail.com", "oriolgual@gmail.com"]
|
13
|
+
s.license = "AGPL-3.0"
|
14
|
+
s.homepage = "https://github.com/decidim/decidim"
|
15
|
+
s.required_ruby_version = "~> 3.0.0"
|
16
|
+
|
17
|
+
s.name = "decidim-meetings"
|
18
|
+
s.summary = "Decidim meetings module"
|
19
|
+
s.description = "A meetings component for decidim's participatory spaces."
|
20
|
+
|
21
|
+
s.files = Dir.chdir(__dir__) do
|
22
|
+
`git ls-files -z`.split("\x0").select do |f|
|
23
|
+
(File.expand_path(f) == __FILE__) ||
|
24
|
+
f.start_with?(*%w(app/ config/ db/ lib/ Rakefile README.md))
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
s.add_dependency "decidim-core", Decidim::Meetings.version
|
29
|
+
s.add_dependency "decidim-forms", Decidim::Meetings.version
|
30
|
+
s.add_dependency "icalendar", "~> 2.5"
|
31
|
+
|
32
|
+
s.add_development_dependency "decidim-admin", Decidim::Meetings.version
|
33
|
+
s.add_development_dependency "decidim-assemblies", Decidim::Meetings.version
|
34
|
+
s.add_development_dependency "decidim-dev", Decidim::Meetings.version
|
35
|
+
s.add_development_dependency "decidim-participatory_processes", Decidim::Meetings.version
|
36
|
+
end
|
@@ -83,7 +83,7 @@ Decidim.register_component(:meetings) do |component|
|
|
83
83
|
settings.attribute :announcement, type: :text, translated: true, editor: true
|
84
84
|
settings.attribute :default_registration_terms, type: :text, translated: true, editor: true
|
85
85
|
settings.attribute :comments_enabled, type: :boolean, default: true
|
86
|
-
settings.attribute :comments_max_length, type: :integer, required:
|
86
|
+
settings.attribute :comments_max_length, type: :integer, required: true
|
87
87
|
settings.attribute :registration_code_enabled, type: :boolean, default: true
|
88
88
|
settings.attribute :resources_permissions_enabled, type: :boolean, default: true
|
89
89
|
settings.attribute :enable_pads_creation, type: :boolean, default: false
|
@@ -57,7 +57,7 @@ module Decidim
|
|
57
57
|
# meeting for the given participatory space.
|
58
58
|
Decidim.view_hooks.register(:upcoming_meeting_for_card, priority: Decidim::ViewHooks::LOW_PRIORITY) do |view_context|
|
59
59
|
published_components = Decidim::Component.where(participatory_space: view_context.current_participatory_space).published
|
60
|
-
upcoming_meeting = Decidim::Meetings::Meeting.where(component: published_components).published.upcoming.order(:start_time, :end_time).first
|
60
|
+
upcoming_meeting = Decidim::Meetings::Meeting.where(component: published_components).not_hidden.except_withdrawn.published.upcoming.order(:start_time, :end_time).first
|
61
61
|
|
62
62
|
next unless upcoming_meeting
|
63
63
|
|
@@ -71,8 +71,9 @@ module Decidim
|
|
71
71
|
|
72
72
|
Decidim.view_hooks.register(:conference_venues, priority: Decidim::ViewHooks::HIGH_PRIORITY) do |view_context|
|
73
73
|
published_components = Decidim::Component.where(participatory_space: view_context.current_participatory_space).published
|
74
|
-
meetings = Decidim::Meetings::Meeting.where(component: published_components).group_by(&:address)
|
75
|
-
meetings_geocoded = Decidim::Meetings::Meeting.where(component: published_components).geocoded
|
74
|
+
meetings = Decidim::Meetings::Meeting.visible.not_hidden.published.where(component: published_components).group_by(&:address)
|
75
|
+
meetings_geocoded = Decidim::Meetings::Meeting.visible.not_hidden.published.where(component: published_components).geocoded
|
76
|
+
|
76
77
|
next unless meetings.any?
|
77
78
|
|
78
79
|
view_context.render(
|
@@ -32,8 +32,8 @@ module Decidim
|
|
32
32
|
component: { id: component.id },
|
33
33
|
title: meeting.title,
|
34
34
|
description: meeting.description,
|
35
|
-
start_time: meeting.start_time
|
36
|
-
end_time: meeting.end_time
|
35
|
+
start_time: meeting.start_time,
|
36
|
+
end_time: meeting.end_time,
|
37
37
|
attendees: meeting.attendees_count.to_i,
|
38
38
|
contributions: meeting.contributions_count.to_i,
|
39
39
|
organizations: meeting.attending_organizations,
|
@@ -6,9 +6,12 @@ require "decidim/participatory_processes/test/factories"
|
|
6
6
|
|
7
7
|
FactoryBot.define do
|
8
8
|
factory :meeting_component, parent: :component do
|
9
|
-
|
9
|
+
transient do
|
10
|
+
skip_injection { false }
|
11
|
+
end
|
12
|
+
name { generate_component_name(participatory_space.organization.available_locales, :meetings, skip_injection: skip_injection) }
|
10
13
|
manifest_name { :meetings }
|
11
|
-
participatory_space { create(:participatory_process, :with_steps, organization: organization) }
|
14
|
+
participatory_space { create(:participatory_process, :with_steps, organization: organization, skip_injection: skip_injection) }
|
12
15
|
|
13
16
|
trait :with_creation_enabled do
|
14
17
|
settings do
|
@@ -20,10 +23,14 @@ FactoryBot.define do
|
|
20
23
|
end
|
21
24
|
|
22
25
|
factory :meeting, class: "Decidim::Meetings::Meeting" do
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
26
|
+
transient do
|
27
|
+
skip_injection { false }
|
28
|
+
end
|
29
|
+
|
30
|
+
title { generate_localized_title(:meeting_title, skip_injection: skip_injection) }
|
31
|
+
description { generate_localized_description(:meeting_description, skip_injection: skip_injection) }
|
32
|
+
location { generate_localized_description(:meeting_location, skip_injection: skip_injection) }
|
33
|
+
location_hints { generate_localized_description(:meeting_location_hints, skip_injection: skip_injection) }
|
27
34
|
address { Faker::Lorem.sentence(word_count: 3) }
|
28
35
|
latitude { Faker::Address.latitude }
|
29
36
|
longitude { Faker::Address.longitude }
|
@@ -33,10 +40,10 @@ FactoryBot.define do
|
|
33
40
|
transparent { true }
|
34
41
|
questionnaire { build(:questionnaire) }
|
35
42
|
registration_form_enabled { true }
|
36
|
-
registration_terms {
|
43
|
+
registration_terms { generate_localized_description(:meeting_registration_terms, skip_injection: skip_injection) }
|
37
44
|
registration_type { :on_this_platform }
|
38
45
|
type_of_meeting { :in_person }
|
39
|
-
component { build(:
|
46
|
+
component { build(:meeting_component) }
|
40
47
|
iframe_access_level { :all }
|
41
48
|
iframe_embed_type { :none }
|
42
49
|
|
@@ -71,7 +78,7 @@ FactoryBot.define do
|
|
71
78
|
end
|
72
79
|
|
73
80
|
trait :not_official do
|
74
|
-
author { create(:user, organization: component.organization) if component }
|
81
|
+
author { create(:user, organization: component.organization, skip_injection: skip_injection) if component }
|
75
82
|
end
|
76
83
|
|
77
84
|
trait :with_services do
|
@@ -82,7 +89,7 @@ FactoryBot.define do
|
|
82
89
|
end
|
83
90
|
|
84
91
|
after(:build) do |meeting, evaluator|
|
85
|
-
meeting.services = evaluator.services || build_list(:service, 2, meeting: meeting)
|
92
|
+
meeting.services = evaluator.services || build_list(:service, 2, meeting: meeting, skip_injection: evaluator.skip_injection)
|
86
93
|
end
|
87
94
|
end
|
88
95
|
|
@@ -90,15 +97,15 @@ FactoryBot.define do
|
|
90
97
|
|
91
98
|
trait :user_group_author do
|
92
99
|
author do
|
93
|
-
create(:user, organization: component.organization) if component
|
100
|
+
create(:user, organization: component.organization, skip_injection: skip_injection) if component
|
94
101
|
end
|
95
102
|
user_group do
|
96
|
-
create(:user_group, :verified, organization: component.organization, users: [author]) if component
|
103
|
+
create(:user_group, :verified, organization: component.organization, users: [author], skip_injection: skip_injection) if component
|
97
104
|
end
|
98
105
|
end
|
99
106
|
|
100
107
|
trait :closed do
|
101
|
-
closing_report { generate_localized_title }
|
108
|
+
closing_report { generate_localized_title(:meeting_closing_report, skip_injection: skip_injection) }
|
102
109
|
attendees_count { rand(50) }
|
103
110
|
contributions_count { rand(50) }
|
104
111
|
attending_organizations { Array.new(3) { Faker::TvShows::GameOfThrones.house }.join(", ") }
|
@@ -117,7 +124,7 @@ FactoryBot.define do
|
|
117
124
|
registrations_enabled { true }
|
118
125
|
available_slots { 10 }
|
119
126
|
reserved_slots { 4 }
|
120
|
-
registration_terms { generate_localized_title }
|
127
|
+
registration_terms { generate_localized_title(:meeting_registration_terms, skip_injection: skip_injection) }
|
121
128
|
end
|
122
129
|
|
123
130
|
trait :past do
|
@@ -170,41 +177,53 @@ FactoryBot.define do
|
|
170
177
|
end
|
171
178
|
|
172
179
|
factory :registration, class: "Decidim::Meetings::Registration" do
|
180
|
+
transient do
|
181
|
+
skip_injection { false }
|
182
|
+
end
|
173
183
|
meeting
|
174
184
|
user
|
175
185
|
end
|
176
186
|
|
177
187
|
factory :agenda, class: "Decidim::Meetings::Agenda" do
|
188
|
+
transient do
|
189
|
+
skip_injection { false }
|
190
|
+
end
|
178
191
|
meeting
|
179
|
-
title { generate_localized_title }
|
192
|
+
title { generate_localized_title(:meeting_agenda_title, skip_injection: skip_injection) }
|
180
193
|
visible { true }
|
181
194
|
|
182
195
|
trait :with_agenda_items do
|
183
|
-
after(:create) do |agenda,
|
184
|
-
create_list(:agenda_item, 2, :with_children, agenda: agenda)
|
196
|
+
after(:create) do |agenda, evaluator|
|
197
|
+
create_list(:agenda_item, 2, :with_children, agenda: agenda, skip_injection: evaluator.skip_injection)
|
185
198
|
end
|
186
199
|
end
|
187
200
|
end
|
188
201
|
|
189
202
|
factory :agenda_item, class: "Decidim::Meetings::AgendaItem" do
|
203
|
+
transient do
|
204
|
+
skip_injection { false }
|
205
|
+
end
|
190
206
|
agenda
|
191
|
-
title { generate_localized_title }
|
192
|
-
description {
|
207
|
+
title { generate_localized_title(:meeting_agenda_item_title, skip_injection: skip_injection) }
|
208
|
+
description { generate_localized_description(:meeting_agenda_item_description, skip_injection: skip_injection) }
|
193
209
|
duration { 15 }
|
194
210
|
position { 0 }
|
195
211
|
|
196
212
|
trait :with_parent do
|
197
|
-
parent { create(:agenda_item, agenda: agenda) }
|
213
|
+
parent { create(:agenda_item, agenda: agenda, skip_injection: skip_injection) }
|
198
214
|
end
|
199
215
|
|
200
216
|
trait :with_children do
|
201
217
|
after(:create) do |agenda_item, evaluator|
|
202
|
-
create_list(:agenda_item, 2, parent: agenda_item, agenda: evaluator.agenda)
|
218
|
+
create_list(:agenda_item, 2, parent: agenda_item, agenda: evaluator.agenda, skip_injection: evaluator.skip_injection)
|
203
219
|
end
|
204
220
|
end
|
205
221
|
end
|
206
222
|
|
207
223
|
factory :invite, class: "Decidim::Meetings::Invite" do
|
224
|
+
transient do
|
225
|
+
skip_injection { false }
|
226
|
+
end
|
208
227
|
meeting
|
209
228
|
user
|
210
229
|
sent_at { 1.day.ago }
|
@@ -221,31 +240,41 @@ FactoryBot.define do
|
|
221
240
|
end
|
222
241
|
|
223
242
|
factory :service, class: "Decidim::Meetings::Service" do
|
243
|
+
transient do
|
244
|
+
skip_injection { false }
|
245
|
+
end
|
224
246
|
meeting
|
225
|
-
title { generate_localized_title }
|
226
|
-
description {
|
247
|
+
title { generate_localized_title(:meeting_service_title, skip_injection: skip_injection) }
|
248
|
+
description { generate_localized_description(:meeting_service_description, skip_injection: skip_injection) }
|
227
249
|
end
|
228
250
|
|
229
251
|
factory :poll, class: "Decidim::Meetings::Poll" do
|
252
|
+
transient do
|
253
|
+
skip_injection { false }
|
254
|
+
end
|
230
255
|
meeting
|
231
256
|
end
|
232
257
|
|
233
258
|
factory :meetings_poll_questionnaire, class: "Decidim::Meetings::Questionnaire" do
|
234
|
-
|
259
|
+
transient do
|
260
|
+
skip_injection { false }
|
261
|
+
end
|
262
|
+
questionnaire_for { build(:poll, skip_injection: skip_injection) }
|
235
263
|
end
|
236
264
|
|
237
265
|
factory :meetings_poll_question, class: "Decidim::Meetings::Question" do
|
238
266
|
transient do
|
267
|
+
skip_injection { false }
|
239
268
|
options { [] }
|
240
269
|
end
|
241
270
|
|
242
|
-
body { generate_localized_title }
|
271
|
+
body { generate_localized_title(:meeting_poll_question_body, skip_injection: skip_injection) }
|
243
272
|
position { 0 }
|
244
273
|
status { 0 }
|
245
274
|
question_type { Decidim::Meetings::Question::QUESTION_TYPES.first }
|
246
275
|
questionnaire factory: :meetings_poll_questionnaire
|
247
276
|
answer_options do
|
248
|
-
Array.new(3).collect { build(:meetings_poll_answer_option, question: nil) }
|
277
|
+
Array.new(3).collect { build(:meetings_poll_answer_option, question: nil, skip_injection: skip_injection) }
|
249
278
|
end
|
250
279
|
|
251
280
|
trait :unpublished do
|
@@ -262,18 +291,27 @@ FactoryBot.define do
|
|
262
291
|
end
|
263
292
|
|
264
293
|
factory :meetings_poll_answer, class: "Decidim::Meetings::Answer" do
|
294
|
+
transient do
|
295
|
+
skip_injection { false }
|
296
|
+
end
|
265
297
|
questionnaire factory: :meetings_poll_questionnaire
|
266
|
-
question { create(:meetings_poll_question, questionnaire: questionnaire) }
|
267
|
-
user { create(:user, organization: questionnaire.questionnaire_for.organization) }
|
298
|
+
question { create(:meetings_poll_question, questionnaire: questionnaire, skip_injection: skip_injection) }
|
299
|
+
user { create(:user, organization: questionnaire.questionnaire_for.organization, skip_injection: skip_injection) }
|
268
300
|
end
|
269
301
|
|
270
302
|
factory :meetings_poll_answer_option, class: "Decidim::Meetings::AnswerOption" do
|
271
|
-
|
303
|
+
transient do
|
304
|
+
skip_injection { false }
|
305
|
+
end
|
306
|
+
question { create(:meetings_poll_question, skip_injection: skip_injection) }
|
272
307
|
body { generate_localized_title }
|
273
308
|
end
|
274
309
|
|
275
310
|
factory :meetings_poll_answer_choice, class: "Decidim::Meetings::AnswerChoice" do
|
311
|
+
transient do
|
312
|
+
skip_injection { false }
|
313
|
+
end
|
276
314
|
answer factory: :meetings_poll_answer
|
277
|
-
answer_option { create(:meetings_poll_answer_option, question: answer.question) }
|
315
|
+
answer_option { create(:meetings_poll_answer_option, question: answer.question, skip_injection: skip_injection) }
|
278
316
|
end
|
279
317
|
end
|
@@ -17,7 +17,7 @@ module Decidim
|
|
17
17
|
@answers.each_with_index.inject({}) do |serialized, (answer, idx)|
|
18
18
|
serialized.update(
|
19
19
|
answer_translated_attribute_name(:id) => [answer.id, answer.user.id].join("_"),
|
20
|
-
answer_translated_attribute_name(:created_at) => answer.created_at
|
20
|
+
answer_translated_attribute_name(:created_at) => answer.created_at,
|
21
21
|
answer_translated_attribute_name(:user_status) => answer_translated_attribute_name(answer.decidim_user_id.present? ? "registered" : "unregistered"),
|
22
22
|
"#{idx + 1}. #{translated_attribute(answer.question.body)}" => normalize_body(answer)
|
23
23
|
)
|