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.

Files changed (119) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +33 -8
  3. data/Rakefile +0 -25
  4. data/app/assets/javascripts/decidim/admin/application.js.es6 +17 -10
  5. data/app/assets/javascripts/decidim/admin/sort_steps.js.es6 +20 -11
  6. data/app/assets/javascripts/decidim/admin/tab_focus.js.es6 +22 -0
  7. data/app/assets/stylesheets/decidim/admin/_forms.scss +10 -0
  8. data/app/assets/stylesheets/decidim/admin/_layout.scss +11 -0
  9. data/app/assets/stylesheets/decidim/admin/_tables.scss +4 -0
  10. data/app/assets/stylesheets/decidim/admin/application.scss +8 -2
  11. data/app/commands/decidim/admin/activate_participatory_process_step.rb +1 -1
  12. data/app/commands/decidim/admin/create_category.rb +44 -0
  13. data/app/commands/decidim/admin/create_feature.rb +48 -0
  14. data/app/commands/decidim/admin/create_participatory_process.rb +3 -6
  15. data/app/commands/decidim/admin/create_participatory_process_admin.rb +51 -0
  16. data/app/commands/decidim/admin/create_participatory_process_attachment.rb +44 -0
  17. data/app/commands/decidim/admin/create_participatory_process_step.rb +3 -3
  18. data/app/commands/decidim/admin/create_scope.rb +38 -0
  19. data/app/commands/decidim/admin/create_static_page.rb +40 -0
  20. data/app/commands/decidim/admin/destroy_category.rb +36 -0
  21. data/app/commands/decidim/admin/destroy_feature.rb +39 -0
  22. data/app/commands/decidim/admin/publish_participatory_process.rb +1 -1
  23. data/app/commands/decidim/admin/reorder_participatory_process_steps.rb +5 -2
  24. data/app/commands/decidim/admin/unpublish_participatory_process.rb +1 -1
  25. data/app/commands/decidim/admin/update_category.rb +48 -0
  26. data/app/commands/decidim/admin/update_organization.rb +49 -0
  27. data/app/commands/decidim/admin/update_participatory_process.rb +2 -2
  28. data/app/commands/decidim/admin/update_participatory_process_attachment.rb +49 -0
  29. data/app/commands/decidim/admin/update_participatory_process_step.rb +1 -1
  30. data/app/commands/decidim/admin/update_scope.rb +43 -0
  31. data/app/commands/decidim/admin/update_static_page.rb +45 -0
  32. data/app/constraints/decidim/admin/organization_dashboard_constraint.rb +5 -1
  33. data/app/controllers/decidim/admin/application_controller.rb +8 -0
  34. data/app/controllers/decidim/admin/categories_controller.rb +90 -0
  35. data/app/controllers/decidim/admin/concerns/participatory_process_admin.rb +31 -0
  36. data/app/controllers/decidim/admin/features_controller.rb +74 -0
  37. data/app/controllers/decidim/admin/organization_controller.rb +40 -0
  38. data/app/controllers/decidim/admin/participatory_process_attachments_controller.rb +84 -0
  39. data/app/controllers/decidim/admin/participatory_process_publications_controller.rb +2 -7
  40. data/app/controllers/decidim/admin/participatory_process_step_activations_controller.rb +6 -8
  41. data/app/controllers/decidim/admin/participatory_process_step_ordering_controller.rb +2 -4
  42. data/app/controllers/decidim/admin/participatory_process_steps_controller.rb +13 -11
  43. data/app/controllers/decidim/admin/participatory_process_user_roles_controller.rb +54 -0
  44. data/app/controllers/decidim/admin/participatory_processes_controller.rb +11 -6
  45. data/app/controllers/decidim/admin/scopes_controller.rb +79 -0
  46. data/app/controllers/decidim/admin/static_pages_controller.rb +94 -0
  47. data/app/forms/decidim/admin/category_form.rb +37 -0
  48. data/app/forms/decidim/admin/feature_form.rb +16 -0
  49. data/app/forms/decidim/admin/organization_form.rb +31 -0
  50. data/app/forms/decidim/admin/participatory_process_attachment_form.rb +19 -0
  51. data/app/forms/decidim/admin/participatory_process_form.rb +4 -7
  52. data/app/forms/decidim/admin/participatory_process_step_form.rb +12 -2
  53. data/app/forms/decidim/admin/participatory_process_user_role_form.rb +15 -0
  54. data/app/forms/decidim/admin/scope_form.rb +24 -0
  55. data/app/forms/decidim/admin/static_page_form.rb +30 -0
  56. data/app/helpers/decidim/admin/application_helper.rb +1 -0
  57. data/app/helpers/decidim/admin/aria_selected_link_to_helper.rb +28 -0
  58. data/app/helpers/decidim/admin/attributes_display_helper.rb +13 -5
  59. data/app/models/decidim/admin/abilities/admin_user.rb +34 -0
  60. data/app/models/decidim/admin/abilities/base.rb +19 -0
  61. data/app/models/decidim/admin/abilities/participatory_process_admin.rb +51 -0
  62. data/app/models/decidim/admin/participatory_process_user_role.rb +14 -0
  63. data/app/queries/decidim/admin/manageable_participatory_processes_for_user.rb +41 -0
  64. data/app/queries/decidim/admin/process_admin_roles_for_process.rb +35 -0
  65. data/app/views/decidim/admin/categories/_form.html.erb +12 -0
  66. data/app/views/decidim/admin/categories/edit.html.erb +9 -0
  67. data/app/views/decidim/admin/categories/index.html.erb +44 -0
  68. data/app/views/decidim/admin/categories/new.html.erb +9 -0
  69. data/app/views/decidim/admin/categories/show.html.erb +14 -0
  70. data/app/views/decidim/admin/features/_feature.html.erb +20 -0
  71. data/app/views/decidim/admin/features/_form.html.erb +3 -0
  72. data/app/views/decidim/admin/features/index.html.erb +23 -0
  73. data/app/views/decidim/admin/features/new.html.erb +9 -0
  74. data/app/views/decidim/admin/organization/_form.html.erb +23 -0
  75. data/app/views/decidim/admin/organization/edit.html.erb +11 -0
  76. data/app/views/decidim/admin/participatory_process_attachments/_form.html.erb +11 -0
  77. data/app/views/decidim/admin/participatory_process_attachments/edit.html.erb +9 -0
  78. data/app/views/decidim/admin/participatory_process_attachments/index.html.erb +37 -0
  79. data/app/views/decidim/admin/participatory_process_attachments/new.html.erb +9 -0
  80. data/app/views/decidim/admin/participatory_process_attachments/show.html.erb +25 -0
  81. data/app/views/decidim/admin/participatory_process_steps/_form.html.erb +2 -2
  82. data/app/views/decidim/admin/participatory_process_steps/edit.html.erb +1 -3
  83. data/app/views/decidim/admin/participatory_process_steps/{_table.html.erb → index.html.erb} +15 -11
  84. data/app/views/decidim/admin/participatory_process_steps/new.html.erb +1 -3
  85. data/app/views/decidim/admin/participatory_process_steps/show.html.erb +1 -4
  86. data/app/views/decidim/admin/participatory_process_user_roles/index.html.erb +34 -0
  87. data/app/views/decidim/admin/participatory_processes/_form.html.erb +2 -2
  88. data/app/views/decidim/admin/participatory_processes/edit.html.erb +13 -3
  89. data/app/views/decidim/admin/participatory_processes/index.html.erb +5 -14
  90. data/app/views/decidim/admin/participatory_processes/show.html.erb +19 -36
  91. data/app/views/decidim/admin/scopes/_form.html.erb +3 -0
  92. data/app/views/decidim/admin/scopes/edit.html.erb +11 -0
  93. data/app/views/decidim/admin/scopes/index.html.erb +38 -0
  94. data/app/views/decidim/admin/scopes/new.html.erb +11 -0
  95. data/app/views/decidim/admin/static_pages/_form.html.erb +13 -0
  96. data/app/views/decidim/admin/static_pages/edit.html.erb +11 -0
  97. data/app/views/decidim/admin/static_pages/index.html.erb +40 -0
  98. data/app/views/decidim/admin/static_pages/new.html.erb +11 -0
  99. data/app/views/decidim/admin/static_pages/show.html.erb +22 -0
  100. data/app/views/layouts/decidim/admin/_application.html.erb +40 -0
  101. data/app/views/layouts/decidim/admin/_sidebar.html.erb +5 -2
  102. data/app/views/layouts/decidim/admin/application.html.erb +3 -40
  103. data/app/views/layouts/decidim/admin/participatory_process.html.erb +54 -0
  104. data/config/i18n-tasks.yml +3 -2
  105. data/config/locales/ca.yml +138 -6
  106. data/config/locales/en.yml +191 -13
  107. data/config/locales/es.yml +139 -7
  108. data/config/routes.rb +23 -1
  109. data/db/migrate/20161102144648_add_admin_participatory_process_user_roles.rb +15 -0
  110. data/db/seeds.rb +21 -0
  111. data/lib/decidim/admin/engine.rb +10 -3
  112. data/lib/decidim/admin/features/base_controller.rb +33 -0
  113. data/lib/decidim/admin/features.rb +10 -0
  114. data/lib/decidim/admin.rb +1 -0
  115. data/vendor/assets/javascripts/html.sortable.js +691 -0
  116. metadata +98 -33
  117. data/LICENSE.txt +0 -619
  118. data/app/models/decidim/admin/abilities/admin.rb +0 -21
  119. 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.new
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 participatory_process_path(participatory_process)
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 participatory_process_path(participatory_process)
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 participatory_process_path(@participatory_process_step.participatory_process)
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.new
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, current_organization) do
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
- current_organization.participatory_processes
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 < Rectify::Form
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
- translatable_validates :title, :subtitle, :description, :short_description, presence: true
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 ParticipatoryProcess.where(slug: slug).where.not(id: id).any?
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 < Rectify::Form
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
- translatable_validates :title, :description, :short_description, presence: true
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
@@ -4,6 +4,7 @@ module Decidim
4
4
  # Custom helpers, scoped to the admin panel.
5
5
  #
6
6
  module ApplicationHelper
7
+ include Decidim::LocalizedLocalesHelper
7
8
  include Decidim::TranslationsHelper
8
9
  include Decidim::HumanizeBooleansHelper
9
10