decidim-participatory_processes 0.23.3 → 0.24.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (151) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/participatory_process_groups/content_block_cell.rb +17 -0
  3. data/app/cells/decidim/participatory_process_groups/content_blocks/highlighted_participatory_processes/filters.erb +22 -0
  4. data/app/cells/decidim/participatory_process_groups/content_blocks/highlighted_participatory_processes/filters_small_view.erb +18 -0
  5. data/app/cells/decidim/participatory_process_groups/content_blocks/highlighted_participatory_processes/participatory_space_filters.erb +6 -0
  6. data/app/cells/decidim/participatory_process_groups/content_blocks/highlighted_participatory_processes/show.erb +7 -0
  7. data/app/cells/decidim/participatory_process_groups/content_blocks/highlighted_participatory_processes/title_filter_order.erb +8 -0
  8. data/app/cells/decidim/participatory_process_groups/content_blocks/highlighted_participatory_processes_cell.rb +65 -0
  9. data/app/cells/decidim/participatory_process_groups/content_blocks/html/show.erb +3 -0
  10. data/app/cells/decidim/participatory_process_groups/content_blocks/html_cell.rb +13 -0
  11. data/app/cells/decidim/participatory_process_groups/content_blocks/metadata/show.erb +28 -0
  12. data/app/cells/decidim/participatory_process_groups/content_blocks/metadata_cell.rb +15 -0
  13. data/app/cells/decidim/participatory_process_groups/content_blocks/stats/show.erb +13 -0
  14. data/app/cells/decidim/participatory_process_groups/content_blocks/stats_cell.rb +17 -0
  15. data/app/cells/decidim/participatory_process_groups/content_blocks/title/show.erb +43 -0
  16. data/app/cells/decidim/participatory_process_groups/content_blocks/title_cell.rb +56 -0
  17. data/app/cells/decidim/participatory_process_groups/process_filters_cell.rb +78 -0
  18. data/app/cells/decidim/participatory_processes/content_blocks/highlighted_processes/show.erb +2 -16
  19. data/app/cells/decidim/participatory_processes/content_blocks/highlighted_processes/single_process.erb +32 -28
  20. data/app/cells/decidim/participatory_processes/content_blocks/highlighted_processes_cell.rb +33 -10
  21. data/app/cells/decidim/participatory_processes/filtered_participatory_processes/show.erb +3 -0
  22. data/app/cells/decidim/participatory_processes/filtered_participatory_processes_cell.rb +56 -0
  23. data/app/cells/decidim/participatory_processes/process_cell.rb +6 -1
  24. data/app/cells/decidim/participatory_processes/process_filters_cell.rb +1 -1
  25. data/app/cells/decidim/participatory_processes/process_group_cell.rb +6 -1
  26. data/app/cells/decidim/participatory_processes/process_group_m_cell.rb +3 -1
  27. data/app/cells/decidim/participatory_processes/process_group_s/image.erb +1 -0
  28. data/app/cells/decidim/participatory_processes/process_group_s/show.erb +8 -0
  29. data/app/cells/decidim/participatory_processes/process_group_s_cell.rb +23 -0
  30. data/app/cells/decidim/participatory_processes/process_s/image.erb +1 -0
  31. data/app/cells/decidim/participatory_processes/process_s/show.erb +14 -0
  32. data/app/cells/decidim/participatory_processes/process_s_cell.rb +35 -0
  33. data/app/cells/decidim/participatory_processes/statistic/show.erb +3 -3
  34. data/app/cells/decidim/participatory_processes/statistics/show.erb +1 -1
  35. data/app/commands/decidim/participatory_processes/admin/create_participatory_process.rb +1 -0
  36. data/app/commands/decidim/participatory_processes/admin/create_participatory_process_admin.rb +7 -75
  37. data/app/commands/decidim/participatory_processes/admin/create_participatory_process_group.rb +11 -2
  38. data/app/commands/decidim/participatory_processes/admin/update_participatory_process.rb +1 -0
  39. data/app/commands/decidim/participatory_processes/admin/update_participatory_process_group.rb +11 -2
  40. data/app/commands/decidim/participatory_processes/admin/update_participatory_process_step.rb +1 -0
  41. data/app/controllers/decidim/participatory_processes/admin/imports_controller.rb +14 -0
  42. data/app/controllers/decidim/participatory_processes/admin/moderations/reports_controller.rb +18 -0
  43. data/app/controllers/decidim/participatory_processes/admin/participatory_process_group_landing_page_content_blocks_controller.rb +48 -0
  44. data/app/controllers/decidim/participatory_processes/admin/participatory_process_group_landing_page_controller.rb +53 -0
  45. data/app/controllers/decidim/participatory_processes/admin/participatory_process_groups_controller.rb +3 -1
  46. data/app/controllers/decidim/participatory_processes/participatory_process_groups_controller.rb +1 -2
  47. data/app/controllers/decidim/participatory_processes/participatory_processes_controller.rb +14 -1
  48. data/app/events/decidim/participatory_process_role_assigned_event.rb +1 -1
  49. data/app/forms/decidim/participatory_processes/admin/participatory_process_form.rb +1 -0
  50. data/app/forms/decidim/participatory_processes/admin/participatory_process_group_form.rb +34 -2
  51. data/app/forms/decidim/participatory_processes/admin/participatory_process_step_form.rb +1 -1
  52. data/app/helpers/decidim/participatory_processes/admin/participatory_processes_menu_helper.rb +23 -0
  53. data/app/helpers/decidim/participatory_processes/admin/process_groups_for_select_helper.rb +1 -1
  54. data/app/helpers/decidim/participatory_processes/application_helper.rb +0 -12
  55. data/app/helpers/decidim/participatory_processes/participatory_process_helper.rb +35 -0
  56. data/app/models/decidim/participatory_process_group.rb +9 -1
  57. data/app/presenters/decidim/participatory_processes/admin_log/participatory_process_group_presenter.rb +10 -2
  58. data/app/presenters/decidim/participatory_processes/participatory_process_group_stats_presenter.rb +67 -0
  59. data/app/presenters/decidim/participatory_processes/participatory_process_stats_presenter.rb +3 -3
  60. data/app/queries/decidim/participatory_processes/group_participatory_processes.rb +16 -0
  61. data/app/queries/decidim/participatory_processes/group_published_participatory_processes.rb +21 -0
  62. data/app/queries/decidim/participatory_processes/organization_participatory_processes.rb +1 -1
  63. data/app/queries/decidim/participatory_processes/organization_published_participatory_processes.rb +1 -1
  64. data/app/queries/decidim/participatory_processes/promoted_participatory_process_groups.rb +12 -0
  65. data/app/queries/decidim/participatory_processes/stats_followers_count.rb +18 -4
  66. data/app/queries/decidim/participatory_processes/stats_participants_count.rb +18 -4
  67. data/app/queries/decidim/participatory_processes/visible_participatory_process_groups.rb +6 -2
  68. data/app/serializers/decidim/participatory_processes/participatory_process_importer.rb +1 -1
  69. data/app/serializers/decidim/participatory_processes/participatory_process_serializer.rb +1 -1
  70. data/app/services/decidim/participatory_processes/participatory_process_search.rb +2 -1
  71. data/app/views/decidim/participatory_processes/admin/participatory_process_copies/new.html.erb +2 -0
  72. data/app/views/decidim/participatory_processes/admin/participatory_process_groups/_form.html.erb +68 -13
  73. data/app/views/decidim/participatory_processes/admin/participatory_process_groups/edit.html.erb +7 -14
  74. data/app/views/decidim/participatory_processes/admin/participatory_process_groups/index.html.erb +12 -3
  75. data/app/views/decidim/participatory_processes/admin/participatory_process_groups/new.html.erb +2 -8
  76. data/app/views/decidim/participatory_processes/admin/participatory_process_groups/show.html.erb +10 -2
  77. data/app/views/decidim/participatory_processes/admin/participatory_process_steps/edit.html.erb +1 -0
  78. data/app/views/decidim/participatory_processes/admin/participatory_process_steps/index.html.erb +6 -0
  79. data/app/views/decidim/participatory_processes/admin/participatory_process_user_roles/edit.html.erb +2 -0
  80. data/app/views/decidim/participatory_processes/admin/participatory_process_user_roles/index.html.erb +8 -0
  81. data/app/views/decidim/participatory_processes/admin/participatory_process_user_roles/new.html.erb +2 -0
  82. data/app/views/decidim/participatory_processes/admin/participatory_processes/_form.html.erb +4 -0
  83. data/app/views/decidim/participatory_processes/admin/participatory_processes/index.html.erb +14 -3
  84. data/app/views/decidim/participatory_processes/admin/participatory_processes/new.html.erb +2 -0
  85. data/app/views/decidim/participatory_processes/admin/shared/_secondary_nav.html.erb +2 -16
  86. data/app/views/decidim/participatory_processes/participatory_process_groups/show.html.erb +18 -8
  87. data/app/views/decidim/participatory_processes/participatory_process_groups/show.js.erb +12 -0
  88. data/app/views/decidim/participatory_processes/participatory_processes/_participatory_process_group.html.erb +4 -0
  89. data/app/views/decidim/participatory_processes/participatory_processes/_promoted_process_group.html.erb +31 -0
  90. data/app/views/decidim/participatory_processes/participatory_processes/index.html.erb +4 -2
  91. data/app/views/decidim/participatory_processes/participatory_processes/show.html.erb +4 -4
  92. data/app/views/layouts/decidim/admin/participatory_process.html.erb +8 -1
  93. data/app/views/layouts/decidim/admin/participatory_process_group.html.erb +17 -0
  94. data/config/locales/ar.yml +0 -10
  95. data/config/locales/ca.yml +6 -9
  96. data/config/locales/cs.yml +54 -7
  97. data/config/locales/de.yml +52 -5
  98. data/config/locales/el.yml +0 -6
  99. data/config/locales/en.yml +52 -5
  100. data/config/locales/es-MX.yml +0 -9
  101. data/config/locales/es-PY.yml +0 -9
  102. data/config/locales/es.yml +0 -9
  103. data/config/locales/eu.yml +0 -6
  104. data/config/locales/fi-plain.yml +52 -5
  105. data/config/locales/fi.yml +52 -5
  106. data/config/locales/fr-CA.yml +52 -5
  107. data/config/locales/fr.yml +52 -5
  108. data/config/locales/gl.yml +0 -6
  109. data/config/locales/hu.yml +0 -6
  110. data/config/locales/id-ID.yml +0 -5
  111. data/config/locales/is-IS.yml +0 -3
  112. data/config/locales/it.yml +5 -6
  113. data/config/locales/ja.yml +0 -5
  114. data/config/locales/lv.yml +0 -7
  115. data/config/locales/nl.yml +47 -5
  116. data/config/locales/no.yml +0 -6
  117. data/config/locales/pl.yml +27 -7
  118. data/config/locales/pt-BR.yml +0 -6
  119. data/config/locales/pt.yml +0 -6
  120. data/config/locales/ro-RO.yml +0 -7
  121. data/config/locales/ru.yml +0 -8
  122. data/config/locales/sk.yml +0 -8
  123. data/config/locales/sv.yml +7 -6
  124. data/config/locales/tr-TR.yml +51 -5
  125. data/config/locales/uk.yml +0 -8
  126. data/config/locales/zh-CN.yml +0 -5
  127. data/db/migrate/20170220110740_remove_steps_short_description.rb +1 -1
  128. data/db/migrate/20201007215105_add_hashtag_to_participatory_process_groups.rb +7 -0
  129. data/db/migrate/20201008154315_add_metadata_columns_to_participatory_process_groups.rb +13 -0
  130. data/db/migrate/20201013105520_rename_name_column_to_title_in_decidim_participatory_process_groups.rb +39 -0
  131. data/db/migrate/20201030133444_add_promoted_flag_to_decidim_participatory_process_groups.rb +7 -0
  132. data/db/migrate/20210204154593_add_weight_field_to_participatory_processes.rb +7 -0
  133. data/lib/decidim/api/participatory_process_group_type.rb +17 -0
  134. data/{app/types/decidim/participatory_processes → lib/decidim/api}/participatory_process_input_filter.rb +0 -0
  135. data/{app/types/decidim/participatory_processes → lib/decidim/api}/participatory_process_input_sort.rb +2 -2
  136. data/lib/decidim/api/participatory_process_step_type.rb +23 -0
  137. data/lib/decidim/api/participatory_process_type.rb +50 -0
  138. data/lib/decidim/participatory_processes.rb +2 -6
  139. data/lib/decidim/participatory_processes/admin_engine.rb +49 -1
  140. data/lib/decidim/participatory_processes/api.rb +11 -0
  141. data/lib/decidim/participatory_processes/engine.rb +90 -8
  142. data/lib/decidim/participatory_processes/participatory_space.rb +47 -24
  143. data/lib/decidim/participatory_processes/query_extensions.rb +18 -20
  144. data/lib/decidim/participatory_processes/test/factories.rb +15 -2
  145. data/lib/decidim/participatory_processes/version.rb +1 -1
  146. metadata +60 -19
  147. data/app/functions/decidim/participatory_processes/participatory_process_finder.rb +0 -10
  148. data/app/functions/decidim/participatory_processes/participatory_process_list.rb +0 -11
  149. data/app/types/decidim/participatory_processes/participatory_process_group_type.rb +0 -20
  150. data/app/types/decidim/participatory_processes/participatory_process_step_type.rb +0 -28
  151. data/app/types/decidim/participatory_processes/participatory_process_type.rb +0 -54
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module ParticipatoryProcesses
5
+ # This type represents a ParticipatoryProcess.
6
+ class ParticipatoryProcessType < Decidim::Api::Types::BaseObject
7
+ implements Decidim::Core::ParticipatorySpaceInterface
8
+ implements Decidim::Core::ParticipatorySpaceResourceableInterface
9
+ implements Decidim::Core::ScopableInterface
10
+ implements Decidim::Core::AttachableInterface
11
+
12
+ description "A participatory process"
13
+
14
+ field :id, GraphQL::Types::ID, "The internal ID for this participatory process", null: false
15
+ field :slug, GraphQL::Types::String, null: false
16
+ field :hashtag, GraphQL::Types::String, "The hashtag for this participatory process", null: true
17
+ field :created_at, Decidim::Core::DateTimeType, "The time this page was created", null: false
18
+ field :updated_at, Decidim::Core::DateTimeType, "The time this page was updated", null: false
19
+ field :published_at, Decidim::Core::DateTimeType, "The time this page was published", null: false
20
+ field :subtitle, Decidim::Core::TranslatedFieldType, "The subtitle of this participatory process.", null: true
21
+ field :description, Decidim::Core::TranslatedFieldType, "The description of this participatory process.", null: true
22
+ field :short_description, Decidim::Core::TranslatedFieldType, "The short description of this participatory process.", null: true
23
+ field :start_date, Decidim::Core::DateType, "This participatory process' start date.", null: true
24
+ field :end_date, Decidim::Core::DateType, "This participatory process' end date.", null: true
25
+
26
+ field :banner_image, GraphQL::Types::String, "The banner image for this participatory process", null: true
27
+ field :hero_image, GraphQL::Types::String, "The hero image for this participatory process", null: true
28
+ field :promoted, GraphQL::Types::Boolean, "If this participatory process is promoted (therefore in the homepage)", null: true
29
+ field :developer_group, Decidim::Core::TranslatedFieldType, "The promoter group of this participatory process.", null: true
30
+ field :meta_scope, Decidim::Core::TranslatedFieldType, "The scope metadata of this participatory process.", null: true
31
+ field :local_area, Decidim::Core::TranslatedFieldType, "The organization area of this participatory process.", null: true
32
+ field :target, Decidim::Core::TranslatedFieldType, "Who participates in this participatory process.", null: true
33
+ field :participatory_scope, Decidim::Core::TranslatedFieldType, "What is decided on this participatory process.", null: true
34
+ field :participatory_structure, Decidim::Core::TranslatedFieldType, "How it is decided on this participatory process.", null: true
35
+ field :show_metrics, GraphQL::Types::Boolean, "If this participatory process should show metrics", null: true
36
+ field :show_statistics, GraphQL::Types::Boolean, "If this participatory process should show statistics", null: true
37
+ field :scopes_enabled, GraphQL::Types::Boolean, "If this participatory process has scopes enabled", null: true
38
+
39
+ field :announcement, Decidim::Core::TranslatedFieldType, "Highlighted announcement for this participatory process.", null: true
40
+
41
+ field :reference, GraphQL::Types::String, "Reference prefix for this participatory process", null: true
42
+ field :steps, [Decidim::ParticipatoryProcesses::ParticipatoryProcessStepType, { null: true }], "All the steps of this process.", null: false
43
+ field :categories, [Decidim::Core::CategoryType, { null: true }], "Categories for this participatory process", null: false
44
+
45
+ field :participatory_process_group, Decidim::ParticipatoryProcesses::ParticipatoryProcessGroupType,
46
+ null: true,
47
+ description: "The participatory process group in which this process belong to"
48
+ end
49
+ end
50
+ end
@@ -1,16 +1,12 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "decidim/participatory_processes/admin"
4
+ require "decidim/participatory_processes/api"
4
5
  require "decidim/participatory_processes/engine"
5
6
  require "decidim/participatory_processes/admin_engine"
6
7
  require "decidim/participatory_processes/participatory_space"
7
8
 
8
9
  module Decidim
9
10
  # Base module for the participatory processes engine.
10
- module ParticipatoryProcesses
11
- # Public: Stores an instance of ViewHooks
12
- def self.view_hooks
13
- @view_hooks ||= ViewHooks.new
14
- end
15
- end
11
+ module ParticipatoryProcesses; end
16
12
  end
@@ -15,7 +15,11 @@ module Decidim
15
15
  paths["lib/tasks"] = nil
16
16
 
17
17
  routes do
18
- resources :participatory_process_groups
18
+ resources :participatory_process_groups do
19
+ resource :landing_page, only: [:edit, :update], controller: "participatory_process_group_landing_page" do
20
+ resources :content_blocks, only: [:edit, :update], controller: "participatory_process_group_landing_page_content_blocks"
21
+ end
22
+ end
19
23
  resources :participatory_processes, param: :slug, except: [:show, :destroy] do
20
24
  resource :publish, controller: "participatory_process_publications", only: [:create, :destroy]
21
25
  resources :copies, controller: "participatory_process_copies", only: [:new, :create]
@@ -52,6 +56,7 @@ module Decidim
52
56
  get :share
53
57
  end
54
58
  resources :exports, only: :create
59
+ resources :imports, only: [:new, :create]
55
60
  end
56
61
 
57
62
  resources :moderations do
@@ -60,7 +65,9 @@ module Decidim
60
65
  put :hide
61
66
  put :unhide
62
67
  end
68
+ resources :reports, controller: "moderations/reports", only: [:index, :show]
63
69
  end
70
+
64
71
  resources :participatory_space_private_users, controller: "participatory_space_private_users" do
65
72
  member do
66
73
  post :resend_invitation, to: "participatory_space_private_users#resend_invitation"
@@ -86,6 +93,12 @@ module Decidim
86
93
  app.config.assets.precompile += %w(admin/decidim_participatory_processes_manifest.js)
87
94
  end
88
95
 
96
+ initializer "decidim_participatory_processes.action_controller" do |_app|
97
+ ActiveSupport.on_load :action_controller do
98
+ helper Decidim::ParticipatoryProcesses::Admin::ParticipatoryProcessesMenuHelper if respond_to?(:helper)
99
+ end
100
+ end
101
+
89
102
  initializer "decidim_participatory_processes.admin_menu" do
90
103
  Decidim.menu :admin_menu do |menu|
91
104
  menu.item I18n.t("menu.participatory_processes", scope: "decidim.admin"),
@@ -97,6 +110,41 @@ module Decidim
97
110
  if: allowed_to?(:enter, :space_area, space_name: :processes) || allowed_to?(:enter, :space_area, space_name: :process_groups)
98
111
  end
99
112
  end
113
+
114
+ initializer "decidim_participatory_processes.admin_participatory_processes_menu" do
115
+ Decidim.menu :admin_participatory_processes_menu do |menu|
116
+ menu.item I18n.t("menu.participatory_processes", scope: "decidim.admin"),
117
+ decidim_admin_participatory_processes.participatory_processes_path,
118
+ position: 1,
119
+ if: allowed_to?(:enter, :space_area, space_name: :processes),
120
+ active: is_active_link?(decidim_admin_participatory_processes.participatory_processes_path)
121
+
122
+ menu.item I18n.t("menu.participatory_process_groups", scope: "decidim.admin"),
123
+ decidim_admin_participatory_processes.participatory_process_groups_path,
124
+ position: 2,
125
+ if: allowed_to?(:enter, :space_area, space_name: :process_groups),
126
+ active: is_active_link?(decidim_admin_participatory_processes.participatory_process_groups_path)
127
+ end
128
+ end
129
+ initializer "decidim_participatory_processes.admin_process_group_menu" do
130
+ Decidim.menu :admin_participatory_process_menu do |menu|
131
+ end
132
+ end
133
+
134
+ initializer "decidim_participatory_processes.admin_process_group_menu" do
135
+ Decidim.menu :admin_participatory_process_group_menu do |menu|
136
+ menu.item I18n.t("info", scope: "decidim.admin.menu.participatory_process_groups_submenu"),
137
+ decidim_admin_participatory_processes.edit_participatory_process_group_path(participatory_process_group),
138
+ position: 1,
139
+ if: allowed_to?(:update, :process_group, process_group: participatory_process_group),
140
+ active: is_active_link?(decidim_admin_participatory_processes.edit_participatory_process_group_path(participatory_process_group))
141
+ menu.item I18n.t("landing_page", scope: "decidim.admin.menu.participatory_process_groups_submenu"),
142
+ decidim_admin_participatory_processes.edit_participatory_process_group_landing_page_path(participatory_process_group),
143
+ position: 2,
144
+ if: allowed_to?(:update, :process_group, process_group: participatory_process_group),
145
+ active: is_active_link?(decidim_admin_participatory_processes.participatory_process_group_landing_page_path(participatory_process_group))
146
+ end
147
+ end
100
148
  end
101
149
  end
102
150
  end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module ParticipatoryProcesses
5
+ autoload :ParticipatoryProcessInputFilter, "decidim/api/participatory_process_input_filter"
6
+ autoload :ParticipatoryProcessInputSort, "decidim/api/participatory_process_input_sort"
7
+ autoload :ParticipatoryProcessGroupType, "decidim/api/participatory_process_group_type"
8
+ autoload :ParticipatoryProcessStepType, "decidim/api/participatory_process_step_type"
9
+ autoload :ParticipatoryProcessType, "decidim/api/participatory_process_type"
10
+ end
11
+ end
@@ -51,9 +51,7 @@ module Decidim
51
51
  end
52
52
 
53
53
  initializer "decidim_participatory_processes.query_extensions" do
54
- Decidim::Api::QueryType.define do
55
- QueryExtensions.define(self)
56
- end
54
+ Decidim::Api::QueryType.include Decidim::ParticipatoryProcesses::QueryExtensions
57
55
  end
58
56
 
59
57
  initializer "decidim_participatory_processes.add_cells_view_paths" do
@@ -67,7 +65,7 @@ module Decidim
67
65
  decidim_participatory_processes.participatory_processes_path,
68
66
  position: 2,
69
67
  if: Decidim::ParticipatoryProcess.where(organization: current_organization).published.any?,
70
- active: %r{^\/process(es|_groups)}
68
+ active: %r{^/process(es|_groups)}
71
69
  end
72
70
  end
73
71
 
@@ -81,15 +79,99 @@ module Decidim
81
79
  settings.attribute :max_results, type: :integer, default: 4
82
80
  end
83
81
  end
82
+
83
+ Decidim.content_blocks.register(:participatory_process_group_homepage, :title) do |content_block|
84
+ content_block.cell = "decidim/participatory_process_groups/content_blocks/title"
85
+ content_block.public_name_key = "decidim.participatory_process_groups.content_blocks.title.name"
86
+ content_block.default!
87
+ end
88
+
89
+ (1..3).each do |index|
90
+ Decidim.content_blocks.register(:participatory_process_group_homepage, :"html_#{index}") do |content_block|
91
+ content_block.cell = "decidim/participatory_process_groups/content_blocks/html"
92
+ content_block.public_name_key = "decidim.participatory_process_groups.content_blocks.html_#{index}.name"
93
+ content_block.settings_form_cell = "decidim/content_blocks/html_settings_form"
94
+
95
+ content_block.settings do |settings|
96
+ settings.attribute :html_content, type: :text, translated: true
97
+ end
98
+ content_block.default!
99
+ end
100
+ end
101
+
102
+ Decidim.content_blocks.register(:participatory_process_group_homepage, :metadata) do |content_block|
103
+ content_block.cell = "decidim/participatory_process_groups/content_blocks/metadata"
104
+ content_block.public_name_key = "decidim.participatory_process_groups.content_blocks.metadata.name"
105
+ content_block.default!
106
+ end
107
+
108
+ Decidim.content_blocks.register(:participatory_process_group_homepage, :cta) do |content_block|
109
+ content_block.cell = "decidim/content_blocks/cta"
110
+ content_block.settings_form_cell = "decidim/content_blocks/cta_settings_form"
111
+ content_block.public_name_key = "decidim.content_blocks.cta.name"
112
+
113
+ content_block.images = [
114
+ {
115
+ name: :background_image,
116
+ uploader: "Decidim::HomepageImageUploader"
117
+ }
118
+ ]
119
+
120
+ content_block.settings do |settings|
121
+ settings.attribute :button_text, type: :text, translated: true
122
+ settings.attribute :button_url, type: :string, required: true
123
+ settings.attribute :description, type: :string, translated: true, editor: true
124
+ end
125
+
126
+ content_block.default!
127
+ end
128
+
129
+ Decidim.content_blocks.register(:participatory_process_group_homepage, :highlighted_proposals) do |content_block|
130
+ content_block.cell = "decidim/proposals/content_blocks/highlighted_proposals"
131
+ content_block.settings_form_cell = "decidim/content_blocks/highlighted_elements_settings_form"
132
+ content_block.public_name_key = "decidim.proposals.content_blocks.highlighted_proposals.proposals"
133
+
134
+ content_block.settings do |settings|
135
+ settings.attribute :order, type: :enum, default: "random", choices: %w(random recent)
136
+ end
137
+ end
138
+
139
+ Decidim.content_blocks.register(:participatory_process_group_homepage, :highlighted_results) do |content_block|
140
+ content_block.cell = "decidim/accountability/content_blocks/highlighted_results"
141
+ content_block.settings_form_cell = "decidim/content_blocks/highlighted_elements_settings_form"
142
+ content_block.public_name_key = "decidim.accountability.content_blocks.highlighted_results.results"
143
+
144
+ content_block.settings do |settings|
145
+ settings.attribute :order, type: :enum, default: "random", choices: %w(random recent)
146
+ end
147
+ end
148
+
149
+ Decidim.content_blocks.register(:participatory_process_group_homepage, :highlighted_meetings) do |content_block|
150
+ content_block.cell = "decidim/meetings/content_blocks/highlighted_meetings"
151
+ content_block.public_name_key = "decidim.meetings.content_blocks.upcoming_events.name"
152
+ content_block.default!
153
+ end
154
+
155
+ Decidim.content_blocks.register(:participatory_process_group_homepage, :stats) do |content_block|
156
+ content_block.cell = "decidim/participatory_process_groups/content_blocks/stats"
157
+ content_block.public_name_key = "decidim.participatory_process_groups.content_blocks.stats.name"
158
+ content_block.default!
159
+ end
160
+
161
+ Decidim.content_blocks.register(:participatory_process_group_homepage, :participatory_processes) do |content_block|
162
+ content_block.cell = "decidim/participatory_process_groups/content_blocks/highlighted_participatory_processes"
163
+ content_block.public_name_key = "decidim.participatory_process_groups.content_blocks.participatory_processes.name"
164
+ content_block.default!
165
+ end
84
166
  end
85
167
 
86
168
  initializer "decidim_participatory_processes.stats" do
87
- Decidim.stats.register :followers_count, priority: StatsRegistry::HIGH_PRIORITY do |participatory_process|
88
- Decidim::ParticipatoryProcesses::StatsFollowersCount.for(participatory_process)
169
+ Decidim.stats.register :followers_count, priority: StatsRegistry::HIGH_PRIORITY do |participatory_space|
170
+ Decidim::ParticipatoryProcesses::StatsFollowersCount.for(participatory_space)
89
171
  end
90
172
 
91
- Decidim.stats.register :participants_count, priority: StatsRegistry::HIGH_PRIORITY do |participatory_process|
92
- Decidim::ParticipatoryProcesses::StatsParticipantsCount.for(participatory_process)
173
+ Decidim.stats.register :participants_count, priority: StatsRegistry::HIGH_PRIORITY do |participatory_space|
174
+ Decidim::ParticipatoryProcesses::StatsParticipantsCount.for(participatory_space)
93
175
  end
94
176
  end
95
177
 
@@ -67,26 +67,49 @@ Decidim.register_participatory_space(:participatory_processes) do |participatory
67
67
  process_groups = []
68
68
  2.times do
69
69
  process_groups << Decidim::ParticipatoryProcessGroup.create!(
70
- name: Decidim::Faker::Localized.sentence(3),
70
+ title: Decidim::Faker::Localized.sentence(word_count: 3),
71
71
  description: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
72
- Decidim::Faker::Localized.paragraph(3)
72
+ Decidim::Faker::Localized.paragraph(sentence_count: 3)
73
73
  end,
74
+ hashtag: Faker::Internet.slug,
75
+ group_url: Faker::Internet.url,
74
76
  organization: organization,
75
- hero_image: File.new(File.join(seeds_root, "city.jpeg")) # Keep after organization
77
+ hero_image: File.new(File.join(seeds_root, "city.jpeg")), # Keep after organization
78
+ developer_group: Decidim::Faker::Localized.sentence(word_count: 1),
79
+ local_area: Decidim::Faker::Localized.sentence(word_count: 2),
80
+ meta_scope: Decidim::Faker::Localized.word,
81
+ target: Decidim::Faker::Localized.sentence(word_count: 3),
82
+ participatory_scope: Decidim::Faker::Localized.sentence(word_count: 1),
83
+ participatory_structure: Decidim::Faker::Localized.sentence(word_count: 2)
76
84
  )
77
85
  end
78
86
 
87
+ landing_page_content_blocks = [:title, :metadata, :cta, :highlighted_proposals, :highlighted_results, :highlighted_meetings, :stats, :participatory_processes]
88
+
89
+ process_groups.each do |process_group|
90
+ landing_page_content_blocks.each.with_index(1) do |manifest_name, index|
91
+ Decidim::ContentBlock.create(
92
+ organization: organization,
93
+ scope_name: :participatory_process_group_homepage,
94
+ manifest_name: manifest_name,
95
+ weight: index,
96
+ scoped_resource_id: process_group.id,
97
+ published_at: Time.current
98
+ )
99
+ end
100
+ end
101
+
79
102
  2.times do |n|
80
103
  params = {
81
- title: Decidim::Faker::Localized.sentence(5),
82
- slug: Faker::Internet.unique.slug(nil, "-"),
83
- subtitle: Decidim::Faker::Localized.sentence(2),
104
+ title: Decidim::Faker::Localized.sentence(word_count: 5),
105
+ slug: Decidim::Faker::Internet.unique.slug(words: nil, glue: "-"),
106
+ subtitle: Decidim::Faker::Localized.sentence(word_count: 2),
84
107
  hashtag: "##{Faker::Lorem.word}",
85
108
  short_description: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
86
- Decidim::Faker::Localized.sentence(3)
109
+ Decidim::Faker::Localized.sentence(word_count: 3)
87
110
  end,
88
111
  description: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
89
- Decidim::Faker::Localized.paragraph(3)
112
+ Decidim::Faker::Localized.paragraph(sentence_count: 3)
90
113
  end,
91
114
  organization: organization,
92
115
  hero_image: File.new(File.join(seeds_root, "city.jpeg")), # Keep after organization
@@ -94,11 +117,11 @@ Decidim.register_participatory_space(:participatory_processes) do |participatory
94
117
  promoted: true,
95
118
  published_at: 2.weeks.ago,
96
119
  meta_scope: Decidim::Faker::Localized.word,
97
- developer_group: Decidim::Faker::Localized.sentence(1),
98
- local_area: Decidim::Faker::Localized.sentence(2),
99
- target: Decidim::Faker::Localized.sentence(3),
100
- participatory_scope: Decidim::Faker::Localized.sentence(1),
101
- participatory_structure: Decidim::Faker::Localized.sentence(2),
120
+ developer_group: Decidim::Faker::Localized.sentence(word_count: 1),
121
+ local_area: Decidim::Faker::Localized.sentence(word_count: 2),
122
+ target: Decidim::Faker::Localized.sentence(word_count: 3),
123
+ participatory_scope: Decidim::Faker::Localized.sentence(word_count: 1),
124
+ participatory_structure: Decidim::Faker::Localized.sentence(word_count: 2),
102
125
  start_date: Date.current,
103
126
  end_date: 2.months.from_now,
104
127
  participatory_process_group: process_groups.sample,
@@ -119,9 +142,9 @@ Decidim.register_participatory_space(:participatory_processes) do |participatory
119
142
  participatory_process: process,
120
143
  active: true
121
144
  ).update!(
122
- title: Decidim::Faker::Localized.sentence(1, false, 2),
145
+ title: Decidim::Faker::Localized.sentence(word_count: 1, supplemental: false, random_words_to_add: 2),
123
146
  description: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
124
- Decidim::Faker::Localized.paragraph(3)
147
+ Decidim::Faker::Localized.paragraph(sentence_count: 3)
125
148
  end,
126
149
  start_date: 1.month.ago,
127
150
  end_date: 2.months.from_now
@@ -152,37 +175,37 @@ Decidim.register_participatory_space(:participatory_processes) do |participatory
152
175
 
153
176
  attachment_collection = Decidim::AttachmentCollection.create!(
154
177
  name: Decidim::Faker::Localized.word,
155
- description: Decidim::Faker::Localized.sentence(5),
178
+ description: Decidim::Faker::Localized.sentence(word_count: 5),
156
179
  collection_for: process
157
180
  )
158
181
 
159
182
  Decidim::Attachment.create!(
160
- title: Decidim::Faker::Localized.sentence(2),
161
- description: Decidim::Faker::Localized.sentence(5),
183
+ title: Decidim::Faker::Localized.sentence(word_count: 2),
184
+ description: Decidim::Faker::Localized.sentence(word_count: 5),
162
185
  attachment_collection: attachment_collection,
163
186
  attached_to: process,
164
187
  file: File.new(File.join(seeds_root, "Exampledocument.pdf")) # Keep after attached_to
165
188
  )
166
189
 
167
190
  Decidim::Attachment.create!(
168
- title: Decidim::Faker::Localized.sentence(2),
169
- description: Decidim::Faker::Localized.sentence(5),
191
+ title: Decidim::Faker::Localized.sentence(word_count: 2),
192
+ description: Decidim::Faker::Localized.sentence(word_count: 5),
170
193
  attached_to: process,
171
194
  file: File.new(File.join(seeds_root, "city.jpeg")) # Keep after attached_to
172
195
  )
173
196
 
174
197
  Decidim::Attachment.create!(
175
- title: Decidim::Faker::Localized.sentence(2),
176
- description: Decidim::Faker::Localized.sentence(5),
198
+ title: Decidim::Faker::Localized.sentence(word_count: 2),
199
+ description: Decidim::Faker::Localized.sentence(word_count: 5),
177
200
  attached_to: process,
178
201
  file: File.new(File.join(seeds_root, "Exampledocument.pdf")) # Keep after attached_to
179
202
  )
180
203
 
181
204
  2.times do
182
205
  Decidim::Category.create!(
183
- name: Decidim::Faker::Localized.sentence(5),
206
+ name: Decidim::Faker::Localized.sentence(word_count: 5),
184
207
  description: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
185
- Decidim::Faker::Localized.paragraph(3)
208
+ Decidim::Faker::Localized.paragraph(sentence_count: 3)
186
209
  end,
187
210
  participatory_space: process
188
211
  )
@@ -10,30 +10,28 @@ module Decidim
10
10
  # type - A GraphQL::BaseType to extend.
11
11
  #
12
12
  # Returns nothing.
13
- def self.define(type)
14
- type.field :participatoryProcessGroups do
15
- type !types[ParticipatoryProcessGroupType]
16
- description "Lists all participatory process groups"
13
+ def self.included(type)
14
+ type.field :participatory_process_groups, [ParticipatoryProcessGroupType],
15
+ null: false,
16
+ description: "Lists all participatory process groups"
17
17
 
18
- resolve lambda { |_obj, _args, ctx|
19
- Decidim::ParticipatoryProcessGroup.where(
20
- organization: ctx[:current_organization]
21
- )
22
- }
18
+ type.field :participatory_process_group, ParticipatoryProcessGroupType, null: true do
19
+ description "Finds a participatory process group"
20
+ argument :id, GraphQL::Types::ID, required: true, description: "The ID of the Participatory process group"
23
21
  end
22
+ end
24
23
 
25
- type.field :participatoryProcessGroup do
26
- type ParticipatoryProcessGroupType
27
- description "Finds a participatory process group"
28
- argument :id, !types.ID, "The ID of the Participatory process group"
24
+ def participatory_process_groups(*)
25
+ Decidim::ParticipatoryProcessGroup.where(
26
+ organization: context[:current_organization]
27
+ )
28
+ end
29
29
 
30
- resolve lambda { |_obj, args, ctx|
31
- Decidim::ParticipatoryProcessGroup.find_by(
32
- organization: ctx[:current_organization],
33
- id: args[:id]
34
- )
35
- }
36
- end
30
+ def participatory_process_group(id:)
31
+ Decidim::ParticipatoryProcessGroup.find_by(
32
+ organization: context[:current_organization],
33
+ id: id
34
+ )
37
35
  end
38
36
  end
39
37
  end