decidim-participatory_processes 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (164) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +36 -0
  3. data/Rakefile +3 -0
  4. data/app/assets/config/admin/decidim_participatory_processes_manifest.js +1 -0
  5. data/app/assets/config/decidim_participatory_processes_manifest.js +2 -0
  6. data/app/assets/images/decidim/participatory_processes/process.svg +10 -0
  7. data/app/assets/javascripts/decidim/participatory_processes/admin/participatory_processes.js.es6 +12 -0
  8. data/app/assets/javascripts/decidim/participatory_processes/filters.js.es6 +25 -0
  9. data/app/commands/decidim/participatory_processes/admin/activate_participatory_process_step.rb +46 -0
  10. data/app/commands/decidim/participatory_processes/admin/copy_participatory_process.rb +116 -0
  11. data/app/commands/decidim/participatory_processes/admin/create_participatory_process.rb +82 -0
  12. data/app/commands/decidim/participatory_processes/admin/create_participatory_process_admin.rb +95 -0
  13. data/app/commands/decidim/participatory_processes/admin/create_participatory_process_group.rb +57 -0
  14. data/app/commands/decidim/participatory_processes/admin/create_participatory_process_step.rb +49 -0
  15. data/app/commands/decidim/participatory_processes/admin/deactivate_participatory_process_step.rb +38 -0
  16. data/app/commands/decidim/participatory_processes/admin/destroy_participatory_process_step.rb +46 -0
  17. data/app/commands/decidim/participatory_processes/admin/publish_participatory_process.rb +34 -0
  18. data/app/commands/decidim/participatory_processes/admin/reorder_participatory_process_steps.rb +54 -0
  19. data/app/commands/decidim/participatory_processes/admin/unpublish_participatory_process.rb +34 -0
  20. data/app/commands/decidim/participatory_processes/admin/update_participatory_process.rb +77 -0
  21. data/app/commands/decidim/participatory_processes/admin/update_participatory_process_admin.rb +43 -0
  22. data/app/commands/decidim/participatory_processes/admin/update_participatory_process_group.rb +60 -0
  23. data/app/commands/decidim/participatory_processes/admin/update_participatory_process_step.rb +51 -0
  24. data/app/constraints/decidim/participatory_processes/current_feature.rb +28 -0
  25. data/app/constraints/decidim/participatory_processes/current_participatory_process.rb +37 -0
  26. data/app/controllers/concerns/decidim/participatory_processes/admin/participatory_process_context.rb +21 -0
  27. data/app/controllers/concerns/decidim/participatory_processes/needs_participatory_process.rb +50 -0
  28. data/app/controllers/concerns/decidim/participatory_processes/participatory_process_context.rb +27 -0
  29. data/app/controllers/decidim/participatory_processes/admin/application_controller.rb +11 -0
  30. data/app/controllers/decidim/participatory_processes/admin/categories_controller.rb +13 -0
  31. data/app/controllers/decidim/participatory_processes/admin/concerns/participatory_process_admin.rb +26 -0
  32. data/app/controllers/decidim/participatory_processes/admin/exports_controller.rb +14 -0
  33. data/app/controllers/decidim/participatory_processes/admin/feature_permissions_controller.rb +14 -0
  34. data/app/controllers/decidim/participatory_processes/admin/features_controller.rb +14 -0
  35. data/app/controllers/decidim/participatory_processes/admin/moderations_controller.rb +12 -0
  36. data/app/controllers/decidim/participatory_processes/admin/participatory_process_attachments_controller.rb +27 -0
  37. data/app/controllers/decidim/participatory_processes/admin/participatory_process_copies_controller.rb +35 -0
  38. data/app/controllers/decidim/participatory_processes/admin/participatory_process_groups_controller.rb +90 -0
  39. data/app/controllers/decidim/participatory_processes/admin/participatory_process_publications_controller.rb +45 -0
  40. data/app/controllers/decidim/participatory_processes/admin/participatory_process_step_activations_controller.rb +39 -0
  41. data/app/controllers/decidim/participatory_processes/admin/participatory_process_step_ordering_controller.rb +29 -0
  42. data/app/controllers/decidim/participatory_processes/admin/participatory_process_steps_controller.rb +91 -0
  43. data/app/controllers/decidim/participatory_processes/admin/participatory_process_user_roles_controller.rb +99 -0
  44. data/app/controllers/decidim/participatory_processes/admin/participatory_processes_controller.rb +102 -0
  45. data/app/controllers/decidim/participatory_processes/participatory_process_groups_controller.rb +28 -0
  46. data/app/controllers/decidim/participatory_processes/participatory_process_steps_controller.rb +20 -0
  47. data/app/controllers/decidim/participatory_processes/participatory_process_widgets_controller.rb +21 -0
  48. data/app/controllers/decidim/participatory_processes/participatory_processes_controller.rb +64 -0
  49. data/app/forms/decidim/participatory_processes/admin/participatory_process_copy_form.rb +35 -0
  50. data/app/forms/decidim/participatory_processes/admin/participatory_process_form.rb +72 -0
  51. data/app/forms/decidim/participatory_processes/admin/participatory_process_group_form.rb +26 -0
  52. data/app/forms/decidim/participatory_processes/admin/participatory_process_step_form.rb +37 -0
  53. data/app/forms/decidim/participatory_processes/admin/participatory_process_user_role_form.rb +31 -0
  54. data/app/helpers/decidim/participatory_processes/admin/process_groups_for_select_helper.rb +23 -0
  55. data/app/helpers/decidim/participatory_processes/admin/processes_for_select_helper.rb +25 -0
  56. data/app/helpers/decidim/participatory_processes/participatory_process_helper.rb +19 -0
  57. data/app/helpers/decidim/participatory_processes/participatory_process_steps_helper.rb +20 -0
  58. data/app/models/decidim/participatory_process.rb +62 -0
  59. data/app/models/decidim/participatory_process_group.rb +15 -0
  60. data/app/models/decidim/participatory_process_step.rb +39 -0
  61. data/app/models/decidim/participatory_processes/abilities/admin/admin_ability.rb +21 -0
  62. data/app/models/decidim/participatory_processes/abilities/admin_ability.rb +16 -0
  63. data/app/models/decidim/participatory_processes/abilities/everyone_ability.rb +19 -0
  64. data/app/presenters/decidim/participatory_processes/participatory_process_stats_presenter.rb +52 -0
  65. data/app/queries/decidim/participatory_processes/admin/admin_users.rb +46 -0
  66. data/app/queries/decidim/participatory_processes/filtered_participatory_process_groups.rb +29 -0
  67. data/app/queries/decidim/participatory_processes/filtered_participatory_processes.rb +26 -0
  68. data/app/queries/decidim/participatory_processes/highlighted_participatory_processes.rb +12 -0
  69. data/app/queries/decidim/participatory_processes/organization_participatory_process_groups.rb +16 -0
  70. data/app/queries/decidim/participatory_processes/organization_participatory_processes.rb +16 -0
  71. data/app/queries/decidim/participatory_processes/organization_prioritized_participatory_process_groups.rb +20 -0
  72. data/app/queries/decidim/participatory_processes/organization_prioritized_participatory_processes.rb +22 -0
  73. data/app/queries/decidim/participatory_processes/organization_published_participatory_processes.rb +19 -0
  74. data/app/queries/decidim/participatory_processes/prioritized_participatory_processes.rb +13 -0
  75. data/app/queries/decidim/participatory_processes/promoted_participatory_processes.rb +12 -0
  76. data/app/queries/decidim/participatory_processes/published_participatory_processes.rb +12 -0
  77. data/app/views/decidim/participatory_process_groups/_participatory_process_group.html.erb +22 -0
  78. data/app/views/decidim/participatory_process_steps/_participatory_process_step.html.erb +16 -0
  79. data/app/views/decidim/participatory_processes/_order_by_processes.html.erb +12 -0
  80. data/app/views/decidim/participatory_processes/_participatory_process.html.erb +28 -0
  81. data/app/views/decidim/participatory_processes/admin/participatory_process_copies/_form.html.erb +38 -0
  82. data/app/views/decidim/participatory_processes/admin/participatory_process_copies/new.html.erb +7 -0
  83. data/app/views/decidim/participatory_processes/admin/participatory_process_groups/_form.html.erb +17 -0
  84. data/app/views/decidim/participatory_processes/admin/participatory_process_groups/edit.html.erb +19 -0
  85. data/app/views/decidim/participatory_processes/admin/participatory_process_groups/index.html.erb +44 -0
  86. data/app/views/decidim/participatory_processes/admin/participatory_process_groups/new.html.erb +13 -0
  87. data/app/views/decidim/participatory_processes/admin/participatory_process_groups/show.html.erb +23 -0
  88. data/app/views/decidim/participatory_processes/admin/participatory_process_steps/_form.html.erb +25 -0
  89. data/app/views/decidim/participatory_processes/admin/participatory_process_steps/edit.html.erb +8 -0
  90. data/app/views/decidim/participatory_processes/admin/participatory_process_steps/index.html.erb +63 -0
  91. data/app/views/decidim/participatory_processes/admin/participatory_process_steps/new.html.erb +7 -0
  92. data/app/views/decidim/participatory_processes/admin/participatory_process_steps/show.html.erb +18 -0
  93. data/app/views/decidim/participatory_processes/admin/participatory_process_user_roles/_form.html.erb +22 -0
  94. data/app/views/decidim/participatory_processes/admin/participatory_process_user_roles/edit.html.erb +7 -0
  95. data/app/views/decidim/participatory_processes/admin/participatory_process_user_roles/index.html.erb +65 -0
  96. data/app/views/decidim/participatory_processes/admin/participatory_process_user_roles/new.html.erb +7 -0
  97. data/app/views/decidim/participatory_processes/admin/participatory_processes/_form.html.erb +107 -0
  98. data/app/views/decidim/participatory_processes/admin/participatory_processes/edit.html.erb +19 -0
  99. data/app/views/decidim/participatory_processes/admin/participatory_processes/index.html.erb +66 -0
  100. data/app/views/decidim/participatory_processes/admin/participatory_processes/new.html.erb +11 -0
  101. data/app/views/decidim/participatory_processes/participatory_process_groups/show.html.erb +11 -0
  102. data/app/views/decidim/participatory_processes/participatory_process_steps/_timeline.html.erb +7 -0
  103. data/app/views/decidim/participatory_processes/participatory_process_steps/index.html.erb +14 -0
  104. data/app/views/decidim/participatory_processes/participatory_process_widgets/show.html.erb +17 -0
  105. data/app/views/decidim/participatory_processes/participatory_processes/_no_processes_yet.html.erb +3 -0
  106. data/app/views/decidim/participatory_processes/participatory_processes/_promoted_process.html.erb +32 -0
  107. data/app/views/decidim/participatory_processes/participatory_processes/_statistics.html.erb +10 -0
  108. data/app/views/decidim/participatory_processes/participatory_processes/index.html.erb +22 -0
  109. data/app/views/decidim/participatory_processes/participatory_processes/index.js.erb +6 -0
  110. data/app/views/decidim/participatory_processes/participatory_processes/show.html.erb +92 -0
  111. data/app/views/layouts/decidim/_process_header.html.erb +65 -0
  112. data/app/views/layouts/decidim/_process_header_steps.html.erb +27 -0
  113. data/app/views/layouts/decidim/admin/participatory_process.html.erb +64 -0
  114. data/app/views/layouts/decidim/admin/participatory_process_groups.html.erb +14 -0
  115. data/app/views/layouts/decidim/admin/participatory_processes.html.erb +14 -0
  116. data/app/views/layouts/decidim/participatory_process.html.erb +30 -0
  117. data/config/locales/ca.yml +281 -0
  118. data/config/locales/en.yml +281 -0
  119. data/config/locales/es.yml +281 -0
  120. data/config/locales/eu.yml +280 -0
  121. data/config/locales/fi.yml +280 -0
  122. data/config/locales/fr.yml +280 -0
  123. data/config/locales/it.yml +280 -0
  124. data/config/locales/nl.yml +280 -0
  125. data/config/locales/pl.yml +281 -0
  126. data/config/locales/uk.yml +282 -0
  127. data/db/migrate/20161005130108_add_participatory_processes.rb +19 -0
  128. data/db/migrate/20161010102356_translate_processes.rb +17 -0
  129. data/db/migrate/20161011125616_add_hero_image_to_processes.rb +7 -0
  130. data/db/migrate/20161011141033_add_banner_image_to_processes.rb +7 -0
  131. data/db/migrate/20161013134732_add_promoted_flag_to_processes.rb +7 -0
  132. data/db/migrate/20161017085822_add_participatory_process_steps.rb +18 -0
  133. data/db/migrate/20161019072016_add_active_flag_to_step.rb +13 -0
  134. data/db/migrate/20161020080756_add_position_to_steps.rb +9 -0
  135. data/db/migrate/20161025125300_add_published_at_to_processes.rb +7 -0
  136. data/db/migrate/20161107152228_remove_not_null_on_step_position.rb +7 -0
  137. data/db/migrate/20161110092735_add_index_for_process_slug_organization.rb +10 -0
  138. data/db/migrate/20161116115156_create_attachments.rb +18 -0
  139. data/db/migrate/20170116135237_loosen_step_requirements.rb +8 -0
  140. data/db/migrate/20170123134023_make_attachments_polymorphic.rb +20 -0
  141. data/db/migrate/20170125135937_rename_attachable_to_attached_to.rb +13 -0
  142. data/db/migrate/20170126151123_add_extra_info_to_processes.rb +10 -0
  143. data/db/migrate/20170206083118_rename_extra_info_on_processes.rb +14 -0
  144. data/db/migrate/20170220110740_remove_steps_short_description.rb +23 -0
  145. data/db/migrate/20170221094835_add_scopes_to_processes.rb +8 -0
  146. data/db/migrate/20170228142440_add_participatory_process_groups.rb +17 -0
  147. data/db/migrate/20170404132616_change_steps_end_and_start_date_to_date.rb +8 -0
  148. data/db/migrate/20170720120135_make_features_polymorphic.rb +27 -0
  149. data/db/migrate/20170725085104_add_show_statistics_to_participatory_processes.rb +7 -0
  150. data/db/migrate/20170804125402_attachment_description_nullable.rb +7 -0
  151. data/db/migrate/20170808080905_add_announcement_to_participatory_processes.rb +7 -0
  152. data/db/migrate/20170809084005_add_scopes_enabled_to_participatory_processes.rb +7 -0
  153. data/db/migrate/20170830081725_add_start_date_to_processes.rb +8 -0
  154. data/db/seeds/Exampledocument.pdf +0 -0
  155. data/db/seeds/city.jpeg +0 -0
  156. data/db/seeds/city2.jpeg +0 -0
  157. data/db/seeds/homepage_image.jpg +0 -0
  158. data/lib/decidim/participatory_processes.rb +12 -0
  159. data/lib/decidim/participatory_processes/admin.rb +10 -0
  160. data/lib/decidim/participatory_processes/admin_engine.rb +98 -0
  161. data/lib/decidim/participatory_processes/engine.rb +55 -0
  162. data/lib/decidim/participatory_processes/participatory_space.rb +118 -0
  163. data/lib/decidim/participatory_processes/test/factories.rb +97 -0
  164. metadata +266 -0
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module ParticipatoryProcesses
5
+ module Admin
6
+ # A command with all the business logic when creating a new participatory
7
+ # process in the system.
8
+ class UpdateParticipatoryProcessStep < Rectify::Command
9
+ attr_reader :participatory_process_step
10
+ # Public: Initializes the command.
11
+ #
12
+ # participatory_process_step - the ParticipatoryProcessStep to update
13
+ # form - A form object with the params.
14
+ def initialize(participatory_process_step, form)
15
+ @participatory_process_step = participatory_process_step
16
+ @form = form
17
+ end
18
+
19
+ # Executes the command. Broadcasts these events:
20
+ #
21
+ # - :ok when everything is valid.
22
+ # - :invalid if the form wasn't valid and we couldn't proceed.
23
+ #
24
+ # Returns nothing.
25
+ def call
26
+ return broadcast(:invalid) if form.invalid?
27
+
28
+ update_participatory_process_step
29
+ broadcast(:ok)
30
+ end
31
+
32
+ private
33
+
34
+ attr_reader :form
35
+
36
+ def update_participatory_process_step
37
+ participatory_process_step.update_attributes!(attributes)
38
+ end
39
+
40
+ def attributes
41
+ {
42
+ title: form.title,
43
+ start_date: form.start_date,
44
+ end_date: form.end_date,
45
+ description: form.description
46
+ }
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module ParticipatoryProcesses
5
+ # This class infers the current feature on a participatory process context
6
+ # request parameters and injects it into the environment.
7
+ class CurrentFeature
8
+ # Public: Initializes the class.
9
+ #
10
+ # manifest - The manifest of the feature to check against.
11
+ def initialize(manifest)
12
+ @manifest = manifest
13
+ end
14
+
15
+ # Public: Matches the request against a feature and injects it into the
16
+ # environment.
17
+ #
18
+ # request - The request that holds the current feature relevant information.
19
+ #
20
+ # Returns a true if the request matches a participatory process and a
21
+ # feature belonging to that participatory process, false otherwise
22
+ def matches?(request)
23
+ CurrentParticipatoryProcess.new.matches?(request) &&
24
+ Decidim::CurrentFeature.new(@manifest).matches?(request)
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module ParticipatoryProcesses
5
+ # This class infers the current participatory process we're scoped to by
6
+ # looking at the request parameters and the organization in the request
7
+ # environment, and injects it into the environment.
8
+ class CurrentParticipatoryProcess
9
+ # Public: Matches the request against a participatory process and injects it
10
+ # into the environment.
11
+ #
12
+ # request - The request that holds the participatory process relevant
13
+ # information.
14
+ #
15
+ # Returns a true if the request matched, false otherwise
16
+ def matches?(request)
17
+ env = request.env
18
+
19
+ @organization = env["decidim.current_organization"]
20
+ return false unless @organization
21
+
22
+ current_participatory_process(env, request.params) ? true : false
23
+ end
24
+
25
+ private
26
+
27
+ def current_participatory_process(env, params)
28
+ env["decidim.current_participatory_space"] ||=
29
+ detect_current_participatory_process(params)
30
+ end
31
+
32
+ def detect_current_participatory_process(params)
33
+ OrganizationParticipatoryProcesses.new(@organization).query.find_by_id(params["participatory_process_id"])
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module ParticipatoryProcesses
5
+ module Admin
6
+ # This module, when injected into a controller, ensures there's a
7
+ # Participatory Process available and deducts it from the context.
8
+ module ParticipatoryProcessContext
9
+ def self.extended(base)
10
+ base.class_eval do
11
+ include Concerns::ParticipatoryProcessAdmin
12
+
13
+ delegate :active_step, to: :current_participatory_process, prefix: false
14
+
15
+ alias_method :current_participatory_process, :current_participatory_space
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,50 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module ParticipatoryProcesses
5
+ # This module, when injected into a controller, ensures there's a
6
+ # Participatory Process available and deducts it from the context.
7
+ module NeedsParticipatoryProcess
8
+ def self.enhance_controller(instance_or_module)
9
+ instance_or_module.class_eval do
10
+ helper_method :current_participatory_process
11
+ end
12
+ end
13
+
14
+ def self.extended(base)
15
+ base.extend Decidim::NeedsOrganization, InstanceMethods
16
+
17
+ enhance_controller(base)
18
+ end
19
+
20
+ def self.included(base)
21
+ base.include Decidim::NeedsOrganization, InstanceMethods
22
+
23
+ enhance_controller(base)
24
+ end
25
+
26
+ module InstanceMethods
27
+ # Public: Finds the current Participatory Process given this controller's
28
+ # context.
29
+ #
30
+ # Returns the current ParticipatoryProcess.
31
+ def current_participatory_process
32
+ @current_participatory_process ||= detect_participatory_process
33
+ end
34
+
35
+ alias current_participatory_space current_participatory_process
36
+
37
+ private
38
+
39
+ def ability_context
40
+ super.merge(current_participatory_process: current_participatory_process)
41
+ end
42
+
43
+ def detect_participatory_process
44
+ request.env["current_participatory_process"] ||
45
+ OrganizationParticipatoryProcesses.new(current_organization).query.find(params[:participatory_process_id] || params[:id])
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module ParticipatoryProcesses
5
+ # This module, when injected into a controller, ensures there's a
6
+ # Participatory Process available and deducts it from the context.
7
+ module ParticipatoryProcessContext
8
+ def self.extended(base)
9
+ base.class_eval do
10
+ include NeedsParticipatoryProcess
11
+
12
+ layout "layouts/decidim/participatory_process"
13
+
14
+ helper ParticipatoryProcessHelper
15
+
16
+ before_action do
17
+ authorize! :read, current_participatory_process
18
+ end
19
+ end
20
+ end
21
+
22
+ def ability_context
23
+ super.merge(current_participatory_process: current_participatory_process)
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module ParticipatoryProcesses
5
+ module Admin
6
+ # The main admin application controller for participatory processes
7
+ class ApplicationController < Decidim::Admin::ApplicationController
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module ParticipatoryProcesses
5
+ module Admin
6
+ # Controller that allows managing categories for participatory processes.
7
+ #
8
+ class CategoriesController < Decidim::Admin::CategoriesController
9
+ include Concerns::ParticipatoryProcessAdmin
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "active_support/concern"
4
+
5
+ module Decidim
6
+ module ParticipatoryProcesses
7
+ module Admin
8
+ module Concerns
9
+ # This concern is meant to be included in all controllers that are scoped
10
+ # into a participatory process' admin panel. It will override the layout
11
+ # so it shows the sidebar, preload the participatory process, etc.
12
+ module ParticipatoryProcessAdmin
13
+ extend ActiveSupport::Concern
14
+
15
+ included do
16
+ include NeedsParticipatoryProcess
17
+
18
+ layout "decidim/admin/participatory_process"
19
+
20
+ alias_method :current_participatory_space, :current_participatory_process
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module ParticipatoryProcesses
5
+ module Admin
6
+ # This controller allows exporting things.
7
+ # It is targeted for customizations for exporting things that lives under
8
+ # a participatory process.
9
+ class ExportsController < Decidim::Admin::ExportsController
10
+ include Concerns::ParticipatoryProcessAdmin
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module ParticipatoryProcesses
5
+ module Admin
6
+ # Controller that allows managing the Participatory Process' Feature
7
+ # permissions in the admin panel.
8
+ #
9
+ class FeaturePermissionsController < Decidim::Admin::FeaturePermissionsController
10
+ include Concerns::ParticipatoryProcessAdmin
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module ParticipatoryProcesses
5
+ module Admin
6
+ # Controller that allows managing the Participatory Process' Features in the
7
+ # admin panel.
8
+ #
9
+ class FeaturesController < Decidim::Admin::FeaturesController
10
+ include Concerns::ParticipatoryProcessAdmin
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module ParticipatoryProcesses
5
+ module Admin
6
+ # This controller allows admins to manage moderations in a participatory process.
7
+ class ModerationsController < Decidim::Admin::ModerationsController
8
+ include Concerns::ParticipatoryProcessAdmin
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module ParticipatoryProcesses
5
+ module Admin
6
+ # Controller that allows managing all the attachments for a participatory
7
+ # process.
8
+ #
9
+ class ParticipatoryProcessAttachmentsController < Decidim::Admin::ApplicationController
10
+ include Concerns::ParticipatoryProcessAdmin
11
+ include Decidim::Admin::Concerns::HasAttachments
12
+
13
+ def after_destroy_path
14
+ participatory_process_attachments_path(current_participatory_process.id)
15
+ end
16
+
17
+ def attached_to
18
+ current_participatory_process
19
+ end
20
+
21
+ def authorization_object
22
+ @attachment || Attachment
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module ParticipatoryProcesses
5
+ module Admin
6
+ # Controller that allows managing participatory processes.
7
+ #
8
+ class ParticipatoryProcessCopiesController < Decidim::Admin::ApplicationController
9
+ include Concerns::ParticipatoryProcessAdmin
10
+
11
+ def new
12
+ authorize! :new, Decidim::ParticipatoryProcess
13
+ @form = form(ParticipatoryProcessCopyForm).from_model(current_participatory_process)
14
+ end
15
+
16
+ def create
17
+ authorize! :create, Decidim::ParticipatoryProcess
18
+ @form = form(ParticipatoryProcessCopyForm).from_params(params)
19
+
20
+ CopyParticipatoryProcess.call(@form, current_participatory_process) do
21
+ on(:ok) do
22
+ flash[:notice] = I18n.t("participatory_processes_copies.create.success", scope: "decidim.admin")
23
+ redirect_to participatory_processes_path
24
+ end
25
+
26
+ on(:invalid) do
27
+ flash.now[:alert] = I18n.t("participatory_processes_copies.create.error", scope: "decidim.admin")
28
+ render :new
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,90 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module ParticipatoryProcesses
5
+ module Admin
6
+ # Controller that allows managing participatory process groups.
7
+ #
8
+ class ParticipatoryProcessGroupsController < Decidim::Admin::ApplicationController
9
+ helper ProcessesForSelectHelper
10
+
11
+ helper_method :collection, :participatory_process_group
12
+
13
+ def index
14
+ authorize! :read, ParticipatoryProcessGroup
15
+ end
16
+
17
+ def show
18
+ authorize! :read, participatory_process_group
19
+ end
20
+
21
+ def new
22
+ authorize! :new, Decidim::ParticipatoryProcessGroup
23
+ @form = form(ParticipatoryProcessGroupForm).instance
24
+ end
25
+
26
+ def create
27
+ authorize! :new, Decidim::ParticipatoryProcessGroup
28
+ @form = form(ParticipatoryProcessGroupForm).from_params(params)
29
+
30
+ CreateParticipatoryProcessGroup.call(@form) do
31
+ on(:ok) do |participatory_process_group|
32
+ flash[:notice] = I18n.t("participatory_processes_group.create.success", scope: "decidim.admin")
33
+ redirect_to participatory_process_group_path(participatory_process_group)
34
+ end
35
+
36
+ on(:invalid) do
37
+ flash.now[:alert] = I18n.t("participatory_processes_group.create.error", scope: "decidim.admin")
38
+ render :new
39
+ end
40
+ end
41
+ end
42
+
43
+ def edit
44
+ @participatory_process_group = collection.find(params[:id])
45
+ authorize! :update, @participatory_process_group
46
+ @form = form(ParticipatoryProcessGroupForm).from_model(@participatory_process_group)
47
+ end
48
+
49
+ def update
50
+ @participatory_process_group = collection.find(params[:id])
51
+ authorize! :update, @participatory_process_group
52
+ @form = form(ParticipatoryProcessGroupForm).from_params(params)
53
+
54
+ UpdateParticipatoryProcessGroup.call(@participatory_process_group, @form) do
55
+ on(:ok) do |participatory_process_group|
56
+ flash[:notice] = I18n.t("participatory_process_groups.update.success", scope: "decidim.admin")
57
+ redirect_to participatory_process_group_path(participatory_process_group)
58
+ end
59
+
60
+ on(:invalid) do
61
+ flash.now[:alert] = I18n.t("participatory_process_groups.update.error", scope: "decidim.admin")
62
+ render :edit
63
+ end
64
+ end
65
+ end
66
+
67
+ def destroy
68
+ @participatory_process_group = collection.find(params[:id])
69
+ authorize! :destroy, @participatory_process_group
70
+ @participatory_process_group.destroy!
71
+
72
+ flash[:notice] = I18n.t("participatory_process_groups.destroy.success", scope: "decidim.admin")
73
+
74
+ redirect_to participatory_process_groups_path
75
+ end
76
+
77
+ private
78
+
79
+ def participatory_process_group
80
+ @participatory_process_group ||= Decidim::ParticipatoryProcessGroup.find(params[:id])
81
+ end
82
+
83
+ def collection
84
+ @collection ||=
85
+ OrganizationParticipatoryProcessGroups.new(current_user.organization).query
86
+ end
87
+ end
88
+ end
89
+ end
90
+ end