decidim-admin 0.0.1.alpha7 → 0.0.1.alpha8
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.
Potentially problematic release.
This version of decidim-admin might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/LICENSE.txt +619 -0
- data/README.md +1 -1
- data/app/assets/javascripts/decidim/admin/application.js.es6 +12 -0
- data/app/assets/javascripts/decidim/admin/sort_steps.js.es6 +21 -0
- data/app/assets/stylesheets/decidim/admin/_tables.scss +9 -0
- data/app/commands/decidim/admin/activate_participatory_process_step.rb +43 -0
- data/app/commands/decidim/admin/create_participatory_process.rb +1 -0
- data/app/commands/decidim/admin/create_participatory_process_step.rb +46 -0
- data/app/commands/decidim/admin/deactivate_participatory_process_step.rb +35 -0
- data/app/commands/decidim/admin/publish_participatory_process.rb +35 -0
- data/app/commands/decidim/admin/reorder_participatory_process_steps.rb +47 -0
- data/app/commands/decidim/admin/unpublish_participatory_process.rb +35 -0
- data/app/commands/decidim/admin/update_participatory_process.rb +1 -0
- data/app/commands/decidim/admin/update_participatory_process_step.rb +49 -0
- data/app/constraints/decidim/admin/organization_dashboard_constraint.rb +1 -1
- data/app/controllers/decidim/admin/application_controller.rb +4 -0
- data/app/controllers/decidim/admin/dashboard_controller.rb +1 -9
- data/app/controllers/decidim/admin/participatory_process_publications_controller.rb +49 -0
- data/app/controllers/decidim/admin/participatory_process_step_activations_controller.rb +56 -0
- data/app/controllers/decidim/admin/participatory_process_step_ordering_controller.rb +30 -0
- data/app/controllers/decidim/admin/participatory_process_steps_controller.rb +81 -0
- data/app/controllers/decidim/admin/participatory_processes_controller.rb +7 -12
- data/app/forms/decidim/admin/participatory_process_form.rb +1 -0
- data/app/forms/decidim/admin/participatory_process_step_form.rb +25 -0
- data/app/helpers/decidim/admin/application_helper.rb +1 -0
- data/app/mailers/decidim/admin/application_mailer.rb +1 -1
- data/app/models/decidim/admin/abilities/admin.rb +21 -0
- data/app/views/decidim/admin/participatory_process_steps/_form.html.erb +19 -0
- data/app/views/decidim/admin/participatory_process_steps/_table.html.erb +53 -0
- data/app/views/decidim/admin/participatory_process_steps/edit.html.erb +11 -0
- data/app/views/decidim/admin/participatory_process_steps/new.html.erb +11 -0
- data/app/views/decidim/admin/participatory_process_steps/show.html.erb +22 -0
- data/app/views/decidim/admin/participatory_processes/_form.html.erb +4 -0
- data/app/views/decidim/admin/participatory_processes/index.html.erb +22 -2
- data/app/views/decidim/admin/participatory_processes/show.html.erb +21 -2
- data/config/i18n-tasks.yml +2 -2
- data/config/locales/ca.yml +55 -2
- data/config/locales/en.yml +55 -2
- data/config/locales/es.yml +56 -3
- data/config/routes.rb +10 -1
- data/lib/decidim/admin/engine.rb +6 -1
- data/vendor/assets/javascripts/html.sortable.min.js +2 -0
- metadata +39 -37
- data/app/assets/javascripts/decidim/admin/application.js +0 -22
- data/app/controllers/concerns/decidim/needs_authorization.rb +0 -50
- data/app/policies/decidim/admin/application_policy.rb +0 -20
- data/app/policies/decidim/admin/dashboard_policy.rb +0 -15
- data/app/policies/decidim/admin/organization_policy.rb +0 -15
- data/app/policies/decidim/admin/participatory_process_policy.rb +0 -57
@@ -0,0 +1,56 @@
|
|
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 ParticipatoryProcessStepActivationsController < ApplicationController
|
9
|
+
def create
|
10
|
+
authorize! :activate, process_step
|
11
|
+
|
12
|
+
ActivateParticipatoryProcessStep.call(process_step) do
|
13
|
+
on(:ok) do
|
14
|
+
flash[:notice] = I18n.t("participatory_process_step_activations.create.success", scope: "decidim.admin")
|
15
|
+
redirect_to participatory_process_path(participatory_process)
|
16
|
+
end
|
17
|
+
|
18
|
+
on(:invalid) do
|
19
|
+
flash.now[:alert] = I18n.t("participatory_process_step_activations.create.error", scope: "decidim.admin")
|
20
|
+
redirect_to participatory_process_path(participatory_process)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def destroy
|
26
|
+
authorize! :deactivate, process_step
|
27
|
+
|
28
|
+
DeactivateParticipatoryProcessStep.call(process_step) do
|
29
|
+
on(:ok) do
|
30
|
+
flash[:notice] = I18n.t("participatory_process_step_activations.destroy.success", scope: "decidim.admin")
|
31
|
+
redirect_to participatory_process_path(participatory_process)
|
32
|
+
end
|
33
|
+
|
34
|
+
on(:invalid) do
|
35
|
+
flash.now[:alert] = I18n.t("participatory_process_step_activations.destroy.error", scope: "decidim.admin")
|
36
|
+
redirect_to participatory_process_path(participatory_process)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
private
|
42
|
+
|
43
|
+
def process_step
|
44
|
+
collection.find(params[:step_id])
|
45
|
+
end
|
46
|
+
|
47
|
+
def participatory_process
|
48
|
+
current_organization.participatory_processes.find(params[:participatory_process_id])
|
49
|
+
end
|
50
|
+
|
51
|
+
def collection
|
52
|
+
participatory_process.steps
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,30 @@
|
|
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 ParticipatoryProcessStepOrderingController < ApplicationController
|
9
|
+
def create
|
10
|
+
authorize! :reorder, Decidim::ParticipatoryProcessStep
|
11
|
+
ReorderParticipatoryProcessSteps.call(collection, params[:items_ids]) do
|
12
|
+
on(:invalid) do
|
13
|
+
flash.now[:alert] = I18n.t("participatory_process_steps.ordering.error", scope: "decidim.admin")
|
14
|
+
redirect_to participatory_process_path(participatory_process)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
private
|
20
|
+
|
21
|
+
def participatory_process
|
22
|
+
current_organization.participatory_processes.find(params[:participatory_process_id])
|
23
|
+
end
|
24
|
+
|
25
|
+
def collection
|
26
|
+
participatory_process.steps
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,81 @@
|
|
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 ParticipatoryProcessStepsController < ApplicationController
|
9
|
+
def new
|
10
|
+
authorize! :create, Decidim::ParticipatoryProcessStep
|
11
|
+
@form = ParticipatoryProcessStepForm.new
|
12
|
+
end
|
13
|
+
|
14
|
+
def create
|
15
|
+
authorize! :create, Decidim::ParticipatoryProcessStep
|
16
|
+
@form = ParticipatoryProcessStepForm.from_params(params)
|
17
|
+
|
18
|
+
CreateParticipatoryProcessStep.call(@form, participatory_process) do
|
19
|
+
on(:ok) do
|
20
|
+
flash[:notice] = I18n.t("participatory_process_steps.create.success", scope: "decidim.admin")
|
21
|
+
redirect_to participatory_process_path(participatory_process)
|
22
|
+
end
|
23
|
+
|
24
|
+
on(:invalid) do
|
25
|
+
flash.now[:alert] = I18n.t("participatory_process_steps.create.error", scope: "decidim.admin")
|
26
|
+
render :new
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def edit
|
32
|
+
@participatory_process_step = collection.find(params[:id])
|
33
|
+
authorize! :update, @participatory_process_step
|
34
|
+
@form = ParticipatoryProcessStepForm.from_model(@participatory_process_step)
|
35
|
+
end
|
36
|
+
|
37
|
+
def update
|
38
|
+
@participatory_process_step = collection.find(params[:id])
|
39
|
+
authorize! :update, @participatory_process_step
|
40
|
+
@form = ParticipatoryProcessStepForm.from_params(params)
|
41
|
+
|
42
|
+
UpdateParticipatoryProcessStep.call(@participatory_process_step, @form) do
|
43
|
+
on(:ok) do
|
44
|
+
flash[:notice] = I18n.t("participatory_process_steps.update.success", scope: "decidim.admin")
|
45
|
+
redirect_to participatory_process_path(participatory_process)
|
46
|
+
end
|
47
|
+
|
48
|
+
on(:invalid) do
|
49
|
+
flash.now[:alert] = I18n.t("participatory_process_steps.update.error", scope: "decidim.admin")
|
50
|
+
render :edit
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def show
|
56
|
+
@participatory_process_step = collection.find(params[:id])
|
57
|
+
authorize! :read, @participatory_process_step
|
58
|
+
end
|
59
|
+
|
60
|
+
def destroy
|
61
|
+
@participatory_process_step = collection.find(params[:id])
|
62
|
+
authorize! :destroy, @participatory_process_step
|
63
|
+
@participatory_process_step.destroy!
|
64
|
+
|
65
|
+
flash[:notice] = I18n.t("participatory_process_steps.destroy.success", scope: "decidim.admin")
|
66
|
+
|
67
|
+
redirect_to participatory_process_path(@participatory_process_step.participatory_process)
|
68
|
+
end
|
69
|
+
|
70
|
+
private
|
71
|
+
|
72
|
+
def participatory_process
|
73
|
+
@participatory_process ||= current_organization.participatory_processes.find(params[:participatory_process_id])
|
74
|
+
end
|
75
|
+
|
76
|
+
def collection
|
77
|
+
@collection ||= participatory_process.steps
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
@@ -7,18 +7,18 @@ module Decidim
|
|
7
7
|
#
|
8
8
|
class ParticipatoryProcessesController < ApplicationController
|
9
9
|
def index
|
10
|
+
authorize! :index, Decidim::ParticipatoryProcess
|
10
11
|
@participatory_processes = collection
|
11
|
-
authorize @participatory_processes
|
12
12
|
end
|
13
13
|
|
14
14
|
def new
|
15
|
+
authorize! :new, Decidim::ParticipatoryProcess
|
15
16
|
@form = ParticipatoryProcessForm.new
|
16
|
-
authorize ParticipatoryProcess
|
17
17
|
end
|
18
18
|
|
19
19
|
def create
|
20
|
+
authorize! :new, Decidim::ParticipatoryProcess
|
20
21
|
@form = ParticipatoryProcessForm.from_params(params)
|
21
|
-
authorize ParticipatoryProcess
|
22
22
|
|
23
23
|
CreateParticipatoryProcess.call(@form, current_organization) do
|
24
24
|
on(:ok) do
|
@@ -35,13 +35,13 @@ module Decidim
|
|
35
35
|
|
36
36
|
def edit
|
37
37
|
@participatory_process = collection.find(params[:id])
|
38
|
-
authorize @participatory_process
|
38
|
+
authorize! :update, @participatory_process
|
39
39
|
@form = ParticipatoryProcessForm.from_model(@participatory_process)
|
40
40
|
end
|
41
41
|
|
42
42
|
def update
|
43
43
|
@participatory_process = collection.find(params[:id])
|
44
|
-
authorize @participatory_process
|
44
|
+
authorize! :update, @participatory_process
|
45
45
|
@form = ParticipatoryProcessForm.from_params(params)
|
46
46
|
|
47
47
|
UpdateParticipatoryProcess.call(@participatory_process, @form) do
|
@@ -59,13 +59,12 @@ module Decidim
|
|
59
59
|
|
60
60
|
def show
|
61
61
|
@participatory_process = collection.find(params[:id])
|
62
|
-
authorize @participatory_process
|
62
|
+
authorize! :read, @participatory_process
|
63
63
|
end
|
64
64
|
|
65
65
|
def destroy
|
66
66
|
@participatory_process = collection.find(params[:id])
|
67
|
-
authorize @participatory_process
|
68
|
-
|
67
|
+
authorize! :destroy, @participatory_process
|
69
68
|
@participatory_process.destroy!
|
70
69
|
|
71
70
|
flash[:notice] = I18n.t("participatory_processes.destroy.success", scope: "decidim.admin")
|
@@ -78,10 +77,6 @@ module Decidim
|
|
78
77
|
def collection
|
79
78
|
current_organization.participatory_processes
|
80
79
|
end
|
81
|
-
|
82
|
-
def policy_class
|
83
|
-
Decidim::Admin::ParticipatoryProcessPolicy
|
84
|
-
end
|
85
80
|
end
|
86
81
|
end
|
87
82
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Decidim
|
3
|
+
module Admin
|
4
|
+
# A form object used to create participatory processes steps from the admin
|
5
|
+
# dashboard.
|
6
|
+
#
|
7
|
+
class ParticipatoryProcessStepForm < Rectify::Form
|
8
|
+
include TranslatableAttributes
|
9
|
+
|
10
|
+
translatable_attribute :title, String
|
11
|
+
translatable_attribute :description, String
|
12
|
+
translatable_attribute :short_description, String
|
13
|
+
|
14
|
+
mimic :participatory_process_step
|
15
|
+
|
16
|
+
attribute :start_date, DateTime
|
17
|
+
attribute :end_date, DateTime
|
18
|
+
|
19
|
+
translatable_validates :title, :description, :short_description, presence: true
|
20
|
+
|
21
|
+
validates :start_date, date: { before: :end_date, allow_blank: true, if: proc { |obj| obj.end_date.present? } }
|
22
|
+
validates :end_date, date: { after: :start_date, allow_blank: true, if: proc { |obj| obj.start_date.present? } }
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Decidim
|
3
|
+
module Admin
|
4
|
+
module Abilities
|
5
|
+
# Defines the abilities for a user in the admin section. Intended to be
|
6
|
+
# used with `cancancan`.
|
7
|
+
class Admin
|
8
|
+
include CanCan::Ability
|
9
|
+
|
10
|
+
def initialize(user)
|
11
|
+
return unless user
|
12
|
+
return unless user.role?(:admin)
|
13
|
+
|
14
|
+
can :manage, ParticipatoryProcess
|
15
|
+
can :manage, ParticipatoryProcessStep
|
16
|
+
can :read, :admin_dashboard
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<div class="field">
|
2
|
+
<%= form.translated :text_field, :title, autofocus: true %>
|
3
|
+
</div>
|
4
|
+
|
5
|
+
<div class="field">
|
6
|
+
<%= form.translated :text_area, :short_description %>
|
7
|
+
</div>
|
8
|
+
|
9
|
+
<div class="field">
|
10
|
+
<%= form.translated :text_area, :description %>
|
11
|
+
</div>
|
12
|
+
|
13
|
+
<div class="field">
|
14
|
+
<%= form.date_field :start_date %>
|
15
|
+
</div>
|
16
|
+
|
17
|
+
<div class="field">
|
18
|
+
<%= form.date_field :end_date %>
|
19
|
+
</div>
|
@@ -0,0 +1,53 @@
|
|
1
|
+
<section id="steps">
|
2
|
+
<h4><%= t(".steps_title", scope: "decidim.admin") %></h4>
|
3
|
+
|
4
|
+
<% if can? :create, Decidim::ParticipatoryProcessStep %>
|
5
|
+
<div class="actions title">
|
6
|
+
<%= link_to t("actions.new", scope: "decidim.admin", name: t("models.participatory_process_step.name", scope: "decidim.admin")), new_participatory_process_step_path(@participatory_process), class: 'new' %>
|
7
|
+
</div>
|
8
|
+
<% end %>
|
9
|
+
|
10
|
+
<% if @participatory_process.steps.any? %>
|
11
|
+
<p><%= t(".steps_hint", scope: "decidim.admin") %></p>
|
12
|
+
<table class="stack">
|
13
|
+
<thead>
|
14
|
+
<tr>
|
15
|
+
<th><%= t("models.participatory_process_step.fields.title", scope: "decidim.admin") %></th>
|
16
|
+
<th><%= t("models.participatory_process_step.fields.start_date", scope: "decidim.admin") %></th>
|
17
|
+
<th><%= t("models.participatory_process_step.fields.end_date", scope: "decidim.admin") %></th>
|
18
|
+
<th><%= t("models.participatory_process_step.fields.active", scope: "decidim.admin") %></th>
|
19
|
+
<th class="actions"><%= t("actions.title", scope: "decidim.admin") %></th>
|
20
|
+
</tr>
|
21
|
+
</thead>
|
22
|
+
<tbody class="sortable" data-sort-url="<%= ordering_participatory_process_steps_path(@participatory_process) %>">
|
23
|
+
<% @participatory_process.steps.each do |step| %>
|
24
|
+
<tr data-id="<%= step.id %>">
|
25
|
+
<td>
|
26
|
+
<%= link_to translated_attribute(step.title), participatory_process_step_path(@participatory_process, step) %><br />
|
27
|
+
</td>
|
28
|
+
<td>
|
29
|
+
<%= l step.start_date, format: :short %>
|
30
|
+
</td>
|
31
|
+
<td>
|
32
|
+
<%= l step.end_date, format: :short %>
|
33
|
+
</td>
|
34
|
+
<td>
|
35
|
+
<%= humanize_boolean step.active? %>
|
36
|
+
</td>
|
37
|
+
<td class="actions">
|
38
|
+
<%= link_to t("actions.edit", scope: "decidim.admin"), edit_participatory_process_step_path(@participatory_process, step) if can? :update, step %>
|
39
|
+
<% if can? :activate, step %>
|
40
|
+
<% if step.active? %>
|
41
|
+
<%= link_to t("actions.deactivate", scope: "decidim.admin"), participatory_process_step_activate_path(@participatory_process, step), method: :delete, class: "small button secondary" %>
|
42
|
+
<% else %>
|
43
|
+
<%= link_to t("actions.activate", scope: "decidim.admin"), participatory_process_step_activate_path(@participatory_process, step), method: :post, class: "small button secondary" %>
|
44
|
+
<% end %>
|
45
|
+
<% end %>
|
46
|
+
<%= link_to t("actions.destroy", scope: "decidim.admin"), participatory_process_step_path(@participatory_process, step), method: :delete, class: "small alert button", data: { confirm: t("actions.confirm_destroy", scope: "decidim.admin") } if can? :destroy, step %>
|
47
|
+
</td>
|
48
|
+
</tr>
|
49
|
+
<% end %>
|
50
|
+
</tbody>
|
51
|
+
</table>
|
52
|
+
<% end %>
|
53
|
+
</section>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<% content_for :title do %>
|
2
|
+
<h2><%= t ".title" %></h2>
|
3
|
+
<% end %>
|
4
|
+
|
5
|
+
<%= form_for(@form, url: participatory_process_step_path(@participatory_process_step.participatory_process, @participatory_process_step)) do |f| %>
|
6
|
+
<%= render partial: 'form', object: f %>
|
7
|
+
|
8
|
+
<div class="actions">
|
9
|
+
<%= f.submit t(".update") %>
|
10
|
+
</div>
|
11
|
+
<% end %>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<% content_for :title do %>
|
2
|
+
<h2><%= link_to translated_attribute(@participatory_process_step.participatory_process.title), @participatory_process_step.participatory_process %></h2>
|
3
|
+
<h3 class="subheader"><%= translated_attribute(@participatory_process_step.title) %></h3>
|
4
|
+
<% end %>
|
5
|
+
|
6
|
+
<div class="actions">
|
7
|
+
<hr />
|
8
|
+
<%= link_to t("decidim.admin.actions.edit"), ['edit', @participatory_process_step] if can? :update, @participatory_process_step %>
|
9
|
+
<%= link_to t("decidim.admin.actions.destroy"), @participatory_process_step, method: :delete, class: "alert button", data: { confirm: t("decidim.admin.actions.confirm_destroy") } if can? :destroy, @participatory_process_step %>
|
10
|
+
</div>
|
11
|
+
|
12
|
+
<dl>
|
13
|
+
<%= display_for @participatory_process_step,
|
14
|
+
:title,
|
15
|
+
:short_description,
|
16
|
+
:description
|
17
|
+
%>
|
18
|
+
<dt><%= display_label(@participatory_process_step, :start_date) %></dt>
|
19
|
+
<dd><%= l @participatory_process_step.start_date, format: :short %></dd>
|
20
|
+
<dt><%= display_label(@participatory_process_step, :end_date) %></dt>
|
21
|
+
<dd><%= l @participatory_process_step.end_date, format: :short %></dd>
|
22
|
+
</dl>
|
@@ -10,6 +10,8 @@
|
|
10
10
|
<thead>
|
11
11
|
<tr>
|
12
12
|
<th><%= t("models.participatory_process.fields.title", scope: "decidim.admin") %></th>
|
13
|
+
<th><%= t("models.participatory_process.fields.promoted", scope: "decidim.admin") %></th>
|
14
|
+
<th><%= t("models.participatory_process.fields.published", scope: "decidim.admin") %></th>
|
13
15
|
<th><%= t("models.participatory_process.fields.created_at", scope: "decidim.admin") %></th>
|
14
16
|
<th class="actions"><%= t("actions.title", scope: "decidim.admin") %></th>
|
15
17
|
</tr>
|
@@ -20,13 +22,31 @@
|
|
20
22
|
<td>
|
21
23
|
<%= link_to translated_attribute(process.title), process %><br />
|
22
24
|
</td>
|
25
|
+
<td>
|
26
|
+
<%= humanize_boolean process.promoted? %>
|
27
|
+
</td>
|
28
|
+
<td>
|
29
|
+
<%= humanize_boolean process.published? %>
|
30
|
+
</td>
|
23
31
|
<td>
|
24
32
|
<%= l process.created_at, format: :short %>
|
25
33
|
</td>
|
26
34
|
<td class="actions">
|
27
|
-
|
35
|
+
<% if can? :update, process %>
|
36
|
+
<%= link_to t("actions.edit", scope: "decidim.admin"), ['edit', process] %>
|
37
|
+
<% end %>
|
38
|
+
|
39
|
+
<% if can? :publish, process %>
|
40
|
+
<% if process.published? %>
|
41
|
+
<%= link_to t("actions.unpublish", scope: "decidim.admin"), participatory_process_publish_path(process), method: :delete, class: "small button secondary" %>
|
42
|
+
<% else %>
|
43
|
+
<%= link_to t("actions.publish", scope: "decidim.admin"), participatory_process_publish_path(process), method: :post, class: "small button secondary" %>
|
44
|
+
<% end %>
|
45
|
+
<% end %>
|
28
46
|
|
29
|
-
|
47
|
+
<% if can? :destroy, process %>
|
48
|
+
<%= link_to t("actions.destroy", scope: "decidim.admin"), process, method: :delete, class: "small alert button", data: { confirm: t("actions.confirm_destroy", scope: "decidim.admin") } %>
|
49
|
+
<% end %>
|
30
50
|
</td>
|
31
51
|
</tr>
|
32
52
|
<% end %>
|