decidim-admin 0.11.2 → 0.12.0.pre
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/app/assets/javascripts/decidim/admin/application.js.es6 +5 -1
- data/app/assets/javascripts/decidim/admin/bundle.js +47 -0
- data/app/assets/javascripts/decidim/admin/bundle.js.map +1 -0
- data/app/assets/javascripts/decidim/admin/component_permissions.js.es6 +13 -0
- data/app/assets/javascripts/decidim/admin/managed_users.js.es6 +2 -1
- data/app/assets/javascripts/decidim/admin/subform_toggler.component.js.es6 +14 -7
- data/app/assets/stylesheets/decidim/admin/_decidim.scss +2 -0
- data/app/assets/stylesheets/decidim/admin/bundle.scss +1 -0
- data/app/assets/stylesheets/decidim/admin/components/_autocomplete_select.component.scss +13 -0
- data/app/assets/stylesheets/decidim/admin/modules/_secondary-nav.scss +3 -2
- data/app/assets/stylesheets/decidim/admin/modules/_table-list.scss +7 -0
- data/app/commands/decidim/admin/create_static_page.rb +7 -1
- data/app/commands/decidim/admin/update_component_permissions.rb +9 -3
- data/app/commands/decidim/admin/update_organization_tos_version.rb +47 -0
- data/app/commands/decidim/admin/update_static_page.rb +5 -0
- data/app/constraints/decidim/admin/organization_dashboard_constraint.rb +6 -3
- data/app/controllers/concerns/decidim/admin/participatory_space_admin_context.rb +2 -2
- data/app/controllers/decidim/admin/application_controller.rb +14 -5
- data/app/controllers/decidim/admin/area_types_controller.rb +6 -6
- data/app/controllers/decidim/admin/areas_controller.rb +6 -6
- data/app/controllers/decidim/admin/authorization_workflows_controller.rb +1 -1
- data/app/controllers/decidim/admin/categories_controller.rb +7 -7
- data/app/controllers/decidim/admin/component_permissions_controller.rb +20 -8
- data/app/controllers/decidim/admin/components/base_controller.rb +19 -3
- data/app/controllers/decidim/admin/components_controller.rb +8 -8
- data/app/controllers/decidim/admin/concerns/has_attachment_collections.rb +8 -8
- data/app/controllers/decidim/admin/concerns/has_attachments.rb +11 -9
- data/app/controllers/decidim/admin/concerns/has_private_users.rb +5 -5
- data/app/controllers/decidim/admin/dashboard_controller.rb +4 -2
- data/app/controllers/decidim/admin/exports_controller.rb +1 -1
- data/app/controllers/decidim/admin/impersonatable_users_controller.rb +7 -1
- data/app/controllers/decidim/admin/impersonations_controller.rb +2 -4
- data/app/controllers/decidim/admin/logs_controller.rb +4 -2
- data/app/controllers/decidim/admin/managed_users/impersonation_logs_controller.rb +0 -2
- data/app/controllers/decidim/admin/managed_users/promotions_controller.rb +2 -2
- data/app/controllers/decidim/admin/moderations_controller.rb +4 -4
- data/app/controllers/decidim/admin/newsletters_controller.rb +9 -9
- data/app/controllers/decidim/admin/oauth_applications_controller.rb +7 -7
- data/app/controllers/decidim/admin/officializations_controller.rb +4 -5
- data/app/controllers/decidim/admin/organization_appearance_controller.rb +2 -2
- data/app/controllers/decidim/admin/organization_controller.rb +21 -2
- data/app/controllers/decidim/admin/scope_types_controller.rb +6 -6
- data/app/controllers/decidim/admin/scopes_controller.rb +7 -7
- data/app/controllers/decidim/admin/static_pages_controller.rb +16 -7
- data/app/controllers/decidim/admin/user_groups_controller.rb +3 -3
- data/app/controllers/decidim/admin/users_controller.rb +5 -5
- data/app/forms/decidim/admin/managed_user_promotion_form.rb +1 -1
- data/app/forms/decidim/admin/permission_form.rb +12 -15
- data/app/forms/decidim/admin/static_page_form.rb +1 -0
- data/app/frontend/components/autocomplete.component.test.tsx +19 -0
- data/app/frontend/components/autocomplete.component.tsx +169 -0
- data/app/frontend/entry.ts +17 -0
- data/app/frontend/entry_test.ts +4 -0
- data/app/helpers/decidim/admin/application_helper.rb +0 -4
- data/app/permissions/decidim/admin/permissions.rb +161 -0
- data/app/permissions/decidim/admin/user_manager_permissions.rb +66 -0
- data/app/views/decidim/admin/area_types/index.html.erb +8 -4
- data/app/views/decidim/admin/areas/index.html.erb +6 -3
- data/app/views/decidim/admin/attachment_collections/index.html.erb +3 -3
- data/app/views/decidim/admin/attachment_collections/show.html.erb +2 -2
- data/app/views/decidim/admin/attachments/index.html.erb +3 -3
- data/app/views/decidim/admin/attachments/show.html.erb +2 -2
- data/app/views/decidim/admin/categories/index.html.erb +5 -5
- data/app/views/decidim/admin/categories/show.html.erb +2 -2
- data/app/views/decidim/admin/component_permissions/_options_form.html.erb +14 -0
- data/app/views/decidim/admin/component_permissions/edit.html.erb +37 -16
- data/app/views/decidim/admin/components/_component.html.erb +6 -4
- data/app/views/decidim/admin/components/_form.html.erb +6 -6
- data/app/views/decidim/admin/dashboard/show.html.erb +1 -1
- data/app/views/decidim/admin/impersonatable_users/index.html.erb +5 -3
- data/app/views/decidim/admin/moderations/index.html.erb +2 -2
- data/app/views/decidim/admin/newsletters/index.html.erb +5 -3
- data/app/views/decidim/admin/newsletters/show.html.erb +1 -1
- data/app/views/decidim/admin/oauth_applications/index.html.erb +5 -3
- data/app/views/decidim/admin/participatory_space_private_users/index.html.erb +3 -3
- data/app/views/decidim/admin/scope_types/index.html.erb +5 -3
- data/app/views/decidim/admin/scopes/index.html.erb +4 -4
- data/app/views/decidim/admin/static_pages/_form.html.erb +3 -1
- data/app/views/decidim/admin/static_pages/_form_notable_changes.html.erb +9 -0
- data/app/views/decidim/admin/static_pages/index.html.erb +11 -3
- data/app/views/decidim/admin/static_pages/show.html.erb +2 -2
- data/app/views/decidim/admin/user_groups/index.html.erb +2 -2
- data/app/views/decidim/admin/users/index.html.erb +5 -3
- data/app/views/layouts/decidim/admin/_application.html.erb +0 -1
- data/app/views/layouts/decidim/admin/_template_top.html.erb +1 -0
- data/app/views/layouts/decidim/admin/users.html.erb +4 -4
- data/config/locales/ca.yml +8 -0
- data/config/locales/en.yml +8 -0
- data/config/locales/es.yml +8 -0
- data/config/locales/eu.yml +8 -0
- data/config/locales/fi.yml +8 -0
- data/config/locales/fr.yml +8 -0
- data/config/locales/gl.yml +8 -0
- data/config/locales/it.yml +8 -0
- data/config/locales/nl.yml +8 -0
- data/config/locales/pl.yml +8 -0
- data/config/locales/pt-BR.yml +8 -0
- data/config/locales/pt.yml +8 -0
- data/config/locales/ru.yml +11 -3
- data/config/locales/sv.yml +8 -0
- data/config/locales/uk.yml +8 -0
- data/config/routes.rb +5 -1
- data/lib/decidim/admin.rb +1 -0
- data/lib/decidim/admin/engine.rb +17 -20
- data/lib/decidim/admin/form_builder.rb +64 -0
- data/lib/decidim/admin/test/manage_component_permissions_examples.rb +92 -15
- data/lib/decidim/admin/version.rb +1 -1
- metadata +25 -17
- data/app/models/decidim/admin/abilities/admin_ability.rb +0 -76
- data/app/models/decidim/admin/abilities/base_ability.rb +0 -21
- data/app/models/decidim/admin/abilities/participatory_process_admin_ability.rb +0 -58
- data/app/models/decidim/admin/abilities/participatory_process_collaborator_ability.rb +0 -19
- data/app/models/decidim/admin/abilities/participatory_process_moderator_ability.rb +0 -23
- data/app/models/decidim/admin/abilities/user_manager_ability.rb +0 -34
- data/app/models/decidim/admin/application_record.rb +0 -11
@@ -0,0 +1,66 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Admin
|
5
|
+
class UserManagerPermissions < Decidim::DefaultPermissions
|
6
|
+
def permissions
|
7
|
+
return permission_action unless user_manager? || user.admin?
|
8
|
+
allow! if read_admin_dashboard_action?
|
9
|
+
|
10
|
+
allow! if managed_user_action?
|
11
|
+
allow! if user_action?
|
12
|
+
|
13
|
+
permission_action
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def user_manager?
|
19
|
+
user && !user.admin? && user.role?("user_manager")
|
20
|
+
end
|
21
|
+
|
22
|
+
def read_admin_dashboard_action?
|
23
|
+
permission_action.subject == :admin_dashboard &&
|
24
|
+
permission_action.action == :read
|
25
|
+
end
|
26
|
+
|
27
|
+
def managed_user_action?
|
28
|
+
return unless permission_action.subject == :managed_user
|
29
|
+
|
30
|
+
case permission_action.action
|
31
|
+
when :create
|
32
|
+
!organization.available_authorizations.empty?
|
33
|
+
else
|
34
|
+
true
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def user_action?
|
39
|
+
return unless [:user, :impersonatable_user].include?(permission_action.subject)
|
40
|
+
subject_user = context.fetch(:user, nil)
|
41
|
+
|
42
|
+
case permission_action.action
|
43
|
+
when :promote
|
44
|
+
subject_user.managed? && Decidim::ImpersonationLog.active.where(admin: user).empty?
|
45
|
+
when :impersonate
|
46
|
+
available_authorization_handlers? &&
|
47
|
+
!subject_user.admin? &&
|
48
|
+
subject_user.roles.empty? &&
|
49
|
+
Decidim::ImpersonationLog.active.where(admin: user).empty?
|
50
|
+
when :destroy
|
51
|
+
subject_user != user
|
52
|
+
else
|
53
|
+
true
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def organization
|
58
|
+
@organization ||= context.fetch(:organization, nil) || context.fetch(:current_organization, nil)
|
59
|
+
end
|
60
|
+
|
61
|
+
def available_authorization_handlers?
|
62
|
+
user.organization.available_authorization_handlers.any?
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
@@ -1,6 +1,11 @@
|
|
1
1
|
<div class="card" id="area-types">
|
2
2
|
<div class="card-divider">
|
3
|
-
<h2 class="card-title"
|
3
|
+
<h2 class="card-title">
|
4
|
+
<%= t "decidim.admin.titles.area_types" %>
|
5
|
+
<% if allowed_to? :create, :area_type %>
|
6
|
+
<%= link_to t("actions.add", scope: "decidim.admin"), ["new", "area_type"], class: "button tiny button--title new" %>
|
7
|
+
<% end %>
|
8
|
+
</h2>
|
4
9
|
</div>
|
5
10
|
<div class="card-section">
|
6
11
|
<div class="table-scroll">
|
@@ -22,12 +27,11 @@
|
|
22
27
|
<%= translated_attribute(area_type.plural) %>
|
23
28
|
</td>
|
24
29
|
<td class="table-list__actions">
|
25
|
-
|
26
|
-
<% if can? :update, area_type %>
|
30
|
+
<% if allowed_to? :update, :area_type, area_type: area_type %>
|
27
31
|
<%= icon_link_to "pencil", ["edit", area_type], t("actions.edit", scope: "decidim.admin"), class: "action-icon--edit", method: :get, data: {} %>
|
28
32
|
<% end %>
|
29
33
|
|
30
|
-
<% if
|
34
|
+
<% if allowed_to? :destroy, :area_type, area_type: area_type %>
|
31
35
|
<%= icon_link_to "circle-x", area_type, t("actions.destroy", scope: "decidim.admin"), class: "action-icon--remove", method: :delete, data: { confirm: t("actions.confirm_destroy", scope: "decidim.admin") } %>
|
32
36
|
<% end %>
|
33
37
|
</td>
|
@@ -1,7 +1,10 @@
|
|
1
1
|
<div class="card" id="areas">
|
2
2
|
<div class="card-divider">
|
3
3
|
<h2 class="card-title">
|
4
|
-
<%= t "decidim.admin.titles.areas" %>
|
4
|
+
<%= t "decidim.admin.titles.areas" %>
|
5
|
+
<% if allowed_to? :create, :area %>
|
6
|
+
<%= link_to t("actions.add", scope: "decidim.admin"), new_area_path, class: "button tiny button--title new" %>
|
7
|
+
<% end %>
|
5
8
|
</h2>
|
6
9
|
</div>
|
7
10
|
<div class="card-section">
|
@@ -25,11 +28,11 @@
|
|
25
28
|
<%= area.area_type ? translated_attribute(area.area_type.name) : "-" %>
|
26
29
|
</td>
|
27
30
|
<td class="table-list__actions">
|
28
|
-
<% if
|
31
|
+
<% if allowed_to? :update, :area, area: area %>
|
29
32
|
<%= icon_link_to "pencil", ["edit", area], t("actions.edit", scope: "decidim.admin"), class: "action-icon--edit", method: :get, data: {} %>
|
30
33
|
<% end %>
|
31
34
|
|
32
|
-
<% if
|
35
|
+
<% if allowed_to? :destroy, :area, area: area %>
|
33
36
|
<%= icon_link_to "circle-x", area, t("actions.destroy", scope: "decidim.admin"), class: "action-icon--remove", method: :delete, data: { confirm: t("actions.confirm_destroy", scope: "decidim.admin") } %>
|
34
37
|
<% end %>
|
35
38
|
</td>
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<div class="card-divider">
|
3
3
|
<h2 class='card-title'>
|
4
4
|
<%= t("attachment_collections.index.attachment_collections_title", scope: "decidim.admin") %>
|
5
|
-
<% if
|
5
|
+
<% if allowed_to? :create, :attachment_collection %>
|
6
6
|
<%= link_to t("actions.new", scope: "decidim.admin", name: t("models.attachment_collection.name", scope: "decidim.admin")), url_for(action: :new), class: "button tiny button--title new" %>
|
7
7
|
<% end %>
|
8
8
|
</h2>
|
@@ -25,11 +25,11 @@
|
|
25
25
|
<%= link_to translated_attribute(attachment_collection.name), edit_polymorphic_path([collection_for, attachment_collection]) %><br />
|
26
26
|
</td>
|
27
27
|
<td class="table-list__actions">
|
28
|
-
<% if
|
28
|
+
<% if allowed_to? :update, :attachment_collection, attachment_collection: attachment_collection %>
|
29
29
|
<%= icon_link_to "pencil", edit_polymorphic_path([collection_for, attachment_collection]), t("actions.edit", scope: "decidim.admin"), class: "action-icon--edit" %>
|
30
30
|
<% end %>
|
31
31
|
|
32
|
-
<% if
|
32
|
+
<% if allowed_to? :destroy, :attachment_collection, attachment_collection: attachment_collection %>
|
33
33
|
<% if attachment_collection.unused? %>
|
34
34
|
<%= icon_link_to "circle-x", polymorphic_path([collection_for, attachment_collection]), t("actions.destroy", scope: "decidim.admin"), class: "action-icon--remove", method: :delete, data: { confirm: t("actions.confirm_destroy", scope: "decidim.admin") } %>
|
35
35
|
<% else %>
|
@@ -2,8 +2,8 @@
|
|
2
2
|
|
3
3
|
<div class="actions">
|
4
4
|
<hr />
|
5
|
-
<%= link_to t("decidim.admin.actions.edit"), ["edit", @attachment_collection.collection_for, @attachment_collection], class: "button" if
|
6
|
-
<%= link_to t("decidim.admin.actions.destroy"), [@attachment_collection.collection_for, @attachment_collection], method: :delete, class: "alert button", data: { confirm: t("decidim.admin.actions.confirm_destroy") } if
|
5
|
+
<%= link_to t("decidim.admin.actions.edit"), ["edit", @attachment_collection.collection_for, @attachment_collection], class: "button" if allowed_to? :update, :attachment_collection, attachment_collection: @attachment_collection %>
|
6
|
+
<%= link_to t("decidim.admin.actions.destroy"), [@attachment_collection.collection_for, @attachment_collection], method: :delete, class: "alert button", data: { confirm: t("decidim.admin.actions.confirm_destroy") } if allowed_to? :destroy, :attachment_collection, attachment_collection: @attachment_collection %>
|
7
7
|
</div>
|
8
8
|
|
9
9
|
<dl>
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<div class="card-divider">
|
3
3
|
<h2 class="card-title">
|
4
4
|
<%= t(".attachments_title") %>
|
5
|
-
<% if
|
5
|
+
<% if allowed_to? :create, :attachment %>
|
6
6
|
<%= link_to t("actions.new", scope: "decidim.admin", name: t("models.attachment.name", scope: "decidim.admin")), url_for(action: :new), class: "button tiny button--title new" %>
|
7
7
|
<% end %>
|
8
8
|
</h2>
|
@@ -37,11 +37,11 @@
|
|
37
37
|
<%= number_to_human_size(attachment.file_size) %>
|
38
38
|
</td>
|
39
39
|
<td class="table-list__actions">
|
40
|
-
<% if
|
40
|
+
<% if allowed_to? :update, :attachment, attachment: attachment %>
|
41
41
|
<%= icon_link_to "pencil", edit_polymorphic_path([attached_to, attachment]), t("actions.edit", scope: "decidim.admin"), class: "action-icon--edit" %>
|
42
42
|
<% end %>
|
43
43
|
|
44
|
-
<% if
|
44
|
+
<% if allowed_to? :destroy, :attachment, attachment: attachment %>
|
45
45
|
<%= icon_link_to "circle-x", polymorphic_path([attached_to, attachment]), t("actions.destroy", scope: "decidim.admin"), class: "action-icon--remove", method: :delete, data: { confirm: t("actions.confirm_destroy", scope: "decidim.admin") } %>
|
46
46
|
<% end %>
|
47
47
|
</td>
|
@@ -2,8 +2,8 @@
|
|
2
2
|
|
3
3
|
<div class="actions">
|
4
4
|
<hr />
|
5
|
-
<%= link_to t("decidim.admin.actions.edit"), ["edit", @attachment.attached_to, @attachment] if
|
6
|
-
<%= link_to t("decidim.admin.actions.destroy"), [@attachment.attached_to, @attachment], method: :delete, class: "alert button", data: { confirm: t("decidim.admin.actions.confirm_destroy") } if
|
5
|
+
<%= link_to t("decidim.admin.actions.edit"), ["edit", @attachment.attached_to, @attachment] if allowed_to? :update, :attachment, attachment: @attachment %>
|
6
|
+
<%= link_to t("decidim.admin.actions.destroy"), [@attachment.attached_to, @attachment], method: :delete, class: "alert button", data: { confirm: t("decidim.admin.actions.confirm_destroy") } if allowed_to? :destroy, :attachment, attachment: @attachment %>
|
7
7
|
</div>
|
8
8
|
|
9
9
|
<dl>
|
@@ -2,7 +2,7 @@
|
|
2
2
|
<div class="card-divider">
|
3
3
|
<h2 class='card-title'>
|
4
4
|
<%= t("categories.index.categories_title", scope: "decidim.admin") %>
|
5
|
-
<% if
|
5
|
+
<% if allowed_to? :create, :category %>
|
6
6
|
<%= link_to t("actions.new", scope: "decidim.admin", name: t("models.category.name", scope: "decidim.admin")), new_category_path(current_participatory_space), class: "button tiny button--title new" %>
|
7
7
|
<% end %>
|
8
8
|
</h2>
|
@@ -25,11 +25,11 @@
|
|
25
25
|
<%= link_to translated_attribute(category.name), edit_category_path(current_participatory_space, category) %><br />
|
26
26
|
</td>
|
27
27
|
<td class="table-list__actions">
|
28
|
-
<% if
|
28
|
+
<% if allowed_to? :update, :category, category: category %>
|
29
29
|
<%= icon_link_to "pencil", edit_category_path(current_participatory_space, category), t("actions.edit", scope: "decidim.admin"), class: "action-icon--edit" %>
|
30
30
|
<% end %>
|
31
31
|
|
32
|
-
<% if
|
32
|
+
<% if allowed_to? :destroy, :category, category: category %>
|
33
33
|
<% if category.unused? %>
|
34
34
|
<%= icon_link_to "circle-x", category_path(current_participatory_space, category), t("actions.destroy", scope: "decidim.admin"), class: "action-icon--remove", method: :delete, data: { confirm: t("actions.confirm_destroy", scope: "decidim.admin") } %>
|
35
35
|
<% else %>
|
@@ -46,11 +46,11 @@
|
|
46
46
|
<%= link_to translated_attribute(subcategory.name), edit_category_path(current_participatory_space, subcategory) %><br />
|
47
47
|
</td>
|
48
48
|
<td class="table-list__actions">
|
49
|
-
<% if
|
49
|
+
<% if allowed_to? :update, :category, category: subcategory %>
|
50
50
|
<%= icon_link_to "pencil", edit_category_path(current_participatory_space, subcategory), t("actions.edit", scope: "decidim.admin"), class: "action-icon--edit" %>
|
51
51
|
<% end %>
|
52
52
|
|
53
|
-
<% if
|
53
|
+
<% if allowed_to? :destroy, :category, category: subcategory %>
|
54
54
|
<%= icon_link_to "circle-x", category_path(current_participatory_space, subcategory), t("actions.destroy", scope: "decidim.admin"), class: "action-icon--remove", method: :delete, data: { confirm: t("actions.confirm_destroy", scope: "decidim.admin") } %>
|
55
55
|
<% end %>
|
56
56
|
</td>
|
@@ -2,8 +2,8 @@
|
|
2
2
|
|
3
3
|
<div class="actions">
|
4
4
|
<hr />
|
5
|
-
<%= link_to t("decidim.admin.actions.edit"), ["edit", participatory_space, @category] if
|
6
|
-
<%= link_to t("decidim.admin.actions.destroy"), [participatory_space, @category], method: :delete, class: "alert button", data: { confirm: t("decidim.admin.actions.confirm_destroy") } if
|
5
|
+
<%= link_to t("decidim.admin.actions.edit"), ["edit", participatory_space, @category] if allowed_to? :update, :category, category: @category %>
|
6
|
+
<%= link_to t("decidim.admin.actions.destroy"), [participatory_space, @category], method: :delete, class: "alert button", data: { confirm: t("decidim.admin.actions.confirm_destroy") } if allowed_to? :destroy, :category, category: @category %>
|
7
7
|
</div>
|
8
8
|
|
9
9
|
<dl>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<%
|
2
|
+
schema = form.object.options_schema
|
3
|
+
attributes = form.object.options_attributes
|
4
|
+
%>
|
5
|
+
|
6
|
+
<%= form.fields_for(:options, schema) do |options_form| %>
|
7
|
+
<% attributes.each do |name, attribute| %>
|
8
|
+
<%= options_form.send(
|
9
|
+
form_method_for_attribute(attribute),
|
10
|
+
name,
|
11
|
+
label: t("authorization_handlers.#{form.object.authorization_handler_name}.fields.#{name}", scope: "decidim")
|
12
|
+
) %>
|
13
|
+
<% end %>
|
14
|
+
<% end %>
|
@@ -5,23 +5,44 @@
|
|
5
5
|
</div>
|
6
6
|
</div>
|
7
7
|
|
8
|
-
<%= form_for @permissions_form, url: url_for(action: :update), method: "put" do |
|
9
|
-
<%=
|
10
|
-
<%
|
11
|
-
<%=
|
12
|
-
<
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
8
|
+
<%= form_for @permissions_form, url: url_for(action: :update), method: "put" do |permissions_form| %>
|
9
|
+
<%= permissions_form.fields_for :permissions, permissions_form.object do |action_permission_form| %>
|
10
|
+
<% action_permission_form.object.permissions.each do |action, permission| %>
|
11
|
+
<fieldset class="card <%= action %>-permission">
|
12
|
+
<div class="card-divider"><%= t("#{component.manifest.name}.actions.#{action}", scope: "decidim.components") %></div>
|
13
|
+
|
14
|
+
<div class="card-section">
|
15
|
+
<%= action_permission_form.fields_for(action, permission) do |permission_form| %>
|
16
|
+
<%= permission_form.collection_select :authorization_handler_name,
|
17
|
+
authorizations,
|
18
|
+
:name,
|
19
|
+
:description,
|
20
|
+
{ include_blank: t(".everyone") } %>
|
21
|
+
<% if permission.authorization_handler_name %>
|
22
|
+
<div id="authorization-handler-<%= permission.authorization_handler_name %>"
|
23
|
+
class="authorization-handler">
|
24
|
+
<%= render "options_form", form: permission_form %>
|
25
|
+
</div>
|
26
|
+
<% end %>
|
27
|
+
<% end %>
|
28
|
+
|
29
|
+
<% other_authorizations_for(action).each do |authorization| %>
|
30
|
+
<% permission = Decidim::Admin::PermissionForm.new(authorization_handler_name: authorization.name) %>
|
31
|
+
|
32
|
+
<%= action_permission_form.fields_for(action, permission) do |permission_form| %>
|
33
|
+
<div id="authorization-handler-<%= authorization.name %>"
|
34
|
+
class="authorization-handler"
|
35
|
+
style="display:none">
|
36
|
+
<%= render "options_form", form: permission_form %>
|
37
|
+
</div>
|
38
|
+
<% end %>
|
39
|
+
<% end %>
|
40
|
+
</div>
|
41
|
+
</fieldset>
|
23
42
|
<% end %>
|
24
43
|
<% end %>
|
25
|
-
<%=
|
44
|
+
<%= permissions_form.submit t(".submit") %>
|
26
45
|
<% end %>
|
27
46
|
</section>
|
47
|
+
|
48
|
+
<%= javascript_include_tag "decidim/admin/component_permissions" %>
|
@@ -12,7 +12,7 @@
|
|
12
12
|
<%= icon_link_to "pencil", manage_component_path(component), t("actions.manage", scope: "decidim.admin"), class: "action-icon--manage" %>
|
13
13
|
<% end %>
|
14
14
|
|
15
|
-
<% if
|
15
|
+
<% if allowed_to?(:update, :component, component: component) %>
|
16
16
|
<% if component.published? %>
|
17
17
|
<%= icon_link_to "x", url_for(action: :unpublish, id: component, controller: "components"), t("actions.unpublish", scope: "decidim.admin"), class: "action-icon--unpublish", method: :put %>
|
18
18
|
<% else %>
|
@@ -20,11 +20,11 @@
|
|
20
20
|
<% end %>
|
21
21
|
<% end %>
|
22
22
|
|
23
|
-
<% if
|
23
|
+
<% if allowed_to? :update, :component, component: component %>
|
24
24
|
<%= icon_link_to "cog", url_for(action: :edit, id: component, controller: "components"), t("actions.configure", scope: "decidim.admin"), class: "action-icon--configure" %>
|
25
25
|
<% end %>
|
26
26
|
|
27
|
-
<% if
|
27
|
+
<% if allowed_to? :update, :component, component: component %>
|
28
28
|
<% if component.manifest.actions.empty? %>
|
29
29
|
<%= icon "key", class: "action-icon action-icon--disabled" %>
|
30
30
|
<% else %>
|
@@ -32,6 +32,8 @@
|
|
32
32
|
<% end %>
|
33
33
|
<% end %>
|
34
34
|
|
35
|
-
|
35
|
+
<% if allowed_to? :destroy, :component, component: component %>
|
36
|
+
<%= icon_link_to "circle-x", url_for(action: :destroy, id: component, controller: "components"), t("actions.destroy", scope: "decidim.admin"), class: "action-icon--remove", method: :delete %>
|
37
|
+
<% end %>
|
36
38
|
</td>
|
37
39
|
</tr>
|
@@ -17,12 +17,12 @@
|
|
17
17
|
<div class="card-section">
|
18
18
|
<%= form.fields_for :settings, form.object.settings do |settings_fields| %>
|
19
19
|
<%= render partial: "decidim/admin/components/settings_fields",
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
20
|
+
locals: {
|
21
|
+
form: settings_fields,
|
22
|
+
component: @component,
|
23
|
+
settings_name: "global",
|
24
|
+
tabs_prefix: "global-settings"
|
25
|
+
} %>
|
26
26
|
<% end %>
|
27
27
|
</div>
|
28
28
|
</div>
|
@@ -47,7 +47,9 @@
|
|
47
47
|
<div class="card-divider">
|
48
48
|
<h2 class="card-title">
|
49
49
|
<%= t "decidim.admin.titles.impersonatable_users" %>
|
50
|
-
|
50
|
+
<% if allowed_to? :impersonate, :impersonatable_user, user: new_managed_user %>
|
51
|
+
<%= link_to t(".impersonate_new_managed_user"), new_impersonatable_user_impersonation_path(:new_managed_user), class: "button tiny button--title #{'disabled' if current_organization.available_authorizations.empty?}" %>
|
52
|
+
<% end %>
|
51
53
|
</h2>
|
52
54
|
</div>
|
53
55
|
<div class="card-section">
|
@@ -66,11 +68,11 @@
|
|
66
68
|
<td><%= user.name %></td>
|
67
69
|
<td><%= user.managed? ? t(".managed") : t(".not_managed") %></td>
|
68
70
|
<td class="table-list__actions">
|
69
|
-
<% if
|
71
|
+
<% if allowed_to? :impersonate, :impersonatable_user, user: user %>
|
70
72
|
<%= icon_link_to "account-login", new_impersonatable_user_impersonation_path(user), t(".impersonate"), class: "action-icon--impersonate" %>
|
71
73
|
<% end %>
|
72
74
|
<%= icon_link_to "clock", impersonatable_user_impersonation_logs_path(user), t(".view_logs"), class: "action-icon--view-logs" %>
|
73
|
-
<% if
|
75
|
+
<% if allowed_to? :promote, :impersonatable_user, user: user %>
|
74
76
|
<%= icon_link_to "badge", new_impersonatable_user_promotion_path(user), t(".promote"), class: "action-icon--promote" %>
|
75
77
|
<% end %>
|
76
78
|
</td>
|
@@ -51,14 +51,14 @@
|
|
51
51
|
<% end %>
|
52
52
|
<td class="actions">
|
53
53
|
|
54
|
-
<% if
|
54
|
+
<% if allowed_to?(:unreport, :moderation) %>
|
55
55
|
<%= icon_link_to "action-undo",
|
56
56
|
unreport_moderation_path(id: moderation),
|
57
57
|
t("actions.unreport", scope: "decidim.moderations"),
|
58
58
|
class: "action-icon--unreport",
|
59
59
|
method: :put %>
|
60
60
|
<% end %>
|
61
|
-
<% if !moderation.reportable.hidden? &&
|
61
|
+
<% if !moderation.reportable.hidden? && allowed_to?(:hide, :moderation) %>
|
62
62
|
<%= icon_link_to "eye",
|
63
63
|
hide_moderation_path(id: moderation),
|
64
64
|
t("actions.hide", scope: "decidim.moderations"),
|
@@ -2,7 +2,9 @@
|
|
2
2
|
<div class="card-divider">
|
3
3
|
<h2 class="card-title">
|
4
4
|
<%= t ".title" %>
|
5
|
-
|
5
|
+
<% if allowed_to? :create, :newsletter %>
|
6
|
+
<%= link_to t("actions.new", scope: "decidim.admin", name: t("models.newsletter.name", scope: "decidim.admin").downcase), ["new", "newsletter"], class: "button tiny button--title new" %>
|
7
|
+
<% end %>
|
6
8
|
</h2>
|
7
9
|
</div>
|
8
10
|
<div class="card-section">
|
@@ -29,13 +31,13 @@
|
|
29
31
|
<% end %>
|
30
32
|
</td>
|
31
33
|
<td class="table-list__actions">
|
32
|
-
<% if
|
34
|
+
<% if allowed_to?(:update, :newsletter, newsletter: newsletter) && !newsletter.sent? %>
|
33
35
|
<%= icon_link_to "pencil", decidim_admin.edit_newsletter_path(newsletter), t("actions.edit", scope: "decidim.admin"), class: "edit" %>
|
34
36
|
<% end %>
|
35
37
|
|
36
38
|
<%= icon_link_to "eye", decidim_admin.newsletter_path(newsletter), t("actions.preview", scope: "decidim.admin"), class: "preview" %>
|
37
39
|
|
38
|
-
<% if
|
40
|
+
<% if allowed_to?(:destroy, :newsletter, newsletter: newsletter) && !newsletter.sent? %>
|
39
41
|
<%= icon_link_to "circle-x", decidim_admin.newsletter_path(newsletter), t("actions.destroy", scope: "decidim.admin"), method: :delete, data: { confirm: t(".confirm_delete") }, class: "action-icon--remove" %>
|
40
42
|
<% end %>
|
41
43
|
</td>
|