decidim-participatory_processes 0.30.1 → 0.31.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/participatory_process_groups/content_blocks/main_data/content.erb +1 -1
  3. data/app/cells/decidim/participatory_process_groups/content_blocks/main_data_cell.rb +1 -15
  4. data/app/cells/decidim/participatory_processes/content_blocks/democratic_quality_stats/show.erb +74 -0
  5. data/app/cells/decidim/participatory_processes/content_blocks/democratic_quality_stats_cell.rb +29 -0
  6. data/app/cells/decidim/participatory_processes/content_blocks/democratic_quality_stats_settings_form/citizen_influence.erb +32 -0
  7. data/app/cells/decidim/participatory_processes/content_blocks/democratic_quality_stats_settings_form/inclusiveness.erb +69 -0
  8. data/app/cells/decidim/participatory_processes/content_blocks/democratic_quality_stats_settings_form/informativeness.erb +29 -0
  9. data/app/cells/decidim/participatory_processes/content_blocks/democratic_quality_stats_settings_form/show.erb +10 -0
  10. data/app/cells/decidim/participatory_processes/content_blocks/democratic_quality_stats_settings_form_cell.rb +81 -0
  11. data/app/cells/decidim/participatory_processes/content_blocks/highlighted_processes_settings_form/show.erb +3 -1
  12. data/app/cells/decidim/participatory_processes/content_blocks/main_data_cell.rb +10 -2
  13. data/app/cells/decidim/participatory_processes/indicator/show.erb +11 -0
  14. data/app/cells/decidim/participatory_processes/indicator_cell.rb +25 -0
  15. data/app/cells/decidim/participatory_processes/process_dropdown_metadata/metadata.erb +0 -7
  16. data/app/cells/decidim/participatory_processes/process_filters_cell.rb +2 -0
  17. data/app/cells/decidim/participatory_processes/process_step/show.erb +1 -1
  18. data/app/commands/decidim/participatory_processes/admin/create_participatory_process.rb +1 -1
  19. data/app/commands/decidim/participatory_processes/admin/create_participatory_process_group.rb +1 -1
  20. data/app/commands/decidim/participatory_processes/admin/{copy_participatory_process.rb → duplicate_participatory_process.rb} +25 -26
  21. data/app/commands/decidim/participatory_processes/admin/import_participatory_process.rb +1 -1
  22. data/app/commands/decidim/participatory_processes/admin/update_participatory_process.rb +16 -4
  23. data/app/commands/decidim/participatory_processes/admin/update_participatory_process_group.rb +1 -1
  24. data/app/controllers/decidim/participatory_processes/admin/{participatory_process_copies_controller.rb → participatory_process_duplicates_controller.rb} +7 -7
  25. data/app/controllers/decidim/participatory_processes/admin/participatory_process_group_landing_page_controller.rb +4 -0
  26. data/app/controllers/decidim/participatory_processes/admin/participatory_process_groups_controller.rb +3 -3
  27. data/app/controllers/decidim/participatory_processes/admin/participatory_process_imports_controller.rb +1 -1
  28. data/app/controllers/decidim/participatory_processes/admin/participatory_process_landing_page_controller.rb +4 -0
  29. data/app/controllers/decidim/participatory_processes/admin/participatory_process_steps_controller.rb +2 -2
  30. data/app/controllers/decidim/participatory_processes/admin/participatory_processes_controller.rb +3 -3
  31. data/app/controllers/decidim/participatory_processes/participatory_processes_controller.rb +0 -9
  32. data/app/forms/decidim/participatory_processes/admin/{participatory_process_copy_form.rb → participatory_process_duplicate_form.rb} +5 -5
  33. data/app/forms/decidim/participatory_processes/admin/participatory_process_form.rb +2 -1
  34. data/app/forms/decidim/participatory_processes/admin/participatory_process_group_form.rb +0 -1
  35. data/app/helpers/decidim/participatory_processes/application_helper.rb +14 -0
  36. data/app/models/decidim/participatory_process.rb +4 -4
  37. data/app/models/decidim/participatory_process_group.rb +9 -0
  38. data/app/permissions/decidim/participatory_processes/permissions.rb +6 -6
  39. data/app/presenters/decidim/participatory_processes/admin_log/participatory_process_group_presenter.rb +0 -1
  40. data/app/presenters/decidim/participatory_processes/admin_log/participatory_process_presenter.rb +0 -1
  41. data/app/presenters/decidim/participatory_processes/participatory_process_democratic_quality_stats_presenter.rb +312 -0
  42. data/app/presenters/decidim/participatory_processes/participatory_process_group_stats_presenter.rb +1 -11
  43. data/app/presenters/decidim/participatory_processes/participatory_process_presenter.rb +35 -1
  44. data/app/presenters/decidim/participatory_processes/participatory_process_stats_presenter.rb +1 -3
  45. data/app/queries/decidim/participatory_processes/participatory_processes_stats_followers_count.rb +31 -0
  46. data/app/queries/decidim/participatory_processes/participatory_processes_stats_participants_count.rb +27 -0
  47. data/app/serializers/decidim/participatory_processes/participatory_process_importer.rb +7 -5
  48. data/app/views/decidim/participatory_processes/admin/{participatory_process_copies → participatory_process_duplicates}/_form.html.erb +5 -5
  49. data/app/views/decidim/participatory_processes/admin/participatory_process_duplicates/new.html.erb +19 -0
  50. data/app/views/decidim/participatory_processes/admin/participatory_process_groups/_form.html.erb +3 -7
  51. data/app/views/decidim/participatory_processes/admin/participatory_process_groups/index.html.erb +31 -15
  52. data/app/views/decidim/participatory_processes/admin/participatory_process_steps/_form.html.erb +1 -1
  53. data/app/views/decidim/participatory_processes/admin/participatory_process_steps/index.html.erb +39 -21
  54. data/app/views/decidim/participatory_processes/admin/participatory_process_user_roles/index.html.erb +42 -24
  55. data/app/views/decidim/participatory_processes/admin/participatory_processes/_form.html.erb +10 -14
  56. data/app/views/decidim/participatory_processes/admin/participatory_processes/_process_row.html.erb +125 -53
  57. data/app/views/decidim/participatory_processes/admin/participatory_processes/edit.html.erb +0 -8
  58. data/app/views/decidim/participatory_processes/admin/participatory_processes/index.html.erb +2 -2
  59. data/app/views/decidim/participatory_processes/admin/participatory_processes/manage_trash.html.erb +2 -1
  60. data/app/views/layouts/decidim/admin/_manage_processes.html.erb +1 -1
  61. data/app/views/layouts/decidim/admin/participatory_process_group.html.erb +1 -1
  62. data/config/assets.rb +2 -2
  63. data/config/locales/ar.yml +0 -19
  64. data/config/locales/bg.yml +0 -30
  65. data/config/locales/bs-BA.yml +0 -4
  66. data/config/locales/ca-IT.yml +321 -27
  67. data/config/locales/ca.yml +321 -27
  68. data/config/locales/cs.yml +96 -29
  69. data/config/locales/de.yml +135 -37
  70. data/config/locales/el.yml +0 -26
  71. data/config/locales/en.yml +303 -24
  72. data/config/locales/es-MX.yml +323 -29
  73. data/config/locales/es-PY.yml +323 -29
  74. data/config/locales/es.yml +321 -27
  75. data/config/locales/eu.yml +306 -27
  76. data/config/locales/fi-plain.yml +308 -27
  77. data/config/locales/fi.yml +305 -24
  78. data/config/locales/fr-CA.yml +89 -27
  79. data/config/locales/fr.yml +89 -27
  80. data/config/locales/ga-IE.yml +0 -7
  81. data/config/locales/gl.yml +0 -24
  82. data/config/locales/hu.yml +0 -26
  83. data/config/locales/id-ID.yml +0 -19
  84. data/config/locales/is-IS.yml +0 -13
  85. data/config/locales/it.yml +0 -25
  86. data/config/locales/ja.yml +125 -27
  87. data/config/locales/lb.yml +0 -21
  88. data/config/locales/lt.yml +0 -27
  89. data/config/locales/lv.yml +0 -20
  90. data/config/locales/nl.yml +0 -25
  91. data/config/locales/no.yml +0 -27
  92. data/config/locales/pl.yml +16 -30
  93. data/config/locales/pt-BR.yml +0 -28
  94. data/config/locales/pt.yml +0 -25
  95. data/config/locales/ro-RO.yml +2 -26
  96. data/config/locales/ru.yml +0 -17
  97. data/config/locales/sk.yml +0 -20
  98. data/config/locales/sr-CS.yml +0 -4
  99. data/config/locales/sv.yml +90 -28
  100. data/config/locales/tr-TR.yml +0 -25
  101. data/config/locales/uk.yml +0 -17
  102. data/config/locales/zh-CN.yml +0 -23
  103. data/config/locales/zh-TW.yml +0 -26
  104. data/db/migrate/20250403110052_add_democratic_quality_static_page.rb +34 -0
  105. data/db/migrate/20250605114136_remove_hashtag_from_participatory_processes.rb +7 -0
  106. data/db/migrate/20250605114415_remove_hashtag_from_participatory_processes_groups.rb +7 -0
  107. data/decidim-participatory_processes.gemspec +3 -0
  108. data/lib/decidim/api/participatory_process_group_type.rb +9 -0
  109. data/lib/decidim/api/participatory_process_input_filter.rb +0 -1
  110. data/lib/decidim/api/participatory_process_step_type.rb +2 -0
  111. data/lib/decidim/api/participatory_process_type.rb +17 -11
  112. data/lib/decidim/participatory_processes/admin_engine.rb +1 -1
  113. data/lib/decidim/participatory_processes/content_blocks/registry_manager.rb +25 -5
  114. data/lib/decidim/participatory_processes/engine.rb +22 -25
  115. data/lib/decidim/participatory_processes/menu.rb +1 -1
  116. data/lib/decidim/participatory_processes/participatory_space.rb +1 -4
  117. data/lib/decidim/participatory_processes/seeds.rb +3 -5
  118. data/lib/decidim/participatory_processes/test/factories.rb +2 -3
  119. data/lib/decidim/participatory_processes/version.rb +1 -1
  120. metadata +72 -22
  121. data/app/cells/decidim/participatory_processes/content_blocks/metrics_cell.rb +0 -25
  122. data/app/presenters/decidim/participatory_processes/participatory_process_metric_charts_presenter.rb +0 -21
  123. data/app/queries/decidim/participatory_processes/metrics/participatory_process_followers_metric_measure.rb +0 -31
  124. data/app/queries/decidim/participatory_processes/metrics/participatory_processes_metric_manage.rb +0 -27
  125. data/app/queries/decidim/participatory_processes/stats_followers_count.rb +0 -60
  126. data/app/queries/decidim/participatory_processes/stats_participants_count.rb +0 -136
  127. data/app/views/decidim/participatory_processes/admin/participatory_process_copies/new.html.erb +0 -19
  128. data/app/views/decidim/participatory_processes/participatory_processes/all_metrics.html.erb +0 -25
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddDemocraticQualityStaticPage < ActiveRecord::Migration[7.0]
4
+ class Organization < ApplicationRecord
5
+ self.table_name = :decidim_organizations
6
+ end
7
+
8
+ class StaticPage < ApplicationRecord
9
+ self.table_name = :decidim_static_pages
10
+ end
11
+
12
+ def up
13
+ Organization.find_each do |organization|
14
+ StaticPage.find_or_create_by!(slug: "democratic-quality-indicators") do |page|
15
+ page.decidim_organization_id = organization.id
16
+ page.title = localized_attribute(organization, :title)
17
+ page.content = localized_attribute(organization, :content)
18
+ page.allow_public_access = true
19
+ end
20
+ end
21
+ end
22
+
23
+ private
24
+
25
+ def localized_attribute(organization, attribute)
26
+ organization.available_locales.inject({}) do |result, locale|
27
+ text = I18n.with_locale(locale) do
28
+ I18n.t(attribute, scope: "decidim.participatory_processes.static_pages.democratic_quality_indicators")
29
+ end
30
+
31
+ result.update(locale => text)
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class RemoveHashtagFromParticipatoryProcesses < ActiveRecord::Migration[7.1]
4
+ def change
5
+ remove_column :decidim_participatory_processes, :hashtag, :string, if_exists: true
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class RemoveHashtagFromParticipatoryProcessesGroups < ActiveRecord::Migration[7.1]
4
+ def change
5
+ remove_column :decidim_participatory_process_groups, :hashtag, :string, if_exists: true
6
+ end
7
+ end
@@ -32,7 +32,10 @@ Gem::Specification.new do |s|
32
32
 
33
33
  s.add_dependency "decidim-core", Decidim::ParticipatoryProcesses.version
34
34
 
35
+ s.add_development_dependency "decidim-accountability", Decidim::ParticipatoryProcesses.version
35
36
  s.add_development_dependency "decidim-admin", Decidim::ParticipatoryProcesses.version
37
+ s.add_development_dependency "decidim-budgets", Decidim::ParticipatoryProcesses.version
36
38
  s.add_development_dependency "decidim-dev", Decidim::ParticipatoryProcesses.version
37
39
  s.add_development_dependency "decidim-meetings", Decidim::ParticipatoryProcesses.version
40
+ s.add_development_dependency "decidim-proposals", Decidim::ParticipatoryProcesses.version
38
41
  end
@@ -6,11 +6,20 @@ module Decidim
6
6
  class ParticipatoryProcessGroupType < Decidim::Api::Types::BaseObject
7
7
  description "A participatory process group"
8
8
 
9
+ implements Decidim::Core::TimestampsInterface
10
+
9
11
  field :description, Decidim::Core::TranslatedFieldType, "The description of this participatory process group", null: true
12
+ field :developer_group, Decidim::Core::TranslatedFieldType, "The promoter group of this participatory process group", null: true
10
13
  field :hero_image, GraphQL::Types::String, "The hero image for this participatory process group", null: true
11
14
  field :id, GraphQL::Types::ID, "ID of this participatory process group", null: false
15
+ field :local_area, Decidim::Core::TranslatedFieldType, "The organization area of this participatory process group", null: true
16
+ field :meta_scope, Decidim::Core::TranslatedFieldType, "The scope metadata of this participatory process group", null: true
12
17
  field :participatory_processes, [Decidim::ParticipatoryProcesses::ParticipatoryProcessType, { null: true }],
13
18
  description: "Lists all the participatory processes belonging to this group", null: false
19
+ field :participatory_scope, Decidim::Core::TranslatedFieldType, "What is decided on this participatory process group", null: true
20
+ field :participatory_structure, Decidim::Core::TranslatedFieldType, "How it is decided on this participatory process group", null: true
21
+ field :promoted, GraphQL::Types::Boolean, "If this participatory process group is promoted (therefore in the homepage)", null: true
22
+ field :target, Decidim::Core::TranslatedFieldType, "Who participates in this participatory process group", null: true
14
23
  field :title, Decidim::Core::TranslatedFieldType, "The title of this participatory process group", null: true
15
24
 
16
25
  def hero_image
@@ -4,7 +4,6 @@ module Decidim
4
4
  module ParticipatoryProcesses
5
5
  class ParticipatoryProcessInputFilter < Decidim::Core::BaseInputFilter
6
6
  include Decidim::Core::HasPublishableInputFilter
7
- include Decidim::Core::HasHastaggableInputFilter
8
7
 
9
8
  graphql_name "ParticipatoryProcessFilter"
10
9
  description "A type used for filtering participatory processes"
@@ -6,6 +6,8 @@ module Decidim
6
6
  class ParticipatoryProcessStepType < Decidim::Api::Types::BaseObject
7
7
  description "A participatory process step"
8
8
 
9
+ implements Decidim::Core::TimestampsInterface
10
+
9
11
  field :active, GraphQL::Types::Boolean, "If this step is the active one", null: true
10
12
  field :call_to_action_path, GraphQL::Types::String, "A call to action URL for this step", method: :cta_path, null: true
11
13
  field :call_to_action_text, Decidim::Core::TranslatedFieldType, "The call to action text for this step", method: :cta_text, null: true
@@ -10,6 +10,8 @@ module Decidim
10
10
  implements Decidim::Core::TimestampsInterface
11
11
  implements Decidim::Core::AttachableInterface
12
12
  implements Decidim::Core::CategoriesContainerInterface
13
+ implements Decidim::Core::FollowableInterface
14
+ implements Decidim::Core::ReferableInterface
13
15
 
14
16
  description "A participatory process"
15
17
 
@@ -17,7 +19,6 @@ module Decidim
17
19
  field :description, Decidim::Core::TranslatedFieldType, "The description of this participatory process.", null: true
18
20
  field :developer_group, Decidim::Core::TranslatedFieldType, "The promoter group of this participatory process.", null: true
19
21
  field :end_date, Decidim::Core::DateType, "This participatory process' end date.", null: true
20
- field :hashtag, GraphQL::Types::String, "The hashtag for this participatory process", null: true
21
22
  field :hero_image, GraphQL::Types::String, "The hero image for this participatory process", null: true
22
23
  field :id, GraphQL::Types::ID, "The internal ID for this participatory process", null: false
23
24
  field :local_area, Decidim::Core::TranslatedFieldType, "The organization area of this participatory process.", null: true
@@ -25,18 +26,23 @@ module Decidim
25
26
  field :participatory_process_group, Decidim::ParticipatoryProcesses::ParticipatoryProcessGroupType,
26
27
  null: true,
27
28
  description: "The participatory process group in which this process belong to"
28
- field :participatory_scope, Decidim::Core::TranslatedFieldType, "What is decided on this participatory process.", null: true
29
- field :participatory_structure, Decidim::Core::TranslatedFieldType, "How it is decided on this participatory process.", null: true
29
+ field :participatory_scope, Decidim::Core::TranslatedFieldType, "What is decided on this participatory process", null: true
30
+ field :participatory_structure, Decidim::Core::TranslatedFieldType, "How it is decided on this participatory process", null: true
31
+ field :private_space, GraphQL::Types::Boolean, "Specifies if the space is public or private", null: true
30
32
  field :promoted, GraphQL::Types::Boolean, "If this participatory process is promoted (therefore in the homepage)", null: true
31
33
  field :published_at, Decidim::Core::DateTimeType, "The time this page was published", null: false
32
- field :reference, GraphQL::Types::String, "Reference prefix for this participatory process", null: true
33
- field :scopes_enabled, GraphQL::Types::Boolean, "If this participatory process has scopes enabled", null: true
34
- field :short_description, Decidim::Core::TranslatedFieldType, "The short description of this participatory process.", null: true
35
- field :slug, GraphQL::Types::String, "The slug of the Participatory Process", null: false
36
- field :start_date, Decidim::Core::DateType, "This participatory process' start date.", null: true
37
- field :steps, [Decidim::ParticipatoryProcesses::ParticipatoryProcessStepType, { null: true }], "All the steps of this process.", null: false
38
- field :subtitle, Decidim::Core::TranslatedFieldType, "The subtitle of this participatory process.", null: true
39
- field :target, Decidim::Core::TranslatedFieldType, "Who participates in this participatory process.", null: true
34
+ field :short_description, Decidim::Core::TranslatedFieldType, "The short description of this participatory process", null: true
35
+ field :slug, GraphQL::Types::String, "The slug of the participatory process", null: false
36
+ field :start_date, Decidim::Core::DateType, "This participatory process' start date", null: true
37
+ field :steps, [Decidim::ParticipatoryProcesses::ParticipatoryProcessStepType, { null: true }], "All the steps of this participatory process", null: false
38
+ field :subtitle, Decidim::Core::TranslatedFieldType, "The subtitle of this participatory process", null: true
39
+ field :target, Decidim::Core::TranslatedFieldType, "Who participates in this participatory process", null: true
40
+ field :url, GraphQL::Types::String, "The URL of this participatory process", null: true
41
+ field :weight, GraphQL::Types::Int, "The weight of this participatory process", null: true
42
+
43
+ def url
44
+ Decidim::EngineRouter.main_proxy(object).participatory_process_url(object)
45
+ end
40
46
 
41
47
  def hero_image
42
48
  object.attached_uploader(:hero_image).url
@@ -24,7 +24,7 @@ module Decidim
24
24
  end
25
25
  resources :participatory_processes, param: :slug, except: [:show, :destroy] do
26
26
  resource :publish, controller: "participatory_process_publications", only: [:create, :destroy]
27
- resources :copies, controller: "participatory_process_copies", only: [:new, :create]
27
+ resources :duplicates, controller: "participatory_process_duplicates", only: [:new, :create]
28
28
 
29
29
  member do
30
30
  patch :soft_delete
@@ -125,11 +125,6 @@ module Decidim
125
125
  content_block.public_name_key = "decidim.content_blocks.participatory_space_stats.name"
126
126
  end
127
127
 
128
- Decidim.content_blocks.register(:participatory_process_homepage, :metrics) do |content_block|
129
- content_block.cell = "decidim/participatory_processes/content_blocks/metrics"
130
- content_block.public_name_key = "decidim.content_blocks.participatory_space_metrics.name"
131
- end
132
-
133
128
  Decidim.content_blocks.register(:participatory_process_homepage, :related_processes) do |content_block|
134
129
  content_block.cell = "decidim/participatory_processes/content_blocks/related_processes"
135
130
  content_block.settings_form_cell = "decidim/participatory_processes/content_blocks/highlighted_processes_settings_form"
@@ -172,6 +167,31 @@ module Decidim
172
167
  register_highlighted_proposals
173
168
  register_highlighted_results
174
169
  register_related_assemblies
170
+ register_democratic_quality_stats
171
+ end
172
+
173
+ def self.register_democratic_quality_stats
174
+ return unless Decidim.module_installed?(:meetings)
175
+ return unless Decidim.module_installed?(:proposals)
176
+ return unless Decidim.module_installed?(:accountability)
177
+ return unless Decidim.module_installed?(:budgets)
178
+
179
+ Decidim.content_blocks.register(:participatory_process_homepage, :democratic_quality_stats) do |content_block|
180
+ content_block.cell = "decidim/participatory_processes/content_blocks/democratic_quality_stats"
181
+ content_block.public_name_key = "decidim.participatory_processes.content_blocks.democratic_quality_stats.name"
182
+ content_block.settings_form_cell = "decidim/participatory_processes/content_blocks/democratic_quality_stats_settings_form"
183
+ content_block.settings do |settings|
184
+ settings.attribute :functional_diversity_invited, type: :integer, default: -1
185
+ settings.attribute :languages_communicated, type: :integer, default: -1
186
+ settings.attribute :mobility_meeting_access, type: :integer, default: -1
187
+ settings.attribute :participation_scheduling_times, type: :integer, default: -1
188
+ settings.attribute :digital_support_offered, type: :integer, default: -1
189
+ settings.attribute :citizen_influence_level, type: :integer, default: -1
190
+ settings.attribute :citizen_decisional_intervention, type: :integer, default: -1
191
+ settings.attribute :published_information_clarity, type: :integer, default: -1
192
+ settings.attribute :information_provided, type: :integer, default: -1
193
+ end
194
+ end
175
195
  end
176
196
 
177
197
  def self.register_highlighted_debates
@@ -25,14 +25,8 @@ module Decidim
25
25
  process ? "/processes/#{process.slug}/f/#{params[:component_id]}" : "/404"
26
26
  }, constraints: { process_id: /[0-9]+/ }
27
27
 
28
- get "processes/:process_id/all-metrics", to: redirect { |params, _request|
29
- process = Decidim::ParticipatoryProcess.find(params[:process_id])
30
- process ? "/processes/#{process.slug}/all-metrics" : "/404"
31
- }, constraints: { process_id: /[0-9]+/ }, as: :all_metrics
32
-
33
28
  resources :participatory_process_groups, only: :show, path: "processes_groups"
34
29
  resources :participatory_processes, only: [:index, :show], param: :slug, path: "processes" do
35
- get "all-metrics", on: :member
36
30
  resources :participatory_space_private_users, only: :index, path: "members"
37
31
  end
38
32
 
@@ -56,6 +50,8 @@ module Decidim
56
50
  initializer "decidim_participatory_processes.register_icons" do
57
51
  Decidim.icons.register(name: "Decidim::ParticipatoryProcess", icon: "treasure-map-line", description: "Participatory Process", category: "activity",
58
52
  engine: :participatory_process)
53
+ Decidim.icons.register(name: "Decidim::ParticipatoryProcessGroup", icon: "treasure-map-line", description: "Participatory Process Group", category: "activity",
54
+ engine: :participatory_process)
59
55
  Decidim.icons.register(name: "archive-line", icon: "archive-line", category: "system", description: "", engine: :participatory_process)
60
56
  Decidim.icons.register(name: "grid-line", icon: "grid-line", category: "system", description: "", engine: :participatory_process)
61
57
  Decidim.icons.register(name: "globe-line", icon: "globe-line", category: "system", description: "", engine: :participatory_process)
@@ -81,32 +77,33 @@ module Decidim
81
77
  end
82
78
 
83
79
  initializer "decidim_participatory_processes.stats" do
84
- Decidim.stats.register :followers_count, priority: StatsRegistry::HIGH_PRIORITY do |participatory_space|
85
- Decidim::ParticipatoryProcesses::StatsFollowersCount.for(participatory_space)
86
- end
87
-
88
- Decidim.stats.register :participants_count, priority: StatsRegistry::HIGH_PRIORITY do |participatory_space|
89
- Decidim::ParticipatoryProcesses::StatsParticipantsCount.for(participatory_space)
80
+ Decidim.stats.register :processes_count,
81
+ priority: StatsRegistry::HIGH_PRIORITY,
82
+ icon_name: "treasure-map-line",
83
+ tooltip_key: "processes_count_tooltip" do |organization, start_at, end_at|
84
+ processes = ParticipatoryProcesses::OrganizationPrioritizedParticipatoryProcesses.new(organization)
85
+
86
+ processes = processes.where(created_at: start_at..) if start_at.present?
87
+ processes = processes.where(created_at: ..end_at) if end_at.present?
88
+ processes.count
90
89
  end
91
- end
92
90
 
93
- initializer "decidim_participatory_processes.register_metrics" do
94
- Decidim.metrics_registry.register(:participatory_processes) do |metric_registry|
95
- metric_registry.manager_class = "Decidim::ParticipatoryProcesses::Metrics::ParticipatoryProcessesMetricManage"
96
-
97
- metric_registry.settings do |settings|
98
- settings.attribute :highlighted, type: :boolean, default: false
99
- settings.attribute :scopes, type: :array, default: %w(home)
100
- settings.attribute :weight, type: :integer, default: 2
101
- end
91
+ Decidim.stats.register :followers_count,
92
+ priority: StatsRegistry::MEDIUM_PRIORITY,
93
+ icon_name: "user-follow-line",
94
+ tooltip_key: "followers_count_tooltip" do |participatory_space|
95
+ Decidim::ParticipatoryProcesses::ParticipatoryProcessesStatsFollowersCount.for(participatory_space)
102
96
  end
103
97
 
104
- Decidim.metrics_operation.register(:followers, :participatory_process) do |metric_operation|
105
- metric_operation.manager_class = "Decidim::ParticipatoryProcesses::Metrics::ParticipatoryProcessFollowersMetricMeasure"
98
+ Decidim.stats.register :participants_count,
99
+ priority: StatsRegistry::MEDIUM_PRIORITY,
100
+ icon_name: "user-line",
101
+ tooltip_key: "participants_count_tooltip" do |participatory_space|
102
+ Decidim::ParticipatoryProcesses::ParticipatoryProcessesStatsParticipantsCount.for(participatory_space)
106
103
  end
107
104
  end
108
105
 
109
- initializer "decidim_participatory_processes.webpacker.assets_path" do
106
+ initializer "decidim_participatory_processes.shakapacker.assets_path" do
110
107
  Decidim.register_assets_path File.expand_path("app/packs", root)
111
108
  end
112
109
  end
@@ -172,7 +172,7 @@ module Decidim
172
172
  decidim_admin_participatory_processes.participatory_process_share_tokens_path(current_participatory_space),
173
173
  active: is_active_link?(decidim_admin_participatory_processes.participatory_process_share_tokens_path(current_participatory_space)),
174
174
  icon_name: "share-line",
175
- if: allowed_to?(:read, :share_tokens, current_participatory_space:)
175
+ if: allowed_to?(:read, :share_token, current_participatory_space:)
176
176
  end
177
177
  end
178
178
 
@@ -27,10 +27,7 @@ Decidim.register_participatory_space(:participatory_processes) do |participatory
27
27
  resource.model_class_name = "Decidim::ParticipatoryProcessGroup"
28
28
  resource.card = "decidim/participatory_processes/process_group"
29
29
  resource.content_blocks_scope_name = "participatory_process_group_homepage"
30
- end
31
-
32
- participatory_space.register_stat :followers_count, tag: :followers, priority: Decidim::StatsRegistry::LOW_PRIORITY do |spaces, _start_at, _end_at|
33
- Decidim::Follow.where(followable: spaces).count
30
+ resource.searchable = true
34
31
  end
35
32
 
36
33
  participatory_space.context(:public) do |context|
@@ -10,7 +10,7 @@ module Decidim
10
10
  create_content_block!
11
11
 
12
12
  process_groups = []
13
- 2.times do
13
+ number_of_records.times do
14
14
  process_groups << create_process_group!
15
15
  end
16
16
 
@@ -19,7 +19,7 @@ module Decidim
19
19
  end
20
20
 
21
21
  taxonomy = create_taxonomy!(name: "Process Types", parent: nil)
22
- 2.times do
22
+ number_of_records.times do
23
23
  create_taxonomy!(name: ::Faker::Lorem.word, parent: taxonomy)
24
24
  end
25
25
  # filters for processes only
@@ -27,7 +27,7 @@ module Decidim
27
27
  taxonomies: taxonomy.all_children,
28
28
  participatory_space_manifests: [:participatory_processes])
29
29
 
30
- 2.times do |_n|
30
+ number_of_records.times do |_n|
31
31
  process = create_process!(process_group: process_groups.sample)
32
32
 
33
33
  create_follow!(Decidim::User.where(organization:, admin: true).first, process)
@@ -61,7 +61,6 @@ module Decidim
61
61
  description: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
62
62
  Decidim::Faker::Localized.paragraph(sentence_count: 3)
63
63
  end,
64
- hashtag: ::Faker::Internet.slug,
65
64
  group_url: ::Faker::Internet.url,
66
65
  organization:,
67
66
  hero_image: ::Faker::Boolean.boolean(true_ratio: 0.5) ? hero_image : nil, # Keep after organization
@@ -80,7 +79,6 @@ module Decidim
80
79
  title: Decidim::Faker::Localized.sentence(word_count: 5),
81
80
  slug: Decidim::Faker::Internet.unique.slug(words: nil, glue: "-"),
82
81
  subtitle: Decidim::Faker::Localized.sentence(word_count: 2),
83
- hashtag: "##{::Faker::Lorem.word}",
84
82
  short_description: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
85
83
  Decidim::Faker::Localized.sentence(word_count: 3)
86
84
  end,
@@ -111,7 +111,6 @@ FactoryBot.define do
111
111
  description { generate_localized_description(:participatory_process_group_description, skip_injection:) }
112
112
  hero_image { Decidim::Dev.test_file("city.jpeg", "image/jpeg") }
113
113
  organization
114
- hashtag { Faker::Internet.slug }
115
114
  group_url { Faker::Internet.url }
116
115
  developer_group { generate_localized_title(:participatory_process_group_developer_group, skip_injection:) }
117
116
  local_area { generate_localized_title(:participatory_process_group_local_area, skip_injection:) }
@@ -227,7 +226,7 @@ FactoryBot.define do
227
226
  end
228
227
  end
229
228
 
230
- factory :process_valuator, parent: :user, class: "Decidim::User" do
229
+ factory :process_evaluator, parent: :user, class: "Decidim::User" do
231
230
  transient do
232
231
  skip_injection { false }
233
232
  participatory_process { create(:participatory_process, skip_injection:) }
@@ -240,7 +239,7 @@ FactoryBot.define do
240
239
  create(:participatory_process_user_role,
241
240
  user:,
242
241
  participatory_process: evaluator.participatory_process,
243
- role: :valuator, skip_injection: evaluator.skip_injection)
242
+ role: :evaluator, skip_injection: evaluator.skip_injection)
244
243
  end
245
244
  end
246
245
 
@@ -4,7 +4,7 @@ module Decidim
4
4
  # This holds the decidim-participatory_processes version.
5
5
  module ParticipatoryProcesses
6
6
  def self.version
7
- "0.30.1"
7
+ "0.31.0.rc1"
8
8
  end
9
9
  end
10
10
  end