decidim-assemblies 0.27.5 → 0.28.0.rc4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (194) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/assemblies/assemblies/show.erb +16 -0
  3. data/app/cells/decidim/assemblies/assemblies_cell.rb +24 -0
  4. data/app/cells/decidim/assemblies/assembly_cell.rb +7 -2
  5. data/app/cells/decidim/assemblies/assembly_dropdown_metadata_cell.rb +19 -0
  6. data/app/cells/decidim/assemblies/assembly_g_cell.rb +23 -0
  7. data/app/cells/decidim/assemblies/assembly_member/data.erb +19 -0
  8. data/app/cells/decidim/assemblies/assembly_member/name_and_position.erb +11 -0
  9. data/app/cells/decidim/assemblies/assembly_member/show.erb +8 -52
  10. data/app/cells/decidim/assemblies/assembly_metadata_g_cell.rb +46 -0
  11. data/app/cells/decidim/assemblies/assembly_s_cell.rb +15 -0
  12. data/app/cells/decidim/assemblies/content_block_cell.rb +21 -0
  13. data/app/cells/decidim/assemblies/content_blocks/children_assemblies_cell.rb +27 -0
  14. data/app/cells/decidim/assemblies/content_blocks/dates_metadata_cell.rb +23 -0
  15. data/app/cells/decidim/assemblies/content_blocks/extra_data_cell.rb +39 -0
  16. data/app/cells/decidim/assemblies/content_blocks/highlighted_assemblies_cell.rb +15 -23
  17. data/app/cells/decidim/assemblies/content_blocks/highlighted_assemblies_settings_form/show.erb +1 -1
  18. data/app/cells/decidim/assemblies/content_blocks/main_data_cell.rb +52 -0
  19. data/app/cells/decidim/assemblies/content_blocks/metadata_cell.rb +23 -0
  20. data/app/cells/decidim/assemblies/content_blocks/related_assemblies/content.erb +1 -0
  21. data/app/cells/decidim/assemblies/content_blocks/related_assemblies_cell.rb +34 -0
  22. data/app/cells/decidim/assemblies/content_blocks/stats_cell.rb +15 -0
  23. data/app/commands/decidim/assemblies/admin/copy_assembly.rb +2 -2
  24. data/app/commands/decidim/assemblies/admin/create_assemblies_type.rb +1 -1
  25. data/app/commands/decidim/assemblies/admin/create_assembly.rb +2 -1
  26. data/app/commands/decidim/assemblies/admin/create_assembly_member.rb +3 -3
  27. data/app/commands/decidim/assemblies/admin/destroy_assemblies_type.rb +1 -1
  28. data/app/commands/decidim/assemblies/admin/destroy_assembly_member.rb +1 -1
  29. data/app/commands/decidim/assemblies/admin/import_assembly.rb +1 -1
  30. data/app/commands/decidim/assemblies/admin/update_assemblies_type.rb +1 -1
  31. data/app/commands/decidim/assemblies/admin/update_assembly.rb +1 -1
  32. data/app/commands/decidim/assemblies/admin/update_assembly_member.rb +1 -1
  33. data/app/constraints/decidim/assemblies/current_assembly.rb +1 -1
  34. data/app/controllers/concerns/decidim/assemblies/admin/assembly_context.rb +1 -1
  35. data/app/controllers/concerns/decidim/assemblies/admin/assembly_members/filterable.rb +39 -0
  36. data/app/controllers/concerns/decidim/assemblies/assembly_breadcrumb.rb +36 -0
  37. data/app/controllers/decidim/assemblies/admin/assemblies_controller.rb +1 -0
  38. data/app/controllers/decidim/assemblies/admin/assemblies_types_controller.rb +1 -1
  39. data/app/controllers/decidim/assemblies/admin/assembly_attachment_collections_controller.rb +5 -0
  40. data/app/controllers/decidim/assemblies/admin/assembly_attachments_controller.rb +5 -0
  41. data/app/controllers/decidim/assemblies/admin/assembly_imports_controller.rb +2 -0
  42. data/app/controllers/decidim/assemblies/admin/assembly_landing_page_content_blocks_controller.rb +35 -0
  43. data/app/controllers/decidim/assemblies/admin/assembly_landing_page_controller.rb +37 -0
  44. data/app/controllers/decidim/assemblies/admin/assembly_members_controller.rb +2 -6
  45. data/app/controllers/decidim/assemblies/admin/assembly_publications_controller.rb +9 -29
  46. data/app/controllers/decidim/assemblies/admin/assembly_user_roles_controller.rb +8 -91
  47. data/app/controllers/decidim/assemblies/admin/concerns/assembly_admin.rb +1 -1
  48. data/app/controllers/decidim/assemblies/assemblies_controller.rb +12 -7
  49. data/app/controllers/decidim/assemblies/assembly_members_controller.rb +2 -0
  50. data/app/events/decidim/role_assigned_to_assembly_event.rb +6 -6
  51. data/app/forms/decidim/assemblies/admin/assembly_copy_form.rb +1 -1
  52. data/app/forms/decidim/assemblies/admin/assembly_form.rb +1 -1
  53. data/app/forms/decidim/assemblies/admin/assembly_import_form.rb +1 -1
  54. data/app/forms/decidim/assemblies/admin/assembly_user_role_form.rb +2 -18
  55. data/app/helpers/decidim/assemblies/admin/assembly_members_helper.rb +11 -0
  56. data/app/helpers/decidim/assemblies/application_helper.rb +12 -0
  57. data/app/helpers/decidim/assemblies/assemblies_helper.rb +20 -18
  58. data/app/helpers/decidim/assemblies/filter_assemblies_helper.rb +15 -30
  59. data/app/models/decidim/assembly.rb +6 -5
  60. data/app/models/decidim/assembly_user_role.rb +5 -33
  61. data/app/packs/entrypoints/decidim_assemblies.js +0 -1
  62. data/app/packs/src/decidim/assemblies/admin/assemblies.js +2 -2
  63. data/app/packs/src/decidim/assemblies/orgchart.js +0 -701
  64. data/app/permissions/decidim/assemblies/permissions.rb +14 -15
  65. data/app/presenters/decidim/assemblies/admin_log/assemblies_setting_presenter.rb +2 -2
  66. data/app/presenters/decidim/assemblies/admin_log/assemblies_type_presenter.rb +2 -2
  67. data/app/presenters/decidim/assemblies/admin_log/assembly_member_presenter.rb +2 -2
  68. data/app/presenters/decidim/assemblies/admin_log/assembly_presenter.rb +2 -2
  69. data/app/presenters/decidim/assemblies/admin_log/assembly_user_role_presenter.rb +2 -2
  70. data/app/presenters/decidim/assemblies/assembly_presenter.rb +38 -0
  71. data/app/presenters/decidim/assemblies/assembly_stats_presenter.rb +2 -41
  72. data/app/presenters/decidim/assembly_member_presenter.rb +18 -4
  73. data/app/queries/decidim/assemblies/admin/admin_users.rb +1 -1
  74. data/app/queries/decidim/assemblies/assemblies_with_user_role.rb +2 -2
  75. data/app/serializers/decidim/assemblies/assembly_importer.rb +3 -3
  76. data/app/serializers/decidim/assemblies/assembly_serializer.rb +1 -1
  77. data/app/views/decidim/assemblies/admin/assemblies/_form.html.erb +218 -176
  78. data/app/views/decidim/assemblies/admin/assemblies/edit.html.erb +25 -11
  79. data/app/views/decidim/assemblies/admin/assemblies/index.html.erb +105 -115
  80. data/app/views/decidim/assemblies/admin/assemblies/new.html.erb +16 -9
  81. data/app/views/decidim/assemblies/admin/assemblies_types/_form.html.erb +6 -8
  82. data/app/views/decidim/assemblies/admin/assemblies_types/edit.html.erb +11 -5
  83. data/app/views/decidim/assemblies/admin/assemblies_types/index.html.erb +34 -35
  84. data/app/views/decidim/assemblies/admin/assemblies_types/new.html.erb +16 -6
  85. data/app/views/decidim/assemblies/admin/assembly_copies/_form.html.erb +12 -20
  86. data/app/views/decidim/assemblies/admin/assembly_copies/new.html.erb +17 -5
  87. data/app/views/decidim/assemblies/admin/assembly_imports/_form.html.erb +28 -37
  88. data/app/views/decidim/assemblies/admin/assembly_imports/new.html.erb +17 -5
  89. data/app/views/decidim/assemblies/admin/assembly_members/_form.html.erb +45 -49
  90. data/app/views/decidim/assemblies/admin/assembly_members/edit.html.erb +17 -6
  91. data/app/views/decidim/assemblies/admin/assembly_members/index.html.erb +51 -88
  92. data/app/views/decidim/assemblies/admin/assembly_members/new.html.erb +17 -6
  93. data/app/views/decidim/assemblies/admin/assembly_user_roles/_form.html.erb +14 -18
  94. data/app/views/decidim/assemblies/admin/assembly_user_roles/edit.html.erb +17 -6
  95. data/app/views/decidim/assemblies/admin/assembly_user_roles/index.html.erb +54 -55
  96. data/app/views/decidim/assemblies/admin/assembly_user_roles/new.html.erb +17 -6
  97. data/app/views/decidim/assemblies/assemblies/_collection.html.erb +7 -0
  98. data/app/views/decidim/assemblies/assemblies/index.html.erb +20 -19
  99. data/app/views/decidim/assemblies/assemblies/index.js.erb +1 -8
  100. data/app/views/decidim/assemblies/assemblies/show.html.erb +17 -207
  101. data/app/views/decidim/assemblies/assembly_members/index.html.erb +7 -5
  102. data/app/views/decidim/assemblies/pages/user_profile/_member_of.html.erb +6 -9
  103. data/app/views/layouts/decidim/admin/_manage_assemblies.html.erb +36 -0
  104. data/app/views/layouts/decidim/admin/assemblies.html.erb +13 -11
  105. data/app/views/layouts/decidim/admin/assemblies_imports.html.erb +9 -0
  106. data/app/views/layouts/decidim/admin/assemblies_types.html.erb +17 -0
  107. data/app/views/layouts/decidim/admin/assembly.html.erb +12 -13
  108. data/app/views/layouts/decidim/assembly.html.erb +7 -14
  109. data/config/locales/ar.yml +6 -67
  110. data/config/locales/bg.yml +0 -4
  111. data/config/locales/ca.yml +57 -66
  112. data/config/locales/cs.yml +59 -66
  113. data/config/locales/de.yml +57 -66
  114. data/config/locales/el.yml +10 -61
  115. data/config/locales/en.yml +57 -66
  116. data/config/locales/es-MX.yml +57 -66
  117. data/config/locales/es-PY.yml +57 -66
  118. data/config/locales/es.yml +57 -66
  119. data/config/locales/eu.yml +56 -69
  120. data/config/locales/fi-plain.yml +57 -66
  121. data/config/locales/fi.yml +57 -66
  122. data/config/locales/fr-CA.yml +57 -66
  123. data/config/locales/fr.yml +57 -66
  124. data/config/locales/ga-IE.yml +4 -15
  125. data/config/locales/gl.yml +3 -62
  126. data/config/locales/hu.yml +33 -63
  127. data/config/locales/id-ID.yml +4 -46
  128. data/config/locales/is-IS.yml +4 -40
  129. data/config/locales/it.yml +4 -62
  130. data/config/locales/ja.yml +51 -66
  131. data/config/locales/kaa.yml +0 -8
  132. data/config/locales/lb.yml +4 -60
  133. data/config/locales/lt.yml +39 -63
  134. data/config/locales/lv.yml +4 -57
  135. data/config/locales/nl.yml +3 -62
  136. data/config/locales/no.yml +4 -62
  137. data/config/locales/pl.yml +3 -89
  138. data/config/locales/pt-BR.yml +27 -70
  139. data/config/locales/pt.yml +4 -62
  140. data/config/locales/ro-RO.yml +19 -63
  141. data/config/locales/ru.yml +4 -44
  142. data/config/locales/sk.yml +0 -25
  143. data/config/locales/sl.yml +4 -48
  144. data/config/locales/sr-CS.yml +0 -5
  145. data/config/locales/sv.yml +17 -62
  146. data/config/locales/tr-TR.yml +6 -68
  147. data/config/locales/uk.yml +4 -44
  148. data/config/locales/zh-CN.yml +4 -60
  149. data/config/locales/zh-TW.yml +5 -62
  150. data/db/migrate/20200108123050_migrate_decidim_assembly_types.rb +1 -1
  151. data/lib/decidim/api/assemblies_type_type.rb +1 -1
  152. data/lib/decidim/api/assembly_member_type.rb +1 -1
  153. data/lib/decidim/api/assembly_type.rb +1 -1
  154. data/lib/decidim/assemblies/admin_engine.rb +21 -126
  155. data/lib/decidim/assemblies/content_blocks/registry_manager.rb +184 -0
  156. data/lib/decidim/assemblies/engine.rb +15 -21
  157. data/lib/decidim/assemblies/menu.rb +161 -0
  158. data/lib/decidim/assemblies/participatory_space.rb +7 -229
  159. data/lib/decidim/assemblies/query_extensions.rb +6 -6
  160. data/lib/decidim/assemblies/seeds.rb +161 -0
  161. data/lib/decidim/assemblies/test/factories.rb +22 -11
  162. data/lib/decidim/assemblies/version.rb +1 -1
  163. metadata +53 -49
  164. data/app/cells/decidim/assemblies/assembly_m/footer.erb +0 -15
  165. data/app/cells/decidim/assemblies/assembly_m/tags.erb +0 -1
  166. data/app/cells/decidim/assemblies/assembly_m_cell.rb +0 -77
  167. data/app/cells/decidim/assemblies/content_blocks/highlighted_assemblies/show.erb +0 -30
  168. data/app/commands/decidim/assemblies/admin/create_assembly_admin.rb +0 -54
  169. data/app/commands/decidim/assemblies/admin/destroy_assembly_admin.rb +0 -58
  170. data/app/commands/decidim/assemblies/admin/notify_role_assigned_to_assembly.rb +0 -22
  171. data/app/commands/decidim/assemblies/admin/publish_assembly.rb +0 -39
  172. data/app/commands/decidim/assemblies/admin/unpublish_assembly.rb +0 -39
  173. data/app/commands/decidim/assemblies/admin/update_assemblies_setting.rb +0 -46
  174. data/app/commands/decidim/assemblies/admin/update_assembly_admin.rb +0 -53
  175. data/app/controllers/decidim/assemblies/admin/assemblies_settings_controller.rb +0 -49
  176. data/app/controllers/decidim/assemblies/widgets_controller.rb +0 -23
  177. data/app/forms/decidim/assemblies/admin/assemblies_setting_form.rb +0 -14
  178. data/app/models/decidim/assemblies_setting.rb +0 -17
  179. data/app/queries/decidim/assemblies/admin/assembly_members.rb +0 -56
  180. data/app/views/decidim/assemblies/_filter_by_type.html.erb +0 -19
  181. data/app/views/decidim/assemblies/admin/assemblies_settings/_form.html.erb +0 -10
  182. data/app/views/decidim/assemblies/admin/assemblies_settings/edit.html.erb +0 -7
  183. data/app/views/decidim/assemblies/assemblies/_count.html.erb +0 -1
  184. data/app/views/decidim/assemblies/assemblies/_nav_breadcumb.html.erb +0 -11
  185. data/app/views/decidim/assemblies/assemblies/_parent_assemblies.html.erb +0 -15
  186. data/app/views/decidim/assemblies/assemblies/_promoted_assembly.html.erb +0 -27
  187. data/app/views/layouts/decidim/_assembly_header.html.erb +0 -27
  188. data/app/views/layouts/decidim/_assembly_navigation.html.erb +0 -24
  189. data/app/views/layouts/decidim/admin/assembly_members.html.erb +0 -18
  190. data/config/environment.rb +0 -3
  191. data/db/seeds/Exampledocument.pdf +0 -0
  192. data/db/seeds/city.jpeg +0 -0
  193. data/db/seeds/city2.jpeg +0 -0
  194. data/db/seeds/homepage_image.jpg +0 -0
@@ -5,6 +5,8 @@ require "active_support/all"
5
5
 
6
6
  require "decidim/core"
7
7
  require "decidim/assemblies/query_extensions"
8
+ require "decidim/assemblies/content_blocks/registry_manager"
9
+ require "decidim/assemblies/menu"
8
10
 
9
11
  module Decidim
10
12
  module Assemblies
@@ -25,7 +27,6 @@ module Decidim
25
27
 
26
28
  resources :assemblies, only: [:index, :show], param: :slug, path: "assemblies" do
27
29
  resources :assembly_members, only: :index, path: "members"
28
- resource :widget, only: :show, path: "embed"
29
30
  end
30
31
 
31
32
  scope "/assemblies/:assembly_slug/f/:component_id" do
@@ -39,26 +40,27 @@ module Decidim
39
40
  end
40
41
  end
41
42
 
43
+ initializer "decidim_assemblies.register_icons" do
44
+ Decidim.icons.register(name: "Decidim::Assembly", icon: "government-line", description: "Assembly", category: "activity", engine: :assemblies)
45
+ Decidim.icons.register(name: "assembly_type", icon: "group-2-line", description: "Type", category: "assemblies", engine: :assemblies)
46
+
47
+ Decidim.icons.register(name: "group-2-line", icon: "group-2-line", category: "system", description: "", engine: :assemblies)
48
+ end
49
+
42
50
  initializer "decidim_assemblies.add_cells_view_paths" do
43
51
  Cell::ViewModel.view_paths << File.expand_path("#{Decidim::Assemblies::Engine.root}/app/cells")
44
52
  Cell::ViewModel.view_paths << File.expand_path("#{Decidim::Assemblies::Engine.root}/app/views") # for partials
45
53
  end
46
54
 
47
- initializer "decidim.stats" do
55
+ initializer "decidim_assemblies.stats" do
48
56
  Decidim.stats.register :assemblies_count, priority: StatsRegistry::HIGH_PRIORITY do |organization, _start_at, _end_at|
49
- Decidim::Assembly.where(organization: organization).public_spaces.count
57
+ Decidim::Assembly.where(organization:).public_spaces.count
50
58
  end
51
59
  end
52
60
 
53
61
  initializer "decidim_assemblies.menu" do
54
- Decidim.menu :menu do |menu|
55
- menu.add_item :assemblies,
56
- I18n.t("menu.assemblies", scope: "decidim"),
57
- decidim_assemblies.assemblies_path,
58
- position: 2.2,
59
- if: OrganizationPublishedAssemblies.new(current_organization, current_user).any?,
60
- active: :inclusive
61
- end
62
+ Decidim::Assemblies::Menu.register_menu!
63
+ Decidim::Assemblies::Menu.register_home_content_block_menu!
62
64
  end
63
65
 
64
66
  initializer "decidim_assemblies.view_hooks" do
@@ -77,22 +79,14 @@ module Decidim
77
79
  view_context.render(
78
80
  partial: "decidim/assemblies/pages/user_profile/member_of",
79
81
  locals: {
80
- assemblies: assemblies
82
+ assemblies:
81
83
  }
82
84
  )
83
85
  end
84
86
  end
85
87
 
86
88
  initializer "decidim_assemblies.content_blocks" do
87
- Decidim.content_blocks.register(:homepage, :highlighted_assemblies) do |content_block|
88
- content_block.cell = "decidim/assemblies/content_blocks/highlighted_assemblies"
89
- content_block.public_name_key = "decidim.assemblies.content_blocks.highlighted_assemblies.name"
90
- content_block.settings_form_cell = "decidim/assemblies/content_blocks/highlighted_assemblies_settings_form"
91
-
92
- content_block.settings do |settings|
93
- settings.attribute :max_results, type: :integer, default: 4
94
- end
95
- end
89
+ Decidim::Assemblies::ContentBlocks::RegistryManager.register!
96
90
  end
97
91
 
98
92
  initializer "decidim_assemblies.register_metrics" do
@@ -0,0 +1,161 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Assemblies
5
+ class Menu
6
+ def self.register_menu!
7
+ Decidim.menu :menu do |menu|
8
+ menu.add_item :assemblies,
9
+ I18n.t("menu.assemblies", scope: "decidim"),
10
+ decidim_assemblies.assemblies_path,
11
+ position: 2.2,
12
+ if: OrganizationPublishedAssemblies.new(current_organization, current_user).any?,
13
+ active: :inclusive
14
+ end
15
+ end
16
+
17
+ def self.register_home_content_block_menu!
18
+ Decidim.menu :home_content_block_menu do |menu|
19
+ menu.add_item :assemblies,
20
+ I18n.t("menu.assemblies", scope: "decidim"),
21
+ decidim_assemblies.assemblies_path,
22
+ position: 20,
23
+ if: OrganizationPublishedAssemblies.new(current_organization, current_user).any?,
24
+ active: :inclusive
25
+ end
26
+ end
27
+
28
+ def self.register_admin_menu_modules!
29
+ Decidim.menu :admin_menu_modules do |menu|
30
+ menu.add_item :assemblies,
31
+ I18n.t("menu.assemblies", scope: "decidim.admin"),
32
+ decidim_admin_assemblies.assemblies_path,
33
+ icon_name: "government-line",
34
+ position: 2.2,
35
+ active: is_active_link?(decidim_admin_assemblies.assemblies_path) ||
36
+ is_active_link?(decidim_admin_assemblies.assemblies_types_path),
37
+ if: allowed_to?(:enter, :space_area, space_name: :assemblies)
38
+ end
39
+ end
40
+
41
+ def self.register_assemblies_admin_attachments_menu!
42
+ Decidim.menu :assemblies_admin_attachments_menu do |menu|
43
+ menu.add_item :assembly_attachments,
44
+ I18n.t("attachment_files", scope: "decidim.admin.menu.assemblies_submenu"),
45
+ decidim_admin_assemblies.assembly_attachments_path(current_participatory_space),
46
+ active: is_active_link?(decidim_admin_assemblies.assembly_attachments_path(current_participatory_space)),
47
+ if: allowed_to?(:read, :attachment, assembly: current_participatory_space),
48
+ icon_name: "attachment-line"
49
+ menu.add_item :assembly_attachment_collections,
50
+ I18n.t("attachment_collections", scope: "decidim.admin.menu.assemblies_submenu"),
51
+ decidim_admin_assemblies.assembly_attachment_collections_path(current_participatory_space),
52
+ active: is_active_link?(decidim_admin_assemblies.assembly_attachment_collections_path(current_participatory_space)),
53
+ if: allowed_to?(:read, :attachment_collection, assembly: current_participatory_space),
54
+ icon_name: "folder-line"
55
+ end
56
+ end
57
+
58
+ def self.register_admin_assemblies_components_menu!
59
+ Decidim.menu :admin_assemblies_components_menu do |menu|
60
+ current_participatory_space.components.each do |component|
61
+ caption = translated_attribute(component.name)
62
+ if component.primary_stat.present?
63
+ caption += content_tag(:span, component.primary_stat, class: component.primary_stat.zero? ? "component-counter component-counter--off" : "component-counter")
64
+ end
65
+
66
+ menu.add_item [component.manifest_name, component.id].join("_"),
67
+ caption.html_safe,
68
+ manage_component_path(component),
69
+ active: is_active_link?(manage_component_path(component)) ||
70
+ is_active_link?(decidim_admin_assemblies.edit_component_path(current_participatory_space, component)) ||
71
+ is_active_link?(decidim_admin_assemblies.edit_component_permissions_path(current_participatory_space, component)) ||
72
+ participatory_space_active_link?(component),
73
+ if: component.manifest.admin_engine && user_role_config.component_is_accessible?(component.manifest_name)
74
+ end
75
+ end
76
+ end
77
+
78
+ def self.register_admin_assembly_menu!
79
+ Decidim.menu :admin_assembly_menu do |menu|
80
+ menu.add_item :edit_assembly,
81
+ I18n.t("info", scope: "decidim.admin.menu.assemblies_submenu"),
82
+ decidim_admin_assemblies.edit_assembly_path(current_participatory_space),
83
+ position: 1,
84
+ icon_name: "information-line",
85
+ if: allowed_to?(:update, :assembly, assembly: current_participatory_space)
86
+
87
+ menu.add_item :edit_assembly_landing_page,
88
+ I18n.t("landing_page", scope: "decidim.admin.menu.assemblies_submenu"),
89
+ decidim_admin_assemblies.edit_assembly_landing_page_path(current_participatory_space),
90
+ icon_name: "layout-masonry-line",
91
+ if: allowed_to?(:update, :assembly, assembly: current_participatory_space)
92
+
93
+ menu.add_item :components,
94
+ I18n.t("components", scope: "decidim.admin.menu.assemblies_submenu"),
95
+ decidim_admin_assemblies.components_path(current_participatory_space),
96
+ icon_name: "tools-line",
97
+ active: is_active_link?(decidim_admin_assemblies.components_path(current_participatory_space), ["decidim/assemblies/admin/components", %w(index new edit)]),
98
+ if: allowed_to?(:read, :component, assembly: current_participatory_space),
99
+ submenu: { target_menu: :admin_assemblies_components_menu }
100
+
101
+ menu.add_item :categories,
102
+ I18n.t("categories", scope: "decidim.admin.menu.assemblies_submenu"),
103
+ decidim_admin_assemblies.categories_path(current_participatory_space),
104
+ icon_name: "price-tag-3-line",
105
+ if: allowed_to?(:read, :category, assembly: current_participatory_space)
106
+
107
+ menu.add_item :attachments,
108
+ I18n.t("attachments", scope: "decidim.admin.menu.assemblies_submenu"),
109
+ decidim_admin_assemblies.assembly_attachments_path(current_participatory_space),
110
+ icon_name: "attachment-2",
111
+ active: is_active_link?(decidim_admin_assemblies.assembly_attachments_path(current_participatory_space)) ||
112
+ is_active_link?(decidim_admin_assemblies.assembly_attachment_collections_path(current_participatory_space)),
113
+ if: allowed_to?(:read, :attachment_collection, assembly: current_participatory_space) ||
114
+ allowed_to?(:read, :attachment, assembly: current_participatory_space)
115
+
116
+ menu.add_item :assembly_members,
117
+ I18n.t("assembly_members", scope: "decidim.admin.menu.assemblies_submenu"),
118
+ decidim_admin_assemblies.assembly_members_path(current_participatory_space),
119
+ icon_name: "user-settings-line",
120
+ if: allowed_to?(:read, :assembly_member, assembly: current_participatory_space)
121
+
122
+ menu.add_item :assembly_user_roles,
123
+ I18n.t("assembly_admins", scope: "decidim.admin.menu.assemblies_submenu"),
124
+ decidim_admin_assemblies.assembly_user_roles_path(current_participatory_space),
125
+ icon_name: "user-settings-line",
126
+ if: allowed_to?(:read, :assembly_user_role, assembly: current_participatory_space)
127
+
128
+ menu.add_item :participatory_space_private_users,
129
+ I18n.t("private_users", scope: "decidim.admin.menu.assemblies_submenu"),
130
+ decidim_admin_assemblies.participatory_space_private_users_path(current_participatory_space),
131
+ icon_name: "spy-line",
132
+ if: allowed_to?(:read, :space_private_user, current_participatory_space:)
133
+
134
+ menu.add_item :moderations,
135
+ I18n.t("moderations", scope: "decidim.admin.menu.assemblies_submenu"),
136
+ decidim_admin_assemblies.moderations_path(current_participatory_space),
137
+ icon_name: "flag-line",
138
+ if: allowed_to?(:read, :moderation, assembly: current_participatory_space)
139
+ end
140
+ end
141
+
142
+ def self.register_admin_assemblies_menu!
143
+ Decidim.menu :admin_assemblies_menu do |menu|
144
+ menu.add_item :assemblies,
145
+ I18n.t("menu.assemblies", scope: "decidim.admin"),
146
+ decidim_admin_assemblies.assemblies_path,
147
+ position: 1.0,
148
+ active: is_active_link?(decidim_admin_assemblies.assemblies_path),
149
+ if: allowed_to?(:read, :assembly_list)
150
+
151
+ menu.add_item :assemblies_types,
152
+ I18n.t("menu.assemblies_types", scope: "decidim.admin"),
153
+ decidim_admin_assemblies.assemblies_types_path,
154
+ active: is_active_link?(decidim_admin_assemblies.assemblies_types_path),
155
+ position: 1.1,
156
+ if: allowed_to?(:manage, :assemblies_type)
157
+ end
158
+ end
159
+ end
160
+ end
161
+ end
@@ -3,6 +3,7 @@
3
3
  Decidim.register_participatory_space(:assemblies) do |participatory_space|
4
4
  participatory_space.icon = "media/images/decidim_assemblies.svg"
5
5
  participatory_space.model_class_name = "Decidim::Assembly"
6
+ participatory_space.content_blocks_scope_name = "assembly_homepage"
6
7
 
7
8
  participatory_space.participatory_spaces do |organization|
8
9
  Decidim::Assemblies::OrganizationAssemblies.new(organization).query
@@ -12,6 +13,8 @@ Decidim.register_participatory_space(:assemblies) do |participatory_space|
12
13
 
13
14
  participatory_space.query_type = "Decidim::Assemblies::AssemblyType"
14
15
 
16
+ participatory_space.breadcrumb_cell = "decidim/assemblies/assembly_dropdown_metadata"
17
+
15
18
  participatory_space.register_resource(:assembly) do |resource|
16
19
  resource.model_class_name = "Decidim::Assembly"
17
20
  resource.card = "decidim/assemblies/assembly"
@@ -37,238 +40,13 @@ Decidim.register_participatory_space(:assemblies) do |participatory_space|
37
40
  end
38
41
 
39
42
  participatory_space.register_on_destroy_account do |user|
40
- Decidim::AssemblyUserRole.where(user: user).destroy_all
41
- Decidim::AssemblyMember.where(user: user).destroy_all
43
+ Decidim::AssemblyUserRole.where(user:).destroy_all
44
+ Decidim::AssemblyMember.where(user:).destroy_all
42
45
  end
43
46
 
44
47
  participatory_space.seeds do
45
- organization = Decidim::Organization.first
46
- seeds_root = File.join(__dir__, "..", "..", "..", "db", "seeds")
47
-
48
- Decidim::ContentBlock.create(
49
- organization: organization,
50
- weight: 32,
51
- scope_name: :homepage,
52
- manifest_name: :highlighted_assemblies,
53
- published_at: Time.current
54
- )
55
-
56
- 2.times do |n|
57
- params = {
58
- title: Decidim::Faker::Localized.sentence(word_count: 5),
59
- slug: Decidim::Faker::Internet.unique.slug(words: nil, glue: "-"),
60
- subtitle: Decidim::Faker::Localized.sentence(word_count: 2),
61
- hashtag: "##{Faker::Lorem.word}",
62
- short_description: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
63
- Decidim::Faker::Localized.sentence(word_count: 3)
64
- end,
65
- description: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
66
- Decidim::Faker::Localized.paragraph(sentence_count: 3)
67
- end,
68
- organization: organization,
69
- hero_image: ActiveStorage::Blob.create_and_upload!(
70
- io: File.open(File.join(seeds_root, "city.jpeg")),
71
- filename: "hero_image.jpeg",
72
- content_type: "image/jpeg",
73
- metadata: nil
74
- ), # Keep after organization
75
- banner_image: ActiveStorage::Blob.create_and_upload!(
76
- io: File.open(File.join(seeds_root, "city2.jpeg")),
77
- filename: "banner_image.jpeg",
78
- content_type: "image/jpeg",
79
- metadata: nil
80
- ), # Keep after organization
81
- promoted: true,
82
- published_at: 2.weeks.ago,
83
- meta_scope: Decidim::Faker::Localized.word,
84
- developer_group: Decidim::Faker::Localized.sentence(word_count: 1),
85
- local_area: Decidim::Faker::Localized.sentence(word_count: 2),
86
- target: Decidim::Faker::Localized.sentence(word_count: 3),
87
- participatory_scope: Decidim::Faker::Localized.sentence(word_count: 1),
88
- participatory_structure: Decidim::Faker::Localized.sentence(word_count: 2),
89
- scope: n.positive? ? Decidim::Scope.reorder(Arel.sql("RANDOM()")).first : nil,
90
- purpose_of_action: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
91
- Decidim::Faker::Localized.paragraph(sentence_count: 3)
92
- end,
93
- composition: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
94
- Decidim::Faker::Localized.paragraph(sentence_count: 3)
95
- end,
96
- assembly_type: Decidim::AssembliesType.create!(organization: organization, title: Decidim::Faker::Localized.word),
97
- creation_date: 1.day.from_now,
98
- created_by: "others",
99
- created_by_other: Decidim::Faker::Localized.word,
100
- duration: 2.days.from_now,
101
- included_at: 5.days.from_now,
102
- closing_date: 5.days.from_now,
103
- closing_date_reason: Decidim::Faker::Localized.sentence(word_count: 3),
104
- internal_organisation: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
105
- Decidim::Faker::Localized.paragraph(sentence_count: 3)
106
- end,
107
- is_transparent: true,
108
- special_features: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
109
- Decidim::Faker::Localized.paragraph(sentence_count: 3)
110
- end,
111
- twitter_handler: Faker::Lorem.word,
112
- facebook_handler: Faker::Lorem.word,
113
- instagram_handler: Faker::Lorem.word,
114
- youtube_handler: Faker::Lorem.word,
115
- github_handler: Faker::Lorem.word
116
- }
117
-
118
- assembly = Decidim.traceability.perform_action!(
119
- "publish",
120
- Decidim::Assembly,
121
- organization.users.first,
122
- visibility: "all"
123
- ) do
124
- Decidim::Assembly.create!(params)
125
- end
126
-
127
- # Create users with specific roles
128
- Decidim::AssemblyUserRole::ROLES.each do |role|
129
- email = "assembly_#{assembly.id}_#{role}@example.org"
130
-
131
- user = Decidim::User.find_or_initialize_by(email: email)
132
- user.update!(
133
- name: Faker::Name.name,
134
- nickname: Faker::Twitter.unique.screen_name,
135
- password: "decidim123456789",
136
- password_confirmation: "decidim123456789",
137
- organization: organization,
138
- confirmed_at: Time.current,
139
- locale: I18n.default_locale,
140
- tos_agreement: true
141
- )
142
-
143
- Decidim::AssemblyUserRole.find_or_create_by!(
144
- user: user,
145
- assembly: assembly,
146
- role: role
147
- )
148
- end
149
-
150
- child = Decidim::Assembly.create!(
151
- title: Decidim::Faker::Localized.sentence(word_count: 5),
152
- slug: Decidim::Faker::Internet.unique.slug(words: nil, glue: "-"),
153
- subtitle: Decidim::Faker::Localized.sentence(word_count: 2),
154
- hashtag: "##{Faker::Lorem.word}",
155
- short_description: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
156
- Decidim::Faker::Localized.sentence(word_count: 3)
157
- end,
158
- description: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
159
- Decidim::Faker::Localized.paragraph(sentence_count: 3)
160
- end,
161
- organization: organization,
162
- hero_image: ActiveStorage::Blob.create_and_upload!(
163
- io: File.open(File.join(seeds_root, "city.jpeg")),
164
- filename: "hero_image.jpeg",
165
- content_type: "image/jpeg",
166
- metadata: nil
167
- ), # Keep after organization
168
- banner_image: ActiveStorage::Blob.create_and_upload!(
169
- io: File.open(File.join(seeds_root, "city2.jpeg")),
170
- filename: "banner_image.jpeg",
171
- content_type: "image/jpeg",
172
- metadata: nil
173
- ), # Keep after organization
174
- promoted: true,
175
- published_at: 2.weeks.ago,
176
- meta_scope: Decidim::Faker::Localized.word,
177
- developer_group: Decidim::Faker::Localized.sentence(word_count: 1),
178
- local_area: Decidim::Faker::Localized.sentence(word_count: 2),
179
- target: Decidim::Faker::Localized.sentence(word_count: 3),
180
- participatory_scope: Decidim::Faker::Localized.sentence(word_count: 1),
181
- participatory_structure: Decidim::Faker::Localized.sentence(word_count: 2),
182
- scope: n.positive? ? Decidim::Scope.reorder(Arel.sql("RANDOM()")).first : nil,
183
- parent: assembly
184
- )
48
+ require "decidim/assemblies/seeds"
185
49
 
186
- [assembly, child].each do |current_assembly|
187
- current_assembly.add_to_index_as_search_resource
188
- attachment_collection = Decidim::AttachmentCollection.create!(
189
- name: Decidim::Faker::Localized.word,
190
- description: Decidim::Faker::Localized.sentence(word_count: 5),
191
- collection_for: current_assembly
192
- )
193
-
194
- Decidim::Attachment.create!(
195
- title: Decidim::Faker::Localized.sentence(word_count: 2),
196
- description: Decidim::Faker::Localized.sentence(word_count: 5),
197
- attachment_collection: attachment_collection,
198
- attached_to: current_assembly,
199
- content_type: "application/pdf",
200
- file: ActiveStorage::Blob.create_and_upload!(
201
- io: File.open(File.join(seeds_root, "Exampledocument.pdf")),
202
- filename: "Exampledocument.pdf",
203
- content_type: "application/pdf",
204
- metadata: nil
205
- ) # Keep after attached_to
206
- )
207
-
208
- Decidim::Attachment.create!(
209
- title: Decidim::Faker::Localized.sentence(word_count: 2),
210
- description: Decidim::Faker::Localized.sentence(word_count: 5),
211
- attached_to: current_assembly,
212
- content_type: "image/jpeg",
213
- file: ActiveStorage::Blob.create_and_upload!(
214
- io: File.open(File.join(seeds_root, "city.jpeg")),
215
- filename: "city.jpeg",
216
- content_type: "image/jpeg",
217
- metadata: nil
218
- ) # Keep after attached_to
219
- )
220
-
221
- Decidim::Attachment.create!(
222
- title: Decidim::Faker::Localized.sentence(word_count: 2),
223
- description: Decidim::Faker::Localized.sentence(word_count: 5),
224
- attached_to: current_assembly,
225
- content_type: "application/pdf",
226
- file: ActiveStorage::Blob.create_and_upload!(
227
- io: File.open(File.join(seeds_root, "Exampledocument.pdf")),
228
- filename: "Exampledocument.pdf",
229
- content_type: "application/pdf",
230
- metadata: nil
231
- ) # Keep after attached_to
232
- )
233
-
234
- 2.times do
235
- Decidim::Category.create!(
236
- name: Decidim::Faker::Localized.sentence(word_count: 5),
237
- description: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
238
- Decidim::Faker::Localized.paragraph(sentence_count: 3)
239
- end,
240
- participatory_space: current_assembly
241
- )
242
- end
243
-
244
- Decidim::AssemblyMember::POSITIONS.each do |position|
245
- Decidim::AssemblyMember.create!(
246
- full_name: Faker::Name.name,
247
- gender: Faker::Lorem.word,
248
- birthday: Faker::Date.birthday(min_age: 18, max_age: 65),
249
- birthplace: Faker::Demographic.demonym,
250
- designation_date: Faker::Date.between(from: 1.year.ago, to: 1.month.ago),
251
- position: position,
252
- position_other: position == "other" ? Faker::Job.position : nil,
253
- assembly: current_assembly
254
- )
255
- end
256
-
257
- Decidim::AssemblyMember.create!(
258
- user: current_assembly.organization.users.first,
259
- gender: Faker::Lorem.word,
260
- birthday: Faker::Date.birthday(min_age: 18, max_age: 65),
261
- birthplace: Faker::Demographic.demonym,
262
- designation_date: Faker::Date.between(from: 1.year.ago, to: 1.month.ago),
263
- position: "other",
264
- position_other: Faker::Job.position,
265
- assembly: current_assembly
266
- )
267
-
268
- Decidim.component_manifests.each do |manifest|
269
- manifest.seed!(current_assembly.reload)
270
- end
271
- end
272
- end
50
+ Decidim::Assemblies::Seeds.new.call
273
51
  end
274
52
  end
@@ -20,14 +20,14 @@ module Decidim
20
20
  [Decidim::Assemblies::AssemblyType],
21
21
  null: true,
22
22
  description: "Lists all assemblies" do
23
- argument :filter, Decidim::ParticipatoryProcesses::ParticipatoryProcessInputFilter, "This argument let's you filter the results", required: false
24
- argument :order, Decidim::ParticipatoryProcesses::ParticipatoryProcessInputSort, "This argument let's you order the results", required: false
23
+ argument :filter, Decidim::ParticipatoryProcesses::ParticipatoryProcessInputFilter, "This argument lets you filter the results", required: false
24
+ argument :order, Decidim::ParticipatoryProcesses::ParticipatoryProcessInputSort, "This argument lets you order the results", required: false
25
25
  end
26
26
 
27
27
  type.field :assembly,
28
28
  Decidim::Assemblies::AssemblyType,
29
29
  null: true,
30
- description: "Finds a assembly" do
30
+ description: "Finds an assembly" do
31
31
  argument :id, GraphQL::Types::ID, "The ID of the participatory space", required: false
32
32
  end
33
33
  end
@@ -41,18 +41,18 @@ module Decidim
41
41
  def assemblies_type(id:)
42
42
  Decidim::AssembliesType.find_by(
43
43
  organization: context[:current_organization],
44
- id: id
44
+ id:
45
45
  )
46
46
  end
47
47
 
48
48
  def assemblies(filter: {}, order: {})
49
49
  manifest = Decidim.participatory_space_manifests.select { |m| m.name == :assemblies }.first
50
- Decidim::Core::ParticipatorySpaceListBase.new(manifest: manifest).call(object, { filter: filter, order: order }, context)
50
+ Decidim::Core::ParticipatorySpaceListBase.new(manifest:).call(object, { filter:, order: }, context)
51
51
  end
52
52
 
53
53
  def assembly(id: nil)
54
54
  manifest = Decidim.participatory_space_manifests.select { |m| m.name == :assemblies }.first
55
- Decidim::Core::ParticipatorySpaceFinderBase.new(manifest: manifest).call(object, { id: id }, context)
55
+ Decidim::Core::ParticipatorySpaceFinderBase.new(manifest:).call(object, { id: }, context)
56
56
  end
57
57
  end
58
58
  end