decidim-admin 0.26.2 → 0.26.3
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/controllers/decidim/admin/organization_controller.rb +3 -3
- data/app/controllers/decidim/admin/resource_permissions_controller.rb +1 -1
- data/app/helpers/decidim/admin/settings_helper.rb +57 -11
- data/app/packs/entrypoints/decidim_admin.js +5 -1
- data/app/packs/src/decidim/admin/choose_language.js +11 -9
- data/app/packs/src/decidim/admin/dynamic_fields.component.js +1 -0
- data/app/packs/stylesheets/decidim/admin/modules/_forms.scss +6 -0
- data/app/views/decidim/admin/resource_permissions/edit.html.erb +1 -1
- data/config/locales/cs.yml +14 -14
- data/config/locales/fr.yml +14 -14
- data/config/locales/hu.yml +185 -2
- data/config/locales/lt.yml +974 -0
- data/config/locales/nl.yml +61 -1
- data/config/locales/no.yml +5 -0
- data/config/locales/oc-FR.yml +1 -0
- data/config/locales/pl.yml +59 -2
- data/config/locales/sv.yml +1 -0
- data/lib/decidim/admin/version.rb +1 -1
- metadata +9 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a33b1f86d32bce28471d7e0cae6d58f3f0b8734e8588543b249f0eae9a187707
|
4
|
+
data.tar.gz: 5ade51348a77a2ba45c95cb747cdf31ea9f743ce2b36753f102ebd6399fc4789
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 477ee263630fb1af968f73a922d899819908e60faa909e13ed3c585404b9e4c09fe4dd83bf4c458f1ff62a4e7844e6d663e28f32ed64ad9d7475f5ab5632b463
|
7
|
+
data.tar.gz: eaae371f50ec70b88bc4805a16157aee750bcc8a1b0edcc924f35ea8b4dd434759d36a33874147402c181bf87c6da60cd231bdf3fc97e2222f38cd53a7968412
|
@@ -30,11 +30,11 @@ module Decidim
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def users
|
33
|
-
search(current_organization.users)
|
33
|
+
search(current_organization.users.available)
|
34
34
|
end
|
35
35
|
|
36
36
|
def user_entities
|
37
|
-
search(current_organization.user_entities)
|
37
|
+
search(current_organization.user_entities.available)
|
38
38
|
end
|
39
39
|
|
40
40
|
private
|
@@ -51,7 +51,7 @@ module Decidim
|
|
51
51
|
query.where("email ILIKE ?", "%#{term}%")
|
52
52
|
)
|
53
53
|
end
|
54
|
-
render json: query.all.collect { |u| { value: u.id, label: "#{u.name} (@#{u.nickname})
|
54
|
+
render json: query.all.collect { |u| { value: u.id, label: "#{u.name} (@#{u.nickname})" } }
|
55
55
|
else
|
56
56
|
render json: []
|
57
57
|
end
|
@@ -18,16 +18,19 @@ module Decidim
|
|
18
18
|
time: :datetime_field
|
19
19
|
}.freeze
|
20
20
|
|
21
|
-
#
|
22
|
-
#
|
21
|
+
# Renders a form field that matches a settings attribute's type.
|
22
|
+
# Besides the field itself, it also renders all the metadata (like the labels and help texts)
|
23
23
|
#
|
24
|
-
# form
|
25
|
-
# attribute
|
26
|
-
#
|
27
|
-
# name
|
28
|
-
#
|
29
|
-
#
|
30
|
-
#
|
24
|
+
# @param form [Decidim::Admin::FormBuilder] The form in which to render the field
|
25
|
+
# @param attribute [Decidim::SettingsManifest::Attribute] The Settings::Attribute instance with the
|
26
|
+
# description of the attribute.
|
27
|
+
# @param name [Symbol] The name of the field.
|
28
|
+
# @param i18n_scope [String] The scope where it'll find all the texts for the internationalization (locales)
|
29
|
+
# @param options [Hash] Extra options to be passed to the field helper.
|
30
|
+
# @option options [String] :tabs_prefix The type of the setting.
|
31
|
+
# It can be "global-settings" or "step-N-settings", where N is the number of the step.
|
32
|
+
# @option options [nil, Boolean] :readonly True if the input is readonly.
|
33
|
+
# @return [ActiveSupport::SafeBuffer] Rendered form field.
|
31
34
|
def settings_attribute_input(form, attribute, name, i18n_scope, options = {})
|
32
35
|
form_method = form_method_for_attribute(attribute)
|
33
36
|
|
@@ -62,6 +65,18 @@ module Decidim
|
|
62
65
|
|
63
66
|
private
|
64
67
|
|
68
|
+
# Renders a select field collection input for the given attribute
|
69
|
+
#
|
70
|
+
# @param form (see #settings_attribute_input)
|
71
|
+
# @param attribute (see #settings_attribute_input)
|
72
|
+
# @param name (see #settings_attribute_input)
|
73
|
+
# @param i18n_scope (see #settings_attribute_input)
|
74
|
+
# @param options (see #settings_attribute_input)
|
75
|
+
# @option :tabs_prefix (see #settings_attribute_input)
|
76
|
+
# @option :readonly (see #settings_attribute_input)
|
77
|
+
# @option options [String] :label The label that this field has
|
78
|
+
# @option options [String] :help_text The help text shown after the input field
|
79
|
+
# @return (see #settings_attribute_input)
|
65
80
|
def render_select_form_field(form, attribute, name, i18n_scope, options)
|
66
81
|
html = form.select(
|
67
82
|
name,
|
@@ -73,6 +88,17 @@ module Decidim
|
|
73
88
|
end
|
74
89
|
|
75
90
|
# Returns a radio buttons collection input for the given attribute
|
91
|
+
#
|
92
|
+
# @param form (see #settings_attribute_input)
|
93
|
+
# @param attribute (see #settings_attribute_input)
|
94
|
+
# @param name (see #settings_attribute_input)
|
95
|
+
# @param i18n_scope (see #settings_attribute_input)
|
96
|
+
# @param options (see #settings_attribute_input)
|
97
|
+
# @option :tabs_prefix (see #settings_attribute_input)
|
98
|
+
# @option :readonly (see #settings_attribute_input)
|
99
|
+
# @option :label (see #render_select_form_field)
|
100
|
+
# @option :help_text (see #render_select_form_field)
|
101
|
+
# @return (see #settings_attribute_input)
|
76
102
|
def render_enum_form_field(form, attribute, name, i18n_scope, options)
|
77
103
|
html = label_tag(name) do
|
78
104
|
concat options[:label]
|
@@ -88,13 +114,25 @@ module Decidim
|
|
88
114
|
html
|
89
115
|
end
|
90
116
|
|
117
|
+
# Get the translation for a given attribute
|
91
118
|
# Returns a translation or nil. If nil, ZURB Foundation won't add the help_text.
|
119
|
+
#
|
120
|
+
# @param name (see #settings_attribute_input)
|
121
|
+
# @param suffix [String] What suffix the i18n key has
|
122
|
+
# @param i18n_scope (see #settings_attribute_input)
|
123
|
+
# @return [String, nil]
|
92
124
|
def text_for_setting(name, suffix, i18n_scope)
|
125
|
+
html_key = "#{i18n_scope}.#{name}_#{suffix}_html"
|
126
|
+
return t(html_key) if I18n.exists?(html_key)
|
127
|
+
|
93
128
|
key = "#{i18n_scope}.#{name}_#{suffix}"
|
94
129
|
return t(key) if I18n.exists?(key)
|
95
130
|
end
|
96
131
|
|
97
|
-
#
|
132
|
+
# Which form method is being used for this attribute
|
133
|
+
#
|
134
|
+
# @param attribute [Decidim::SettingsManifest::Attribute]
|
135
|
+
# @return [Symbol] The FormBuilder's method used to render
|
98
136
|
def form_method_for_attribute(attribute)
|
99
137
|
return :editor if attribute.type.to_sym == :text && attribute.editor?
|
100
138
|
|
@@ -102,7 +140,9 @@ module Decidim
|
|
102
140
|
end
|
103
141
|
|
104
142
|
# Handles special cases.
|
105
|
-
#
|
143
|
+
#
|
144
|
+
# @param input_type [Symbol]
|
145
|
+
# @return [Hash] Empty Hash or a Hash with extra HTML options.
|
106
146
|
def extra_options_for_type(input_type)
|
107
147
|
case input_type
|
108
148
|
when :text_area
|
@@ -113,6 +153,12 @@ module Decidim
|
|
113
153
|
end
|
114
154
|
|
115
155
|
# Build options for enum attributes
|
156
|
+
# Get the translation for a given attribute of type choice
|
157
|
+
#
|
158
|
+
# @param name (see #settings_attribute_input)
|
159
|
+
# @param i18n_scope (see #settings_attribute_input)
|
160
|
+
# @param choices [Array<Symbol>]
|
161
|
+
# @return [Array<Array<String>>]
|
116
162
|
def build_enum_choices(name, i18n_scope, choices)
|
117
163
|
choices.map do |choice|
|
118
164
|
[t("#{name}_choices.#{choice}", scope: i18n_scope), choice]
|
@@ -14,7 +14,7 @@ import "jquery.autocomplete"
|
|
14
14
|
import "jquery-serializejson"
|
15
15
|
|
16
16
|
import "src/decidim/admin/tab_focus"
|
17
|
-
import "src/decidim/admin/choose_language"
|
17
|
+
import initLanguageChangeSelect from "src/decidim/admin/choose_language"
|
18
18
|
import "src/decidim/admin/application"
|
19
19
|
import "src/decidim/admin/resources_permissions"
|
20
20
|
import "src/decidim/admin/welcome_notification"
|
@@ -40,3 +40,7 @@ import "entrypoints/decidim_admin.scss";
|
|
40
40
|
|
41
41
|
// This needs to be loaded after confirm dialog to bind properly
|
42
42
|
Rails.start()
|
43
|
+
|
44
|
+
window.addEventListener("DOMContentLoaded", () => {
|
45
|
+
initLanguageChangeSelect(document.querySelectorAll("select.language-change"));
|
46
|
+
});
|
@@ -1,12 +1,14 @@
|
|
1
1
|
/* eslint-disable no-invalid-this */
|
2
|
+
/* eslint-disable require-jsdoc */
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
export default function initLanguageChangeSelect(elements) {
|
5
|
+
elements.forEach((select) => {
|
6
|
+
select.addEventListener("change", () => {
|
7
|
+
let targetTabPaneSelector = select.value;
|
8
|
+
let tabsContent = select.parentElement.parentElement.nextElementSibling;
|
8
9
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
});
|
10
|
+
tabsContent.querySelector(".is-active").classList.remove("is-active");
|
11
|
+
tabsContent.querySelector(targetTabPaneSelector).classList.add("is-active");
|
12
|
+
})
|
13
|
+
});
|
14
|
+
}
|
@@ -70,6 +70,7 @@ class DynamicFieldsComponent {
|
|
70
70
|
$(this).replaceAttribute("for", placeholder, value);
|
71
71
|
$(this).replaceAttribute("tabs_id", placeholder, value);
|
72
72
|
$(this).replaceAttribute("href", placeholder, value);
|
73
|
+
$(this).replaceAttribute("value", placeholder, value);
|
73
74
|
|
74
75
|
return this;
|
75
76
|
}
|
@@ -21,7 +21,7 @@
|
|
21
21
|
<% if @component %>
|
22
22
|
<div class="card-divider"><%= t("#{@component.manifest.name}.actions.#{action}", scope: "decidim.components") %></div>
|
23
23
|
<% else %>
|
24
|
-
<div class="card-divider"><%= t("#{resource.
|
24
|
+
<div class="card-divider"><%= t("#{resource.resource_manifest.name}.actions.#{action}", scope: "decidim.resources") %></div>
|
25
25
|
<% end %>
|
26
26
|
|
27
27
|
<div class="card-section">
|
data/config/locales/cs.yml
CHANGED
@@ -185,7 +185,7 @@ cs:
|
|
185
185
|
success: Skvělé! Přijali jste administrátorské podmínky použití.
|
186
186
|
actions:
|
187
187
|
accept: Souhlasím s následujícími podmínkami
|
188
|
-
are_you_sure:
|
188
|
+
are_you_sure: Opravdu chcete odmítnout Podmínky použití pro správce?
|
189
189
|
refuse: Odmítnout administrátorské podmínky
|
190
190
|
title: Souhlasit s podmínkami používání
|
191
191
|
required_review:
|
@@ -213,7 +213,7 @@ cs:
|
|
213
213
|
error: Při vytváření nové oblasti došlo k chybě.
|
214
214
|
success: Oblast byla úspěšně vytvořena.
|
215
215
|
destroy:
|
216
|
-
has_spaces: Tato oblast má závislé prostory. Před smazáním se prosím ujistěte, že žádný
|
216
|
+
has_spaces: Tato oblast má závislé prostory. Před smazáním se prosím ujistěte, že žádný účastnický prostor neodkazuje na tuto oblast.
|
217
217
|
success: Oblast úspěšně zničena
|
218
218
|
edit:
|
219
219
|
title: Upravit oblast
|
@@ -504,9 +504,9 @@ cs:
|
|
504
504
|
example_error: Nelze vytvořit příklad pro daný typ
|
505
505
|
new:
|
506
506
|
accepted_mime_types:
|
507
|
-
csv:
|
508
|
-
json:
|
509
|
-
xlsx: xlsx
|
507
|
+
csv: CSV
|
508
|
+
json: JSON
|
509
|
+
xlsx: Excel (.xlsx)
|
510
510
|
actions:
|
511
511
|
back: Zpět
|
512
512
|
download_example: Stáhnout příklad
|
@@ -591,11 +591,11 @@ cs:
|
|
591
591
|
name: Participační prostor soukromého účastníka
|
592
592
|
scope:
|
593
593
|
fields:
|
594
|
-
name:
|
594
|
+
name: Název
|
595
595
|
scope_type: Typ oblasti působnosti
|
596
596
|
scope_type:
|
597
597
|
fields:
|
598
|
-
name:
|
598
|
+
name: Název
|
599
599
|
plural: Množné číslo
|
600
600
|
share_token:
|
601
601
|
fields:
|
@@ -614,7 +614,7 @@ cs:
|
|
614
614
|
created_at: Datum vzniku
|
615
615
|
email: E-mail
|
616
616
|
last_sign_in_at: Datum posledního přihlášení
|
617
|
-
name:
|
617
|
+
name: Název
|
618
618
|
role: Role
|
619
619
|
roles:
|
620
620
|
admin: Správce
|
@@ -625,7 +625,7 @@ cs:
|
|
625
625
|
actions: Akce
|
626
626
|
created_at: Vytvořeno v
|
627
627
|
document_number: Číslo dokumentu
|
628
|
-
name:
|
628
|
+
name: Název
|
629
629
|
phone: Telefon
|
630
630
|
state: Stav
|
631
631
|
users_count: Počet účastníků
|
@@ -741,15 +741,15 @@ cs:
|
|
741
741
|
error: Při blokování uživatele došlo k chybě
|
742
742
|
success: Uživatel byl úspěšně zablokován
|
743
743
|
create:
|
744
|
-
success:
|
744
|
+
success: Účastník úspěšně oficiálně zaregistrován
|
745
745
|
destroy:
|
746
|
-
success: Uživatel úspěšně zbaven
|
746
|
+
success: Uživatel úspěšně zbaven oficiální registrace
|
747
747
|
index:
|
748
748
|
actions: Akce
|
749
749
|
badge: Odznak
|
750
750
|
block: Zablokovat uživatele
|
751
751
|
created_at: Vytvořeno na
|
752
|
-
name:
|
752
|
+
name: Název
|
753
753
|
nickname: Přezdívka
|
754
754
|
not_officialized: Neověřeno
|
755
755
|
officialize: Ověřit
|
@@ -783,7 +783,7 @@ cs:
|
|
783
783
|
facebook: Facebook
|
784
784
|
github: GitHub
|
785
785
|
instagram: Instagram
|
786
|
-
rich_text_editor_in_public_views_help: V některých textových
|
786
|
+
rich_text_editor_in_public_views_help: V některých textových polích budou účastníci moci vložit některé HTML tagy pomocí textového editoru.
|
787
787
|
social_handlers: Sociální
|
788
788
|
twitter: Twitter
|
789
789
|
url: URL
|
@@ -977,7 +977,7 @@ cs:
|
|
977
977
|
user_groups:
|
978
978
|
index:
|
979
979
|
state:
|
980
|
-
pending:
|
980
|
+
pending: Čekající
|
981
981
|
rejected: Odmítnuto
|
982
982
|
verified: Ověřeno
|
983
983
|
verify_via_csv: Ověřit pomocí CSV
|
data/config/locales/fr.yml
CHANGED
@@ -210,21 +210,21 @@ fr:
|
|
210
210
|
success: Le type de périmètre d'assemblée a été mis à jour avec succès
|
211
211
|
areas:
|
212
212
|
create:
|
213
|
-
error: Une erreur s'est produite lors de la création d'
|
214
|
-
success:
|
213
|
+
error: Une erreur s'est produite lors de la création d'un nouveau périmètre d'assemblée.
|
214
|
+
success: Périmètre d'assemblée créé avec succès.
|
215
215
|
destroy:
|
216
|
-
has_spaces: Des espaces dépendent de
|
217
|
-
success:
|
216
|
+
has_spaces: Des espaces dépendent de ce périmètre d'assemblée. Veuillez vous assurer qu'aucun espace participatif n'est lié à périmètre avant de la supprimer.
|
217
|
+
success: Le périmètre d'assemblée a bien été supprimé
|
218
218
|
edit:
|
219
|
-
title: Modifier
|
219
|
+
title: Modifier le périmètre d'assemblée
|
220
220
|
update: Mettre à jour
|
221
221
|
new:
|
222
|
-
create: Créer
|
223
|
-
title:
|
224
|
-
no_areas:
|
222
|
+
create: Créer un périmètre d'assemblée
|
223
|
+
title: Nouveau périmètre d'assemblée
|
224
|
+
no_areas: Aucun périmètre d'assemblée
|
225
225
|
update:
|
226
|
-
error: Une erreur s'est produite lors de la mise à jour de
|
227
|
-
success:
|
226
|
+
error: Une erreur s'est produite lors de la mise à jour de ce périmètre d'assemblée.
|
227
|
+
success: Périmètre d'assemblée mise à jour avec succès
|
228
228
|
attachment_collections:
|
229
229
|
create:
|
230
230
|
error: Une erreur s'est produite lors de la création d'un nouveau dossier.
|
@@ -523,7 +523,7 @@ fr:
|
|
523
523
|
admins: Administrateurs
|
524
524
|
appearance: Apparence
|
525
525
|
area_types: Types de périmètre d'assemblée
|
526
|
-
areas:
|
526
|
+
areas: Périmètres d'assemblée
|
527
527
|
configuration: Configuration
|
528
528
|
dashboard: Tableau de bord
|
529
529
|
external_domain_whitelist: Domaines externes autorisés
|
@@ -535,7 +535,7 @@ fr:
|
|
535
535
|
participants: Participants
|
536
536
|
reported_users: Utilisateurs signalés
|
537
537
|
scope_types: Types de secteur
|
538
|
-
scopes:
|
538
|
+
scopes: Secteurs
|
539
539
|
settings: Paramètres
|
540
540
|
static_pages: Pages
|
541
541
|
user_groups: Groupes d'utilisateurs
|
@@ -942,7 +942,7 @@ fr:
|
|
942
942
|
titles:
|
943
943
|
admin_log: Journal d'administration
|
944
944
|
area_types: Types de périmètre d'assemblée
|
945
|
-
areas:
|
945
|
+
areas: Périmètres d'assemblée
|
946
946
|
authorization_workflows: Méthodes de vérification
|
947
947
|
dashboard: Tableau de bord
|
948
948
|
impersonatable_users: Utilisateurs pouvant être représentés
|
@@ -951,7 +951,7 @@ fr:
|
|
951
951
|
panel: Administrateur
|
952
952
|
participants: Utilisateurs
|
953
953
|
scope_types: Types de secteur
|
954
|
-
scopes:
|
954
|
+
scopes: Secteurs
|
955
955
|
static_pages: Pages
|
956
956
|
statistics: Activité
|
957
957
|
user_groups: Groupes d'utilisateurs
|