decidim-admin 0.0.1.alpha9 → 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of decidim-admin might be problematic. Click here for more details.
- 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
|