decidim-assemblies 0.30.4 → 0.30.6
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/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/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 +26 -0
- data/config/locales/fr.yml +26 -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 +84 -0
- data/config/locales/pt.yml +1 -0
- data/config/locales/ro-RO.yml +16 -6
- 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 +12 -2
- data/config/locales/tr-TR.yml +18 -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: d89d8a8e2cfb31bc7c2479951adcd9b40648927ba660df7a0a940d6ba55c46a2
|
|
4
|
+
data.tar.gz: a7bd22419a0d67c37a923c113d2078db578c4fe522dadef3e7ea54409d69ebdb
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6e852bd08c4c7f218adc283a3e195f6bb4e19e6f61653a20222a4e08023ed235263405d1295a802dd468c52aaf9ef2472f9864f63614192be6da5ca22ce12fb3
|
|
7
|
+
data.tar.gz: 714b1e3caaf1971551d72662f1b7310fab9b972c60d032e87efd2870a6fc07707cbda161c669003b5474af5726a049e847e28f4862efc7ae3085fa192c4aeb49
|
|
@@ -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?
|
|
@@ -60,9 +60,20 @@ module Decidim
|
|
|
60
60
|
"activemodel.attributes.assembly"
|
|
61
61
|
end
|
|
62
62
|
|
|
63
|
+
# i18n-tasks-use t("decidim.admin_log.assembly.create")
|
|
64
|
+
# i18n-tasks-use t("decidim.admin_log.assembly.publish")
|
|
65
|
+
# i18n-tasks-use t("decidim.admin_log.assembly.unpublish")
|
|
66
|
+
# i18n-tasks-use t("decidim.admin_log.assembly.update")
|
|
67
|
+
# i18n-tasks-use t("decidim.admin_log.assembly.import")
|
|
68
|
+
# i18n-tasks-use t("decidim.admin_log.assembly.export")
|
|
69
|
+
# i18n-tasks-use t("decidim.admin_log.assembly.duplicate")
|
|
70
|
+
# i18n-tasks-use t("decidim.admin_log.assembly.soft_delete")
|
|
71
|
+
# i18n-tasks-use t("decidim.admin_log.assembly.restore")
|
|
72
|
+
# i18n-tasks-use t("decidim.admin_log.assembly.publish_all_members")
|
|
73
|
+
# i18n-tasks-use t("decidim.admin_log.assembly.unpublish_all_members")
|
|
63
74
|
def action_string
|
|
64
75
|
case action
|
|
65
|
-
when "create", "publish", "unpublish", "update", "duplicate", "export", "import", "soft_delete", "restore"
|
|
76
|
+
when "create", "publish", "unpublish", "update", "duplicate", "export", "import", "soft_delete", "restore", "publish_all_members", "unpublish_all_members"
|
|
66
77
|
"decidim.admin_log.assembly.#{action}"
|
|
67
78
|
else
|
|
68
79
|
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.
|
|
@@ -58,8 +61,8 @@ module Decidim
|
|
|
58
61
|
meta_scope: attributes["meta_scope"],
|
|
59
62
|
announcement: attributes["announcement"]
|
|
60
63
|
)
|
|
61
|
-
|
|
62
|
-
|
|
64
|
+
import_hero_image(attributes["remote_hero_image_url"])
|
|
65
|
+
import_banner_image(attributes["remote_banner_image_url"])
|
|
63
66
|
|
|
64
67
|
@imported_assembly.save!
|
|
65
68
|
@imported_assembly
|
|
@@ -70,9 +73,29 @@ module Decidim
|
|
|
70
73
|
return if attachments["files"].nil?
|
|
71
74
|
|
|
72
75
|
attachments["files"].map do |file|
|
|
73
|
-
|
|
76
|
+
url = file["remote_file_url"]
|
|
77
|
+
next if url.blank?
|
|
78
|
+
|
|
79
|
+
error = remote_file_error(url)
|
|
80
|
+
if error.present?
|
|
81
|
+
@warnings << I18n.t(
|
|
82
|
+
"decidim.assemblies.admin.imports.attachment_error",
|
|
83
|
+
title: attachment_title(file),
|
|
84
|
+
error:
|
|
85
|
+
)
|
|
86
|
+
next
|
|
87
|
+
end
|
|
74
88
|
|
|
75
|
-
|
|
89
|
+
begin
|
|
90
|
+
file_tmp = URI.parse(url).open
|
|
91
|
+
rescue OpenURI::HTTPError, Errno::ENOENT, Errno::ECONNREFUSED, SocketError, Net::OpenTimeout, Net::ReadTimeout => e
|
|
92
|
+
@warnings << I18n.t(
|
|
93
|
+
"decidim.assemblies.admin.imports.attachment_error",
|
|
94
|
+
title: attachment_title(file),
|
|
95
|
+
error: format_error(e)
|
|
96
|
+
)
|
|
97
|
+
next
|
|
98
|
+
end
|
|
76
99
|
|
|
77
100
|
Decidim.traceability.perform_action!("create", Attachment, @user) do
|
|
78
101
|
attachment = Attachment.new(
|
|
@@ -122,7 +145,7 @@ module Decidim
|
|
|
122
145
|
attachment_collection
|
|
123
146
|
end
|
|
124
147
|
|
|
125
|
-
def
|
|
148
|
+
def remote_file_error(url)
|
|
126
149
|
return if url.nil?
|
|
127
150
|
|
|
128
151
|
accepted = ["image", "application/pdf"]
|
|
@@ -130,10 +153,53 @@ module Decidim
|
|
|
130
153
|
http_connection = Net::HTTP.new(url.host, url.port)
|
|
131
154
|
http_connection.use_ssl = true if url.scheme == "https"
|
|
132
155
|
http_connection.start do |http|
|
|
133
|
-
|
|
156
|
+
response = http.head(url.request_uri)
|
|
157
|
+
content_type = response["Content-Type"]
|
|
158
|
+
next if response.is_a?(Net::HTTPSuccess) && content_type&.start_with?(*accepted)
|
|
159
|
+
|
|
160
|
+
message = response.message.presence || Rack::Utils::HTTP_STATUS_CODES[response.code.to_i]
|
|
161
|
+
message = message.presence || "Error"
|
|
162
|
+
next "#{response.code} #{message}"
|
|
134
163
|
end
|
|
135
|
-
rescue StandardError
|
|
136
|
-
|
|
164
|
+
rescue StandardError => e
|
|
165
|
+
format_error(e)
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
def attachment_title(file)
|
|
169
|
+
title = file["title"]
|
|
170
|
+
return "" if title.blank?
|
|
171
|
+
|
|
172
|
+
return title unless title.is_a?(Hash)
|
|
173
|
+
|
|
174
|
+
title.values.find(&:present?) || ""
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
def import_hero_image(url)
|
|
178
|
+
return if url.blank?
|
|
179
|
+
|
|
180
|
+
@imported_assembly.attached_uploader(:hero_image).remote_url = url
|
|
181
|
+
rescue OpenURI::HTTPError, Errno::ENOENT, Errno::ECONNREFUSED, SocketError, Net::OpenTimeout, Net::ReadTimeout => e
|
|
182
|
+
@warnings << I18n.t("decidim.assemblies.admin.imports.hero_image_error", error: format_error(e))
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
def import_banner_image(url)
|
|
186
|
+
return if url.blank?
|
|
187
|
+
|
|
188
|
+
@imported_assembly.attached_uploader(:banner_image).remote_url = url
|
|
189
|
+
rescue OpenURI::HTTPError, Errno::ENOENT, Errno::ECONNREFUSED, SocketError, Net::OpenTimeout, Net::ReadTimeout => e
|
|
190
|
+
@warnings << I18n.t("decidim.assemblies.admin.imports.banner_image_error", error: format_error(e))
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
def format_error(error)
|
|
194
|
+
return error.message unless error.respond_to?(:io) && error.io.respond_to?(:status)
|
|
195
|
+
|
|
196
|
+
status = error.io.status
|
|
197
|
+
return error.message if status.blank? || status.first.blank?
|
|
198
|
+
|
|
199
|
+
code = status[0]
|
|
200
|
+
message = status[1].presence || Rack::Utils::HTTP_STATUS_CODES[code.to_i]
|
|
201
|
+
message = message.presence || error.message
|
|
202
|
+
"#{code} #{message}"
|
|
137
203
|
end
|
|
138
204
|
end
|
|
139
205
|
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
|
@@ -153,6 +153,7 @@ ar:
|
|
|
153
153
|
attachments: المرفقات
|
|
154
154
|
components: المكونات
|
|
155
155
|
moderations: الإعتدال
|
|
156
|
+
private_users: الأعضاء
|
|
156
157
|
models:
|
|
157
158
|
assembly:
|
|
158
159
|
fields:
|
|
@@ -224,6 +225,9 @@ ar:
|
|
|
224
225
|
select_parent_assembly: حدد الجمعية الأصلية
|
|
225
226
|
social_handlers: التواصل الاجتماعي
|
|
226
227
|
title: معلومات عامة
|
|
228
|
+
assembly_imports:
|
|
229
|
+
form:
|
|
230
|
+
document_legend: إضافة وثيقة
|
|
227
231
|
assembly_members:
|
|
228
232
|
form:
|
|
229
233
|
explanation: 'إرشادات للصورة:'
|
data/config/locales/bg.yml
CHANGED
|
@@ -161,6 +161,7 @@ bg:
|
|
|
161
161
|
info: Относно това събрание
|
|
162
162
|
landing_page: Целева страница
|
|
163
163
|
moderations: Модерации
|
|
164
|
+
private_users: Членове
|
|
164
165
|
see_assembly: Вижте събранието
|
|
165
166
|
models:
|
|
166
167
|
assembly:
|
|
@@ -240,6 +241,7 @@ bg:
|
|
|
240
241
|
slug_help_html: 'Използват се променливи полета в URL адреса, за да се генерират URL адреси, които водят към това събрание. Допуска се използването само на букви, цифри и тирета и адресът трябва да започва с буква. Пример: %{url}'
|
|
241
242
|
assembly_imports:
|
|
242
243
|
form:
|
|
244
|
+
document_legend: Добавяне на документ
|
|
243
245
|
slug_help_html: 'Използват се променливи полета в URL адреса, за да се генерират URL адреси, които водят към това събрание. Допуска се използването само на букви, цифри и тирета и адресът трябва да започва с буква. Пример: %{url}'
|
|
244
246
|
assembly_members:
|
|
245
247
|
form:
|
data/config/locales/ca-IT.yml
CHANGED
|
@@ -75,6 +75,8 @@ ca-IT:
|
|
|
75
75
|
attributes:
|
|
76
76
|
document:
|
|
77
77
|
allowed_file_content_types: 'Tipus de document no vàlid. Només s''accepten arxius amb les següents extensions: %{types}.'
|
|
78
|
+
empty: El document està buit
|
|
79
|
+
invalid_json: El document no és un JSON vàlid
|
|
78
80
|
activerecord:
|
|
79
81
|
models:
|
|
80
82
|
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
|
@@ -75,6 +75,8 @@ ca:
|
|
|
75
75
|
attributes:
|
|
76
76
|
document:
|
|
77
77
|
allowed_file_content_types: 'Tipus de document no vàlid. Només s''accepten arxius amb les següents extensions: %{types}.'
|
|
78
|
+
empty: El document està buit
|
|
79
|
+
invalid_json: El document no és un JSON vàlid
|
|
78
80
|
activerecord:
|
|
79
81
|
models:
|
|
80
82
|
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 es muss 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
|
@@ -146,6 +146,7 @@ el:
|
|
|
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 @@ el:
|
|
|
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/en.yml
CHANGED
|
@@ -75,6 +75,8 @@ en:
|
|
|
75
75
|
attributes:
|
|
76
76
|
document:
|
|
77
77
|
allowed_file_content_types: 'Invalid document type. Only files with the following extensions are allowed: %{types}.'
|
|
78
|
+
empty: The document is empty
|
|
79
|
+
invalid_json: The document is not valid JSON
|
|
78
80
|
activerecord:
|
|
79
81
|
models:
|
|
80
82
|
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
|
@@ -75,6 +75,8 @@ es-MX:
|
|
|
75
75
|
attributes:
|
|
76
76
|
document:
|
|
77
77
|
allowed_file_content_types: 'Tipo de documento no válido. Sólo se permiten archivos con las siguientes extensiones: %{types}.'
|
|
78
|
+
empty: El documento está vacío
|
|
79
|
+
invalid_json: El documento no es JSON válido
|
|
78
80
|
activerecord:
|
|
79
81
|
models:
|
|
80
82
|
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. Sólo 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
|