decidim-participatory_processes 0.31.1 → 0.31.3
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/participatory_processes/admin/import_participatory_process.rb +4 -2
- data/app/controllers/decidim/participatory_processes/admin/participatory_process_imports_controller.rb +2 -1
- data/app/forms/decidim/participatory_processes/admin/participatory_process_import_form.rb +11 -0
- data/app/models/decidim/participatory_process_step.rb +3 -1
- data/app/serializers/decidim/participatory_processes/participatory_process_importer.rb +76 -13
- data/app/views/decidim/participatory_processes/admin/participatory_process_imports/_form.html.erb +6 -3
- data/app/views/decidim/participatory_processes/admin/participatory_process_steps/index.html.erb +1 -1
- data/app/views/decidim/participatory_processes/participatory_processes/show.html.erb +1 -1
- data/app/views/layouts/decidim/admin/participatory_process_group.html.erb +2 -11
- data/config/locales/ar.yml +0 -7
- data/config/locales/bg.yml +1 -12
- data/config/locales/bs-BA.yml +0 -6
- data/config/locales/ca-IT.yml +12 -6
- data/config/locales/ca.yml +12 -6
- data/config/locales/cs.yml +18 -15
- data/config/locales/de.yml +0 -14
- data/config/locales/el.yml +1 -11
- data/config/locales/en.yml +7 -1
- data/config/locales/es-MX.yml +15 -9
- data/config/locales/es-PY.yml +15 -9
- data/config/locales/es.yml +13 -7
- data/config/locales/eu.yml +21 -15
- data/config/locales/fi-plain.yml +7 -14
- data/config/locales/fi.yml +7 -14
- data/config/locales/fr-CA.yml +12 -10
- data/config/locales/fr.yml +12 -10
- data/config/locales/ga-IE.yml +1 -2
- data/config/locales/gl.yml +1 -9
- data/config/locales/hu.yml +1 -11
- data/config/locales/id-ID.yml +0 -6
- data/config/locales/is-IS.yml +0 -3
- data/config/locales/it.yml +2 -12
- data/config/locales/ja.yml +9 -3
- data/config/locales/lb.yml +0 -9
- data/config/locales/lt.yml +1 -11
- data/config/locales/lv.yml +0 -9
- data/config/locales/nl.yml +2 -13
- data/config/locales/no.yml +0 -11
- data/config/locales/pl.yml +1 -12
- data/config/locales/pt-BR.yml +7 -8
- data/config/locales/pt.yml +1 -12
- data/config/locales/ro-RO.yml +2 -11
- data/config/locales/ru.yml +0 -6
- data/config/locales/sk.yml +1 -10
- data/config/locales/sr-CS.yml +0 -6
- data/config/locales/sv.yml +234 -44
- data/config/locales/tr-TR.yml +0 -12
- data/config/locales/uk.yml +0 -6
- data/config/locales/zh-CN.yml +0 -9
- data/config/locales/zh-TW.yml +3 -13
- data/lib/decidim/participatory_processes/participatory_space.rb +2 -2
- data/lib/decidim/participatory_processes/version.rb +1 -1
- metadata +16 -16
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3a7aad4fa28b53aa35cfe06f58dfd59052a1e6a9474d7c39c3a1a658fe7c1483
|
|
4
|
+
data.tar.gz: 2180d0923275741be1c04255971c82d33f0e5e387dd1bfe75b9f0fd82a9d899f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7cb3f501e500106bdbf4d7ae41f95829a312c763cae7f16930f9acb1a6142ac4128b4ce9bbcb41016e94d9d9a64428dda74448a2766cda1c0c9a0b65cac4c3bc
|
|
7
|
+
data.tar.gz: 7a7b206aaf34f6083530414c20eb3fc8cbe43bf06b6c18b8cb40ccc0ca6f7e49b78cf20fae20be08425d4f0c7cafec73b89bdaf73f52970533e1d5954ba5cc05
|
|
@@ -29,7 +29,7 @@ module Decidim
|
|
|
29
29
|
add_admins_as_followers(@imported_process)
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
broadcast(:ok, @imported_process)
|
|
32
|
+
broadcast(:ok, @imported_process, @warnings)
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
private
|
|
@@ -37,13 +37,15 @@ module Decidim
|
|
|
37
37
|
attr_reader :form
|
|
38
38
|
|
|
39
39
|
def import_participatory_process
|
|
40
|
-
|
|
40
|
+
@warnings = []
|
|
41
41
|
participatory_processes.each do |original_process|
|
|
42
|
+
importer = Decidim::ParticipatoryProcesses::ParticipatoryProcessImporter.new(form.current_organization, current_user)
|
|
42
43
|
Decidim.traceability.perform_action!("import", Decidim::ParticipatoryProcess, current_user) do
|
|
43
44
|
@imported_process = importer.import(original_process, current_user, title: form.title, slug: form.slug)
|
|
44
45
|
importer.import_participatory_process_steps(original_process["participatory_process_steps"]) if form.import_steps?
|
|
45
46
|
importer.import_folders_and_attachments(original_process["attachments"]) if form.import_attachments?
|
|
46
47
|
importer.import_components(original_process["components"]) if form.import_components?
|
|
48
|
+
@warnings.concat(importer.warnings)
|
|
47
49
|
@imported_process
|
|
48
50
|
end
|
|
49
51
|
end
|
|
@@ -18,8 +18,9 @@ module Decidim
|
|
|
18
18
|
@form = form(ParticipatoryProcessImportForm).from_params(params)
|
|
19
19
|
|
|
20
20
|
ImportParticipatoryProcess.call(@form) do
|
|
21
|
-
on(:ok) do
|
|
21
|
+
on(:ok) do |_process, warnings|
|
|
22
22
|
flash[:notice] = I18n.t("participatory_process_imports.create.success", scope: "decidim.admin")
|
|
23
|
+
flash[:warning] = warnings.join("<br>") if warnings.any?
|
|
23
24
|
redirect_to participatory_processes_path
|
|
24
25
|
end
|
|
25
26
|
|
|
@@ -30,12 +30,14 @@ module Decidim
|
|
|
30
30
|
attribute :import_components, Boolean, default: true
|
|
31
31
|
attribute :document, Decidim::Attributes::Blob
|
|
32
32
|
|
|
33
|
+
validates :document, presence: true
|
|
33
34
|
validates :document, file_content_type: { allow: ACCEPTED_TYPES.values }
|
|
34
35
|
validates :slug, presence: true, format: { with: Decidim::ParticipatoryProcess.slug_format }
|
|
35
36
|
validates :title, translatable_presence: true
|
|
36
37
|
validate :slug_uniqueness
|
|
37
38
|
|
|
38
39
|
validate :document_type_must_be_valid, if: :document
|
|
40
|
+
validate :document_must_have_content, if: -> { document.present? && errors[:document].none? }
|
|
39
41
|
|
|
40
42
|
def document_text
|
|
41
43
|
@document_text ||= document&.download
|
|
@@ -75,6 +77,15 @@ module Decidim
|
|
|
75
77
|
|
|
76
78
|
errors.add(:slug, :taken)
|
|
77
79
|
end
|
|
80
|
+
|
|
81
|
+
def document_must_have_content
|
|
82
|
+
return if document_text.blank?
|
|
83
|
+
|
|
84
|
+
parsed = JSON.parse(document_text)
|
|
85
|
+
errors.add(:document, :empty) if parsed.is_a?(Array) && parsed.empty?
|
|
86
|
+
rescue JSON::ParserError
|
|
87
|
+
errors.add(:document, :invalid_json)
|
|
88
|
+
end
|
|
78
89
|
end
|
|
79
90
|
end
|
|
80
91
|
end
|
|
@@ -9,9 +9,11 @@ module Decidim
|
|
|
9
9
|
include Traceable
|
|
10
10
|
include Loggable
|
|
11
11
|
|
|
12
|
+
delegate :can_participate?, to: :participatory_process
|
|
13
|
+
|
|
12
14
|
translatable_fields :title, :description, :cta_text
|
|
13
15
|
|
|
14
|
-
belongs_to :participatory_process, foreign_key: "decidim_participatory_process_id", class_name: "Decidim::ParticipatoryProcess"
|
|
16
|
+
belongs_to :participatory_process, foreign_key: "decidim_participatory_process_id", class_name: "Decidim::ParticipatoryProcess", touch: true
|
|
15
17
|
has_one :organization, through: :participatory_process
|
|
16
18
|
|
|
17
19
|
alias participatory_space participatory_process
|
|
@@ -4,9 +4,12 @@ module Decidim
|
|
|
4
4
|
module ParticipatoryProcesses
|
|
5
5
|
# A factory class to ensure we always create ParticipatoryProcesses the same way since it involves some logic.
|
|
6
6
|
class ParticipatoryProcessImporter < 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 ParticipatoryProcess.
|
|
@@ -43,7 +46,7 @@ module Decidim
|
|
|
43
46
|
private_space: attributes["private_space"],
|
|
44
47
|
participatory_process_group: process_group
|
|
45
48
|
)
|
|
46
|
-
|
|
49
|
+
import_hero_image(attributes["remote_hero_image_url"])
|
|
47
50
|
|
|
48
51
|
@imported_process.save!
|
|
49
52
|
@imported_process
|
|
@@ -63,7 +66,7 @@ module Decidim
|
|
|
63
66
|
organization: @organization
|
|
64
67
|
)
|
|
65
68
|
|
|
66
|
-
group
|
|
69
|
+
import_group_hero_image(group, attributes["remote_hero_image_url"])
|
|
67
70
|
group.save!
|
|
68
71
|
group
|
|
69
72
|
end
|
|
@@ -91,20 +94,37 @@ module Decidim
|
|
|
91
94
|
return if attachments["files"].nil?
|
|
92
95
|
|
|
93
96
|
attachments["files"].map do |file|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
+
url = file["remote_file_url"]
|
|
98
|
+
next if url.blank?
|
|
99
|
+
|
|
100
|
+
error = remote_file_error(url)
|
|
101
|
+
if error.present?
|
|
102
|
+
@warnings << I18n.t(
|
|
103
|
+
"decidim.participatory_processes.admin.imports.attachment_error",
|
|
104
|
+
title: attachment_title(file),
|
|
105
|
+
error:
|
|
106
|
+
)
|
|
107
|
+
next
|
|
108
|
+
end
|
|
97
109
|
|
|
98
110
|
Decidim.traceability.perform_action!("create", Attachment, @user) do
|
|
99
111
|
attachment = Attachment.new(
|
|
100
112
|
title: file["title"],
|
|
101
113
|
description: file["description"],
|
|
102
|
-
content_type: file_tmp.content_type,
|
|
103
114
|
attached_to: @imported_process,
|
|
104
|
-
weight: file["weight"]
|
|
105
|
-
file: file_tmp, # Define attached_to before this
|
|
106
|
-
file_size: file_tmp.size
|
|
115
|
+
weight: file["weight"]
|
|
107
116
|
)
|
|
117
|
+
begin
|
|
118
|
+
attachment.attached_uploader(:file).remote_url = url
|
|
119
|
+
attachment.set_content_type_and_size
|
|
120
|
+
rescue OpenURI::HTTPError, Errno::ENOENT, Errno::ECONNREFUSED, SocketError, Net::OpenTimeout, Net::ReadTimeout => e
|
|
121
|
+
@warnings << I18n.t(
|
|
122
|
+
"decidim.participatory_processes.admin.imports.attachment_error",
|
|
123
|
+
title: attachment_title(file),
|
|
124
|
+
error: format_error(e)
|
|
125
|
+
)
|
|
126
|
+
next
|
|
127
|
+
end
|
|
108
128
|
attachment.create_attachment_collection(file["attachment_collection"])
|
|
109
129
|
attachment.save!
|
|
110
130
|
attachment
|
|
@@ -148,7 +168,7 @@ module Decidim
|
|
|
148
168
|
attachment_collection
|
|
149
169
|
end
|
|
150
170
|
|
|
151
|
-
def
|
|
171
|
+
def remote_file_error(url)
|
|
152
172
|
return if url.nil?
|
|
153
173
|
|
|
154
174
|
accepted = ["image", "application/pdf"]
|
|
@@ -156,10 +176,53 @@ module Decidim
|
|
|
156
176
|
http_connection = Net::HTTP.new(url.host, url.port)
|
|
157
177
|
http_connection.use_ssl = true if url.scheme == "https"
|
|
158
178
|
http_connection.start do |http|
|
|
159
|
-
|
|
179
|
+
response = http.head(url.request_uri)
|
|
180
|
+
content_type = response["Content-Type"]
|
|
181
|
+
next if response.is_a?(Net::HTTPSuccess) && content_type&.start_with?(*accepted)
|
|
182
|
+
|
|
183
|
+
message = response.message.presence || Rack::Utils::HTTP_STATUS_CODES[response.code.to_i]
|
|
184
|
+
message = message.presence || "Error"
|
|
185
|
+
next "#{response.code} #{message}"
|
|
160
186
|
end
|
|
161
|
-
rescue StandardError
|
|
162
|
-
|
|
187
|
+
rescue StandardError => e
|
|
188
|
+
format_error(e)
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
def attachment_title(file)
|
|
192
|
+
title = file["title"]
|
|
193
|
+
return "" if title.blank?
|
|
194
|
+
|
|
195
|
+
return title unless title.is_a?(Hash)
|
|
196
|
+
|
|
197
|
+
title.values.find(&:present?) || ""
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
def import_hero_image(url)
|
|
201
|
+
return if url.blank?
|
|
202
|
+
|
|
203
|
+
@imported_process.attached_uploader(:hero_image).remote_url = url
|
|
204
|
+
rescue OpenURI::HTTPError, Errno::ENOENT, Errno::ECONNREFUSED, SocketError, Net::OpenTimeout, Net::ReadTimeout => e
|
|
205
|
+
@warnings << I18n.t("decidim.participatory_processes.admin.imports.hero_image_error", error: format_error(e))
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
def import_group_hero_image(group, url)
|
|
209
|
+
return if url.blank?
|
|
210
|
+
|
|
211
|
+
group.attached_uploader(:hero_image).remote_url = url
|
|
212
|
+
rescue OpenURI::HTTPError, Errno::ENOENT, Errno::ECONNREFUSED, SocketError, Net::OpenTimeout, Net::ReadTimeout => e
|
|
213
|
+
@warnings << I18n.t("decidim.participatory_processes.admin.imports.hero_image_error", error: format_error(e))
|
|
214
|
+
end
|
|
215
|
+
|
|
216
|
+
def format_error(error)
|
|
217
|
+
return error.message unless error.respond_to?(:io) && error.io.respond_to?(:status)
|
|
218
|
+
|
|
219
|
+
status = error.io.status
|
|
220
|
+
return error.message if status.blank? || status.first.blank?
|
|
221
|
+
|
|
222
|
+
code = status[0]
|
|
223
|
+
message = status[1].presence || Rack::Utils::HTTP_STATUS_CODES[code.to_i]
|
|
224
|
+
message = message.presence || error.message
|
|
225
|
+
"#{code} #{message}"
|
|
163
226
|
end
|
|
164
227
|
end
|
|
165
228
|
end
|
data/app/views/decidim/participatory_processes/admin/participatory_process_imports/_form.html.erb
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
<div class="form__wrapper">
|
|
2
2
|
<div class="card pt-4" id="processes">
|
|
3
3
|
<div class="card-section">
|
|
4
|
+
<div class="row column mb-4">
|
|
5
|
+
<%= cell("decidim/announcement", { body: t("decidim.participatory_processes.admin.new_import.help_html") }, callout_class: "info") %>
|
|
6
|
+
</div>
|
|
7
|
+
|
|
4
8
|
<div class="row column">
|
|
5
|
-
<%= form.translated :text_field, :title, autofocus: true %>
|
|
9
|
+
<%= form.translated :text_field, :title, autofocus: true, aria: { label: :title } %>
|
|
6
10
|
</div>
|
|
7
11
|
|
|
8
12
|
<div class="row column">
|
|
@@ -10,7 +14,7 @@
|
|
|
10
14
|
</div>
|
|
11
15
|
|
|
12
16
|
<div class="row column">
|
|
13
|
-
<%= form.upload :document,
|
|
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
19
|
|
|
16
20
|
<div class="card-divider">
|
|
@@ -32,7 +36,6 @@
|
|
|
32
36
|
</div>
|
|
33
37
|
</div>
|
|
34
38
|
|
|
35
|
-
</div>
|
|
36
39
|
</div>
|
|
37
40
|
</div>
|
|
38
41
|
</div>
|
data/app/views/decidim/participatory_processes/admin/participatory_process_steps/index.html.erb
CHANGED
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
<tr data-id="<%= step.id %>">
|
|
25
25
|
<td data-label="<%= t("models.participatory_process_step.fields.title", scope: "decidim.admin") %>">
|
|
26
26
|
<div class="flex items-center gap-x-2">
|
|
27
|
-
<%= icon "
|
|
27
|
+
<%= icon("draggable", class: "dragger hover:cursor-grab") %>
|
|
28
28
|
<% if step.active? %>
|
|
29
29
|
<span class="icon-active"></span>
|
|
30
30
|
<% end %>
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
<% add_secondary_root_menu(:admin_participatory_process_group_menu) %>
|
|
2
|
+
|
|
1
3
|
<% content_for :breadcrumb_context_menu do %>
|
|
2
4
|
<div class="process-title-content-breadcrumb-container-right">
|
|
3
5
|
<% if allowed_to? :create, :process_group %>
|
|
@@ -8,17 +10,6 @@
|
|
|
8
10
|
</span>
|
|
9
11
|
<% end %>
|
|
10
12
|
<% end %>
|
|
11
|
-
<div class="inline-block relative">
|
|
12
|
-
<%= button_tag id: "processes-menu-trigger", data: { controller: "dropdown", target: "processes-dropdown-menu-settings" }, class: "dropdown__trigger button button__transparent" do %>
|
|
13
|
-
<span>
|
|
14
|
-
<%= t("menu.manage", scope: "decidim.admin") %>
|
|
15
|
-
</span>
|
|
16
|
-
<%= icon "arrow-down-s-line" %>
|
|
17
|
-
<% end %>
|
|
18
|
-
<div id="processes-dropdown-menu-settings" class="process-title-content-dropdown">
|
|
19
|
-
<%= dropdown_menu(:admin_participatory_process_group_menu).render %>
|
|
20
|
-
</div>
|
|
21
|
-
</div>
|
|
22
13
|
</div>
|
|
23
14
|
<% end %>
|
|
24
15
|
|
data/config/locales/ar.yml
CHANGED
|
@@ -130,7 +130,6 @@ ar:
|
|
|
130
130
|
destroy:
|
|
131
131
|
success: تم حذف مجموعة العملية التشاركية بنجاح.
|
|
132
132
|
edit:
|
|
133
|
-
title: تحرير مجموعة العملية
|
|
134
133
|
update: تحديث
|
|
135
134
|
new:
|
|
136
135
|
create: إنشاء
|
|
@@ -141,7 +140,6 @@ ar:
|
|
|
141
140
|
participatory_process_imports:
|
|
142
141
|
new:
|
|
143
142
|
import: استيراد
|
|
144
|
-
title: استيراد مسار تشاركي
|
|
145
143
|
participatory_process_publications:
|
|
146
144
|
create:
|
|
147
145
|
error: كانت هناك مشكلة في نشر هذه العملية التشاركية.
|
|
@@ -161,13 +159,11 @@ ar:
|
|
|
161
159
|
destroy:
|
|
162
160
|
success: تم حذف مرحلة العملية التشاركية بنجاح.
|
|
163
161
|
edit:
|
|
164
|
-
title: تحرير مرحلة العملية التشاركية
|
|
165
162
|
update: تحديث
|
|
166
163
|
index:
|
|
167
164
|
steps_title: المراحل
|
|
168
165
|
new:
|
|
169
166
|
create: إنشاء
|
|
170
|
-
title: مرحلة عملية تشاركية جديدة
|
|
171
167
|
ordering:
|
|
172
168
|
error: كانت هناك مشكلة في إعادة ترتيب هذه المراحل من العملية التشاركية.
|
|
173
169
|
update:
|
|
@@ -181,8 +177,6 @@ ar:
|
|
|
181
177
|
success: تمت إزالة المشرف بنجاح من هذه العملية التشاركية.
|
|
182
178
|
edit:
|
|
183
179
|
update: تحديث
|
|
184
|
-
index:
|
|
185
|
-
process_admins_title: مدراء العملية التشاركية
|
|
186
180
|
new:
|
|
187
181
|
create: إنشاء
|
|
188
182
|
update:
|
|
@@ -200,7 +194,6 @@ ar:
|
|
|
200
194
|
published: نشرت
|
|
201
195
|
new:
|
|
202
196
|
create: إنشاء
|
|
203
|
-
title: عملية تشاركية جديدة
|
|
204
197
|
update:
|
|
205
198
|
error: حدثت مشكلة أثناء تحديث هذه العملية التشاركية.
|
|
206
199
|
success: عملية المشاركة تم تحديثها بنجاح.
|
data/config/locales/bg.yml
CHANGED
|
@@ -99,8 +99,6 @@ bg:
|
|
|
99
99
|
label: По група на процеса
|
|
100
100
|
menu:
|
|
101
101
|
participatory_process_groups: Групи процеси
|
|
102
|
-
participatory_process_groups_submenu:
|
|
103
|
-
info: Информация
|
|
104
102
|
participatory_processes: Процеси
|
|
105
103
|
participatory_processes_submenu:
|
|
106
104
|
attachment_collections: Папки
|
|
@@ -148,7 +146,6 @@ bg:
|
|
|
148
146
|
destroy:
|
|
149
147
|
success: Групата на процеса на участие беше изтрита успешно.
|
|
150
148
|
edit:
|
|
151
|
-
title: Редактиране на групата на процеса
|
|
152
149
|
update: Актуализация
|
|
153
150
|
new:
|
|
154
151
|
create: Създаване
|
|
@@ -163,7 +160,6 @@ bg:
|
|
|
163
160
|
new:
|
|
164
161
|
import: Импортиране
|
|
165
162
|
select: Изберете кои данни искате да импортирате
|
|
166
|
-
title: Импортиране на процес на участие
|
|
167
163
|
participatory_process_publications:
|
|
168
164
|
create:
|
|
169
165
|
error: Възникна проблем при публикуването на този процес на участие.
|
|
@@ -193,13 +189,11 @@ bg:
|
|
|
193
189
|
Оставихме го тук, за да можете да мигрирате CTA, от които се нуждаете. Полетата <i>Call to action path</i> и
|
|
194
190
|
<i>Текстът на подканващата фраза</i> ще бъде премахнат в следващата версия.
|
|
195
191
|
title: CTA е остарял
|
|
196
|
-
title: Редактиране на етап на процес на участие
|
|
197
192
|
update: Актуализация
|
|
198
193
|
index:
|
|
199
|
-
steps_title:
|
|
194
|
+
steps_title: Фази
|
|
200
195
|
new:
|
|
201
196
|
create: Създаване
|
|
202
|
-
title: Нов етап на процес на участие
|
|
203
197
|
ordering:
|
|
204
198
|
error: Възникна проблем при промяната на реда на тези етапи на процеса на участие.
|
|
205
199
|
update:
|
|
@@ -212,13 +206,9 @@ bg:
|
|
|
212
206
|
destroy:
|
|
213
207
|
success: Администраторът успешно премахнат от този процес на участие.
|
|
214
208
|
edit:
|
|
215
|
-
title: Актуализиране на администратора на процеса на участие
|
|
216
209
|
update: Актуализация
|
|
217
|
-
index:
|
|
218
|
-
process_admins_title: Администратори на процес на участие
|
|
219
210
|
new:
|
|
220
211
|
create: Създаване
|
|
221
|
-
title: Нов администратор на процес на участие
|
|
222
212
|
update:
|
|
223
213
|
error: Възникна проблем при актуализирането на администратор за този процес на участие.
|
|
224
214
|
success: Администраторът беше актуализиран успешно за този процес на участие.
|
|
@@ -235,7 +225,6 @@ bg:
|
|
|
235
225
|
unpublished: Непубликувано
|
|
236
226
|
new:
|
|
237
227
|
create: Създаване
|
|
238
|
-
title: Нов процес на участие
|
|
239
228
|
update:
|
|
240
229
|
error: Възникна проблем при актуализирането на този процес на участие.
|
|
241
230
|
success: Процесът на участие беше актуализиран успешно.
|
data/config/locales/bs-BA.yml
CHANGED
data/config/locales/ca-IT.yml
CHANGED
|
@@ -66,6 +66,8 @@ ca-IT:
|
|
|
66
66
|
attributes:
|
|
67
67
|
document:
|
|
68
68
|
allowed_file_content_types: 'Tipus de document no vàlid. Només s''accepten arxius amb les següents extensions: %{types}'
|
|
69
|
+
empty: El document està buit
|
|
70
|
+
invalid_json: El document no és un JSON vàlid
|
|
69
71
|
models:
|
|
70
72
|
decidim/participatory_process_step_activated_event: Fase activada
|
|
71
73
|
decidim/participatory_process_step_changed_event: Fase modificada
|
|
@@ -106,7 +108,7 @@ ca-IT:
|
|
|
106
108
|
menu:
|
|
107
109
|
participatory_process_groups: Grups de processos
|
|
108
110
|
participatory_process_groups_submenu:
|
|
109
|
-
info:
|
|
111
|
+
info: Quant a aquest grup de processos
|
|
110
112
|
landing_page: Disposició de la pàgina de destinació
|
|
111
113
|
participatory_processes: Processos
|
|
112
114
|
participatory_processes_submenu:
|
|
@@ -168,7 +170,7 @@ ca-IT:
|
|
|
168
170
|
error: Hi ha hagut un error en eliminar el grup de processos participatius.
|
|
169
171
|
success: El grup de processos participatius s'ha eliminat correctament.
|
|
170
172
|
edit:
|
|
171
|
-
title:
|
|
173
|
+
title: Editar el grup de procés
|
|
172
174
|
update: Actualitza
|
|
173
175
|
new:
|
|
174
176
|
create: Crea
|
|
@@ -183,7 +185,7 @@ ca-IT:
|
|
|
183
185
|
new:
|
|
184
186
|
import: Importar
|
|
185
187
|
select: Selecciona quines dades vols importar.
|
|
186
|
-
title: Importar
|
|
188
|
+
title: Importar un procés participatiu
|
|
187
189
|
participatory_process_publications:
|
|
188
190
|
create:
|
|
189
191
|
error: S'ha produït un error en publicar aquest procés participatiu.
|
|
@@ -212,13 +214,13 @@ ca-IT:
|
|
|
212
214
|
Ara això es fa a la <b>Página d'inici</b>, fent servir el bloc de contingut <b>Imatges principal i botó d'acció</b>.
|
|
213
215
|
L'hem deixar aquí per a que migris els CTAs que necessitis. Els camps <i>Ruta del botó d'acció</i> i <i>Text del botó d'acció</i> s'eliminaran a la propera versió.
|
|
214
216
|
title: CTA obsolet
|
|
215
|
-
title:
|
|
217
|
+
title: Editar la fase de procés participatiu
|
|
216
218
|
update: Actualitza
|
|
217
219
|
index:
|
|
218
220
|
steps_title: Fases del procés
|
|
219
221
|
new:
|
|
220
222
|
create: Crea
|
|
221
|
-
title: Nova fase
|
|
223
|
+
title: Nova fase del procés participatiu
|
|
222
224
|
ordering:
|
|
223
225
|
error: S'ha produït un error en la reordenació de les fases d'aquest procés participatiu.
|
|
224
226
|
update:
|
|
@@ -231,7 +233,7 @@ ca-IT:
|
|
|
231
233
|
destroy:
|
|
232
234
|
success: L'administradora s'ha eliminat correctament d'aquest procés participatiu.
|
|
233
235
|
edit:
|
|
234
|
-
title: Actualitzar administradora
|
|
236
|
+
title: Actualitzar l'administradora del procés participatiu
|
|
235
237
|
update: Actualitza
|
|
236
238
|
index:
|
|
237
239
|
process_admins_title: Administradores del procés participatiu
|
|
@@ -494,9 +496,13 @@ ca-IT:
|
|
|
494
496
|
all: Tots
|
|
495
497
|
max_results: Quantitat màxima d'elements que es mostraran
|
|
496
498
|
selection_criteria: Criteris de selecció
|
|
499
|
+
imports:
|
|
500
|
+
attachment_error: No s'ha pogut importar l'arxiu adjunt "%{title}" (%{error}).
|
|
501
|
+
hero_image_error: No s'ha pogut importar la imatge principal (%{error}).
|
|
497
502
|
new_import:
|
|
498
503
|
accepted_types:
|
|
499
504
|
json: JSON
|
|
505
|
+
help_html: Aquesta funció d'importació et permet crear un nou procés participatiu a partir d'un fitxer JSON exportat. Pots exportar un procés participatiu d'una altra organització o de la mateixa organització. El procés participatiu importat inclourà la seva configuració, els components i els fitxers adjunts (si s'han seleccionat).
|
|
500
506
|
participatory_process_duplicates:
|
|
501
507
|
form:
|
|
502
508
|
slug_help_html: 'Els segments d''URL s''utilitzen per generar les URL que apunten a aquest procés. Només accepta lletres, números i guions, i ha de començar amb una lletra. Exemple: %{url}'
|
data/config/locales/ca.yml
CHANGED
|
@@ -66,6 +66,8 @@ ca:
|
|
|
66
66
|
attributes:
|
|
67
67
|
document:
|
|
68
68
|
allowed_file_content_types: 'Tipus de document no vàlid. Només s''accepten arxius amb les següents extensions: %{types}'
|
|
69
|
+
empty: El document està buit
|
|
70
|
+
invalid_json: El document no és un JSON vàlid
|
|
69
71
|
models:
|
|
70
72
|
decidim/participatory_process_step_activated_event: Fase activada
|
|
71
73
|
decidim/participatory_process_step_changed_event: Fase modificada
|
|
@@ -106,7 +108,7 @@ ca:
|
|
|
106
108
|
menu:
|
|
107
109
|
participatory_process_groups: Grups de processos
|
|
108
110
|
participatory_process_groups_submenu:
|
|
109
|
-
info:
|
|
111
|
+
info: Quant a aquest grup de processos
|
|
110
112
|
landing_page: Disposició de la pàgina de destinació
|
|
111
113
|
participatory_processes: Processos
|
|
112
114
|
participatory_processes_submenu:
|
|
@@ -168,7 +170,7 @@ ca:
|
|
|
168
170
|
error: Hi ha hagut un error en eliminar el grup de processos participatius.
|
|
169
171
|
success: El grup de processos participatius s'ha eliminat correctament.
|
|
170
172
|
edit:
|
|
171
|
-
title:
|
|
173
|
+
title: Editar el grup de procés
|
|
172
174
|
update: Actualitza
|
|
173
175
|
new:
|
|
174
176
|
create: Crea
|
|
@@ -183,7 +185,7 @@ ca:
|
|
|
183
185
|
new:
|
|
184
186
|
import: Importar
|
|
185
187
|
select: Selecciona quines dades vols importar.
|
|
186
|
-
title: Importar
|
|
188
|
+
title: Importar un procés participatiu
|
|
187
189
|
participatory_process_publications:
|
|
188
190
|
create:
|
|
189
191
|
error: S'ha produït un error en publicar aquest procés participatiu.
|
|
@@ -212,13 +214,13 @@ ca:
|
|
|
212
214
|
Ara això es fa a la <b>Página d'inici</b>, fent servir el bloc de contingut <b>Imatges principal i botó d'acció</b>.
|
|
213
215
|
L'hem deixar aquí per a que migris els CTAs que necessitis. Els camps <i>Ruta del botó d'acció</i> i <i>Text del botó d'acció</i> s'eliminaran a la propera versió.
|
|
214
216
|
title: CTA obsolet
|
|
215
|
-
title:
|
|
217
|
+
title: Editar la fase de procés participatiu
|
|
216
218
|
update: Actualitza
|
|
217
219
|
index:
|
|
218
220
|
steps_title: Fases del procés
|
|
219
221
|
new:
|
|
220
222
|
create: Crea
|
|
221
|
-
title: Nova fase
|
|
223
|
+
title: Nova fase del procés participatiu
|
|
222
224
|
ordering:
|
|
223
225
|
error: S'ha produït un error en la reordenació de les fases d'aquest procés participatiu.
|
|
224
226
|
update:
|
|
@@ -231,7 +233,7 @@ ca:
|
|
|
231
233
|
destroy:
|
|
232
234
|
success: L'administradora s'ha eliminat correctament d'aquest procés participatiu.
|
|
233
235
|
edit:
|
|
234
|
-
title: Actualitzar administradora
|
|
236
|
+
title: Actualitzar l'administradora del procés participatiu
|
|
235
237
|
update: Actualitza
|
|
236
238
|
index:
|
|
237
239
|
process_admins_title: Administradores del procés participatiu
|
|
@@ -494,9 +496,13 @@ ca:
|
|
|
494
496
|
all: Tots
|
|
495
497
|
max_results: Quantitat màxima d'elements que es mostraran
|
|
496
498
|
selection_criteria: Criteris de selecció
|
|
499
|
+
imports:
|
|
500
|
+
attachment_error: No s'ha pogut importar l'arxiu adjunt "%{title}" (%{error}).
|
|
501
|
+
hero_image_error: No s'ha pogut importar la imatge principal (%{error}).
|
|
497
502
|
new_import:
|
|
498
503
|
accepted_types:
|
|
499
504
|
json: JSON
|
|
505
|
+
help_html: Aquesta funció d'importació et permet crear un nou procés participatiu a partir d'un fitxer JSON exportat. Pots exportar un procés participatiu d'una altra organització o de la mateixa organització. El procés participatiu importat inclourà la seva configuració, els components i els fitxers adjunts (si s'han seleccionat).
|
|
500
506
|
participatory_process_duplicates:
|
|
501
507
|
form:
|
|
502
508
|
slug_help_html: 'Els segments d''URL s''utilitzen per generar les URL que apunten a aquest procés. Només accepta lletres, números i guions, i ha de començar amb una lletra. Exemple: %{url}'
|