decidim-core 0.30.2 → 0.30.4
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/cells/decidim/activity_cell.rb +6 -0
- data/app/cells/decidim/author/badge.erb +6 -0
- data/app/cells/decidim/author/show.erb +5 -1
- data/app/cells/decidim/author_cell.rb +10 -0
- data/app/cells/decidim/profile/avatar.erb +0 -2
- data/app/cells/decidim/profile/badge.erb +3 -3
- data/app/cells/decidim/profile/details.erb +2 -1
- data/app/cells/decidim/user_activity_cell.rb +6 -1
- data/app/controllers/decidim/download_your_data_controller.rb +5 -2
- data/app/forms/decidim/user_group_form.rb +2 -0
- data/app/helpers/decidim/map_helper.rb +1 -1
- data/app/helpers/decidim/menu_helper.rb +8 -2
- data/app/models/decidim/private_export.rb +4 -0
- data/app/packs/src/decidim/form_filter.js +6 -0
- data/app/packs/src/decidim/map/controller/markers.js +3 -1
- data/app/packs/stylesheets/decidim/_author.scss +8 -0
- data/app/packs/stylesheets/decidim/_cards.scss +5 -1
- data/app/packs/stylesheets/decidim/_footer.scss +5 -0
- data/app/packs/stylesheets/decidim/_profile.scss +6 -6
- data/app/packs/stylesheets/decidim/editor.scss +3 -1
- data/app/services/decidim/download_your_data_exporter.rb +15 -4
- data/app/services/decidim/open_data_exporter.rb +2 -1
- data/app/validators/etiquette_validator.rb +2 -2
- data/app/validators/password_validator.rb +3 -1
- data/app/views/decidim/application/_document.html.erb +2 -2
- data/app/views/decidim/download_your_data/_export.html.erb +1 -1
- data/app/views/decidim/export_mailer/download_your_data_export.html.erb +1 -1
- data/app/views/decidim/export_mailer/export.html.erb +1 -1
- data/app/views/decidim/shared/_filters.html.erb +1 -1
- data/app/views/layouts/decidim/_application.html.erb +1 -1
- data/config/locales/ca-IT.yml +12 -10
- data/config/locales/ca.yml +10 -8
- data/config/locales/cs.yml +5 -0
- data/config/locales/de.yml +2 -1
- data/config/locales/en.yml +2 -0
- data/config/locales/es-MX.yml +2 -0
- data/config/locales/es-PY.yml +2 -0
- data/config/locales/es.yml +2 -0
- data/config/locales/eu.yml +49 -47
- data/config/locales/fi-plain.yml +1 -0
- data/config/locales/fi.yml +1 -0
- data/config/locales/fr-CA.yml +3 -1
- data/config/locales/fr.yml +3 -1
- data/config/locales/it.yml +2 -0
- data/config/locales/ja.yml +3 -0
- data/config/locales/ru.yml +0 -1
- data/config/locales/sl.yml +0 -1
- data/db/migrate/20250819110800_convert_private_exports_id_to_uuid.rb +55 -0
- data/lib/decidim/asset_router/storage.rb +8 -8
- data/lib/decidim/core/engine.rb +1 -0
- data/lib/decidim/core/test/factories.rb +7 -2
- data/lib/decidim/core/test/shared_examples/comments_examples.rb +24 -0
- data/lib/decidim/core/version.rb +1 -1
- data/lib/decidim/form_builder.rb +1 -1
- data/lib/decidim/webpacker/configuration.rb +5 -1
- data/lib/tasks/upgrade/clean.rake +11 -0
- data/lib/tasks/upgrade/decidim_fix_action_log.rake +28 -0
- metadata +9 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 170c5d444f05cfbcae31786562762966232e9fadad30da014a19a6ceb239a768
|
|
4
|
+
data.tar.gz: cb838708158da84fdea7082175501cd7d2bed5499b7a2450c10e3ab1b79858b9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: db97bde00dcc402180828529bb1801c527a4565d7205ce1432f6eba97348c83ce58770548fddd6c71421c6202bb70cd269bd898d7059e5cb61db3d9d84fd903c
|
|
7
|
+
data.tar.gz: c5cb74531f7240c2d1a9feb356c5e3b44e9da7016b127b048d081dc968796ce546d59bbd0088b4d1134aad40c4abe65db9cd358981c93c3ca84d9964365eebab
|
|
@@ -12,6 +12,12 @@ module Decidim
|
|
|
12
12
|
return unless renderable?
|
|
13
13
|
|
|
14
14
|
render
|
|
15
|
+
rescue NoMethodError => e
|
|
16
|
+
# Soft-deleted components or participatory spaces could cause errors
|
|
17
|
+
# when rendering activities. We log them for further inspection but
|
|
18
|
+
# avoid breaking the entire activity feed.
|
|
19
|
+
Rails.logger.error("Error rendering activity cell for #{model.id}: #{e.message}")
|
|
20
|
+
nil
|
|
15
21
|
end
|
|
16
22
|
|
|
17
23
|
# Since activity logs could be linked to resource no longer available
|
|
@@ -6,7 +6,10 @@
|
|
|
6
6
|
<%= render :avatar %>
|
|
7
7
|
|
|
8
8
|
<span>
|
|
9
|
-
|
|
9
|
+
<span class="flex gap-2">
|
|
10
|
+
<%= render :name %>
|
|
11
|
+
<%= render :badge %>
|
|
12
|
+
</span>
|
|
10
13
|
|
|
11
14
|
<% context_actions.each do |action| %>
|
|
12
15
|
<%= render action %>
|
|
@@ -17,6 +20,7 @@
|
|
|
17
20
|
<% else %>
|
|
18
21
|
<%= render :avatar %>
|
|
19
22
|
<%= render :name %>
|
|
23
|
+
<%= render :badge %>
|
|
20
24
|
<% end %>
|
|
21
25
|
<% end %>
|
|
22
26
|
|
|
@@ -186,5 +186,15 @@ module Decidim
|
|
|
186
186
|
|
|
187
187
|
model.has_tooltip?
|
|
188
188
|
end
|
|
189
|
+
|
|
190
|
+
def show_badge?
|
|
191
|
+
return false unless model.respond_to? :officialized?
|
|
192
|
+
|
|
193
|
+
model.officialized?
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
def officialization_text
|
|
197
|
+
translated_attribute(model.officialized_as).presence || t("decidim.profiles.show.officialized")
|
|
198
|
+
end
|
|
189
199
|
end
|
|
190
200
|
end
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<
|
|
1
|
+
<span class="profile__details-badge">
|
|
2
2
|
<%= icon "star-s-fill" %>
|
|
3
|
-
|
|
4
|
-
</
|
|
3
|
+
<%= officialization_text %>
|
|
4
|
+
</span>
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
<div class="profile__details">
|
|
2
|
-
<h1 class="h3">
|
|
2
|
+
<h1 class="h3 flex gap-2">
|
|
3
3
|
<%= presented_profile.name %>
|
|
4
4
|
<span class="sr-only"><%= tab_items.find { |tab_item| is_active_link?(tab_item[:path]) }&.dig(:text) %> (<%= presented_profile.name %>)</span>
|
|
5
|
+
<%= render :badge if show_badge? %>
|
|
5
6
|
</h1>
|
|
6
7
|
<div class="profile__details-data">
|
|
7
8
|
<% details_items.each do |detail| %>
|
|
@@ -11,7 +11,12 @@ module Decidim
|
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
def activities
|
|
14
|
-
context[:activities]
|
|
14
|
+
resource_ids_to_filter = context[:activities].select { |log| log[:action] == "delete" && log[:resource_type] == "Decidim::Comments::Comment" }.map(&:resource_id)
|
|
15
|
+
if resource_ids_to_filter.any?
|
|
16
|
+
context[:activities].where.not("resource_id in (?) AND resource_type = ?", resource_ids_to_filter, "Decidim::Comments::Comment")
|
|
17
|
+
else
|
|
18
|
+
context[:activities]
|
|
19
|
+
end
|
|
15
20
|
end
|
|
16
21
|
|
|
17
22
|
def resource_types
|
|
@@ -43,7 +43,10 @@ module Decidim
|
|
|
43
43
|
def download_file
|
|
44
44
|
enforce_permission_to(:download, :user, current_user:)
|
|
45
45
|
|
|
46
|
-
if private_export.
|
|
46
|
+
if private_export.blank?
|
|
47
|
+
flash[:error] = t("decidim.account.download_your_data_export.export_not_found")
|
|
48
|
+
redirect_to download_your_data_path
|
|
49
|
+
elsif private_export.expired?
|
|
47
50
|
flash[:error] = t("decidim.account.download_your_data_export.export_expired")
|
|
48
51
|
redirect_to download_your_data_path
|
|
49
52
|
elsif private_export.file.attached?
|
|
@@ -57,7 +60,7 @@ module Decidim
|
|
|
57
60
|
private
|
|
58
61
|
|
|
59
62
|
def private_export
|
|
60
|
-
@private_export ||= current_user.private_exports.
|
|
63
|
+
@private_export ||= current_user.private_exports.where(uuid: params[:uuid]).first
|
|
61
64
|
end
|
|
62
65
|
|
|
63
66
|
def help_definitions
|
|
@@ -16,10 +16,12 @@ module Decidim
|
|
|
16
16
|
attribute :phone
|
|
17
17
|
|
|
18
18
|
validates :name, presence: true
|
|
19
|
+
validates :name, format: { with: Decidim::UserBaseEntity::REGEXP_NAME }
|
|
19
20
|
validates :email, presence: true, "valid_email_2/email": { disposable: true }
|
|
20
21
|
validates :nickname, presence: true
|
|
21
22
|
|
|
22
23
|
validates :nickname, length: { maximum: Decidim::User.nickname_max_length, allow_blank: true }
|
|
24
|
+
validates :nickname, format: { with: Decidim::UserBaseEntity::REGEXP_NICKNAME }
|
|
23
25
|
validates :avatar, passthru: { to: Decidim::UserGroup }
|
|
24
26
|
|
|
25
27
|
validate :unique_document_number
|
|
@@ -81,7 +81,7 @@ module Decidim
|
|
|
81
81
|
|
|
82
82
|
help = content_tag(:div, class: "map__skip-container") do
|
|
83
83
|
sr_content = content_tag(:p, t("screen_reader_explanation", scope: "decidim.map.dynamic"), class: "sr-only")
|
|
84
|
-
link = link_to(t("skip_button", scope: "decidim.map.dynamic"), "##{bottom_id}", class: "map__skip")
|
|
84
|
+
link = link_to(t("skip_button", scope: "decidim.map.dynamic"), "##{bottom_id}", class: "map__skip", "data-skip-to-content": true)
|
|
85
85
|
|
|
86
86
|
sr_content + link
|
|
87
87
|
end
|
|
@@ -68,8 +68,14 @@ module Decidim
|
|
|
68
68
|
@menu_highlighted_participatory_process ||= (
|
|
69
69
|
# The queries already include the order by weight
|
|
70
70
|
Decidim::ParticipatoryProcesses::OrganizationParticipatoryProcesses.new(current_organization) |
|
|
71
|
-
|
|
72
|
-
).first
|
|
71
|
+
Decidim::ParticipatoryProcesses::PromotedParticipatoryProcesses.new
|
|
72
|
+
).select(&:published?).map { |process| remove_private_space_if_not_private_user(process) }&.compact&.first
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
def remove_private_space_if_not_private_user(process)
|
|
76
|
+
return nil if process.private_space == true && !process.can_participate?(current_user)
|
|
77
|
+
|
|
78
|
+
process
|
|
73
79
|
end
|
|
74
80
|
|
|
75
81
|
def home_content_block_menu
|
|
@@ -206,6 +206,12 @@ export default class FormFilterComponent {
|
|
|
206
206
|
this.changeEvents = false;
|
|
207
207
|
this._clearForm();
|
|
208
208
|
|
|
209
|
+
// Prevent filtering again on anchor link "Skip to main content", "Skip map", or "Skip to results"
|
|
210
|
+
const filterSkipValues = [...document.querySelectorAll("[data-skip-to-content]")].map((el) => el.hash);
|
|
211
|
+
if (filterSkipValues.includes(window.location.hash)) {
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
|
|
209
215
|
const filterParams = this._parseLocationFilterValues();
|
|
210
216
|
const currentOrder = this._parseLocationOrderValue();
|
|
211
217
|
|
|
@@ -67,7 +67,9 @@ export default class MapMarkersController extends MapController {
|
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
clearMarkers() {
|
|
70
|
-
|
|
70
|
+
if (this.markerClusters !== null) {
|
|
71
|
+
this.map.removeLayer(this.markerClusters);
|
|
72
|
+
}
|
|
71
73
|
this.markerClusters = new L.MarkerClusterGroup();
|
|
72
74
|
this.map.addLayer(this.markerClusters);
|
|
73
75
|
}
|
|
@@ -14,6 +14,10 @@
|
|
|
14
14
|
|
|
15
15
|
&-container {
|
|
16
16
|
@apply rounded-full overflow-hidden inline-block w-6 h-6 align-top;
|
|
17
|
+
|
|
18
|
+
&:focus-within {
|
|
19
|
+
@apply ring-2 ring-primary;
|
|
20
|
+
}
|
|
17
21
|
}
|
|
18
22
|
|
|
19
23
|
&-counter {
|
|
@@ -29,6 +33,10 @@
|
|
|
29
33
|
@apply text-secondary font-semibold;
|
|
30
34
|
}
|
|
31
35
|
|
|
36
|
+
&__badge svg {
|
|
37
|
+
@apply grid overflow-hidden place-items-center bg-primary rounded-full w-4 h-4 text-white fill-current;
|
|
38
|
+
}
|
|
39
|
+
|
|
32
40
|
&__metadata {
|
|
33
41
|
@apply flex items-center gap-1 text-gray-2 text-sm;
|
|
34
42
|
|
|
@@ -9,18 +9,18 @@
|
|
|
9
9
|
&-container {
|
|
10
10
|
@apply w-24 h-24 relative;
|
|
11
11
|
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
&__details {
|
|
15
|
+
@apply pb-3 space-y-2;
|
|
12
16
|
|
|
13
17
|
&-badge {
|
|
14
|
-
@apply
|
|
18
|
+
@apply flex items-center gap-1 text-sm text-gray-2;
|
|
15
19
|
|
|
16
20
|
svg {
|
|
17
|
-
@apply w-4 h-4 text-white fill-current;
|
|
21
|
+
@apply w-4 h-4 inline-block bg-primary rounded-full text-white fill-current;
|
|
18
22
|
}
|
|
19
23
|
}
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
&__details {
|
|
23
|
-
@apply pb-3 space-y-2;
|
|
24
24
|
|
|
25
25
|
&-data {
|
|
26
26
|
@apply flex flex-wrap gap-x-6 gap-y-4;
|
|
@@ -89,7 +89,9 @@
|
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
.ProseMirror {
|
|
92
|
-
@apply relative p-2.5 outline-0
|
|
92
|
+
@apply relative p-2.5 outline-0 resize-y overflow-hidden prose max-w-none prose-headings:first:mt-0 prose-p:first:mt-0 prose-ul:first:mt-0 prose-ol:first:mt-0 prose-blockquote:first:mt-0 prose-pre:first:mt-0;
|
|
93
|
+
|
|
94
|
+
min-height: inherit;
|
|
93
95
|
|
|
94
96
|
&.ProseMirror-focused,
|
|
95
97
|
&.dialog-open {
|
|
@@ -22,14 +22,21 @@ module Decidim
|
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
# i18n-tasks-use t("decidim.download_your_data.show.download_your_data")
|
|
25
|
-
def export
|
|
26
|
-
|
|
25
|
+
def export(retries: 0)
|
|
26
|
+
data.rewind
|
|
27
|
+
user_export = user.private_exports.build(file_size: data.length)
|
|
27
28
|
user_export.export_type = name
|
|
28
|
-
user_export.
|
|
29
|
+
user_export.content_type = "application/zip"
|
|
29
30
|
user_export.expires_at = Decidim.download_your_data_expiry_time.from_now
|
|
30
31
|
user_export.metadata = {}
|
|
31
32
|
user_export.save!
|
|
32
|
-
user_export
|
|
33
|
+
user_export.file.attach(io: data, filename: "#{name}.zip", content_type: "application/zip")
|
|
34
|
+
|
|
35
|
+
return user_export.reload if user_export.reload.file.attached?
|
|
36
|
+
return user_export.reload if retries >= 3
|
|
37
|
+
|
|
38
|
+
user_export.destroy!
|
|
39
|
+
export(retries: retries + 1)
|
|
33
40
|
end
|
|
34
41
|
|
|
35
42
|
private
|
|
@@ -37,6 +44,10 @@ module Decidim
|
|
|
37
44
|
attr_reader :user, :export_format, :name
|
|
38
45
|
|
|
39
46
|
def data
|
|
47
|
+
@data ||= load_data!
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def load_data!
|
|
40
51
|
user_data, user_attachments = data_and_attachments_for_user
|
|
41
52
|
buffer = Zip::OutputStream.write_buffer do |out|
|
|
42
53
|
save_user_data(out, user_data)
|
|
@@ -116,9 +116,10 @@ module Decidim
|
|
|
116
116
|
end
|
|
117
117
|
|
|
118
118
|
def data_for_participatory_space(export_manifest)
|
|
119
|
-
collection = participatory_spaces.flat_map do |participatory_space|
|
|
119
|
+
collection = participatory_spaces.filter { |space| space.manifest.name == export_manifest.manifest.name }.flat_map do |participatory_space|
|
|
120
120
|
export_manifest.collection.call(participatory_space)
|
|
121
121
|
end
|
|
122
|
+
|
|
122
123
|
serializer = export_manifest.open_data_serializer.nil? ? export_manifest.serializer : export_manifest.open_data_serializer
|
|
123
124
|
exporter = Decidim::Exporters::CSV.new(collection, serializer)
|
|
124
125
|
get_help_definition(:spaces, exporter, export_manifest) unless collection.empty?
|
|
@@ -24,7 +24,7 @@ class EtiquetteValidator < ActiveModel::EachValidator
|
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
def validate_caps(record, attribute, value)
|
|
27
|
-
number_of_caps = value.scan(/[
|
|
27
|
+
number_of_caps = value.scan(/[[:upper:]]/).length
|
|
28
28
|
return if number_of_caps.zero? || number_of_caps < value.length / 2 # 50%
|
|
29
29
|
|
|
30
30
|
record.errors.add(attribute, options[:message] || :too_much_caps)
|
|
@@ -37,7 +37,7 @@ class EtiquetteValidator < ActiveModel::EachValidator
|
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
def validate_caps_first(record, attribute, value)
|
|
40
|
-
return if value.scan(/\A[
|
|
40
|
+
return if value.scan(/\A[[:lower:]]{1}/).empty?
|
|
41
41
|
|
|
42
42
|
record.errors.add(attribute, options[:message] || :must_start_with_caps)
|
|
43
43
|
end
|
|
@@ -55,7 +55,9 @@ class PasswordValidator < ActiveModel::EachValidator
|
|
|
55
55
|
attr_reader :record, :attribute, :value
|
|
56
56
|
|
|
57
57
|
def get_message(reason)
|
|
58
|
-
I18n.t "password_validator.#{reason}"
|
|
58
|
+
I18n.t! "password_validator.#{reason}"
|
|
59
|
+
rescue I18n::MissingTranslationData
|
|
60
|
+
I18n.t "password_validator.fallback"
|
|
59
61
|
end
|
|
60
62
|
|
|
61
63
|
def organization
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<div id="<%= dom_id(document) %>">
|
|
2
2
|
<div class="card__list-content">
|
|
3
|
-
|
|
3
|
+
<span class="card__list-title">
|
|
4
4
|
<%= h attachment_title(document) %>
|
|
5
|
-
|
|
5
|
+
</span>
|
|
6
6
|
<% if document.description.present? %>
|
|
7
7
|
<div class="card__list-text"><%= decidim_escape_translated(document.description) %></div>
|
|
8
8
|
<% end %>
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<td class="text-left p-4"><%= t(export.export_type, scope:"decidim.download_your_data.show") %></td>
|
|
3
3
|
<td class="text-center"><%= export.expired? ? t("expired", scope:"decidim.download_your_data.show") : l(export.expires_at, format: :decidim_short) %></td>
|
|
4
4
|
<td class="py-4">
|
|
5
|
-
<%= button_to download_download_your_data_path(export),
|
|
5
|
+
<%= button_to download_download_your_data_path(uuid: export.uuid),
|
|
6
6
|
class: "button button__sm button__transparent-secondary m-auto block",
|
|
7
7
|
disabled: export.expired?,
|
|
8
8
|
aria: { label: t("download", scope:"decidim.download_your_data.show") },
|
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<p class="email-button email-button__cta">
|
|
6
|
-
<%= link_to t(".download"), download_download_your_data_url(@private_export, host: @organization.host), class: "button expanded hollow button--sc" %>
|
|
6
|
+
<%= link_to t(".download"), download_download_your_data_url(uuid: @private_export.uuid, host: @organization.host), class: "button expanded hollow button--sc" %>
|
|
7
7
|
</p>
|
|
@@ -3,5 +3,5 @@
|
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
<p class="email-button email-button__cta">
|
|
6
|
-
<%= link_to t(".download"), download_download_your_data_url(@private_export, host: @organization.host), class: "button expanded hollow button--sc" %>
|
|
6
|
+
<%= link_to t(".download"), download_download_your_data_url(uuid: @private_export.uuid, host: @organization.host), class: "button expanded hollow button--sc" %>
|
|
7
7
|
</p>
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
<div id="dropdown-menu-filters">
|
|
16
16
|
<% if local_assigns.has_key?(:skip_to_id) %>
|
|
17
|
-
<%= link_to t("skip", scope: "decidim.shared.filter_form_help"), "##{skip_to_id}", class: "filter-skip", role: "menuitem" %>
|
|
17
|
+
<%= link_to t("skip", scope: "decidim.shared.filter_form_help"), "##{skip_to_id}", class: "filter-skip", role: "menuitem", "data-skip-to-content": true %>
|
|
18
18
|
<% end %>
|
|
19
19
|
|
|
20
20
|
<p id="filter-help-text" class="filter-help" role="menuitem" aria-disabled="true"><%= t("help", scope: "decidim.shared.filter_form_help") %></p>
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
|
|
9
9
|
<body class="text-black text-md form-defaults<%= yield (:body_class) %>">
|
|
10
10
|
<!--noindex--><!--googleoff: all-->
|
|
11
|
-
<%= link_to t("skip_button", scope: "decidim.accessibility"), "#content", class: "layout-container__skip" %>
|
|
11
|
+
<%= link_to t("skip_button", scope: "decidim.accessibility"), "#content", class: "layout-container__skip", "data-skip-to-content": true %>
|
|
12
12
|
<%= cell("decidim/data_consent", current_organization) %>
|
|
13
13
|
<!--googleon: all--><!--/noindex-->
|
|
14
14
|
|
data/config/locales/ca-IT.yml
CHANGED
|
@@ -66,7 +66,7 @@ ca-IT:
|
|
|
66
66
|
decidim/attachment_created_event: Arxiu adjunt
|
|
67
67
|
decidim/component_published_event: Component actiu
|
|
68
68
|
decidim/demoted_membership: Ja no ets una administradora del grup
|
|
69
|
-
decidim/gamification/badge_earned_event:
|
|
69
|
+
decidim/gamification/badge_earned_event: Ensenya obtinguda
|
|
70
70
|
decidim/gamification/level_up_event: Has pujat de nivell
|
|
71
71
|
decidim/invited_to_group_event: Convidada al grup
|
|
72
72
|
decidim/join_request_accepted_event: Sol·licitud d'incorporació acceptada
|
|
@@ -204,6 +204,7 @@ ca-IT:
|
|
|
204
204
|
success: El teu compte s'ha eliminat correctament.
|
|
205
205
|
download_your_data_export:
|
|
206
206
|
export_expired: L'exportació ha caducat. Intenta generar una nova exportació.
|
|
207
|
+
export_not_found: L'exportació a la qual has accedit no existeix o no tens accés o permisos per descarregar-la
|
|
207
208
|
file_no_exists: L'arxiu no existeix
|
|
208
209
|
notice: La descàrrega de les teves dades està en curs. Rebràs un correu electrònic quan estigui completa.
|
|
209
210
|
email_change:
|
|
@@ -1147,7 +1148,7 @@ ca-IT:
|
|
|
1147
1148
|
dropzone: Arrossega-hi els arxius o fes clic per a pujar-los
|
|
1148
1149
|
explanation: Guia per a %{attribute}
|
|
1149
1150
|
gamification:
|
|
1150
|
-
all_badges_link: Veure totes les
|
|
1151
|
+
all_badges_link: Veure totes les ensenyes disponibles.
|
|
1151
1152
|
badges:
|
|
1152
1153
|
followers:
|
|
1153
1154
|
conditions:
|
|
@@ -1160,11 +1161,11 @@ ca-IT:
|
|
|
1160
1161
|
unearned_another: Aquesta participant encara no té seguidores.
|
|
1161
1162
|
unearned_own: Encara no et segueix ningú.
|
|
1162
1163
|
index:
|
|
1163
|
-
badge_title: "
|
|
1164
|
+
badge_title: "Ensenya %{name}"
|
|
1164
1165
|
how: Com pots aconseguir-la
|
|
1165
|
-
page_description: Les
|
|
1166
|
-
title:
|
|
1167
|
-
description: Les
|
|
1166
|
+
page_description: Les ensenyes són reconeixements de les accions de les participants i del progrés en la plataforma. A mesura que comencis a descobrir, participar i interactuar amb la plataforma, n'obtindràs de diferents tipus. Aquí tens la llista d'ensenyes i algunes formes d'aconseguir-les.
|
|
1167
|
+
title: Ensenyes
|
|
1168
|
+
description: Les ensenyes són reconeixements de les accions de les participants i del progrés en la plataforma. A mesura que comencis a descobrir, participar i interactuar amb la plataforma, n'obtindràs de diferents tipus.
|
|
1168
1169
|
level: Nivell %{level}
|
|
1169
1170
|
reached_top: Has arribat al màxim nivell d'aquesta ensenya.
|
|
1170
1171
|
title: Què són les ensenyes?
|
|
@@ -1292,6 +1293,7 @@ ca-IT:
|
|
|
1292
1293
|
create_with_space: "%{user_name} ha creat %{resource_name} a %{space_name}"
|
|
1293
1294
|
delete: "%{user_name} ha eliminat %{resource_name}"
|
|
1294
1295
|
delete_with_space: "%{user_name} ha eliminat %{resource_name} en %{space_name}"
|
|
1296
|
+
publish: "%{user_name} ha publicat %{resource_name}"
|
|
1295
1297
|
publish_with_space: "%{user_name} ha publicat %{resource_name} en %{space_name}"
|
|
1296
1298
|
unknown_action: "%{user_name} ha realitzat una acció a %{resource_name}"
|
|
1297
1299
|
unknown_action_with_space: "%{user_name} ha realitzat una acció a %{resource_name} en %{space_name}"
|
|
@@ -1718,7 +1720,7 @@ ca-IT:
|
|
|
1718
1720
|
default_officialization_text_for_users: Aquesta participant està verificada públicament. S'ha verificat que el seu nom o la seva funció es correspon amb el seu nom i funció reals.
|
|
1719
1721
|
show:
|
|
1720
1722
|
activity: Activitat
|
|
1721
|
-
badges:
|
|
1723
|
+
badges: Ensenyes
|
|
1722
1724
|
conversations: Converses
|
|
1723
1725
|
followers: Seguidores
|
|
1724
1726
|
following: Seguint
|
|
@@ -1950,7 +1952,7 @@ ca-IT:
|
|
|
1950
1952
|
show:
|
|
1951
1953
|
version_index: Versió %{index} de %{total}
|
|
1952
1954
|
welcome_notification:
|
|
1953
|
-
default_body: <p>Hola {{name}}, gràcies per unir-te a {{organization}}
|
|
1955
|
+
default_body: <p>Hola {{name}}, gràcies per unir-te a {{organization}} i benvinguda!</p><ul><li>Si vols fer-te una idea ràpida del que pots fer aquí, fes un cop d'ull a la secció d'<a href="{{help_url}}">Ajuda</a>.</li><li>Un cop l'hagis llegit obtindràs la teva primera ensenya. Aquí tens la <a href="{{badges_url}}">llista</a> de totes les ensenyes que pots anar aconseguint a mesura que participis a {{organization}}</li><li>Finalment, però no per això menys important, uneix-te a altres persones, comparteix amb elles l'experiència d'implicar-se i participar a {{organization}}. Fes propostes, comenta, debat, pensa en com contribuir al bé comú, aporta arguments per convèncer, escolta i llegeix per convèncer-te, expressa les teves idees de manera concreta i directa, respon amb paciència i decisió, defensa les teves idees i manté la ment oberta a col·laborar i sumar-te a les idees d'altres persones.</li></ul>
|
|
1954
1956
|
default_subject: Gràcies per unir-te a {{organization}}!
|
|
1955
1957
|
wizard_step_form:
|
|
1956
1958
|
wizard_aside:
|
|
@@ -2339,8 +2341,8 @@ ca-IT:
|
|
|
2339
2341
|
title: Configuració de la participant
|
|
2340
2342
|
user_groups: Grups
|
|
2341
2343
|
locale:
|
|
2342
|
-
name:
|
|
2343
|
-
name_with_error:
|
|
2344
|
+
name: Alguerés
|
|
2345
|
+
name_with_error: Alguerés (error!)
|
|
2344
2346
|
password_validator:
|
|
2345
2347
|
denied: no és vàlid
|
|
2346
2348
|
domain_included_in_password: és massa semblant a aquest nom de domini
|
data/config/locales/ca.yml
CHANGED
|
@@ -66,7 +66,7 @@ ca:
|
|
|
66
66
|
decidim/attachment_created_event: Arxiu adjunt
|
|
67
67
|
decidim/component_published_event: Component actiu
|
|
68
68
|
decidim/demoted_membership: Ja no ets una administradora del grup
|
|
69
|
-
decidim/gamification/badge_earned_event:
|
|
69
|
+
decidim/gamification/badge_earned_event: Ensenya obtinguda
|
|
70
70
|
decidim/gamification/level_up_event: Has pujat de nivell
|
|
71
71
|
decidim/invited_to_group_event: Convidada al grup
|
|
72
72
|
decidim/join_request_accepted_event: Sol·licitud d'incorporació acceptada
|
|
@@ -204,6 +204,7 @@ ca:
|
|
|
204
204
|
success: El teu compte s'ha eliminat correctament.
|
|
205
205
|
download_your_data_export:
|
|
206
206
|
export_expired: L'exportació ha caducat. Intenta generar una nova exportació.
|
|
207
|
+
export_not_found: L'exportació a la qual has accedit no existeix o no tens accés o permisos per descarregar-la
|
|
207
208
|
file_no_exists: L'arxiu no existeix
|
|
208
209
|
notice: La descàrrega de les teves dades està en curs. Rebràs un correu electrònic quan estigui completa.
|
|
209
210
|
email_change:
|
|
@@ -1147,7 +1148,7 @@ ca:
|
|
|
1147
1148
|
dropzone: Arrossega-hi els arxius o fes clic per a pujar-los
|
|
1148
1149
|
explanation: Guia per a %{attribute}
|
|
1149
1150
|
gamification:
|
|
1150
|
-
all_badges_link: Veure totes les
|
|
1151
|
+
all_badges_link: Veure totes les ensenyes disponibles.
|
|
1151
1152
|
badges:
|
|
1152
1153
|
followers:
|
|
1153
1154
|
conditions:
|
|
@@ -1160,11 +1161,11 @@ ca:
|
|
|
1160
1161
|
unearned_another: Aquesta participant encara no té seguidores.
|
|
1161
1162
|
unearned_own: Encara no et segueix ningú.
|
|
1162
1163
|
index:
|
|
1163
|
-
badge_title: "
|
|
1164
|
+
badge_title: "Ensenya %{name}"
|
|
1164
1165
|
how: Com pots aconseguir-la
|
|
1165
|
-
page_description: Les
|
|
1166
|
-
title:
|
|
1167
|
-
description: Les
|
|
1166
|
+
page_description: Les ensenyes són reconeixements de les accions de les participants i del progrés en la plataforma. A mesura que comencis a descobrir, participar i interactuar amb la plataforma, n'obtindràs de diferents tipus. Aquí tens la llista d'ensenyes i algunes formes d'aconseguir-les.
|
|
1167
|
+
title: Ensenyes
|
|
1168
|
+
description: Les ensenyes són reconeixements de les accions de les participants i del progrés en la plataforma. A mesura que comencis a descobrir, participar i interactuar amb la plataforma, n'obtindràs de diferents tipus.
|
|
1168
1169
|
level: Nivell %{level}
|
|
1169
1170
|
reached_top: Has arribat al màxim nivell d'aquesta ensenya.
|
|
1170
1171
|
title: Què són les ensenyes?
|
|
@@ -1292,6 +1293,7 @@ ca:
|
|
|
1292
1293
|
create_with_space: "%{user_name} ha creat %{resource_name} a %{space_name}"
|
|
1293
1294
|
delete: "%{user_name} ha eliminat %{resource_name}"
|
|
1294
1295
|
delete_with_space: "%{user_name} ha eliminat %{resource_name} en %{space_name}"
|
|
1296
|
+
publish: "%{user_name} ha publicat %{resource_name}"
|
|
1295
1297
|
publish_with_space: "%{user_name} ha publicat %{resource_name} en %{space_name}"
|
|
1296
1298
|
unknown_action: "%{user_name} ha realitzat una acció a %{resource_name}"
|
|
1297
1299
|
unknown_action_with_space: "%{user_name} ha realitzat una acció a %{resource_name} en %{space_name}"
|
|
@@ -1718,7 +1720,7 @@ ca:
|
|
|
1718
1720
|
default_officialization_text_for_users: Aquesta participant està verificada públicament. S'ha verificat que el seu nom o la seva funció es correspon amb el seu nom i funció reals.
|
|
1719
1721
|
show:
|
|
1720
1722
|
activity: Activitat
|
|
1721
|
-
badges:
|
|
1723
|
+
badges: Ensenyes
|
|
1722
1724
|
conversations: Converses
|
|
1723
1725
|
followers: Seguidores
|
|
1724
1726
|
following: Seguint
|
|
@@ -1950,7 +1952,7 @@ ca:
|
|
|
1950
1952
|
show:
|
|
1951
1953
|
version_index: Versió %{index} de %{total}
|
|
1952
1954
|
welcome_notification:
|
|
1953
|
-
default_body: <p>Hola {{name}}, gràcies per unir-te a {{organization}}
|
|
1955
|
+
default_body: <p>Hola {{name}}, gràcies per unir-te a {{organization}} i benvinguda!</p><ul><li>Si vols fer-te una idea ràpida del que pots fer aquí, fes un cop d'ull a la secció d'<a href="{{help_url}}">Ajuda</a>.</li><li>Un cop l'hagis llegit obtindràs la teva primera ensenya. Aquí tens la <a href="{{badges_url}}">llista</a> de totes les ensenyes que pots anar aconseguint a mesura que participis a {{organization}}</li><li>Finalment, però no per això menys important, uneix-te a altres persones, comparteix amb elles l'experiència d'implicar-se i participar a {{organization}}. Fes propostes, comenta, debat, pensa en com contribuir al bé comú, aporta arguments per convèncer, escolta i llegeix per convèncer-te, expressa les teves idees de manera concreta i directa, respon amb paciència i decisió, defensa les teves idees i manté la ment oberta a col·laborar i sumar-te a les idees d'altres persones.</li></ul>
|
|
1954
1956
|
default_subject: Gràcies per unir-te a {{organization}}!
|
|
1955
1957
|
wizard_step_form:
|
|
1956
1958
|
wizard_aside:
|
data/config/locales/cs.yml
CHANGED
|
@@ -1208,6 +1208,8 @@ cs:
|
|
|
1208
1208
|
title: Jaké jsou odznaky?
|
|
1209
1209
|
group_admins:
|
|
1210
1210
|
actions:
|
|
1211
|
+
confirm_modal:
|
|
1212
|
+
ok_add: Přidat administrátora
|
|
1211
1213
|
demote_admin: Odstranit admin
|
|
1212
1214
|
demote:
|
|
1213
1215
|
error: Při odebrání tohoto účastníka ze seznamu administrátorů došlo k chybě.
|
|
@@ -1237,6 +1239,9 @@ cs:
|
|
|
1237
1239
|
error: Při přijímání této žádosti o připojení došlo k chybě.
|
|
1238
1240
|
success: Žádost o připojení byla úspěšně přijata.
|
|
1239
1241
|
actions:
|
|
1242
|
+
confirm_modal:
|
|
1243
|
+
ok_remove: Odebrat člena
|
|
1244
|
+
title_remove: Odebrat člena
|
|
1240
1245
|
promote_to_admin: Udělat adminem
|
|
1241
1246
|
remove_from_group: Odstranit uživatele
|
|
1242
1247
|
index:
|