decidim-core 0.31.3 → 0.31.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.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/nav_links/show.erb +3 -3
  3. data/app/cells/decidim/participatory_space_private_user/show.erb +6 -6
  4. data/app/cells/decidim/participatory_space_private_user_cell.rb +0 -4
  5. data/app/helpers/decidim/mailer_helper.rb +36 -0
  6. data/app/helpers/decidim/menu_helper.rb +2 -1
  7. data/app/helpers/decidim/newsletters_helper.rb +4 -22
  8. data/app/mailers/decidim/application_mailer.rb +4 -0
  9. data/app/packs/src/decidim/controllers/accordion/accordion.test.js +118 -0
  10. data/app/packs/src/decidim/controllers/accordion/controller.js +24 -0
  11. data/app/packs/src/decidim/controllers/dropdown/controller.js +26 -0
  12. data/app/packs/src/decidim/controllers/dropdown/dropdown.test.js +187 -0
  13. data/app/packs/src/decidim/controllers/form_validator/form_validator.js +3 -2
  14. data/app/packs/src/decidim/controllers/form_validator/form_validator.test.js +5 -0
  15. data/app/packs/src/decidim/editor/extensions/image/index.js +49 -11
  16. data/app/packs/src/decidim/editor/extensions/image/node_view.js +9 -1
  17. data/app/packs/src/decidim/editor/extensions/link/bubble_menu.js +34 -6
  18. data/app/packs/src/decidim/editor/extensions/link/index.js +45 -12
  19. data/app/packs/src/decidim/editor/test/extensions/image_links.test.js +161 -0
  20. data/app/packs/stylesheets/decidim/_rich_text.scss +17 -0
  21. data/app/packs/stylesheets/decidim/editor.scss +10 -0
  22. data/app/presenters/decidim/menu_item_presenter.rb +7 -1
  23. data/app/views/decidim/devise/registrations/new.html.erb +1 -0
  24. data/app/views/decidim/devise/shared/_tos_fields.html.erb +3 -3
  25. data/app/views/decidim/notification_mailer/event_received.html.erb +3 -3
  26. data/app/views/decidim/pages/_tabbed.html.erb +3 -3
  27. data/app/views/decidim/shared/_filters.html.erb +5 -5
  28. data/app/views/decidim/shared/filters/_check_boxes_tree.html.erb +1 -1
  29. data/app/views/decidim/shared/filters/_collection.html.erb +1 -1
  30. data/config/locales/de.yml +27 -0
  31. data/config/locales/eu.yml +3 -0
  32. data/config/locales/fi-plain.yml +5 -0
  33. data/config/locales/fi.yml +5 -0
  34. data/lib/decidim/content_parsers/blob_parser.rb +3 -3
  35. data/lib/decidim/content_renderers/blob_renderer.rb +2 -2
  36. data/lib/decidim/core/test/shared_examples/participatory_space_members_shared_examples.rb +121 -0
  37. data/lib/decidim/core/version.rb +1 -1
  38. data/lib/decidim/participatory_space_user.rb +1 -1
  39. metadata +11 -6
@@ -1055,6 +1055,8 @@ de:
1055
1055
  explanation: 'Anleitung für Bild:'
1056
1056
  message_1: Vorzugsweise ein Bild im Querformat, das keinen Text enthält.
1057
1057
  message_2: Der Dienst schneidet die Datei zu.
1058
+ import_file:
1059
+ message_1: Muss ein JSON-Dokument sein, das über die Exportfunktion heruntergeladen wurde.
1058
1060
  file_validation:
1059
1061
  allowed_file_extensions: 'Erlaubte Dateiformate: %{extensions}'
1060
1062
  max_file_dimension: 'Maximale Dateigröße: %{resolution} Pixel'
@@ -1290,9 +1292,13 @@ de:
1290
1292
  same_language: Der Inhalt wurde in Ihrer bevorzugten Sprache (%{language}) veröffentlicht, daher wird in dieser E-Mail keine automatisierte Übersetzung angezeigt.
1291
1293
  translated_text: 'Automatisch übersetzter Text:'
1292
1294
  notifications:
1295
+ action_error: Beim Aktualisieren der Benachrichtigungseinstellungen ist ein Fehler aufgetreten.
1293
1296
  no_notifications: Noch keine Benachrichtigungen
1294
1297
  show:
1298
+ deleted: Inhalt wurde vom Autor gelöscht.
1295
1299
  missing_event: Hoppla, diese Benachrichtigung gehört zu einem Artikel, der nicht mehr verfügbar ist. Du kannst sie verwerfen.
1300
+ moderated: Inhalt wurde durch Moderation versteckt.
1301
+ not_available: Hoppla, diese Benachrichtigung gehört zu einem Artikel, der nicht mehr verfügbar ist. Es ist keine weitere Aktion erforderlich.
1296
1302
  notifications_digest_mailer:
1297
1303
  header:
1298
1304
  daily: Tägliche Zusammenfassung
@@ -1301,6 +1307,7 @@ de:
1301
1307
  hello: Hallo %{name}
1302
1308
  intro:
1303
1309
  daily: 'Dies sind die Benachrichtigungen vom letzten Tag basierend auf den Aktivitäten, denen Sie folgen:'
1310
+ real_time: 'Es gibt eine Benachrichtigung über die Aktivität, die Sie folgen:'
1304
1311
  weekly: 'Dies sind die Benachrichtigungen der letzten Woche, basierend auf den Aktivitäten, die Sie folgen:'
1305
1312
  outro: Sie haben diese Benachrichtigung erhalten, weil Sie diesen Inhalt oder seine Verfassenden folgen. Sie können dem Inhalt direkt auf seiner Seite entfolgen.
1306
1313
  see_more: Weitere Benachrichtigungen ansehen
@@ -1443,7 +1450,9 @@ de:
1443
1450
  title: Wie man diese Dateien öffnet und mit ihnen arbeitet
1444
1451
  license:
1445
1452
  body_1_html: Diese Datenbank von %{organization_name} wird unter %{link_database} zur Verfügung gestellt. Alle Rechte an einzelnen Inhalten der Datenbank sind unter %{link_contents} lizenziert.
1453
+ license_contents_link: https://opendatacommons.org/licenses/dbcl/1.0/
1446
1454
  license_contents_name: Lizenz für Datenbankinhalte
1455
+ license_database_link: https://opendatacommons.org/licenses/odbl/1.0/
1447
1456
  license_database_name: Offene Datenbanklizenz
1448
1457
  title: Lizenz
1449
1458
  title: Offene Daten
@@ -1726,9 +1735,23 @@ de:
1726
1735
  notify_deprecation_to_owner:
1727
1736
  body_1: 'Wir möchten Sie gerne über ein wichtiges Update ihres Gruppenprofil informieren: %{organization_name}.'
1728
1737
  body_2: Wir möchten die Erfahrungen von Organisationen vereinfachen und verbessern und werden deshalb die Funktion "Benutzergruppen" abschalten. Ihre Gruppe, <strong>%{name}</strong>, wurde in ein reguläres Konto umgewandelt.
1738
+ body_3: Um weiterhin auf Ihr Konto zuzugreifen und den Zugriff freizugeben, müssen Sie ein Passwort festlegen. Sobald gesetzt, können Sie die Anmeldedaten (E-Mail und Passwort) an jeden weitergeben.
1729
1739
  greeting: Hallo %{name},
1740
+ instructions_1: 'Klicken Sie auf den Link unten, um Ihr Passwort zu setzen:'
1741
+ instructions_2: 'Teilen Sie die Anmeldedaten (E-Mail: %{email} und das neue Passwort) mit Ihren Kollegen.'
1742
+ instructions_title: "<strong>Was sie tun müssen</strong>"
1730
1743
  set_password: Passwort festlegen
1731
1744
  subject: Wichtige Aktualisierung für Ihr Gruppenprofil
1745
+ notify_user_group_patched:
1746
+ body_1_html: 'Wir möchten Sie gerne über ein wichtiges Update ihres Gruppenprofil informieren: %{organization_name}.'
1747
+ body_2_html: Wir möchten die Erfahrungen von Organisationen vereinfachen und verbessern und werden deshalb die Funktion "Benutzergruppen" abschalten. Ihre Gruppe, <strong>%{name}</strong>, wurde in ein reguläres Konto umgewandelt.
1748
+ body_3_html: Um weiterhin auf Ihr Konto zuzugreifen und den Zugriff freizugeben, müssen Sie eine neue E-Mail und ein neues Passwort setzen. Bitte beachten Sie, dass jedes Mitglied deiner Gruppe diese E-Mail erhält. Um den weiteren Zugriff sicherzustellen, müssen Sie sich intern auf die gemeinsamen Zugangsdaten (E-Mail und Passwort) einigen, die jeder verwenden wird.
1749
+ greeting: Hallo %{name},
1750
+ instructions_1_html: 'Verwenden Sie die folgenden temporären Anmeldeinformationen, um sich einzuloggen: <br><br> Benutzername: <strong>%{email}</strong> <br> Passwort: <strong>%{password}</strong><br><br>'
1751
+ instructions_2_html: Geben Sie eine neue E-Mail-Adresse und ein Passwort ein.
1752
+ instructions_3_html: Teilen Sie die ausgewählten Anmeldedaten mit Ihren Kollegen, damit die gesamte Gruppe weiterhin auf das Konto zugreifen kann.
1753
+ instructions_title_html: "<strong>Was Sie tun müssen</strong>"
1754
+ subject: Wichtige Aktualisierung für Ihr Gruppenprofil
1732
1755
  user_report_mailer:
1733
1756
  notify:
1734
1757
  body_1: Benutzer %{user} wurde von %{token} gemeldet
@@ -1778,6 +1801,7 @@ de:
1778
1801
  send_paranoid_instructions: Wenn Ihre E-Mail-Adresse in unserer Datenbank vorhanden ist, erhalten Sie innerhalb weniger Minuten eine E-Mail mit Anweisungen zur Bestätigung Ihrer E-Mail-Adresse.
1779
1802
  failure:
1780
1803
  already_authenticated: Sie sind bereits angemeldet.
1804
+ csrf_token: Ihre Anfrage konnte nicht verifiziert werden. Bitte versuchen Sie es erneut.
1781
1805
  inactive: Dein Benutzerkonto ist noch nicht aktiviert.
1782
1806
  invalid: Ungültige %{authentication_keys} oder Passwort
1783
1807
  invited: Sie haben eine ausstehende Einladung, akzeptieren Sie sie, um die Erstellung Ihres Kontos abzuschließen.
@@ -1792,6 +1816,7 @@ de:
1792
1816
  nickname_help: Ihr Pseudonym auf %{organization}. Kann nur Buchstaben, Zahlen, '-' und '_' enthalten.
1793
1817
  submit_button: Speichern
1794
1818
  subtitle: Wenn Sie die Einladung annehmen, geben Sie bitte Ihren Kontonamen und Ihr Passwort ein.
1819
+ subtitle_no_password: Wenn Sie die Einladung annehmen, geben Sie bitte Ihren Kontonamen ein.
1795
1820
  invitation_removed: Ihre Einladung wurde entfernt.
1796
1821
  invitation_token_invalid: Das angegebene Einladungstoken ist nicht gültig!
1797
1822
  new:
@@ -1799,6 +1824,8 @@ de:
1799
1824
  submit_button: Eine Einladung schicken
1800
1825
  no_invitations_remaining: Keine Einladungen übrig
1801
1826
  send_instructions: Eine Einladungs-E-Mail wurde an %{email}gesendet.
1827
+ updated: Einladung erfolgreich angenommen. Sie sind jetzt angemeldet.
1828
+ updated_not_active: Einladung erfolgreich angenommen.
1802
1829
  mailer:
1803
1830
  confirmation_instructions:
1804
1831
  action: Konto bestätigen
@@ -1819,6 +1819,7 @@ eu:
1819
1819
  nickname_help: Zure ezizena %{organization}-an. Letrak, zenbakiak, '-' eta '_' soilik eduki ditzake.
1820
1820
  submit_button: Gorde
1821
1821
  subtitle: Gonbidapena onartzen baduzu, mesedez, ezarri zure ezizena eta pasahitza.
1822
+ subtitle_no_password: Gonbidapena onartzen baduzu, jarri zure ezizena.
1822
1823
  invitation_removed: Zure gonbidapena kendu egin da.
1823
1824
  invitation_token_invalid: Gonbidapen token hori ez da baliozkoa!
1824
1825
  new:
@@ -1826,6 +1827,8 @@ eu:
1826
1827
  submit_button: Bidali gonbidapena
1827
1828
  no_invitations_remaining: Ez da gonbidapenik geratzen
1828
1829
  send_instructions: Gonbidapen-mezu elektroniko bat %{email} helbidera bidali da.
1830
+ updated: Gonbidapena behar bezala onartu da. Orain erregistratuta zaude.
1831
+ updated_not_active: Gonbidapena behar bezala onartu da.
1829
1832
  mailer:
1830
1833
  confirmation_instructions:
1831
1834
  action: Berretsi nire kontua
@@ -1821,6 +1821,7 @@ fi-pl:
1821
1821
  nickname_help: Nimimerkkisi palvelussa %{organization}. Voi sisältää ainoastaan kirjaimia, numeroita sekä yhdysmerkkejä "-" ja alaviivoja "_".
1822
1822
  submit_button: Tallenna
1823
1823
  subtitle: Jos hyväksyt kutsun, aseta käyttäjänimesi ja salasana.
1824
+ subtitle_no_password: Jos hyväksyt kutsun, aseta tilillesi nimi.
1824
1825
  invitation_removed: Kutsusi peruutettiin.
1825
1826
  invitation_token_invalid: Käyttämäsi kutsuavain ei ole voimassa!
1826
1827
  new:
@@ -1828,6 +1829,8 @@ fi-pl:
1828
1829
  submit_button: Lähetä kutsu
1829
1830
  no_invitations_remaining: Ei kutsuja jäljellä
1830
1831
  send_instructions: Kutsuviesti on lähetetty %{email}.
1832
+ updated: Kutsun hyväksyminen onnistui. Olet nyt kirjautunut sisään.
1833
+ updated_not_active: Kutsun hyväksyminen onnistui.
1831
1834
  mailer:
1832
1835
  confirmation_instructions:
1833
1836
  action: Vahvista käyttäjätilini
@@ -1887,6 +1890,8 @@ fi-pl:
1887
1890
  confirm_new_password: Vahvista uusi salasana
1888
1891
  new_password: Uusi salasana
1889
1892
  old_password_help: Vahvistaaksesi muutokset käyttäjätiliisi, anna nykyinen salasanasi.
1893
+ password_help: "Vähintään %{minimum_characters} merkkiä, vähintään 5 eri merkkiä, ei voi olla yleisesti käytetty salasana (esim. 123456), eikä voi vastata nimeäsi, nimimerkkiäsi, sähköpostiosoitettasi tai tämän palvelun verkko-osoitetta."
1894
+ password_help_admin: "Vähintään %{minimum_characters} merkkiä, vähintään 5 eri merkkiä, ei voi olla yleisesti käytetty salasana (esim. 123456), eikä voi vastata nimeäsi, nimimerkkiäsi, sähköpostiosoitettasi tai tämän palvelun verkko-osoitetta. Et myöskään voi käyttää aikaisempia salasanojasi."
1890
1895
  title: Salasanan vaihto
1891
1896
  new:
1892
1897
  forgot_your_password: Unohditko salasanasi?
@@ -1821,6 +1821,7 @@ fi:
1821
1821
  nickname_help: Nimimerkkisi palvelussa %{organization}. Voi sisältää ainoastaan kirjaimia, numeroita sekä yhdysmerkkejä "-" ja alaviivoja "_".
1822
1822
  submit_button: Tallenna
1823
1823
  subtitle: Jos hyväksyt kutsun, aseta käyttäjänimesi ja salasana.
1824
+ subtitle_no_password: Jos hyväksyt kutsun, aseta tilillesi nimi.
1824
1825
  invitation_removed: Kutsusi on peruttu.
1825
1826
  invitation_token_invalid: Käyttämäsi kutsuavain ei ole voimassa!
1826
1827
  new:
@@ -1828,6 +1829,8 @@ fi:
1828
1829
  submit_button: Lähetä kutsu
1829
1830
  no_invitations_remaining: Ei kutsuja jäljellä
1830
1831
  send_instructions: Kutsuviesti on lähetetty %{email}.
1832
+ updated: Kutsun hyväksyminen onnistui. Olet nyt kirjautunut sisään.
1833
+ updated_not_active: Kutsun hyväksyminen onnistui.
1831
1834
  mailer:
1832
1835
  confirmation_instructions:
1833
1836
  action: Vahvista käyttäjätilini
@@ -1887,6 +1890,8 @@ fi:
1887
1890
  confirm_new_password: Vahvista uusi salasana
1888
1891
  new_password: Uusi salasana
1889
1892
  old_password_help: Vahvistaaksesi muutokset käyttäjätiliisi, anna nykyinen salasanasi.
1893
+ password_help: "Vähintään %{minimum_characters} merkkiä, vähintään 5 eri merkkiä, ei voi olla yleisesti käytetty salasana (esim. 123456), eikä voi vastata nimeäsi, nimimerkkiäsi, sähköpostiosoitettasi tai tämän palvelun verkko-osoitetta."
1894
+ password_help_admin: "Vähintään %{minimum_characters} merkkiä, vähintään 5 eri merkkiä, ei voi olla yleisesti käytetty salasana (esim. 123456), eikä voi vastata nimeäsi, nimimerkkiäsi, sähköpostiosoitettasi tai tämän palvelun verkko-osoitetta. Et myöskään voi käyttää aikaisempia salasanojasi."
1890
1895
  title: Salasanan vaihto
1891
1896
  new:
1892
1897
  forgot_your_password: Unohditko salasanasi?
@@ -34,8 +34,8 @@ module Decidim
34
34
  # Group 6: Variation key for representations
35
35
  /(?<variation_part>[\w.=-]+)
36
36
  )?
37
- # Group 7: Filename
38
- /([\w.=-]+)
37
+ # Group 7: Filename (supports apostrophes inside names but not as HTML quote delimiters)
38
+ /((?:[^\s/"<>']|'(?=[^\s/"<>']))+)
39
39
  }x
40
40
 
41
41
  def rewrite
@@ -55,7 +55,7 @@ module Decidim
55
55
  blob =
56
56
  if type_part == "disk"
57
57
  # Disk service URL
58
- decoded = ActiveStorage.verifier.verified(key_part, purpose: :blob_key).with_indifferent_access
58
+ decoded = ActiveStorage.verifier.verified(key_part, purpose: :blob_key)&.with_indifferent_access
59
59
  ActiveStorage::Blob.find_by(key: decoded[:key]) if decoded
60
60
  else
61
61
  # Representation or blob
@@ -18,8 +18,8 @@ module Decidim
18
18
  #
19
19
  # @see BaseRenderer Examples of how to use a content renderer
20
20
  class BlobRenderer < BaseRenderer
21
- # Matches a global id representing a Decidim::User
22
- GLOBAL_ID_REGEX = %r{(gid://[\w-]+/ActiveStorage::Blob/\d+)(/([\w=-]+))?}
21
+ # Matches a global id representing an ActiveStorage::Blob (optionally with a variant key)
22
+ GLOBAL_ID_REGEX = %r{(gid://[\w-]+/ActiveStorage::Blob/\d+)(/([\w=-]+))?(?:[^\s"'<>]*)}
23
23
 
24
24
  # Replaces found Global IDs matching an existing blob with a URL to
25
25
  # that blob. The Global IDs representing an invalid ActiveStorage::Blob
@@ -0,0 +1,121 @@
1
+ # frozen_string_literal: true
2
+
3
+ shared_examples "participatory space members" do
4
+ let(:blocks_manifests) { [] }
5
+ let(:organization) { create(:organization) }
6
+ let(:user) { create(:user, organization: participatory_space.organization) }
7
+ let(:unpublished_user) { create(:user, organization: participatory_space.organization) }
8
+
9
+ before do
10
+ switch_to_host(organization.host)
11
+ end
12
+
13
+ context "when there are no members and directly accessing from URL" do
14
+ it_behaves_like "a 404 page" do
15
+ let(:target_path) { members_path }
16
+ end
17
+ end
18
+
19
+ context "when there are no members and accessing from the space homepage" do
20
+ context "and the main data content block is disabled" do
21
+ it "the menu nav is not shown" do
22
+ visit participatory_space_homepage_path
23
+
24
+ expect(page).to have_no_css(".participatory-space__nav-container")
25
+ end
26
+ end
27
+
28
+ context "and the main data content block is enabled" do
29
+ let(:blocks_manifests) { ["main_data"] }
30
+
31
+ it "the menu link is not shown" do
32
+ visit participatory_space_homepage_path
33
+
34
+ expect(page).to have_no_content("Members")
35
+ end
36
+ end
37
+ end
38
+
39
+ context "when the participatory space does not exist" do
40
+ it_behaves_like "a 404 page" do
41
+ let(:target_path) { unexisting_participatory_space_members_path }
42
+ end
43
+ end
44
+
45
+ context "when there are some members and all are unpublished" do
46
+ before do
47
+ create(:member, user:, participatory_space:, published: false)
48
+ end
49
+
50
+ context "and directly accessing from URL" do
51
+ it_behaves_like "a 404 page" do
52
+ let(:target_path) { members_path }
53
+ end
54
+ end
55
+
56
+ context "and accessing from the homepage" do
57
+ context "and the main data content block is disabled" do
58
+ it "the menu nav is not shown" do
59
+ visit participatory_space_homepage_path
60
+
61
+ expect(page).to have_no_css(".participatory-space__nav-container")
62
+ end
63
+ end
64
+
65
+ context "and the main data content block is enabled" do
66
+ let(:blocks_manifests) { ["main_data"] }
67
+
68
+ it "the menu link is not shown" do
69
+ visit participatory_space_homepage_path
70
+
71
+ expect(page).to have_no_content("Members")
72
+ end
73
+ end
74
+ end
75
+ end
76
+
77
+ context "when there are some published members" do
78
+ let!(:member) { create(:member, user:, participatory_space:, published: true) }
79
+ let!(:unpublished_member) { create(:member, user: unpublished_user, participatory_space:, published: false) }
80
+
81
+ before do
82
+ visit members_path
83
+ end
84
+
85
+ context "and accessing from the space homepage" do
86
+ context "and the main data content block is disabled" do
87
+ it "the menu nav is not shown" do
88
+ visit participatory_space_homepage_path
89
+
90
+ expect(page).to have_no_css(".participatory-space__nav-container")
91
+ end
92
+ end
93
+
94
+ context "and the main data content block is enabled" do
95
+ let(:blocks_manifests) { ["main_data"] }
96
+
97
+ it "the menu link is shown" do
98
+ visit participatory_space_homepage_path
99
+
100
+ within ".participatory-space__nav-container" do
101
+ expect(page).to have_content("Members")
102
+ click_on "Members"
103
+ end
104
+
105
+ expect(page).to have_current_path members_path
106
+ end
107
+ end
108
+
109
+ it "lists all the members" do
110
+ within ".layout-main__section" do
111
+ expect(page).to have_css(".profile__user", count: 1)
112
+ expect(page).to have_no_content(Decidim::ParticipatorySpace::MemberPresenter.new(unpublished_member).name)
113
+ end
114
+
115
+ click_on(member.name)
116
+
117
+ expect(page).to have_content("Profile")
118
+ end
119
+ end
120
+ end
121
+ 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.31.3"
7
+ "0.31.4"
8
8
  end
9
9
  end
10
10
  end
@@ -11,7 +11,7 @@ module Decidim
11
11
  included do
12
12
  validate :user_and_space_same_organization
13
13
 
14
- belongs_to :user, foreign_key: "decidim_user_id", class_name: "Decidim::User", optional: true
14
+ belongs_to :user, foreign_key: "decidim_user_id", class_name: "Decidim::User"
15
15
 
16
16
  ransacker :name do
17
17
  Arel.sql(%{("decidim_users"."name")::text})
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.31.3
4
+ version: 0.31.4
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: 2026-03-26 00:00:00.000000000 Z
13
+ date: 2026-04-24 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: concurrent-ruby
@@ -828,28 +828,28 @@ dependencies:
828
828
  requirements:
829
829
  - - '='
830
830
  - !ruby/object:Gem::Version
831
- version: 0.31.3
831
+ version: 0.31.4
832
832
  type: :development
833
833
  prerelease: false
834
834
  version_requirements: !ruby/object:Gem::Requirement
835
835
  requirements:
836
836
  - - '='
837
837
  - !ruby/object:Gem::Version
838
- version: 0.31.3
838
+ version: 0.31.4
839
839
  - !ruby/object:Gem::Dependency
840
840
  name: decidim-dev
841
841
  requirement: !ruby/object:Gem::Requirement
842
842
  requirements:
843
843
  - - '='
844
844
  - !ruby/object:Gem::Version
845
- version: 0.31.3
845
+ version: 0.31.4
846
846
  type: :development
847
847
  prerelease: false
848
848
  version_requirements: !ruby/object:Gem::Requirement
849
849
  requirements:
850
850
  - - '='
851
851
  - !ruby/object:Gem::Version
852
- version: 0.31.3
852
+ version: 0.31.4
853
853
  description: Adds core features so other engines can hook into the framework.
854
854
  email:
855
855
  - josepjaume@gmail.com
@@ -1368,6 +1368,7 @@ files:
1368
1368
  - app/helpers/decidim/layout_helper.rb
1369
1369
  - app/helpers/decidim/likeable_helper.rb
1370
1370
  - app/helpers/decidim/localized_locales_helper.rb
1371
+ - app/helpers/decidim/mailer_helper.rb
1371
1372
  - app/helpers/decidim/map_helper.rb
1372
1373
  - app/helpers/decidim/markup_helper.rb
1373
1374
  - app/helpers/decidim/menu_helper.rb
@@ -1578,6 +1579,7 @@ files:
1578
1579
  - app/packs/src/decidim/confirm.js
1579
1580
  - app/packs/src/decidim/confirm.test.js
1580
1581
  - app/packs/src/decidim/controllers/.keep
1582
+ - app/packs/src/decidim/controllers/accordion/accordion.test.js
1581
1583
  - app/packs/src/decidim/controllers/accordion/controller.js
1582
1584
  - app/packs/src/decidim/controllers/account_form/account_form.test.js
1583
1585
  - app/packs/src/decidim/controllers/account_form/controller.js
@@ -1588,6 +1590,7 @@ files:
1588
1590
  - app/packs/src/decidim/controllers/delete_account_form/controller.js
1589
1591
  - app/packs/src/decidim/controllers/delete_account_form/delete_account_form.test.js
1590
1592
  - app/packs/src/decidim/controllers/dropdown/controller.js
1593
+ - app/packs/src/decidim/controllers/dropdown/dropdown.test.js
1591
1594
  - app/packs/src/decidim/controllers/editor/controller.js
1592
1595
  - app/packs/src/decidim/controllers/emoji/controller.js
1593
1596
  - app/packs/src/decidim/controllers/emoji/emoji.js
@@ -1670,6 +1673,7 @@ files:
1670
1673
  - app/packs/src/decidim/editor/test/extensions/emoji.test.js
1671
1674
  - app/packs/src/decidim/editor/test/extensions/heading.test.js
1672
1675
  - app/packs/src/decidim/editor/test/extensions/image.test.js
1676
+ - app/packs/src/decidim/editor/test/extensions/image_links.test.js
1673
1677
  - app/packs/src/decidim/editor/test/extensions/indent.test.js
1674
1678
  - app/packs/src/decidim/editor/test/extensions/link.test.js
1675
1679
  - app/packs/src/decidim/editor/test/extensions/mention.test.js
@@ -2839,6 +2843,7 @@ files:
2839
2843
  - lib/decidim/core/test/shared_examples/paginated_resource_examples.rb
2840
2844
  - lib/decidim/core/test/shared_examples/participatory_space_dropdown_metadata_cell_examples.rb
2841
2845
  - lib/decidim/core/test/shared_examples/participatory_space_members_page_examples.rb
2846
+ - lib/decidim/core/test/shared_examples/participatory_space_members_shared_examples.rb
2842
2847
  - lib/decidim/core/test/shared_examples/participatory_space_search_examples.rb
2843
2848
  - lib/decidim/core/test/shared_examples/permissions.rb
2844
2849
  - lib/decidim/core/test/shared_examples/preview_with_share_token_examples.rb