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.
- checksums.yaml +4 -4
- data/app/cells/decidim/participatory_process_groups/content_blocks/main_data/content.erb +1 -1
- data/app/cells/decidim/participatory_process_groups/content_blocks/main_data_cell.rb +1 -15
- data/app/cells/decidim/participatory_processes/content_blocks/democratic_quality_stats/show.erb +74 -0
- data/app/cells/decidim/participatory_processes/content_blocks/democratic_quality_stats_cell.rb +29 -0
- data/app/cells/decidim/participatory_processes/content_blocks/democratic_quality_stats_settings_form/citizen_influence.erb +32 -0
- data/app/cells/decidim/participatory_processes/content_blocks/democratic_quality_stats_settings_form/inclusiveness.erb +69 -0
- data/app/cells/decidim/participatory_processes/content_blocks/democratic_quality_stats_settings_form/informativeness.erb +29 -0
- data/app/cells/decidim/participatory_processes/content_blocks/democratic_quality_stats_settings_form/show.erb +10 -0
- data/app/cells/decidim/participatory_processes/content_blocks/democratic_quality_stats_settings_form_cell.rb +81 -0
- data/app/cells/decidim/participatory_processes/content_blocks/highlighted_processes_settings_form/show.erb +3 -1
- data/app/cells/decidim/participatory_processes/content_blocks/main_data_cell.rb +10 -2
- data/app/cells/decidim/participatory_processes/indicator/show.erb +11 -0
- data/app/cells/decidim/participatory_processes/indicator_cell.rb +25 -0
- data/app/cells/decidim/participatory_processes/process_dropdown_metadata/metadata.erb +0 -7
- data/app/cells/decidim/participatory_processes/process_filters_cell.rb +2 -0
- data/app/cells/decidim/participatory_processes/process_step/show.erb +1 -1
- data/app/commands/decidim/participatory_processes/admin/create_participatory_process.rb +1 -1
- data/app/commands/decidim/participatory_processes/admin/create_participatory_process_group.rb +1 -1
- data/app/commands/decidim/participatory_processes/admin/{copy_participatory_process.rb → duplicate_participatory_process.rb} +25 -26
- data/app/commands/decidim/participatory_processes/admin/import_participatory_process.rb +1 -1
- data/app/commands/decidim/participatory_processes/admin/update_participatory_process.rb +16 -4
- data/app/commands/decidim/participatory_processes/admin/update_participatory_process_group.rb +1 -1
- data/app/controllers/decidim/participatory_processes/admin/{participatory_process_copies_controller.rb → participatory_process_duplicates_controller.rb} +7 -7
- data/app/controllers/decidim/participatory_processes/admin/participatory_process_group_landing_page_controller.rb +4 -0
- data/app/controllers/decidim/participatory_processes/admin/participatory_process_groups_controller.rb +3 -3
- data/app/controllers/decidim/participatory_processes/admin/participatory_process_imports_controller.rb +1 -1
- data/app/controllers/decidim/participatory_processes/admin/participatory_process_landing_page_controller.rb +4 -0
- data/app/controllers/decidim/participatory_processes/admin/participatory_process_steps_controller.rb +2 -2
- data/app/controllers/decidim/participatory_processes/admin/participatory_processes_controller.rb +3 -3
- data/app/controllers/decidim/participatory_processes/participatory_processes_controller.rb +0 -9
- data/app/forms/decidim/participatory_processes/admin/{participatory_process_copy_form.rb → participatory_process_duplicate_form.rb} +5 -5
- data/app/forms/decidim/participatory_processes/admin/participatory_process_form.rb +2 -1
- data/app/forms/decidim/participatory_processes/admin/participatory_process_group_form.rb +0 -1
- data/app/helpers/decidim/participatory_processes/application_helper.rb +14 -0
- data/app/models/decidim/participatory_process.rb +4 -4
- data/app/models/decidim/participatory_process_group.rb +9 -0
- data/app/permissions/decidim/participatory_processes/permissions.rb +4 -4
- data/app/presenters/decidim/participatory_processes/admin_log/participatory_process_group_presenter.rb +0 -1
- data/app/presenters/decidim/participatory_processes/admin_log/participatory_process_presenter.rb +0 -1
- data/app/presenters/decidim/participatory_processes/participatory_process_democratic_quality_stats_presenter.rb +312 -0
- data/app/presenters/decidim/participatory_processes/participatory_process_group_stats_presenter.rb +1 -11
- data/app/presenters/decidim/participatory_processes/participatory_process_presenter.rb +35 -1
- data/app/presenters/decidim/participatory_processes/participatory_process_stats_presenter.rb +1 -3
- data/app/queries/decidim/participatory_processes/participatory_processes_stats_followers_count.rb +31 -0
- data/app/queries/decidim/participatory_processes/participatory_processes_stats_participants_count.rb +27 -0
- data/app/serializers/decidim/participatory_processes/participatory_process_importer.rb +0 -1
- data/app/views/decidim/participatory_processes/admin/{participatory_process_copies → participatory_process_duplicates}/_form.html.erb +5 -5
- data/app/views/decidim/participatory_processes/admin/participatory_process_duplicates/new.html.erb +19 -0
- data/app/views/decidim/participatory_processes/admin/participatory_process_groups/_form.html.erb +3 -7
- data/app/views/decidim/participatory_processes/admin/participatory_process_groups/index.html.erb +31 -15
- data/app/views/decidim/participatory_processes/admin/participatory_process_steps/_form.html.erb +1 -1
- data/app/views/decidim/participatory_processes/admin/participatory_process_steps/index.html.erb +39 -21
- data/app/views/decidim/participatory_processes/admin/participatory_process_user_roles/index.html.erb +42 -24
- data/app/views/decidim/participatory_processes/admin/participatory_processes/_form.html.erb +10 -14
- data/app/views/decidim/participatory_processes/admin/participatory_processes/_process_row.html.erb +125 -53
- data/app/views/decidim/participatory_processes/admin/participatory_processes/edit.html.erb +0 -8
- data/app/views/decidim/participatory_processes/admin/participatory_processes/index.html.erb +2 -2
- data/app/views/decidim/participatory_processes/admin/participatory_processes/manage_trash.html.erb +2 -1
- data/app/views/layouts/decidim/admin/_manage_processes.html.erb +1 -1
- data/app/views/layouts/decidim/admin/participatory_process_group.html.erb +1 -1
- data/config/assets.rb +2 -2
- data/config/locales/ar.yml +0 -13
- data/config/locales/bg.yml +0 -24
- data/config/locales/bs-BA.yml +0 -4
- data/config/locales/ca-IT.yml +319 -25
- data/config/locales/ca.yml +319 -25
- data/config/locales/cs.yml +93 -26
- data/config/locales/de.yml +123 -25
- data/config/locales/el.yml +0 -21
- data/config/locales/en.yml +303 -24
- data/config/locales/es-MX.yml +319 -25
- data/config/locales/es-PY.yml +319 -25
- data/config/locales/es.yml +319 -25
- data/config/locales/eu.yml +304 -25
- data/config/locales/fi-plain.yml +303 -24
- data/config/locales/fi.yml +303 -24
- data/config/locales/fr-CA.yml +86 -24
- data/config/locales/fr.yml +86 -24
- data/config/locales/ga-IE.yml +0 -7
- data/config/locales/gl.yml +0 -19
- data/config/locales/hu.yml +0 -21
- data/config/locales/id-ID.yml +0 -13
- data/config/locales/is-IS.yml +0 -11
- data/config/locales/it.yml +0 -20
- data/config/locales/ja.yml +123 -25
- data/config/locales/lb.yml +0 -20
- data/config/locales/lt.yml +0 -21
- data/config/locales/lv.yml +0 -14
- data/config/locales/nl.yml +0 -20
- data/config/locales/no.yml +0 -21
- data/config/locales/pl.yml +16 -24
- data/config/locales/pt-BR.yml +0 -23
- data/config/locales/pt.yml +0 -20
- data/config/locales/ro-RO.yml +2 -21
- data/config/locales/ru.yml +0 -11
- data/config/locales/sk.yml +0 -14
- data/config/locales/sr-CS.yml +0 -4
- data/config/locales/sv.yml +86 -24
- data/config/locales/tr-TR.yml +0 -20
- data/config/locales/uk.yml +0 -11
- data/config/locales/zh-CN.yml +0 -17
- data/config/locales/zh-TW.yml +0 -21
- data/db/migrate/20250403110052_add_democratic_quality_static_page.rb +34 -0
- data/db/migrate/20250605114136_remove_hashtag_from_participatory_processes.rb +7 -0
- data/db/migrate/20250605114415_remove_hashtag_from_participatory_processes_groups.rb +7 -0
- data/decidim-participatory_processes.gemspec +3 -0
- data/lib/decidim/api/participatory_process_group_type.rb +9 -0
- data/lib/decidim/api/participatory_process_input_filter.rb +0 -1
- data/lib/decidim/api/participatory_process_step_type.rb +2 -0
- data/lib/decidim/api/participatory_process_type.rb +17 -11
- data/lib/decidim/participatory_processes/admin_engine.rb +1 -1
- data/lib/decidim/participatory_processes/content_blocks/registry_manager.rb +25 -5
- data/lib/decidim/participatory_processes/engine.rb +22 -25
- data/lib/decidim/participatory_processes/participatory_space.rb +1 -4
- data/lib/decidim/participatory_processes/seeds.rb +3 -5
- data/lib/decidim/participatory_processes/test/factories.rb +2 -3
- data/lib/decidim/participatory_processes/version.rb +1 -1
- metadata +72 -22
- data/app/cells/decidim/participatory_processes/content_blocks/metrics_cell.rb +0 -25
- data/app/presenters/decidim/participatory_processes/participatory_process_metric_charts_presenter.rb +0 -21
- data/app/queries/decidim/participatory_processes/metrics/participatory_process_followers_metric_measure.rb +0 -31
- data/app/queries/decidim/participatory_processes/metrics/participatory_processes_metric_manage.rb +0 -27
- data/app/queries/decidim/participatory_processes/stats_followers_count.rb +0 -60
- data/app/queries/decidim/participatory_processes/stats_participants_count.rb +0 -136
- data/app/views/decidim/participatory_processes/admin/participatory_process_copies/new.html.erb +0 -19
- 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
|
6
|
+
# A command with all the business logic when duplicating a new participatory
|
7
7
|
# process in the system.
|
8
|
-
class
|
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
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
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, @
|
38
|
+
broadcast(:ok, @duplicated_process)
|
39
39
|
end
|
40
40
|
|
41
41
|
private
|
42
42
|
|
43
43
|
attr_reader :form
|
44
44
|
|
45
|
-
def
|
46
|
-
@
|
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
|
68
|
+
def duplicate_participatory_process_attachments
|
70
69
|
return unless @participatory_process.attached_uploader(:hero_image).attached?
|
71
70
|
|
72
|
-
@
|
71
|
+
@duplicated_process.send(:hero_image).attach(@participatory_process.send(:hero_image).blob)
|
73
72
|
end
|
74
73
|
|
75
|
-
def
|
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: @
|
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
|
91
|
+
def duplicate_participatory_process_components
|
93
92
|
@participatory_process.components.each do |component|
|
94
|
-
|
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: @
|
97
|
+
participatory_space: @duplicated_process,
|
99
98
|
settings: component.settings,
|
100
|
-
step_settings:
|
99
|
+
step_settings: duplicated_step_settings,
|
101
100
|
weight: component.weight
|
102
101
|
)
|
103
|
-
component.manifest.run_hooks(:
|
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
|
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: @
|
119
|
+
organization: @duplicated_process.organization,
|
121
120
|
scope_name: "participatory_process_homepage",
|
122
|
-
scoped_resource_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? ? @
|
125
|
+
published_at: block.published_at.present? ? @duplicated_process.created_at : nil # determine if block is active/inactive
|
127
126
|
)
|
128
|
-
|
127
|
+
duplicate_block_attachments(block, new_block) if block.attachments.present?
|
129
128
|
end
|
130
129
|
end
|
131
130
|
|
132
|
-
def
|
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
|
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, :
|
12
|
-
:
|
13
|
-
:
|
14
|
-
:
|
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
|
data/app/commands/decidim/participatory_processes/admin/update_participatory_process_group.rb
CHANGED
@@ -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, :
|
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
|
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(
|
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(
|
18
|
+
@form = form(ParticipatoryProcessDuplicateForm).from_params(params)
|
19
19
|
|
20
|
-
|
20
|
+
DuplicateParticipatoryProcess.call(@form, current_participatory_process) do
|
21
21
|
on(:ok) do
|
22
|
-
flash[:notice] = I18n.t("
|
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("
|
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
|
@@ -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
|
data/app/controllers/decidim/participatory_processes/admin/participatory_process_steps_controller.rb
CHANGED
@@ -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
|
data/app/controllers/decidim/participatory_processes/admin/participatory_processes_controller.rb
CHANGED
@@ -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
|
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
|
6
|
+
# A form object used to duplicate a participatory processes from the admin
|
7
7
|
# dashboard.
|
8
8
|
#
|
9
|
-
class
|
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 :
|
18
|
-
attribute :
|
19
|
-
attribute :
|
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
|
|
@@ -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
|
-
|
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
|
-
#
|
221
|
-
def
|
222
|
-
return unless can_manage_process?(role: :
|
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
|