decidim-assemblies 0.31.0 → 0.31.2
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/app/commands/decidim/assemblies/admin/import_assembly.rb +4 -2
- data/app/controllers/concerns/decidim/assemblies/assembly_breadcrumb.rb +2 -7
- data/app/controllers/decidim/assemblies/admin/assembly_imports_controller.rb +2 -1
- data/app/forms/decidim/assemblies/admin/assembly_import_form.rb +11 -0
- data/app/helpers/decidim/assemblies/assemblies_helper.rb +4 -1
- data/app/models/decidim/assembly.rb +1 -1
- data/app/packs/src/decidim/assemblies/controllers/assembly_admin/controller.js +0 -4
- data/app/presenters/decidim/assemblies/admin_log/assembly_presenter.rb +12 -1
- data/app/serializers/decidim/assemblies/assembly_importer.rb +74 -8
- data/app/views/decidim/assemblies/admin/assembly_imports/_form.html.erb +20 -16
- data/app/views/decidim/assemblies/admin/assembly_imports/new.html.erb +1 -0
- data/app/views/decidim/assemblies/assemblies/show.html.erb +1 -1
- data/config/locales/ar.yml +4 -0
- data/config/locales/bg.yml +2 -0
- data/config/locales/ca-IT.yml +10 -0
- data/config/locales/ca.yml +10 -0
- data/config/locales/cs.yml +8 -0
- data/config/locales/de.yml +3 -0
- data/config/locales/el.yml +4 -0
- data/config/locales/en.yml +10 -0
- data/config/locales/es-MX.yml +10 -0
- data/config/locales/es-PY.yml +10 -0
- data/config/locales/es.yml +10 -0
- data/config/locales/eu.yml +8 -0
- data/config/locales/fi-plain.yml +3 -0
- data/config/locales/fi.yml +3 -0
- data/config/locales/fr-CA.yml +25 -0
- data/config/locales/fr.yml +25 -0
- data/config/locales/ga-IE.yml +1 -0
- data/config/locales/gl.yml +4 -0
- data/config/locales/he-IL.yml +0 -1
- data/config/locales/hu.yml +4 -0
- data/config/locales/id-ID.yml +1 -0
- data/config/locales/is-IS.yml +1 -0
- data/config/locales/it.yml +2 -1
- data/config/locales/ja.yml +10 -2
- data/config/locales/ko.yml +1 -0
- data/config/locales/lb.yml +4 -0
- data/config/locales/lt.yml +4 -0
- data/config/locales/lv.yml +1 -0
- data/config/locales/nl.yml +4 -0
- data/config/locales/no.yml +4 -0
- data/config/locales/pl.yml +2 -0
- data/config/locales/pt-BR.yml +96 -0
- data/config/locales/pt.yml +1 -0
- data/config/locales/ro-RO.yml +17 -7
- data/config/locales/ru.yml +1 -0
- data/config/locales/sl.yml +4 -0
- data/config/locales/sq-AL.yml +1 -0
- data/config/locales/sv.yml +14 -3
- data/config/locales/tr-TR.yml +19 -0
- data/config/locales/uk.yml +1 -0
- data/config/locales/zh-CN.yml +4 -0
- data/config/locales/zh-TW.yml +4 -0
- data/lib/decidim/assemblies/engine.rb +7 -0
- data/lib/decidim/assemblies/participatory_space.rb +2 -2
- data/lib/decidim/assemblies/version.rb +1 -1
- metadata +12 -12
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: a1c49ec9e39f595bccb9274974ccafc6641ac4259058bb7695856ea6c5fef237
|
|
4
|
+
data.tar.gz: b26fba7ee40748c9b2b80a571b0932424423d9137aa0f4fd66bf52668f13c457
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: d60095b40c68a1d15ccc8eb30cb3cded1799f67fe26d728b20ba19d605abcede463d0a5559f89036c6cdacc1e9b5ada95cae866b94f8d7e56c457f5fb0990771
|
|
7
|
+
data.tar.gz: ba679178f6eb27a3dd206217903e46a9bdf1f2e58a09922bec3c2acf6f0773816ebf65fdba2c1b5917ddbf07abd704bf2659361052723a688f722f9de0015d32
|
|
@@ -29,7 +29,7 @@ module Decidim
|
|
|
29
29
|
add_admins_as_followers(@imported_assembly)
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
broadcast(:ok, @imported_assembly)
|
|
32
|
+
broadcast(:ok, @imported_assembly, @warnings)
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
private
|
|
@@ -37,12 +37,14 @@ module Decidim
|
|
|
37
37
|
attr_reader :form
|
|
38
38
|
|
|
39
39
|
def import_assembly
|
|
40
|
-
|
|
40
|
+
@warnings = []
|
|
41
41
|
assemblies.each do |original_assembly|
|
|
42
|
+
importer = Decidim::Assemblies::AssemblyImporter.new(form.current_organization, form.current_user)
|
|
42
43
|
Decidim.traceability.perform_action!("import", Assembly, @user) do
|
|
43
44
|
@imported_assembly = importer.import(original_assembly, form.current_user, title: form.title, slug: form.slug)
|
|
44
45
|
importer.import_folders_and_attachments(original_assembly["attachments"]) if form.import_attachments?
|
|
45
46
|
importer.import_components(original_assembly["components"]) if form.import_components?
|
|
47
|
+
@warnings.concat(importer.warnings)
|
|
46
48
|
@imported_assembly
|
|
47
49
|
end
|
|
48
50
|
end
|
|
@@ -10,6 +10,7 @@ module Decidim
|
|
|
10
10
|
|
|
11
11
|
def current_participatory_space_breadcrumb_item
|
|
12
12
|
return {} if current_participatory_space.blank?
|
|
13
|
+
return super unless current_participatory_space.is_a?(Decidim::Assembly)
|
|
13
14
|
|
|
14
15
|
dropdown_cell = current_participatory_space_manifest.breadcrumb_cell
|
|
15
16
|
|
|
@@ -23,13 +24,7 @@ module Decidim
|
|
|
23
24
|
}
|
|
24
25
|
end
|
|
25
26
|
|
|
26
|
-
items <<
|
|
27
|
-
label: current_participatory_space.title,
|
|
28
|
-
url: Decidim::ResourceLocatorPresenter.new(current_participatory_space).path,
|
|
29
|
-
active: true,
|
|
30
|
-
dropdown_cell:,
|
|
31
|
-
resource: current_participatory_space
|
|
32
|
-
}
|
|
27
|
+
items << super
|
|
33
28
|
end
|
|
34
29
|
end
|
|
35
30
|
end
|
|
@@ -16,8 +16,9 @@ module Decidim
|
|
|
16
16
|
@form = form(AssemblyImportForm).from_params(params)
|
|
17
17
|
|
|
18
18
|
ImportAssembly.call(@form, current_user) do
|
|
19
|
-
on(:ok) do
|
|
19
|
+
on(:ok) do |_assembly, warnings|
|
|
20
20
|
flash[:notice] = I18n.t("assembly_imports.create.success", scope: "decidim.admin")
|
|
21
|
+
flash[:warning] = warnings.join("<br>") if warnings.any?
|
|
21
22
|
redirect_to assemblies_path
|
|
22
23
|
end
|
|
23
24
|
|
|
@@ -31,12 +31,14 @@ module Decidim
|
|
|
31
31
|
attribute :import_components, Boolean, default: true
|
|
32
32
|
attribute :document, Decidim::Attributes::Blob
|
|
33
33
|
|
|
34
|
+
validates :document, presence: true
|
|
34
35
|
validates :document, file_content_type: { allow: ACCEPTED_TYPES.values }
|
|
35
36
|
validates :slug, presence: true, format: { with: Decidim::Assembly.slug_format }
|
|
36
37
|
validates :title, translatable_presence: true
|
|
37
38
|
validate :slug_uniqueness
|
|
38
39
|
|
|
39
40
|
validate :document_type_must_be_valid, if: :document
|
|
41
|
+
validate :document_must_have_content, if: -> { document.present? && errors[:document].none? }
|
|
40
42
|
|
|
41
43
|
def document_text
|
|
42
44
|
@document_text ||= document&.download
|
|
@@ -76,6 +78,15 @@ module Decidim
|
|
|
76
78
|
|
|
77
79
|
errors.add(:slug, :taken)
|
|
78
80
|
end
|
|
81
|
+
|
|
82
|
+
def document_must_have_content
|
|
83
|
+
return if document_text.blank?
|
|
84
|
+
|
|
85
|
+
parsed = JSON.parse(document_text)
|
|
86
|
+
errors.add(:document, :empty) if parsed.is_a?(Array) && parsed.empty?
|
|
87
|
+
rescue JSON::ParserError
|
|
88
|
+
errors.add(:document, :invalid_json)
|
|
89
|
+
end
|
|
79
90
|
end
|
|
80
91
|
end
|
|
81
92
|
end
|
|
@@ -14,7 +14,10 @@ module Decidim
|
|
|
14
14
|
|
|
15
15
|
# Items to display in the navigation of an assembly
|
|
16
16
|
def assembly_nav_items(participatory_space)
|
|
17
|
-
components = participatory_space
|
|
17
|
+
components = participatory_space
|
|
18
|
+
.components
|
|
19
|
+
.published.or(Decidim::Component.where(id: try(:current_component)))
|
|
20
|
+
.where(visible: true)
|
|
18
21
|
|
|
19
22
|
[
|
|
20
23
|
*(if participatory_space.members_public_page?
|
|
@@ -50,10 +50,6 @@ export default class extends Controller {
|
|
|
50
50
|
|
|
51
51
|
if (isTransparentCheckbox) {
|
|
52
52
|
isTransparentCheckbox.disabled = (enabledPrivateSpace === false);
|
|
53
|
-
|
|
54
|
-
if (isTransparentCheckbox.checked) {
|
|
55
|
-
isTransparentCheckbox.checked = false;
|
|
56
|
-
}
|
|
57
53
|
}
|
|
58
54
|
|
|
59
55
|
if (specialFeatures) {
|
|
@@ -59,9 +59,20 @@ module Decidim
|
|
|
59
59
|
"activemodel.attributes.assembly"
|
|
60
60
|
end
|
|
61
61
|
|
|
62
|
+
# i18n-tasks-use t("decidim.admin_log.assembly.create")
|
|
63
|
+
# i18n-tasks-use t("decidim.admin_log.assembly.publish")
|
|
64
|
+
# i18n-tasks-use t("decidim.admin_log.assembly.unpublish")
|
|
65
|
+
# i18n-tasks-use t("decidim.admin_log.assembly.update")
|
|
66
|
+
# i18n-tasks-use t("decidim.admin_log.assembly.import")
|
|
67
|
+
# i18n-tasks-use t("decidim.admin_log.assembly.export")
|
|
68
|
+
# i18n-tasks-use t("decidim.admin_log.assembly.duplicate")
|
|
69
|
+
# i18n-tasks-use t("decidim.admin_log.assembly.soft_delete")
|
|
70
|
+
# i18n-tasks-use t("decidim.admin_log.assembly.restore")
|
|
71
|
+
# i18n-tasks-use t("decidim.admin_log.assembly.publish_all_members")
|
|
72
|
+
# i18n-tasks-use t("decidim.admin_log.assembly.unpublish_all_members")
|
|
62
73
|
def action_string
|
|
63
74
|
case action
|
|
64
|
-
when "create", "publish", "unpublish", "update", "duplicate", "export", "import", "soft_delete", "restore"
|
|
75
|
+
when "create", "publish", "unpublish", "update", "duplicate", "export", "import", "soft_delete", "restore", "publish_all_members", "unpublish_all_members"
|
|
65
76
|
"decidim.admin_log.assembly.#{action}"
|
|
66
77
|
else
|
|
67
78
|
super
|
|
@@ -4,9 +4,12 @@ module Decidim
|
|
|
4
4
|
module Assemblies
|
|
5
5
|
# A factory class to ensure we always create Assemblies the same way since it involves some logic.
|
|
6
6
|
class AssemblyImporter < Decidim::Importers::Importer
|
|
7
|
+
attr_reader :warnings
|
|
8
|
+
|
|
7
9
|
def initialize(organization, user)
|
|
8
10
|
@organization = organization
|
|
9
11
|
@user = user
|
|
12
|
+
@warnings = []
|
|
10
13
|
end
|
|
11
14
|
|
|
12
15
|
# Public: Creates a new Assembly.
|
|
@@ -57,8 +60,8 @@ module Decidim
|
|
|
57
60
|
meta_scope: attributes["meta_scope"],
|
|
58
61
|
announcement: attributes["announcement"]
|
|
59
62
|
)
|
|
60
|
-
|
|
61
|
-
|
|
63
|
+
import_hero_image(attributes["remote_hero_image_url"])
|
|
64
|
+
import_banner_image(attributes["remote_banner_image_url"])
|
|
62
65
|
|
|
63
66
|
@imported_assembly.save!
|
|
64
67
|
@imported_assembly
|
|
@@ -69,9 +72,29 @@ module Decidim
|
|
|
69
72
|
return if attachments["files"].nil?
|
|
70
73
|
|
|
71
74
|
attachments["files"].map do |file|
|
|
72
|
-
|
|
75
|
+
url = file["remote_file_url"]
|
|
76
|
+
next if url.blank?
|
|
77
|
+
|
|
78
|
+
error = remote_file_error(url)
|
|
79
|
+
if error.present?
|
|
80
|
+
@warnings << I18n.t(
|
|
81
|
+
"decidim.assemblies.admin.imports.attachment_error",
|
|
82
|
+
title: attachment_title(file),
|
|
83
|
+
error:
|
|
84
|
+
)
|
|
85
|
+
next
|
|
86
|
+
end
|
|
73
87
|
|
|
74
|
-
|
|
88
|
+
begin
|
|
89
|
+
file_tmp = URI.parse(url).open
|
|
90
|
+
rescue OpenURI::HTTPError, Errno::ENOENT, Errno::ECONNREFUSED, SocketError, Net::OpenTimeout, Net::ReadTimeout => e
|
|
91
|
+
@warnings << I18n.t(
|
|
92
|
+
"decidim.assemblies.admin.imports.attachment_error",
|
|
93
|
+
title: attachment_title(file),
|
|
94
|
+
error: format_error(e)
|
|
95
|
+
)
|
|
96
|
+
next
|
|
97
|
+
end
|
|
75
98
|
|
|
76
99
|
Decidim.traceability.perform_action!("create", Attachment, @user) do
|
|
77
100
|
attachment = Attachment.new(
|
|
@@ -121,7 +144,7 @@ module Decidim
|
|
|
121
144
|
attachment_collection
|
|
122
145
|
end
|
|
123
146
|
|
|
124
|
-
def
|
|
147
|
+
def remote_file_error(url)
|
|
125
148
|
return if url.nil?
|
|
126
149
|
|
|
127
150
|
accepted = ["image", "application/pdf"]
|
|
@@ -129,10 +152,53 @@ module Decidim
|
|
|
129
152
|
http_connection = Net::HTTP.new(url.host, url.port)
|
|
130
153
|
http_connection.use_ssl = true if url.scheme == "https"
|
|
131
154
|
http_connection.start do |http|
|
|
132
|
-
|
|
155
|
+
response = http.head(url.request_uri)
|
|
156
|
+
content_type = response["Content-Type"]
|
|
157
|
+
next if response.is_a?(Net::HTTPSuccess) && content_type&.start_with?(*accepted)
|
|
158
|
+
|
|
159
|
+
message = response.message.presence || Rack::Utils::HTTP_STATUS_CODES[response.code.to_i]
|
|
160
|
+
message = message.presence || "Error"
|
|
161
|
+
next "#{response.code} #{message}"
|
|
133
162
|
end
|
|
134
|
-
rescue StandardError
|
|
135
|
-
|
|
163
|
+
rescue StandardError => e
|
|
164
|
+
format_error(e)
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
def attachment_title(file)
|
|
168
|
+
title = file["title"]
|
|
169
|
+
return "" if title.blank?
|
|
170
|
+
|
|
171
|
+
return title unless title.is_a?(Hash)
|
|
172
|
+
|
|
173
|
+
title.values.find(&:present?) || ""
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
def import_hero_image(url)
|
|
177
|
+
return if url.blank?
|
|
178
|
+
|
|
179
|
+
@imported_assembly.attached_uploader(:hero_image).remote_url = url
|
|
180
|
+
rescue OpenURI::HTTPError, Errno::ENOENT, Errno::ECONNREFUSED, SocketError, Net::OpenTimeout, Net::ReadTimeout => e
|
|
181
|
+
@warnings << I18n.t("decidim.assemblies.admin.imports.hero_image_error", error: format_error(e))
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
def import_banner_image(url)
|
|
185
|
+
return if url.blank?
|
|
186
|
+
|
|
187
|
+
@imported_assembly.attached_uploader(:banner_image).remote_url = url
|
|
188
|
+
rescue OpenURI::HTTPError, Errno::ENOENT, Errno::ECONNREFUSED, SocketError, Net::OpenTimeout, Net::ReadTimeout => e
|
|
189
|
+
@warnings << I18n.t("decidim.assemblies.admin.imports.banner_image_error", error: format_error(e))
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
def format_error(error)
|
|
193
|
+
return error.message unless error.respond_to?(:io) && error.io.respond_to?(:status)
|
|
194
|
+
|
|
195
|
+
status = error.io.status
|
|
196
|
+
return error.message if status.blank? || status.first.blank?
|
|
197
|
+
|
|
198
|
+
code = status[0]
|
|
199
|
+
message = status[1].presence || Rack::Utils::HTTP_STATUS_CODES[code.to_i]
|
|
200
|
+
message = message.presence || error.message
|
|
201
|
+
"#{code} #{message}"
|
|
136
202
|
end
|
|
137
203
|
end
|
|
138
204
|
end
|
|
@@ -1,34 +1,38 @@
|
|
|
1
|
-
<%= append_javascript_pack_tag "decidim_assemblies_admin" %>
|
|
2
|
-
|
|
3
1
|
<div class="form__wrapper">
|
|
4
2
|
<div class="card pt-4" id="assemblies">
|
|
5
3
|
<div class="card-section">
|
|
4
|
+
<div class="row column mb-4">
|
|
5
|
+
<%= cell("decidim/announcement", { body: t("decidim.assemblies.admin.new_import.help_html") }, callout_class: "info") %>
|
|
6
|
+
</div>
|
|
7
|
+
|
|
6
8
|
<div class="row column">
|
|
7
9
|
<%= form.translated :text_field, :title, autofocus: true, aria: { label: :title } %>
|
|
8
10
|
</div>
|
|
11
|
+
|
|
9
12
|
<div class="row column">
|
|
10
13
|
<%= form.text_field :slug, help_text: t(".slug_help_html", url: decidim_form_slug_url(:assemblies, form.object.slug)) %>
|
|
11
14
|
</div>
|
|
15
|
+
|
|
12
16
|
<div class="row column">
|
|
13
|
-
<%= form.upload :document, button_class: "button button__sm button__transparent-secondary" %>
|
|
17
|
+
<%= form.upload :document, label: t(".document_legend"), button_class: "button button__sm button__transparent-secondary", help_i18n_scope: "decidim.forms.file_help.import_file", help_i18n_messages: ["message_1"] %>
|
|
14
18
|
</div>
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
+
|
|
20
|
+
<div class="card-divider">
|
|
21
|
+
<div class="card-title">
|
|
22
|
+
<%= t("assembly_imports.new.select", scope: "decidim.admin") %>
|
|
23
|
+
</div>
|
|
24
|
+
</div>
|
|
25
|
+
<div class="card-section">
|
|
26
|
+
<div class="row">
|
|
27
|
+
<div class="columns">
|
|
28
|
+
<%= form.check_box :import_attachments %>
|
|
19
29
|
</div>
|
|
20
|
-
<div class="
|
|
21
|
-
|
|
22
|
-
<div class="columns">
|
|
23
|
-
<%= form.check_box :import_attachments %>
|
|
24
|
-
</div>
|
|
25
|
-
<div class="columns">
|
|
26
|
-
<%= form.check_box :import_components %>
|
|
27
|
-
</div>
|
|
28
|
-
</div>
|
|
30
|
+
<div class="columns">
|
|
31
|
+
<%= form.check_box :import_components %>
|
|
29
32
|
</div>
|
|
30
33
|
</div>
|
|
31
34
|
</div>
|
|
35
|
+
|
|
32
36
|
</div>
|
|
33
37
|
</div>
|
|
34
38
|
</div>
|
data/config/locales/ar.yml
CHANGED
|
@@ -146,6 +146,7 @@ ar:
|
|
|
146
146
|
attachments: المرفقات
|
|
147
147
|
components: المكونات
|
|
148
148
|
moderations: الإعتدال
|
|
149
|
+
private_users: الأعضاء
|
|
149
150
|
models:
|
|
150
151
|
assembly:
|
|
151
152
|
fields:
|
|
@@ -216,6 +217,9 @@ ar:
|
|
|
216
217
|
select_parent_assembly: حدد الجمعية الأصلية
|
|
217
218
|
social_handlers: التواصل الاجتماعي
|
|
218
219
|
title: معلومات عامة
|
|
220
|
+
assembly_imports:
|
|
221
|
+
form:
|
|
222
|
+
document_legend: إضافة وثيقة
|
|
219
223
|
assembly_members:
|
|
220
224
|
form:
|
|
221
225
|
explanation: 'إرشادات للصورة:'
|
data/config/locales/bg.yml
CHANGED
|
@@ -153,6 +153,7 @@ bg:
|
|
|
153
153
|
components: Компоненти
|
|
154
154
|
info: Относно това събрание
|
|
155
155
|
moderations: Модерации
|
|
156
|
+
private_users: Членове
|
|
156
157
|
see_assembly: Вижте събранието
|
|
157
158
|
models:
|
|
158
159
|
assembly:
|
|
@@ -228,6 +229,7 @@ bg:
|
|
|
228
229
|
visibility: Видимост
|
|
229
230
|
assembly_imports:
|
|
230
231
|
form:
|
|
232
|
+
document_legend: Добавяне на документ
|
|
231
233
|
slug_help_html: 'Използват се променливи полета в URL адреса, за да се генерират URL адреси, които водят към това събрание. Допуска се използването само на букви, цифри и тирета и адресът трябва да започва с буква. Пример: %{url}'
|
|
232
234
|
assembly_members:
|
|
233
235
|
form:
|
data/config/locales/ca-IT.yml
CHANGED
|
@@ -74,6 +74,8 @@ ca-IT:
|
|
|
74
74
|
attributes:
|
|
75
75
|
document:
|
|
76
76
|
allowed_file_content_types: 'Tipus de document no vàlid. Només s''accepten arxius amb les següents extensions: %{types}.'
|
|
77
|
+
empty: El document està buit
|
|
78
|
+
invalid_json: El document no és un JSON vàlid
|
|
77
79
|
activerecord:
|
|
78
80
|
models:
|
|
79
81
|
decidim/assembly:
|
|
@@ -219,9 +221,11 @@ ca-IT:
|
|
|
219
221
|
export: "%{user_name} ha exportat l'assemblea %{resource_name}"
|
|
220
222
|
import: "%{user_name} ha importat l'assemblea %{resource_name}"
|
|
221
223
|
publish: "%{user_name} ha publicat l'assemblea %{resource_name}"
|
|
224
|
+
publish_all_members: "%{user_name} va publicar a totes les membres de l'assemblea %{resource_name}"
|
|
222
225
|
restore: "%{user_name} ha restaurat l'assemblea %{resource_name}"
|
|
223
226
|
soft_delete: "%{user_name} ha mogut a la paperera l'assemblea %{resource_name}"
|
|
224
227
|
unpublish: "%{user_name} ha despublicat l'assemblea %{resource_name}"
|
|
228
|
+
unpublish_all_members: "%{user_name} va despublicar a totes les membres de l'assemblea %{resource_name}"
|
|
225
229
|
update: "%{user_name} ha actualitzat l'assemblea %{resource_name}"
|
|
226
230
|
assembly_member:
|
|
227
231
|
create: "%{user_name} ha afegit el membre %{resource_name} a l'assemblea %{space_name}"
|
|
@@ -265,6 +269,7 @@ ca-IT:
|
|
|
265
269
|
slug_help_html: 'Els noms curts d''URL s''utilitzen per generar les URL que apunten a aquesta assemblea. Només accepta lletres, números i guions, i ha de començar amb una lletra. Exemple: %{url}'
|
|
266
270
|
assembly_imports:
|
|
267
271
|
form:
|
|
272
|
+
document_legend: Afegir un document
|
|
268
273
|
slug_help_html: 'Els noms curts d''URL s''utilitzen per generar les URL que apunten a aquesta assemblea. Només accepta lletres, números i guions, i ha de començar amb una lletra. Exemple: %{url}'
|
|
269
274
|
assembly_members:
|
|
270
275
|
form:
|
|
@@ -274,9 +279,14 @@ ca-IT:
|
|
|
274
279
|
content_blocks:
|
|
275
280
|
highlighted_assemblies:
|
|
276
281
|
max_results: Quantitat màxima d'elements que es mostraran
|
|
282
|
+
imports:
|
|
283
|
+
attachment_error: No s'ha pogut importar l'arxiu adjunt "%{title}" (%{error}).
|
|
284
|
+
banner_image_error: No s'ha pogut importar la imatge del bàner (%{error}).
|
|
285
|
+
hero_image_error: No s'ha pogut importar la imatge principal (%{error}).
|
|
277
286
|
new_import:
|
|
278
287
|
accepted_types:
|
|
279
288
|
json: JSON
|
|
289
|
+
help_html: Aquesta funció d'importació et permet crear una nova assemblea a partir d'un fitxer JSON exportat. Pots exportar una assemblea d'una altra organització o de la mateixa organització. L'assemblea importada inclourà la seva configuració, els components i els fitxers adjunts (si s'han seleccionat).
|
|
280
290
|
assemblies:
|
|
281
291
|
description:
|
|
282
292
|
area_name: Àrea
|
data/config/locales/ca.yml
CHANGED
|
@@ -74,6 +74,8 @@ ca:
|
|
|
74
74
|
attributes:
|
|
75
75
|
document:
|
|
76
76
|
allowed_file_content_types: 'Tipus de document no vàlid. Només s''accepten arxius amb les següents extensions: %{types}.'
|
|
77
|
+
empty: El document està buit
|
|
78
|
+
invalid_json: El document no és un JSON vàlid
|
|
77
79
|
activerecord:
|
|
78
80
|
models:
|
|
79
81
|
decidim/assembly:
|
|
@@ -219,9 +221,11 @@ ca:
|
|
|
219
221
|
export: "%{user_name} ha exportat l'assemblea %{resource_name}"
|
|
220
222
|
import: "%{user_name} ha importat l'assemblea %{resource_name}"
|
|
221
223
|
publish: "%{user_name} ha publicat l'assemblea %{resource_name}"
|
|
224
|
+
publish_all_members: "%{user_name} va publicar a totes les membres de l'assemblea %{resource_name}"
|
|
222
225
|
restore: "%{user_name} ha restaurat l'assemblea %{resource_name}"
|
|
223
226
|
soft_delete: "%{user_name} ha mogut a la paperera l'assemblea %{resource_name}"
|
|
224
227
|
unpublish: "%{user_name} ha despublicat l'assemblea %{resource_name}"
|
|
228
|
+
unpublish_all_members: "%{user_name} va despublicar a totes les membres de l'assemblea %{resource_name}"
|
|
225
229
|
update: "%{user_name} ha actualitzat l'assemblea %{resource_name}"
|
|
226
230
|
assembly_member:
|
|
227
231
|
create: "%{user_name} ha afegit el membre %{resource_name} a l'assemblea %{space_name}"
|
|
@@ -265,6 +269,7 @@ ca:
|
|
|
265
269
|
slug_help_html: 'Els noms curts d''URL s''utilitzen per generar les URL que apunten a aquesta assemblea. Només accepta lletres, números i guions, i ha de començar amb una lletra. Exemple: %{url}'
|
|
266
270
|
assembly_imports:
|
|
267
271
|
form:
|
|
272
|
+
document_legend: Afegir un document
|
|
268
273
|
slug_help_html: 'Els noms curts d''URL s''utilitzen per generar les URL que apunten a aquesta assemblea. Només accepta lletres, números i guions, i ha de començar amb una lletra. Exemple: %{url}'
|
|
269
274
|
assembly_members:
|
|
270
275
|
form:
|
|
@@ -274,9 +279,14 @@ ca:
|
|
|
274
279
|
content_blocks:
|
|
275
280
|
highlighted_assemblies:
|
|
276
281
|
max_results: Quantitat màxima d'elements que es mostraran
|
|
282
|
+
imports:
|
|
283
|
+
attachment_error: No s'ha pogut importar l'arxiu adjunt "%{title}" (%{error}).
|
|
284
|
+
banner_image_error: No s'ha pogut importar la imatge del bàner (%{error}).
|
|
285
|
+
hero_image_error: No s'ha pogut importar la imatge principal (%{error}).
|
|
277
286
|
new_import:
|
|
278
287
|
accepted_types:
|
|
279
288
|
json: JSON
|
|
289
|
+
help_html: Aquesta funció d'importació et permet crear una nova assemblea a partir d'un fitxer JSON exportat. Pots exportar una assemblea d'una altra organització o de la mateixa organització. L'assemblea importada inclourà la seva configuració, els components i els fitxers adjunts (si s'han seleccionat).
|
|
280
290
|
assemblies:
|
|
281
291
|
description:
|
|
282
292
|
area_name: Àrea
|
data/config/locales/cs.yml
CHANGED
|
@@ -225,9 +225,11 @@ cs:
|
|
|
225
225
|
export: "%{user_name} exportoval shromáždění %{resource_name}"
|
|
226
226
|
import: "%{user_name} importoval shromáždění %{resource_name}"
|
|
227
227
|
publish: "%{user_name} publikoval %{resource_name} shromáždění"
|
|
228
|
+
publish_all_members: "%{user_name} zveřejnil všechny členy shromáždění %{resource_name}"
|
|
228
229
|
restore: "%{user_name} obnovil shromáždění %{resource_name}"
|
|
229
230
|
soft_delete: "%{user_name} přesunul do koše shromáždění %{resource_name}"
|
|
230
231
|
unpublish: "%{user_name} odebral %{resource_name} shromáždění"
|
|
232
|
+
unpublish_all_members: "%{user_name} zneveřejnil všechny členy shromáždění %{resource_name}"
|
|
231
233
|
update: "%{user_name} aktualizoval shromáždění %{resource_name}"
|
|
232
234
|
assembly_member:
|
|
233
235
|
create: "%{user_name} vytvořil %{resource_name} člena ve shromáždění %{space_name}"
|
|
@@ -271,6 +273,7 @@ cs:
|
|
|
271
273
|
slug_help_html: 'URL slugy se používají ke generování adres URL, které odkazují na toto shromáždění. Povolená jsou pouze písmena, číslice a pomlčky a musí začínat písmenem. Příklad: %{url}'
|
|
272
274
|
assembly_imports:
|
|
273
275
|
form:
|
|
276
|
+
document_legend: Přidat dokument
|
|
274
277
|
slug_help_html: 'URL slugy se používají ke generování adres URL, které odkazují na toto shromáždění. Povolená jsou pouze písmena, číslice a pomlčky a musí začínat písmenem. Příklad: %{url}'
|
|
275
278
|
assembly_members:
|
|
276
279
|
form:
|
|
@@ -280,9 +283,14 @@ cs:
|
|
|
280
283
|
content_blocks:
|
|
281
284
|
highlighted_assemblies:
|
|
282
285
|
max_results: Maximální množství prvků, které chcete zobrazit
|
|
286
|
+
imports:
|
|
287
|
+
attachment_error: Přílohu "%{title}" nelze importovat (%{error}).
|
|
288
|
+
banner_image_error: Obrázek banneru nelze importovat (%{error}).
|
|
289
|
+
hero_image_error: Obrázek hrdiny nelze importovat (%{error}).
|
|
283
290
|
new_import:
|
|
284
291
|
accepted_types:
|
|
285
292
|
json: JSON
|
|
293
|
+
help_html: Tato funkce importu umožňuje vytvořit novou sestavu z exportovaného JSON souboru. Můžete exportovat sestavení z jiné organizace nebo ze stejné organizace. Importovaná sestava bude obsahovat jeho nastavení, součásti a přílohy (je-li vybrána).
|
|
286
294
|
assemblies:
|
|
287
295
|
description:
|
|
288
296
|
area_name: Oblast
|
data/config/locales/de.yml
CHANGED
|
@@ -219,9 +219,11 @@ de:
|
|
|
219
219
|
export: "%{user_name} hat das Gremium %{resource_name} exportiert"
|
|
220
220
|
import: "%{user_name} hat das Gremium %{resource_name} importiert"
|
|
221
221
|
publish: "%{user_name} hat das Gremium %{resource_name} veröffentlicht"
|
|
222
|
+
publish_all_members: "%{user_name} hat alle Mitglieder des Gremiums %{resource_name} veröffentlicht"
|
|
222
223
|
restore: "%{user_name} hat das Gremium %{resource_name} wiederhergestellt"
|
|
223
224
|
soft_delete: "%{user_name} hat das Gremium %{resource_name} in den Papierkorb verschoben"
|
|
224
225
|
unpublish: "%{user_name} hat das Gremium %{resource_name} auf \"unveröffentlicht\" gesetzt"
|
|
226
|
+
unpublish_all_members: "%{user_name} hat die Veröffentlichung aller Mitglieder des Gremiums %{resource_name} aufgehoben"
|
|
225
227
|
update: "%{user_name} hat das Gremium %{resource_name} aktualisiert"
|
|
226
228
|
assembly_member:
|
|
227
229
|
create: "%{user_name} hat das Mitglied %{resource_name} im Gremium %{space_name} erstellt"
|
|
@@ -265,6 +267,7 @@ de:
|
|
|
265
267
|
slug_help_html: 'URL-Slugs werden zum Generieren der URLs verwendet, die auf dieses Gremium verweisen. Akzeptiert werden nur Buchstaben, Zahlen und Bindestriche und sie müssen mit einem Buchstaben beginnen. Beispiel: %{url}'
|
|
266
268
|
assembly_imports:
|
|
267
269
|
form:
|
|
270
|
+
document_legend: Dokument hinzufügen
|
|
268
271
|
slug_help_html: 'URL-Slugs werden zum Generieren der URLs verwendet, die auf dieses Gremium verweisen. Akzeptiert werden nur Buchstaben, Zahlen und Bindestriche und es muss mit einem Buchstaben beginnen. Beispiel: %{url}'
|
|
269
272
|
assembly_members:
|
|
270
273
|
form:
|
data/config/locales/el.yml
CHANGED
|
@@ -139,6 +139,7 @@ el:
|
|
|
139
139
|
attachments: Συνημμένα
|
|
140
140
|
components: Στοιχεία
|
|
141
141
|
moderations: Εποπτεύσεις
|
|
142
|
+
private_users: Μέλη
|
|
142
143
|
models:
|
|
143
144
|
assembly:
|
|
144
145
|
fields:
|
|
@@ -208,6 +209,9 @@ el:
|
|
|
208
209
|
select_parent_assembly: Επιλέξτε «Γονική συνέλευση»
|
|
209
210
|
social_handlers: Μέσα κοινωνικής δικτύωσης
|
|
210
211
|
title: Γενικές πληροφορίες
|
|
212
|
+
assembly_imports:
|
|
213
|
+
form:
|
|
214
|
+
document_legend: Προσθήκη εγγράφου
|
|
211
215
|
assembly_members:
|
|
212
216
|
form:
|
|
213
217
|
explanation: 'Οδηγίες για την εικόνα:'
|
data/config/locales/en.yml
CHANGED
|
@@ -74,6 +74,8 @@ en:
|
|
|
74
74
|
attributes:
|
|
75
75
|
document:
|
|
76
76
|
allowed_file_content_types: 'Invalid document type. Only files with the following extensions are allowed: %{types}.'
|
|
77
|
+
empty: The document is empty
|
|
78
|
+
invalid_json: The document is not valid JSON
|
|
77
79
|
activerecord:
|
|
78
80
|
models:
|
|
79
81
|
decidim/assembly:
|
|
@@ -219,9 +221,11 @@ en:
|
|
|
219
221
|
export: "%{user_name} exported the %{resource_name} assembly"
|
|
220
222
|
import: "%{user_name} imported the %{resource_name} assembly"
|
|
221
223
|
publish: "%{user_name} published the %{resource_name} assembly"
|
|
224
|
+
publish_all_members: "%{user_name} published all members of the %{resource_name} assembly"
|
|
222
225
|
restore: "%{user_name} restored the %{resource_name} assembly"
|
|
223
226
|
soft_delete: "%{user_name} moved to trash the %{resource_name} assembly"
|
|
224
227
|
unpublish: "%{user_name} unpublished the %{resource_name} assembly"
|
|
228
|
+
unpublish_all_members: "%{user_name} unpublished all members of the %{resource_name} assembly"
|
|
225
229
|
update: "%{user_name} updated the %{resource_name} assembly"
|
|
226
230
|
assembly_member:
|
|
227
231
|
create: "%{user_name} created the %{resource_name} member in the %{space_name} assembly"
|
|
@@ -265,6 +269,7 @@ en:
|
|
|
265
269
|
slug_help_html: 'URL slugs are used to generate the URLs that point to this assembly. Only accepts letters, numbers and dashes, and must start with a letter. Example: %{url}'
|
|
266
270
|
assembly_imports:
|
|
267
271
|
form:
|
|
272
|
+
document_legend: Add a document
|
|
268
273
|
slug_help_html: 'URL slugs are used to generate the URLs that point to this assembly. Only accepts letters, numbers and dashes, and must start with a letter. Example: %{url}'
|
|
269
274
|
assembly_members:
|
|
270
275
|
form:
|
|
@@ -274,9 +279,14 @@ en:
|
|
|
274
279
|
content_blocks:
|
|
275
280
|
highlighted_assemblies:
|
|
276
281
|
max_results: Maximum amount of elements to show
|
|
282
|
+
imports:
|
|
283
|
+
attachment_error: The attachment "%{title}" could not be imported (%{error}).
|
|
284
|
+
banner_image_error: The banner image could not be imported (%{error}).
|
|
285
|
+
hero_image_error: The hero image could not be imported (%{error}).
|
|
277
286
|
new_import:
|
|
278
287
|
accepted_types:
|
|
279
288
|
json: JSON
|
|
289
|
+
help_html: This import feature allows you to create a new assembly from an exported JSON file. You can export an assembly from another organization or from this same organization. The imported assembly will include its settings, components, and attachments (if selected).
|
|
280
290
|
assemblies:
|
|
281
291
|
description:
|
|
282
292
|
area_name: Area
|
data/config/locales/es-MX.yml
CHANGED
|
@@ -74,6 +74,8 @@ es-MX:
|
|
|
74
74
|
attributes:
|
|
75
75
|
document:
|
|
76
76
|
allowed_file_content_types: 'Tipo de documento no válido. Sólo se permiten archivos con las siguientes extensiones: %{types}.'
|
|
77
|
+
empty: El documento está vacío
|
|
78
|
+
invalid_json: El documento no es JSON válido
|
|
77
79
|
activerecord:
|
|
78
80
|
models:
|
|
79
81
|
decidim/assembly:
|
|
@@ -219,9 +221,11 @@ es-MX:
|
|
|
219
221
|
export: "%{user_name} exportó la asamblea %{resource_name}"
|
|
220
222
|
import: "%{user_name} importó la asamblea %{resource_name}"
|
|
221
223
|
publish: "%{user_name} publicó la asamblea %{resource_name}"
|
|
224
|
+
publish_all_members: "%{user_name} publicó todas las miembros de la asamblea %{resource_name}"
|
|
222
225
|
restore: "%{user_name} ha restaurado la asamblea %{resource_name}"
|
|
223
226
|
soft_delete: "%{user_name} ha movido a la papelera la asamblea %{resource_name}"
|
|
224
227
|
unpublish: "%{user_name} despublicó la asamblea %{resource_name}"
|
|
228
|
+
unpublish_all_members: "%{user_name} despublicó a todas las miembros de la asamblea %{resource_name}"
|
|
225
229
|
update: "%{user_name} actualizó la asamblea %{resource_name}"
|
|
226
230
|
assembly_member:
|
|
227
231
|
create: "%{user_name} creó el miembro %{resource_name} en la asamblea %{space_name}"
|
|
@@ -265,6 +269,7 @@ es-MX:
|
|
|
265
269
|
slug_help_html: 'Los textos cortos de URL se utilizan para generar las URL que apuntan a esta asamblea. Solo acepta letras, números y guiones, y debe comenzar con una letra. Ejemplo: %{url}'
|
|
266
270
|
assembly_imports:
|
|
267
271
|
form:
|
|
272
|
+
document_legend: Añadir un documento
|
|
268
273
|
slug_help_html: 'Los textos cortos de URL se utilizan para generar las URL que apuntan a esta asamblea. Sólo acepta letras, números y guiones, y debe comenzar con una letra. Ejemplo: %{url}'
|
|
269
274
|
assembly_members:
|
|
270
275
|
form:
|
|
@@ -274,9 +279,14 @@ es-MX:
|
|
|
274
279
|
content_blocks:
|
|
275
280
|
highlighted_assemblies:
|
|
276
281
|
max_results: Cantidad máxima de elementos para mostrar
|
|
282
|
+
imports:
|
|
283
|
+
attachment_error: No se ha podido importar el archivo adjunto "%{title}" (%{error}).
|
|
284
|
+
banner_image_error: No se ha podido importar la imagen del banner (%{error}).
|
|
285
|
+
hero_image_error: No se ha podrido importar la imagen principal (%{error}).
|
|
277
286
|
new_import:
|
|
278
287
|
accepted_types:
|
|
279
288
|
json: JSON
|
|
289
|
+
help_html: Esta función de importación te permite crear una nueva asamblea a partir de un archivo JSON exportado. Puedes exportar una asamblea desde otra organización o desde esta misma organización. La asamblea importada incluirá sus ajustes, componentes y archivos adjuntos (si se seleccionan).
|
|
280
290
|
assemblies:
|
|
281
291
|
description:
|
|
282
292
|
area_name: Área
|