decidim-assemblies 0.24.1 → 0.25.0.rc2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (95) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/assemblies/assembly_m_cell.rb +1 -1
  3. data/app/cells/decidim/assemblies/assembly_member/show.erb +1 -1
  4. data/app/cells/decidim/assemblies/content_blocks/highlighted_assemblies/show.erb +1 -1
  5. data/app/commands/decidim/assemblies/admin/copy_assembly.rb +11 -3
  6. data/app/commands/decidim/assemblies/admin/create_assembly.rb +2 -1
  7. data/app/commands/decidim/assemblies/admin/create_assembly_member.rb +5 -1
  8. data/app/commands/decidim/assemblies/admin/update_assembly.rb +7 -11
  9. data/app/controllers/decidim/assemblies/admin/assemblies_controller.rb +1 -5
  10. data/app/forms/decidim/assemblies/admin/assembly_form.rb +3 -2
  11. data/app/forms/decidim/assemblies/admin/assembly_import_form.rb +1 -0
  12. data/app/forms/decidim/assemblies/admin/assembly_member_form.rb +1 -1
  13. data/app/helpers/decidim/assemblies/admin/assemblies_admin_menu_helper.rb +0 -5
  14. data/app/models/decidim/assembly.rb +5 -5
  15. data/app/models/decidim/assembly_member.rb +1 -1
  16. data/app/packs/entrypoints/decidim_assemblies.js +5 -0
  17. data/app/packs/entrypoints/decidim_assemblies_admin.js +3 -0
  18. data/app/{assets/images/decidim/assemblies/assembly.svg → packs/images/decidim/assemblies/decidim_assemblies.svg} +0 -0
  19. data/app/packs/src/decidim/assemblies/admin/assemblies.js +63 -0
  20. data/app/{assets/javascripts/decidim/assemblies/admin/assembly_members.js.es6 → packs/src/decidim/assemblies/admin/assembly_members.js} +3 -3
  21. data/app/packs/src/decidim/assemblies/assemblies.js +14 -0
  22. data/app/packs/src/decidim/assemblies/orgchart.js +695 -0
  23. data/app/presenters/decidim/assemblies/assembly_presenter.rb +2 -12
  24. data/app/presenters/decidim/assemblies/assembly_stats_presenter.rb +3 -13
  25. data/app/queries/decidim/assemblies/admin/admin_users.rb +24 -11
  26. data/app/serializers/decidim/assemblies/assembly_importer.rb +3 -2
  27. data/app/serializers/decidim/assemblies/assembly_serializer.rb +4 -2
  28. data/app/views/decidim/assemblies/admin/assemblies/_form.html.erb +6 -3
  29. data/app/views/decidim/assemblies/admin/assemblies_types/index.html.erb +1 -1
  30. data/app/views/decidim/assemblies/admin/assembly_copies/_form.html.erb +1 -1
  31. data/app/views/decidim/assemblies/admin/assembly_imports/_form.html.erb +1 -1
  32. data/app/views/decidim/assemblies/admin/assembly_members/_form.html.erb +2 -2
  33. data/app/views/decidim/assemblies/assemblies/_promoted_assembly.html.erb +1 -1
  34. data/app/views/decidim/assemblies/assemblies/index.html.erb +2 -2
  35. data/app/views/decidim/assemblies/assemblies/show.html.erb +6 -4
  36. data/app/views/layouts/decidim/_assembly_header.html.erb +1 -1
  37. data/app/views/layouts/decidim/admin/assemblies.html.erb +1 -1
  38. data/app/views/layouts/decidim/admin/assembly.html.erb +4 -73
  39. data/app/views/layouts/decidim/assembly.html.erb +2 -2
  40. data/config/assets.rb +9 -0
  41. data/config/locales/ar.yml +0 -17
  42. data/config/locales/ca.yml +4 -38
  43. data/config/locales/cs.yml +6 -40
  44. data/config/locales/de.yml +4 -38
  45. data/config/locales/el.yml +0 -31
  46. data/config/locales/en.yml +5 -39
  47. data/config/locales/es-MX.yml +4 -38
  48. data/config/locales/es-PY.yml +4 -38
  49. data/config/locales/es.yml +4 -38
  50. data/config/locales/eu.yml +0 -17
  51. data/config/locales/fi-plain.yml +5 -39
  52. data/config/locales/fi.yml +5 -39
  53. data/config/locales/fr-CA.yml +1 -39
  54. data/config/locales/fr-LU.yml +449 -0
  55. data/config/locales/fr.yml +0 -38
  56. data/config/locales/gl.yml +4 -28
  57. data/config/locales/hu.yml +0 -31
  58. data/config/locales/id-ID.yml +0 -17
  59. data/config/locales/is-IS.yml +0 -14
  60. data/config/locales/it.yml +6 -32
  61. data/config/locales/ja.yml +5 -31
  62. data/config/locales/lb-LU.yml +1 -0
  63. data/config/locales/lv.yml +0 -30
  64. data/config/locales/nl.yml +5 -39
  65. data/config/locales/no.yml +0 -31
  66. data/config/locales/pl.yml +6 -43
  67. data/config/locales/pt-BR.yml +82 -17
  68. data/config/locales/pt.yml +0 -31
  69. data/config/locales/ro-RO.yml +5 -36
  70. data/config/locales/ru.yml +0 -17
  71. data/config/locales/sk.yml +0 -16
  72. data/config/locales/sl.yml +0 -17
  73. data/config/locales/sr-CS.yml +0 -16
  74. data/config/locales/sv.yml +3 -36
  75. data/config/locales/tr-TR.yml +0 -31
  76. data/config/locales/uk.yml +0 -17
  77. data/config/locales/zh-CN.yml +0 -31
  78. data/db/migrate/20210507063604_add_announcement_to_assemblies.rb +7 -0
  79. data/lib/decidim/api/assembly_type.rb +10 -1
  80. data/lib/decidim/assemblies/admin_engine.rb +122 -30
  81. data/lib/decidim/assemblies/engine.rb +6 -9
  82. data/lib/decidim/assemblies/participatory_space.rb +46 -8
  83. data/lib/decidim/assemblies/test/factories.rb +1 -0
  84. data/lib/decidim/assemblies/version.rb +1 -1
  85. metadata +21 -22
  86. data/app/assets/config/admin/decidim_assemblies_manifest.js +0 -2
  87. data/app/assets/config/decidim_assemblies_manifest.js +0 -2
  88. data/app/assets/javascripts/decidim/assemblies/admin/assemblies.js.es6 +0 -67
  89. data/app/assets/javascripts/decidim/assemblies/assemblies.js.es6 +0 -18
  90. data/app/assets/javascripts/decidim/assemblies/orgchart.js.es6 +0 -698
  91. data/app/cells/decidim/assemblies/statistic/show.erb +0 -9
  92. data/app/cells/decidim/assemblies/statistic_cell.rb +0 -20
  93. data/app/cells/decidim/assemblies/statistics/show.erb +0 -17
  94. data/app/cells/decidim/assemblies/statistics_cell.rb +0 -18
  95. data/config/locales/ja-JP.yml +0 -471
@@ -52,7 +52,7 @@ ro:
52
52
  target: Cine participă
53
53
  title: Titlu
54
54
  twitter: Twitter
55
- weight: Pondere
55
+ weight: Ordinea procesului
56
56
  youtube: YouTube
57
57
  assembly_member:
58
58
  birthday: Data nașterii
@@ -63,7 +63,7 @@ ro:
63
63
  full_name: Numele complet
64
64
  gender: Sexul
65
65
  position: Poziție
66
- user_id: Utilizator
66
+ user_id: Utilizator sau grup
67
67
  assembly_user_role:
68
68
  email: E-mail
69
69
  name: Nume
@@ -265,6 +265,7 @@ ro:
265
265
  admin:
266
266
  assemblies:
267
267
  form:
268
+ announcement_help: Textul pe care îl introduceți aici va fi prezentat utilizatorului sub informațiile despre adunare.
268
269
  duration: Durată
269
270
  duration_help: În cazul în care durata acestei adunări este limitată, selectaţi data de încheiere. În caz contrar, va apărea ca indefinită.
270
271
  filters: Filtre
@@ -384,35 +385,11 @@ ro:
384
385
  social_networks: Rețele sociale
385
386
  social_networks_title: Distribuie această organizație pe
386
387
  target: Cine participă
387
- statistics:
388
- answers_count: Răspunsuri
389
- assemblies_count: Organizații
390
- comments_count: Comentarii
391
- debates_count: Dezbateri
392
- endorsements_count: Susținători
393
- meetings_count: Întâlniri
394
- orders_count: Suportă
395
- pages_count: Pagini
396
- participants_count: Participanți
397
- posts_count: Mesaje
398
- processes_count: Procese
399
- projects_count: Proiecte
400
- proposals_count: Propuneri
401
- results_count: Rezultate
402
- supports_count: Suportă
403
- surveys_count: Chestionare
404
- users_count: Participanți
405
- votes_count: Suportă
406
388
  assembly_members:
407
389
  assembly_member:
408
390
  designated_on: Desemnat la
409
391
  index:
410
392
  title: Membri
411
- conferences:
412
- pages:
413
- home:
414
- highlighted_conferences:
415
- conferences_button_title: Link către pagina de conferințe care afișează toate conferințele
416
393
  events:
417
394
  assemblies:
418
395
  create_assembly_member:
@@ -445,19 +422,11 @@ ro:
445
422
  description: Numărul de organizații create
446
423
  object: organizații
447
424
  title: Organizații
448
- pages:
449
- home:
450
- hero:
451
- participate_title: Participă la procesele platformei
452
- sub_hero:
453
- register_title: Înregistrează-te pentru a crea un cont
454
425
  participatory_processes:
455
- pages:
456
- home:
457
- highlighted_processes:
458
- processes_button_title: Link către pagina Proceselor care afișează toate procesele
459
426
  show:
460
427
  related_assemblies: Organizații asemănătoare
428
+ statistics:
429
+ assemblies_count: Organizații
461
430
  errors:
462
431
  messages:
463
432
  cannot_be_blank: nu poate fi necompletat
@@ -305,23 +305,6 @@ ru:
305
305
  scope: Охват
306
306
  social_networks: Социальные сети
307
307
  target: Кто участвует
308
- statistics:
309
- answers_count: Ответов
310
- assemblies_count: Собрания
311
- comments_count: Комментариев
312
- debates_count: Обсуждений
313
- endorsements_count: Выражений поддержки
314
- meetings_count: Встреч
315
- orders_count: Голосов
316
- pages_count: Страниц
317
- participants_count: Участников
318
- projects_count: Проектов
319
- proposals_count: Предложений
320
- results_count: Итогов
321
- supports_count: Голосов
322
- surveys_count: Опросов
323
- users_count: Участников
324
- votes_count: Голосов
325
308
  assembly_members:
326
309
  assembly_member:
327
310
  designated_on: 'Полномочия предоставлены:'
@@ -143,13 +143,6 @@ sk:
143
143
  assemblies_button_title: Odkaz na stránku Zhromaždenia, zobrazujúcu všetky zhromaždenia
144
144
  show:
145
145
  social_networks_title: Zdieľať toto zhromaždenie na
146
- statistics:
147
- posts_count: Príspevky
148
- conferences:
149
- pages:
150
- home:
151
- highlighted_conferences:
152
- conferences_button_title: Odkaz na stránku Konferencie, zobrazujúcu všetky konferencie
153
146
  events:
154
147
  assemblies:
155
148
  create_assembly_member:
@@ -158,12 +151,3 @@ sk:
158
151
  value_types:
159
152
  assembly_type_presenter:
160
153
  not_found: 'Typ zhromaždenia nebol nájdený v databáze (ID: %{id})'
161
- pages:
162
- home:
163
- hero:
164
- participate_title: Podieľajte sa na procesoch platformy
165
- participatory_processes:
166
- pages:
167
- home:
168
- highlighted_processes:
169
- processes_button_title: Odkaz na stránku Procesy, zobrazujúcu všetky procesy
@@ -233,23 +233,6 @@ sl:
233
233
  scope: Področje
234
234
  social_networks: Socialna omrežja
235
235
  target: Kdor je prisostoval
236
- statistics:
237
- answers_count: Odgovori
238
- assemblies_count: Združbe
239
- comments_count: Komentarji
240
- debates_count: Debate
241
- meetings_count: Sestanki
242
- orders_count: Podpora
243
- pages_count: Strani
244
- participants_count: Udeleženci
245
- posts_count: Objave
246
- projects_count: Projekti
247
- proposals_count: Predlogi
248
- results_count: Rezultati
249
- supports_count: Podpora
250
- surveys_count: Ankete
251
- users_count: Udeleženci
252
- votes_count: Podpora
253
236
  help:
254
237
  participatory_spaces:
255
238
  assemblies:
@@ -35,13 +35,6 @@ sr:
35
35
  assemblies_button_title: Veza ka strani Veća koja prikazuje sva veća
36
36
  show:
37
37
  social_networks_title: Podelite ovo veće na
38
- statistics:
39
- posts_count: Objave
40
- conferences:
41
- pages:
42
- home:
43
- highlighted_conferences:
44
- conferences_button_title: Veza ka strani Konferencije koja prikazuje sve konferencije
45
38
  events:
46
39
  assemblies:
47
40
  create_assembly_member:
@@ -59,12 +52,3 @@ sr:
59
52
  value_types:
60
53
  assembly_type_presenter:
61
54
  not_found: 'Ovaj tip veća nije pronađen u bazi podataka (ID: %{id})'
62
- pages:
63
- home:
64
- hero:
65
- participate_title: Učestvujte u procesima platforme
66
- participatory_processes:
67
- pages:
68
- home:
69
- highlighted_processes:
70
- processes_button_title: Veza ka strani Procesi koja prikazuje sve procese
@@ -262,6 +262,7 @@ sv:
262
262
  admin:
263
263
  assemblies:
264
264
  form:
265
+ announcement_help: Texten du skriver här visas för användaren direkt under gruppinformationen.
265
266
  duration: Varaktighet
266
267
  duration_help: Om varaktigheten för gruppen är begränsad, välj ett slutdatum. Annars kommer den att visas som permanent.
267
268
  filters: Filter
@@ -381,37 +382,11 @@ sv:
381
382
  social_networks: Sociala nätverk
382
383
  social_networks_title: Dela denna grupp på
383
384
  target: Vilka deltar
384
- statistics:
385
- answers_count: Svar
386
- assemblies_count: Grupper
387
- comments_count: Kommentarer
388
- debates_count: Debatter
389
- endorsements_count: Instämmanden
390
- followers_count: Följare
391
- headline: Statistik
392
- meetings_count: Möten
393
- orders_count: Stöd
394
- pages_count: Sidor
395
- participants_count: Deltagare
396
- posts_count: Inlägg
397
- processes_count: Dialoger
398
- projects_count: Projekt
399
- proposals_count: Förslag
400
- results_count: Resultat
401
- supports_count: Stöd
402
- surveys_count: Undersökningar
403
- users_count: Deltagare
404
- votes_count: Stöd
405
385
  assembly_members:
406
386
  assembly_member:
407
387
  designated_on: Utsedd den
408
388
  index:
409
389
  title: Medlemmar
410
- conferences:
411
- pages:
412
- home:
413
- highlighted_conferences:
414
- conferences_button_title: Länk till sidan över konferenser som visar alla konferenser
415
390
  events:
416
391
  assemblies:
417
392
  create_assembly_member:
@@ -444,19 +419,11 @@ sv:
444
419
  description: Antal skapade grupper
445
420
  object: grupper
446
421
  title: Grupper
447
- pages:
448
- home:
449
- hero:
450
- participate_title: Delta i plattformens dialoger
451
- sub_hero:
452
- register_title: Skapa ett konto
453
422
  participatory_processes:
454
- pages:
455
- home:
456
- highlighted_processes:
457
- processes_button_title: Länk till sidan som visar alla dialoger
458
423
  show:
459
424
  related_assemblies: Relaterade grupper
425
+ statistics:
426
+ assemblies_count: Grupper
460
427
  errors:
461
428
  messages:
462
429
  cannot_be_blank: kan inte vara tomt
@@ -379,34 +379,11 @@ tr:
379
379
  social_networks: Sosyal ağlar
380
380
  social_networks_title: Bu kurulu paylaş
381
381
  target: Katılanlar
382
- statistics:
383
- answers_count: Cevaplar
384
- assemblies_count: Kurullar
385
- comments_count: Yorumlar
386
- debates_count: Tartışmalar
387
- endorsements_count: Onaylar
388
- meetings_count: Toplantılar
389
- orders_count: Destekler
390
- pages_count: Sayfalar
391
- participants_count: Katılımcılar
392
- posts_count: Yayınlar
393
- projects_count: Projeler
394
- proposals_count: Teklifler
395
- results_count: Sonuçlar
396
- supports_count: Destekler
397
- surveys_count: Anketler
398
- users_count: Katılımcılar
399
- votes_count: Destekler
400
382
  assembly_members:
401
383
  assembly_member:
402
384
  designated_on: Üzerinde belirlenen
403
385
  index:
404
386
  title: Üyeler
405
- conferences:
406
- pages:
407
- home:
408
- highlighted_conferences:
409
- conferences_button_title: Tüm konferansları görüntüleyen Konferanslar sayfasına bağlantı
410
387
  events:
411
388
  assemblies:
412
389
  create_assembly_member:
@@ -439,15 +416,7 @@ tr:
439
416
  description: Oluşturulan kurul sayısı
440
417
  object: kurullar
441
418
  title: Kurullar
442
- pages:
443
- home:
444
- hero:
445
- participate_title: Platformun süreçlerine katılın
446
419
  participatory_processes:
447
- pages:
448
- home:
449
- highlighted_processes:
450
- processes_button_title: Tüm süreçleri gösteren Süreçler sayfasına bağlantı
451
420
  show:
452
421
  related_assemblies: İlgili kurullar
453
422
  errors:
@@ -305,23 +305,6 @@ uk:
305
305
  scope: Обсяг
306
306
  social_networks: Соціальні мережі
307
307
  target: Хто бере участь
308
- statistics:
309
- answers_count: Відповідей
310
- assemblies_count: Збори
311
- comments_count: Коментарів
312
- debates_count: Обговорень
313
- endorsements_count: Проявів підтримки
314
- meetings_count: Зустрічей
315
- orders_count: Голосів
316
- pages_count: Сторінок
317
- participants_count: Учасників
318
- projects_count: Проектів
319
- proposals_count: Пропозицій
320
- results_count: Підсумків
321
- supports_count: Голосів
322
- surveys_count: Опитувань
323
- users_count: Учасників
324
- votes_count: Голосів
325
308
  assembly_members:
326
309
  assembly_member:
327
310
  designated_on: 'Надано повноваження:'
@@ -370,34 +370,11 @@ zh-CN:
370
370
  social_networks: 社交网络
371
371
  social_networks_title: 分享此程序集
372
372
  target: 谁参与
373
- statistics:
374
- answers_count: 答案
375
- assemblies_count: 程序集
376
- comments_count: 评论
377
- debates_count: 辩论
378
- endorsements_count: 授权
379
- meetings_count: 会议
380
- orders_count: 支持
381
- pages_count: 页 次
382
- participants_count: 参加者
383
- posts_count: 员额
384
- projects_count: 项目
385
- proposals_count: 建议
386
- results_count: 成果
387
- supports_count: 支持
388
- surveys_count: 调查
389
- users_count: 参加者
390
- votes_count: 支持
391
373
  assembly_members:
392
374
  assembly_member:
393
375
  designated_on: 指定于
394
376
  index:
395
377
  title: 成员
396
- conferences:
397
- pages:
398
- home:
399
- highlighted_conferences:
400
- conferences_button_title: 链接到显示所有会议的会议页面
401
378
  events:
402
379
  assemblies:
403
380
  create_assembly_member:
@@ -430,15 +407,7 @@ zh-CN:
430
407
  description: 创建的集合数
431
408
  object: 程序集
432
409
  title: 程序集
433
- pages:
434
- home:
435
- hero:
436
- participate_title: 参与平台进程
437
410
  participatory_processes:
438
- pages:
439
- home:
440
- highlighted_processes:
441
- processes_button_title: 链接到显示所有进程的进程页面
442
411
  show:
443
412
  related_assemblies: 相关的会议
444
413
  errors:
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddAnnouncementToAssemblies < ActiveRecord::Migration[6.0]
4
+ def change
5
+ add_column :decidim_assemblies, :announcement, :jsonb
6
+ end
7
+ end
@@ -7,6 +7,7 @@ module Decidim
7
7
  implements Decidim::Core::ParticipatorySpaceInterface
8
8
  implements Decidim::Core::AttachableInterface
9
9
  implements Decidim::Core::ParticipatorySpaceResourceableInterface
10
+ implements Decidim::Core::CategoriesContainerInterface
10
11
 
11
12
  description "An assembly"
12
13
 
@@ -20,7 +21,6 @@ module Decidim
20
21
  field :updated_at, Decidim::Core::DateTimeType, "The time this assembly was updated", null: false
21
22
  field :published_at, Decidim::Core::DateTimeType, "The time this assembly was published", null: false
22
23
  field :reference, String, "Reference for this assembly", null: false
23
- field :categories, [Decidim::Core::CategoryType, { null: true }], "Categories for this assembly", null: false
24
24
 
25
25
  field :hero_image, String, "The hero image for this assembly", null: true
26
26
  field :banner_image, String, "The banner image for this assembly", null: true
@@ -56,9 +56,18 @@ module Decidim
56
56
  field :facebook_handler, String, "Facebook handler", null: true
57
57
  field :youtube_handler, String, "Youtube handler", null: true
58
58
  field :github_handler, String, "Github handler", null: true
59
+ field :announcement, Decidim::Core::TranslatedFieldType, "Highlighted announcement for this assembly", null: true
59
60
 
60
61
  field :members, [Decidim::Assemblies::AssemblyMemberType, { null: true }], "Members of this assembly", null: false
61
62
  field :children, [Decidim::Assemblies::AssemblyType, { null: true }], "Childrens of this assembly", null: false
63
+
64
+ def hero_image
65
+ object.attached_uploader(:hero_image).path
66
+ end
67
+
68
+ def banner_image
69
+ object.attached_uploader(:banner_image).path
70
+ end
62
71
  end
63
72
  end
64
73
  end
@@ -83,46 +83,138 @@ module Decidim
83
83
  end
84
84
  end
85
85
 
86
- initializer "decidim_assemblies.action_controller" do |_app|
87
- ActiveSupport.on_load :action_controller do
88
- helper Decidim::Assemblies::Admin::AssembliesAdminMenuHelper if respond_to?(:helper)
86
+ initializer "decidim_assemblies.action_controller" do |app|
87
+ app.config.to_prepare do
88
+ ActiveSupport.on_load :action_controller do
89
+ helper Decidim::Assemblies::Admin::AssembliesAdminMenuHelper if respond_to?(:helper)
90
+ end
89
91
  end
90
92
  end
91
93
 
92
- initializer "decidim_assemblies.admin_assets" do |app|
93
- app.config.assets.precompile += %w(admin/decidim_assemblies_manifest.js)
94
- end
95
-
96
94
  initializer "decidim_assemblies.admin_menu" do
97
95
  Decidim.menu :admin_menu do |menu|
98
- menu.item I18n.t("menu.assemblies", scope: "decidim.admin"),
99
- decidim_admin_assemblies.assemblies_path,
100
- icon_name: "dial",
101
- position: 2.2,
102
- active: :inclusive,
103
- if: allowed_to?(:enter, :space_area, space_name: :assemblies)
96
+ menu.add_item :assemblies,
97
+ I18n.t("menu.assemblies", scope: "decidim.admin"),
98
+ decidim_admin_assemblies.assemblies_path,
99
+ icon_name: "dial",
100
+ position: 2.2,
101
+ active: :inclusive,
102
+ if: allowed_to?(:enter, :space_area, space_name: :assemblies)
103
+ end
104
+ end
105
+
106
+ initializer "decidim_assemblies.assemblies_admin_attachments_menu" do
107
+ Decidim.menu :assemblies_admin_attachments_menu do |menu|
108
+ menu.add_item :assembly_attachment_collections,
109
+ I18n.t("attachment_collections", scope: "decidim.admin.menu.assemblies_submenu"),
110
+ decidim_admin_assemblies.assembly_attachment_collections_path(current_participatory_space),
111
+ active: is_active_link?(decidim_admin_assemblies.assembly_attachment_collections_path(current_participatory_space)),
112
+ if: allowed_to?(:read, :attachment_collection, assembly: current_participatory_space)
113
+
114
+ menu.add_item :assembly_attachments,
115
+ I18n.t("attachment_files", scope: "decidim.admin.menu.assemblies_submenu"),
116
+ decidim_admin_assemblies.assembly_attachments_path(current_participatory_space),
117
+ active: is_active_link?(decidim_admin_assemblies.assembly_attachments_path(current_participatory_space)),
118
+ if: allowed_to?(:read, :attachment, assembly: current_participatory_space)
104
119
  end
105
120
  end
121
+ initializer "decidim_assemblies.admin_assemblies_components_menu" do
122
+ Decidim.menu :admin_assemblies_components_menu do |menu|
123
+ current_participatory_space.components.each do |component|
124
+ caption = translated_attribute(component.name)
125
+ if component.primary_stat.present?
126
+ caption += content_tag(:span, component.primary_stat, class: component.primary_stat.zero? ? "component-counter component-counter--off" : "component-counter")
127
+ end
106
128
 
129
+ menu.add_item [component.manifest_name, component.id].join("_"),
130
+ caption.html_safe,
131
+ manage_component_path(component),
132
+ active: is_active_link?(manage_component_path(component)) ||
133
+ is_active_link?(decidim_admin_assemblies.edit_component_path(current_participatory_space, component)) ||
134
+ is_active_link?(decidim_admin_assemblies.edit_component_permissions_path(current_participatory_space, component)) ||
135
+ participatory_space_active_link?(component),
136
+ if: component.manifest.admin_engine && user_role_config.component_is_accessible?(component.manifest_name)
137
+ end
138
+ end
139
+ end
140
+ initializer "decidim_assemblies.assemblies_admin_menu" do
141
+ Decidim.menu :admin_assembly_menu do |menu|
142
+ menu.add_item :edit_assembly,
143
+ I18n.t("info", scope: "decidim.admin.menu.assemblies_submenu"),
144
+ decidim_admin_assemblies.edit_assembly_path(current_participatory_space),
145
+ position: 1,
146
+ if: allowed_to?(:update, :assembly, assembly: current_participatory_space),
147
+ active: is_active_link?(decidim_admin_assemblies.edit_assembly_path(current_participatory_space))
148
+
149
+ menu.add_item :components,
150
+ I18n.t("components", scope: "decidim.admin.menu.assemblies_submenu"),
151
+ decidim_admin_assemblies.components_path(current_participatory_space),
152
+ active: is_active_link?(decidim_admin_assemblies.components_path(current_participatory_space)),
153
+ if: allowed_to?(:read, :component, assembly: current_participatory_space),
154
+ submenu: { target_menu: :admin_assemblies_components_menu, options: { container_options: { id: "components-list" } } }
155
+
156
+ menu.add_item :categories,
157
+ I18n.t("categories", scope: "decidim.admin.menu.assemblies_submenu"),
158
+ decidim_admin_assemblies.categories_path(current_participatory_space),
159
+ if: allowed_to?(:read, :category, assembly: current_participatory_space),
160
+ active: is_active_link?(decidim_admin_assemblies.categories_path(current_participatory_space))
161
+
162
+ menu.add_item :attachments,
163
+ I18n.t("attachments", scope: "decidim.admin.menu.assemblies_submenu"),
164
+ "#",
165
+ active: is_active_link?(decidim_admin_assemblies.assembly_attachment_collections_path(current_participatory_space)) ||
166
+ is_active_link?(decidim_admin_assemblies.assembly_attachments_path(current_participatory_space)),
167
+ if: allowed_to?(:read, :attachment_collection, assembly: current_participatory_space) ||
168
+ allowed_to?(:read, :attachment, assembly: current_participatory_space),
169
+ submenu: { target_menu: :assemblies_admin_attachments_menu }
170
+
171
+ menu.add_item :assembly_members,
172
+ I18n.t("assembly_members", scope: "decidim.admin.menu.assemblies_submenu"),
173
+ decidim_admin_assemblies.assembly_members_path(current_participatory_space),
174
+ if: allowed_to?(:read, :assembly_member, assembly: current_participatory_space),
175
+ active: is_active_link?(decidim_admin_assemblies.assembly_members_path(current_participatory_space))
176
+
177
+ menu.add_item :assembly_user_roles,
178
+ I18n.t("assembly_admins", scope: "decidim.admin.menu.assemblies_submenu"),
179
+ decidim_admin_assemblies.assembly_user_roles_path(current_participatory_space),
180
+ if: allowed_to?(:read, :assembly_user_role, assembly: current_participatory_space),
181
+ active: is_active_link?(decidim_admin_assemblies.assembly_user_roles_path(current_participatory_space))
182
+
183
+ menu.add_item :participatory_space_private_users,
184
+ I18n.t("private_users", scope: "decidim.admin.menu.assemblies_submenu"),
185
+ decidim_admin_assemblies.participatory_space_private_users_path(current_participatory_space),
186
+ if: allowed_to?(:read, :space_private_user, assembly: current_participatory_space),
187
+ active: is_active_link?(decidim_admin_assemblies.participatory_space_private_users_path(current_participatory_space))
188
+
189
+ menu.add_item :moderations,
190
+ I18n.t("moderations", scope: "decidim.admin.menu.assemblies_submenu"),
191
+ decidim_admin_assemblies.moderations_path(current_participatory_space),
192
+ if: allowed_to?(:read, :moderation, assembly: current_participatory_space),
193
+ active: is_active_link?(decidim_admin_assemblies.moderations_path(current_participatory_space))
194
+ end
195
+ end
107
196
  initializer "decidim_assemblies.admin_assemblies_menu" do
108
197
  Decidim.menu :admin_assemblies_menu do |menu|
109
- menu.item I18n.t("menu.assemblies", scope: "decidim.admin"),
110
- decidim_admin_assemblies.assemblies_path,
111
- position: 1.0,
112
- active: is_active_link?(decidim_admin_assemblies.assemblies_path),
113
- if: allowed_to?(:read, :assembly_list)
114
-
115
- menu.item I18n.t("menu.assemblies_types", scope: "decidim.admin"),
116
- decidim_admin_assemblies.assemblies_types_path,
117
- active: is_active_link?(decidim_admin_assemblies.assemblies_types_path),
118
- position: 1.1,
119
- if: allowed_to?(:manage, :assemblies_type)
120
-
121
- menu.item I18n.t("menu.assemblies_settings", scope: "decidim.admin"),
122
- decidim_admin_assemblies.edit_assemblies_settings_path,
123
- active: is_active_link?(decidim_admin_assemblies.edit_assemblies_settings_path),
124
- position: 1.3,
125
- if: allowed_to?(:read, :assemblies_setting)
198
+ menu.add_item :assemblies,
199
+ I18n.t("menu.assemblies", scope: "decidim.admin"),
200
+ decidim_admin_assemblies.assemblies_path,
201
+ position: 1.0,
202
+ active: is_active_link?(decidim_admin_assemblies.assemblies_path),
203
+ if: allowed_to?(:read, :assembly_list)
204
+
205
+ menu.add_item :assemblies_types,
206
+ I18n.t("menu.assemblies_types", scope: "decidim.admin"),
207
+ decidim_admin_assemblies.assemblies_types_path,
208
+ active: is_active_link?(decidim_admin_assemblies.assemblies_types_path),
209
+ position: 1.1,
210
+ if: allowed_to?(:manage, :assemblies_type)
211
+
212
+ menu.add_item :edit_assemblies_settings,
213
+ I18n.t("menu.assemblies_settings", scope: "decidim.admin"),
214
+ decidim_admin_assemblies.edit_assemblies_settings_path,
215
+ active: is_active_link?(decidim_admin_assemblies.edit_assemblies_settings_path),
216
+ position: 1.3,
217
+ if: allowed_to?(:read, :assemblies_setting)
126
218
  end
127
219
  end
128
220
  end