decidim-admin 0.26.5 → 0.26.8
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/commands/decidim/admin/block_user.rb +7 -2
- data/app/commands/decidim/admin/publish_component.rb +1 -1
- data/app/controllers/concerns/decidim/admin/needs_admin_tos_accepted.rb +42 -0
- data/app/controllers/decidim/admin/admin_terms_controller.rb +1 -1
- data/app/controllers/decidim/admin/application_controller.rb +1 -0
- data/app/controllers/decidim/admin/space_publications_controller.rb +63 -0
- data/app/controllers/decidim/admin/static_page_topics_controller.rb +1 -3
- data/app/packs/src/decidim/admin/draggable-list.js +1 -1
- data/app/packs/stylesheets/decidim/admin/extra/_quill.scss +7 -0
- data/app/permissions/decidim/admin/permissions.rb +14 -1
- data/app/views/decidim/admin/area_types/edit.html.erb +1 -0
- data/app/views/decidim/admin/area_types/index.html.erb +1 -0
- data/app/views/decidim/admin/area_types/new.html.erb +1 -0
- data/app/views/decidim/admin/areas/edit.html.erb +1 -0
- data/app/views/decidim/admin/areas/index.html.erb +1 -0
- data/app/views/decidim/admin/areas/new.html.erb +1 -0
- data/app/views/decidim/admin/attachment_collections/edit.html.erb +1 -0
- data/app/views/decidim/admin/attachment_collections/index.html.erb +1 -0
- data/app/views/decidim/admin/attachment_collections/new.html.erb +1 -0
- data/app/views/decidim/admin/attachments/edit.html.erb +1 -0
- data/app/views/decidim/admin/attachments/index.html.erb +1 -0
- data/app/views/decidim/admin/attachments/new.html.erb +1 -0
- data/app/views/decidim/admin/authorization_workflows/index.html.erb +1 -0
- data/app/views/decidim/admin/categories/edit.html.erb +1 -0
- data/app/views/decidim/admin/categories/index.html.erb +1 -0
- data/app/views/decidim/admin/categories/new.html.erb +1 -0
- data/app/views/decidim/admin/components/edit.html.erb +1 -0
- data/app/views/decidim/admin/components/index.html.erb +1 -0
- data/app/views/decidim/admin/components/new.html.erb +1 -1
- data/app/views/decidim/admin/conflicts/index.html.erb +1 -0
- data/app/views/decidim/admin/help_sections/show.erb +1 -0
- data/app/views/decidim/admin/impersonatable_users/index.html.erb +1 -0
- data/app/views/decidim/admin/impersonations/new.html.erb +1 -0
- data/app/views/decidim/admin/logs/index.html.erb +1 -0
- data/app/views/decidim/admin/moderated_users/index.html.erb +1 -0
- data/app/views/decidim/admin/moderations/index.html.erb +1 -0
- data/app/views/decidim/admin/newsletter_templates/index.html.erb +1 -0
- data/app/views/decidim/admin/newsletter_templates/show.html.erb +1 -0
- data/app/views/decidim/admin/newsletters/index.html.erb +1 -0
- data/app/views/decidim/admin/newsletters/new.html.erb +1 -0
- data/app/views/decidim/admin/newsletters/show.html.erb +1 -0
- data/app/views/decidim/admin/officializations/index.html.erb +15 -10
- data/app/views/decidim/admin/officializations/new.html.erb +1 -0
- data/app/views/decidim/admin/organization/edit.html.erb +1 -0
- data/app/views/decidim/admin/organization_appearance/edit.html.erb +1 -0
- data/app/views/decidim/admin/organization_external_domain_whitelist/edit.html.erb +1 -0
- data/app/views/decidim/admin/scope_types/edit.html.erb +1 -0
- data/app/views/decidim/admin/scope_types/index.html.erb +1 -0
- data/app/views/decidim/admin/scope_types/new.html.erb +1 -0
- data/app/views/decidim/admin/scopes/edit.html.erb +1 -0
- data/app/views/decidim/admin/scopes/index.html.erb +1 -0
- data/app/views/decidim/admin/scopes/new.html.erb +1 -0
- data/app/views/decidim/admin/shared/landing_page_content_blocks/edit.html.erb +1 -0
- data/app/views/decidim/admin/static_page_topics/edit.html.erb +1 -0
- data/app/views/decidim/admin/static_page_topics/new.html.erb +1 -0
- data/app/views/decidim/admin/static_pages/_form.html.erb +1 -1
- data/app/views/decidim/admin/static_pages/edit.html.erb +1 -0
- data/app/views/decidim/admin/static_pages/index.html.erb +1 -0
- data/app/views/decidim/admin/static_pages/new.html.erb +1 -0
- data/app/views/decidim/admin/user_groups/index.html.erb +1 -0
- data/app/views/decidim/admin/user_groups_csv_verifications/new.html.erb +1 -0
- data/app/views/decidim/admin/users/index.html.erb +1 -0
- data/app/views/decidim/admin/users/new.html.erb +1 -0
- data/app/views/layouts/decidim/admin/global_moderations.html.erb +1 -0
- data/config/environment.rb +1 -0
- data/config/locales/ar.yml +10 -5
- data/config/locales/ca.yml +9 -6
- data/config/locales/cs.yml +5 -2
- data/config/locales/de.yml +10 -5
- data/config/locales/el.yml +59 -2
- data/config/locales/en.yml +6 -3
- data/config/locales/es-MX.yml +7 -4
- data/config/locales/es-PY.yml +7 -4
- data/config/locales/es.yml +8 -5
- data/config/locales/eu.yml +8 -13
- data/config/locales/fa-IR.yml +1 -0
- data/config/locales/fi-plain.yml +5 -2
- data/config/locales/fi.yml +8 -5
- data/config/locales/fr-CA.yml +6 -3
- data/config/locales/fr.yml +7 -4
- data/config/locales/gl.yml +0 -5
- data/config/locales/hu.yml +37 -22
- data/config/locales/id-ID.yml +0 -2
- data/config/locales/is-IS.yml +0 -2
- data/config/locales/it.yml +0 -5
- data/config/locales/ja.yml +13 -10
- data/config/locales/kaa.yml +200 -0
- data/config/locales/lb.yml +0 -5
- data/config/locales/lt.yml +0 -5
- data/config/locales/lv.yml +0 -4
- data/config/locales/nl.yml +0 -5
- data/config/locales/no.yml +0 -5
- data/config/locales/pl.yml +0 -5
- data/config/locales/pt-BR.yml +62 -3
- data/config/locales/pt.yml +0 -5
- data/config/locales/ro-RO.yml +10 -10
- data/config/locales/ru.yml +0 -2
- data/config/locales/sk.yml +0 -4
- data/config/locales/sr-CS.yml +0 -4
- data/config/locales/sv.yml +0 -6
- data/config/locales/tr-TR.yml +3 -5
- data/config/locales/uk.yml +0 -2
- data/config/locales/zh-CN.yml +0 -4
- data/config/locales/zh-TW.yml +1075 -0
- data/lib/decidim/admin/form_builder.rb +1 -2
- data/lib/decidim/admin/test/needs_admin_tos_accepted_examples.rb +9 -0
- data/lib/decidim/admin/test.rb +1 -0
- data/lib/decidim/admin/version.rb +1 -1
- metadata +14 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7ae3bb30016e22eb88e8cdf9118dbe1c1c58702539d2a68ce4863eaf17d40099
|
4
|
+
data.tar.gz: b319929c123442784d3416426d3b2cd30cf7a84a06ee15ecc40822270946782c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d56cddac04cded212214f8f962171db9b0940650d338c9da3645ce15cf678cfca72ff58c6192b365a38da11b47773483daf59d4e51ae58f5b6e807a0def34907
|
7
|
+
data.tar.gz: 7c060e1ba90c6a94afc4a26d0c94c0706bc8aab1db866045d3b7df7bb78f45fc5a80da36a530205ff8415328a53f27e9d8e772eef3b897f5ee3643f87dcefc93
|
@@ -20,8 +20,9 @@ module Decidim
|
|
20
20
|
return broadcast(:invalid) unless form.valid?
|
21
21
|
|
22
22
|
transaction do
|
23
|
-
|
23
|
+
find_or_create_moderation!
|
24
24
|
register_justification!
|
25
|
+
block!
|
25
26
|
notify_user!
|
26
27
|
end
|
27
28
|
|
@@ -32,6 +33,10 @@ module Decidim
|
|
32
33
|
|
33
34
|
attr_reader :form
|
34
35
|
|
36
|
+
def find_or_create_moderation!
|
37
|
+
Decidim::UserModeration.create_or_find_by!(user: form.user)
|
38
|
+
end
|
39
|
+
|
35
40
|
def register_justification!
|
36
41
|
@current_blocking = UserBlock.create!(
|
37
42
|
justification: form.justification,
|
@@ -65,7 +70,7 @@ module Decidim
|
|
65
70
|
) do
|
66
71
|
form.user.blocked = true
|
67
72
|
form.user.blocked_at = Time.current
|
68
|
-
form.user.
|
73
|
+
form.user.block_id = @current_blocking.id
|
69
74
|
form.user.extended_data["user_name"] = form.user.name
|
70
75
|
form.user.name = "Blocked user"
|
71
76
|
form.user.save!
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Admin
|
5
|
+
# Shared behaviour for signed_in admins that require the latest TOS accepted
|
6
|
+
module NeedsAdminTosAccepted
|
7
|
+
extend ActiveSupport::Concern
|
8
|
+
|
9
|
+
included do
|
10
|
+
before_action :tos_accepted_by_admin
|
11
|
+
end
|
12
|
+
|
13
|
+
private
|
14
|
+
|
15
|
+
def tos_accepted_by_admin
|
16
|
+
return unless request.format.html?
|
17
|
+
return unless current_user
|
18
|
+
return if current_user.admin_terms_accepted?
|
19
|
+
return if permitted_paths?
|
20
|
+
|
21
|
+
store_location_for(
|
22
|
+
current_user,
|
23
|
+
request.path
|
24
|
+
)
|
25
|
+
redirect_to admin_tos_path
|
26
|
+
end
|
27
|
+
|
28
|
+
def permitted_paths?
|
29
|
+
# ensure that path with or without query string pass
|
30
|
+
permitted_paths.find { |el| el.split("?").first == request.path }
|
31
|
+
end
|
32
|
+
|
33
|
+
def permitted_paths
|
34
|
+
[admin_tos_path, decidim_admin.admin_terms_accept_path]
|
35
|
+
end
|
36
|
+
|
37
|
+
def admin_tos_path
|
38
|
+
decidim_admin.admin_terms_show_path
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
@@ -9,7 +9,7 @@ module Decidim
|
|
9
9
|
current_user.admin_terms_accepted_at = Time.current
|
10
10
|
if current_user.save!
|
11
11
|
flash[:notice] = t("accept.success", scope: "decidim.admin.admin_terms_of_use")
|
12
|
-
redirect_to decidim_admin.root_path
|
12
|
+
redirect_to stored_location_for(current_user) || decidim_admin.root_path
|
13
13
|
else
|
14
14
|
flash[:alert] = t("accept.error", scope: "decidim.admin.admin_terms_of_use")
|
15
15
|
redirect_to decidim_admin.admin_terms_show_path
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Admin
|
5
|
+
# Base controller that can be inherited by other spaces to publish and unpublish the Space
|
6
|
+
#
|
7
|
+
class SpacePublicationsController < Decidim::Assemblies::Admin::ApplicationController
|
8
|
+
def create
|
9
|
+
enforce_permission_to_publish
|
10
|
+
|
11
|
+
publish_command.call(current_assembly, current_user) do
|
12
|
+
on(:ok) do
|
13
|
+
flash[:notice] = I18n.t("create.success", scope: i18n_scope)
|
14
|
+
end
|
15
|
+
|
16
|
+
on(:invalid) do
|
17
|
+
flash.now[:alert] = I18n.t("create.error", scope: i18n_scope)
|
18
|
+
end
|
19
|
+
|
20
|
+
redirect_back(fallback_location: assemblies_path)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def destroy
|
25
|
+
enforce_permission_to_publish
|
26
|
+
|
27
|
+
unpublish_command.call(current_assembly, current_user) do
|
28
|
+
on(:ok) do
|
29
|
+
flash[:notice] = I18n.t("destroy.success", scope: i18n_scope)
|
30
|
+
end
|
31
|
+
|
32
|
+
on(:invalid) do
|
33
|
+
flash.now[:alert] = I18n.t("destroy.error", scope: i18n_scope)
|
34
|
+
end
|
35
|
+
|
36
|
+
redirect_back(fallback_location: assemblies_path)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
def current_participatory_space
|
43
|
+
raise "Not implemented"
|
44
|
+
end
|
45
|
+
|
46
|
+
def enforce_permission_to_publish
|
47
|
+
raise "Not implemented"
|
48
|
+
end
|
49
|
+
|
50
|
+
def publish_command
|
51
|
+
raise "Not implemented"
|
52
|
+
end
|
53
|
+
|
54
|
+
def unpublish_command
|
55
|
+
raise "Not implemented"
|
56
|
+
end
|
57
|
+
|
58
|
+
def i18n_scope
|
59
|
+
raise "Not implemented"
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -39,10 +39,10 @@ module Decidim
|
|
39
39
|
allow! if templates_action?
|
40
40
|
allow! if organization_action?
|
41
41
|
allow! if user_action?
|
42
|
+
allow! if admin_user_action?
|
42
43
|
|
43
44
|
allow! if permission_action.subject == :category
|
44
45
|
allow! if permission_action.subject == :component
|
45
|
-
allow! if permission_action.subject == :admin_user
|
46
46
|
allow! if permission_action.subject == :attachment
|
47
47
|
allow! if permission_action.subject == :editor_image
|
48
48
|
allow! if permission_action.subject == :attachment_collection
|
@@ -200,6 +200,19 @@ module Decidim
|
|
200
200
|
end
|
201
201
|
end
|
202
202
|
|
203
|
+
def admin_user_action?
|
204
|
+
return unless permission_action.subject == :admin_user
|
205
|
+
|
206
|
+
target_user = context.fetch(:user, nil)
|
207
|
+
|
208
|
+
case permission_action.action
|
209
|
+
when :destroy, :block
|
210
|
+
target_user != user
|
211
|
+
else
|
212
|
+
true
|
213
|
+
end
|
214
|
+
end
|
215
|
+
|
203
216
|
def organization
|
204
217
|
@organization ||= context.fetch(:organization, nil) || context.fetch(:current_organization, nil)
|
205
218
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
<% add_decidim_page_title(t("attachment_collections.edit.title", scope: "decidim.admin")) %>
|
1
2
|
<%= decidim_form_for(@form, url: url_for([@attachment_collection.collection_for, @attachment_collection]), html: { class: "form edit_attachment_collection" }) do |f| %>
|
2
3
|
<%= render partial: "decidim/admin/attachment_collections/form", object: f, locals: { title: t("attachment_collections.edit.title", scope: "decidim.admin") } %>
|
3
4
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
<% add_decidim_page_title(t("attachment_collections.new.title", scope: "decidim.admin")) %>
|
1
2
|
<%= decidim_form_for(@form, url: url_for([collection_for, @form]), html: { class: "form new_attachment_collection" }) do |f| %>
|
2
3
|
<%= render partial: "decidim/admin/attachment_collections/form", object: f, locals: { title: t("attachment_collections.new.title", scope: "decidim.admin") } %>
|
3
4
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
<% add_decidim_page_title(t(".title")) %>
|
1
2
|
<%= decidim_form_for(@form, url: url_for([@attachment.attached_to, @attachment]), html: { class: "form edit_attachment" }) do |f| %>
|
2
3
|
<%= render partial: "decidim/admin/attachments/form", object: f, locals: { title: t(".title") } %>
|
3
4
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
<% add_decidim_page_title(t("categories.new.title", scope: "decidim.admin")) %>
|
1
2
|
<%= decidim_form_for(@form, url: categories_path(current_participatory_space), html: { class: "form new_category" }) do |f| %>
|
2
3
|
<%= render partial: "form", object: f, locals: { title: t("categories.new.title", scope: "decidim.admin") } %>
|
3
4
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
<% add_decidim_page_title(t(".title", name: t("#{@component.manifest.name}.name", scope: "decidim.components"))) %>
|
1
2
|
<%= decidim_form_for([current_participatory_space, @form], url: component_path(current_participatory_space, @component), method: "put", html: { class: "form edit_component" }) do |form| %>
|
2
3
|
<%= render partial: "form", object: form, locals: { component: @component, title: t(".title", name: t("#{@component.manifest.name}.name", scope: "decidim.components")) } %>
|
3
4
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
|
1
|
+
<% add_decidim_page_title(t(".title", name: t("#{manifest.name}.name", scope: "decidim.components"))) %>
|
2
2
|
<%= decidim_form_for([current_participatory_space, @form], url: components_path(type: params[:type]), method: "post", html: { class: "form new_component" }) do |form| %>
|
3
3
|
<%= render partial: "form", object: form, locals: { component: @component, title: t(".title", name: t("#{manifest.name}.name", scope: "decidim.components")) } %>
|
4
4
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
<% add_decidim_page_title(t("decidim.admin.titles.participants")) %>
|
1
2
|
<div class="card with-overflow" id='user-groups'>
|
2
3
|
<div class="card-divider">
|
3
4
|
<h2 class="card-title"><%= t "decidim.admin.titles.participants" %></h2>
|
@@ -33,7 +34,7 @@
|
|
33
34
|
<td><%= user.report_count %></td>
|
34
35
|
|
35
36
|
<td class="table-list__actions">
|
36
|
-
<% if allowed_to?(:block, :admin_user) %>
|
37
|
+
<% if allowed_to?(:block, :admin_user, user: user) %>
|
37
38
|
<% if user.blocked? %>
|
38
39
|
<%= icon_link_to "ban", user_block_path(user_id: user.id), t(".unblock"), class: "action-icon action-icon--disabled", method: :delete %>
|
39
40
|
<% else %>
|
@@ -43,15 +44,19 @@
|
|
43
44
|
<% if allowed_to? :show_email, :user, user: user %>
|
44
45
|
<%= icon_link_to "envelope-open", show_email_officialization_path(user_id: user.id), t(".show_email"), class: "action-icon action-icon--show-email", data: { full_name: user.name, toggle: "show-email-modal" } %>
|
45
46
|
<% end %>
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
47
|
+
<% unless user.blocked? %>
|
48
|
+
<% unless current_user == user %>
|
49
|
+
<%= icon_link_to "envelope-closed", current_or_new_conversation_path_with(user), t("decidim.contact"), class:"action-icon--new" %>
|
50
|
+
<% end %>
|
51
|
+
<% if user.officialized? %>
|
52
|
+
<%= icon "circle-check", class: "action-icon action-icon--disabled", role: "img", aria_label: t(".officialize") %>
|
53
|
+
<%= icon_link_to "pencil", new_officialization_path(user_id: user.id), t(".reofficialize"), class: "action-icon--new" %>
|
54
|
+
<%= icon_link_to "circle-x", officialization_path(user.id), t(".unofficialize"), method: :delete, class: "action-icon--reject" %>
|
55
|
+
<% else %>
|
56
|
+
<%= icon_link_to "circle-check", new_officialization_path(user_id: user.id), t(".officialize"), class: "action-icon--verify" %>
|
57
|
+
<%= icon "pencil", class: "action-icon action-icon--disabled", role: "img", aria_label: t(".reofficialize") %>
|
58
|
+
<%= icon "circle-x", class: "action-icon action-icon--disabled", role: "img", aria_label: t(".unofficialize") %>
|
59
|
+
<% end %>
|
55
60
|
<% end %>
|
56
61
|
</td>
|
57
62
|
</tr>
|
@@ -1,3 +1,4 @@
|
|
1
|
+
<% add_decidim_page_title(t("edit_organization_appearance", scope: "decidim.admin.titles")) %>
|
1
2
|
<%= decidim_form_for(@form, html: { class: "form edit_organization_appearance" }, url: organization_appearance_path, method: :put) do |f| %>
|
2
3
|
<%= render partial: "form", object: f %>
|
3
4
|
<div class="button--double form-general-submit">
|
@@ -1,3 +1,4 @@
|
|
1
|
+
<% add_decidim_page_title(t("edit_external_domains", scope: "decidim.admin.titles")) %>
|
1
2
|
<%= decidim_form_for(@form, html: { class: "form edit_organization_external_domain_whitelist" }, url: organization_external_domain_whitelist_path, method: :patch) do |f| %>
|
2
3
|
<%= render partial: "form", object: f %>
|
3
4
|
<div class="button--double form-general-submit">
|