decidim-core 0.30.2 → 0.30.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 42ebd59c0047d75695c9819c2bb0482423b4f5022f31258703b0d0ee476ca793
4
- data.tar.gz: bb3a77b79383688f58f120b1ce7824282061b503e1a11553f2c883360b8b8fb4
3
+ metadata.gz: df5ddb6f2f1e3c2557f89a0a2b9bab41c3108ad0ce0e728bfb317502cc6aa1a9
4
+ data.tar.gz: ed7e8f76a6f52fd5040a7bfbb462276d891406a13198df8571d6e154fb504a2f
5
5
  SHA512:
6
- metadata.gz: c12dc0996382e5ad172ae4b70008bcd2df5d1181e9938f0815ef004efe353b210fa78ed7ab8ab7ba8068542c08cb1e431a011e1f6e5401a1aae0c987cd4c330e
7
- data.tar.gz: 2a641e595999e29a1a68285315d35e5312842c6b997929df48d2fd53bf6cff51ef3279e92ed11dc5c43364238a6486aebc5f07715d49119b611806c103fc2ce7
6
+ metadata.gz: e3ee0aa2b315e4038a9737c46b8453b075d4d058569d060b777c530a4cb62b71edd37f99bddecdf50fc810e7d9995a89729c60b10cbd10363b6c14d217b069d4
7
+ data.tar.gz: 7f2b0baa65e1c613ee50d8ff74c4d1bb0a38c2224d51bfa76b34da5a44ec2024fd0e4bcba51a6664d283786ce62f0a4dbd05f4125011b8136750599106e6369d
@@ -0,0 +1,6 @@
1
+ <% if show_badge? %>
2
+ <span class="author__badge">
3
+ <%= icon "star-s-fill" %>
4
+ <span class="sr-only"><%= officialization_text %></span>
5
+ </span>
6
+ <% end %>
@@ -6,7 +6,10 @@
6
6
  <%= render :avatar %>
7
7
 
8
8
  <span>
9
- <%= render :name %>
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
@@ -2,6 +2,4 @@
2
2
  <div class="profile__avatar">
3
3
  <%= image_tag avatar_url, alt: t("decidim.author.avatar", name: decidim_sanitize(presented_profile.name)) %>
4
4
  </div>
5
-
6
- <%= render :badge if show_badge? %>
7
5
  </div>
@@ -1,4 +1,4 @@
1
- <div class="profile__avatar-badge">
1
+ <span class="profile__details-badge">
2
2
  <%= icon "star-s-fill" %>
3
- <span class="sr-only"><%= officialization_text %></span>
4
- </div>
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
@@ -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
- Decidim::ParticipatoryProcesses::PromotedParticipatoryProcesses.new
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
 
@@ -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
 
@@ -59,7 +59,11 @@
59
59
  }
60
60
 
61
61
  &-title {
62
- @apply h4 text-secondary;
62
+ @apply h4;
63
+ }
64
+
65
+ a &-title {
66
+ @apply text-secondary;
63
67
 
64
68
  overflow: hidden;
65
69
  display: -webkit-box;
@@ -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 absolute top-full right-0 -translate-y-full grid place-items-center w-6 h-6 rounded-full overflow-hidden bg-primary border border-white;
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 min-h-full 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;
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 {
@@ -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(/[A-Z]/).length
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[a-z]{1}/).empty?
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
- <%= link_to document.url, target: "_blank", rel: "noopener noreferrer", class: "card__list-title", title: t("decidim.application.document.download") do %>
3
+ <span class="card__list-title">
4
4
  <%= h attachment_title(document) %>
5
- <% end %>
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>
@@ -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
 
@@ -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: Insígnia obtinguda
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
@@ -1147,7 +1147,7 @@ ca-IT:
1147
1147
  dropzone: Arrossega-hi els arxius o fes clic per a pujar-los
1148
1148
  explanation: Guia per a %{attribute}
1149
1149
  gamification:
1150
- all_badges_link: Veure totes les insígnies disponibles.
1150
+ all_badges_link: Veure totes les ensenyes disponibles.
1151
1151
  badges:
1152
1152
  followers:
1153
1153
  conditions:
@@ -1160,11 +1160,11 @@ ca-IT:
1160
1160
  unearned_another: Aquesta participant encara no té seguidores.
1161
1161
  unearned_own: Encara no et segueix ningú.
1162
1162
  index:
1163
- badge_title: "Insígnia %{name}"
1163
+ badge_title: "Ensenya %{name}"
1164
1164
  how: Com pots aconseguir-la
1165
- page_description: Les insígnies 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'insígnies i algunes formes d'aconseguir-les.
1166
- title: Insígnies
1167
- description: Les insígnies 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.
1165
+ 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.
1166
+ title: Ensenyes
1167
+ 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
1168
  level: Nivell %{level}
1169
1169
  reached_top: Has arribat al màxim nivell d'aquesta ensenya.
1170
1170
  title: Què són les ensenyes?
@@ -1718,7 +1718,7 @@ ca-IT:
1718
1718
  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
1719
  show:
1720
1720
  activity: Activitat
1721
- badges: Insígnies
1721
+ badges: Ensenyes
1722
1722
  conversations: Converses
1723
1723
  followers: Seguidores
1724
1724
  following: Seguint
@@ -1950,7 +1950,7 @@ ca-IT:
1950
1950
  show:
1951
1951
  version_index: Versió %{index} de %{total}
1952
1952
  welcome_notification:
1953
- default_body: <p>Hola {{name}}, gràcies per unir-te a {{organization}} et donem la benvinguda!</p><ul><li>Si vole fer-te una idea ràpida de que pots fer-hi, fes una ullada a la <a href="{{help_url}}">Secció d'ajuda</a>.</li><li>Una vegada l'hagis llegit rebràs la teva primera ensenya. Aquí trobaràs un <a href="{{badges_url}}">llistat de totes les ensenyes</a>que pots aconsegui participant a {{organization}}</li><li>. Per acabar, però no per això menys important, uneix-te a d'altres persones, comparteix amb elles d'estar compromesa i de participar a {{organization}}. Fes propostes, comentaris, debat, pensa en com contribuir a un bé comú, aporta arguments per mirar de 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 resta oberta de ment per a col·laborar i unir-te a les idees d'altra gent.</li></ul>
1953
+ 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
1954
  default_subject: Gràcies per unir-te a {{organization}}!
1955
1955
  wizard_step_form:
1956
1956
  wizard_aside:
@@ -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: Insígnia obtinguda
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
@@ -1147,7 +1147,7 @@ ca:
1147
1147
  dropzone: Arrossega-hi els arxius o fes clic per a pujar-los
1148
1148
  explanation: Guia per a %{attribute}
1149
1149
  gamification:
1150
- all_badges_link: Veure totes les insígnies disponibles.
1150
+ all_badges_link: Veure totes les ensenyes disponibles.
1151
1151
  badges:
1152
1152
  followers:
1153
1153
  conditions:
@@ -1160,11 +1160,11 @@ ca:
1160
1160
  unearned_another: Aquesta participant encara no té seguidores.
1161
1161
  unearned_own: Encara no et segueix ningú.
1162
1162
  index:
1163
- badge_title: "Insígnia %{name}"
1163
+ badge_title: "Ensenya %{name}"
1164
1164
  how: Com pots aconseguir-la
1165
- page_description: Les insígnies 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'insígnies i algunes formes d'aconseguir-les.
1166
- title: Insígnies
1167
- description: Les insígnies 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.
1165
+ 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.
1166
+ title: Ensenyes
1167
+ 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
1168
  level: Nivell %{level}
1169
1169
  reached_top: Has arribat al màxim nivell d'aquesta ensenya.
1170
1170
  title: Què són les ensenyes?
@@ -1718,7 +1718,7 @@ ca:
1718
1718
  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
1719
  show:
1720
1720
  activity: Activitat
1721
- badges: Insígnies
1721
+ badges: Ensenyes
1722
1722
  conversations: Converses
1723
1723
  followers: Seguidores
1724
1724
  following: Seguint
@@ -1950,7 +1950,7 @@ ca:
1950
1950
  show:
1951
1951
  version_index: Versió %{index} de %{total}
1952
1952
  welcome_notification:
1953
- default_body: <p>Hola {{name}}, gràcies per unir-te a {{organization}} et donem la benvinguda!</p><ul><li>Si vole fer-te una idea ràpida de que pots fer-hi, fes una ullada a la <a href="{{help_url}}">Secció d'ajuda</a>.</li><li>Una vegada l'hagis llegit rebràs la teva primera ensenya. Aquí trobaràs un <a href="{{badges_url}}">llistat de totes les ensenyes</a>que pots aconsegui participant a {{organization}}</li><li>. Per acabar, però no per això menys important, uneix-te a d'altres persones, comparteix amb elles d'estar compromesa i de participar a {{organization}}. Fes propostes, comentaris, debat, pensa en com contribuir a un bé comú, aporta arguments per mirar de 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 resta oberta de ment per a col·laborar i unir-te a les idees d'altra gent.</li></ul>
1953
+ 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
1954
  default_subject: Gràcies per unir-te a {{organization}}!
1955
1955
  wizard_step_form:
1956
1956
  wizard_aside:
@@ -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:
@@ -1471,6 +1471,7 @@ de:
1471
1471
  success: Newslettereinstellungen wurden erfolgreich aktualisiert.
1472
1472
  newsletters_opt_in_mailer:
1473
1473
  notify:
1474
+ body_1: Die Verarbeitung personenbezogener Daten und deren Schutz wird für uns alle immer wichtiger. Mit der Datenschutz-Grundverordnung (DSGV) vom 25. Mai 2018 haben Einzelpersonen eine bessere Kontrolle über ihre personenbezogenen Daten. Aus diesem Grund benötigen wir Ihr "OK" um weiterhin relevante Informationen über die Aktivitäten von %{organization_name} zu senden.
1474
1475
  body_2: 'Wie können Sie uns Ihre Zustimmung geben? Klicken Sie einfach auf den folgenden Knopf:'
1475
1476
  body_3: Mit dieser Zustimmung können Sie weiterhin Informationen über die Dienste der Plattform erhalten. Wenn wir im Gegenteil keine positive Bestätigung von Ihnen erhalten, werden wir Ihnen keine Nachrichten mehr senden. Wenn Sie bestätigen, dass Sie weiterhin informiert werden möchten, haben Sie jederzeit die Möglichkeit, den Vorgang abzubrechen.
1476
1477
  button: Ja, ich möchte weiterhin relevante Informationen erhalten
@@ -230,7 +230,7 @@ eu:
230
230
  actions:
231
231
  cancel: Ezeztatu
232
232
  password_change:
233
- alert: Pasahitza aldatu behar duzu aurrera jarraitu ahal izateko.
233
+ alert: Aurrera jarraitu ahal izateko pasahitza aldatu behar duzu.
234
234
  notification: Administratzaile rola duten parte-hartzaileek pasahitza aldatu behar dute %{days} egunik behin.
235
235
  admin_log:
236
236
  area:
@@ -364,7 +364,7 @@ eu:
364
364
  amendable:
365
365
  button: Zuzendu %{model_name}
366
366
  error: Arazo bat egon da baliabide hori aldatzean.
367
- promote_button: '%{model_name}suspertzea'
367
+ promote_button: Sustatu %{model_name} (e) ra
368
368
  promote_confirm_text: Ziur al zaude zuzenketa hau sustatu nahi duzula?
369
369
  promote_help_text: Zuzenketa hau sustatu eta %{model_name} independiente gisa argitara dezakezu.
370
370
  amendments:
@@ -485,9 +485,9 @@ eu:
485
485
  expires_at: '%{timestamp} iraungitzen da'
486
486
  foo_authorization:
487
487
  fields:
488
- bar: Barra
489
- foo: foo
490
- name: foo baimena
488
+ bar: Bar
489
+ foo: Foo
490
+ name: Foo baimena
491
491
  granted_at: Onartua %{timestamp}
492
492
  sms:
493
493
  explanation: Bidali zure telefono mugikorraren zenbakia zure identitatea egiaztatzeko.
@@ -496,7 +496,7 @@ eu:
496
496
  authorization_modals:
497
497
  content:
498
498
  expired:
499
- authorize: Errebokatu "%{authorization}" rekin
499
+ authorize: Baimendu berriro "%{authorization}" sakatuta
500
500
  explanation: Zure baimena iraungi da. Ekintza hau burutzeko, "%{authorization}" berrantolatu behar duzu.
501
501
  title: Baimena iraungi egin da
502
502
  incomplete:
@@ -514,7 +514,7 @@ eu:
514
514
  pending:
515
515
  explanation: Ekintza hau burutzeko, "%{authorization}" baimena eduki behar duzu, baina zure baimena oraindik garatzen ari da.
516
516
  resume: Egiaztatu zure %{authorization} baimenaren garapena.
517
- title: Baimena oraindik ere egiten ari da
517
+ title: Baimena oraindik gaizatzen ari da
518
518
  unauthorized:
519
519
  explanation: Sentitzen dugu, baina ezin diozu heldu ekintza honi, zure baimen-datuetako batzuk ez datozelako bat.
520
520
  invalid_field: "%{field} datu-eremuaren balioa %{value} ez da baliozkoa."
@@ -531,12 +531,12 @@ eu:
531
531
  body_2: 'Arrazoia: %{justification}'
532
532
  greetings: Agur, <br/>%{organization_name}<br/><a href="%{organization_url}">%{organization_url}</a>
533
533
  hello: Kaixo,
534
- subject: '%{organization_name} k zure kontua blokeatu du'
534
+ subject: '%{organization_name}-eko administrazaileak zure kontua blokeatu du'
535
535
  collapsible_list:
536
536
  hidden_elements_count:
537
537
  one: eta bat gehiago
538
538
  other: eta %{count} gehiago
539
- see_less: "(ikusi gutxiago)"
539
+ see_less: "(gutxiago ikusi)"
540
540
  components:
541
541
  component_order_selector:
542
542
  no_content: Ezin izan dugu aurkitu irizpide hau duen edukirik.
@@ -555,7 +555,7 @@ eu:
555
555
  dummy:
556
556
  actions:
557
557
  bar: Barra
558
- foo: foo
558
+ foo: Foo
559
559
  name: Balizko osagaia
560
560
  settings:
561
561
  global:
@@ -593,7 +593,7 @@ eu:
593
593
  button_url: Ekintzaren botoiaren URLa
594
594
  description: Deskribapena
595
595
  footer_sub_hero:
596
- name: Oinaren azpi-heroiaren pankarta
596
+ name: Azpi-heroko bannerra orri-oinean
597
597
  global_menu:
598
598
  name: Menu globala
599
599
  hero:
@@ -672,12 +672,12 @@ eu:
672
672
  username_help: Zure mezuetan agertuko den izen publikoa. Anonimatua bermatze aldera, edozein izen izan daiteke.
673
673
  new_tos_fields:
674
674
  sign_up: Sortu kontu bat
675
- sign_up_title: Amaitu sortzen zure kontua
675
+ sign_up_title: Zure kontua sortzen amaitu
676
676
  registrations:
677
677
  create:
678
678
  error: Arazo bat izan da kontua sortzean.
679
679
  new:
680
- already_have_an_account?: Baduzu kontu bat?
680
+ already_have_an_account?: Ba al duzu konturen bat?
681
681
  log_in: Hasi saioa
682
682
  newsletter: Jaso nahi dut informazio garrantzitsua biltzen duen aldizkako buletina
683
683
  newsletter_title: Harremanetarako baimena
@@ -692,7 +692,7 @@ eu:
692
692
  are_you_new?: Oraindik erregistratu gabe?
693
693
  register: Sortu zure kontua
694
694
  sign_in_disabled: Kanpoko kontu batez sartu ahal zara.
695
- sign_up_disabled: Kontuak sortzea desgaituta dago, sartzeko lehendik dagoen kontu bat erabil dezakezu.
695
+ sign_up_disabled: Kontu-sorkuntza desgaituta dago. Ohar bat erabil dezakezu atzipenerako.
696
696
  user:
697
697
  ephemeral_session_closed: Amaitu da zure gonbidatuen saioa
698
698
  timed_out: Denbora luzeegi egon zara jarduerarik gabe, eta zure saioa automatikoki itxi da. Parte hartzen jarraitu nahi baduzu, hasi saioa berriro.
@@ -872,13 +872,13 @@ eu:
872
872
  not_inside_organization: Fitxategia ez dago erakunde batekin erlazionatuta
873
873
  internal_server_error:
874
874
  copied: Testua kopiatuta!
875
- copy_error_message_clarification: Errore-mezua arbelean kopiatuta
875
+ copy_error_message_clarification: Kopiatu errore-mezua arbelean
876
876
  copy_to_clipboard: Kopiatu arbelera
877
877
  date_and_time: Data eta ordua
878
878
  reference: Erreferentzia
879
879
  request_method: Eskaera-metodoa
880
- title: Arazo bat egon da gure serbidorearekin
881
- try_later: Mesedez, saiatu berriro geroago. Erroreak jarraitzen badu, mesedez, kopiatu ondoko informazio hau eta bidali plataformaren mantentzaileei partekatu nahi duzun bestelako informazioarekin batera.
880
+ title: Arazo bat egon da gure zerbitzarian
881
+ try_later: Mesedez, geroago saiatu berriro. Erroreak jarraitzen badu, mesedez, kopiatu ondoko informazio hau eta bidali plataformaren mantentzaileei partekatu nahi duzun bestelako informazioarekin batera.
882
882
  unknown: Ezezaguna
883
883
  url: URL
884
884
  user: Parte-hartzailearen ID
@@ -1081,7 +1081,7 @@ eu:
1081
1081
  followers_count:
1082
1082
  one: "Jarraitzaile %{count}"
1083
1083
  other: "%{count} jarraitzaile"
1084
- no_followers: Ez da jarraitzailerik oraindik.
1084
+ no_followers: Oraindik ez dago jarraitzailerik.
1085
1085
  following:
1086
1086
  following_count:
1087
1087
  one: "batek jarraitzaitzen du"
@@ -1113,7 +1113,7 @@ eu:
1113
1113
  message_1: Irudi bat edo dokumentu bat izan behar da.
1114
1114
  message_2: Irudia bada, ahal dela, paisaia-irudia, testurik ez duena izan dadila. Zerbitzuak irudia lantzen du.
1115
1115
  icon:
1116
- explanation: 'Jarraibideak irudirako:'
1116
+ explanation: 'Irudirako jarraibideak:'
1117
1117
  message_1: Irudi karratua izan behar da.
1118
1118
  message_2: Irudi honetarako gomendatzen den tamaina da 512x512.
1119
1119
  image:
@@ -1536,7 +1536,7 @@ eu:
1536
1536
  cta_html: <a href="%{path}">%{link_text}</a> horretarako %{action} hemen %{resource_name} <strong>%{resource_title}</strong>
1537
1537
  ephemeral_authorized_message: Zuzen gonbidatu zaituzte. <br/>Gonbidatuen saio bat hasi duzu eta orain parte har dezakezu.
1538
1538
  expired_authorization_active_title: Zure baimena iraungi egin da.
1539
- finish_authorization_process: Baimen-prozesua bukatu ahal duzu
1539
+ finish_authorization_process: Baimen-prozesua bukatu dezakezu
1540
1540
  incomplete_authorization_active_title: Zure egiaztapena ez da osatu behar den informazio guztiarekin.
1541
1541
  pending_authorization_active_message: Mesedez, bete formularioa ekintza honekin aurrera egiteko.
1542
1542
  pending_authorization_active_title: Zure nortasuna egiaztatu behar dugu.
@@ -1560,7 +1560,7 @@ eu:
1560
1560
  blocked_at: Zein egunetan eta ordutan blokeatu den parte-hartzailea
1561
1561
  blocking_user: Blokeoa egin duen parte-hartzailearen izena
1562
1562
  details: Txostenen xehetasunak
1563
- reasons: Profilaren berri emateko arrazoien zerrenda
1563
+ reasons: Erabiltzailearen profilaren berri emateko arrazoien zerrenda
1564
1564
  user_id: Salatutako parte-hartzailearen ID bakarra
1565
1565
  moderations:
1566
1566
  hidden_at: Zein egunetan eta ordutan ezkutatu den edukia
@@ -1616,7 +1616,7 @@ eu:
1616
1616
  components: Osagaiak
1617
1617
  core: Nukleoa
1618
1618
  spaces: Partaidetza-espazioak
1619
- title: Deskargatu baliabideak
1619
+ title: Baliabideak deskargatu
1620
1620
  download_open_data: Deskargatu Open Data fitxategi guztiak
1621
1621
  download_resource: Deskargatu %{resource_name} CSV formatuan
1622
1622
  explanation:
@@ -1656,7 +1656,7 @@ eu:
1656
1656
  pad_iframe:
1657
1657
  disclaimer: Ohar-blok honen edukiak erregistratutako parte-hartzaileek idatzi dituzte eta euren iritziak adierazi dituzte. %{organization} erakundea ezin da bere edukien erantzule izan.
1658
1658
  explanation: Erabili ohar-blok hau topaketan zehar oharrak modu kolaboratiboan hartzeko, gero akta idaztea errazagoa izan dadin.
1659
- pad: pad
1659
+ pad: Pad
1660
1660
  pages:
1661
1661
  home:
1662
1662
  extended:
@@ -1680,7 +1680,7 @@ eu:
1680
1680
  headline: '%{organization} erakundearen egungo egoera'
1681
1681
  sub_hero:
1682
1682
  register: Alta eman
1683
- register_title: Sortu kontu bat
1683
+ register_title: Kontu bat sortu
1684
1684
  index:
1685
1685
  standalone_pages: Orrialdeak
1686
1686
  subheading: Nabigatu %{name} gunearen laguntza-orrietan
@@ -1696,7 +1696,7 @@ eu:
1696
1696
  success: Bikain! Onartu dituzu zerbitzuaren baldintzak.
1697
1697
  form:
1698
1698
  agreement: Ados nago baldintza hauekin
1699
- legend: Adostu zerbitzuaren baldintzak
1699
+ legend: Zerbitzuaren baldintzak onartzen ditut
1700
1700
  refuse:
1701
1701
  modal_body: Onartzen ez baduzu, ezin izango duzu plataforman parte hartu, <a href="%{download_your_data_path}">zure datuak deskargatu ahal dituzu</a> eta/edo <a href="%{delete_path}">zure kontua ezabatu</a>.
1702
1702
  modal_btn_continue: Onartu baldintzak eta jarraitu
@@ -1704,9 +1704,9 @@ eu:
1704
1704
  modal_button: Ez onartu baldintzak
1705
1705
  modal_title: Benetan ez dituzu onartzen zerbitzuaren baldintza eguneratuak?
1706
1706
  required_review:
1707
- alert: "Gure zerbitzu baldintzak eguneratu ditugu., berrikusi, mesedez.\n"
1707
+ alert: Gure zerbitzu baldintzak eguneratu ditugu, berrikusi, mesedez.
1708
1708
  body: Mesedez, hartu tarte bat erabilerarako gure baldintzak eta irizpideak berrikusteko. Bestela, ezin izango duzu plataforman parte hartu.
1709
- title: 'Eskatuta: berrikusi eguneraketak gure zerbitzuaren baldintzetan'
1709
+ title: 'Beharrezkoa: berrikusi eguneratzeak gure erabilera-baldintzetan'
1710
1710
  passwords:
1711
1711
  update:
1712
1712
  error: Arazo bat egon da pasahitza eguneratzean.
@@ -1759,7 +1759,7 @@ eu:
1759
1759
  content: Erreportatutako edukia
1760
1760
  details: Xehetasunak
1761
1761
  hello: 'Kaixo, %{name}:'
1762
- manage_moderations: Kudeatu moderazioak
1762
+ manage_moderations: Moderazioak kudeatu
1763
1763
  participatory_space: Partaidetza espazioa
1764
1764
  reason: Arrazoia
1765
1765
  report_html: <p>Hurrengo <a href="%{url}">edukia</a>automatikoki ezkutatu da</p>
@@ -2002,7 +2002,7 @@ eu:
2002
2002
  message: 'Zuregana jotzen dugu jakinarazteko zure posta elektronikoa aldatu dela honengatik: %{email}.'
2003
2003
  subject: Helnbide elektronikoa aldatu da
2004
2004
  invitation_instructions:
2005
- accept: Onartu gonbita
2005
+ accept: Gonbita onartu
2006
2006
  accept_until: 'Gonbidapen hau data honetan iraungiko da: %{due_date}.'
2007
2007
  decline: Deuseztatu gonbita
2008
2008
  hello: Kaixo, %{email},
@@ -2015,19 +2015,19 @@ eu:
2015
2015
  someone_invited_you_as_private_user: Norbaitek %{application} ko parte-hartzaile pribatu gisa gonbidatu zaitu, beheko estekan onar dezakezu.
2016
2016
  subject: Gonbidapenaren argibideak
2017
2017
  invite_admin:
2018
- subject: Gonbita jaso duzu %{organization} kudeatzeko
2018
+ subject: '%{organization} kudeatzeko gonbita jaso duzu'
2019
2019
  invite_collaborator:
2020
2020
  subject: 'Gonbita jaso duzu erakunde honekin lankidetzan aritzeko: %{organization}'
2021
2021
  invite_private_user:
2022
2022
  subject: Gonbidatu zaituzte partaidetza-prozesu pribatu batean %{organization} erakundean
2023
2023
  organization_admin_invitation_instructions:
2024
- subject: Gonbita jaso duzu %{organization} kudeatzeko
2024
+ subject: '%{organization} erakundea kudeatzeko gonbita jaso duzu'
2025
2025
  password_change:
2026
2026
  greeting: Kaixo, %{recipient}!
2027
- message: Zuregana jotzen dugu jakinarazteko zure pasahitza zuzen aldatu dela.
2027
+ message: Zuregana jotzen dugu zure pasahitza zuzen aldatu dela jakinarazteko.
2028
2028
  subject: Pasahitza aldatu da
2029
2029
  reset_password_instructions:
2030
- action: Aldatu nire pasahitza
2030
+ action: Nire pasahitza aldatu
2031
2031
  greeting: Kaixo %{recipient}!
2032
2032
  instruction: Norbaitek zure pasahitza aldatzeko esteka eskatu du, eta beheko estekan egin dezakezu.
2033
2033
  instruction_2: Ez baduzu hori eskatu, ez egin kasurik mezu honi.
@@ -2132,12 +2132,12 @@ eu:
2132
2132
  close: Itxi leihoa
2133
2133
  toolbar:
2134
2134
  control:
2135
- blockquote: Aipu blokea
2135
+ blockquote: Aipamena
2136
2136
  bold: Lodia
2137
2137
  bulletList: Zerrenda desordenatua
2138
2138
  codeBlock: Kode blokea
2139
2139
  common:
2140
- eraseStyles: Ezabatu estiloak
2140
+ eraseStyles: Estiloak ezabatu
2141
2141
  hardBreak: Lerro-jauzia
2142
2142
  heading: Testu estiloa
2143
2143
  image: Irudia
@@ -2304,7 +2304,7 @@ eu:
2304
2304
  aria_label: '%{title} Nabigazio-menua'
2305
2305
  notifications_dashboard:
2306
2306
  mark_all_as_read: Markatu dena irakurritako gisa
2307
- mark_as_read: Markatu irakurrita bezala
2307
+ mark_as_read: Irakurrita bezala markatu
2308
2308
  offline_banner:
2309
2309
  cache_version_page: Kontuz! Off-line lan egiten ari zara. Bisitatzen ari zaren orriaren cache bertsioa da hau, agian edukia ez dago eguneratuta.
2310
2310
  social_media_links:
@@ -2315,7 +2315,7 @@ eu:
2315
2315
  youtube: "%{organization} YouTuben"
2316
2316
  timeout_modal:
2317
2317
  body: Jarduerarik gabe egon zara %{minutes} minututan. Aktibatu gabe jarraitzen baduzu, deskonektatuko zaitugu zure segurtasunerako.
2318
- continue_session: Jarraitu saioa
2318
+ continue_session: Saioa jarraitu
2319
2319
  log_out: Amaitu saioa
2320
2320
  title: Saioan jarraitu nahi duzu?
2321
2321
  user_menu:
@@ -1434,6 +1434,7 @@ ja:
1434
1434
  main_image: メイン画像
1435
1435
  newsletters:
1436
1436
  unsubscribe:
1437
+ check_subscription_html: 配信を再開したい場合は、<a href="%{link}" target="_blank">設定ページ</a>からいつでもサブスクリプションを再開できます。
1437
1438
  error: 購読解除中に問題が発生しました。
1438
1439
  subscription_preferences: サブスクリプションの設定を更新しました。 %{organization_name} からニュースレターを受け取ることはできなくなりました。
1439
1440
  success: 購読解除に成功しました。
@@ -44,20 +44,20 @@ module Decidim
44
44
  # @param options The options for the URL that are the normal route options
45
45
  # Rails route helpers accept
46
46
  # @return [String] The URL of the asset
47
- def url(**)
47
+ def url(**options)
48
48
  case asset
49
49
  when ActiveStorage::Attached
50
- ensure_current_host(asset.record, **)
51
- blob_url(**)
50
+ ensure_current_host(asset.record, **options)
51
+ blob_url(**options.except(:host))
52
52
  when ActiveStorage::Blob
53
- blob_url(**)
53
+ blob_url(**options)
54
54
  else # ActiveStorage::VariantWithRecord, ActiveStorage::Variant
55
55
  if blob && blob.attachments.any?
56
- ensure_current_host(blob.attachments.first&.record, **)
57
- representation_url(**)
56
+ ensure_current_host(blob.attachments.first&.record, **options)
57
+ representation_url(**options.except(:host))
58
58
  else
59
- ensure_current_host(nil, **)
60
- representation_url(**, only_path: true)
59
+ ensure_current_host(nil, **options)
60
+ representation_url(**options.except(:host), only_path: true)
61
61
  end
62
62
  end
63
63
  end
@@ -4,7 +4,7 @@ module Decidim
4
4
  # This holds the decidim-core version.
5
5
  module Core
6
6
  def self.version
7
- "0.30.2"
7
+ "0.30.3"
8
8
  end
9
9
  end
10
10
  end
@@ -230,7 +230,7 @@ module Decidim
230
230
  disabled: options[:disabled],
231
231
  options: editor_options[:editor]
232
232
  }
233
- ) { content_tag(:div, nil, class: "editor-input", style: "height: #{lines}rem") }
233
+ ) { content_tag(:div, nil, class: "editor-input", style: "min-height: #{lines}rem") }
234
234
  template += error_for(name, options) if error?(name)
235
235
  template += editor_upload(editor_image, editor_options[:upload])
236
236
  template.html_safe
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decidim-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.30.2
4
+ version: 0.30.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Josep Jaume Rey Peroy
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2025-09-23 00:00:00.000000000 Z
13
+ date: 2025-10-28 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: concurrent-ruby
@@ -780,28 +780,28 @@ dependencies:
780
780
  requirements:
781
781
  - - '='
782
782
  - !ruby/object:Gem::Version
783
- version: 0.30.2
783
+ version: 0.30.3
784
784
  type: :development
785
785
  prerelease: false
786
786
  version_requirements: !ruby/object:Gem::Requirement
787
787
  requirements:
788
788
  - - '='
789
789
  - !ruby/object:Gem::Version
790
- version: 0.30.2
790
+ version: 0.30.3
791
791
  - !ruby/object:Gem::Dependency
792
792
  name: decidim-dev
793
793
  requirement: !ruby/object:Gem::Requirement
794
794
  requirements:
795
795
  - - '='
796
796
  - !ruby/object:Gem::Version
797
- version: 0.30.2
797
+ version: 0.30.3
798
798
  type: :development
799
799
  prerelease: false
800
800
  version_requirements: !ruby/object:Gem::Requirement
801
801
  requirements:
802
802
  - - '='
803
803
  - !ruby/object:Gem::Version
804
- version: 0.30.2
804
+ version: 0.30.3
805
805
  description: Adds core features so other engines can hook into the framework.
806
806
  email:
807
807
  - josepjaume@gmail.com
@@ -838,6 +838,7 @@ files:
838
838
  - app/cells/decidim/attachments_link_tab_cell.rb
839
839
  - app/cells/decidim/author/avatar.erb
840
840
  - app/cells/decidim/author/avatar_image.erb
841
+ - app/cells/decidim/author/badge.erb
841
842
  - app/cells/decidim/author/cancelled_on.erb
842
843
  - app/cells/decidim/author/comments.erb
843
844
  - app/cells/decidim/author/contact.erb