decidim-meetings 0.11.2 → 0.12.0.pre
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/config/admin/decidim_meetings_manifest.js +2 -0
- data/app/assets/javascripts/decidim/meetings/admin/agendas.js.es6 +158 -0
- data/app/assets/javascripts/decidim/meetings/admin/meetings_form.js.es6 +19 -0
- data/app/cells/decidim/meetings/join_meeting_button/registration_confirm.erb +15 -0
- data/app/cells/decidim/meetings/join_meeting_button/show.erb +27 -0
- data/app/cells/decidim/meetings/join_meeting_button_cell.rb +37 -0
- data/app/cells/decidim/meetings/meeting_cell.rb +2 -13
- data/app/cells/decidim/meetings/meeting_list_item_cell.rb +8 -0
- data/app/cells/decidim/meetings/meeting_m/address.erb +14 -0
- data/app/cells/decidim/meetings/meeting_m/data.erb +2 -0
- data/app/cells/decidim/meetings/meeting_m/date.erb +8 -0
- data/app/cells/decidim/meetings/meeting_m/footer.erb +9 -0
- data/app/cells/decidim/meetings/meeting_m/multiple_dates.erb +17 -0
- data/app/cells/decidim/meetings/meeting_m/single_date.erb +9 -0
- data/app/cells/decidim/meetings/meeting_m/tags.erb +1 -0
- data/app/cells/decidim/meetings/meeting_m_cell.rb +37 -4
- data/app/commands/decidim/meetings/admin/copy_meeting.rb +3 -0
- data/app/commands/decidim/meetings/admin/create_agenda.rb +93 -0
- data/app/commands/decidim/meetings/admin/create_meeting.rb +3 -0
- data/app/commands/decidim/meetings/admin/create_minutes.rb +55 -0
- data/app/commands/decidim/meetings/admin/update_agenda.rb +90 -0
- data/app/commands/decidim/meetings/admin/update_meeting.rb +4 -1
- data/app/commands/decidim/meetings/admin/update_minutes.rb +62 -0
- data/app/controllers/decidim/meetings/admin/agenda_controller.rb +75 -0
- data/app/controllers/decidim/meetings/admin/attachments_controller.rb +1 -1
- data/app/controllers/decidim/meetings/admin/invites_controller.rb +4 -0
- data/app/controllers/decidim/meetings/admin/meeting_closes_controller.rb +4 -0
- data/app/controllers/decidim/meetings/admin/meeting_copies_controller.rb +4 -0
- data/app/controllers/decidim/meetings/admin/meetings_controller.rb +10 -0
- data/app/controllers/decidim/meetings/admin/minutes_controller.rb +69 -0
- data/app/controllers/decidim/meetings/admin/registrations_controller.rb +6 -0
- data/app/controllers/decidim/meetings/meetings_controller.rb +7 -1
- data/app/controllers/decidim/meetings/registrations_controller.rb +12 -6
- data/app/forms/decidim/meetings/admin/meeting_agenda_form.rb +54 -0
- data/app/forms/decidim/meetings/admin/meeting_agenda_items_form.rb +33 -0
- data/app/forms/decidim/meetings/admin/meeting_copy_form.rb +8 -0
- data/app/forms/decidim/meetings/admin/meeting_form.rb +8 -0
- data/app/forms/decidim/meetings/admin/meeting_registration_invite_form.rb +2 -1
- data/app/forms/decidim/meetings/admin/minutes_form.rb +20 -0
- data/app/helpers/decidim/meetings/admin/application_helper.rb +13 -0
- data/{lib/decidim/meetings/view_model.rb → app/helpers/decidim/meetings/meeting_cells_helper.rb} +7 -1
- data/app/helpers/decidim/meetings/meetings_helper.rb +67 -0
- data/app/models/decidim/meetings/agenda.rb +19 -0
- data/app/models/decidim/meetings/agenda_item.rb +35 -0
- data/app/models/decidim/meetings/meeting.rb +52 -3
- data/app/models/decidim/meetings/minutes.rb +19 -0
- data/app/permissions/decidim/meetings/admin/permissions.rb +69 -0
- data/app/permissions/decidim/meetings/permissions.rb +41 -0
- data/app/presenters/decidim/meetings/admin_log/meeting_presenter.rb +4 -1
- data/app/presenters/decidim/meetings/admin_log/minutes_presenter.rb +42 -0
- data/app/presenters/decidim/meetings/admin_log/value_types/organizer_presenter.rb +69 -0
- data/app/types/decidim/meetings/meeting_type.rb +4 -4
- data/app/views/decidim/meetings/admin/agenda/_agenda_item.html.erb +50 -0
- data/app/views/decidim/meetings/admin/agenda/_agenda_item_child.html.erb +26 -0
- data/app/views/decidim/meetings/admin/agenda/_agenda_item_fields.html.erb +19 -0
- data/app/views/decidim/meetings/admin/agenda/_form.html.erb +66 -0
- data/app/views/decidim/meetings/admin/agenda/edit.html.erb +7 -0
- data/app/views/decidim/meetings/admin/agenda/new.html.erb +8 -0
- data/app/views/decidim/meetings/admin/agenda/show.html.erb +0 -0
- data/app/views/decidim/meetings/admin/meeting_copies/_form.html.erb +15 -1
- data/app/views/decidim/meetings/admin/meetings/_form.html.erb +15 -0
- data/app/views/decidim/meetings/admin/meetings/index.html.erb +9 -7
- data/app/views/decidim/meetings/admin/minutes/_form.html.erb +23 -0
- data/app/views/decidim/meetings/admin/minutes/edit.html.erb +7 -0
- data/app/views/decidim/meetings/admin/minutes/new.html.erb +7 -0
- data/app/views/decidim/meetings/admin/registrations/_form.html.erb +11 -9
- data/app/views/decidim/meetings/meetings/_linked_meetings.html.erb +0 -1
- data/app/views/decidim/meetings/meetings/_meeting_agenda.html.erb +31 -0
- data/app/views/decidim/meetings/meetings/_meeting_minutes.html.erb +48 -0
- data/app/views/decidim/meetings/meetings/_meetings.html.erb +1 -1
- data/app/views/decidim/meetings/meetings/show.html.erb +23 -12
- data/app/views/decidim/participatory_spaces/_meeting.html.erb +1 -1
- data/app/views/decidim/participatory_spaces/_upcoming_meeting_for_card.html.erb +6 -0
- data/config/locales/ca.yml +106 -4
- data/config/locales/en.yml +106 -4
- data/config/locales/es.yml +106 -4
- data/config/locales/eu.yml +106 -4
- data/config/locales/fi.yml +106 -4
- data/config/locales/fr.yml +106 -4
- data/config/locales/gl.yml +106 -4
- data/config/locales/it.yml +106 -4
- data/config/locales/nl.yml +106 -4
- data/config/locales/pl.yml +112 -4
- data/config/locales/pt-BR.yml +106 -4
- data/config/locales/pt.yml +106 -4
- data/config/locales/ru.yml +97 -4
- data/config/locales/sv.yml +106 -4
- data/config/locales/uk.yml +112 -4
- data/db/migrate/20180403145218_add_meeting_types.rb +8 -0
- data/db/migrate/20180404075312_add_organizer_to_meetings.rb +7 -0
- data/db/migrate/20180406080619_create_meetings_minutes.rb +15 -0
- data/db/migrate/20180419131924_create_decidim_agendas.rb +13 -0
- data/db/migrate/20180419132104_create_decidim_agenda_items.rb +16 -0
- data/db/migrate/20180516102301_index_meetings_as_searchable_resources.rb +24 -0
- data/lib/decidim/meetings/admin_engine.rb +2 -0
- data/lib/decidim/meetings/component.rb +3 -2
- data/lib/decidim/meetings/engine.rb +16 -6
- data/lib/decidim/meetings/test/factories.rb +44 -0
- data/lib/decidim/meetings/version.rb +1 -1
- metadata +63 -21
- data/app/cells/decidim/meetings/meeting_m/header.erb +0 -5
- data/app/cells/decidim/meetings/meeting_m/show.erb +0 -21
- data/app/models/decidim/meetings/abilities/current_user_ability.rb +0 -43
- data/app/views/decidim/meetings/meetings/_registration_confirm.html.erb +0 -15
data/config/locales/uk.yml
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
uk:
|
2
2
|
activemodel:
|
3
3
|
attributes:
|
4
|
+
agenda:
|
5
|
+
description: Опис
|
6
|
+
duration: Тривалість
|
7
|
+
title: Заголовок
|
4
8
|
close_meeting:
|
5
9
|
attendees_count: Кількість учасників
|
6
10
|
attending_organizations: Перелік організацій, які брали участь
|
@@ -16,10 +20,48 @@ uk:
|
|
16
20
|
end_time: Час завершення
|
17
21
|
location: Розташування
|
18
22
|
location_hints: Як дістатися до цього місця
|
23
|
+
private_meeting: Приватна зустріч
|
19
24
|
registration_terms: Умови реєстрації
|
20
25
|
registrations_enabled: Реєстрацію відкрито
|
21
26
|
start_time: Час початку
|
22
27
|
title: Назва
|
28
|
+
transparent: Прозора
|
29
|
+
minutes:
|
30
|
+
audio_url: Веб-адреса аудіозапису
|
31
|
+
description: Опис
|
32
|
+
video_url: Веб-адреса відеозапису
|
33
|
+
visible: Видимий
|
34
|
+
errors:
|
35
|
+
models:
|
36
|
+
meeting_agenda:
|
37
|
+
attributes:
|
38
|
+
base:
|
39
|
+
too_many_minutes: Тривалість усіх питань перевищує тривалість зустрічі на %{count} хвилин
|
40
|
+
too_many_minutes_child: Тривалість вкладених питань перевищує тривалість загального питання порядку денного "%{parent_title}" на %{count} хвилин
|
41
|
+
models:
|
42
|
+
decidim/meetings/close_meeting_event: Зустріч закрито
|
43
|
+
decidim/meetings/create_meeting_event: Зустріч
|
44
|
+
decidim/meetings/meeting_registrations_enabled_event: Реєстрацію відкрито
|
45
|
+
decidim/meetings/meeting_registrations_over_percentage_event: Перевищено межу кількості зареєстрованих
|
46
|
+
decidim/meetings/upcoming_meeting_event: Прийдешня зустріч
|
47
|
+
decidim/meetings/update_meeting_event: Зустріч оновлено
|
48
|
+
activerecord:
|
49
|
+
models:
|
50
|
+
decidim/meetings/meeting:
|
51
|
+
one: Зустріч
|
52
|
+
few: Зустрічі
|
53
|
+
many: Зустрічей
|
54
|
+
other: Зустрічей
|
55
|
+
decidim/meetings/minutes:
|
56
|
+
one: Протокол
|
57
|
+
few: Протоколи
|
58
|
+
many: Протоколів
|
59
|
+
other: Протоколів
|
60
|
+
decidim/meetings/registration:
|
61
|
+
one: Зареєстрований
|
62
|
+
few: Зареєстрованих
|
63
|
+
many: Зареєстрованих
|
64
|
+
other: Зареєстрованих
|
23
65
|
decidim:
|
24
66
|
admin:
|
25
67
|
meeting_copies:
|
@@ -77,17 +119,49 @@ uk:
|
|
77
119
|
notification_title: Зустріч <a href="%{resource_path}">%{resource_title}</a> розпочнеться менш ніж за 48 годин.
|
78
120
|
meetings:
|
79
121
|
actions:
|
122
|
+
agenda: Порядок денний
|
80
123
|
attachment_collections: Теки
|
81
124
|
attachments: Вкладені файли
|
82
125
|
close: Закрити
|
83
126
|
confirm_destroy: Ви впевнені, що хочете видалити цю зустріч?
|
84
127
|
destroy: Видалити
|
85
128
|
edit: Редагувати
|
129
|
+
minutes: Протокол
|
86
130
|
new: Додати
|
87
131
|
preview: Попередній перегляд
|
88
132
|
registrations: Реєстрації
|
89
133
|
title: Дії
|
90
134
|
admin:
|
135
|
+
agenda:
|
136
|
+
agenda_item:
|
137
|
+
add_agenda_item_child: Створити вкладене питання для даного питання порядку денного
|
138
|
+
agenda_item: Питання порядку денного
|
139
|
+
agenda_item_children: Вкладені питання для даного питання порядку денного
|
140
|
+
down: Донизу
|
141
|
+
remove: Видалити
|
142
|
+
up: Догори
|
143
|
+
agenda_item_child:
|
144
|
+
agenda_item_child: Вкладене питання для даного питання порядку денного
|
145
|
+
down: Донизу
|
146
|
+
remove: Видалити
|
147
|
+
up: Догори
|
148
|
+
create:
|
149
|
+
invalid: При спробі створити цей порядок денний сталася помилка
|
150
|
+
success: Порядок денний успішно створено
|
151
|
+
edit:
|
152
|
+
title: Редагувати порядок денний
|
153
|
+
update: Оновити
|
154
|
+
form:
|
155
|
+
add_agenda_item: Додати питання порядку денного
|
156
|
+
agenda_items: Питання порядку денного
|
157
|
+
end_date: Дата закінчення
|
158
|
+
start_date: Дата початку
|
159
|
+
new:
|
160
|
+
create: Створити
|
161
|
+
title: Додати порядок денний
|
162
|
+
update:
|
163
|
+
invalid: При спробі оновити цей порядок денний сталася помилка
|
164
|
+
success: Порядок денний успішно оновлено
|
91
165
|
exports:
|
92
166
|
registrations: Реєстрації
|
93
167
|
invite_join_meeting_mailer:
|
@@ -106,6 +180,9 @@ uk:
|
|
106
180
|
edit:
|
107
181
|
close: Закрити
|
108
182
|
title: Закрити зустріч
|
183
|
+
meeting_copies:
|
184
|
+
form:
|
185
|
+
select_organizer: Оберіть організатора
|
109
186
|
meetings:
|
110
187
|
close:
|
111
188
|
invalid: При спробі закрити цю зустріч сталася помилка
|
@@ -117,6 +194,8 @@ uk:
|
|
117
194
|
success: Зустріч успішно видалено
|
118
195
|
edit:
|
119
196
|
update: Оновити
|
197
|
+
form:
|
198
|
+
select_organizer: Оберіть організатора
|
120
199
|
index:
|
121
200
|
title: Зустрічі
|
122
201
|
new:
|
@@ -135,6 +214,18 @@ uk:
|
|
135
214
|
update:
|
136
215
|
invalid: При спробі оновити цю зустріч сталася помилка
|
137
216
|
success: Зустріч успішно оновлено
|
217
|
+
minutes:
|
218
|
+
create:
|
219
|
+
invalid: При спробі створити цей протокол сталася помилка
|
220
|
+
success: Протокол успішно створено
|
221
|
+
edit:
|
222
|
+
update: Оновити
|
223
|
+
new:
|
224
|
+
create: Додати
|
225
|
+
title: Додати протокол
|
226
|
+
update:
|
227
|
+
invalid: При спробі оновити цей протокол сталася помилка
|
228
|
+
success: Протокол успішно оновлено
|
138
229
|
models:
|
139
230
|
meeting:
|
140
231
|
name: Зустріч
|
@@ -161,6 +252,12 @@ uk:
|
|
161
252
|
delete: "%{user_name} видалив зустріч %{resource_name} у просторі %{space_name}"
|
162
253
|
export_registrations: "%{user_name} зберіг у вигляді файлу список зареєстрованих на зустріч %{resource_name} у просторі %{space_name}"
|
163
254
|
update: "%{user_name} оновив зустріч %{resource_name} у просторі %{space_name}"
|
255
|
+
value_types:
|
256
|
+
organizer_presenter:
|
257
|
+
not_found: 'Цього організатора не знайдено в базі даних (ID: %{id})'
|
258
|
+
minutes:
|
259
|
+
create: "%{user_name} створив протокол зустрічі %{resource_name} у просторі %{space_name}"
|
260
|
+
update: "%{user_name} оновив протокол зустрічі %{resource_name} у просторі %{space_name}"
|
164
261
|
mailer:
|
165
262
|
invite_join_meeting_mailer:
|
166
263
|
invite:
|
@@ -168,6 +265,8 @@ uk:
|
|
168
265
|
registration_mailer:
|
169
266
|
confirmation:
|
170
267
|
subject: Вашу реєстрацію на зустріч підтверджено
|
268
|
+
meeting:
|
269
|
+
not_allowed: У вас нема прав на перегляд цієї зустрічі
|
171
270
|
meetings:
|
172
271
|
filters:
|
173
272
|
category: Розряд
|
@@ -183,6 +282,9 @@ uk:
|
|
183
282
|
unfold: Розгорнути
|
184
283
|
index:
|
185
284
|
view_meeting: Переглянути зустріч
|
285
|
+
meeting_minutes:
|
286
|
+
meeting_minutes: Протокол зустрічі
|
287
|
+
related_information: Супутні відомості
|
186
288
|
meetings:
|
187
289
|
no_meetings_warning: Жодна зустріч не відповідає вашим критеріям пошуку, або жодних зустрічей не заплановано.
|
188
290
|
upcoming_meetings_warning: Наразі нема запланованих зустрічей, але тут ви можете знайти перелік усіх попередніх зустрічей.
|
@@ -202,6 +304,7 @@ uk:
|
|
202
304
|
few: "Залишилось %{count} місця"
|
203
305
|
many: "Залишилось %{count} місць"
|
204
306
|
other: "Залишилось %{count} місць"
|
307
|
+
view: Переглянути
|
205
308
|
models:
|
206
309
|
meeting:
|
207
310
|
fields:
|
@@ -222,6 +325,9 @@ uk:
|
|
222
325
|
destroy:
|
223
326
|
invalid: При спробі скасувати реєстрацію на цю зустріч сталася помилка.
|
224
327
|
success: Ви успішно скасували реєстрацію на зустріч.
|
328
|
+
types:
|
329
|
+
private_meeting: Приватна зустріч
|
330
|
+
transparent: Прозора
|
225
331
|
participatory_processes:
|
226
332
|
participatory_process_groups:
|
227
333
|
highlighted_meetings:
|
@@ -232,13 +338,15 @@ uk:
|
|
232
338
|
past_meetings: Минулі зустрічі
|
233
339
|
see_all_meetings: Переглянути всі зустрічі
|
234
340
|
upcoming_meetings: Прийдешні зустрічі
|
341
|
+
upcoming_meeting_for_card:
|
342
|
+
upcoming_meeting: Прийдешня зустріч
|
235
343
|
resource_links:
|
236
344
|
meetings_through_proposals:
|
237
|
-
|
238
|
-
|
345
|
+
meeting_result: 'Пов''язані підсумки:'
|
346
|
+
result_meeting: 'Пов''язані зустрічі:'
|
239
347
|
proposals_from_meeting:
|
240
|
-
|
241
|
-
|
348
|
+
meeting_proposal: 'Супутні пропозиції:'
|
349
|
+
proposal_meeting: 'Пов''язані зустрічі:'
|
242
350
|
devise:
|
243
351
|
mailer:
|
244
352
|
join_meeting:
|
@@ -0,0 +1,8 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class AddMeetingTypes < ActiveRecord::Migration[5.1]
|
4
|
+
def change
|
5
|
+
add_column :decidim_meetings_meetings, :private_meeting, :boolean, default: false
|
6
|
+
add_column :decidim_meetings_meetings, :transparent, :boolean, default: true
|
7
|
+
end
|
8
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class CreateMeetingsMinutes < ActiveRecord::Migration[5.1]
|
4
|
+
def change
|
5
|
+
create_table :decidim_meetings_minutes do |t|
|
6
|
+
t.references :decidim_meeting, index: true
|
7
|
+
t.jsonb :description
|
8
|
+
t.string :video_url
|
9
|
+
t.string :audio_url
|
10
|
+
t.boolean :visible
|
11
|
+
|
12
|
+
t.timestamps
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class CreateDecidimAgendas < ActiveRecord::Migration[5.1]
|
4
|
+
def change
|
5
|
+
create_table :decidim_meetings_agendas do |t|
|
6
|
+
t.jsonb :title
|
7
|
+
t.references :decidim_meeting, null: false, index: true
|
8
|
+
t.boolean :visible
|
9
|
+
|
10
|
+
t.timestamps
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class CreateDecidimAgendaItems < ActiveRecord::Migration[5.1]
|
4
|
+
def change
|
5
|
+
create_table :decidim_meetings_agenda_items do |t|
|
6
|
+
t.references :decidim_agenda, index: true
|
7
|
+
t.integer :position
|
8
|
+
t.references :parent, index: true
|
9
|
+
t.integer :duration
|
10
|
+
t.jsonb :title
|
11
|
+
t.jsonb :description
|
12
|
+
|
13
|
+
t.timestamps
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class IndexMeetingsAsSearchableResources < ActiveRecord::Migration[5.1]
|
4
|
+
class Meeting < ApplicationRecord
|
5
|
+
self.table_name = :decidim_meetings_meetings
|
6
|
+
include Decidim::Searchable
|
7
|
+
|
8
|
+
searchable_fields(
|
9
|
+
scope_id: :decidim_scope_id,
|
10
|
+
participatory_space: { component: :participatory_space },
|
11
|
+
A: :title,
|
12
|
+
D: [:description, :address],
|
13
|
+
datetime: :start_time
|
14
|
+
)
|
15
|
+
end
|
16
|
+
|
17
|
+
def up
|
18
|
+
Meeting.find_each(&:add_to_index_as_search_resource)
|
19
|
+
end
|
20
|
+
|
21
|
+
def down
|
22
|
+
Decidim::SearchableResource.where(resource_type: "Decidim::Meetings::Meeting").destroy_all
|
23
|
+
end
|
24
|
+
end
|
@@ -19,9 +19,11 @@ module Decidim
|
|
19
19
|
get :export
|
20
20
|
end
|
21
21
|
end
|
22
|
+
resources :agenda, except: [:index, :destroy]
|
22
23
|
resources :attachment_collections
|
23
24
|
resources :attachments
|
24
25
|
resources :copies, controller: "meeting_copies", only: [:new, :create]
|
26
|
+
resources :minutes, except: [:show, :index]
|
25
27
|
end
|
26
28
|
root to: "meetings#index"
|
27
29
|
end
|
@@ -6,7 +6,7 @@ Decidim.register_component(:meetings) do |component|
|
|
6
6
|
component.engine = Decidim::Meetings::Engine
|
7
7
|
component.admin_engine = Decidim::Meetings::AdminEngine
|
8
8
|
component.icon = "decidim/meetings/icon.svg"
|
9
|
-
component.
|
9
|
+
component.permissions_class_name = "Decidim::Meetings::Permissions"
|
10
10
|
|
11
11
|
component.query_type = "Decidim::Meetings::MeetingsType"
|
12
12
|
|
@@ -14,9 +14,10 @@ Decidim.register_component(:meetings) do |component|
|
|
14
14
|
raise StandardError, "Can't remove this component" if Decidim::Meetings::Meeting.where(component: instance).any?
|
15
15
|
end
|
16
16
|
|
17
|
-
component.register_resource do |resource|
|
17
|
+
component.register_resource(:meeting) do |resource|
|
18
18
|
resource.model_class_name = "Decidim::Meetings::Meeting"
|
19
19
|
resource.template = "decidim/meetings/meetings/linked_meetings"
|
20
|
+
resource.card = "decidim/meetings/meeting"
|
20
21
|
end
|
21
22
|
|
22
23
|
component.register_stat :meetings_count, primary: true, priority: Decidim::StatsRegistry::MEDIUM_PRIORITY do |components, start_at, end_at|
|
@@ -28,12 +28,6 @@ module Decidim
|
|
28
28
|
root to: "meetings#index"
|
29
29
|
end
|
30
30
|
|
31
|
-
initializer "decidim_meetings.inject_abilities_to_user" do |_app|
|
32
|
-
Decidim.configure do |config|
|
33
|
-
config.abilities += ["Decidim::Meetings::Abilities::CurrentUserAbility"]
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
31
|
initializer "decidim_meetings.view_hooks" do
|
38
32
|
Decidim.view_hooks.register(:participatory_space_highlighted_elements, priority: Decidim::ViewHooks::HIGH_PRIORITY) do |view_context|
|
39
33
|
published_components = Decidim::Component.where(participatory_space: view_context.current_participatory_space).published
|
@@ -81,6 +75,22 @@ module Decidim
|
|
81
75
|
}
|
82
76
|
)
|
83
77
|
end
|
78
|
+
|
79
|
+
# This view hook is used in card cells. It renders the next upcoming
|
80
|
+
# meeting for the given participatory space.
|
81
|
+
Decidim.view_hooks.register(:upcoming_meeting_for_card, priority: Decidim::ViewHooks::LOW_PRIORITY) do |view_context|
|
82
|
+
published_components = Decidim::Component.where(participatory_space: view_context.current_participatory_space).published
|
83
|
+
upcoming_meeting = Decidim::Meetings::Meeting.where(component: published_components).upcoming.order(:start_time, :end_time).first
|
84
|
+
|
85
|
+
next unless upcoming_meeting
|
86
|
+
|
87
|
+
view_context.render(
|
88
|
+
partial: "decidim/participatory_spaces/upcoming_meeting_for_card.html",
|
89
|
+
locals: {
|
90
|
+
upcoming_meeting: upcoming_meeting
|
91
|
+
}
|
92
|
+
)
|
93
|
+
end
|
84
94
|
end
|
85
95
|
|
86
96
|
initializer "decidim_meetings.add_cells_view_paths" do
|
@@ -20,6 +20,8 @@ FactoryBot.define do
|
|
20
20
|
longitude { Faker::Address.longitude }
|
21
21
|
start_time { 1.day.from_now }
|
22
22
|
end_time { start_time.advance(hours: 2) }
|
23
|
+
private_meeting false
|
24
|
+
transparent true
|
23
25
|
services do
|
24
26
|
[
|
25
27
|
{ title: Decidim::Faker::Localized.sentence(2), description: Decidim::Faker::Localized.sentence(5) },
|
@@ -28,6 +30,10 @@ FactoryBot.define do
|
|
28
30
|
end
|
29
31
|
component { build(:component, manifest_name: "meetings") }
|
30
32
|
|
33
|
+
organizer do
|
34
|
+
create(:user, organization: component.organization) if component
|
35
|
+
end
|
36
|
+
|
31
37
|
trait :closed do
|
32
38
|
closing_report { Decidim::Faker::Localized.sentence(3) }
|
33
39
|
attendees_count { rand(50) }
|
@@ -57,4 +63,42 @@ FactoryBot.define do
|
|
57
63
|
meeting
|
58
64
|
user
|
59
65
|
end
|
66
|
+
|
67
|
+
factory :agenda, class: "Decidim::Meetings::Agenda" do
|
68
|
+
meeting
|
69
|
+
title { Decidim::Faker::Localized.sentence(3) }
|
70
|
+
visible { true }
|
71
|
+
|
72
|
+
trait :with_agenda_items do
|
73
|
+
after(:create) do |agenda, _evaluator|
|
74
|
+
create_list(:agenda_item, 2, :with_children, agenda: agenda)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
factory :agenda_item, class: "Decidim::Meetings::AgendaItem" do
|
80
|
+
agenda
|
81
|
+
title { Decidim::Faker::Localized.sentence(3) }
|
82
|
+
description { Decidim::Faker::Localized.wrapped("<p>", "</p>") { Decidim::Faker::Localized.sentence(4) } }
|
83
|
+
duration { 15 }
|
84
|
+
position { 0 }
|
85
|
+
|
86
|
+
trait :with_parent do
|
87
|
+
parent { create(:agenda_item, agenda: agenda) }
|
88
|
+
end
|
89
|
+
|
90
|
+
trait :with_children do
|
91
|
+
after(:create) do |agenda_item, evaluator|
|
92
|
+
create_list(:agenda_item, 2, parent: agenda_item, agenda: evaluator.agenda)
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
factory :minutes, class: "Decidim::Meetings::Minutes" do
|
98
|
+
description { Decidim::Faker::Localized.wrapped("<p>", "</p>") { Decidim::Faker::Localized.sentence(4) } }
|
99
|
+
video_url { Faker::Internet.url }
|
100
|
+
audio_url { Faker::Internet.url }
|
101
|
+
visible true
|
102
|
+
meeting
|
103
|
+
end
|
60
104
|
end
|