decidim-admin 0.0.1.alpha9 → 0.0.1
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/README.md +33 -8
- data/Rakefile +0 -25
- data/app/assets/javascripts/decidim/admin/application.js.es6 +17 -10
- data/app/assets/javascripts/decidim/admin/sort_steps.js.es6 +20 -11
- data/app/assets/javascripts/decidim/admin/tab_focus.js.es6 +22 -0
- data/app/assets/stylesheets/decidim/admin/_forms.scss +10 -0
- data/app/assets/stylesheets/decidim/admin/_layout.scss +11 -0
- data/app/assets/stylesheets/decidim/admin/_tables.scss +4 -0
- data/app/assets/stylesheets/decidim/admin/application.scss +8 -2
- data/app/commands/decidim/admin/activate_participatory_process_step.rb +1 -1
- data/app/commands/decidim/admin/create_category.rb +44 -0
- data/app/commands/decidim/admin/create_feature.rb +48 -0
- data/app/commands/decidim/admin/create_participatory_process.rb +3 -6
- data/app/commands/decidim/admin/create_participatory_process_admin.rb +51 -0
- data/app/commands/decidim/admin/create_participatory_process_attachment.rb +44 -0
- data/app/commands/decidim/admin/create_participatory_process_step.rb +3 -3
- data/app/commands/decidim/admin/create_scope.rb +38 -0
- data/app/commands/decidim/admin/create_static_page.rb +40 -0
- data/app/commands/decidim/admin/destroy_category.rb +36 -0
- data/app/commands/decidim/admin/destroy_feature.rb +39 -0
- data/app/commands/decidim/admin/publish_participatory_process.rb +1 -1
- data/app/commands/decidim/admin/reorder_participatory_process_steps.rb +5 -2
- data/app/commands/decidim/admin/unpublish_participatory_process.rb +1 -1
- data/app/commands/decidim/admin/update_category.rb +48 -0
- data/app/commands/decidim/admin/update_organization.rb +49 -0
- data/app/commands/decidim/admin/update_participatory_process.rb +2 -2
- data/app/commands/decidim/admin/update_participatory_process_attachment.rb +49 -0
- data/app/commands/decidim/admin/update_participatory_process_step.rb +1 -1
- data/app/commands/decidim/admin/update_scope.rb +43 -0
- data/app/commands/decidim/admin/update_static_page.rb +45 -0
- data/app/constraints/decidim/admin/organization_dashboard_constraint.rb +5 -1
- data/app/controllers/decidim/admin/application_controller.rb +8 -0
- data/app/controllers/decidim/admin/categories_controller.rb +90 -0
- data/app/controllers/decidim/admin/concerns/participatory_process_admin.rb +31 -0
- data/app/controllers/decidim/admin/features_controller.rb +74 -0
- data/app/controllers/decidim/admin/organization_controller.rb +40 -0
- data/app/controllers/decidim/admin/participatory_process_attachments_controller.rb +84 -0
- data/app/controllers/decidim/admin/participatory_process_publications_controller.rb +2 -7
- data/app/controllers/decidim/admin/participatory_process_step_activations_controller.rb +6 -8
- data/app/controllers/decidim/admin/participatory_process_step_ordering_controller.rb +2 -4
- data/app/controllers/decidim/admin/participatory_process_steps_controller.rb +13 -11
- data/app/controllers/decidim/admin/participatory_process_user_roles_controller.rb +54 -0
- data/app/controllers/decidim/admin/participatory_processes_controller.rb +11 -6
- data/app/controllers/decidim/admin/scopes_controller.rb +79 -0
- data/app/controllers/decidim/admin/static_pages_controller.rb +94 -0
- data/app/forms/decidim/admin/category_form.rb +37 -0
- data/app/forms/decidim/admin/feature_form.rb +16 -0
- data/app/forms/decidim/admin/organization_form.rb +31 -0
- data/app/forms/decidim/admin/participatory_process_attachment_form.rb +19 -0
- data/app/forms/decidim/admin/participatory_process_form.rb +4 -7
- data/app/forms/decidim/admin/participatory_process_step_form.rb +12 -2
- data/app/forms/decidim/admin/participatory_process_user_role_form.rb +15 -0
- data/app/forms/decidim/admin/scope_form.rb +24 -0
- data/app/forms/decidim/admin/static_page_form.rb +30 -0
- data/app/helpers/decidim/admin/application_helper.rb +1 -0
- data/app/helpers/decidim/admin/aria_selected_link_to_helper.rb +28 -0
- data/app/helpers/decidim/admin/attributes_display_helper.rb +13 -5
- data/app/models/decidim/admin/abilities/admin_user.rb +34 -0
- data/app/models/decidim/admin/abilities/base.rb +19 -0
- data/app/models/decidim/admin/abilities/participatory_process_admin.rb +51 -0
- data/app/models/decidim/admin/participatory_process_user_role.rb +14 -0
- data/app/queries/decidim/admin/manageable_participatory_processes_for_user.rb +41 -0
- data/app/queries/decidim/admin/process_admin_roles_for_process.rb +35 -0
- data/app/views/decidim/admin/categories/_form.html.erb +12 -0
- data/app/views/decidim/admin/categories/edit.html.erb +9 -0
- data/app/views/decidim/admin/categories/index.html.erb +44 -0
- data/app/views/decidim/admin/categories/new.html.erb +9 -0
- data/app/views/decidim/admin/categories/show.html.erb +14 -0
- data/app/views/decidim/admin/features/_feature.html.erb +20 -0
- data/app/views/decidim/admin/features/_form.html.erb +3 -0
- data/app/views/decidim/admin/features/index.html.erb +23 -0
- data/app/views/decidim/admin/features/new.html.erb +9 -0
- data/app/views/decidim/admin/organization/_form.html.erb +23 -0
- data/app/views/decidim/admin/organization/edit.html.erb +11 -0
- data/app/views/decidim/admin/participatory_process_attachments/_form.html.erb +11 -0
- data/app/views/decidim/admin/participatory_process_attachments/edit.html.erb +9 -0
- data/app/views/decidim/admin/participatory_process_attachments/index.html.erb +37 -0
- data/app/views/decidim/admin/participatory_process_attachments/new.html.erb +9 -0
- data/app/views/decidim/admin/participatory_process_attachments/show.html.erb +25 -0
- data/app/views/decidim/admin/participatory_process_steps/_form.html.erb +2 -2
- data/app/views/decidim/admin/participatory_process_steps/edit.html.erb +1 -3
- data/app/views/decidim/admin/participatory_process_steps/{_table.html.erb → index.html.erb} +15 -11
- data/app/views/decidim/admin/participatory_process_steps/new.html.erb +1 -3
- data/app/views/decidim/admin/participatory_process_steps/show.html.erb +1 -4
- data/app/views/decidim/admin/participatory_process_user_roles/index.html.erb +34 -0
- data/app/views/decidim/admin/participatory_processes/_form.html.erb +2 -2
- data/app/views/decidim/admin/participatory_processes/edit.html.erb +13 -3
- data/app/views/decidim/admin/participatory_processes/index.html.erb +5 -14
- data/app/views/decidim/admin/participatory_processes/show.html.erb +19 -36
- data/app/views/decidim/admin/scopes/_form.html.erb +3 -0
- data/app/views/decidim/admin/scopes/edit.html.erb +11 -0
- data/app/views/decidim/admin/scopes/index.html.erb +38 -0
- data/app/views/decidim/admin/scopes/new.html.erb +11 -0
- data/app/views/decidim/admin/static_pages/_form.html.erb +13 -0
- data/app/views/decidim/admin/static_pages/edit.html.erb +11 -0
- data/app/views/decidim/admin/static_pages/index.html.erb +40 -0
- data/app/views/decidim/admin/static_pages/new.html.erb +11 -0
- data/app/views/decidim/admin/static_pages/show.html.erb +22 -0
- data/app/views/layouts/decidim/admin/_application.html.erb +40 -0
- data/app/views/layouts/decidim/admin/_sidebar.html.erb +5 -2
- data/app/views/layouts/decidim/admin/application.html.erb +3 -40
- data/app/views/layouts/decidim/admin/participatory_process.html.erb +54 -0
- data/config/i18n-tasks.yml +3 -2
- data/config/locales/ca.yml +138 -6
- data/config/locales/en.yml +191 -13
- data/config/locales/es.yml +139 -7
- data/config/routes.rb +23 -1
- data/db/migrate/20161102144648_add_admin_participatory_process_user_roles.rb +15 -0
- data/db/seeds.rb +21 -0
- data/lib/decidim/admin/engine.rb +10 -3
- data/lib/decidim/admin/features/base_controller.rb +33 -0
- data/lib/decidim/admin/features.rb +10 -0
- data/lib/decidim/admin.rb +1 -0
- data/vendor/assets/javascripts/html.sortable.js +691 -0
- metadata +98 -33
- data/LICENSE.txt +0 -619
- data/app/models/decidim/admin/abilities/admin.rb +0 -21
- data/vendor/assets/javascripts/html.sortable.min.js +0 -2
|
@@ -6,19 +6,21 @@ module Decidim
|
|
|
6
6
|
# Controller that allows managing all the Admins.
|
|
7
7
|
#
|
|
8
8
|
class ParticipatoryProcessStepActivationsController < ApplicationController
|
|
9
|
+
include Concerns::ParticipatoryProcessAdmin
|
|
10
|
+
|
|
9
11
|
def create
|
|
10
12
|
authorize! :activate, process_step
|
|
11
13
|
|
|
12
14
|
ActivateParticipatoryProcessStep.call(process_step) do
|
|
13
15
|
on(:ok) do
|
|
14
16
|
flash[:notice] = I18n.t("participatory_process_step_activations.create.success", scope: "decidim.admin")
|
|
15
|
-
redirect_to participatory_process_path(participatory_process)
|
|
16
17
|
end
|
|
17
18
|
|
|
18
19
|
on(:invalid) do
|
|
19
20
|
flash.now[:alert] = I18n.t("participatory_process_step_activations.create.error", scope: "decidim.admin")
|
|
20
|
-
redirect_to participatory_process_path(participatory_process)
|
|
21
21
|
end
|
|
22
|
+
|
|
23
|
+
redirect_to participatory_process_steps_path(participatory_process)
|
|
22
24
|
end
|
|
23
25
|
end
|
|
24
26
|
|
|
@@ -28,13 +30,13 @@ module Decidim
|
|
|
28
30
|
DeactivateParticipatoryProcessStep.call(process_step) do
|
|
29
31
|
on(:ok) do
|
|
30
32
|
flash[:notice] = I18n.t("participatory_process_step_activations.destroy.success", scope: "decidim.admin")
|
|
31
|
-
redirect_to participatory_process_path(participatory_process)
|
|
32
33
|
end
|
|
33
34
|
|
|
34
35
|
on(:invalid) do
|
|
35
36
|
flash.now[:alert] = I18n.t("participatory_process_step_activations.destroy.error", scope: "decidim.admin")
|
|
36
|
-
redirect_to participatory_process_path(participatory_process)
|
|
37
37
|
end
|
|
38
|
+
|
|
39
|
+
redirect_to participatory_process_steps_path(participatory_process)
|
|
38
40
|
end
|
|
39
41
|
end
|
|
40
42
|
|
|
@@ -44,10 +46,6 @@ module Decidim
|
|
|
44
46
|
collection.find(params[:step_id])
|
|
45
47
|
end
|
|
46
48
|
|
|
47
|
-
def participatory_process
|
|
48
|
-
current_organization.participatory_processes.find(params[:participatory_process_id])
|
|
49
|
-
end
|
|
50
|
-
|
|
51
49
|
def collection
|
|
52
50
|
participatory_process.steps
|
|
53
51
|
end
|
|
@@ -6,6 +6,8 @@ module Decidim
|
|
|
6
6
|
# Controller that allows managing all the Admins.
|
|
7
7
|
#
|
|
8
8
|
class ParticipatoryProcessStepOrderingController < ApplicationController
|
|
9
|
+
include Concerns::ParticipatoryProcessAdmin
|
|
10
|
+
|
|
9
11
|
def create
|
|
10
12
|
authorize! :reorder, Decidim::ParticipatoryProcessStep
|
|
11
13
|
ReorderParticipatoryProcessSteps.call(collection, params[:items_ids]) do
|
|
@@ -18,10 +20,6 @@ module Decidim
|
|
|
18
20
|
|
|
19
21
|
private
|
|
20
22
|
|
|
21
|
-
def participatory_process
|
|
22
|
-
current_organization.participatory_processes.find(params[:participatory_process_id])
|
|
23
|
-
end
|
|
24
|
-
|
|
25
23
|
def collection
|
|
26
24
|
participatory_process.steps
|
|
27
25
|
end
|
|
@@ -6,19 +6,25 @@ module Decidim
|
|
|
6
6
|
# Controller that allows managing all the Admins.
|
|
7
7
|
#
|
|
8
8
|
class ParticipatoryProcessStepsController < ApplicationController
|
|
9
|
+
include Concerns::ParticipatoryProcessAdmin
|
|
10
|
+
|
|
11
|
+
def index
|
|
12
|
+
authorize! :read, Decidim::ParticipatoryProcessStep
|
|
13
|
+
end
|
|
14
|
+
|
|
9
15
|
def new
|
|
10
16
|
authorize! :create, Decidim::ParticipatoryProcessStep
|
|
11
|
-
@form = ParticipatoryProcessStepForm.
|
|
17
|
+
@form = form(ParticipatoryProcessStepForm).instance
|
|
12
18
|
end
|
|
13
19
|
|
|
14
20
|
def create
|
|
15
21
|
authorize! :create, Decidim::ParticipatoryProcessStep
|
|
16
|
-
@form = ParticipatoryProcessStepForm.from_params(params)
|
|
22
|
+
@form = form(ParticipatoryProcessStepForm).from_params(params)
|
|
17
23
|
|
|
18
24
|
CreateParticipatoryProcessStep.call(@form, participatory_process) do
|
|
19
25
|
on(:ok) do
|
|
20
26
|
flash[:notice] = I18n.t("participatory_process_steps.create.success", scope: "decidim.admin")
|
|
21
|
-
redirect_to
|
|
27
|
+
redirect_to participatory_process_steps_path(participatory_process)
|
|
22
28
|
end
|
|
23
29
|
|
|
24
30
|
on(:invalid) do
|
|
@@ -31,18 +37,18 @@ module Decidim
|
|
|
31
37
|
def edit
|
|
32
38
|
@participatory_process_step = collection.find(params[:id])
|
|
33
39
|
authorize! :update, @participatory_process_step
|
|
34
|
-
@form = ParticipatoryProcessStepForm.from_model(@participatory_process_step)
|
|
40
|
+
@form = form(ParticipatoryProcessStepForm).from_model(@participatory_process_step)
|
|
35
41
|
end
|
|
36
42
|
|
|
37
43
|
def update
|
|
38
44
|
@participatory_process_step = collection.find(params[:id])
|
|
39
45
|
authorize! :update, @participatory_process_step
|
|
40
|
-
@form = ParticipatoryProcessStepForm.from_params(params)
|
|
46
|
+
@form = form(ParticipatoryProcessStepForm).from_params(params)
|
|
41
47
|
|
|
42
48
|
UpdateParticipatoryProcessStep.call(@participatory_process_step, @form) do
|
|
43
49
|
on(:ok) do
|
|
44
50
|
flash[:notice] = I18n.t("participatory_process_steps.update.success", scope: "decidim.admin")
|
|
45
|
-
redirect_to
|
|
51
|
+
redirect_to participatory_process_steps_path(participatory_process)
|
|
46
52
|
end
|
|
47
53
|
|
|
48
54
|
on(:invalid) do
|
|
@@ -64,15 +70,11 @@ module Decidim
|
|
|
64
70
|
|
|
65
71
|
flash[:notice] = I18n.t("participatory_process_steps.destroy.success", scope: "decidim.admin")
|
|
66
72
|
|
|
67
|
-
redirect_to
|
|
73
|
+
redirect_to participatory_process_steps_path(@participatory_process_step.participatory_process)
|
|
68
74
|
end
|
|
69
75
|
|
|
70
76
|
private
|
|
71
77
|
|
|
72
|
-
def participatory_process
|
|
73
|
-
@participatory_process ||= current_organization.participatory_processes.find(params[:participatory_process_id])
|
|
74
|
-
end
|
|
75
|
-
|
|
76
78
|
def collection
|
|
77
79
|
@collection ||= participatory_process.steps
|
|
78
80
|
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require_dependency "decidim/admin/application_controller"
|
|
3
|
+
|
|
4
|
+
module Decidim
|
|
5
|
+
module Admin
|
|
6
|
+
# Controller that allows managing all the Admins.
|
|
7
|
+
#
|
|
8
|
+
class ParticipatoryProcessUserRolesController < ApplicationController
|
|
9
|
+
include Concerns::ParticipatoryProcessAdmin
|
|
10
|
+
|
|
11
|
+
helper_method :participatory_process, :process_admin_roles
|
|
12
|
+
|
|
13
|
+
def index
|
|
14
|
+
authorize! :read, Decidim::Admin::ParticipatoryProcessUserRole
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def create
|
|
18
|
+
authorize! :create, Decidim::Admin::ParticipatoryProcessUserRole
|
|
19
|
+
@form = form(ParticipatoryProcessUserRoleForm).from_params(params)
|
|
20
|
+
|
|
21
|
+
CreateParticipatoryProcessAdmin.call(@form, participatory_process) do
|
|
22
|
+
on(:ok) do
|
|
23
|
+
flash[:notice] = I18n.t("participatory_process_user_roles.create.success", scope: "decidim.admin")
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
on(:invalid) do
|
|
27
|
+
flash.now[:alert] = I18n.t("participatory_process_user_roles.create.error", scope: "decidim.admin")
|
|
28
|
+
end
|
|
29
|
+
redirect_to participatory_process_user_roles_path(participatory_process)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def destroy
|
|
34
|
+
@participatory_process_user_role = collection.find(params[:id])
|
|
35
|
+
authorize! :destroy, @participatory_process_user_role
|
|
36
|
+
@participatory_process_user_role.destroy!
|
|
37
|
+
|
|
38
|
+
flash[:notice] = I18n.t("participatory_process_user_roles.destroy.success", scope: "decidim.admin")
|
|
39
|
+
|
|
40
|
+
redirect_to participatory_process_user_roles_path(@participatory_process_user_role.participatory_process)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
private
|
|
44
|
+
|
|
45
|
+
def collection
|
|
46
|
+
@collection ||= ProcessAdminRolesForProcess.for(participatory_process)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def process_admin_roles
|
|
50
|
+
@process_admin_roles ||= ProcessAdminRolesForProcess.for(@participatory_process)
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
@@ -6,6 +6,9 @@ module Decidim
|
|
|
6
6
|
# Controller that allows managing all the Admins.
|
|
7
7
|
#
|
|
8
8
|
class ParticipatoryProcessesController < ApplicationController
|
|
9
|
+
helper_method :participatory_process
|
|
10
|
+
layout "decidim/admin/participatory_process", only: [:show, :edit]
|
|
11
|
+
|
|
9
12
|
def index
|
|
10
13
|
authorize! :index, Decidim::ParticipatoryProcess
|
|
11
14
|
@participatory_processes = collection
|
|
@@ -13,14 +16,14 @@ module Decidim
|
|
|
13
16
|
|
|
14
17
|
def new
|
|
15
18
|
authorize! :new, Decidim::ParticipatoryProcess
|
|
16
|
-
@form = ParticipatoryProcessForm.
|
|
19
|
+
@form = form(ParticipatoryProcessForm).instance
|
|
17
20
|
end
|
|
18
21
|
|
|
19
22
|
def create
|
|
20
23
|
authorize! :new, Decidim::ParticipatoryProcess
|
|
21
|
-
@form = ParticipatoryProcessForm.from_params(params)
|
|
24
|
+
@form = form(ParticipatoryProcessForm).from_params(params)
|
|
22
25
|
|
|
23
|
-
CreateParticipatoryProcess.call(@form
|
|
26
|
+
CreateParticipatoryProcess.call(@form) do
|
|
24
27
|
on(:ok) do
|
|
25
28
|
flash[:notice] = I18n.t("participatory_processes.create.success", scope: "decidim.admin")
|
|
26
29
|
redirect_to participatory_processes_path
|
|
@@ -36,13 +39,13 @@ module Decidim
|
|
|
36
39
|
def edit
|
|
37
40
|
@participatory_process = collection.find(params[:id])
|
|
38
41
|
authorize! :update, @participatory_process
|
|
39
|
-
@form = ParticipatoryProcessForm.from_model(@participatory_process)
|
|
42
|
+
@form = form(ParticipatoryProcessForm).from_model(@participatory_process)
|
|
40
43
|
end
|
|
41
44
|
|
|
42
45
|
def update
|
|
43
46
|
@participatory_process = collection.find(params[:id])
|
|
44
47
|
authorize! :update, @participatory_process
|
|
45
|
-
@form = ParticipatoryProcessForm.from_params(params)
|
|
48
|
+
@form = form(ParticipatoryProcessForm).from_params(params)
|
|
46
49
|
|
|
47
50
|
UpdateParticipatoryProcess.call(@participatory_process, @form) do
|
|
48
51
|
on(:ok) do
|
|
@@ -74,8 +77,10 @@ module Decidim
|
|
|
74
77
|
|
|
75
78
|
private
|
|
76
79
|
|
|
80
|
+
attr_reader :participatory_process
|
|
81
|
+
|
|
77
82
|
def collection
|
|
78
|
-
|
|
83
|
+
@collection ||= ManageableParticipatoryProcessesForUser.for(current_user)
|
|
79
84
|
end
|
|
80
85
|
end
|
|
81
86
|
end
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require_dependency "decidim/admin/application_controller"
|
|
3
|
+
|
|
4
|
+
module Decidim
|
|
5
|
+
module Admin
|
|
6
|
+
# Controller that allows managing all scopes at the admin panel.
|
|
7
|
+
#
|
|
8
|
+
class ScopesController < ApplicationController
|
|
9
|
+
def index
|
|
10
|
+
authorize! :index, Scope
|
|
11
|
+
@scopes = collection
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def new
|
|
15
|
+
authorize! :new, Scope
|
|
16
|
+
@form = form(ScopeForm).instance
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def create
|
|
20
|
+
authorize! :new, Scope
|
|
21
|
+
@form = form(ScopeForm).from_params(params)
|
|
22
|
+
|
|
23
|
+
CreateScope.call(@form) do
|
|
24
|
+
on(:ok) do
|
|
25
|
+
flash[:notice] = I18n.t("scopes.create.success", scope: "decidim.admin")
|
|
26
|
+
redirect_to scopes_path
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
on(:invalid) do
|
|
30
|
+
flash.now[:alert] = I18n.t("scopes.create.error", scope: "decidim.admin")
|
|
31
|
+
render :new
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def edit
|
|
37
|
+
authorize! :update, scope
|
|
38
|
+
@form = form(ScopeForm).from_model(scope)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def update
|
|
42
|
+
@scope = collection.find(params[:id])
|
|
43
|
+
authorize! :update, scope
|
|
44
|
+
@form = form(ScopeForm).from_params(params)
|
|
45
|
+
|
|
46
|
+
UpdateScope.call(scope, @form) do
|
|
47
|
+
on(:ok) do
|
|
48
|
+
flash[:notice] = I18n.t("scopes.update.success", scope: "decidim.admin")
|
|
49
|
+
redirect_to scopes_path
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
on(:invalid) do
|
|
53
|
+
flash.now[:alert] = I18n.t("scopes.update.error", scope: "decidim.admin")
|
|
54
|
+
render :edit
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def destroy
|
|
60
|
+
authorize! :destroy, scope
|
|
61
|
+
scope.destroy!
|
|
62
|
+
|
|
63
|
+
flash[:notice] = I18n.t("scopes.destroy.success", scope: "decidim.admin")
|
|
64
|
+
|
|
65
|
+
redirect_to scopes_path
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
private
|
|
69
|
+
|
|
70
|
+
def scope
|
|
71
|
+
@scope ||= collection.find(params[:id])
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def collection
|
|
75
|
+
current_organization.scopes
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
require_dependency "decidim/admin/application_controller"
|
|
3
|
+
|
|
4
|
+
module Decidim
|
|
5
|
+
module Admin
|
|
6
|
+
# Controller that allows managing all pages at the admin panel.
|
|
7
|
+
#
|
|
8
|
+
class StaticPagesController < ApplicationController
|
|
9
|
+
def index
|
|
10
|
+
authorize! :index, StaticPage
|
|
11
|
+
@pages = collection
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def new
|
|
15
|
+
authorize! :new, StaticPage
|
|
16
|
+
@form = StaticPageForm.new
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def create
|
|
20
|
+
authorize! :new, StaticPage
|
|
21
|
+
@form = StaticPageForm.from_params(form_params)
|
|
22
|
+
|
|
23
|
+
CreateStaticPage.call(@form) do
|
|
24
|
+
on(:ok) do
|
|
25
|
+
flash[:notice] = I18n.t("static_pages.create.success", scope: "decidim.admin")
|
|
26
|
+
redirect_to static_pages_path
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
on(:invalid) do
|
|
30
|
+
flash.now[:alert] = I18n.t("static_pages.create.error", scope: "decidim.admin")
|
|
31
|
+
render :new
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def edit
|
|
37
|
+
authorize! :update, page
|
|
38
|
+
@form = StaticPageForm.from_model(page)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def update
|
|
42
|
+
@page = collection.find(params[:id])
|
|
43
|
+
authorize! :update, page
|
|
44
|
+
@form = StaticPageForm.from_params(form_params)
|
|
45
|
+
|
|
46
|
+
UpdateStaticPage.call(page, @form) do
|
|
47
|
+
on(:ok) do
|
|
48
|
+
flash[:notice] = I18n.t("static_pages.update.success", scope: "decidim.admin")
|
|
49
|
+
redirect_to static_pages_path
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
on(:invalid) do
|
|
53
|
+
flash.now[:alert] = I18n.t("static_pages.update.error", scope: "decidim.admin")
|
|
54
|
+
render :edit
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def show
|
|
60
|
+
authorize! :read, page
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def destroy
|
|
64
|
+
authorize! :destroy, page
|
|
65
|
+
page.destroy!
|
|
66
|
+
|
|
67
|
+
flash[:notice] = I18n.t("static_pages.destroy.success", scope: "decidim.admin")
|
|
68
|
+
|
|
69
|
+
redirect_to static_pages_path
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
private
|
|
73
|
+
|
|
74
|
+
def form_params
|
|
75
|
+
form_params = params.to_unsafe_hash
|
|
76
|
+
form_params["static_page"] ||= {}
|
|
77
|
+
form_params["static_page"]["organization"] = current_organization
|
|
78
|
+
|
|
79
|
+
return form_params unless page
|
|
80
|
+
|
|
81
|
+
form_params["static_page"]["slug"] ||= page.slug
|
|
82
|
+
form_params
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
def page
|
|
86
|
+
@page ||= collection.find_by_slug(params[:id])
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def collection
|
|
90
|
+
current_organization.static_pages
|
|
91
|
+
end
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
module Decidim
|
|
3
|
+
module Admin
|
|
4
|
+
# A form object used to create categories from the admin dashboard.
|
|
5
|
+
#
|
|
6
|
+
class CategoryForm < Form
|
|
7
|
+
include TranslatableAttributes
|
|
8
|
+
|
|
9
|
+
translatable_attribute :name, String
|
|
10
|
+
translatable_attribute :description, String
|
|
11
|
+
attribute :parent_id, Integer
|
|
12
|
+
|
|
13
|
+
mimic :category
|
|
14
|
+
|
|
15
|
+
validates :name, :description, translatable_presence: true
|
|
16
|
+
validates :current_process, presence: true
|
|
17
|
+
validates :parent_id, inclusion: { in: :parent_categories_ids }, allow_blank: true
|
|
18
|
+
|
|
19
|
+
attr_reader :current_process
|
|
20
|
+
|
|
21
|
+
def initialize(attributes = {})
|
|
22
|
+
@current_process = attributes.delete("current_process") || attributes.delete(:current_process)
|
|
23
|
+
super
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def parent_categories
|
|
27
|
+
@parent_categories ||= current_process.categories.first_class.where.not(id: id)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
private
|
|
31
|
+
|
|
32
|
+
def parent_categories_ids
|
|
33
|
+
@parent_categories_ids ||= parent_categories.pluck(:id)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
module Decidim
|
|
3
|
+
module Admin
|
|
4
|
+
# A form object used to attach a feature to a participatory process from the
|
|
5
|
+
# admin panel.
|
|
6
|
+
#
|
|
7
|
+
class FeatureForm < Decidim::Form
|
|
8
|
+
include TranslatableAttributes
|
|
9
|
+
|
|
10
|
+
mimic :feature
|
|
11
|
+
|
|
12
|
+
translatable_attribute :name, String
|
|
13
|
+
validates :name, translatable_presence: true
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
module Decidim
|
|
3
|
+
module Admin
|
|
4
|
+
# A form object used to update the current organization from the admin
|
|
5
|
+
# dashboard.
|
|
6
|
+
#
|
|
7
|
+
class OrganizationForm < Form
|
|
8
|
+
include TranslatableAttributes
|
|
9
|
+
|
|
10
|
+
mimic :organization
|
|
11
|
+
|
|
12
|
+
attribute :name, String
|
|
13
|
+
attribute :default_locale, String
|
|
14
|
+
attribute :homepage_image
|
|
15
|
+
attribute :logo
|
|
16
|
+
|
|
17
|
+
translatable_attribute :description, String
|
|
18
|
+
translatable_attribute :welcome_text, String
|
|
19
|
+
|
|
20
|
+
validates :name, presence: true
|
|
21
|
+
validates :default_locale, presence: true
|
|
22
|
+
validates :default_locale, inclusion: { in: :available_locales }
|
|
23
|
+
|
|
24
|
+
private
|
|
25
|
+
|
|
26
|
+
def available_locales
|
|
27
|
+
current_organization.available_locales
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
module Decidim
|
|
3
|
+
module Admin
|
|
4
|
+
# A form object used to create attachments in a participatory process.
|
|
5
|
+
#
|
|
6
|
+
class ParticipatoryProcessAttachmentForm < Form
|
|
7
|
+
include TranslatableAttributes
|
|
8
|
+
|
|
9
|
+
attribute :file
|
|
10
|
+
translatable_attribute :title, String
|
|
11
|
+
translatable_attribute :description, String
|
|
12
|
+
|
|
13
|
+
mimic :participatory_process_attachment
|
|
14
|
+
|
|
15
|
+
validates :file, presence: true, unless: :persisted?
|
|
16
|
+
validates :title, :description, translatable_presence: true
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -4,7 +4,7 @@ module Decidim
|
|
|
4
4
|
# A form object used to create participatory processes from the admin
|
|
5
5
|
# dashboard.
|
|
6
6
|
#
|
|
7
|
-
class ParticipatoryProcessForm <
|
|
7
|
+
class ParticipatoryProcessForm < Form
|
|
8
8
|
include TranslatableAttributes
|
|
9
9
|
|
|
10
10
|
translatable_attribute :title, String
|
|
@@ -21,19 +21,16 @@ module Decidim
|
|
|
21
21
|
attribute :banner_image
|
|
22
22
|
|
|
23
23
|
validates :slug, presence: true
|
|
24
|
-
|
|
24
|
+
validates :title, :subtitle, :description, :short_description, translatable_presence: true
|
|
25
25
|
|
|
26
26
|
validate :slug, :slug_uniqueness
|
|
27
27
|
|
|
28
28
|
private
|
|
29
29
|
|
|
30
30
|
def slug_uniqueness
|
|
31
|
-
return unless
|
|
31
|
+
return unless current_organization.participatory_processes.where(slug: slug).where.not(id: id).any?
|
|
32
32
|
|
|
33
|
-
errors.add(
|
|
34
|
-
:slug,
|
|
35
|
-
I18n.t("models.participatory_process.validations.slug_uniqueness", scope: "decidim.admin")
|
|
36
|
-
)
|
|
33
|
+
errors.add(:slug, :taken)
|
|
37
34
|
end
|
|
38
35
|
end
|
|
39
36
|
end
|
|
@@ -4,7 +4,7 @@ module Decidim
|
|
|
4
4
|
# A form object used to create participatory processes steps from the admin
|
|
5
5
|
# dashboard.
|
|
6
6
|
#
|
|
7
|
-
class ParticipatoryProcessStepForm <
|
|
7
|
+
class ParticipatoryProcessStepForm < Form
|
|
8
8
|
include TranslatableAttributes
|
|
9
9
|
|
|
10
10
|
translatable_attribute :title, String
|
|
@@ -16,10 +16,20 @@ module Decidim
|
|
|
16
16
|
attribute :start_date, DateTime
|
|
17
17
|
attribute :end_date, DateTime
|
|
18
18
|
|
|
19
|
-
|
|
19
|
+
validates :title, :description, :short_description, translatable_presence: true
|
|
20
20
|
|
|
21
21
|
validates :start_date, date: { before: :end_date, allow_blank: true, if: proc { |obj| obj.end_date.present? } }
|
|
22
22
|
validates :end_date, date: { after: :start_date, allow_blank: true, if: proc { |obj| obj.start_date.present? } }
|
|
23
|
+
|
|
24
|
+
def start_date
|
|
25
|
+
return nil unless super.respond_to?(:at_midnight)
|
|
26
|
+
super.at_midnight
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def end_date
|
|
30
|
+
return nil unless super.respond_to?(:at_midnight)
|
|
31
|
+
super.at_midnight
|
|
32
|
+
end
|
|
23
33
|
end
|
|
24
34
|
end
|
|
25
35
|
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
module Decidim
|
|
3
|
+
module Admin
|
|
4
|
+
# A form object used to create participatory process user roles from the
|
|
5
|
+
# admin dashboard.
|
|
6
|
+
#
|
|
7
|
+
class ParticipatoryProcessUserRoleForm < Form
|
|
8
|
+
mimic :participatory_process_user_role
|
|
9
|
+
|
|
10
|
+
attribute :email, String
|
|
11
|
+
|
|
12
|
+
validates :email, presence: true
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
module Decidim
|
|
3
|
+
module Admin
|
|
4
|
+
# A form object to create or update scopes.
|
|
5
|
+
class ScopeForm < Form
|
|
6
|
+
attribute :name, String
|
|
7
|
+
attribute :organization, Decidim::Organization
|
|
8
|
+
mimic :scope
|
|
9
|
+
|
|
10
|
+
validates :name, :organization, presence: true
|
|
11
|
+
validate :name, :name_uniqueness
|
|
12
|
+
|
|
13
|
+
alias organization current_organization
|
|
14
|
+
|
|
15
|
+
private
|
|
16
|
+
|
|
17
|
+
def name_uniqueness
|
|
18
|
+
return unless organization && organization.scopes.where(name: name).where.not(id: id).any?
|
|
19
|
+
|
|
20
|
+
errors.add(:name, :taken)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
module Decidim
|
|
3
|
+
module Admin
|
|
4
|
+
# A form object to create or update pages.
|
|
5
|
+
class StaticPageForm < Form
|
|
6
|
+
include TranslatableAttributes
|
|
7
|
+
|
|
8
|
+
attribute :slug, String
|
|
9
|
+
attribute :organization, Decidim::Organization
|
|
10
|
+
translatable_attribute :title, String
|
|
11
|
+
translatable_attribute :content, String
|
|
12
|
+
|
|
13
|
+
mimic :static_page
|
|
14
|
+
|
|
15
|
+
validates :slug, :organization, presence: true
|
|
16
|
+
validates :title, :content, translatable_presence: true
|
|
17
|
+
validate :slug, :slug_uniqueness
|
|
18
|
+
|
|
19
|
+
alias current_organization organization
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
def slug_uniqueness
|
|
24
|
+
return unless organization && organization.static_pages.where(slug: slug).where.not(id: id).any?
|
|
25
|
+
|
|
26
|
+
errors.add(:slug, :taken)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|