decidim-core 0.31.2 → 0.32.1

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 (516) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -13
  3. data/app/cells/decidim/amendable/amend_button_card/show.erb +2 -2
  4. data/app/cells/decidim/amendable/amend_button_card_cell.rb +1 -1
  5. data/app/cells/decidim/author_cell.rb +0 -4
  6. data/app/cells/decidim/card_metadata_cell.rb +1 -1
  7. data/app/cells/decidim/comments_button_cell.rb +9 -1
  8. data/app/cells/decidim/content_blocks/announcement_settings_form/show.erb +5 -0
  9. data/app/cells/decidim/content_blocks/announcement_settings_form_cell.rb +17 -0
  10. data/app/cells/decidim/content_blocks/cta_settings_form/show.erb +1 -1
  11. data/app/cells/decidim/content_blocks/hero_settings_form/show.erb +1 -1
  12. data/app/cells/decidim/content_blocks/highlighted_content_banner_cell.rb +1 -1
  13. data/app/cells/decidim/content_blocks/highlighted_content_banner_settings_form/show.erb +1 -1
  14. data/app/cells/decidim/content_blocks/highlighted_elements_with_cell_for_list_cell.rb +5 -1
  15. data/app/cells/decidim/content_blocks/highlighted_participatory_spaces_cell.rb +1 -1
  16. data/app/cells/decidim/content_blocks/how_to_participate/show.erb +1 -1
  17. data/app/cells/decidim/content_blocks/html_cell.rb +1 -1
  18. data/app/cells/decidim/content_blocks/participatory_space_announcement_cell.rb +1 -3
  19. data/app/cells/decidim/content_blocks/participatory_space_hero_cell.rb +1 -5
  20. data/app/cells/decidim/content_blocks/participatory_space_hero_settings_form/show.erb +1 -1
  21. data/app/cells/decidim/content_blocks/static_page/section_cell.rb +1 -1
  22. data/app/cells/decidim/content_blocks/static_page/section_settings_form/show.erb +3 -1
  23. data/app/cells/decidim/content_blocks/static_page/summary_cell.rb +1 -1
  24. data/app/cells/decidim/content_blocks/static_page/summary_settings_form/show.erb +3 -1
  25. data/app/cells/decidim/content_blocks/static_page/two_pane_section_cell.rb +2 -2
  26. data/app/cells/decidim/content_blocks/static_page/two_pane_section_settings_form/show.erb +4 -2
  27. data/app/cells/decidim/data_consent/category.erb +25 -38
  28. data/app/cells/decidim/footer_topics/show.erb +5 -8
  29. data/app/cells/decidim/{participatory_space_private_user → member}/show.erb +6 -6
  30. data/app/cells/decidim/{participatory_space_private_user_cell.rb → member_cell.rb} +1 -5
  31. data/app/cells/decidim/nav_links/show.erb +3 -3
  32. data/app/cells/decidim/onboarding_action_message_cell.rb +1 -0
  33. data/app/cells/decidim/profile/details.erb +1 -1
  34. data/app/cells/decidim/profile_cell.rb +1 -0
  35. data/app/cells/decidim/profile_member_of/show.erb +13 -0
  36. data/app/cells/decidim/profile_member_of_cell.rb +35 -0
  37. data/app/cells/decidim/report_button/already_reported_modal.erb +1 -1
  38. data/app/cells/decidim/report_button/flag_modal.erb +1 -1
  39. data/app/cells/decidim/report_user_button/already_reported_modal.erb +1 -1
  40. data/app/cells/decidim/report_user_button/flag_modal.erb +1 -1
  41. data/app/cells/decidim/resource_types_filter/show.erb +2 -2
  42. data/app/cells/decidim/share_text_widget/modal.erb +1 -1
  43. data/app/cells/decidim/share_widget/qr_code_modal.erb +1 -1
  44. data/app/cells/decidim/tags_cell.rb +1 -1
  45. data/app/cells/decidim/upload_modal/files.erb +5 -1
  46. data/app/cells/decidim/upload_modal_cell.rb +15 -1
  47. data/app/cells/decidim/versions_list/show.erb +25 -0
  48. data/app/commands/decidim/create_follow.rb +3 -5
  49. data/app/commands/decidim/create_user_report.rb +1 -1
  50. data/app/commands/decidim/destroy_account.rb +15 -4
  51. data/app/commands/decidim/multiple_attachments_methods.rb +42 -24
  52. data/app/commands/decidim/search.rb +5 -5
  53. data/app/controllers/concerns/decidim/ajax_permission_handler.rb +1 -1
  54. data/app/controllers/concerns/decidim/devise_controllers.rb +9 -0
  55. data/app/controllers/concerns/decidim/direct_upload.rb +3 -2
  56. data/app/controllers/concerns/decidim/ephemeral_session_checker.rb +1 -1
  57. data/app/controllers/concerns/decidim/force_authentication.rb +10 -1
  58. data/app/controllers/concerns/decidim/impersonate_users.rb +4 -0
  59. data/app/controllers/concerns/decidim/locale_switcher.rb +52 -2
  60. data/app/controllers/concerns/decidim/needs_tos_accepted.rb +1 -1
  61. data/app/controllers/concerns/decidim/participatory_space/has_members_page.rb +27 -0
  62. data/app/controllers/concerns/decidim/participatory_space_context.rb +1 -5
  63. data/app/controllers/decidim/account_controller.rb +1 -1
  64. data/app/controllers/decidim/amendments_controller.rb +5 -4
  65. data/app/controllers/decidim/components/base_controller.rb +20 -3
  66. data/app/controllers/decidim/devise/omniauth_registrations_controller.rb +1 -1
  67. data/app/controllers/decidim/devise/passwords_controller.rb +1 -1
  68. data/app/controllers/decidim/devise/registrations_controller.rb +1 -1
  69. data/app/controllers/decidim/devise/sessions_controller.rb +1 -1
  70. data/app/controllers/decidim/download_your_data_controller.rb +2 -2
  71. data/app/controllers/decidim/editor_images_controller.rb +1 -1
  72. data/app/controllers/decidim/follows_controller.rb +4 -3
  73. data/app/controllers/decidim/geolocation_controller.rb +1 -1
  74. data/app/controllers/decidim/likes_controller.rb +2 -1
  75. data/app/controllers/decidim/locales_controller.rb +3 -11
  76. data/app/controllers/decidim/messaging/conversations_controller.rb +3 -3
  77. data/app/controllers/decidim/newsletters_controller.rb +1 -1
  78. data/app/controllers/decidim/notifications_settings_controller.rb +1 -1
  79. data/app/controllers/decidim/notifications_subscriptions_controller.rb +8 -0
  80. data/app/controllers/decidim/open_data_controller.rb +1 -1
  81. data/app/controllers/decidim/private_downloads_controller.rb +29 -0
  82. data/app/controllers/decidim/report_users_controller.rb +2 -2
  83. data/app/controllers/decidim/reports_controller.rb +1 -1
  84. data/app/controllers/decidim/user_activities_controller.rb +1 -2
  85. data/app/events/decidim/amendable/amendment_base_event.rb +7 -1
  86. data/app/events/decidim/welcome_notification_event.rb +1 -1
  87. data/app/forms/decidim/upload_validation_form.rb +1 -1
  88. data/app/helpers/concerns/decidim/flash_helper_extensions.rb +1 -0
  89. data/app/helpers/decidim/active_link_to_helper.rb +136 -0
  90. data/app/helpers/decidim/amendments_helper.rb +3 -3
  91. data/app/helpers/decidim/check_boxes_tree_helper.rb +2 -2
  92. data/app/helpers/decidim/component_path_helper.rb +9 -4
  93. data/app/helpers/decidim/filters_helper.rb +0 -2
  94. data/app/helpers/decidim/mailer_helper.rb +36 -0
  95. data/app/helpers/decidim/menu_helper.rb +4 -5
  96. data/app/helpers/decidim/meta_tags_helper.rb +0 -2
  97. data/app/helpers/decidim/newsletters_helper.rb +4 -22
  98. data/app/helpers/decidim/paginate_helper.rb +14 -1
  99. data/app/helpers/decidim/sanitize_helper.rb +1 -0
  100. data/app/helpers/decidim/short_link_helper.rb +5 -5
  101. data/app/helpers/decidim/translations_helper.rb +4 -4
  102. data/app/jobs/decidim/delete_inactive_participants_job.rb +2 -2
  103. data/app/jobs/decidim/find_and_update_descendants_job.rb +8 -2
  104. data/app/jobs/decidim/process_inactive_participant_job.rb +0 -7
  105. data/app/jobs/decidim/update_search_indexes_job.rb +2 -2
  106. data/app/mailers/decidim/application_mailer.rb +11 -2
  107. data/app/mailers/decidim/decidim_devise_mailer.rb +1 -0
  108. data/app/mailers/decidim/delete_user_mailer.rb +14 -0
  109. data/app/mailers/decidim/participants_account_mailer.rb +0 -16
  110. data/app/mailers/decidim/reported_mailer.rb +4 -1
  111. data/app/models/decidim/action_log.rb +1 -1
  112. data/app/models/decidim/attachment.rb +20 -2
  113. data/app/models/decidim/authorization.rb +7 -0
  114. data/app/models/decidim/authorization_transfer.rb +1 -1
  115. data/app/models/decidim/component.rb +6 -9
  116. data/app/models/decidim/content_block.rb +3 -3
  117. data/app/models/decidim/moderation.rb +1 -1
  118. data/app/models/decidim/newsletter.rb +2 -2
  119. data/app/models/decidim/participatory_space/member.rb +55 -0
  120. data/app/models/decidim/private_download.rb +61 -0
  121. data/app/models/decidim/private_export.rb +6 -0
  122. data/app/models/decidim/resource_link.rb +1 -1
  123. data/app/models/decidim/short_link.rb +1 -1
  124. data/app/models/decidim/user.rb +2 -2
  125. data/app/models/decidim/user_base_entity.rb +17 -2
  126. data/app/models/decidim/user_moderation.rb +1 -1
  127. data/app/packs/src/decidim/a11y.js +29 -0
  128. data/app/packs/src/decidim/a11y.test.js +81 -0
  129. data/app/packs/src/decidim/confirm.js +8 -1
  130. data/app/packs/src/decidim/confirm.test.js +225 -0
  131. data/app/packs/src/decidim/controllers/accordion/accordion.test.js +272 -0
  132. data/app/packs/src/decidim/controllers/accordion/controller.js +117 -17
  133. data/app/packs/src/decidim/controllers/assign_role/assign_role.test.js +80 -0
  134. data/app/packs/src/decidim/controllers/assign_role/controller.js +27 -0
  135. data/app/packs/src/decidim/controllers/breadcrumb_truncate/breadcrumb_truncate.test.js +230 -0
  136. data/app/packs/src/decidim/controllers/breadcrumb_truncate/controller.js +172 -0
  137. data/app/packs/src/decidim/controllers/dropdown/controller.js +32 -0
  138. data/app/packs/src/decidim/controllers/dropdown/dropdown.test.js +215 -0
  139. data/app/packs/src/decidim/controllers/form_validator/form_validator.js +9 -8
  140. data/app/packs/src/decidim/controllers/form_validator/form_validator.test.js +28 -1
  141. data/app/packs/src/decidim/controllers/language_change/controller.js +1 -0
  142. data/app/packs/src/decidim/controllers/language_change/language_change.test.js +13 -0
  143. data/app/packs/src/decidim/controllers/main_menu/controller.js +152 -0
  144. data/app/packs/src/decidim/controllers/main_menu/main_menu.test.js +285 -0
  145. data/app/packs/src/decidim/controllers/mention/controller.js +296 -140
  146. data/app/packs/src/decidim/controllers/mention/input_mentions.test.js +120 -457
  147. data/app/packs/src/decidim/controllers/multiple_mentions/controller.js +68 -32
  148. data/app/packs/src/decidim/controllers/multiple_mentions/input_multiple_mentions.test.js +30 -23
  149. data/app/packs/src/decidim/controllers/password_toggler/controller.js +22 -1
  150. data/app/packs/src/decidim/controllers/password_toggler/password_toggler.test.js +11 -20
  151. data/app/packs/src/decidim/datepicker/datepicker_functions.js +26 -0
  152. data/app/packs/src/decidim/datepicker/generate_datepicker.js +3 -14
  153. data/app/packs/src/decidim/datepicker/generate_timepicker.js +3 -2
  154. data/app/packs/src/decidim/datepicker/test/datepicker_functions_adjust_picker_position.test.js +234 -0
  155. data/app/packs/src/decidim/direct_uploads/upload_field.js +4 -4
  156. data/app/packs/src/decidim/direct_uploads/upload_modal.js +12 -7
  157. data/app/packs/src/decidim/editor/common/suggestion.js +4 -2
  158. data/app/packs/src/decidim/editor/extensions/decidim_kit/index.js +4 -1
  159. data/app/packs/src/decidim/editor/extensions/image/index.js +57 -16
  160. data/app/packs/src/decidim/editor/extensions/image/node_view.js +9 -1
  161. data/app/packs/src/decidim/editor/extensions/indent/index.js +9 -0
  162. data/app/packs/src/decidim/editor/extensions/link/bubble_menu.js +34 -6
  163. data/app/packs/src/decidim/editor/extensions/link/index.js +53 -12
  164. data/app/packs/src/decidim/editor/extensions/mention/index.js +18 -5
  165. data/app/packs/src/decidim/editor/extensions/mention_resource/index.js +16 -7
  166. data/app/packs/src/decidim/editor/test/extensions/decidim_kit.test.js +13 -4
  167. data/app/packs/src/decidim/editor/test/extensions/heading.test.js +1 -1
  168. data/app/packs/src/decidim/editor/test/extensions/image.test.js +26 -28
  169. data/app/packs/src/decidim/editor/test/extensions/image_links.test.js +161 -0
  170. data/app/packs/src/decidim/editor/test/extensions/mention.test.js +6 -2
  171. data/app/packs/src/decidim/editor/test/extensions/video_embed.test.js +27 -15
  172. data/app/packs/src/decidim/editor/test/helpers.js +8 -10
  173. data/app/packs/src/decidim/editor/test/toolbar/full.test.js +15 -4
  174. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_basic_block.js +8 -4
  175. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_basic_formatting.js +5 -1
  176. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_basic_indent.js +9 -5
  177. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_basic_link.js +5 -1
  178. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_basic_list.js +8 -4
  179. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_basic_styling.js +13 -9
  180. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_content_styling.js +6 -2
  181. data/app/packs/src/decidim/geocoding/reverse_geocoding.js +15 -5
  182. data/app/packs/src/decidim/geocoding/reverse_geocoding.test.js +197 -0
  183. data/app/packs/src/decidim/index.js +4 -4
  184. data/app/packs/src/decidim/map/controller.js +10 -1
  185. data/app/packs/src/decidim/refactor/moved/focus_guard.js +16 -16
  186. data/app/packs/src/decidim/refactor/moved/focus_guard.test.js +136 -0
  187. data/app/packs/src/decidim/sw/push-permissions.js +48 -13
  188. data/app/packs/src/decidim/sw/sw.js +1 -1
  189. data/app/packs/src/decidim/utilities/text.js +6 -6
  190. data/app/packs/stylesheets/decidim/_cards.scss +15 -6
  191. data/app/packs/stylesheets/decidim/_conversations.scss +14 -0
  192. data/app/packs/stylesheets/decidim/_cookies.scss +13 -5
  193. data/app/packs/stylesheets/decidim/_datepicker.scss +0 -8
  194. data/app/packs/stylesheets/decidim/_documents.scss +1 -1
  195. data/app/packs/stylesheets/decidim/_dropdown.scss +22 -32
  196. data/app/packs/stylesheets/decidim/_editor_suggestions.scss +49 -0
  197. data/app/packs/stylesheets/decidim/_flash.scss +1 -1
  198. data/app/packs/stylesheets/decidim/_floating_help.scss +1 -1
  199. data/app/packs/stylesheets/decidim/_footer.scss +27 -31
  200. data/app/packs/stylesheets/decidim/_forms.scss +5 -1
  201. data/app/packs/stylesheets/decidim/_header.scss +183 -48
  202. data/app/packs/stylesheets/decidim/_language_chooser.scss +79 -0
  203. data/app/packs/stylesheets/decidim/_participatory_spaces.scss +1 -1
  204. data/app/packs/stylesheets/decidim/_rich_text.scss +17 -0
  205. data/app/packs/stylesheets/decidim/_tom_select.scss +23 -0
  206. data/app/packs/stylesheets/decidim/application.scss +3 -0
  207. data/app/packs/stylesheets/decidim/editor.scss +12 -33
  208. data/app/packs/stylesheets/decidim/geocoding_addons.scss +10 -2
  209. data/app/presenters/decidim/admin_log/participatory_space/member_presenter.rb +40 -0
  210. data/app/presenters/decidim/admin_log/static_page_resource_presenter.rb +1 -1
  211. data/app/presenters/decidim/authorization_transfer_presenter.rb +1 -1
  212. data/app/presenters/decidim/breadcrumb_root_menu_item_presenter.rb +3 -3
  213. data/app/presenters/decidim/footer_menu_presenter.rb +2 -4
  214. data/app/presenters/decidim/log/user_presenter.rb +1 -0
  215. data/app/presenters/decidim/log/value_types/access_mode_presenter.rb +45 -0
  216. data/app/presenters/decidim/menu_item_presenter.rb +15 -3
  217. data/app/presenters/decidim/participatory_space/member_presenter.rb +48 -0
  218. data/app/presenters/decidim/resource_locator_presenter.rb +22 -3
  219. data/app/presenters/decidim/stats_presenter.rb +1 -1
  220. data/app/queries/decidim/last_activity.rb +1 -1
  221. data/app/resolvers/decidim/meta_image_url_resolver.rb +7 -0
  222. data/app/serializers/decidim/exporters/participatory_space_serializer.rb +15 -1
  223. data/app/services/decidim/email_notification_generator.rb +2 -0
  224. data/app/services/decidim/notification_generator.rb +4 -0
  225. data/app/services/decidim/notifications_subscriptions_persistor.rb +6 -0
  226. data/app/services/decidim/push_subscription_endpoint_validator.rb +34 -0
  227. data/app/services/decidim/send_push_notification.rb +5 -1
  228. data/app/uploaders/decidim/image_uploader.rb +1 -1
  229. data/app/uploaders/decidim/organization_favicon_uploader.rb +4 -9
  230. data/app/validators/uploader_image_dimensions_validator.rb +13 -11
  231. data/app/views/decidim/delete_user_mailer/delete.html.erb +6 -0
  232. data/app/views/decidim/devise/invitations/edit.html.erb +3 -3
  233. data/app/views/decidim/devise/registrations/new.html.erb +1 -0
  234. data/app/views/decidim/devise/shared/_tos_fields.html.erb +3 -3
  235. data/app/views/decidim/gamification/badges/index.html.erb +1 -1
  236. data/app/views/decidim/homepage/show.html.erb +2 -2
  237. data/app/views/decidim/last_activities/index.html.erb +1 -1
  238. data/app/views/decidim/messaging/conversations/_error_modal.html.erb +11 -19
  239. data/app/views/decidim/messaging/conversations/_new_conversation_button.html.erb +1 -1
  240. data/app/views/decidim/messaging/conversations/_reply.html.erb +1 -1
  241. data/app/views/decidim/messaging/conversations/error.js.erb +12 -7
  242. data/app/views/decidim/messaging/conversations/new.html.erb +1 -1
  243. data/app/views/decidim/messaging/conversations/show.html.erb +2 -2
  244. data/app/views/decidim/newsletters/unsubscribe.html.erb +1 -1
  245. data/app/views/decidim/notification_mailer/event_received.html.erb +3 -3
  246. data/app/views/decidim/notifications_settings/show.html.erb +5 -5
  247. data/app/views/decidim/offline/show.html.erb +1 -1
  248. data/app/views/decidim/pages/_tabbed.html.erb +3 -3
  249. data/app/views/decidim/pages/index.html.erb +1 -1
  250. data/app/views/decidim/participatory_space/members/_member.html.erb +1 -0
  251. data/app/views/decidim/profiles/show.html.erb +1 -1
  252. data/app/views/decidim/searches/_filters.html.erb +1 -1
  253. data/app/views/decidim/shared/_filters.html.erb +5 -5
  254. data/app/views/decidim/shared/_resource_actions.html.erb +4 -4
  255. data/app/views/decidim/shared/_results_per_page.html.erb +1 -1
  256. data/app/views/decidim/shared/filters/_check_boxes_tree.html.erb +2 -2
  257. data/app/views/decidim/shared/filters/_collection.html.erb +1 -1
  258. data/app/views/decidim/shared/filters/_dropdown_label.html.erb +4 -3
  259. data/app/views/decidim/user_activities/index.html.erb +1 -1
  260. data/app/views/devise/mailer/{invite_private_user.html.erb → invite_member.html.erb} +2 -2
  261. data/app/views/devise/mailer/{invite_private_user.text.erb → invite_member.text.erb} +2 -2
  262. data/app/views/layouts/decidim/_head.html.erb +2 -2
  263. data/app/views/layouts/decidim/_wrapper.html.erb +3 -3
  264. data/app/views/layouts/decidim/footer/_focus_mode_main.html.erb +0 -1
  265. data/app/views/layouts/decidim/footer/_main.html.erb +1 -2
  266. data/app/views/layouts/decidim/footer/_main_links.html.erb +56 -28
  267. data/app/views/layouts/decidim/header/_focus_mode_back_button.html.erb +4 -1
  268. data/app/views/layouts/decidim/header/_main.html.erb +17 -8
  269. data/app/views/layouts/decidim/header/_main_language_chooser.html.erb +24 -0
  270. data/app/views/layouts/decidim/header/_main_links_desktop.html.erb +56 -56
  271. data/app/views/layouts/decidim/header/_main_links_mobile_account.html.erb +2 -2
  272. data/app/views/layouts/decidim/header/_main_links_mobile_item_account.html.erb +3 -1
  273. data/app/views/layouts/decidim/header/_main_menu_mobile.html.erb +18 -5
  274. data/app/views/layouts/decidim/header/_main_search.html.erb +3 -3
  275. data/app/views/layouts/decidim/header/_menu.html.erb +5 -5
  276. data/app/views/layouts/decidim/header/_menu_breadcrumb_desktop.html.erb +40 -12
  277. data/app/views/layouts/decidim/header/_menu_breadcrumb_mobile.html.erb +33 -0
  278. data/app/views/layouts/decidim/shared/_layout_center.html.erb +1 -1
  279. data/app/views/layouts/decidim/shared/_layout_item.html.erb +1 -1
  280. data/app/views/layouts/decidim/shared/_layout_two_col.html.erb +1 -1
  281. data/config/initializers/decidim_locale_aware_named_route_helper.rb +16 -0
  282. data/config/initializers/devise.rb +6 -0
  283. data/config/initializers/invisible_captcha.rb +1 -0
  284. data/config/locales/ar.yml +6 -38
  285. data/config/locales/bg.yml +3 -39
  286. data/config/locales/ca-IT.yml +91 -58
  287. data/config/locales/ca.yml +91 -58
  288. data/config/locales/cs.yml +54 -58
  289. data/config/locales/de.yml +45 -68
  290. data/config/locales/el.yml +3 -31
  291. data/config/locales/en.yml +88 -55
  292. data/config/locales/es-MX.yml +93 -60
  293. data/config/locales/es-PY.yml +93 -60
  294. data/config/locales/es.yml +95 -62
  295. data/config/locales/eu.yml +124 -92
  296. data/config/locales/fi-plain.yml +93 -55
  297. data/config/locales/fi.yml +96 -58
  298. data/config/locales/fr-CA.yml +70 -52
  299. data/config/locales/fr.yml +71 -54
  300. data/config/locales/ga-IE.yml +3 -1
  301. data/config/locales/gl.yml +3 -31
  302. data/config/locales/hu.yml +7 -40
  303. data/config/locales/id-ID.yml +3 -30
  304. data/config/locales/is-IS.yml +0 -6
  305. data/config/locales/it.yml +15 -33
  306. data/config/locales/ja.yml +105 -71
  307. data/config/locales/lb.yml +3 -33
  308. data/config/locales/lt.yml +4 -37
  309. data/config/locales/lv.yml +3 -30
  310. data/config/locales/nl.yml +3 -33
  311. data/config/locales/no.yml +3 -33
  312. data/config/locales/pl.yml +7 -41
  313. data/config/locales/pt-BR.yml +24 -65
  314. data/config/locales/pt.yml +3 -33
  315. data/config/locales/ro-RO.yml +12 -55
  316. data/config/locales/ru.yml +0 -16
  317. data/config/locales/sk.yml +1417 -32
  318. data/config/locales/sv.yml +44 -62
  319. data/config/locales/tr-TR.yml +20 -37
  320. data/config/locales/uk.yml +0 -9
  321. data/config/locales/zh-CN.yml +3 -30
  322. data/config/locales/zh-TW.yml +4 -35
  323. data/config/routes.rb +140 -76
  324. data/db/data/20251213075429_rename_members_in_action_log.rb +22 -0
  325. data/db/data/20260319145808_rename_send_to_members_in_newsletter.rb +27 -0
  326. data/db/migrate/20200730142511_add_file_upload_settings_to_decidim_organizations.rb +13 -15
  327. data/db/migrate/20250217192438_convert_user_groups_into_users.rb +3 -2
  328. data/db/migrate/20250523104311_move_cta_to_hero_content_block.rb +1 -1
  329. data/db/migrate/20250527122040_move_highlighted_content_banner_settings_to_content_block.rb +1 -1
  330. data/db/migrate/20250819110800_convert_private_exports_id_to_uuid.rb +2 -2
  331. data/db/migrate/20251112132305_remove_legacy_images_from_core_module.rb +27 -0
  332. data/db/migrate/20251205122428_rename_participatory_space_private_users_to_members.rb +9 -0
  333. data/db/migrate/20251216185133_rename_privatable_to_to_participatory_space_in_members.rb +10 -0
  334. data/db/migrate/20260208201405_remove_user_group_core.rb +21 -0
  335. data/db/migrate/20260208201406_remove_user_group_memberships.rb +30 -0
  336. data/db/migrate/20260208201407_remove_user_group_organizations.rb +11 -0
  337. data/db/migrate/20260217152425_remove_enable_participatory_space_filters_from_decidim_organizations.rb +7 -0
  338. data/db/migrate/20260314081619_add_index_on_decidim_members.rb +25 -0
  339. data/decidim-core.gemspec +28 -28
  340. data/lib/decidim/acts_as_tree.rb +12 -12
  341. data/lib/decidim/admin_filters_registry.rb +1 -1
  342. data/lib/decidim/amendable.rb +5 -1
  343. data/lib/decidim/api/functions/category_list.rb +1 -0
  344. data/lib/decidim/api/functions/component_finder_base.rb +1 -1
  345. data/lib/decidim/api/functions/component_list.rb +3 -1
  346. data/lib/decidim/api/functions/component_list_base.rb +1 -0
  347. data/lib/decidim/api/functions/participatory_space_finder_base.rb +1 -1
  348. data/lib/decidim/api/functions/participatory_space_list_base.rb +1 -0
  349. data/lib/decidim/api/functions/user_entity_list.rb +2 -1
  350. data/lib/decidim/api/interfaces/amendable_entity_interface.rb +1 -0
  351. data/lib/decidim/api/interfaces/amendable_interface.rb +1 -0
  352. data/lib/decidim/api/interfaces/attachable_collection_interface.rb +1 -0
  353. data/lib/decidim/api/interfaces/attachable_interface.rb +1 -0
  354. data/lib/decidim/api/interfaces/author_interface.rb +2 -1
  355. data/lib/decidim/api/interfaces/authorable_interface.rb +1 -0
  356. data/lib/decidim/api/interfaces/categories_container_interface.rb +1 -0
  357. data/lib/decidim/api/interfaces/categorizable_interface.rb +1 -0
  358. data/lib/decidim/api/interfaces/coauthorable_interface.rb +1 -0
  359. data/lib/decidim/api/interfaces/component_interface.rb +9 -8
  360. data/lib/decidim/api/interfaces/fingerprint_interface.rb +1 -0
  361. data/lib/decidim/api/interfaces/followable_interface.rb +2 -0
  362. data/lib/decidim/api/interfaces/likeable_interface.rb +2 -2
  363. data/lib/decidim/api/interfaces/localizable_interface.rb +1 -0
  364. data/lib/decidim/api/interfaces/participatory_space_interface.rb +1 -0
  365. data/lib/decidim/api/interfaces/referable_interface.rb +1 -0
  366. data/lib/decidim/api/interfaces/scopable_interface.rb +1 -0
  367. data/lib/decidim/api/interfaces/taxonomizable_interface.rb +1 -0
  368. data/lib/decidim/api/interfaces/timestamps_interface.rb +1 -0
  369. data/lib/decidim/api/interfaces/traceable_interface.rb +1 -0
  370. data/lib/decidim/api/types/attachment_collection_type.rb +5 -3
  371. data/lib/decidim/api/types/attachment_type.rb +11 -4
  372. data/lib/decidim/api/types/badge_score_type.rb +28 -0
  373. data/lib/decidim/api/types/moderation_type.rb +25 -0
  374. data/lib/decidim/api/types/participant_details_type.rb +17 -0
  375. data/lib/decidim/api/types/reportable_type.rb +18 -0
  376. data/lib/decidim/api/types/reportable_user_type.rb +17 -0
  377. data/lib/decidim/api/types/static_page_topic_type.rb +16 -0
  378. data/lib/decidim/api/types/static_page_type.rb +22 -0
  379. data/lib/decidim/api/types/taxonomy_type.rb +2 -0
  380. data/lib/decidim/api/types/user_moderation_type.rb +36 -0
  381. data/lib/decidim/api/types/user_type.rb +13 -0
  382. data/lib/decidim/asset_router/pipeline.rb +1 -1
  383. data/lib/decidim/asset_router/storage.rb +9 -9
  384. data/lib/decidim/assets/tailwind/tailwind.config.js.erb +4 -1
  385. data/lib/decidim/attachment_attributes.rb +58 -9
  386. data/lib/decidim/attribute_encryptor.rb +51 -10
  387. data/lib/decidim/attribute_object/model.rb +0 -5
  388. data/lib/decidim/block_registry.rb +1 -1
  389. data/lib/decidim/coauthorable.rb +2 -1
  390. data/lib/decidim/command.rb +2 -1
  391. data/lib/decidim/content_parsers/blob_parser.rb +3 -3
  392. data/lib/decidim/content_processor.rb +1 -1
  393. data/lib/decidim/content_renderers/base_renderer.rb +112 -0
  394. data/lib/decidim/content_renderers/blob_renderer.rb +6 -9
  395. data/lib/decidim/content_renderers/mention_resource_renderer.rb +10 -6
  396. data/lib/decidim/content_renderers/resource_renderer.rb +16 -7
  397. data/lib/decidim/content_renderers/user_renderer.rb +11 -9
  398. data/lib/decidim/core/api.rb +8 -0
  399. data/lib/decidim/core/content_blocks/registry_manager.rb +4 -10
  400. data/lib/decidim/core/engine.rb +10 -34
  401. data/lib/decidim/core/menu.rb +0 -26
  402. data/lib/decidim/core/test/factories.rb +32 -18
  403. data/lib/decidim/core/test/shared_examples/access_mode_restricted_participatory_spaces.rb +175 -0
  404. data/lib/decidim/core/test/shared_examples/access_mode_transparent_participatory_spaces.rb +244 -0
  405. data/lib/decidim/core/test/shared_examples/admin_resource_gallery_examples.rb +10 -10
  406. data/lib/decidim/core/test/shared_examples/amendable/amendment_event_examples.rb +2 -2
  407. data/lib/decidim/core/test/shared_examples/amendable/amendment_promoted_event_examples.rb +3 -3
  408. data/lib/decidim/core/test/shared_examples/comments_examples.rb +147 -117
  409. data/lib/decidim/core/test/shared_examples/fingerprint_examples.rb +2 -0
  410. data/lib/decidim/core/test/shared_examples/has_members.rb +63 -0
  411. data/lib/decidim/core/test/shared_examples/has_space_in_mcell_examples.rb +2 -1
  412. data/lib/decidim/core/test/shared_examples/manage_share_tokens_examples.rb +1 -1
  413. data/lib/decidim/core/test/shared_examples/map_examples.rb +1 -1
  414. data/lib/decidim/core/test/shared_examples/participant_details_examples.rb +16 -0
  415. data/lib/decidim/core/test/shared_examples/participatory_space_members_page_examples.rb +10 -10
  416. data/lib/decidim/core/test/shared_examples/participatory_space_members_shared_examples.rb +121 -0
  417. data/lib/decidim/core/test/shared_examples/resource_liked_event_examples.rb +3 -3
  418. data/lib/decidim/core/test/shared_examples/resource_locator_presenter_examples.rb +7 -7
  419. data/lib/decidim/core/test/shared_examples/searchable_participatory_space_examples.rb +3 -3
  420. data/lib/decidim/core/test/shared_examples/searchable_results_examples.rb +2 -2
  421. data/lib/decidim/core/test/shared_examples/simple_event.rb +1 -0
  422. data/lib/decidim/core/test/shared_examples/translated_event_examples.rb +2 -2
  423. data/lib/decidim/core/test/shared_examples/versions_controller_examples.rb +1 -1
  424. data/lib/decidim/core/test.rb +2 -1
  425. data/lib/decidim/core/version.rb +1 -1
  426. data/lib/decidim/core.rb +222 -335
  427. data/lib/decidim/download_your_data_serializers/{download_your_data_participatory_space_private_user_serializer.rb → download_your_data_member_serializer.rb} +6 -6
  428. data/lib/decidim/download_your_data_serializers.rb +2 -2
  429. data/lib/decidim/engine_router.rb +31 -6
  430. data/lib/decidim/exporters/csv.rb +1 -1
  431. data/lib/decidim/filter_form_builder.rb +1 -1
  432. data/lib/decidim/form_builder.rb +58 -36
  433. data/{app/controllers/concerns → lib}/decidim/form_factory.rb +11 -1
  434. data/lib/decidim/has_settings.rb +2 -2
  435. data/lib/decidim/legacy_form_builder.rb +1 -0
  436. data/lib/decidim/locale_router_detector.rb +41 -0
  437. data/lib/decidim/maintenance/import_models/scope.rb +1 -1
  438. data/lib/decidim/maintenance/import_models.rb +0 -2
  439. data/lib/decidim/maintenance/taxonomy_importer.rb +1 -1
  440. data/lib/decidim/map/autocomplete.rb +4 -3
  441. data/lib/decidim/map/dynamic_map.rb +3 -1
  442. data/lib/decidim/map/frontend.rb +1 -1
  443. data/lib/decidim/map/geocoding.rb +2 -2
  444. data/lib/decidim/map/static_map.rb +10 -22
  445. data/lib/decidim/map/utility.rb +3 -6
  446. data/lib/decidim/map.rb +2 -2
  447. data/lib/decidim/menu.rb +1 -1
  448. data/lib/decidim/menu_item.rb +1 -0
  449. data/lib/decidim/menu_registry.rb +1 -1
  450. data/lib/decidim/moderation_tools.rb +1 -1
  451. data/lib/decidim/newsletter_encryptor.rb +5 -8
  452. data/lib/decidim/organization_settings.rb +2 -2
  453. data/lib/decidim/participable.rb +1 -0
  454. data/lib/decidim/participatory_space/has_members.rb +61 -0
  455. data/lib/decidim/participatory_space_manifest.rb +0 -4
  456. data/lib/decidim/participatory_space_resourceable.rb +10 -1
  457. data/lib/decidim/participatory_space_user.rb +1 -1
  458. data/lib/decidim/routes/locale_redirects.rb +47 -0
  459. data/lib/decidim/routes.rb +7 -0
  460. data/lib/decidim/search_resource_fields_mapper.rb +3 -4
  461. data/lib/decidim/searchable.rb +9 -4
  462. data/lib/decidim/seeds.rb +17 -0
  463. data/lib/decidim/shakapacker/runner.rb +4 -4
  464. data/lib/decidim/shakapacker/shakapacker.yml +28 -3
  465. data/lib/decidim/taxonomizable.rb +1 -1
  466. data/lib/decidim/translatable_attributes.rb +9 -3
  467. data/lib/decidim/view_model.rb +5 -1
  468. data/lib/devise/models/decidim_newsletterable.rb +1 -1
  469. data/lib/tasks/decidim_mailers_tasks.rake +31 -9
  470. data/lib/tasks/decidim_procfile.rake +1 -1
  471. data/lib/tasks/decidim_tasks.rake +0 -1
  472. data/lib/tasks/decidim_taxonomies.rake +1 -1
  473. data/lib/tasks/upgrade/decidim_active_storage_migration_tasks.rake +0 -1
  474. data/lib/tasks/upgrade/decidim_encryption.rake +12 -0
  475. data/lib/tasks/upgrade/decidim_migrate_wysiwyg_content.rake +0 -1
  476. data/lib/tasks/upgrade/decidim_remove_deleted_users_left_data_tasks.rake +1 -1
  477. data/lib/tasks/upgrade/{fix_deleted_private_follows.rake → fix_deleted_members_follows.rake} +5 -5
  478. data/lib/tasks/upgrade/migrations.rake +0 -1
  479. data/lib/tasks/upgrade/user_groups_migration.rake +0 -1
  480. metadata +244 -132
  481. data/app/cells/decidim/content_blocks/global_menu/show.erb +0 -11
  482. data/app/cells/decidim/content_blocks/global_menu_cell.rb +0 -35
  483. data/app/cells/decidim/content_blocks/menu_breadcrumb_last_activity/show.erb +0 -10
  484. data/app/cells/decidim/content_blocks/menu_breadcrumb_last_activity_cell.rb +0 -49
  485. data/app/cells/decidim/participatory_space_dropdown_metadata/links.erb +0 -9
  486. data/app/cells/decidim/participatory_space_dropdown_metadata/metadata.erb +0 -1
  487. data/app/cells/decidim/participatory_space_dropdown_metadata/show.erb +0 -11
  488. data/app/cells/decidim/participatory_space_dropdown_metadata_cell.rb +0 -26
  489. data/app/commands/decidim/gallery_methods.rb +0 -107
  490. data/app/controllers/concerns/decidim/has_members_page.rb +0 -25
  491. data/app/jobs/decidim/newsletters_opt_in_job.rb +0 -11
  492. data/app/jobs/decidim/user_report_job.rb +0 -11
  493. data/app/models/decidim/participatory_space_private_user.rb +0 -51
  494. data/app/packs/src/decidim/controllers/sticky_header/controller.js +0 -116
  495. data/app/packs/src/decidim/controllers/sticky_header/sticky_header.test.js +0 -320
  496. data/app/packs/src/decidim/dropdown_menu.js +0 -18
  497. data/app/packs/src/decidim/identity_selector_dialog.js +0 -33
  498. data/app/packs/src/decidim/vendor/tribute.js +0 -1890
  499. data/app/packs/stylesheets/decidim/_tribute.scss +0 -36
  500. data/app/presenters/decidim/admin_log/participatory_space_private_user_presenter.rb +0 -38
  501. data/app/presenters/decidim/participatory_space_private_user_presenter.rb +0 -46
  502. data/app/views/decidim/participants_account_mailer/removal_notification.html.erb +0 -11
  503. data/app/views/decidim/participatory_space_private_users/_participatory_space_private_user.html.erb +0 -1
  504. data/app/views/layouts/decidim/footer/_main_language_chooser.html.erb +0 -26
  505. data/app/views/layouts/decidim/header/_menu_breadcrumb_items.html.erb +0 -34
  506. data/app/views/layouts/decidim/header/_menu_breadcrumb_main_dropdown_desktop.html.erb +0 -10
  507. data/app/views/layouts/decidim/header/_menu_breadcrumb_main_dropdown_mobile.html.erb +0 -17
  508. data/app/views/layouts/decidim/header/_menu_breadcrumb_main_dropdown_top_left.html.erb +0 -2
  509. data/app/views/layouts/decidim/header/_menu_breadcrumb_mobile_tablet.html.erb +0 -33
  510. data/app/views/layouts/decidim/header/_mobile_language_choose.html.erb +0 -25
  511. data/lib/decidim/core/test/shared_examples/has_private_users.rb +0 -63
  512. data/lib/decidim/core/test/shared_examples/participatory_space_dropdown_metadata_cell_examples.rb +0 -81
  513. data/lib/decidim/has_private_users.rb +0 -57
  514. data/lib/decidim/maintenance/import_models/assembly_type.rb +0 -49
  515. data/lib/decidim/maintenance/import_models/participatory_process_type.rb +0 -21
  516. data/lib/decidim/query_extensions.rb +0 -64
@@ -109,9 +109,6 @@ zh-CN:
109
109
  update: "%{user_name} 更新了 %{resource_name} OAuth 应用程序"
110
110
  organization:
111
111
  update: "%{user_name} 更新了组织设置"
112
- participatory_space_private_user:
113
- create: "%{user_name} 邀請了 %{resource_name} 作为私人参与者"
114
- delete: "%{user_name} 移除了参与者 %{resource_name} 作为私人参与者"
115
112
  scope:
116
113
  create: "%{user_name} 创建了 %{resource_name} 范围"
117
114
  create_with_parent: "%{user_name} 在 %{parent_scope} 范围内创建了 %{resource_name} 范围"
@@ -176,9 +173,6 @@ zh-CN:
176
173
  update_draft:
177
174
  error: 更新修正草案时遇到问题。
178
175
  success: 修正草稿已成功更新。
179
- wizard_step_form:
180
- steps:
181
- '1': 创建您的修改
182
176
  anonymous_user: 匿名的
183
177
  application:
184
178
  document:
@@ -266,7 +260,6 @@ zh-CN:
266
260
  global:
267
261
  amendments_enabled: 修改已启用
268
262
  comments_enabled: 评论已启用
269
- comments_max_length: 评论最大长度
270
263
  dummy_global_attribute1: 虚拟属性 1
271
264
  dummy_global_attribute2: 虚拟属性 2
272
265
  dummy_global_translatable_text: 虚拟可翻译文本
@@ -355,13 +348,9 @@ zh-CN:
355
348
  affected_user:
356
349
  email_intro: '%{amendable_title}的修改已被接受。您可以从这个页面查看:'
357
350
  email_outro: 您收到此通知是因为您是 %{amendable_title} 的作者。
358
- email_subject: 接受来自 %{amendable_title} 的 %{emendation_author_nickname} 修正案
359
- notification_title: 由 <a href="%{emendation_author_path}">%{emendation_author_nickname}</a> 创建的 <a href="%{emendation_path}">修正</a> 已被接受 <a href="%{amendable_path}">%{amendable_title}</a>。
360
351
  follower:
361
352
  email_intro: '%{amendable_title}的修改已被接受。您可以从这个页面查看:'
362
353
  email_outro: 您收到此通知是因为您正在关注 %{amendable_title}。您可以停止收到跟随上一个链接的通知。
363
- email_subject: 接受来自 %{amendable_title} 的 %{emendation_author_nickname} 修正案
364
- notification_title: 由 <a href="%{emendation_author_path}">%{emendation_author_nickname}</a> 创建的 <a href="%{emendation_path}">修正</a> 已被接受 <a href="%{amendable_path}">%{amendable_title}</a>。
365
354
  amendment_created:
366
355
  affected_user:
367
356
  email_intro: '已经为 %{amendable_title}创建了一个新的版本。您可以从这个页面查看它:'
@@ -377,22 +366,16 @@ zh-CN:
377
366
  affected_user:
378
367
  email_intro: '%{amendable_title} 的被拒绝的修订已经发布为新的 %{amendable_type}。您可以从这个页面查看:'
379
368
  email_outro: 您收到此通知是因为您是 %{amendable_title} 的作者。
380
- email_subject: 来自 %{emendation_author_nickname} 的修订已经发布为新的 %{amendable_type}
381
369
  follower:
382
370
  email_intro: '%{amendable_title} 的被拒绝的修订已经发布为新的 %{amendable_type}。您可以从这个页面查看:'
383
371
  email_outro: 您收到此通知是因为您正在关注 %{amendable_title}。您可以停止收到跟随上一个链接的通知。
384
- email_subject: 来自 %{emendation_author_nickname} 的修订已经发布为新的 %{amendable_type}
385
372
  amendment_rejected:
386
373
  affected_user:
387
374
  email_intro: '%{amendable_title}的修订已被拒绝。您可以从这个页面查看:'
388
375
  email_outro: 您收到此通知是因为您是 %{amendable_title} 的作者。
389
- email_subject: '%{amendable_title} 的 %{emendation_author_nickname} 修正案被拒绝'
390
- notification_title: 由 <a href="%{emendation_author_path}">%{emendation_author_nickname}</a> 创建的 <a href="%{emendation_path}">项修正</a> 已被 <a href="%{amendable_path}">%{amendable_title}</a> 拒绝。
391
376
  follower:
392
377
  email_intro: '%{amendable_title}的修订已被拒绝。您可以从这个页面查看:'
393
378
  email_outro: 您收到此通知是因为您正在关注 %{amendable_title}。您可以停止收到跟随上一个链接的通知。
394
- email_subject: '%{amendable_title} 的 %{emendation_author_nickname} 修正案被拒绝'
395
- notification_title: 由 <a href="%{emendation_author_path}">%{emendation_author_nickname}</a> 创建的 <a href="%{emendation_path}">项修正</a> 已被 <a href="%{amendable_path}">%{amendable_title}</a> 拒绝。
396
379
  attachments:
397
380
  attachment_created:
398
381
  email_intro: '一个新文档已添加到 %{resource_title}。您可以从这个页面查看:'
@@ -415,12 +398,6 @@ zh-CN:
415
398
  email_outro: 您收到此通知是因为您在我们的网站上进行了活动。
416
399
  level_up:
417
400
  email_outro: 您收到此通知是因为您在我们的网站上进行了活动。
418
- users:
419
- profile_updated:
420
- email_intro: 您关注的 %{name} (%{nickname}) 的 <a href="%{resource_url}">个人资料页面</a> 已经更新。
421
- email_outro: 您收到此通知是因为您正在关注 %{nickname}。您可以停止收到跟随上一个链接的通知。
422
- email_subject: "%{nickname} 更新了他们的个人资料"
423
- notification_title: 您关注的 %{name} (%{nickname}) 的 <a href="%{resource_path}">个人资料页面</a> 已经更新。
424
401
  export_mailer:
425
402
  download_your_data_export:
426
403
  download: 下载
@@ -527,7 +504,6 @@ zh-CN:
527
504
  latlng_text: '纬度: %{latitude}, 经度: %{longitude}'
528
505
  map_service_brand: OpenStreetMap
529
506
  menu:
530
- help: 帮助
531
507
  home: 首页
532
508
  messaging:
533
509
  conversation_mailer:
@@ -546,7 +522,6 @@ zh-CN:
546
522
  modal_title: 新建对话
547
523
  no_results: 没有结果
548
524
  error_modal:
549
- close: 关闭模式
550
525
  correct_errors: 请更正错误,然后重试。
551
526
  intro: '您的消息有以下错误:'
552
527
  ok: 好的
@@ -636,6 +611,9 @@ zh-CN:
636
611
  subheading: 浏览 %{name} 的帮助页面
637
612
  title: 帮助
638
613
  topics: 主题
614
+ participatory_space_members:
615
+ index:
616
+ members: 成员
639
617
  profile:
640
618
  deleted: 删除参与者
641
619
  profiles:
@@ -773,8 +751,6 @@ zh-CN:
773
751
  submit_button: 发送邀请
774
752
  no_invitations_remaining: 没有剩余邀请
775
753
  send_instructions: 邀请邮件已发送至 %{email}。
776
- updated: 您的密码设置成功。您现在已登录。
777
- updated_not_active: 您的密码设置成功。
778
754
  mailer:
779
755
  confirmation_instructions:
780
756
  action: 确认我的帐户
@@ -790,10 +766,8 @@ zh-CN:
790
766
  decline: 拒绝邀请
791
767
  hello: 您好 %{email},
792
768
  invited_you_as_admin: "%{invited_by} 邀请您担任了 %{application}的管理员。您可以通过下面的链接接受它。"
793
- invited_you_as_private_user: "%{invited_by} 邀请您作为私有参与者 %{application}。您可以通过下面的链接接受它。"
794
769
  someone_invited_you: 有人邀请您访问 %{application}。您可以通过下面的链接接受它。
795
770
  someone_invited_you_as_admin: 有人邀请您作为 %{application}的管理员,您可以通过下面的链接接受它。
796
- someone_invited_you_as_private_user: 有人邀请您作为私有参与者 %{application},您可以通过下面的链接接受它。
797
771
  subject: 邀请说明
798
772
  password_change:
799
773
  greeting: 你好 %{recipient}!
@@ -912,7 +886,6 @@ zh-CN:
912
886
  fallback: 无效
913
887
  name_included_in_password: 与您的名字太近了
914
888
  not_enough_unique_characters: 没有足够的唯一字符
915
- password_not_allowed: 不允许
916
889
  password_too_common: 太常见了
917
890
  password_too_long: 太长
918
891
  password_too_short: 太短了
@@ -196,10 +196,6 @@ zh-TW:
196
196
  organization:
197
197
  update: "%{user_name} 更新了組織設定"
198
198
  update_external_domain: "%{user_name} 更新了組織外部域名"
199
- participatory_space_private_user:
200
- create: "%{user_name} 邀請了 %{resource_name} 成為私人參與者"
201
- create_via_csv: "%{user_name} 透過 CSV 邀請了 %{resource_name} 成為私人參與者"
202
- delete: "%{user_name} 將參與者 %{resource_name} 從私人參與者中移除"
203
199
  scope:
204
200
  create: "%{user_name} 創建了 %{resource_name} 範圍"
205
201
  create_with_parent: "%{user_name} 在 %{parent_scope} 範圍內創建了 %{resource_name} 範圍"
@@ -293,9 +289,6 @@ zh-TW:
293
289
  success: 修正案草稿成功更新。
294
290
  withdraw:
295
291
  success: 修正案已成功撤回.
296
- wizard_step_form:
297
- steps:
298
- '1': 創建您的修正案
299
292
  anonymous_user: 匿名
300
293
  application:
301
294
  document:
@@ -409,7 +402,6 @@ zh-TW:
409
402
  global:
410
403
  amendments_enabled: 修改功能已啟用
411
404
  comments_enabled: 啟用評論功能
412
- comments_max_length: 評論最大長度
413
405
  dummy_global_attribute1: 虛擬屬性 1
414
406
  dummy_global_attribute2: 虛擬屬性 2
415
407
  dummy_global_translatable_text: 虛擬可翻譯文字
@@ -554,13 +546,9 @@ zh-TW:
554
546
  affected_user:
555
547
  email_intro: '已接受對於 %{amendable_title} 的修正案。您可以從此頁面中查看:'
556
548
  email_outro: 你收到此通知,是因為你是%{amendable_title} 的作者。
557
- email_subject: 已接受對於 %{amendable_title} 的修正案,來自於 %{emendation_author_nickname}
558
- notification_title: <a href="%{emendation_path}">修正案</a>由<a href="%{emendation_author_path}">%{emendation_author_nickname}</a>創建,已被接受適用於<a href="%{amendable_path}">%{amendable_title}</a>。
559
549
  follower:
560
550
  email_intro: '已接受對於 %{amendable_title} 的修正案。您可以從此頁面中查看:'
561
551
  email_outro: 您收到此通知,是因為您正在關注 %{amendable_title}。您可以使用上面的連結停止接收通知。
562
- email_subject: 已接受對於 %{amendable_title} 的修正案,來自於 %{emendation_author_nickname}
563
- notification_title: <a href="%{emendation_path}">修正案</a>由<a href="%{emendation_author_path}">%{emendation_author_nickname}</a>創建,已被接受適用於<a href="%{amendable_path}">%{amendable_title}</a>。
564
552
  amendment_created:
565
553
  affected_user:
566
554
  email_intro: '已為 %{amendable_title} 創建一個新的修正案。您可以從此頁面查看:'
@@ -576,24 +564,16 @@ zh-TW:
576
564
  affected_user:
577
565
  email_intro: '一個被拒絕的修正案已被發佈為新的 %{amendable_type},針對 %{amendable_title}。您可以從此頁面查看:'
578
566
  email_outro: 你收到此通知,是因為你是%{amendable_title} 的作者。
579
- email_subject: 來自 %{emendation_author_nickname} 的修正案已被發佈為新的 %{amendable_type}
580
- notification_title: 一個<a href="%{emendation_path}">被拒絕的修正案</a>已由<a href="%{emendation_author_path}">%{emendation_author_nickname}</a>發佈為新的 %{amendable_type},針對<a href="%{amendable_path}">%{amendable_title}</a>。
581
567
  follower:
582
568
  email_intro: '一個被拒絕的修正案已被發佈為新的 %{amendable_type},針對 %{amendable_title}。您可以從此頁面查看:'
583
569
  email_outro: 您收到此通知,是因為您正在關注 %{amendable_title}。您可以使用上面的連結停止接收通知。
584
- email_subject: 來自 %{emendation_author_nickname} 的修正案已被發佈為新的 %{amendable_type}
585
- notification_title: 一個<a href="%{emendation_path}">被拒絕的修正案</a>已由<a href="%{emendation_author_path}">%{emendation_author_nickname}</a>發佈為新的 %{amendable_type},針對<a href="%{amendable_path}">%{amendable_title}</a>。
586
570
  amendment_rejected:
587
571
  affected_user:
588
572
  email_intro: '一個修正案已被拒絕,針對 %{amendable_title}。您可以從此頁面查看:'
589
573
  email_outro: 你收到此通知,是因為你是%{amendable_title} 的作者。
590
- email_subject: 修正案由 %{emendation_author_nickname} 提交,針對 %{amendable_title},已被拒絕。
591
- notification_title: <a href="%{emendation_path}">%{emendation_author_nickname}</a>創建的<a href="%{emendation_path}">修正案</a>已被拒絕,針對<a href="%{amendable_path}">%{amendable_title}</a>。
592
574
  follower:
593
575
  email_intro: '一個修正案已被拒絕,針對 %{amendable_title}。您可以從此頁面查看:'
594
576
  email_outro: 您收到此通知,是因為您正在關注 %{amendable_title}。您可以使用上面的連結停止接收通知。
595
- email_subject: 修正案由 %{emendation_author_nickname} 提交,針對 %{amendable_title},已被拒絕。
596
- notification_title: <a href="%{emendation_path}">%{emendation_author_nickname}</a>創建的<a href="%{emendation_path}">修正案</a>已被拒絕,針對<a href="%{amendable_path}">%{amendable_title}</a>。
597
577
  attachments:
598
578
  attachment_created:
599
579
  email_intro: '已新增一個文件至 %{resource_title}。您可以從此頁面查看:'
@@ -630,16 +610,9 @@ zh-TW:
630
610
  notification_title: |-
631
611
  一位管理員因為 %{report_reasons} 的舉報,移除了您的%{resource_type}。</br> <i>%{resource_content}</i>
632
612
  users:
633
- profile_updated:
634
- email_intro: 你正在追蹤的 %{name}(%{nickname}) 的<a href="%{resource_path}">個人資料頁面</a>已被更新。
635
- email_outro: 您收到此通知是因為您正在關注 %{nickname}。您可以點擊上方的連結停止接收通知。
636
- email_subject: "%{nickname} 更新了他們的個人資料。"
637
- notification_title: 你正在追蹤的 %{name}(%{nickname}) 的<a href="%{resource_path}">個人資料頁面</a>已被更新。
638
613
  user_officialized:
639
- email_intro: 參與者 %{name} (%{nickname}) 已被官方認證。
640
614
  email_outro: 您收到此通知是因為您是該組織的管理員。
641
615
  email_subject: "%{name} 已被官方認證。"
642
- notification_title: 參與者 %{name} (%{nickname}) 已被官方認證。
643
616
  export_mailer:
644
617
  download_your_data_export:
645
618
  download: 下載
@@ -797,7 +770,6 @@ zh-TW:
797
770
  latlng_text: '緯度:%{latitude},經度:%{longitude}'
798
771
  map_service_brand: 開放街圖
799
772
  menu:
800
- help: 幫助
801
773
  home: 首頁
802
774
  messaging:
803
775
  conversation_mailer:
@@ -819,7 +791,6 @@ zh-TW:
819
791
  create:
820
792
  error: 對話未開始。請稍後再試。
821
793
  error_modal:
822
- close: 關閉視窗
823
794
  correct_errors: 請修正錯誤後再試一次。
824
795
  intro: '您的訊息有以下錯誤:'
825
796
  ok: 好的
@@ -979,6 +950,9 @@ zh-TW:
979
950
  alert: 我們已更新我們的服務條款,請您查閱。
980
951
  body: 請花一點時間檢閱我們的服務條款更新,否則您將無法使用平台。
981
952
  title: '必須:檢閱我們的服務條款更新'
953
+ participatory_space_members:
954
+ index:
955
+ members: 成員
982
956
  passwords:
983
957
  update:
984
958
  error: 密碼更新時發生問題.
@@ -1167,8 +1141,6 @@ zh-TW:
1167
1141
  submit_button: 發送一個邀請
1168
1142
  no_invitations_remaining: 沒有待處理的邀請
1169
1143
  send_instructions: 已向 %{email} 發送了一封邀請郵件。
1170
- updated: 您的密碼已成功設定。您現在已登入。
1171
- updated_not_active: 您的密碼已成功設定。
1172
1144
  mailer:
1173
1145
  confirmation_instructions:
1174
1146
  action: 確認我的帳戶
@@ -1187,10 +1159,8 @@ zh-TW:
1187
1159
  ignore: |-
1188
1160
  如果您不想接受邀請,請忽略此電子郵件。<br />在您使用上述連結設置您的暱稱和密碼之前,您的帳戶不會被創建。
1189
1161
  invited_you_as_admin: "%{invited_by} 邀請您成為 %{application} 的管理員。您可以通過下面的連結接受邀請。"
1190
- invited_you_as_private_user: "%{invited_by} 邀請您成為 %{application} 的私密參與者。您可以通過下面的連結接受邀請。"
1191
1162
  someone_invited_you: 有人邀請您加入 %{application}。您可以通過下面的連結接受邀請。
1192
1163
  someone_invited_you_as_admin: 有人邀請您成為 %{application} 的管理員,您可以通過下面的連結接受邀請。
1193
- someone_invited_you_as_private_user: 有人邀請您成為 %{application} 的私人參與者,您可以通過下面的連結接受邀請。
1194
1164
  subject: 邀請說明
1195
1165
  invite_admin:
1196
1166
  subject: 你已經被邀請成為 %{organization} 的管理者
@@ -1306,7 +1276,7 @@ zh-TW:
1306
1276
  description: 說明
1307
1277
  name: 名稱
1308
1278
  service: 服務
1309
- type: 類別
1279
+ type: 種類
1310
1280
  items:
1311
1281
  _session_id:
1312
1282
  description: 允許網站在使用者在網頁之間移動時記住使用者。
@@ -1406,7 +1376,6 @@ zh-TW:
1406
1376
  name_included_in_password: 與您的名字太相似
1407
1377
  nickname_included_in_password: 與您的暱稱太相似
1408
1378
  not_enough_unique_characters: 沒有足夠的獨特字符
1409
- password_not_allowed: 不被允許
1410
1379
  password_repeated: 不能重複使用舊密碼
1411
1380
  password_too_common: 太常見了
1412
1381
  password_too_long: 太長
data/config/routes.rb CHANGED
@@ -1,47 +1,21 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  Decidim::Core::Engine.routes.draw do
4
+ extend Decidim::Routes::LocaleRedirects
5
+
4
6
  mount Decidim::Api::Engine => "/api"
5
7
 
8
+ get "/", to: redirect(&locale_redirector("/")), as: :root_redirect
9
+
6
10
  get "/offline", to: "offline#show"
7
11
 
8
12
  get "/favicon.ico", to: "favicon#show"
9
13
 
10
- devise_for :users,
11
- class_name: "Decidim::User",
12
- module: :devise,
13
- router_name: :decidim,
14
- controllers: {
15
- invitations: "decidim/devise/invitations",
16
- sessions: "decidim/devise/sessions",
17
- confirmations: "decidim/devise/confirmations",
18
- passwords: "decidim/devise/passwords",
19
- unlocks: "decidim/devise/unlocks",
20
- omniauth_callbacks: "decidim/devise/omniauth_registrations"
21
- },
22
- skip: [:registrations]
23
-
24
- # Manually define the registration routes because otherwise the default "edit"
25
- # route would be exposed through Devise while we already have the edit and
26
- # destroy routes available through the account pages.
27
- resource(
28
- :registration,
29
- only: [:new, :create],
30
- as: :user_registration,
31
- path: "/users",
32
- path_names: { new: "sign_up" },
33
- controller: "devise/registrations"
34
- ) do
35
- # The "cancel" route forces the session data which is usually expired after
36
- # sign in to be expired now. This is useful if the user wants to cancel
37
- # OAuth signing in/up in the middle of the process, removing all OAuth
38
- # session data. @see [Devise::RegistrationsController#cancel]
39
- get :cancel
40
- end
14
+ get "/admin", to: redirect(&locale_redirector("/admin"))
41
15
 
42
- devise_scope :user do
43
- post "omniauth_registrations" => "devise/omniauth_registrations#create"
44
- end
16
+ get "/admin/*rest", to: redirect { |params, request|
17
+ locale_redirect(params, request, "/admin/#{params[:rest]}")
18
+ }
45
19
 
46
20
  resource :manifest, only: [:show]
47
21
 
@@ -54,35 +28,49 @@ Decidim::Core::Engine.routes.draw do
54
28
  end
55
29
 
56
30
  authenticate(:user) do
57
- devise_scope :user do
58
- get "change_password" => "devise/passwords"
59
- put "apply_password" => "devise/passwords"
31
+ resources :private_downloads, only: :show
32
+
33
+ scope "/:locale", **locale_scope_options do
34
+ devise_scope :user do
35
+ get "change_password" => "devise/passwords"
36
+ put "apply_password" => "devise/passwords"
37
+ end
38
+
39
+ resource :account, only: [:show, :update, :destroy], controller: "account" do
40
+ member do
41
+ get :delete
42
+ post :resend_confirmation_instructions
43
+ post :cancel_email_change
44
+ end
45
+ end
60
46
  end
61
47
 
62
- resource :account, only: [:show, :update, :destroy], controller: "account" do
63
- member do
64
- get :delete
65
- post :resend_confirmation_instructions
66
- post :cancel_email_change
48
+ scope "/:locale", **locale_scope_options do
49
+ resource :download_your_data, only: [:show], controller: "download_your_data" do
50
+ member do
51
+ post :export
52
+ get "/:uuid", to: "download_your_data#download_file", as: :download
53
+ end
67
54
  end
68
55
  end
69
- resources :conversations, only: [:new, :create, :index, :show, :update], controller: "messaging/conversations"
70
- post "/conversations/check_multiple", to: "messaging/conversations#check_multiple"
71
- resources :notifications, only: [:index, :destroy] do
72
- collection do
73
- delete :read_all
56
+
57
+ scope "/:locale", **locale_scope_options do
58
+ resources :notifications, only: [:index, :destroy] do
59
+ collection do
60
+ delete :read_all
61
+ end
74
62
  end
63
+
64
+ resources :conversations, only: [:new, :create, :index, :show, :update], controller: "messaging/conversations"
65
+ post "/conversations/check_multiple", to: "messaging/conversations#check_multiple"
66
+
67
+ resource :notifications_settings, only: [:show, :update], controller: "notifications_settings"
75
68
  end
76
- resource :notifications_settings, only: [:show, :update], controller: "notifications_settings"
77
69
 
78
70
  get "/newsletters_opt_in/:token", to: "newsletters_opt_in#update", as: :newsletters_opt_in
79
71
 
80
- resource :download_your_data, only: [:show], controller: "download_your_data" do
81
- member do
82
- post :export
83
- get "/:uuid", to: "download_your_data#download_file", as: :download
84
- end
85
- end
72
+ get "/download_your_data", to: redirect(&locale_redirector("/download_your_data"))
73
+ get "/download_your_data/:uuid", to: redirect { |params, request| locale_redirector("/download_your_data/#{params[:uuid]}").call(params, request) }
86
74
 
87
75
  resources :notifications_subscriptions, param: :auth, only: [:create, :destroy]
88
76
 
@@ -92,14 +80,12 @@ Decidim::Core::Engine.routes.draw do
92
80
  to: "free_resource_authorization_modals#show",
93
81
  as: :free_resource_authorization_modal
94
82
  )
95
- end
96
83
 
97
- resources :profiles, only: [:show], param: :nickname, constraints: { nickname: %r{[^/]+} }, format: false
98
- scope "/profiles/:nickname", format: false, constraints: { nickname: %r{[^/]+} } do
99
- get "following", to: "profiles#following", as: "profile_following"
100
- get "followers", to: "profiles#followers", as: "profile_followers"
101
- get "badges", to: "profiles#badges", as: "profile_badges"
102
- get "activity", to: "user_activities#index", as: "profile_activity"
84
+ get "/account/*rest", to: redirect { |params, request|
85
+ locale_redirect(params, request, "/account/#{params[:rest]}")
86
+ }
87
+
88
+ get "/account", to: redirect(&locale_redirector("/account"))
103
89
  end
104
90
 
105
91
  scope :timeouts do
@@ -107,9 +93,99 @@ Decidim::Core::Engine.routes.draw do
107
93
  get "seconds_until_timeout", to: "timeouts#seconds_until_timeout"
108
94
  end
109
95
 
110
- resources :pages, only: [:index, :show], format: false
96
+ # OmniAuth callbacks must be defined outside any dynamic segment scope
97
+ # because Devise does not support scoping them under /:locale.
98
+ devise_for :users,
99
+ class_name: "Decidim::User",
100
+ module: :devise,
101
+ router_name: :decidim,
102
+ controllers: {
103
+ omniauth_callbacks: "decidim/devise/omniauth_registrations"
104
+ },
105
+ only: :omniauth_callbacks
106
+
107
+ scope "/:locale", **locale_scope_options do
108
+ devise_for :users,
109
+ class_name: "Decidim::User",
110
+ module: :devise,
111
+ router_name: :decidim,
112
+ controllers: {
113
+ invitations: "decidim/devise/invitations",
114
+ sessions: "decidim/devise/sessions",
115
+ confirmations: "decidim/devise/confirmations",
116
+ passwords: "decidim/devise/passwords",
117
+ unlocks: "decidim/devise/unlocks"
118
+ },
119
+ skip: [:registrations, :omniauth_callbacks]
120
+
121
+ # Manually define the registration routes because otherwise the default "edit"
122
+ # route would be exposed through Devise while we already have the edit and
123
+ # destroy routes available through the account pages.
124
+ resource(
125
+ :registration,
126
+ only: [:new, :create],
127
+ as: :user_registration,
128
+ path: "/users",
129
+ path_names: { new: "sign_up" },
130
+ controller: "devise/registrations"
131
+ ) do
132
+ # The "cancel" route forces the session data which is usually expired after
133
+ # sign in to be expired now. This is useful if the user wants to cancel
134
+ # OAuth signing in/up in the middle of the process, removing all OAuth
135
+ # session data. @see [Devise::RegistrationsController#cancel]
136
+ get :cancel
137
+ end
138
+
139
+ devise_scope :user do
140
+ post "omniauth_registrations" => "devise/omniauth_registrations#create"
141
+ end
142
+
143
+ resources :pages, only: [:index, :show], format: false
144
+
145
+ resources :profiles, only: [:show], param: :nickname, constraints: { nickname: %r{[^/]+} }, format: false
146
+ scope "/profiles/:nickname", format: false, constraints: { nickname: %r{[^/]+} } do
147
+ get "following", to: "profiles#following", as: "profile_following"
148
+ get "followers", to: "profiles#followers", as: "profile_followers"
149
+ get "badges", to: "profiles#badges", as: "profile_badges"
150
+ get "activity", to: "user_activities#index", as: "profile_activity"
151
+ end
152
+
153
+ get "/open-data", to: "open_data#index", as: :open_data
154
+ get "/open-data/download", to: "open_data#download", as: :open_data_download
155
+ get "/open-data/download/:resource", to: "open_data#download", as: :open_data_download_resource
156
+ get "/search", to: "searches#index", as: :search
157
+ resources :last_activities, only: [:index]
158
+ namespace :gamification do
159
+ resources :badges, only: [:index]
160
+ end
161
+
162
+ root to: "homepage#show"
163
+ end
164
+
165
+ get "/last_activities", to: redirect(&locale_redirector("/last_activities"))
166
+ get "/search", to: redirect(&locale_redirector("/search"))
167
+ get "/pages", to: redirect(&locale_redirector("/pages"))
168
+ get "/pages/*rest", to: redirect { |params, request| locale_redirector("/pages/#{params[:rest]}").call(params, request) }
169
+ get "/gamification/*rest", to: redirect { |params, request| locale_redirector("/gamification/#{params[:rest]}").call(params, request) }
170
+ get "/open-data/*rest", to: redirect { |params, request| locale_redirector("/open-data/#{params[:rest]}").call(params, request) }
171
+ get "/open-data", to: redirect(&locale_redirector("/open-data"))
172
+ get "/profiles/*rest", to: redirect { |params, request| locale_redirector("/profiles/#{params[:rest]}").call(params, request) }
173
+ get "/notifications", to: redirect(&locale_redirector("/notifications"))
174
+ get "/conversations", to: redirect(&locale_redirector("/conversations"))
175
+ get "/conversations/*rest", to: redirect { |params, request| locale_redirector("/conversations/#{params[:rest]}").call(params, request) }
176
+ get "/notifications_settings", to: redirect(&locale_redirector("/notifications_settings"))
177
+
178
+ get "/users/sign_in", to: redirect(&locale_redirector("/users/sign_in"))
179
+ get "/users/sign_up", to: redirect(&locale_redirector("/users/sign_up"))
180
+ get "/users/password/new", to: redirect(&locale_redirector("/users/password/new"))
181
+ get "/users/password/edit", to: redirect(&locale_redirector("/users/password/edit"))
182
+ get "/users/confirmation/new", to: redirect(&locale_redirector("/users/confirmation/new"))
183
+ get "/users/confirmation", to: redirect(&locale_redirector("/users/confirmation"))
184
+ get "/users/unlock/new", to: redirect(&locale_redirector("/users/unlock/new"))
185
+ get "/users/unlock", to: redirect(&locale_redirector("/users/unlock"))
186
+ get "/users/invitation/new", to: redirect(&locale_redirector("/users/invitation/new"))
187
+ get "/users/invitation/accept", to: redirect(&locale_redirector("/users/invitation/accept"))
111
188
 
112
- get "/search", to: "searches#index", as: :search
113
189
  get "/resource_autocomplete", to: "resource_autocomplete#index", as: :resource_autocomplete
114
190
 
115
191
  get "/link", to: "links#new", as: :link
@@ -121,15 +197,11 @@ Decidim::Core::Engine.routes.draw do
121
197
  match "/404", to: "errors#not_found", via: :all
122
198
  match "/500", to: "errors#internal_server_error", via: :all
123
199
 
124
- get "/open-data", to: "open_data#index", as: :open_data
125
- get "/open-data/download", to: "open_data#download", as: :open_data_download
126
- get "/open-data/download/:resource", to: "open_data#download", as: :open_data_download_resource
127
-
128
200
  resource :follow, only: [:create, :destroy]
129
201
  resource :report, only: [:create]
130
202
  resource :report_user, only: [:create]
131
203
  resources :likes, only: [:create, :destroy]
132
- resources :amends, only: [:new, :reject, :accept], controller: :amendments do
204
+ resources :amends, only: [:new], controller: :amendments do
133
205
  collection do
134
206
  post :create
135
207
  end
@@ -149,18 +221,12 @@ Decidim::Core::Engine.routes.draw do
149
221
 
150
222
  resources :editor_images, only: [:create]
151
223
 
152
- namespace :gamification do
153
- resources :badges, only: [:index]
154
- end
155
-
156
224
  resources :newsletters, only: [:show] do
157
225
  get :unsubscribe, on: :collection
158
226
  end
159
227
 
160
228
  resources :upload_validations, only: [:create]
161
229
 
162
- resources :last_activities, only: [:index]
163
-
164
230
  resources :short_links, only: [:index, :show], path: "s"
165
231
 
166
232
  use_doorkeeper do
@@ -170,6 +236,4 @@ Decidim::Core::Engine.routes.draw do
170
236
  scope :oauth do
171
237
  get "/me" => "doorkeeper/credentials#me"
172
238
  end
173
-
174
- root to: "homepage#show"
175
239
  end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ class RenameMembersInActionLog < ActiveRecord::Migration[7.2]
4
+ class ActionLog < ApplicationRecord
5
+ self.table_name = :decidim_action_logs
6
+ end
7
+
8
+ def up
9
+ old_resource_type = "Decidim::ParticipatorySpacePrivateUser"
10
+ new_resource_type = "Decidim::ParticipatorySpace::Member"
11
+
12
+ # rubocop:disable Rails/SkipsModelValidations
13
+ updated_count = ActionLog.where(resource_type: old_resource_type).update_all(resource_type: new_resource_type)
14
+ # rubocop:enable Rails/SkipsModelValidations
15
+
16
+ Rails.logger.info "Updated #{updated_count} ActionLog records from #{old_resource_type} to #{new_resource_type}"
17
+ end
18
+
19
+ def down
20
+ raise ActiveRecord::IrreversibleMigration
21
+ end
22
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ class RenameSendToMembersInNewsletter < ActiveRecord::Migration[8.1]
4
+ class Newsletter < ApplicationRecord
5
+ self.table_name = :decidim_newsletters
6
+ end
7
+
8
+ def up
9
+ Newsletter.find_each do |newsletter|
10
+ next unless newsletter.extended_data
11
+ next unless newsletter.extended_data.has_key?("send_to_private_members")
12
+
13
+ newsletter.extended_data["send_to_members"] = newsletter.extended_data.delete("send_to_private_members")
14
+ newsletter.save!(validate: false)
15
+ end
16
+ end
17
+
18
+ def down
19
+ Newsletter.find_each do |newsletter|
20
+ next unless newsletter.extended_data
21
+ next unless newsletter.extended_data.has_key?("send_to_members")
22
+
23
+ newsletter.extended_data["send_to_private_members"] = newsletter.extended_data.delete("send_to_members")
24
+ newsletter.save!(validate: false)
25
+ end
26
+ end
27
+ end
@@ -6,23 +6,21 @@ class AddFileUploadSettingsToDecidimOrganizations < ActiveRecord::Migration[5.2]
6
6
 
7
7
  reversible do |dir|
8
8
  dir.up do
9
- Decidim.configure do |config|
10
- # Even when these configurations have been deleted, they are available
11
- # in the config object if they are defined by the initializer.
12
- attachment_size = config.fetch(:maximum_attachment_size, 10.megabytes)
13
- avatar_size = config.fetch(:maximum_avatar_size, 5.megabytes)
9
+ # Even when these configurations have been deleted, they are available
10
+ # in the config object if they are defined by the initializer.
11
+ attachment_size = Decidim.maximum_attachment_size || 10.megabytes
12
+ avatar_size = Decidim.maximum_avatar_size || 5.megabytes
14
13
 
15
- # Update all organizations with the default file upload settings.
16
- Decidim::Organization.all.each do |organization|
17
- organization.update(
18
- file_upload_settings: default_settings.merge(
19
- "maximum_file_size" => {
20
- "default" => attachment_size / 1.megabyte,
21
- "avatar" => avatar_size / 1.megabyte
22
- }
23
- )
14
+ # Update all organizations with the default file upload settings.
15
+ Decidim::Organization.all.each do |organization|
16
+ organization.update(
17
+ file_upload_settings: default_settings.merge(
18
+ "maximum_file_size" => {
19
+ "default" => attachment_size / 1.megabyte,
20
+ "avatar" => avatar_size / 1.megabyte
21
+ }
24
22
  )
25
- end
23
+ )
26
24
  end
27
25
  end
28
26
  end