decidim-participatory_processes 0.30.3 → 0.31.0.rc2

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 (129) 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/commands/decidim/participatory_processes/create_democratic_quality_indicators_page.rb +40 -0
  25. data/app/controllers/decidim/participatory_processes/admin/{participatory_process_copies_controller.rb → participatory_process_duplicates_controller.rb} +7 -7
  26. data/app/controllers/decidim/participatory_processes/admin/participatory_process_group_landing_page_controller.rb +4 -0
  27. data/app/controllers/decidim/participatory_processes/admin/participatory_process_groups_controller.rb +3 -3
  28. data/app/controllers/decidim/participatory_processes/admin/participatory_process_imports_controller.rb +1 -1
  29. data/app/controllers/decidim/participatory_processes/admin/participatory_process_landing_page_controller.rb +4 -0
  30. data/app/controllers/decidim/participatory_processes/admin/participatory_process_steps_controller.rb +2 -2
  31. data/app/controllers/decidim/participatory_processes/admin/participatory_processes_controller.rb +3 -3
  32. data/app/controllers/decidim/participatory_processes/participatory_processes_controller.rb +0 -9
  33. data/app/forms/decidim/participatory_processes/admin/{participatory_process_copy_form.rb → participatory_process_duplicate_form.rb} +5 -5
  34. data/app/forms/decidim/participatory_processes/admin/participatory_process_form.rb +2 -1
  35. data/app/forms/decidim/participatory_processes/admin/participatory_process_group_form.rb +0 -1
  36. data/app/helpers/decidim/participatory_processes/application_helper.rb +14 -0
  37. data/app/helpers/decidim/participatory_processes/participatory_process_helper.rb +1 -1
  38. data/app/models/decidim/participatory_process.rb +4 -4
  39. data/app/models/decidim/participatory_process_group.rb +9 -0
  40. data/app/permissions/decidim/participatory_processes/permissions.rb +4 -4
  41. data/app/presenters/decidim/participatory_processes/admin_log/participatory_process_group_presenter.rb +0 -1
  42. data/app/presenters/decidim/participatory_processes/admin_log/participatory_process_presenter.rb +0 -1
  43. data/app/presenters/decidim/participatory_processes/participatory_process_democratic_quality_stats_presenter.rb +312 -0
  44. data/app/presenters/decidim/participatory_processes/participatory_process_group_stats_presenter.rb +1 -11
  45. data/app/presenters/decidim/participatory_processes/participatory_process_presenter.rb +35 -1
  46. data/app/presenters/decidim/participatory_processes/participatory_process_stats_presenter.rb +1 -3
  47. data/app/queries/decidim/participatory_processes/participatory_processes_stats_followers_count.rb +31 -0
  48. data/app/queries/decidim/participatory_processes/participatory_processes_stats_participants_count.rb +27 -0
  49. data/app/serializers/decidim/participatory_processes/participatory_process_importer.rb +0 -1
  50. data/app/views/decidim/participatory_processes/admin/{participatory_process_copies → participatory_process_duplicates}/_form.html.erb +5 -5
  51. data/app/views/decidim/participatory_processes/admin/participatory_process_duplicates/new.html.erb +19 -0
  52. data/app/views/decidim/participatory_processes/admin/participatory_process_groups/_form.html.erb +3 -7
  53. data/app/views/decidim/participatory_processes/admin/participatory_process_groups/index.html.erb +31 -15
  54. data/app/views/decidim/participatory_processes/admin/participatory_process_steps/_form.html.erb +1 -1
  55. data/app/views/decidim/participatory_processes/admin/participatory_process_steps/index.html.erb +39 -21
  56. data/app/views/decidim/participatory_processes/admin/participatory_process_user_roles/index.html.erb +42 -24
  57. data/app/views/decidim/participatory_processes/admin/participatory_processes/_form.html.erb +10 -14
  58. data/app/views/decidim/participatory_processes/admin/participatory_processes/_process_row.html.erb +125 -53
  59. data/app/views/decidim/participatory_processes/admin/participatory_processes/edit.html.erb +0 -8
  60. data/app/views/decidim/participatory_processes/admin/participatory_processes/index.html.erb +2 -2
  61. data/app/views/decidim/participatory_processes/admin/participatory_processes/manage_trash.html.erb +2 -1
  62. data/app/views/layouts/decidim/admin/_manage_processes.html.erb +1 -1
  63. data/app/views/layouts/decidim/admin/participatory_process_group.html.erb +1 -1
  64. data/config/assets.rb +2 -2
  65. data/config/locales/ar.yml +0 -13
  66. data/config/locales/bg.yml +0 -24
  67. data/config/locales/bs-BA.yml +0 -4
  68. data/config/locales/ca-IT.yml +320 -26
  69. data/config/locales/ca.yml +320 -26
  70. data/config/locales/cs.yml +116 -25
  71. data/config/locales/de.yml +124 -26
  72. data/config/locales/el.yml +0 -21
  73. data/config/locales/en.yml +304 -25
  74. data/config/locales/es-MX.yml +320 -26
  75. data/config/locales/es-PY.yml +320 -26
  76. data/config/locales/es.yml +320 -26
  77. data/config/locales/eu.yml +305 -26
  78. data/config/locales/fi-plain.yml +304 -25
  79. data/config/locales/fi.yml +304 -25
  80. data/config/locales/fr-CA.yml +87 -25
  81. data/config/locales/fr.yml +87 -25
  82. data/config/locales/ga-IE.yml +0 -7
  83. data/config/locales/gl.yml +0 -19
  84. data/config/locales/hu.yml +0 -21
  85. data/config/locales/id-ID.yml +0 -13
  86. data/config/locales/is-IS.yml +0 -11
  87. data/config/locales/it.yml +0 -20
  88. data/config/locales/ja.yml +305 -26
  89. data/config/locales/lb.yml +0 -20
  90. data/config/locales/lt.yml +0 -21
  91. data/config/locales/lv.yml +0 -14
  92. data/config/locales/nl.yml +0 -20
  93. data/config/locales/no.yml +0 -21
  94. data/config/locales/pl.yml +16 -24
  95. data/config/locales/pt-BR.yml +0 -23
  96. data/config/locales/pt.yml +0 -20
  97. data/config/locales/ro-RO.yml +2 -21
  98. data/config/locales/ru.yml +0 -11
  99. data/config/locales/sk.yml +0 -14
  100. data/config/locales/sr-CS.yml +0 -4
  101. data/config/locales/sv.yml +87 -25
  102. data/config/locales/tr-TR.yml +0 -20
  103. data/config/locales/uk.yml +0 -11
  104. data/config/locales/zh-CN.yml +0 -17
  105. data/config/locales/zh-TW.yml +0 -21
  106. data/db/migrate/20250403110052_add_democratic_quality_static_page.rb +17 -0
  107. data/db/migrate/20250605114136_remove_hashtag_from_participatory_processes.rb +7 -0
  108. data/db/migrate/20250605114415_remove_hashtag_from_participatory_processes_groups.rb +7 -0
  109. data/decidim-participatory_processes.gemspec +3 -0
  110. data/lib/decidim/api/participatory_process_group_type.rb +9 -0
  111. data/lib/decidim/api/participatory_process_input_filter.rb +0 -1
  112. data/lib/decidim/api/participatory_process_step_type.rb +2 -0
  113. data/lib/decidim/api/participatory_process_type.rb +17 -11
  114. data/lib/decidim/participatory_processes/admin_engine.rb +1 -1
  115. data/lib/decidim/participatory_processes/content_blocks/registry_manager.rb +25 -5
  116. data/lib/decidim/participatory_processes/engine.rb +30 -25
  117. data/lib/decidim/participatory_processes/participatory_space.rb +1 -4
  118. data/lib/decidim/participatory_processes/seeds.rb +5 -5
  119. data/lib/decidim/participatory_processes/test/factories.rb +2 -3
  120. data/lib/decidim/participatory_processes/version.rb +1 -1
  121. metadata +72 -21
  122. data/app/cells/decidim/participatory_processes/content_blocks/metrics_cell.rb +0 -25
  123. data/app/presenters/decidim/participatory_processes/participatory_process_metric_charts_presenter.rb +0 -21
  124. data/app/queries/decidim/participatory_processes/metrics/participatory_process_followers_metric_measure.rb +0 -31
  125. data/app/queries/decidim/participatory_processes/metrics/participatory_processes_metric_manage.rb +0 -27
  126. data/app/queries/decidim/participatory_processes/stats_followers_count.rb +0 -60
  127. data/app/queries/decidim/participatory_processes/stats_participants_count.rb +0 -136
  128. data/app/views/decidim/participatory_processes/admin/participatory_process_copies/new.html.erb +0 -19
  129. data/app/views/decidim/participatory_processes/participatory_processes/all_metrics.html.erb +0 -25
@@ -5,16 +5,12 @@ zh-TW:
5
5
  participatory_process:
6
6
  announcement: 公告
7
7
  area_id: 區域
8
- copy_categories: 複製類別
9
- copy_components: 複製組件
10
- copy_steps: 複製步驟
11
8
  decidim_area_id: 區域
12
9
  description: 說明
13
10
  developer_group: 促銷團隊
14
11
  document: 文件
15
12
  domain: 網域
16
13
  end_date: 結束日期
17
- hashtag: 主題標籤
18
14
  hero_image: 首頁圖片
19
15
  import_attachments: 匯入附件
20
16
  import_categories: 匯入類別
@@ -40,7 +36,6 @@ zh-TW:
40
36
  description: 說明
41
37
  developer_group: 促銷團隊
42
38
  group_url: 網站
43
- hashtag: 主題標籤
44
39
  hero_image: 圖片
45
40
  local_area: 組織區域
46
41
  meta_scope: 元數據範圍
@@ -82,13 +77,11 @@ zh-TW:
82
77
  admin:
83
78
  actions:
84
79
  activate: 啟動
85
- configure: 配置
86
80
  confirm_destroy: 確認刪除
87
81
  destroy: 刪除
88
82
  duplicate: 重複
89
83
  edit: 編輯
90
84
  import_process: 匯入
91
- moderate: 管理
92
85
  new_process: 新的程序
93
86
  new_process_group: 新的程序群組
94
87
  new_process_step: 新階段
@@ -101,14 +94,12 @@ zh-TW:
101
94
  participatory_process_groups: 程序群組
102
95
  participatory_process_groups_submenu:
103
96
  info: 資訊
104
- landing_page: 登陸頁面
105
97
  participatory_processes: 程序
106
98
  participatory_processes_submenu:
107
99
  attachment_collections: 資料夾
108
100
  attachment_files: 檔案
109
101
  attachments: 附件
110
102
  components: 组件
111
- landing_page: 登陸頁面
112
103
  moderations: 版主
113
104
  process_admins: 程序管理員
114
105
  steps: 分類
@@ -140,14 +131,10 @@ zh-TW:
140
131
  admin: 管理員
141
132
  collaborator: 合作者
142
133
  moderator: 版主
143
- valuator: 評估者
144
134
  user:
145
135
  fields:
146
136
  invitation_accepted_at: 邀請已接受時間
147
137
  invitation_sent_at: 邀請已發送時間
148
- participatory_process_copies:
149
- new:
150
- copy: 複製
151
138
  participatory_process_groups:
152
139
  destroy:
153
140
  success: 參與式流程組成功刪除。
@@ -301,11 +288,6 @@ zh-TW:
301
288
  not_found: '未在資料庫(ID:%{id}) 中找到此流程類型'
302
289
  menu:
303
290
  processes: 程序
304
- metrics:
305
- participatory_processes:
306
- description: 此組織中的參與式過程數量
307
- object: 參與程序
308
- title: 參與程序
309
291
  participatory_process_groups:
310
292
  content_blocks:
311
293
  html_1:
@@ -359,9 +341,6 @@ zh-TW:
359
341
  name: 精選程序
360
342
  index:
361
343
  title: 參與程序
362
- participatory_process_steps:
363
- index:
364
- back_to_process: 返回程序頁
365
344
  participatory_processes:
366
345
  filters:
367
346
  all_types: 所有類型
@@ -0,0 +1,17 @@
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
+ Decidim::ParticipatoryProcesses::CreateDemocraticQualityIndicatorsPage.call(organization.id)
15
+ end
16
+ end
17
+ 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,34 +77,43 @@ 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)
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
86
89
  end
87
90
 
88
- Decidim.stats.register :participants_count, priority: StatsRegistry::HIGH_PRIORITY do |participatory_space|
89
- Decidim::ParticipatoryProcesses::StatsParticipantsCount.for(participatory_space)
90
- end
91
- end
92
-
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
109
+
110
+ initializer "decidim_participatory_processes.static_pages" do
111
+ config.to_prepare do
112
+ Decidim::EventsManager.subscribe("decidim.system.create_organization:after") do |_event_name, data|
113
+ Decidim::ParticipatoryProcesses::CreateDemocraticQualityIndicatorsPage.call(data[:organization].id)
114
+ end
115
+ end
116
+ end
112
117
  end
113
118
  end
114
119
  end
@@ -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|
@@ -7,10 +7,12 @@ module Decidim
7
7
  module ParticipatoryProcesses
8
8
  class Seeds < Decidim::Seeds
9
9
  def call
10
+ Decidim::ParticipatoryProcesses::CreateDemocraticQualityIndicatorsPage.call(organization.id)
11
+
10
12
  create_content_block!
11
13
 
12
14
  process_groups = []
13
- 2.times do
15
+ number_of_records.times do
14
16
  process_groups << create_process_group!
15
17
  end
16
18
 
@@ -19,7 +21,7 @@ module Decidim
19
21
  end
20
22
 
21
23
  taxonomy = create_taxonomy!(name: "Process Types", parent: nil)
22
- 2.times do
24
+ number_of_records.times do
23
25
  create_taxonomy!(name: ::Faker::Lorem.word, parent: taxonomy)
24
26
  end
25
27
  # filters for processes only
@@ -27,7 +29,7 @@ module Decidim
27
29
  taxonomies: taxonomy.all_children,
28
30
  participatory_space_manifests: [:participatory_processes])
29
31
 
30
- 2.times do |_n|
32
+ number_of_records.times do |_n|
31
33
  process = create_process!(process_group: process_groups.sample)
32
34
 
33
35
  create_follow!(Decidim::User.where(organization:, admin: true).first, process)
@@ -61,7 +63,6 @@ module Decidim
61
63
  description: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
62
64
  Decidim::Faker::Localized.paragraph(sentence_count: 3)
63
65
  end,
64
- hashtag: ::Faker::Internet.slug,
65
66
  group_url: ::Faker::Internet.url,
66
67
  organization:,
67
68
  hero_image: ::Faker::Boolean.boolean(true_ratio: 0.5) ? hero_image : nil, # Keep after organization
@@ -80,7 +81,6 @@ module Decidim
80
81
  title: Decidim::Faker::Localized.sentence(word_count: 5),
81
82
  slug: Decidim::Faker::Internet.unique.slug(words: nil, glue: "-"),
82
83
  subtitle: Decidim::Faker::Localized.sentence(word_count: 2),
83
- hashtag: "##{::Faker::Lorem.word}",
84
84
  short_description: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
85
85
  Decidim::Faker::Localized.sentence(word_count: 3)
86
86
  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.3"
7
+ "0.31.0.rc2"
8
8
  end
9
9
  end
10
10
  end