decidim-core 0.31.0.rc1 → 0.31.0.rc2
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/author/avatar.erb +1 -7
- data/app/cells/decidim/author/badge.erb +6 -0
- data/app/cells/decidim/author/name.erb +1 -5
- data/app/cells/decidim/author/show.erb +47 -15
- 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/helpers/decidim/map_helper.rb +1 -1
- data/app/helpers/decidim/menu_helper.rb +8 -2
- data/app/mailers/decidim/user_group_mailer.rb +21 -0
- data/app/models/decidim/user.rb +2 -2
- data/app/packs/src/decidim/controllers/editor/controller.js +4 -1
- data/app/packs/src/decidim/controllers/form_filter/controller.js +6 -0
- data/app/packs/src/decidim/refactor/moved/check_boxes_tree.js +1 -0
- data/app/packs/stylesheets/decidim/_accordion.scss +4 -4
- data/app/packs/stylesheets/decidim/_author.scss +15 -1
- data/app/packs/stylesheets/decidim/_cards.scss +5 -1
- data/app/packs/stylesheets/decidim/_profile.scss +6 -6
- data/app/packs/stylesheets/decidim/editor.scss +3 -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/shared/_filters.html.erb +1 -1
- data/app/views/decidim/user_group_mailer/notify_deprecation_to_member.html.erb +4 -1
- data/app/views/decidim/user_group_mailer/notify_deprecation_to_owner.html.erb +1 -4
- data/app/views/decidim/user_group_mailer/notify_user_group_patched.html.erb +21 -0
- data/app/views/layouts/decidim/_application.html.erb +1 -1
- data/config/locales/ca-IT.yml +26 -16
- data/config/locales/ca.yml +26 -16
- data/config/locales/cs.yml +6 -7
- data/config/locales/de.yml +1 -10
- data/config/locales/en.yml +20 -10
- data/config/locales/es-MX.yml +18 -8
- data/config/locales/es-PY.yml +18 -8
- data/config/locales/es.yml +18 -8
- data/config/locales/eu.yml +36 -35
- data/config/locales/fi-plain.yml +9 -9
- data/config/locales/fi.yml +9 -9
- data/config/locales/fr-CA.yml +9 -9
- data/config/locales/fr.yml +9 -9
- data/config/locales/ja.yml +0 -10
- data/config/locales/ro-RO.yml +1 -1
- data/db/migrate/20250217192438_convert_user_groups_into_users.rb +19 -1
- data/lib/decidim/asset_router/storage.rb +8 -8
- data/lib/decidim/core/version.rb +1 -1
- data/lib/decidim/form_builder.rb +1 -1
- data/lib/tasks/upgrade/user_groups_migration.rake +33 -0
- metadata +8 -6
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 20b25b4c72d8bdd6dc49a4de6ef5c9668d93ee906c40e9ca1147883682b22a32
|
|
4
|
+
data.tar.gz: aa75ba1beac71b39a10ac9dc539be1c8390aaa6ac61d253f16b02889a58933a9
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 108a66dff2b65eb213285e9335ae7c4e365f541fb49460973c07e4a372ebbf5673514113cfc5e3fb451ee867ad6a0de40a520f7953da10d95c5ad05ed97e98cb
|
|
7
|
+
data.tar.gz: fd774c108044e92d3181a8d3fb57d5b2c6cfa42bd411485765bb53e302dc3bf480022f9bda4fa4bbec7050c8a898db5ba7c267a68ec58ecccd1324c8d7554a07
|
|
@@ -1,26 +1,58 @@
|
|
|
1
1
|
<%= content_tag(:p, class: :author, data: ) do %>
|
|
2
|
-
|
|
3
|
-
<% if layout == :compact %>
|
|
4
|
-
<%= render :avatar %>
|
|
2
|
+
<% if layout == :compact %>
|
|
5
3
|
|
|
6
|
-
|
|
7
|
-
|
|
4
|
+
<% if profile_path? %>
|
|
5
|
+
<%= link_to profile_path, class: "author__container is-compact" do %>
|
|
6
|
+
<%= render :avatar %>
|
|
7
|
+
|
|
8
|
+
<span>
|
|
9
|
+
<span class="flex gap-2">
|
|
10
|
+
<%= render :name %>
|
|
11
|
+
<%= render :badge %>
|
|
12
|
+
</span>
|
|
8
13
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
<%= render :avatar %>
|
|
14
|
+
<% context_actions.each do |action| %>
|
|
15
|
+
<%= render action %>
|
|
16
|
+
<% end %>
|
|
17
|
+
</span>
|
|
18
|
+
<% end %>
|
|
15
19
|
<% else %>
|
|
16
|
-
<%=
|
|
17
|
-
|
|
20
|
+
<%= content_tag :span, class: "author__container is-compact" do %>
|
|
21
|
+
<%= render :avatar %>
|
|
22
|
+
|
|
23
|
+
<span>
|
|
24
|
+
<%= render :name %>
|
|
25
|
+
|
|
26
|
+
<% context_actions.each do |action| %>
|
|
27
|
+
<%= render action %>
|
|
28
|
+
<% end %>
|
|
29
|
+
</span>
|
|
30
|
+
<% end %>
|
|
31
|
+
<% end %>
|
|
32
|
+
<% elsif layout == :avatar %>
|
|
33
|
+
<%= render :avatar %>
|
|
34
|
+
<% else %>
|
|
35
|
+
<% if profile_path? %>
|
|
36
|
+
<%= link_to profile_path, class: "author__container" do %>
|
|
37
|
+
<%= render :avatar %>
|
|
38
|
+
|
|
39
|
+
<%= render :name %>
|
|
40
|
+
<%= render :badge %>
|
|
41
|
+
<% end %>
|
|
42
|
+
<% else %>
|
|
43
|
+
<%= content_tag :span, class: "author__container" do %>
|
|
44
|
+
<%= render :avatar %>
|
|
45
|
+
<%= render :name %>
|
|
46
|
+
<%= render :badge %>
|
|
47
|
+
<% end %>
|
|
18
48
|
<% end %>
|
|
19
49
|
<% end %>
|
|
20
50
|
|
|
21
51
|
<% if layout == :default %>
|
|
22
|
-
|
|
23
|
-
|
|
52
|
+
<%= content_tag :span, class: "author__container" do %>
|
|
53
|
+
<% context_actions.each do |action| %>
|
|
54
|
+
<%= render action %>
|
|
55
|
+
<% end %>
|
|
24
56
|
<% end %>
|
|
25
57
|
<% end %>
|
|
26
58
|
<% end %>
|
|
@@ -163,5 +163,15 @@ module Decidim
|
|
|
163
163
|
def resource_name
|
|
164
164
|
@resource_name ||= from_context.class.name.demodulize.underscore
|
|
165
165
|
end
|
|
166
|
+
|
|
167
|
+
def show_badge?
|
|
168
|
+
return false unless model.respond_to? :officialized?
|
|
169
|
+
|
|
170
|
+
model.officialized?
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
def officialization_text
|
|
174
|
+
translated_attribute(model.officialized_as).presence || t("decidim.profiles.show.officialized")
|
|
175
|
+
end
|
|
166
176
|
end
|
|
167
177
|
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"><%= user_tabs.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
|
|
@@ -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
|
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
module Decidim
|
|
4
4
|
class UserGroupMailer < ApplicationMailer
|
|
5
|
+
# This is a mailer that aids migration from the old user_groups to the new user group system
|
|
6
|
+
# This should be used only in the scope of the migration process
|
|
7
|
+
# @deprecated This mailer will be removed in decidim v0.32.0
|
|
5
8
|
def notify_deprecation_to_owner(group)
|
|
6
9
|
with_user(group) do
|
|
7
10
|
@group_name = group.name
|
|
@@ -13,6 +16,9 @@ module Decidim
|
|
|
13
16
|
end
|
|
14
17
|
end
|
|
15
18
|
|
|
19
|
+
# This is a mailer that aids migration from the old user_groups to the new user group system
|
|
20
|
+
# This should be used only in the scope of the migration process
|
|
21
|
+
# @deprecated This mailer will be removed in decidim v0.32.0
|
|
16
22
|
def notify_deprecation_to_member(user, group_name, group_email)
|
|
17
23
|
with_user(user) do
|
|
18
24
|
@user = user
|
|
@@ -24,5 +30,20 @@ module Decidim
|
|
|
24
30
|
mail(to: user.email, subject:)
|
|
25
31
|
end
|
|
26
32
|
end
|
|
33
|
+
|
|
34
|
+
# This is a mailer that aids migration from the old user_groups to the new user group system
|
|
35
|
+
# This should be used only in the scope of the migration process
|
|
36
|
+
# @deprecated This mailer will be removed in decidim v0.32.0
|
|
37
|
+
def notify_user_group_patched(group, user, password)
|
|
38
|
+
with_user(user) do
|
|
39
|
+
@group = group
|
|
40
|
+
@user = user
|
|
41
|
+
@password = password
|
|
42
|
+
@organization = user.organization
|
|
43
|
+
|
|
44
|
+
subject = I18n.t("notify_user_group_patched.subject", scope: "decidim.user_group_mailer")
|
|
45
|
+
mail(to: user.email, subject:)
|
|
46
|
+
end
|
|
47
|
+
end
|
|
27
48
|
end
|
|
28
49
|
end
|
data/app/models/decidim/user.rb
CHANGED
|
@@ -66,8 +66,8 @@ module Decidim
|
|
|
66
66
|
scope :active_after_notification, lambda {
|
|
67
67
|
where("current_sign_in_at > (extended_data->'inactivity_notification'->>'sent_at')::timestamp")
|
|
68
68
|
}
|
|
69
|
-
scope :user_group, -> { where("#{arel_table.name}.extended_data @> ?",
|
|
70
|
-
scope :not_user_group, -> { where.not("#{arel_table.name}.extended_data @> ?",
|
|
69
|
+
scope :user_group, -> { where("#{arel_table.name}.extended_data @> ?", { group: true }.to_json) }
|
|
70
|
+
scope :not_user_group, -> { where.not("#{arel_table.name}.extended_data @> ?", { group: true }.to_json) }
|
|
71
71
|
|
|
72
72
|
attr_accessor :newsletter_notifications
|
|
73
73
|
|
|
@@ -3,6 +3,9 @@ import createEditor from "src/decidim/editor";
|
|
|
3
3
|
|
|
4
4
|
export default class extends Controller {
|
|
5
5
|
connect() {
|
|
6
|
-
|
|
6
|
+
if (!this.element.dataset.editorInitialized) {
|
|
7
|
+
this.editor = createEditor(this.element);
|
|
8
|
+
this.element.dataset.editorInitialized = true;
|
|
9
|
+
}
|
|
7
10
|
}
|
|
8
11
|
}
|
|
@@ -213,6 +213,12 @@ export default class extends Controller {
|
|
|
213
213
|
this.changeEvents = false;
|
|
214
214
|
this._clearForm();
|
|
215
215
|
|
|
216
|
+
// Prevent filtering again on anchor link "Skip to main content", "Skip map", or "Skip to results"
|
|
217
|
+
const filterSkipValues = [...document.querySelectorAll("[data-skip-to-content]")].map((el) => el.hash);
|
|
218
|
+
if (filterSkipValues.includes(window.location.hash)) {
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
|
|
216
222
|
const filterParams = this._parseLocationFilterValues();
|
|
217
223
|
const currentOrder = this._parseLocationOrderValue();
|
|
218
224
|
|
|
@@ -116,6 +116,7 @@ export default class CheckBoxesTree {
|
|
|
116
116
|
const indeterminateSiblings = totalCheckSiblings.filter((checkbox) => checkbox.indeterminate)
|
|
117
117
|
|
|
118
118
|
if (checkedSiblings.length === 0 && indeterminateSiblings.length === 0) {
|
|
119
|
+
parentCheck.checked = false;
|
|
119
120
|
parentCheck.indeterminate = false;
|
|
120
121
|
} else if (checkedSiblings.length === totalCheckSiblings.length && indeterminateSiblings.length === 0) {
|
|
121
122
|
parentCheck.checked = true;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
[data-controller
|
|
1
|
+
[data-controller*="accordion"] [id*="panel"][aria-hidden="true"] {
|
|
2
2
|
display: none;
|
|
3
3
|
}
|
|
4
4
|
|
|
5
|
-
[data-controller
|
|
5
|
+
[data-controller*="accordion"]
|
|
6
6
|
[id*="comment"][class="comment-reply"][aria-hidden="true"] {
|
|
7
7
|
display: none;
|
|
8
8
|
}
|
|
9
9
|
|
|
10
|
-
[data-controller
|
|
10
|
+
[data-controller*="accordion"]
|
|
11
11
|
[id*="comment"][class="comment-reply"][aria-hidden="false"] {
|
|
12
12
|
display: block;
|
|
13
13
|
}
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
@apply mr-4;
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
-
&-section.content-block__description[data-controller
|
|
60
|
+
&-section.content-block__description[data-controller*="accordion"] {
|
|
61
61
|
@apply pb-4 mb-4 text-md;
|
|
62
62
|
|
|
63
63
|
padding-left: 1.85rem;
|
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
.author {
|
|
2
|
-
@apply flex items-center
|
|
2
|
+
@apply flex items-center divide-gray-3 divide-x text-sm text-gray-2;
|
|
3
|
+
|
|
4
|
+
a.author__container {
|
|
5
|
+
.author__name {
|
|
6
|
+
@apply underline text-secondary font-bold;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
3
9
|
|
|
4
10
|
&__container {
|
|
5
11
|
@apply flex items-center gap-2.5 first:[&>*]:flex-none;
|
|
@@ -14,6 +20,10 @@
|
|
|
14
20
|
|
|
15
21
|
&-container {
|
|
16
22
|
@apply rounded-full overflow-hidden inline-block w-6 h-6 align-top;
|
|
23
|
+
|
|
24
|
+
&:focus-within {
|
|
25
|
+
@apply ring-2 ring-primary;
|
|
26
|
+
}
|
|
17
27
|
}
|
|
18
28
|
|
|
19
29
|
&-counter {
|
|
@@ -29,6 +39,10 @@
|
|
|
29
39
|
@apply text-secondary font-semibold;
|
|
30
40
|
}
|
|
31
41
|
|
|
42
|
+
&__badge svg {
|
|
43
|
+
@apply grid overflow-hidden place-items-center bg-primary rounded-full w-4 h-4 text-white fill-current;
|
|
44
|
+
}
|
|
45
|
+
|
|
32
46
|
&__metadata {
|
|
33
47
|
@apply flex items-center gap-1 text-gray-2 text-sm;
|
|
34
48
|
|
|
@@ -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;
|
|
@@ -84,7 +84,9 @@
|
|
|
84
84
|
}
|
|
85
85
|
|
|
86
86
|
.ProseMirror {
|
|
87
|
-
@apply relative p-2.5 outline-0
|
|
87
|
+
@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;
|
|
88
|
+
|
|
89
|
+
min-height: inherit;
|
|
88
90
|
|
|
89
91
|
&.ProseMirror-focused,
|
|
90
92
|
&.dialog-open {
|
|
@@ -31,7 +31,7 @@ class EtiquetteValidator < ActiveModel::EachValidator
|
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
def validate_caps(record, attribute, value)
|
|
34
|
-
number_of_caps = value.scan(/[
|
|
34
|
+
number_of_caps = value.scan(/[[:upper:]]/).length
|
|
35
35
|
return if number_of_caps.zero? || number_of_caps < value.length / 2 # 50%
|
|
36
36
|
|
|
37
37
|
record.errors.add(attribute, options[:message] || :too_much_caps)
|
|
@@ -44,7 +44,7 @@ class EtiquetteValidator < ActiveModel::EachValidator
|
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
def validate_caps_first(record, attribute, value)
|
|
47
|
-
return if value.scan(/\A[
|
|
47
|
+
return if value.scan(/\A[[:lower:]]{1}/).empty?
|
|
48
48
|
|
|
49
49
|
record.errors.add(attribute, options[:message] || :must_start_with_caps)
|
|
50
50
|
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 %>
|
|
@@ -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>
|
|
@@ -6,10 +6,13 @@
|
|
|
6
6
|
|
|
7
7
|
<p class="email-instructions"><%= t(".instructions_title").html_safe %></p>
|
|
8
8
|
|
|
9
|
-
<p class="email-instructions"><%= t(".instructions_intro") %></p>
|
|
9
|
+
<p class="email-instructions"><%= t(".instructions_intro", email: @group_email) %></p>
|
|
10
10
|
|
|
11
11
|
<ul class="list-decimal">
|
|
12
12
|
<li>
|
|
13
13
|
<%= t(".instructions_1") %>
|
|
14
14
|
</li>
|
|
15
|
+
<li>
|
|
16
|
+
<%= t(".instructions_2") %>
|
|
17
|
+
</li>
|
|
15
18
|
</ul>
|
|
@@ -14,9 +14,6 @@
|
|
|
14
14
|
<p class="email-button email-button__cta"><%= link_to t(".set_password"), new_password_url(:user, host: @organization.host) %></p>
|
|
15
15
|
</li>
|
|
16
16
|
<li>
|
|
17
|
-
<%= t(".instructions_2") %>
|
|
18
|
-
</li>
|
|
19
|
-
<li>
|
|
20
|
-
<%= t(".instructions_3") %>
|
|
17
|
+
<%= t(".instructions_2", email: @group_email) %>
|
|
21
18
|
</li>
|
|
22
19
|
</ol>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<p class="email-greeting"><%= t(".greeting", name: @user.name) %></p>
|
|
2
|
+
|
|
3
|
+
<p class="email-instructions"><%= t(".body_1_html", organization_name: organization_name(@organization)) %></p>
|
|
4
|
+
|
|
5
|
+
<p class="email-instructions"><%= t(".body_2_html", name: @group.name) %></p>
|
|
6
|
+
|
|
7
|
+
<p class="email-instructions"><%= t(".body_3_html") %></p>
|
|
8
|
+
|
|
9
|
+
<p class="email-instructions"><%= t(".instructions_title_html") %></p>
|
|
10
|
+
|
|
11
|
+
<ul class="list-decimal">
|
|
12
|
+
<li>
|
|
13
|
+
<%= t(".instructions_1_html", email: @group.email, password: @password) %>
|
|
14
|
+
</li>
|
|
15
|
+
<li>
|
|
16
|
+
<%= t(".instructions_2_html") %>
|
|
17
|
+
</li>
|
|
18
|
+
<li>
|
|
19
|
+
<%= t(".instructions_3_html") %>
|
|
20
|
+
</li>
|
|
21
|
+
</ul>
|
|
@@ -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
|
@@ -64,7 +64,7 @@ ca-IT:
|
|
|
64
64
|
decidim/attachment_created_event: Arxiu adjunt
|
|
65
65
|
decidim/component_published_event: Component actiu
|
|
66
66
|
decidim/demoted_membership: Ja no ets una administradora del grup
|
|
67
|
-
decidim/gamification/badge_earned_event:
|
|
67
|
+
decidim/gamification/badge_earned_event: Ensenya obtinguda
|
|
68
68
|
decidim/gamification/level_up_event: Has pujat de nivell
|
|
69
69
|
decidim/invited_to_group_event: Convidada al grup
|
|
70
70
|
decidim/join_request_accepted_event: Sol·licitud d'incorporació acceptada
|
|
@@ -1084,7 +1084,7 @@ ca-IT:
|
|
|
1084
1084
|
dropzone: Arrossega-hi els arxius o fes clic per a pujar-los
|
|
1085
1085
|
explanation: Guia per a %{attribute}
|
|
1086
1086
|
gamification:
|
|
1087
|
-
all_badges_link: Veure totes les
|
|
1087
|
+
all_badges_link: Veure totes les ensenyes disponibles.
|
|
1088
1088
|
badges:
|
|
1089
1089
|
followers:
|
|
1090
1090
|
conditions:
|
|
@@ -1097,11 +1097,11 @@ ca-IT:
|
|
|
1097
1097
|
unearned_another: Aquesta participant encara no té seguidores.
|
|
1098
1098
|
unearned_own: Encara no et segueix ningú.
|
|
1099
1099
|
index:
|
|
1100
|
-
badge_title: "
|
|
1100
|
+
badge_title: "Ensenya %{name}"
|
|
1101
1101
|
how: Com pots aconseguir-la
|
|
1102
|
-
page_description: Les
|
|
1103
|
-
title:
|
|
1104
|
-
description: Les
|
|
1102
|
+
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.
|
|
1103
|
+
title: Ensenyes
|
|
1104
|
+
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.
|
|
1105
1105
|
level: Nivell %{level}
|
|
1106
1106
|
reached_top: Has arribat al màxim nivell d'aquesta ensenya.
|
|
1107
1107
|
title: Què són les ensenyes?
|
|
@@ -1534,7 +1534,7 @@ ca-IT:
|
|
|
1534
1534
|
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.
|
|
1535
1535
|
show:
|
|
1536
1536
|
activity: Activitat
|
|
1537
|
-
badges:
|
|
1537
|
+
badges: Ensenyes
|
|
1538
1538
|
conversations: Converses
|
|
1539
1539
|
followers: Seguidores
|
|
1540
1540
|
following: Seguint
|
|
@@ -1724,20 +1724,30 @@ ca-IT:
|
|
|
1724
1724
|
body_2: Com a part dels nostres esforços per simplificar l'experiència de les organitzacions, la funció "Grups d'usuàries" tal com la coneixem fins ara quedarà obsoleta. El perfil del Grup d'Usuàries ha esdevingut un perfil de participant en ús.
|
|
1725
1725
|
greeting: Benvolgut/da %{name},
|
|
1726
1726
|
instructions_1: Si tens accés a aquest compte de correu electrònic, si us plau, revisa la safata d'entrada per veure les instruccions.
|
|
1727
|
-
|
|
1727
|
+
instructions_2: Si no, algun membre del grup amb accés al correu haurà d'establir la contrasenya i compartir les credencials d'inici de sessió amb tu.
|
|
1728
|
+
instructions_intro: Els membres del grup ara compartiran l'accés a aquest perfil usant credencials d'accés compartides (email i contrasenya). Hem enviat instruccions a %{email} per establir una contrasenya nova per al perfil.
|
|
1728
1729
|
instructions_title: "<strong>Què vol dir això per a tu?</strong>"
|
|
1729
|
-
subject: Actualització important
|
|
1730
|
+
subject: Actualització important respecte al perfil del teu grup d'usuàries
|
|
1730
1731
|
notify_deprecation_to_owner:
|
|
1731
1732
|
body_1: Ens posem en contacte amb tu per informar-te sobre una important actualització respecte al Grup d'usuaris %{organization_name} del qual formes part.
|
|
1732
1733
|
body_2: 'Com a part dels nostres esforços per simplificar l''experiència de les organitzacions com la vostra, la funció "Grups d''Usuàries" tal com la coneixem fins ara quedarà obsoleta. El perfil del Grup: <strong>%{name}</strong> s''ha convertit en un perfil de participant a l''ús.'
|
|
1733
|
-
body_3: Per
|
|
1734
|
+
body_3: Per continuar accedint al grup i compartir l'accés, cal que defineixis una contrasenya. Un cop configurada, pots compartir les credencials d'inici de sessió (email i contrasenya) amb qui consideris oportú. Aquesta/es persona/es podrà realitzar diferents accions a la plataforma amb el nom de l'organització.
|
|
1734
1735
|
greeting: Benvolgut/da %{name},
|
|
1735
|
-
instructions_1: '
|
|
1736
|
-
instructions_2:
|
|
1737
|
-
instructions_3: Revisa la teva safata d'entrada a la recerca d'un correu electrònic amb més instruccions per establir la contrasenya nova.
|
|
1736
|
+
instructions_1: 'Fes clic a l''enllaç següent per establir una contrasenya:'
|
|
1737
|
+
instructions_2: 'Comparteix les credencials d''inici de sessió (correu electrònic: %{email} i la nova contrasenya) amb qui consideris oportú. Recorda: aquesta/es persona/es podrà realitzar diferents accions a la plataforma amb el perfil de l''organització.'
|
|
1738
1738
|
instructions_title: "<strong>Què cal que facis?</strong>"
|
|
1739
|
-
set_password:
|
|
1740
|
-
subject: Actualització important del grup d'usuàries
|
|
1739
|
+
set_password: Estableix la teva contrasenya
|
|
1740
|
+
subject: Actualització important respecte al perfil del teu grup d'usuàries
|
|
1741
|
+
notify_user_group_patched:
|
|
1742
|
+
body_1_html: Ens posem en contacte amb tu per informar-te sobre una important actualització respecte al Grup d'usuàries %{organization_name} del qual formes part.
|
|
1743
|
+
body_2_html: 'Com a part dels nostres esforços per simplificar l''experiència de les organitzacions com la vostra, la funció "Grups d''Usuàries" tal com la coneixem fins ara quedarà obsoleta. El perfil del Grup: <strong>%{name}</strong> s''ha convertit en un perfil de participant a l''ús.'
|
|
1744
|
+
body_3_html: Per continuar accedint al vostre compte i compartir l'accés, necessitem que definiu un correu electrònic i una contrasenya nous. Tingueu en compte que cada membre del vostre grup rebrà aquest correu electrònic. Per garantir l'accés continuat, haureu d'acordar internament les credencials compartides (correu electrònic i contrasenya) que tothom utilitzarà.
|
|
1745
|
+
greeting: Benvolgut/da %{name},
|
|
1746
|
+
instructions_1_html: 'Fes servir les credencials temporals següents per iniciar la sessió: <br><br> Nom d''usuari: <strong>%{email}</strong> <br> Contrasenya: <strong>%{password}</strong><br><br>'
|
|
1747
|
+
instructions_2_html: Estableix una nova adreça de correu electrònic i una contrasenya.
|
|
1748
|
+
instructions_3_html: Comparteix les credencials d'inici de sessió escollides amb les teves companyes perquè tot el grup pugui continuar accedint al compte.
|
|
1749
|
+
instructions_title_html: "<strong>Què cal que facis?</strong>"
|
|
1750
|
+
subject: Actualització important respecte al perfil del teu grup d'usuàries
|
|
1741
1751
|
user_report_mailer:
|
|
1742
1752
|
notify:
|
|
1743
1753
|
body_1: La usuària %{user} ha estat reportada per %{token}
|
|
@@ -1770,7 +1780,7 @@ ca-IT:
|
|
|
1770
1780
|
show:
|
|
1771
1781
|
version_index: Versió %{index} de %{total}
|
|
1772
1782
|
welcome_notification:
|
|
1773
|
-
default_body: <p>Hola {{name}}, gràcies per unir-te a {{organization}}
|
|
1783
|
+
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>
|
|
1774
1784
|
default_subject: Gràcies per unir-te a {{organization}}!
|
|
1775
1785
|
wizard_step_form:
|
|
1776
1786
|
wizard_aside:
|