decidim-admin 0.31.8 → 0.32.0.rc1
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.
- checksums.yaml +4 -4
- data/README.md +2 -12
- data/app/cells/decidim/admin/attachments_privacy_warning/show.erb +1 -1
- data/app/cells/decidim/admin/attachments_privacy_warning_cell.rb +2 -6
- data/app/commands/decidim/admin/content_blocks/reorder_content_blocks.rb +1 -1
- data/app/commands/decidim/admin/create_newsletter.rb +1 -1
- data/app/commands/decidim/admin/create_taxonomy_filter.rb +2 -16
- data/app/commands/decidim/admin/participatory_space/create_member.rb +99 -0
- data/app/commands/decidim/admin/participatory_space/destroy_member.rb +30 -0
- data/app/commands/decidim/admin/participatory_space/import_member_csv.rb +46 -0
- data/app/commands/decidim/admin/participatory_space/publish_all_members.rb +52 -0
- data/app/commands/decidim/admin/participatory_space/unpublish_all_members.rb +52 -0
- data/app/commands/decidim/admin/participatory_space/update_member.rb +13 -0
- data/app/commands/decidim/admin/reorder_components.rb +1 -1
- data/app/commands/decidim/admin/reorder_taxonomies.rb +1 -1
- data/app/commands/decidim/admin/update_organization.rb +1 -1
- data/app/commands/decidim/admin/update_taxonomy_filter.rb +6 -24
- data/app/controllers/concerns/decidim/admin/component_taxonomies_helper.rb +1 -1
- data/app/controllers/concerns/decidim/admin/content_blocks/landing_page.rb +6 -5
- data/app/controllers/concerns/decidim/admin/content_blocks/landing_page_content_blocks.rb +3 -2
- data/app/controllers/concerns/decidim/admin/filterable.rb +4 -4
- data/app/controllers/concerns/decidim/admin/global_moderation_context.rb +0 -2
- data/app/controllers/concerns/decidim/admin/participatory_space_admin_context.rb +1 -2
- data/app/controllers/concerns/decidim/admin/participatory_space_export.rb +1 -3
- data/app/controllers/decidim/admin/admin_terms_controller.rb +0 -1
- data/app/controllers/decidim/admin/application_controller.rb +0 -2
- data/app/controllers/decidim/admin/area_types_controller.rb +2 -2
- data/app/controllers/decidim/admin/areas_controller.rb +3 -2
- data/app/controllers/decidim/admin/block_user_controller.rb +2 -6
- data/app/controllers/decidim/admin/component_permissions_controller.rb +1 -1
- data/app/controllers/decidim/admin/components/base_controller.rb +3 -4
- data/app/controllers/decidim/admin/components_controller.rb +5 -4
- data/app/controllers/decidim/admin/concerns/has_attachment_collections.rb +2 -4
- data/app/controllers/decidim/admin/concerns/has_attachments.rb +2 -4
- data/app/controllers/decidim/admin/concerns/has_breadcrumb_items.rb +0 -4
- data/app/controllers/decidim/admin/conflicts_controller.rb +6 -6
- data/app/controllers/decidim/admin/exports_controller.rb +1 -1
- data/app/controllers/decidim/admin/global_moderations/reports_controller.rb +0 -2
- data/app/controllers/decidim/admin/global_moderations_controller.rb +0 -2
- data/app/controllers/decidim/admin/help_sections_controller.rb +3 -3
- data/app/controllers/decidim/admin/impersonations_controller.rb +2 -3
- data/app/controllers/decidim/admin/imports_controller.rb +2 -1
- data/app/controllers/decidim/admin/managed_users/impersonation_logs_controller.rb +1 -1
- data/app/controllers/decidim/admin/managed_users/promotions_controller.rb +1 -1
- data/app/controllers/decidim/admin/moderated_users_controller.rb +0 -3
- data/app/controllers/decidim/admin/moderations_controller.rb +0 -4
- data/app/controllers/decidim/admin/newsletter_templates_controller.rb +1 -4
- data/app/controllers/decidim/admin/newsletters_controller.rb +9 -12
- data/app/controllers/decidim/admin/officializations_controller.rb +0 -2
- data/app/controllers/decidim/admin/organization_appearance_controller.rb +1 -1
- data/app/controllers/decidim/admin/organization_controller.rb +30 -1
- data/app/controllers/decidim/admin/organization_external_domain_allowlist_controller.rb +1 -1
- data/app/controllers/decidim/admin/organization_homepage_controller.rb +3 -7
- data/app/controllers/decidim/admin/participatory_space/concerns/has_members.rb +166 -0
- data/app/controllers/decidim/admin/participatory_space/concerns/has_members_csv_import.rb +67 -0
- data/app/controllers/decidim/admin/participatory_space/concerns/members_filterable.rb +36 -0
- data/app/controllers/decidim/admin/participatory_space/user_role_controller.rb +2 -2
- data/app/controllers/decidim/admin/reminders_controller.rb +1 -1
- data/app/controllers/decidim/admin/resource_permissions_controller.rb +1 -5
- data/app/controllers/decidim/admin/scope_types_controller.rb +2 -2
- data/app/controllers/decidim/admin/scopes_controller.rb +3 -2
- data/app/controllers/decidim/admin/share_tokens_controller.rb +2 -2
- data/app/controllers/decidim/admin/space_publications_controller.rb +2 -2
- data/app/controllers/decidim/admin/static_page_topics_controller.rb +2 -2
- data/app/controllers/decidim/admin/static_pages_controller.rb +27 -29
- data/app/controllers/decidim/admin/taxonomies_controller.rb +3 -3
- data/app/controllers/decidim/admin/taxonomy_filters_controller.rb +5 -5
- data/app/controllers/decidim/admin/taxonomy_filters_selector_controller.rb +1 -1
- data/app/controllers/decidim/admin/taxonomy_items_controller.rb +3 -3
- data/app/controllers/decidim/admin/users_controller.rb +1 -1
- data/app/forms/decidim/admin/content_block_form.rb +28 -1
- data/app/forms/decidim/admin/organization_form.rb +0 -1
- data/app/forms/decidim/admin/participatory_space/member_csv_import_form.rb +33 -0
- data/app/forms/decidim/admin/participatory_space/member_form.rb +26 -0
- data/app/forms/decidim/admin/participatory_space_admin_user_form.rb +1 -1
- data/app/forms/decidim/admin/selective_newsletter_form.rb +7 -7
- data/app/forms/decidim/admin/taxonomy_filter_form.rb +10 -11
- data/app/helpers/decidim/admin/newsletters_helper.rb +8 -5
- data/app/helpers/decidim/admin/search_form_helper.rb +17 -0
- data/app/helpers/decidim/admin/settings_helper.rb +2 -0
- data/app/jobs/decidim/admin/newsletter_job.rb +2 -1
- data/app/jobs/decidim/admin/participatory_space/destroy_members_follows_job.rb +36 -0
- data/app/jobs/decidim/admin/participatory_space/import_member_csv_job.rb +29 -0
- data/app/packs/src/decidim/admin/admin_autocomplete.js +10 -16
- data/app/packs/src/decidim/admin/controllers/access_mode/access_mode.test.js +68 -0
- data/app/packs/src/decidim/admin/controllers/access_mode/controller.js +52 -0
- data/app/packs/src/decidim/admin/newsletters.js +2 -2
- data/app/packs/stylesheets/decidim/admin/_datepicker.scss +0 -4
- data/app/packs/stylesheets/decidim/admin/_sidebar-menu.scss +1 -3
- data/app/packs/stylesheets/decidim/admin/application.scss +1 -1
- data/app/permissions/decidim/admin/permissions.rb +0 -16
- data/app/queries/decidim/admin/newsletter_recipients.rb +8 -8
- data/app/views/decidim/admin/admin_terms/show.html.erb +3 -1
- data/app/views/decidim/admin/area_types/index.html.erb +3 -2
- data/app/views/decidim/admin/areas/index.html.erb +3 -2
- data/app/views/decidim/admin/attachment_collections/edit.html.erb +2 -2
- data/app/views/decidim/admin/attachment_collections/index.html.erb +3 -3
- data/app/views/decidim/admin/attachment_collections/new.html.erb +2 -2
- data/app/views/decidim/admin/attachments/index.html.erb +3 -2
- data/app/views/decidim/admin/authorization_workflows/index.html.erb +2 -2
- data/app/views/decidim/admin/block_user/new.html.erb +1 -0
- data/app/views/decidim/admin/components/_actions.html.erb +1 -1
- data/app/views/decidim/admin/components/index.html.erb +2 -2
- data/app/views/decidim/admin/components/manage_trash.html.erb +2 -2
- data/app/views/decidim/admin/conflicts/edit.html.erb +3 -1
- data/app/views/decidim/admin/conflicts/index.html.erb +3 -2
- data/app/views/decidim/admin/dashboard/show.html.erb +4 -4
- data/app/views/decidim/admin/help_sections/update.html.erb +2 -0
- data/app/views/decidim/admin/impersonatable_users/index.html.erb +3 -2
- data/app/views/decidim/admin/impersonations/_form.html.erb +2 -2
- data/app/views/decidim/admin/impersonations/new.html.erb +3 -2
- data/app/views/decidim/admin/imports/new.html.erb +1 -0
- data/app/views/decidim/admin/logs/_logs_list.html.erb +1 -1
- data/app/views/decidim/admin/logs/index.html.erb +1 -1
- data/app/views/decidim/admin/managed_users/impersonation_logs/index.html.erb +6 -5
- data/app/views/decidim/admin/managed_users/promotions/new.html.erb +3 -2
- data/app/views/decidim/admin/{participatory_space_private_users → members}/edit.html.erb +2 -2
- data/app/views/decidim/admin/{participatory_space_private_users → members}/index.html.erb +25 -25
- data/app/views/decidim/admin/{participatory_space_private_users → members}/new.html.erb +2 -2
- data/app/views/decidim/admin/{participatory_space_private_users_csv_imports → members_csv_imports}/new.html.erb +2 -2
- data/app/views/decidim/admin/moderations/_moderation-tr.html.erb +3 -7
- data/app/views/decidim/admin/moderations/_moderations-thead.html.erb +0 -1
- data/app/views/decidim/admin/moderations/reports/index.html.erb +1 -1
- data/app/views/decidim/admin/newsletter_templates/show.html.erb +3 -2
- data/app/views/decidim/admin/newsletters/confirm_recipients.html.erb +4 -6
- data/app/views/decidim/admin/newsletters/index.html.erb +2 -2
- data/app/views/decidim/admin/newsletters/select_recipients_to_deliver.html.erb +2 -2
- data/app/views/decidim/admin/newsletters/show.html.erb +3 -2
- data/app/views/decidim/admin/officializations/index.html.erb +6 -4
- data/app/views/decidim/admin/officializations/show_email.html.erb +3 -7
- data/app/views/decidim/admin/organization/form/_extra_features.html.erb +2 -22
- data/app/views/decidim/admin/organization_external_domain_allowlist/_form.html.erb +2 -2
- data/app/views/decidim/admin/organization_external_domain_allowlist/edit.html.erb +2 -2
- data/app/views/decidim/admin/reminders/new.html.erb +8 -1
- data/app/views/decidim/admin/resource_permissions/edit.html.erb +2 -2
- data/app/views/decidim/admin/scope_types/index.html.erb +3 -2
- data/app/views/decidim/admin/scopes/index.html.erb +2 -2
- data/app/views/decidim/admin/share_tokens/index.html.erb +2 -0
- data/app/views/decidim/admin/shared/_gallery.html.erb +15 -0
- data/app/views/decidim/admin/shared/landing_page/_content_blocks.html.erb +0 -2
- data/app/views/decidim/admin/shared/landing_page/edit.html.erb +2 -0
- data/app/views/decidim/admin/shared/landing_page_content_blocks/edit.html.erb +1 -0
- data/app/views/decidim/admin/static_page_topics/index.html.erb +2 -2
- data/app/views/decidim/admin/static_pages/edit.html.erb +2 -1
- data/app/views/decidim/admin/static_pages/index.html.erb +2 -2
- data/app/views/decidim/admin/statistics/_statistics.html.erb +1 -1
- data/app/views/decidim/admin/statistics/index.html.erb +2 -0
- data/app/views/decidim/admin/taxonomies/_row.html.erb +1 -1
- data/app/views/decidim/admin/taxonomies/_row_children.html.erb +1 -1
- data/app/views/decidim/admin/taxonomies/_table.html.erb +1 -1
- data/app/views/decidim/admin/taxonomies/edit.html.erb +2 -2
- data/app/views/decidim/admin/taxonomies/index.html.erb +4 -4
- data/app/views/decidim/admin/taxonomy_filters/_table.html.erb +2 -2
- data/app/views/decidim/admin/taxonomy_filters/index.html.erb +2 -2
- data/app/views/decidim/admin/taxonomy_filters_selector/index.html.erb +2 -0
- data/app/views/decidim/admin/taxonomy_filters_selector/new.html.erb +2 -0
- data/app/views/decidim/admin/taxonomy_filters_selector/show.html.erb +2 -0
- data/app/views/decidim/admin/taxonomy_items/edit.html.erb +2 -0
- data/app/views/decidim/admin/taxonomy_items/new.html.erb +2 -0
- data/app/views/decidim/admin/users/index.html.erb +3 -2
- data/app/views/layouts/decidim/admin/_application.html.erb +1 -1
- data/config/locales/ar.yml +9 -49
- data/config/locales/bg.yml +9 -57
- data/config/locales/bs-BA.yml +4 -24
- data/config/locales/ca-IT.yml +130 -117
- data/config/locales/ca.yml +130 -117
- data/config/locales/cs.yml +126 -116
- data/config/locales/de.yml +114 -123
- data/config/locales/el.yml +17 -45
- data/config/locales/en.yml +130 -116
- data/config/locales/eo.yml +0 -7
- data/config/locales/es-MX.yml +130 -117
- data/config/locales/es-PY.yml +130 -117
- data/config/locales/es.yml +130 -117
- data/config/locales/eu.yml +189 -176
- data/config/locales/fi-plain.yml +129 -116
- data/config/locales/fi.yml +129 -116
- data/config/locales/fr-CA.yml +91 -149
- data/config/locales/fr.yml +91 -149
- data/config/locales/ga-IE.yml +0 -13
- data/config/locales/gl.yml +57 -649
- data/config/locales/he-IL.yml +1 -5
- data/config/locales/hu.yml +10 -52
- data/config/locales/id-ID.yml +4 -34
- data/config/locales/is-IS.yml +1 -16
- data/config/locales/it.yml +8 -69
- data/config/locales/ja.yml +129 -118
- data/config/locales/kaa.yml +4 -16
- data/config/locales/ko.yml +6 -40
- data/config/locales/lb.yml +9 -41
- data/config/locales/lt.yml +10 -52
- data/config/locales/lv.yml +8 -38
- data/config/locales/nl.yml +10 -46
- data/config/locales/no.yml +10 -46
- data/config/locales/pl.yml +9 -54
- data/config/locales/pt-BR.yml +121 -104
- data/config/locales/pt.yml +9 -42
- data/config/locales/ro-RO.yml +15 -51
- data/config/locales/ru.yml +4 -35
- data/config/locales/sk.yml +8 -814
- data/config/locales/sl.yml +1 -7
- data/config/locales/sq-AL.yml +1 -21
- data/config/locales/sr-CS.yml +4 -24
- data/config/locales/sv.yml +80 -121
- data/config/locales/th-TH.yml +0 -8
- data/config/locales/tr-TR.yml +33 -93
- data/config/locales/uk.yml +0 -26
- data/config/locales/val-ES.yml +0 -1
- data/config/locales/zh-CN.yml +9 -38
- data/config/locales/zh-TW.yml +10 -52
- data/config/routes.rb +4 -0
- data/decidim-admin.gemspec +7 -10
- data/lib/decidim/admin/engine.rb +5 -2
- data/lib/decidim/admin/form_builder.rb +3 -1
- data/lib/decidim/admin/menu.rb +1 -1
- data/lib/decidim/admin/test/admin_members_shared_examples.rb +119 -0
- data/lib/decidim/admin/test/admin_participatory_space_access_examples.rb +3 -3
- data/lib/decidim/admin/test/filterable_examples.rb +20 -11
- data/lib/decidim/admin/test/invite_participatory_space_admins_shared_examples.rb +17 -17
- data/lib/decidim/admin/test/invite_participatory_space_collaborators_shared_examples.rb +1 -1
- data/lib/decidim/admin/test/invite_participatory_space_moderators_shared_examples.rb +1 -1
- data/lib/decidim/admin/test/invite_participatory_space_users_shared_context.rb +1 -1
- data/lib/decidim/admin/test/manage_attachment_collections_examples.rb +3 -3
- data/lib/decidim/admin/test/manage_attachments_examples.rb +6 -6
- data/lib/decidim/admin/test/manage_component_permissions_examples.rb +5 -5
- data/lib/decidim/admin/test/manage_moderations_examples.rb +6 -6
- data/lib/decidim/admin/test/manage_participatory_space_publications_examples.rb +2 -2
- data/lib/decidim/admin/test/manage_resource_soft_deletion_examples.rb +3 -3
- data/lib/decidim/admin/version.rb +1 -1
- data/lib/decidim/admin.rb +0 -2
- metadata +40 -36
- data/app/commands/decidim/admin/create_participatory_space_private_user.rb +0 -98
- data/app/commands/decidim/admin/destroy_participatory_space_private_user.rb +0 -28
- data/app/commands/decidim/admin/process_participatory_space_private_user_import_csv.rb +0 -44
- data/app/commands/decidim/admin/publish_all_participatory_space_private_users.rb +0 -50
- data/app/commands/decidim/admin/unpublish_all_participatory_space_private_users.rb +0 -50
- data/app/commands/decidim/admin/update_participatory_space_private_user.rb +0 -11
- data/app/controllers/concerns/decidim/participatory_space_private_users/admin/filterable.rb +0 -34
- data/app/controllers/decidim/admin/concerns/has_private_users.rb +0 -173
- data/app/controllers/decidim/admin/concerns/has_private_users_csv_import.rb +0 -67
- data/app/forms/decidim/admin/participatory_space_private_user_csv_import_form.rb +0 -31
- data/app/forms/decidim/admin/participatory_space_private_user_form.rb +0 -24
- data/app/jobs/decidim/admin/destroy_private_users_follows_job.rb +0 -37
- data/app/jobs/decidim/admin/import_participatory_space_private_user_csv_job.rb +0 -27
- data/app/views/decidim/admin/devise/mailers/password_change.html.erb +0 -3
- data/app/views/decidim/admin/devise/mailers/reset_password_instructions.html.erb +0 -8
- data/app/views/decidim/admin/shared/_attachments.html.erb +0 -15
- /data/app/views/decidim/admin/{participatory_space_private_users → members}/_form.html.erb +0 -0
|
@@ -34,7 +34,7 @@ module Decidim
|
|
|
34
34
|
|
|
35
35
|
on(:invalid) do
|
|
36
36
|
flash.now[:alert] = I18n.t("area_types.create.error", scope: "decidim.admin")
|
|
37
|
-
render :new, status: :
|
|
37
|
+
render :new, status: :unprocessable_content
|
|
38
38
|
end
|
|
39
39
|
end
|
|
40
40
|
end
|
|
@@ -56,7 +56,7 @@ module Decidim
|
|
|
56
56
|
|
|
57
57
|
on(:invalid) do
|
|
58
58
|
flash.now[:alert] = I18n.t("area_types.update.error", scope: "decidim.admin")
|
|
59
|
-
render :edit, status: :
|
|
59
|
+
render :edit, status: :unprocessable_content
|
|
60
60
|
end
|
|
61
61
|
end
|
|
62
62
|
end
|
|
@@ -6,6 +6,7 @@ module Decidim
|
|
|
6
6
|
#
|
|
7
7
|
class AreasController < Decidim::Admin::ApplicationController
|
|
8
8
|
include Decidim::Admin::Concerns::HasTabbedMenu
|
|
9
|
+
|
|
9
10
|
helper Decidim::Admin::AreasHelper
|
|
10
11
|
|
|
11
12
|
layout "decidim/admin/settings"
|
|
@@ -35,7 +36,7 @@ module Decidim
|
|
|
35
36
|
|
|
36
37
|
on(:invalid) do
|
|
37
38
|
flash.now[:alert] = I18n.t("areas.create.error", scope: "decidim.admin")
|
|
38
|
-
render :new, status: :
|
|
39
|
+
render :new, status: :unprocessable_content
|
|
39
40
|
end
|
|
40
41
|
end
|
|
41
42
|
end
|
|
@@ -57,7 +58,7 @@ module Decidim
|
|
|
57
58
|
|
|
58
59
|
on(:invalid) do
|
|
59
60
|
flash.now[:alert] = I18n.t("areas.update.error", scope: "decidim.admin")
|
|
60
|
-
render :edit, status: :
|
|
61
|
+
render :edit, status: :unprocessable_content
|
|
61
62
|
end
|
|
62
63
|
end
|
|
63
64
|
end
|
|
@@ -10,8 +10,6 @@ module Decidim
|
|
|
10
10
|
def new
|
|
11
11
|
enforce_permission_to :block, :admin_user
|
|
12
12
|
|
|
13
|
-
return redirect_to(officializations_path, alert: I18n.t("officializations.block.no_user", scope: "decidim.admin")) unless user
|
|
14
|
-
|
|
15
13
|
@form = form(BlockUserForm).from_model(user)
|
|
16
14
|
@form.hide = params[:hide] || false
|
|
17
15
|
end
|
|
@@ -29,7 +27,7 @@ module Decidim
|
|
|
29
27
|
|
|
30
28
|
on(:invalid) do
|
|
31
29
|
flash[:alert] = I18n.t("officializations.block.error", scope: "decidim.admin")
|
|
32
|
-
render :new, status: :
|
|
30
|
+
render :new, status: :unprocessable_content
|
|
33
31
|
end
|
|
34
32
|
end
|
|
35
33
|
end
|
|
@@ -57,7 +55,6 @@ module Decidim
|
|
|
57
55
|
end
|
|
58
56
|
|
|
59
57
|
def bulk_create
|
|
60
|
-
enforce_permission_to :block, :admin_user
|
|
61
58
|
@form = form(BlockUsersForm).from_params(params)
|
|
62
59
|
|
|
63
60
|
Admin::BulkBlockUsers.call(@form) do
|
|
@@ -68,13 +65,12 @@ module Decidim
|
|
|
68
65
|
|
|
69
66
|
on(:invalid) do
|
|
70
67
|
flash.now[:alert] = I18n.t("officializations.bulk_action.block.invalid", scope: "decidim.admin")
|
|
71
|
-
render :bulk_new, status: :
|
|
68
|
+
render :bulk_new, status: :unprocessable_content
|
|
72
69
|
end
|
|
73
70
|
end
|
|
74
71
|
end
|
|
75
72
|
|
|
76
73
|
def bulk_destroy
|
|
77
|
-
enforce_permission_to :block, :admin_user
|
|
78
74
|
Admin::BulkUnblockUsers.call(blocked_users, current_user) do
|
|
79
75
|
on(:ok) do
|
|
80
76
|
flash[:notice] = I18n.t("officializations.bulk_action.unblock.success", scope: "decidim.admin")
|
|
@@ -10,6 +10,7 @@ module Decidim
|
|
|
10
10
|
|
|
11
11
|
include Decidim::Admin::ParticipatorySpaceAdminContext
|
|
12
12
|
include Decidim::NeedsPermission
|
|
13
|
+
|
|
13
14
|
participatory_space_admin_layout
|
|
14
15
|
|
|
15
16
|
helper Decidim::ResourceHelper
|
|
@@ -25,7 +26,7 @@ module Decidim
|
|
|
25
26
|
|
|
26
27
|
before_action :enforce_component_permissions
|
|
27
28
|
|
|
28
|
-
before_action :
|
|
29
|
+
before_action :set_breadcrumb_items
|
|
29
30
|
|
|
30
31
|
def permissions_context
|
|
31
32
|
super.merge(
|
|
@@ -71,9 +72,7 @@ module Decidim
|
|
|
71
72
|
end
|
|
72
73
|
end
|
|
73
74
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
def set_component_breadcrumb_item
|
|
75
|
+
def set_breadcrumb_items
|
|
77
76
|
context_breadcrumb_items << {
|
|
78
77
|
label: t("components", scope: "decidim.admin.menu"),
|
|
79
78
|
url: parent_path,
|
|
@@ -7,6 +7,7 @@ module Decidim
|
|
|
7
7
|
#
|
|
8
8
|
class ComponentsController < Decidim::Admin::ApplicationController
|
|
9
9
|
include Decidim::Admin::HasTrashableResources
|
|
10
|
+
|
|
10
11
|
helper_method :manifest
|
|
11
12
|
|
|
12
13
|
def index
|
|
@@ -47,7 +48,7 @@ module Decidim
|
|
|
47
48
|
|
|
48
49
|
on(:invalid) do
|
|
49
50
|
flash.now[:alert] = I18n.t("components.create.error", scope: "decidim.admin")
|
|
50
|
-
render action: "new", status: :
|
|
51
|
+
render action: "new", status: :unprocessable_content
|
|
51
52
|
end
|
|
52
53
|
end
|
|
53
54
|
end
|
|
@@ -74,7 +75,7 @@ module Decidim
|
|
|
74
75
|
|
|
75
76
|
on(:invalid) do
|
|
76
77
|
flash[:alert] = I18n.t("components.update.error", scope: "decidim.admin")
|
|
77
|
-
render action: :edit, status: :
|
|
78
|
+
render action: :edit, status: :unprocessable_content
|
|
78
79
|
end
|
|
79
80
|
end
|
|
80
81
|
end
|
|
@@ -86,7 +87,7 @@ module Decidim
|
|
|
86
87
|
|
|
87
88
|
Decidim::Commands::SoftDeleteResource.call(trashable_deleted_resource, current_user) do
|
|
88
89
|
on(:ok) do
|
|
89
|
-
Decidim::Reminder.where(component: resource).destroy_all
|
|
90
|
+
Decidim::Reminder.where(component: resource).destroy_all
|
|
90
91
|
flash[:notice] = I18n.t("soft_delete.success", scope: trashable_i18n_scope, resource_name: human_readable_resource_name.capitalize)
|
|
91
92
|
redirect_to_resource_index
|
|
92
93
|
end
|
|
@@ -135,9 +136,9 @@ module Decidim
|
|
|
135
136
|
end
|
|
136
137
|
|
|
137
138
|
def share
|
|
138
|
-
enforce_permission_to :share, :component
|
|
139
139
|
@component = query_scope.find(params[:id])
|
|
140
140
|
share_token = @component.share_tokens.create!(user: current_user, organization: current_organization)
|
|
141
|
+
|
|
141
142
|
redirect_to share_token.url
|
|
142
143
|
end
|
|
143
144
|
|
|
@@ -39,7 +39,7 @@ module Decidim
|
|
|
39
39
|
|
|
40
40
|
on(:invalid) do
|
|
41
41
|
flash.now[:alert] = I18n.t("attachment_collections.create.error", scope: "decidim.admin")
|
|
42
|
-
render template: "decidim/admin/attachment_collections/new", status: :
|
|
42
|
+
render template: "decidim/admin/attachment_collections/new", status: :unprocessable_content
|
|
43
43
|
end
|
|
44
44
|
end
|
|
45
45
|
end
|
|
@@ -64,7 +64,7 @@ module Decidim
|
|
|
64
64
|
|
|
65
65
|
on(:invalid) do
|
|
66
66
|
flash.now[:alert] = I18n.t("attachment_collections.update.error", scope: "decidim.admin")
|
|
67
|
-
render template: "decidim/admin/attachment_collections/edit", status: :
|
|
67
|
+
render template: "decidim/admin/attachment_collections/edit", status: :unprocessable_content
|
|
68
68
|
end
|
|
69
69
|
end
|
|
70
70
|
end
|
|
@@ -82,8 +82,6 @@ module Decidim
|
|
|
82
82
|
redirect_to after_destroy_path
|
|
83
83
|
end
|
|
84
84
|
|
|
85
|
-
protected
|
|
86
|
-
|
|
87
85
|
# Public: Returns a String or Object that will be passed to `redirect_to` after
|
|
88
86
|
# destroying an attachment collection. By default it redirects to the object
|
|
89
87
|
# that holds the attachment collection.
|
|
@@ -39,7 +39,7 @@ module Decidim
|
|
|
39
39
|
|
|
40
40
|
on(:invalid) do
|
|
41
41
|
flash.now[:alert] = I18n.t("attachments.create.error", scope: "decidim.admin")
|
|
42
|
-
render template: "decidim/admin/attachments/new", status: :
|
|
42
|
+
render template: "decidim/admin/attachments/new", status: :unprocessable_content
|
|
43
43
|
end
|
|
44
44
|
end
|
|
45
45
|
end
|
|
@@ -64,7 +64,7 @@ module Decidim
|
|
|
64
64
|
|
|
65
65
|
on(:invalid) do
|
|
66
66
|
flash.now[:alert] = I18n.t("attachments.update.error", scope: "decidim.admin")
|
|
67
|
-
render template: "decidim/admin/attachments/edit", status: :
|
|
67
|
+
render template: "decidim/admin/attachments/edit", status: :unprocessable_content
|
|
68
68
|
end
|
|
69
69
|
end
|
|
70
70
|
end
|
|
@@ -82,8 +82,6 @@ module Decidim
|
|
|
82
82
|
redirect_to after_destroy_path
|
|
83
83
|
end
|
|
84
84
|
|
|
85
|
-
protected
|
|
86
|
-
|
|
87
85
|
# Public: Returns a String or Object that will be passed to `redirect_to` after
|
|
88
86
|
# destroying an attachment. By default it redirects to the attached_to.
|
|
89
87
|
#
|
|
@@ -7,16 +7,12 @@ module Decidim
|
|
|
7
7
|
extend ActiveSupport::Concern
|
|
8
8
|
|
|
9
9
|
class_methods do
|
|
10
|
-
protected
|
|
11
|
-
|
|
12
10
|
def add_breadcrumb_item_from_menu(target_menu, opts = {})
|
|
13
11
|
before_action -> { secondary_breadcrumb_menus << target_menu }, opts
|
|
14
12
|
end
|
|
15
13
|
end
|
|
16
14
|
|
|
17
15
|
included do
|
|
18
|
-
protected
|
|
19
|
-
|
|
20
16
|
def secondary_breadcrumb_menus
|
|
21
17
|
@secondary_breadcrumb_menus ||= []
|
|
22
18
|
end
|
|
@@ -18,6 +18,8 @@ module Decidim
|
|
|
18
18
|
def edit
|
|
19
19
|
enforce_permission_to :index, :impersonatable_user
|
|
20
20
|
|
|
21
|
+
conflict = Decidim::Verifications::Conflict.find(params[:id])
|
|
22
|
+
|
|
21
23
|
@form = form(TransferUserForm).from_params(
|
|
22
24
|
user: conflict.current_user,
|
|
23
25
|
managed_user: conflict.managed_user,
|
|
@@ -28,6 +30,8 @@ module Decidim
|
|
|
28
30
|
def update
|
|
29
31
|
enforce_permission_to :index, :impersonatable_user
|
|
30
32
|
|
|
33
|
+
conflict = Decidim::Verifications::Conflict.find(params[:id])
|
|
34
|
+
|
|
31
35
|
@form = form(TransferUserForm).from_params(
|
|
32
36
|
current_user:,
|
|
33
37
|
conflict:,
|
|
@@ -43,17 +47,13 @@ module Decidim
|
|
|
43
47
|
|
|
44
48
|
on(:invalid) do
|
|
45
49
|
flash.now[:alert] = I18n.t("error", scope: "decidim.admin.conflicts.transfer")
|
|
46
|
-
render action: "edit", status: :
|
|
50
|
+
render action: "edit", status: :unprocessable_content
|
|
47
51
|
end
|
|
48
52
|
end
|
|
49
53
|
end
|
|
50
54
|
|
|
51
55
|
private
|
|
52
56
|
|
|
53
|
-
def conflict
|
|
54
|
-
@conflict ||= collection.find(params.require(:id))
|
|
55
|
-
end
|
|
56
|
-
|
|
57
57
|
def context_breadcrumb_items
|
|
58
58
|
@context_breadcrumb_items ||= [impersonations_breadcrumb_item]
|
|
59
59
|
end
|
|
@@ -67,7 +67,7 @@ module Decidim
|
|
|
67
67
|
|
|
68
68
|
def collection
|
|
69
69
|
@collection ||= Decidim::Verifications::Conflict.joins(:current_user).where(
|
|
70
|
-
decidim_users: {
|
|
70
|
+
decidim_users: { decidim_organization_id: current_organization.id }
|
|
71
71
|
)
|
|
72
72
|
end
|
|
73
73
|
|
|
@@ -12,17 +12,17 @@ module Decidim
|
|
|
12
12
|
|
|
13
13
|
helper_method :sections
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
before_action do
|
|
16
16
|
enforce_permission_to :update, :help_sections
|
|
17
|
+
end
|
|
17
18
|
|
|
19
|
+
def show
|
|
18
20
|
@form = form(HelpSectionsForm).from_model(
|
|
19
21
|
OpenStruct.new(sections:)
|
|
20
22
|
)
|
|
21
23
|
end
|
|
22
24
|
|
|
23
25
|
def update
|
|
24
|
-
enforce_permission_to :update, :help_sections
|
|
25
|
-
|
|
26
26
|
@form = form(HelpSectionsForm).from_params(
|
|
27
27
|
params[:help_sections]
|
|
28
28
|
)
|
|
@@ -46,13 +46,12 @@ module Decidim
|
|
|
46
46
|
|
|
47
47
|
on(:invalid) do
|
|
48
48
|
flash.now[:alert] = I18n.t("impersonations.create.error", scope: "decidim.admin")
|
|
49
|
-
render :new, status: :
|
|
49
|
+
render :new, status: :unprocessable_content
|
|
50
50
|
end
|
|
51
51
|
end
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
def close_session
|
|
55
|
-
enforce_permission_to :close_session, :managed_user
|
|
56
55
|
CloseSessionManagedUser.call(user, current_user) do
|
|
57
56
|
on(:ok) do
|
|
58
57
|
flash[:notice] = I18n.t("impersonations.close_session.success", scope: "decidim.admin")
|
|
@@ -83,7 +82,7 @@ module Decidim
|
|
|
83
82
|
)
|
|
84
83
|
return nil unless handler.unique_id
|
|
85
84
|
|
|
86
|
-
existing_authorization = Authorization.find_by(
|
|
85
|
+
existing_authorization = Authorization.find_by(
|
|
87
86
|
user: User.where(organization: current_organization),
|
|
88
87
|
name: handler_name,
|
|
89
88
|
unique_id: handler.unique_id
|
|
@@ -5,6 +5,7 @@ module Decidim
|
|
|
5
5
|
# This controller allows admins to import resources from a file.
|
|
6
6
|
class ImportsController < Decidim::Admin::ApplicationController
|
|
7
7
|
include Decidim::ComponentPathHelper
|
|
8
|
+
|
|
8
9
|
before_action :set_import_breadcrumb_item
|
|
9
10
|
|
|
10
11
|
helper_method :import_manifest
|
|
@@ -39,7 +40,7 @@ module Decidim
|
|
|
39
40
|
|
|
40
41
|
on(:invalid) do
|
|
41
42
|
flash.now[:alert] = t("decidim.admin.imports.error")
|
|
42
|
-
render :new, status: :
|
|
43
|
+
render :new, status: :unprocessable_content
|
|
43
44
|
end
|
|
44
45
|
end
|
|
45
46
|
end
|
|
@@ -11,7 +11,7 @@ module Decidim
|
|
|
11
11
|
def index
|
|
12
12
|
enforce_permission_to :index, :impersonatable_user
|
|
13
13
|
|
|
14
|
-
@impersonation_logs = user.
|
|
14
|
+
@impersonation_logs = Decidim::ImpersonationLog.where(user:).order(started_at: :desc).page(params[:page]).per(15)
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
private
|
|
@@ -34,7 +34,6 @@ module Decidim
|
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
def bulk_unreport
|
|
37
|
-
enforce_permission_to :unreport, :moderate_users
|
|
38
37
|
Admin::BulkUnreportUsers.call(current_user, reportables) do
|
|
39
38
|
on(:ok) do
|
|
40
39
|
flash[:notice] = I18n.t("reportable.bulk_action.ignore.success", scope: "decidim.moderations.admin")
|
|
@@ -68,8 +67,6 @@ module Decidim
|
|
|
68
67
|
Decidim::Admin::ModerationStats.new(current_user).user_reports
|
|
69
68
|
end
|
|
70
69
|
|
|
71
|
-
protected
|
|
72
|
-
|
|
73
70
|
def collection
|
|
74
71
|
@collection ||= if params[:blocked]
|
|
75
72
|
base_query_finder.blocked
|
|
@@ -73,8 +73,6 @@ module Decidim
|
|
|
73
73
|
end
|
|
74
74
|
|
|
75
75
|
def bulk_action
|
|
76
|
-
enforce_permission_to :bulk_action, authorization_scope
|
|
77
|
-
|
|
78
76
|
Admin::BulkAction.call(current_user, params[:bulk_action], selected_moderations) do
|
|
79
77
|
on(:ok) do |ok, ko|
|
|
80
78
|
flash[:notice] = I18n.t("reportable.bulk_action.#{params[:bulk_action]}.success", scope: "decidim.moderations.admin", count_ok: ok.count) if ok.count.positive?
|
|
@@ -94,8 +92,6 @@ module Decidim
|
|
|
94
92
|
query_params[:q] || { s: "created_at desc" }
|
|
95
93
|
end
|
|
96
94
|
|
|
97
|
-
protected
|
|
98
|
-
|
|
99
95
|
# Private: This method is used by the `Filterable` concern as the base query
|
|
100
96
|
# without applying filtering and/or sorting options.
|
|
101
97
|
def collection
|
|
@@ -12,12 +12,9 @@ module Decidim
|
|
|
12
12
|
enforce_permission_to :index, :newsletter
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
def show
|
|
16
|
-
enforce_permission_to :index, :newsletter
|
|
17
|
-
end
|
|
15
|
+
def show; end
|
|
18
16
|
|
|
19
17
|
def preview
|
|
20
|
-
enforce_permission_to :index, :newsletter
|
|
21
18
|
email = NewsletterMailer.newsletter(current_user, fake_newsletter, true)
|
|
22
19
|
Premailer::Rails::Hook.perform(email)
|
|
23
20
|
render html: email.html_part.body.decoded.html_safe
|
|
@@ -7,6 +7,7 @@ module Decidim
|
|
|
7
7
|
include Decidim::NewslettersHelper
|
|
8
8
|
include Decidim::Admin::NewslettersHelper
|
|
9
9
|
include Paginable
|
|
10
|
+
|
|
10
11
|
helper_method :newsletter, :recipients_count_query, :content_block, :selected_options, :newsletter_params
|
|
11
12
|
|
|
12
13
|
def index
|
|
@@ -31,7 +32,7 @@ module Decidim
|
|
|
31
32
|
NewsletterMailer.newsletter(current_user, newsletter).deliver_later
|
|
32
33
|
flash[:notice] = I18n.t("newsletters.send_to_user.sent_successfully", scope: "decidim.admin", email: current_user.email)
|
|
33
34
|
|
|
34
|
-
|
|
35
|
+
redirect_back_or_to(newsletters_path)
|
|
35
36
|
end
|
|
36
37
|
|
|
37
38
|
def preview
|
|
@@ -44,7 +45,7 @@ module Decidim
|
|
|
44
45
|
|
|
45
46
|
def create
|
|
46
47
|
enforce_permission_to :create, :newsletter
|
|
47
|
-
@form = form(NewsletterForm).from_params(params)
|
|
48
|
+
@form = form(NewsletterForm).from_params(params, content_block:)
|
|
48
49
|
@form.images = images_block_context unless has_images_block_context?
|
|
49
50
|
|
|
50
51
|
CreateNewsletter.call(@form, content_block) do
|
|
@@ -55,9 +56,8 @@ module Decidim
|
|
|
55
56
|
|
|
56
57
|
on(:invalid) do |newsletter|
|
|
57
58
|
@newsletter = newsletter
|
|
58
|
-
@form.images = content_block.images_container
|
|
59
59
|
flash.now[:error] = I18n.t("newsletters.create.error", scope: "decidim.admin")
|
|
60
|
-
render action: :new, status: :
|
|
60
|
+
render action: :new, status: :unprocessable_content
|
|
61
61
|
end
|
|
62
62
|
end
|
|
63
63
|
end
|
|
@@ -69,7 +69,7 @@ module Decidim
|
|
|
69
69
|
|
|
70
70
|
def update
|
|
71
71
|
enforce_permission_to(:update, :newsletter, newsletter:)
|
|
72
|
-
@form = form(NewsletterForm).from_params(params)
|
|
72
|
+
@form = form(NewsletterForm).from_params(params, content_block:)
|
|
73
73
|
@form.images = images_block_context unless has_images_block_context?
|
|
74
74
|
|
|
75
75
|
UpdateNewsletter.call(newsletter, @form) do
|
|
@@ -81,7 +81,7 @@ module Decidim
|
|
|
81
81
|
on(:invalid) do |newsletter|
|
|
82
82
|
@newsletter = newsletter
|
|
83
83
|
flash.now[:error] = I18n.t("newsletters.update.error", scope: "decidim.admin")
|
|
84
|
-
render action: :edit, status: :
|
|
84
|
+
render action: :edit, status: :unprocessable_content
|
|
85
85
|
end
|
|
86
86
|
end
|
|
87
87
|
end
|
|
@@ -113,7 +113,6 @@ module Decidim
|
|
|
113
113
|
end
|
|
114
114
|
|
|
115
115
|
def recipients_count
|
|
116
|
-
enforce_permission_to :read, :newsletter, newsletter:
|
|
117
116
|
@form = form(SelectiveNewsletterForm).from_params(newsletter_params)
|
|
118
117
|
render plain: recipients_count_query
|
|
119
118
|
end
|
|
@@ -130,12 +129,12 @@ module Decidim
|
|
|
130
129
|
|
|
131
130
|
on(:invalid) do
|
|
132
131
|
flash.now[:error] = I18n.t("newsletters.deliver.error", scope: "decidim.admin")
|
|
133
|
-
render action: :select_recipients_to_deliver, status: :
|
|
132
|
+
render action: :select_recipients_to_deliver, status: :unprocessable_content
|
|
134
133
|
end
|
|
135
134
|
|
|
136
135
|
on(:no_recipients) do
|
|
137
136
|
flash.now[:error] = I18n.t("newsletters.send.no_recipients", scope: "decidim.admin")
|
|
138
|
-
render action: :select_recipients_to_deliver, status: :
|
|
137
|
+
render action: :select_recipients_to_deliver, status: :unprocessable_content
|
|
139
138
|
end
|
|
140
139
|
end
|
|
141
140
|
end
|
|
@@ -157,7 +156,7 @@ module Decidim
|
|
|
157
156
|
:send_to_verified_users,
|
|
158
157
|
:send_to_followers,
|
|
159
158
|
:send_to_participants,
|
|
160
|
-
:
|
|
159
|
+
:send_to_members,
|
|
161
160
|
verification_types: [],
|
|
162
161
|
participatory_space_types: {
|
|
163
162
|
assemblies: [:manifest_name, { ids: [] }],
|
|
@@ -183,8 +182,6 @@ module Decidim
|
|
|
183
182
|
end
|
|
184
183
|
end
|
|
185
184
|
|
|
186
|
-
protected
|
|
187
|
-
|
|
188
185
|
def collection
|
|
189
186
|
@collection ||= Newsletter.where(organization: current_organization)
|
|
190
187
|
end
|
|
@@ -22,8 +22,6 @@ module Decidim
|
|
|
22
22
|
def new
|
|
23
23
|
enforce_permission_to :create, :officialization
|
|
24
24
|
|
|
25
|
-
return redirect_to(officializations_path, alert: I18n.t("officializations.create.no_user_found", scope: "decidim.admin")) unless user
|
|
26
|
-
|
|
27
25
|
@form = form(OfficializationForm).from_model(user)
|
|
28
26
|
end
|
|
29
27
|
|
|
@@ -29,7 +29,36 @@ module Decidim
|
|
|
29
29
|
|
|
30
30
|
on(:invalid) do
|
|
31
31
|
flash.now[:alert] = I18n.t("organization.update.error", scope: "decidim.admin")
|
|
32
|
-
render :edit, status: :
|
|
32
|
+
render :edit, status: :unprocessable_content
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def users
|
|
38
|
+
search(current_organization.users.available)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
private
|
|
42
|
+
|
|
43
|
+
def search(relation)
|
|
44
|
+
respond_to do |format|
|
|
45
|
+
format.json do
|
|
46
|
+
if (term = params[:term].to_s).present?
|
|
47
|
+
query = if term.start_with?("@")
|
|
48
|
+
nickname = term.delete("@")
|
|
49
|
+
relation.where("nickname LIKE ?", "#{nickname}%")
|
|
50
|
+
.order(Arel.sql(ActiveRecord::Base.sanitize_sql_array("similarity(nickname, '#{nickname}') DESC")))
|
|
51
|
+
else
|
|
52
|
+
relation.where("name ILIKE ?", "%#{term}%").or(
|
|
53
|
+
relation.where("email ILIKE ?", "%#{term}%")
|
|
54
|
+
)
|
|
55
|
+
.order(Arel.sql(ActiveRecord::Base.sanitize_sql_array("GREATEST(similarity(name, '#{term}'), similarity(email, '#{term}')) DESC")))
|
|
56
|
+
.order(Arel.sql(ActiveRecord::Base.sanitize_sql_array("(similarity(name, '#{term}') + similarity(email, '#{term}')) / 2 DESC")))
|
|
57
|
+
end
|
|
58
|
+
render json: query.all.collect { |u| { value: u.id, label: "#{u.name} (@#{u.nickname})" } }
|
|
59
|
+
else
|
|
60
|
+
render json: []
|
|
61
|
+
end
|
|
33
62
|
end
|
|
34
63
|
end
|
|
35
64
|
end
|
|
@@ -10,18 +10,14 @@ module Decidim
|
|
|
10
10
|
|
|
11
11
|
add_breadcrumb_item_from_menu :admin_settings_menu
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
def content_block_scope
|
|
14
|
+
:homepage
|
|
15
|
+
end
|
|
14
16
|
|
|
15
17
|
def scoped_resource
|
|
16
18
|
nil
|
|
17
19
|
end
|
|
18
20
|
|
|
19
|
-
protected
|
|
20
|
-
|
|
21
|
-
def content_block_scope
|
|
22
|
-
:homepage
|
|
23
|
-
end
|
|
24
|
-
|
|
25
21
|
def enforce_permission_to_update_resource
|
|
26
22
|
enforce_permission_to :update, :organization, organization: current_organization
|
|
27
23
|
end
|