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.
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