decidim-core 0.32.0 → 0.32.2

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 (176) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/comments_button_cell.rb +9 -1
  3. data/app/cells/decidim/content_blocks/participatory_space_main_data/title.erb +1 -14
  4. data/app/cells/decidim/data_consent/category.erb +20 -33
  5. data/app/cells/decidim/following_cell.rb +1 -1
  6. data/app/cells/decidim/footer_topics/show.erb +5 -8
  7. data/app/cells/decidim/member/show.erb +1 -1
  8. data/app/cells/decidim/nav_links/show.erb +3 -1
  9. data/app/cells/decidim/share_text_widget/modal.erb +1 -0
  10. data/app/cells/decidim/share_widget/modal.erb +1 -0
  11. data/app/cells/decidim/share_widget/qr_code_modal.erb +2 -4
  12. data/app/commands/decidim/create_omniauth_registration.rb +17 -2
  13. data/app/controllers/concerns/decidim/devise_authentication_methods.rb +4 -0
  14. data/app/controllers/concerns/decidim/devise_controllers.rb +2 -0
  15. data/app/controllers/concerns/decidim/disable_redirection_to_external_host.rb +2 -0
  16. data/app/controllers/concerns/decidim/filter_resource.rb +2 -0
  17. data/app/controllers/concerns/decidim/impersonate_users.rb +2 -2
  18. data/app/controllers/concerns/decidim/locale_switcher.rb +12 -10
  19. data/app/controllers/concerns/decidim/needs_permission.rb +22 -10
  20. data/app/controllers/concerns/decidim/onboarding_action_methods.rb +2 -0
  21. data/app/controllers/concerns/decidim/paginable.rb +7 -3
  22. data/app/controllers/concerns/decidim/payload_info.rb +2 -0
  23. data/app/controllers/concerns/decidim/resource_versions_concern.rb +14 -0
  24. data/app/controllers/decidim/application_controller.rb +0 -6
  25. data/app/controllers/decidim/authorization_modals_controller.rb +2 -0
  26. data/app/controllers/decidim/components/base_controller.rb +2 -0
  27. data/app/controllers/decidim/devise/passwords_controller.rb +8 -0
  28. data/app/controllers/decidim/favicon_controller.rb +9 -0
  29. data/app/controllers/decidim/free_resource_authorization_modals_controller.rb +2 -0
  30. data/app/controllers/decidim/gamification/badges_controller.rb +2 -0
  31. data/app/controllers/decidim/homepage_controller.rb +4 -1
  32. data/app/controllers/decidim/likes_controller.rb +1 -1
  33. data/app/controllers/decidim/links_controller.rb +2 -0
  34. data/app/controllers/decidim/manifests_controller.rb +2 -0
  35. data/app/controllers/decidim/messaging/conversations_controller.rb +10 -4
  36. data/app/controllers/decidim/newsletters_controller.rb +4 -0
  37. data/app/controllers/decidim/notifications_subscriptions_controller.rb +4 -0
  38. data/app/controllers/decidim/offline_controller.rb +5 -1
  39. data/app/controllers/decidim/open_data_controller.rb +5 -1
  40. data/app/controllers/decidim/pages_controller.rb +31 -3
  41. data/app/controllers/decidim/private_downloads_controller.rb +2 -0
  42. data/app/controllers/decidim/profiles_controller.rb +19 -1
  43. data/app/controllers/decidim/qr_controller.rb +3 -1
  44. data/app/controllers/decidim/resource_autocomplete_controller.rb +2 -0
  45. data/app/controllers/decidim/searches_controller.rb +2 -0
  46. data/app/controllers/decidim/short_links_controller.rb +4 -0
  47. data/app/controllers/decidim/static_map_controller.rb +2 -0
  48. data/app/controllers/decidim/timeouts_controller.rb +4 -0
  49. data/app/controllers/decidim/tos_controller.rb +2 -0
  50. data/app/controllers/decidim/upload_validations_controller.rb +4 -2
  51. data/app/controllers/decidim/user_activities_controller.rb +3 -0
  52. data/app/forms/decidim/upload_validation_form.rb +16 -10
  53. data/app/helpers/concerns/decidim/user_role_checker.rb +35 -10
  54. data/app/helpers/decidim/decidim_form_helper.rb +1 -1
  55. data/app/helpers/decidim/menu_helper.rb +0 -2
  56. data/app/helpers/decidim/sanitize_helper.rb +11 -1
  57. data/app/jobs/decidim/application_job.rb +4 -0
  58. data/app/models/decidim/authorization.rb +24 -0
  59. data/app/models/decidim/oauth_application.rb +1 -0
  60. data/app/models/decidim/user.rb +3 -2
  61. data/app/models/decidim/user_base_entity.rb +1 -1
  62. data/app/packs/src/decidim/callout.js +10 -0
  63. data/app/packs/src/decidim/callout.test.js +32 -0
  64. data/app/packs/src/decidim/controllers/accordion/accordion.test.js +260 -42
  65. data/app/packs/src/decidim/controllers/accordion/controller.js +136 -17
  66. data/app/packs/src/decidim/controllers/autofocus/controller.js +30 -0
  67. data/app/packs/src/decidim/controllers/dropdown/controller.js +6 -0
  68. data/app/packs/src/decidim/controllers/dropdown/dropdown.test.js +28 -0
  69. data/app/packs/src/decidim/controllers/language_change/controller.js +21 -8
  70. data/app/packs/src/decidim/controllers/language_change/language_change.test.js +0 -1
  71. data/app/packs/src/decidim/controllers/main_menu/controller.js +4 -0
  72. data/app/packs/src/decidim/controllers/main_menu/main_menu.test.js +23 -0
  73. data/app/packs/src/decidim/controllers/mention/controller.js +32 -3
  74. data/app/packs/src/decidim/controllers/mention/input_mentions.test.js +8 -5
  75. data/app/packs/src/decidim/controllers/multiple_mentions/input_multiple_mentions.test.js +1 -1
  76. data/app/packs/src/decidim/controllers/password_toggler/controller.js +22 -1
  77. data/app/packs/src/decidim/controllers/password_toggler/password_toggler.test.js +11 -20
  78. data/app/packs/src/decidim/datepicker/datepicker_functions.js +41 -25
  79. data/app/packs/src/decidim/datepicker/generate_datepicker.js +4 -4
  80. data/app/packs/src/decidim/datepicker/test/datepicker_functions_adjust_picker_position.test.js +64 -0
  81. data/app/packs/src/decidim/datepicker/test/time.test.js +39 -24
  82. data/app/packs/src/decidim/direct_uploads/upload_modal.js +2 -1
  83. data/app/packs/src/decidim/editor/common/suggestion.js +32 -22
  84. data/app/packs/src/decidim/editor/extensions/mention/index.js +14 -3
  85. data/app/packs/src/decidim/editor/index.js +4 -0
  86. data/app/packs/src/decidim/editor/test/extensions/mention.test.js +32 -9
  87. data/app/packs/src/decidim/map/controller.js +10 -1
  88. data/app/packs/src/decidim/refactor/implementation/autofocus.js +22 -0
  89. data/app/packs/src/decidim/refactor/implementation/autofocus.test.js +171 -0
  90. data/app/packs/src/decidim/refactor/moved/focus_guard.js +12 -12
  91. data/app/packs/src/decidim/refactor/moved/focus_guard.test.js +136 -0
  92. data/app/packs/src/decidim/utilities/dom.js +2 -2
  93. data/app/packs/stylesheets/decidim/_cards.scss +1 -1
  94. data/app/packs/stylesheets/decidim/_content_blocks.scss +4 -10
  95. data/app/packs/stylesheets/decidim/_conversations.scss +0 -8
  96. data/app/packs/stylesheets/decidim/_cookies.scss +13 -5
  97. data/app/packs/stylesheets/decidim/_documents.scss +1 -1
  98. data/app/packs/stylesheets/decidim/_footer.scss +33 -1
  99. data/app/packs/stylesheets/decidim/_modal.scss +16 -8
  100. data/app/packs/stylesheets/decidim/_modal_share.scss +0 -22
  101. data/app/packs/stylesheets/decidim/_participatory_spaces.scss +12 -2
  102. data/app/packs/stylesheets/decidim/_rich_text.scss +12 -9
  103. data/app/packs/stylesheets/decidim/_typography.scss +5 -2
  104. data/app/packs/stylesheets/decidim/application.scss +1 -0
  105. data/app/packs/stylesheets/decidim/legacy/email.scss +0 -5
  106. data/app/permissions/decidim/permissions.rb +20 -0
  107. data/app/presenters/decidim/admin_log/component_presenter.rb +1 -1
  108. data/app/presenters/decidim/footer_menu_presenter.rb +2 -4
  109. data/app/presenters/decidim/log/base_presenter.rb +10 -1
  110. data/app/presenters/decidim/log/user_presenter.rb +2 -2
  111. data/app/presenters/decidim/menu_item_presenter.rb +1 -5
  112. data/app/presenters/decidim/resource_presenter.rb +11 -0
  113. data/app/resolvers/decidim/meta_image_url_resolver.rb +14 -1
  114. data/app/serializers/decidim/exporters/open_data_blocked_user_serializer.rb +11 -2
  115. data/app/serializers/decidim/exporters/open_data_moderation_serializer.rb +25 -1
  116. data/app/services/decidim/svg_content_validator.rb +554 -0
  117. data/app/uploaders/decidim/application_uploader.rb +2 -2
  118. data/app/validators/uploader_image_content_validator.rb +276 -0
  119. data/app/views/decidim/application/_radio_accordion.html.erb +1 -5
  120. data/app/views/decidim/messaging/conversations/_add_conversation_users.html.erb +1 -1
  121. data/app/views/decidim/messaging/conversations/create.js.erb +1 -3
  122. data/app/views/decidim/searches/_filters.html.erb +1 -1
  123. data/app/views/decidim/shared/_login_modal.html.erb +12 -14
  124. data/app/views/layouts/decidim/_mailer_logo.html.erb +1 -1
  125. data/app/views/layouts/decidim/footer/_main.html.erb +1 -1
  126. data/app/views/layouts/decidim/footer/_main_links.html.erb +56 -28
  127. data/app/views/layouts/decidim/header/_menu_breadcrumb_desktop.html.erb +3 -2
  128. data/config/initializers/rack_attack.rb +10 -0
  129. data/config/locales/bg.yml +0 -1
  130. data/config/locales/ca-IT.yml +9 -1
  131. data/config/locales/ca.yml +16 -6
  132. data/config/locales/cs.yml +31 -1
  133. data/config/locales/de.yml +99 -3
  134. data/config/locales/en.yml +11 -1
  135. data/config/locales/es-MX.yml +11 -1
  136. data/config/locales/es-PY.yml +11 -1
  137. data/config/locales/es.yml +15 -5
  138. data/config/locales/eu.yml +166 -161
  139. data/config/locales/fi-plain.yml +9 -1
  140. data/config/locales/fi.yml +9 -1
  141. data/config/locales/fr-CA.yml +12 -1
  142. data/config/locales/fr.yml +12 -1
  143. data/config/locales/gl.yml +1485 -33
  144. data/config/locales/hu.yml +0 -1
  145. data/config/locales/ja.yml +28 -1
  146. data/config/locales/pl.yml +2 -1
  147. data/config/locales/pt-BR.yml +0 -1
  148. data/config/locales/ro-RO.yml +0 -1
  149. data/config/locales/sk.yml +2 -1
  150. data/config/locales/sv.yml +68 -12
  151. data/config/locales/tr-TR.yml +0 -2
  152. data/config/routes.rb +11 -2
  153. data/db/migrate/20250217192438_convert_user_groups_into_users.rb +3 -2
  154. data/db/migrate/20260909000000_add_failed_attempts_and_locked_at_to_decidim_authorizations.rb +8 -0
  155. data/decidim-core.gemspec +4 -1
  156. data/lib/decidim/api/functions/user_entity_list.rb +1 -0
  157. data/lib/decidim/api/types/user_moderation_type.rb +2 -2
  158. data/lib/decidim/content_parsers/user_parser.rb +1 -1
  159. data/lib/decidim/content_parsers.rb +0 -1
  160. data/lib/decidim/content_renderers/mention_resource_renderer.rb +18 -4
  161. data/lib/decidim/content_renderers/user_renderer.rb +15 -4
  162. data/lib/decidim/core/test/shared_examples/access_mode_restricted_participatory_spaces.rb +8 -5
  163. data/lib/decidim/core/test/shared_examples/access_mode_transparent_participatory_spaces.rb +14 -11
  164. data/lib/decidim/core/test/shared_examples/comments_examples.rb +26 -0
  165. data/lib/decidim/core/test/shared_examples/participatory_space_members_page_examples.rb +77 -0
  166. data/lib/decidim/core/test/shared_examples/participatory_space_members_shared_examples.rb +58 -0
  167. data/lib/decidim/core/test/shared_examples/versions_controller_examples.rb +23 -1
  168. data/lib/decidim/core/version.rb +1 -1
  169. data/lib/decidim/core.rb +10 -1
  170. data/lib/decidim/form_builder.rb +9 -1
  171. data/lib/decidim/has_upload_validations.rb +1 -0
  172. data/lib/decidim/legacy_form_builder.rb +4 -0
  173. data/lib/decidim/map/dynamic_map.rb +3 -1
  174. metadata +33 -7
  175. data/lib/decidim/content_parsers/inline_images_parser.rb +0 -68
  176. data/lib/tasks/upgrade/decidim_active_storage_migration_tasks.rake +0 -79
@@ -252,6 +252,7 @@ es-PY:
252
252
  create: "%{user_name} agregó el componente %{resource_name} al espacio %{space_name}"
253
253
  delete: "%{user_name} eliminó el componente %{resource_name} del espacio %{space_name}"
254
254
  export_component: "%{user_name} ha exportado %{resource_name} %{component_name} en %{space_name} como %{format_name}"
255
+ menu_hidden: "%{user_name} ocultó el componente %{resource_name} del menú en el espacio de participación: %{space_name}"
255
256
  publish: "%{user_name} publicó el componente %{resource_name} en el espacio %{space_name}"
256
257
  restore: "%{user_name} restauró el componente %{resource_name} en el espacio %{space_name}"
257
258
  soft_delete: "%{user_name} ha movido el componente %{resource_name} del espacio %{space_name} a la papelera"
@@ -858,6 +859,8 @@ es-PY:
858
859
  errors:
859
860
  files:
860
861
  file_cannot_be_processed: No se ha podido procesar el archivo
862
+ file_contains_unsafe_content: El archivo contiene contenido no seguro
863
+ file_is_not_a_valid_image: El archivo no es una imagen válida
861
864
  file_resolution_too_large: La resolución del archivo es demasiado grande
862
865
  not_inside_organization: El archivo no está vinculado a ninguna organización.
863
866
  internal_server_error:
@@ -1208,6 +1211,8 @@ es-PY:
1208
1211
  dynamic:
1209
1212
  screen_reader_explanation: El siguiente elemento es un mapa que presenta los componentes de esta página como puntos en el mapa. El elemento se puede utilizar con un lector de pantalla pero puede ser difícil de entender.
1210
1213
  skip_button: Saltar el mapa
1214
+ zoom_in: Ampliar
1215
+ zoom_out: Alejar
1211
1216
  static:
1212
1217
  latlng_text: 'latitud: %{latitude}, longitud: %{longitude}'
1213
1218
  map_service_brand: OpenStreetMap
@@ -1549,6 +1554,10 @@ es-PY:
1549
1554
  never_logged_in: nunca ha iniciado sesión
1550
1555
  subject: Aviso de cuenta inactiva
1551
1556
  participatory_space:
1557
+ labels:
1558
+ reference: Referencia del espacio de participación
1559
+ restricted: Espacio de participación restringido
1560
+ transparent: Espacio de participación transparente
1552
1561
  pages:
1553
1562
  user_profile:
1554
1563
  member_of:
@@ -1707,6 +1716,8 @@ es-PY:
1707
1716
  login_modal:
1708
1717
  please_log_in: Por favor, inicia la sesión
1709
1718
  sign_up: Crea una cuenta
1719
+ mentions:
1720
+ search_prompt: Escribe aquí para buscar entre las participantes
1710
1721
  mentions_modal:
1711
1722
  remove_recipient: Eliminar destinataria %{name}
1712
1723
  progress: Progreso
@@ -2086,7 +2097,6 @@ es-PY:
2086
2097
  layouts:
2087
2098
  decidim:
2088
2099
  announcements:
2089
- view_less: Mostrar menos
2090
2100
  view_more: Más información
2091
2101
  data_consent:
2092
2102
  details:
@@ -252,6 +252,7 @@ es:
252
252
  create: "%{user_name} agregó el componente %{resource_name} al espacio %{space_name}"
253
253
  delete: "%{user_name} eliminó el componente %{resource_name} del espacio %{space_name}"
254
254
  export_component: "%{user_name} ha exportado %{resource_name} %{component_name} en %{space_name} como %{format_name}"
255
+ menu_hidden: "%{user_name} ocultó el componente %{resource_name} del menú en el espacio de participación: %{space_name}"
255
256
  publish: "%{user_name} publicó el componente %{resource_name} en el espacio %{space_name}"
256
257
  restore: "%{user_name} restauró el componente %{resource_name} en el espacio %{space_name}"
257
258
  soft_delete: "%{user_name} ha movido el componente %{resource_name} del espacio %{space_name} a la papelera"
@@ -855,6 +856,8 @@ es:
855
856
  errors:
856
857
  files:
857
858
  file_cannot_be_processed: No se ha podido procesar el archivo
859
+ file_contains_unsafe_content: El archivo contiene contenido no seguro
860
+ file_is_not_a_valid_image: El archivo no es una imagen válida
858
861
  file_resolution_too_large: La resolución del archivo es demasiado grande
859
862
  not_inside_organization: El archivo no está vinculado a ninguna organización.
860
863
  internal_server_error:
@@ -902,12 +905,12 @@ es:
902
905
  email_intro: 'Una enmienda rechazada para %{amendable_title} ha sido publicada como una nueva %{amendable_type}. Puedes verla desde esta página:'
903
906
  email_outro: Has recibido esta notificación porque se ha promocionado una esmena al apartado "%{amendable_title}" que administras.
904
907
  email_subject: Se ha publicado una modificación de %{emendation_author_name} como nuevo %{amendable_type}
905
- notification_title: Un <a href="%{emendation_path}">rechazó la enmienda</a> para <a href="%{amendable_path}">%{amendable_title}</a> se ha publicado como un nuevo %{amendable_type} por <a href="%{emendation_author_path}">%{emendation_author_name}</a>.
908
+ notification_title: La <a href="%{emendation_path}">enmienda rechazada</a> para <a href="%{amendable_path}">%{amendable_title}</a> se ha publicado como un nuevo %{amendable_type} por <a href="%{emendation_author_path}">%{emendation_author_name}</a>.
906
909
  follower:
907
910
  email_intro: 'Una enmienda rechazada para %{amendable_title} ha sido publicada como nueva %{amendable_type}. Puedes verla desde esta página:'
908
911
  email_outro: Has recibido esta notificación porque estás siguiendo la enmienda "%{amendable_title}". Puedes dejar de recibir notificaciones siguiendo el enlace anterior.
909
912
  email_subject: Se ha publicado una enmienda hecha por %{emendation_author_name} como nuevo %{amendable_type}
910
- notification_title: Un <a href="%{emendation_path}">rechazó la enmienda</a> para <a href="%{amendable_path}">%{amendable_title}</a> se ha publicado como un nuevo %{amendable_type} por <a href="%{emendation_author_path}">%{emendation_author_name}</a>.
913
+ notification_title: La <a href="%{emendation_path}">enmienda rechazada</a> para <a href="%{amendable_path}">%{amendable_title}</a> se ha publicado como un nuevo %{amendable_type} por <a href="%{emendation_author_path}">%{emendation_author_name}</a>.
911
914
  amendment_rejected:
912
915
  affected_user:
913
916
  email_intro: 'Una enmienda ha sido rechazada por %{amendable_title}. Puedes verla desde esta página:'
@@ -987,7 +990,7 @@ es:
987
990
  Una administradora eliminó tu %{resource_type} porque ha sido reportado como %{report_reasons}.</br>
988
991
  <i>%{resource_content}</i>
989
992
  resource_liked:
990
- email_intro: '%{liker_name}, a quien sigues, le acaba de gustar: "%{resource_title}", que puede ser interesante para ti. Revisala y contribuye:'
993
+ email_intro: 'A %{liker_name}, a quien sigues, le acaba de gustar: "%{resource_title}", que puede ser interesante para ti. Revisala y contribuye:'
991
994
  email_outro: Has recibido esta notificación porque estás siguiendo la iniciativa "%{liker_name}". Puedes dejar de recibir notificaciones siguiendo el enlace anterior.
992
995
  email_subject: "%{liker_name} ha realizado un nuevo \"me gusta\""
993
996
  notification_title: 'A <a href="%{liker_path}">%{liker_name}</a> le ha gustado la %{resource_type}: <a href="%{resource_path}">%{resource_title}</a>.'
@@ -997,7 +1000,7 @@ es:
997
1000
  users:
998
1001
  profile_updated:
999
1002
  email_intro: La <a href="%{resource_url}">página de perfil</a> de %{name}, a quien estás siguiendo, se ha actualizado.
1000
- email_outro: Has recibido esta notificación porque estás siguiendo "%{name}". Puedes dejar de recibir notificaciones siguiendo el enlace anterior.
1003
+ email_outro: Has recibido esta notificación porque estás siguiendo a "%{name}". Puedes dejar de recibir notificaciones siguiendo el enlace anterior.
1001
1004
  email_subject: "%{name} actualizó su perfil"
1002
1005
  notification_title: La <a href="%{resource_path}">página de perfil</a> de %{name}, a quien estás siguiendo, se ha actualizado.
1003
1006
  user_officialized:
@@ -1205,6 +1208,8 @@ es:
1205
1208
  dynamic:
1206
1209
  screen_reader_explanation: El siguiente elemento es un mapa que presenta los componentes de esta página como puntos en el mapa. El elemento se puede utilizar con un lector de pantalla pero puede ser difícil de entender.
1207
1210
  skip_button: Saltar el mapa
1211
+ zoom_in: Ampliar
1212
+ zoom_out: Alejar
1208
1213
  static:
1209
1214
  latlng_text: 'latitud: %{latitude}, longitud: %{longitude}'
1210
1215
  map_service_brand: OpenStreetMap
@@ -1546,6 +1551,10 @@ es:
1546
1551
  never_logged_in: nunca ha iniciado sesión
1547
1552
  subject: Aviso de cuenta inactiva
1548
1553
  participatory_space:
1554
+ labels:
1555
+ reference: Referencia del espacio de participación
1556
+ restricted: Espacio de participación restringido
1557
+ transparent: Espacio de participación transparente
1549
1558
  pages:
1550
1559
  user_profile:
1551
1560
  member_of:
@@ -1704,6 +1713,8 @@ es:
1704
1713
  login_modal:
1705
1714
  please_log_in: Por favor, inicia la sesión
1706
1715
  sign_up: Crea una cuenta
1716
+ mentions:
1717
+ search_prompt: Escribe aquí para buscar entre las participantes
1707
1718
  mentions_modal:
1708
1719
  remove_recipient: Eliminar destinataria %{name}
1709
1720
  progress: Progreso
@@ -2086,7 +2097,6 @@ es:
2086
2097
  layouts:
2087
2098
  decidim:
2088
2099
  announcements:
2089
- view_less: Mostrar menos
2090
2100
  view_more: Más información
2091
2101
  data_consent:
2092
2102
  details: