decidim-participatory_processes 0.30.2 → 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 (127) 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 +4 -4
  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 +0 -1
  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 -13
  64. data/config/locales/bg.yml +0 -24
  65. data/config/locales/bs-BA.yml +0 -4
  66. data/config/locales/ca-IT.yml +319 -25
  67. data/config/locales/ca.yml +319 -25
  68. data/config/locales/cs.yml +93 -26
  69. data/config/locales/de.yml +123 -25
  70. data/config/locales/el.yml +0 -21
  71. data/config/locales/en.yml +303 -24
  72. data/config/locales/es-MX.yml +319 -25
  73. data/config/locales/es-PY.yml +319 -25
  74. data/config/locales/es.yml +319 -25
  75. data/config/locales/eu.yml +304 -25
  76. data/config/locales/fi-plain.yml +303 -24
  77. data/config/locales/fi.yml +303 -24
  78. data/config/locales/fr-CA.yml +86 -24
  79. data/config/locales/fr.yml +86 -24
  80. data/config/locales/ga-IE.yml +0 -7
  81. data/config/locales/gl.yml +0 -19
  82. data/config/locales/hu.yml +0 -21
  83. data/config/locales/id-ID.yml +0 -13
  84. data/config/locales/is-IS.yml +0 -11
  85. data/config/locales/it.yml +0 -20
  86. data/config/locales/ja.yml +123 -25
  87. data/config/locales/lb.yml +0 -20
  88. data/config/locales/lt.yml +0 -21
  89. data/config/locales/lv.yml +0 -14
  90. data/config/locales/nl.yml +0 -20
  91. data/config/locales/no.yml +0 -21
  92. data/config/locales/pl.yml +16 -24
  93. data/config/locales/pt-BR.yml +0 -23
  94. data/config/locales/pt.yml +0 -20
  95. data/config/locales/ro-RO.yml +2 -21
  96. data/config/locales/ru.yml +0 -11
  97. data/config/locales/sk.yml +0 -14
  98. data/config/locales/sr-CS.yml +0 -4
  99. data/config/locales/sv.yml +86 -24
  100. data/config/locales/tr-TR.yml +0 -20
  101. data/config/locales/uk.yml +0 -11
  102. data/config/locales/zh-CN.yml +0 -17
  103. data/config/locales/zh-TW.yml +0 -21
  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/participatory_space.rb +1 -4
  116. data/lib/decidim/participatory_processes/seeds.rb +3 -5
  117. data/lib/decidim/participatory_processes/test/factories.rb +2 -3
  118. data/lib/decidim/participatory_processes/version.rb +1 -1
  119. metadata +72 -22
  120. data/app/cells/decidim/participatory_processes/content_blocks/metrics_cell.rb +0 -25
  121. data/app/presenters/decidim/participatory_processes/participatory_process_metric_charts_presenter.rb +0 -21
  122. data/app/queries/decidim/participatory_processes/metrics/participatory_process_followers_metric_measure.rb +0 -31
  123. data/app/queries/decidim/participatory_processes/metrics/participatory_processes_metric_manage.rb +0 -27
  124. data/app/queries/decidim/participatory_processes/stats_followers_count.rb +0 -60
  125. data/app/queries/decidim/participatory_processes/stats_participants_count.rb +0 -136
  126. data/app/views/decidim/participatory_processes/admin/participatory_process_copies/new.html.erb +0 -19
  127. data/app/views/decidim/participatory_processes/participatory_processes/all_metrics.html.erb +0 -25
@@ -3,9 +3,9 @@
3
3
  module Decidim
4
4
  module ParticipatoryProcesses
5
5
  module Admin
6
- # A command with all the business logic when copying a new participatory
6
+ # A command with all the business logic when duplicating a new participatory
7
7
  # process in the system.
8
- class CopyParticipatoryProcess < Decidim::Command
8
+ class DuplicateParticipatoryProcess < Decidim::Command
9
9
  delegate :current_user, to: :form
10
10
  # Public: Initializes the command.
11
11
  #
@@ -27,28 +27,27 @@ module Decidim
27
27
 
28
28
  Decidim.traceability.perform_action!("duplicate", @participatory_process, current_user) do
29
29
  ParticipatoryProcess.transaction do
30
- copy_participatory_process
31
- copy_participatory_process_attachments
32
- copy_participatory_process_steps if @form.copy_steps?
33
- copy_participatory_process_components if @form.copy_components?
34
- copy_landing_page_blocks if @form.copy_landing_page_blocks?
30
+ duplicate_participatory_process
31
+ duplicate_participatory_process_attachments
32
+ duplicate_participatory_process_steps if @form.duplicate_steps?
33
+ duplicate_participatory_process_components if @form.duplicate_components?
34
+ duplicate_landing_page_blocks if @form.duplicate_landing_page_blocks?
35
35
  end
36
36
  end
37
37
 
38
- broadcast(:ok, @copied_process)
38
+ broadcast(:ok, @duplicated_process)
39
39
  end
40
40
 
41
41
  private
42
42
 
43
43
  attr_reader :form
44
44
 
45
- def copy_participatory_process
46
- @copied_process = ParticipatoryProcess.create!(
45
+ def duplicate_participatory_process
46
+ @duplicated_process = ParticipatoryProcess.create!(
47
47
  organization: @participatory_process.organization,
48
48
  title: form.title,
49
49
  subtitle: @participatory_process.subtitle,
50
50
  slug: form.slug,
51
- hashtag: @participatory_process.hashtag,
52
51
  description: @participatory_process.description,
53
52
  short_description: @participatory_process.short_description,
54
53
  promoted: @participatory_process.promoted,
@@ -66,13 +65,13 @@ module Decidim
66
65
  )
67
66
  end
68
67
 
69
- def copy_participatory_process_attachments
68
+ def duplicate_participatory_process_attachments
70
69
  return unless @participatory_process.attached_uploader(:hero_image).attached?
71
70
 
72
- @copied_process.send(:hero_image).attach(@participatory_process.send(:hero_image).blob)
71
+ @duplicated_process.send(:hero_image).attach(@participatory_process.send(:hero_image).blob)
73
72
  end
74
73
 
75
- def copy_participatory_process_steps
74
+ def duplicate_participatory_process_steps
76
75
  @steps_relationship = {}
77
76
 
78
77
  @participatory_process.steps.each do |step|
@@ -81,7 +80,7 @@ module Decidim
81
80
  description: step.description,
82
81
  start_date: step.start_date,
83
82
  end_date: step.end_date,
84
- participatory_process: @copied_process,
83
+ participatory_process: @duplicated_process,
85
84
  position: step.position,
86
85
  active: step.active
87
86
  )
@@ -89,18 +88,18 @@ module Decidim
89
88
  end
90
89
  end
91
90
 
92
- def copy_participatory_process_components
91
+ def duplicate_participatory_process_components
93
92
  @participatory_process.components.each do |component|
94
- copied_step_settings = @form.copy_steps? ? map_step_settings(component.step_settings) : {}
93
+ duplicated_step_settings = @form.duplicate_steps? ? map_step_settings(component.step_settings) : {}
95
94
  new_component = Component.create!(
96
95
  manifest_name: component.manifest_name,
97
96
  name: component.name,
98
- participatory_space: @copied_process,
97
+ participatory_space: @duplicated_process,
99
98
  settings: component.settings,
100
- step_settings: copied_step_settings,
99
+ step_settings: duplicated_step_settings,
101
100
  weight: component.weight
102
101
  )
103
- component.manifest.run_hooks(:copy, new_component:, old_component: component)
102
+ component.manifest.run_hooks(:duplicate, new_component:, old_component: component)
104
103
  end
105
104
  end
106
105
 
@@ -110,26 +109,26 @@ module Decidim
110
109
  end
111
110
  end
112
111
 
113
- def copy_landing_page_blocks
112
+ def duplicate_landing_page_blocks
114
113
  blocks = Decidim::ContentBlock.where(scoped_resource_id: @participatory_process.id, scope_name: "participatory_process_homepage",
115
114
  organization: @participatory_process.organization)
116
115
  return if blocks.blank?
117
116
 
118
117
  blocks.each do |block|
119
118
  new_block = Decidim::ContentBlock.create!(
120
- organization: @copied_process.organization,
119
+ organization: @duplicated_process.organization,
121
120
  scope_name: "participatory_process_homepage",
122
- scoped_resource_id: @copied_process.id,
121
+ scoped_resource_id: @duplicated_process.id,
123
122
  manifest_name: block.manifest_name,
124
123
  settings: block.settings,
125
124
  weight: block.weight,
126
- published_at: block.published_at.present? ? @copied_process.created_at : nil # determine if block is active/inactive
125
+ published_at: block.published_at.present? ? @duplicated_process.created_at : nil # determine if block is active/inactive
127
126
  )
128
- copy_block_attachments(block, new_block) if block.attachments.present?
127
+ duplicate_block_attachments(block, new_block) if block.attachments.present?
129
128
  end
130
129
  end
131
130
 
132
- def copy_block_attachments(block, new_block)
131
+ def duplicate_block_attachments(block, new_block)
133
132
  block.attachments.map(&:name).each do |name|
134
133
  original_image = block.images_container.send(name).blob
135
134
  next if original_image.blank?
@@ -3,7 +3,7 @@
3
3
  module Decidim
4
4
  module ParticipatoryProcesses
5
5
  module Admin
6
- # A command with all the business logic when copying a new participatory
6
+ # A command with all the business logic when duplicating a new participatory
7
7
  # process in the system.
8
8
  class ImportParticipatoryProcess < Decidim::Command
9
9
  delegate :current_user, to: :form
@@ -8,12 +8,24 @@ module Decidim
8
8
  class UpdateParticipatoryProcess < Decidim::Commands::UpdateResource
9
9
  fetch_file_attributes :hero_image
10
10
 
11
- fetch_form_attributes :title, :subtitle, :weight, :slug, :hashtag, :promoted, :description,
12
- :short_description, :taxonomizations,
13
- :private_space, :developer_group, :local_area, :target, :participatory_scope,
14
- :participatory_structure, :meta_scope, :start_date, :end_date, :participatory_process_group,
11
+ fetch_form_attributes :title, :subtitle, :weight, :slug, :promoted,
12
+ :taxonomizations, :private_space, :developer_group, :local_area,
13
+ :target, :participatory_scope, :participatory_structure,
14
+ :meta_scope, :start_date, :end_date, :participatory_process_group,
15
15
  :announcement
16
16
 
17
+ protected
18
+
19
+ def attributes
20
+ parsed_description = Decidim::ContentProcessor.parse(form.description, current_organization: form.current_organization).rewrite
21
+ parsed_short_description = Decidim::ContentProcessor.parse(form.short_description, current_organization: form.current_organization).rewrite
22
+
23
+ super.merge(
24
+ description: parsed_description,
25
+ short_description: parsed_short_description
26
+ )
27
+ end
28
+
17
29
  private
18
30
 
19
31
  def related_processes
@@ -8,7 +8,7 @@ module Decidim
8
8
  class UpdateParticipatoryProcessGroup < Decidim::Commands::UpdateResource
9
9
  fetch_file_attributes :hero_image
10
10
 
11
- fetch_form_attributes :title, :description, :hashtag, :group_url, :developer_group, :local_area,
11
+ fetch_form_attributes :title, :description, :group_url, :developer_group, :local_area,
12
12
  :meta_scope, :participatory_scope, :participatory_structure, :target, :promoted
13
13
 
14
14
  private
@@ -5,27 +5,27 @@ module Decidim
5
5
  module Admin
6
6
  # Controller that allows managing participatory processes.
7
7
  #
8
- class ParticipatoryProcessCopiesController < Decidim::Admin::ApplicationController
8
+ class ParticipatoryProcessDuplicatesController < Decidim::Admin::ApplicationController
9
9
  include Concerns::ParticipatoryProcessAdmin
10
10
 
11
11
  def new
12
12
  enforce_permission_to :create, :process
13
- @form = form(ParticipatoryProcessCopyForm).from_model(current_participatory_process)
13
+ @form = form(ParticipatoryProcessDuplicateForm).from_model(current_participatory_process)
14
14
  end
15
15
 
16
16
  def create
17
17
  enforce_permission_to :create, :process
18
- @form = form(ParticipatoryProcessCopyForm).from_params(params)
18
+ @form = form(ParticipatoryProcessDuplicateForm).from_params(params)
19
19
 
20
- CopyParticipatoryProcess.call(@form, current_participatory_process) do
20
+ DuplicateParticipatoryProcess.call(@form, current_participatory_process) do
21
21
  on(:ok) do
22
- flash[:notice] = I18n.t("participatory_processes_copies.create.success", scope: "decidim.admin")
22
+ flash[:notice] = I18n.t("participatory_processes_duplicates.create.success", scope: "decidim.admin")
23
23
  redirect_to participatory_processes_path
24
24
  end
25
25
 
26
26
  on(:invalid) do
27
- flash.now[:alert] = I18n.t("participatory_processes_copies.create.error", scope: "decidim.admin")
28
- render :new
27
+ flash.now[:alert] = I18n.t("participatory_processes_duplicates.create.error", scope: "decidim.admin")
28
+ render :new, status: :unprocessable_entity
29
29
  end
30
30
  end
31
31
  end
@@ -43,6 +43,10 @@ module Decidim
43
43
 
44
44
  alias participatory_process_group scoped_resource
45
45
 
46
+ def content_blocks_title
47
+ t("decidim.admin.menu.participatory_process_groups_submenu.landing_page")
48
+ end
49
+
46
50
  private
47
51
 
48
52
  def collection
@@ -36,7 +36,7 @@ module Decidim
36
36
 
37
37
  on(:invalid) do
38
38
  flash.now[:alert] = I18n.t("participatory_processes_group.create.error", scope: "decidim.admin")
39
- render :new
39
+ render :new, status: :unprocessable_entity
40
40
  end
41
41
  end
42
42
  end
@@ -61,7 +61,7 @@ module Decidim
61
61
 
62
62
  on(:invalid) do
63
63
  flash.now[:alert] = I18n.t("participatory_process_groups.update.error", scope: "decidim.admin")
64
- render :edit, layout: "decidim/admin/participatory_process_group"
64
+ render :edit, layout: "decidim/admin/participatory_process_group", status: :unprocessable_entity
65
65
  end
66
66
  end
67
67
  end
@@ -78,7 +78,7 @@ module Decidim
78
78
 
79
79
  on(:invalid) do
80
80
  flash.now[:alert] = I18n.t("participatory_process_groups.destroy.error", scope: "decidim.admin")
81
- render :index
81
+ render :index, status: :unprocessable_entity
82
82
  end
83
83
  end
84
84
  end
@@ -25,7 +25,7 @@ module Decidim
25
25
 
26
26
  on(:invalid) do
27
27
  flash.now[:alert] = I18n.t("participatory_process_imports.create.error", scope: "decidim.admin")
28
- render :new
28
+ render :new, status: :unprocessable_entity
29
29
  end
30
30
  end
31
31
  end
@@ -31,6 +31,10 @@ module Decidim
31
31
  def resource_content_block_cell
32
32
  "decidim/participatory_processes/content_block"
33
33
  end
34
+
35
+ def content_blocks_title
36
+ t("decidim.admin.menu.participatory_processes_submenu.landing_page")
37
+ end
34
38
  end
35
39
  end
36
40
  end
@@ -32,7 +32,7 @@ module Decidim
32
32
 
33
33
  on(:invalid) do
34
34
  flash.now[:alert] = I18n.t("participatory_process_steps.create.error", scope: "decidim.admin")
35
- render :new
35
+ render :new, status: :unprocessable_entity
36
36
  end
37
37
  end
38
38
  end
@@ -54,7 +54,7 @@ module Decidim
54
54
 
55
55
  on(:invalid) do
56
56
  flash.now[:alert] = I18n.t("participatory_process_steps.update.error", scope: "decidim.admin")
57
- render :edit
57
+ render :edit, status: :unprocessable_entity
58
58
  end
59
59
  end
60
60
  end
@@ -42,7 +42,7 @@ module Decidim
42
42
 
43
43
  on(:invalid) do
44
44
  flash.now[:alert] = I18n.t("participatory_processes.create.error", scope: "decidim.admin")
45
- render :new
45
+ render :new, status: :unprocessable_entity
46
46
  end
47
47
  end
48
48
  end
@@ -68,12 +68,12 @@ module Decidim
68
68
 
69
69
  on(:invalid) do
70
70
  flash.now[:alert] = I18n.t("participatory_processes.update.error", scope: "decidim.admin")
71
- render :edit, layout: "decidim/admin/participatory_process"
71
+ render :edit, layout: "decidim/admin/participatory_process", status: :unprocessable_entity
72
72
  end
73
73
  end
74
74
  end
75
75
 
76
- def copy
76
+ def duplicate
77
77
  enforce_permission_to :create, Decidim::ParticipatoryProcess
78
78
  end
79
79
 
@@ -14,7 +14,6 @@ module Decidim
14
14
  :promoted_collection,
15
15
  :participatory_processes,
16
16
  :stats,
17
- :metrics,
18
17
  :participatory_process_group,
19
18
  :default_date_filter,
20
19
  :related_processes,
@@ -31,10 +30,6 @@ module Decidim
31
30
  enforce_permission_to :read, :process, process: current_participatory_space
32
31
  end
33
32
 
34
- def all_metrics
35
- enforce_permission_to :read, :process, process: current_participatory_space
36
- end
37
-
38
33
  private
39
34
 
40
35
  def search_collection
@@ -110,10 +105,6 @@ module Decidim
110
105
  @stats ||= ParticipatoryProcessStatsPresenter.new(participatory_process: current_participatory_space)
111
106
  end
112
107
 
113
- def metrics
114
- @metrics ||= ParticipatoryProcessMetricChartsPresenter.new(participatory_process: current_participatory_space, view_context:)
115
- end
116
-
117
108
  def participatory_process_group
118
109
  @participatory_process_group ||= current_participatory_space.participatory_process_group
119
110
  end
@@ -3,10 +3,10 @@
3
3
  module Decidim
4
4
  module ParticipatoryProcesses
5
5
  module Admin
6
- # A form object used to copy a participatory processes from the admin
6
+ # A form object used to duplicate a participatory processes from the admin
7
7
  # dashboard.
8
8
  #
9
- class ParticipatoryProcessCopyForm < Form
9
+ class ParticipatoryProcessDuplicateForm < Form
10
10
  include TranslatableAttributes
11
11
 
12
12
  translatable_attribute :title, String
@@ -14,9 +14,9 @@ module Decidim
14
14
  mimic :participatory_process
15
15
 
16
16
  attribute :slug, String
17
- attribute :copy_steps, Boolean
18
- attribute :copy_components, Boolean
19
- attribute :copy_landing_page_blocks, Boolean
17
+ attribute :duplicate_steps, Boolean
18
+ attribute :duplicate_components, Boolean
19
+ attribute :duplicate_landing_page_blocks, Boolean
20
20
 
21
21
  validates :slug, presence: true, format: { with: Decidim::ParticipatoryProcess.slug_format }
22
22
  validates :title, translatable_presence: true
@@ -25,7 +25,6 @@ module Decidim
25
25
  translatable_attribute :title, String
26
26
  translatable_attribute :target, String
27
27
 
28
- attribute :hashtag, String
29
28
  attribute :slug, String
30
29
 
31
30
  attribute :participatory_process_group_id, Integer
@@ -56,6 +55,8 @@ module Decidim
56
55
  def map_model(model)
57
56
  self.participatory_process_group_id = model.decidim_participatory_process_group_id
58
57
  self.related_process_ids = model.linked_participatory_space_resources(:participatory_process, "related_processes").pluck(:id)
58
+ self.description = model.presenter.editor_description(all_locales: true)
59
+ self.short_description = model.presenter.editor_short_description(all_locales: true)
59
60
  @processes = Decidim::ParticipatoryProcess.where(organization: model.organization).where.not(id: model.id)
60
61
  end
61
62
 
@@ -20,7 +20,6 @@ module Decidim
20
20
  translatable_attribute :target, String
21
21
 
22
22
  attribute :group_url, String
23
- attribute :hashtag, String
24
23
  attribute :participatory_process_ids, Array[Integer]
25
24
 
26
25
  attribute :promoted, Boolean
@@ -11,6 +11,20 @@ module Decidim
11
11
  def component_name
12
12
  (defined?(current_component) && translated_attribute(current_component&.name).presence) || t("decidim.menu.processes")
13
13
  end
14
+
15
+ def safe_content?
16
+ true
17
+ end
18
+
19
+ def safe_content_admin?
20
+ true
21
+ end
22
+
23
+ def render_rich_text(process, method)
24
+ sanitized = render_sanitized_content(process, method, presenter_class: Decidim::ParticipatoryProcesses::ParticipatoryProcessPresenter)
25
+
26
+ Decidim::ContentProcessor.render_without_format(sanitized).html_safe
27
+ end
14
28
  end
15
29
  end
16
30
  end
@@ -146,6 +146,10 @@ module Decidim
146
146
  Decidim::ParticipatoryProcesses::AdminLog::ParticipatoryProcessPresenter
147
147
  end
148
148
 
149
+ def presenter
150
+ @presenter ||= Decidim::ParticipatoryProcesses::ParticipatoryProcessPresenter.new(self)
151
+ end
152
+
149
153
  def active?
150
154
  return false if start_date.blank?
151
155
 
@@ -173,10 +177,6 @@ module Decidim
173
177
  past?
174
178
  end
175
179
 
176
- def hashtag
177
- attributes["hashtag"].to_s.delete("#")
178
- end
179
-
180
180
  def to_param
181
181
  slug
182
182
  end
@@ -3,6 +3,7 @@
3
3
  module Decidim
4
4
  class ParticipatoryProcessGroup < ApplicationRecord
5
5
  include Decidim::Resourceable
6
+ include Decidim::Searchable
6
7
  include Decidim::Traceable
7
8
  include Decidim::HasUploadValidations
8
9
  include Decidim::TranslatableResource
@@ -23,6 +24,14 @@ module Decidim
23
24
  has_one_attached :hero_image
24
25
  validates_upload :hero_image, uploader: Decidim::HeroImageUploader
25
26
 
27
+ searchable_fields({
28
+ participatory_space: :itself,
29
+ A: :title,
30
+ B: :description
31
+ },
32
+ index_on_create: ->(_process) { true },
33
+ index_on_update: ->(_process) { true })
34
+
26
35
  # Scope to return only the promoted groups.
27
36
  #
28
37
  # Returns an ActiveRecord::Relation.
@@ -47,7 +47,7 @@ module Decidim
47
47
 
48
48
  moderator_action?
49
49
  collaborator_action?
50
- valuator_action?
50
+ evaluator_action?
51
51
  process_admin_action?
52
52
  permission_action
53
53
  end
@@ -217,9 +217,9 @@ module Decidim
217
217
  allow! if permission_action.action == :preview
218
218
  end
219
219
 
220
- # Valuators can only read the components of a process.
221
- def valuator_action?
222
- return unless can_manage_process?(role: :valuator)
220
+ # Evaluators can only read the components of a process.
221
+ def evaluator_action?
222
+ return unless can_manage_process?(role: :evaluator)
223
223
 
224
224
  allow! if permission_action.action == :read && permission_action.subject == :component
225
225
  allow! if permission_action.action == :export && permission_action.subject == :component_data
@@ -19,7 +19,6 @@ module Decidim
19
19
  {
20
20
  description: :i18n,
21
21
  developer_group: :i18n,
22
- hashtag: :string,
23
22
  group_url: :string,
24
23
  local_area: :i18n,
25
24
  meta_scope: :i18n,
@@ -19,7 +19,6 @@ module Decidim
19
19
  {
20
20
  description: :i18n,
21
21
  developer_group: :i18n,
22
- hashtag: :string,
23
22
  decidim_area_id: :area,
24
23
  local_area: :i18n,
25
24
  meta_scope: :i18n,