decidim-core 0.28.5 → 0.29.0.rc1

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 (714) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/app/cells/decidim/activities_cell.rb +0 -1
  4. data/app/cells/decidim/activity_cell.rb +7 -6
  5. data/app/cells/decidim/address/online.erb +2 -2
  6. data/app/cells/decidim/address_cell.rb +3 -9
  7. data/app/cells/decidim/amendable/amend_button_card_cell.rb +0 -2
  8. data/app/cells/decidim/amendable/amendments_cell.rb +0 -2
  9. data/app/cells/decidim/amendable/announcement_cell.rb +10 -14
  10. data/app/cells/decidim/amendable/emendation_actions_cell.rb +0 -2
  11. data/app/cells/decidim/amendable/promote_button_card_cell.rb +0 -2
  12. data/app/cells/decidim/amendable/wizard_step_form_cell.rb +6 -19
  13. data/app/cells/decidim/announcement/show.erb +1 -1
  14. data/app/cells/decidim/announcement_cell.rb +6 -2
  15. data/app/cells/decidim/attachments_file_tab/show.erb +3 -0
  16. data/app/cells/decidim/attachments_file_tab_cell.rb +11 -0
  17. data/app/cells/decidim/attachments_link_tab/show.erb +12 -0
  18. data/app/cells/decidim/attachments_link_tab_cell.rb +21 -0
  19. data/app/cells/decidim/author/flag.erb +2 -2
  20. data/app/cells/decidim/author/show.erb +4 -5
  21. data/app/cells/decidim/author_cell.rb +0 -28
  22. data/app/cells/decidim/authorization_modal_cell.rb +0 -3
  23. data/app/cells/decidim/badge_cell.rb +0 -4
  24. data/app/cells/decidim/badges_cell.rb +0 -2
  25. data/app/cells/decidim/button_cell.rb +0 -3
  26. data/app/cells/decidim/card_cell.rb +1 -5
  27. data/app/cells/decidim/card_g/show.erb +1 -1
  28. data/app/cells/decidim/card_g_cell.rb +4 -7
  29. data/app/cells/decidim/card_l/image.erb +2 -2
  30. data/app/cells/decidim/card_l/space.erb +1 -1
  31. data/app/cells/decidim/card_l_cell.rb +3 -8
  32. data/app/cells/decidim/card_metadata_cell.rb +1 -5
  33. data/app/cells/decidim/card_s/show.erb +3 -5
  34. data/app/cells/decidim/card_s_cell.rb +1 -4
  35. data/app/cells/decidim/coauthorships_cell.rb +0 -2
  36. data/app/cells/decidim/comments_button_cell.rb +0 -2
  37. data/app/cells/decidim/content_blocks/footer_sub_hero/show.erb +1 -1
  38. data/app/cells/decidim/content_blocks/footer_sub_hero_cell.rb +0 -3
  39. data/app/cells/decidim/content_blocks/hero/show.erb +1 -1
  40. data/app/cells/decidim/content_blocks/hero_cell.rb +1 -2
  41. data/app/cells/decidim/content_blocks/highlighted_content_banner/show.erb +1 -1
  42. data/app/cells/decidim/content_blocks/highlighted_content_banner_cell.rb +0 -2
  43. data/app/cells/decidim/content_blocks/how_to_participate/show.erb +1 -1
  44. data/app/cells/decidim/content_blocks/how_to_participate_cell.rb +0 -1
  45. data/app/cells/decidim/content_blocks/participatory_space_documents/content.erb +1 -1
  46. data/app/cells/decidim/content_blocks/participatory_space_documents_cell.rb +17 -1
  47. data/app/cells/decidim/content_blocks/participatory_space_hero_cell.rb +2 -4
  48. data/app/cells/decidim/content_blocks/participatory_space_last_activity_cell.rb +1 -3
  49. data/app/cells/decidim/content_blocks/stats/show.erb +1 -1
  50. data/app/cells/decidim/content_blocks/stats_cell.rb +1 -1
  51. data/app/cells/decidim/content_blocks/sub_hero_cell.rb +0 -3
  52. data/app/cells/decidim/date_range/show.erb +10 -10
  53. data/app/cells/decidim/date_range_cell.rb +0 -2
  54. data/app/cells/decidim/diff_cell.rb +0 -5
  55. data/app/cells/decidim/documents_panel/show.erb +4 -0
  56. data/app/cells/decidim/documents_panel_cell.rb +9 -1
  57. data/app/cells/decidim/endorsement_buttons_cell.rb +6 -14
  58. data/app/cells/decidim/flag_modal/flag_user.erb +3 -3
  59. data/app/cells/decidim/followers_cell.rb +0 -1
  60. data/app/cells/decidim/following_cell.rb +0 -1
  61. data/app/cells/decidim/footer_topics/show.erb +8 -0
  62. data/app/cells/decidim/footer_topics_cell.rb +39 -0
  63. data/app/cells/decidim/groups_cell.rb +0 -3
  64. data/app/cells/decidim/linked_resources_for_cell.rb +0 -3
  65. data/app/cells/decidim/members_cell.rb +0 -1
  66. data/app/cells/decidim/nav_links/show.erb +3 -3
  67. data/app/cells/decidim/navbar_admin_link_cell.rb +0 -2
  68. data/app/cells/decidim/newsletter_templates/base_cell.rb +0 -1
  69. data/app/cells/decidim/newsletter_templates/basic_only_text/show.erb +2 -2
  70. data/app/cells/decidim/newsletter_templates/image_text_cta/show.erb +2 -2
  71. data/app/cells/decidim/newsletter_templates/image_text_cta_cell.rb +1 -1
  72. data/app/cells/decidim/notification/show.erb +5 -0
  73. data/app/cells/decidim/notification_actions/base_cell.rb +13 -0
  74. data/app/cells/decidim/notification_actions/buttons/show.erb +5 -0
  75. data/app/cells/decidim/notification_actions/buttons_cell.rb +41 -0
  76. data/app/cells/decidim/notification_cell.rb +9 -3
  77. data/app/cells/decidim/notifications_cell.rb +0 -1
  78. data/app/cells/decidim/pad_iframe/show.erb +2 -2
  79. data/app/cells/decidim/pad_iframe_cell.rb +0 -1
  80. data/app/cells/decidim/participatory_space_dropdown_metadata_cell.rb +1 -2
  81. data/app/cells/decidim/photo_cell.rb +1 -5
  82. data/app/cells/decidim/photos_list_cell.rb +0 -2
  83. data/app/cells/decidim/profile_cell.rb +0 -2
  84. data/app/cells/decidim/profile_sidebar/show.erb +20 -20
  85. data/app/cells/decidim/profile_sidebar_cell.rb +1 -10
  86. data/app/cells/decidim/progress_bar/show.erb +8 -6
  87. data/app/cells/decidim/public_participation/show.erb +1 -1
  88. data/app/cells/decidim/report_button/flag_modal.erb +1 -1
  89. data/app/cells/decidim/resource_types_filter/show.erb +12 -11
  90. data/app/cells/decidim/resource_types_filter_cell.rb +0 -2
  91. data/app/cells/decidim/scopes_picker/show.erb +1 -1
  92. data/app/cells/decidim/scopes_picker_cell.rb +0 -1
  93. data/app/cells/decidim/search_results_cell.rb +1 -1
  94. data/app/cells/decidim/statistic_cell.rb +0 -2
  95. data/app/cells/decidim/tab_panels/show.erb +1 -1
  96. data/app/cells/decidim/tab_panels_cell.rb +12 -2
  97. data/app/cells/decidim/tags_cell.rb +0 -2
  98. data/app/cells/decidim/tos_page_cell.rb +0 -3
  99. data/app/cells/decidim/translation_bar/show.erb +2 -2
  100. data/app/cells/decidim/translation_bar_cell.rb +1 -3
  101. data/app/cells/decidim/upload_modal/files.erb +1 -1
  102. data/app/cells/decidim/upload_modal_cell.rb +1 -3
  103. data/app/cells/decidim/user_conversation/new.erb +1 -1
  104. data/app/cells/decidim/user_conversation/show.erb +1 -1
  105. data/app/cells/decidim/user_conversation_cell.rb +0 -1
  106. data/app/cells/decidim/user_conversations/show.erb +1 -1
  107. data/app/cells/decidim/user_conversations_cell.rb +0 -1
  108. data/app/cells/decidim/user_group_pending_invitations_list_cell.rb +0 -1
  109. data/app/cells/decidim/user_group_pending_requests_list_cell.rb +0 -1
  110. data/app/cells/decidim/user_timeline/show.erb +1 -1
  111. data/app/cells/decidim/version_cell.rb +3 -5
  112. data/app/cells/decidim/versions_list_cell.rb +1 -3
  113. data/app/cells/decidim/versions_list_item_cell.rb +2 -4
  114. data/app/cells/decidim/wizard_step_form/wizard_aside.erb +2 -2
  115. data/app/cells/decidim/wizard_step_form/wizard_header.erb +2 -3
  116. data/app/cells/decidim/wizard_step_form_cell.rb +0 -8
  117. data/app/commands/decidim/amendable/create_draft.rb +4 -4
  118. data/app/commands/decidim/amendable/promote.rb +3 -2
  119. data/app/commands/decidim/amendable/publish_draft.rb +3 -2
  120. data/app/commands/decidim/amendable/update_draft.rb +4 -3
  121. data/app/commands/decidim/amendable/withdraw.rb +1 -1
  122. data/app/commands/decidim/create_follow.rb +4 -4
  123. data/app/commands/decidim/create_omniauth_registration.rb +4 -10
  124. data/app/commands/decidim/create_report.rb +3 -3
  125. data/app/commands/decidim/create_user_report.rb +5 -5
  126. data/app/commands/decidim/delete_follow.rb +4 -4
  127. data/app/commands/decidim/demote_membership.rb +2 -2
  128. data/app/commands/decidim/destroy_account.rb +21 -22
  129. data/app/commands/decidim/endorse_resource.rb +1 -1
  130. data/app/commands/decidim/invite_user_to_group.rb +5 -4
  131. data/app/commands/decidim/update_account.rb +24 -22
  132. data/app/commands/decidim/update_notifications_settings.rb +13 -11
  133. data/app/commands/decidim/update_password.rb +7 -7
  134. data/app/commands/decidim/update_user_interests.rb +9 -7
  135. data/app/controllers/concerns/decidim/devise_authentication_methods.rb +1 -1
  136. data/app/controllers/concerns/decidim/devise_controllers.rb +2 -1
  137. data/app/controllers/concerns/decidim/filter_resource.rb +1 -1
  138. data/app/controllers/concerns/decidim/needs_rtl_direction.rb +23 -0
  139. data/app/controllers/concerns/decidim/paginable.rb +1 -1
  140. data/app/controllers/concerns/decidim/participatory_space_context.rb +1 -23
  141. data/app/controllers/concerns/decidim/payload_info.rb +2 -1
  142. data/app/controllers/concerns/decidim/registers_permissions.rb +4 -4
  143. data/app/controllers/concerns/decidim/use_organization_time_zone.rb +1 -1
  144. data/app/controllers/concerns/decidim/withdrawable.rb +1 -1
  145. data/app/controllers/decidim/account_controller.rb +2 -2
  146. data/app/controllers/{concerns/decidim → decidim}/amendments_controller.rb +3 -16
  147. data/app/controllers/decidim/application_controller.rb +1 -1
  148. data/app/controllers/decidim/components/base_controller.rb +1 -1
  149. data/app/controllers/decidim/devise/invitations_controller.rb +1 -1
  150. data/app/controllers/decidim/devise/passwords_controller.rb +2 -2
  151. data/app/controllers/decidim/doorkeeper/credentials_controller.rb +1 -1
  152. data/app/controllers/decidim/endorsements_controller.rb +1 -1
  153. data/app/controllers/decidim/favicon_controller.rb +1 -1
  154. data/app/controllers/decidim/follows_controller.rb +2 -2
  155. data/app/controllers/decidim/group_invites_controller.rb +36 -9
  156. data/app/controllers/decidim/links_controller.rb +1 -1
  157. data/app/controllers/decidim/newsletters_opt_in_controller.rb +1 -1
  158. data/app/controllers/decidim/notifications_settings_controller.rb +1 -1
  159. data/app/controllers/decidim/profiles_controller.rb +0 -4
  160. data/app/controllers/decidim/report_users_controller.rb +1 -1
  161. data/app/controllers/decidim/reports_controller.rb +1 -1
  162. data/app/controllers/decidim/user_interests_controller.rb +1 -1
  163. data/app/events/decidim/change_nickname_event.rb +0 -1
  164. data/app/events/decidim/invited_to_group_event.rb +29 -0
  165. data/app/events/decidim/welcome_notification_event.rb +2 -4
  166. data/app/forms/decidim/form.rb +4 -0
  167. data/app/forms/decidim/omniauth_registration_form.rb +1 -1
  168. data/app/forms/decidim/upload_validation_form.rb +2 -2
  169. data/app/helpers/concerns/decidim/flash_helper_extensions.rb +1 -1
  170. data/app/helpers/decidim/amendments_helper.rb +4 -14
  171. data/app/helpers/decidim/application_helper.rb +8 -0
  172. data/app/helpers/decidim/authorization_form_helper.rb +2 -2
  173. data/app/helpers/decidim/breadcrumb_helper.rb +1 -1
  174. data/app/helpers/decidim/cells_helper.rb +1 -1
  175. data/app/helpers/decidim/check_boxes_tree_helper.rb +1 -1
  176. data/app/helpers/decidim/cta_button_helper.rb +1 -1
  177. data/app/helpers/decidim/datalist_select_helper.rb +1 -1
  178. data/app/helpers/decidim/decidim_form_helper.rb +3 -3
  179. data/app/helpers/decidim/filters_helper.rb +1 -1
  180. data/app/helpers/decidim/layout_helper.rb +1 -64
  181. data/app/helpers/decidim/localized_locales_helper.rb +1 -1
  182. data/app/helpers/decidim/map_helper.rb +1 -6
  183. data/app/helpers/decidim/menu_helper.rb +9 -1
  184. data/app/helpers/decidim/meta_tags_helper.rb +26 -23
  185. data/app/helpers/decidim/modal_helper.rb +1 -1
  186. data/app/helpers/decidim/orders_helper.rb +1 -1
  187. data/app/helpers/decidim/organization_helper.rb +55 -0
  188. data/app/helpers/decidim/paginate_helper.rb +5 -3
  189. data/app/helpers/decidim/resource_helper.rb +0 -7
  190. data/app/helpers/decidim/sanitize_helper.rb +2 -11
  191. data/app/helpers/decidim/scopes_helper.rb +3 -4
  192. data/app/helpers/decidim/searches_helper.rb +1 -1
  193. data/app/helpers/decidim/short_link_helper.rb +2 -2
  194. data/app/helpers/decidim/translations_helper.rb +2 -2
  195. data/app/helpers/decidim/twitter_search_helper.rb +1 -1
  196. data/app/helpers/decidim/user_profile_helper.rb +0 -1
  197. data/app/jobs/decidim/email_notifications_digest_generator_job.rb +2 -2
  198. data/app/mailers/decidim/application_mailer.rb +6 -2
  199. data/app/mailers/decidim/block_user_mailer.rb +1 -1
  200. data/app/mailers/decidim/decidim_devise_mailer.rb +7 -1
  201. data/app/mailers/decidim/newsletter_mailer.rb +1 -4
  202. data/app/mailers/decidim/newsletters_opt_in_mailer.rb +2 -2
  203. data/app/mailers/decidim/notification_mailer.rb +0 -1
  204. data/app/mailers/decidim/notifications_digest_mailer.rb +0 -1
  205. data/app/mailers/decidim/reported_mailer.rb +6 -3
  206. data/app/mailers/decidim/user_report_mailer.rb +1 -1
  207. data/app/models/decidim/action_log.rb +2 -12
  208. data/app/models/decidim/area_type.rb +1 -1
  209. data/app/models/decidim/attachment.rb +28 -4
  210. data/app/models/decidim/authorization.rb +1 -1
  211. data/app/models/decidim/authorization_transfer.rb +1 -0
  212. data/app/models/decidim/component.rb +3 -6
  213. data/app/models/decidim/content_block.rb +3 -3
  214. data/app/models/decidim/messaging/message.rb +2 -2
  215. data/app/models/decidim/newsletter.rb +9 -9
  216. data/app/models/decidim/notification.rb +2 -2
  217. data/app/models/decidim/organization.rb +23 -2
  218. data/app/models/decidim/push_notification_message.rb +1 -1
  219. data/app/models/decidim/resource_link.rb +1 -1
  220. data/app/models/decidim/user.rb +14 -14
  221. data/app/models/decidim/user_group.rb +2 -2
  222. data/app/packs/src/decidim/a11y.js +61 -11
  223. data/app/packs/src/decidim/append_redirect_url_to_modals.js +14 -24
  224. data/app/packs/src/decidim/attachments/file_or_link_tabs.js +55 -0
  225. data/app/packs/src/decidim/attachments/index.js +1 -0
  226. data/app/packs/src/decidim/back_to_list.js +1 -1
  227. data/app/packs/src/decidim/check_boxes_tree.js +1 -1
  228. data/app/packs/src/decidim/data_consent/consent_manager.js +1 -1
  229. data/app/packs/src/decidim/data_consent/consent_manager.test.js +6 -6
  230. data/app/packs/src/decidim/data_consent/index.js +1 -1
  231. data/app/packs/src/decidim/datepicker/datepicker_functions.js +243 -0
  232. data/app/packs/src/decidim/datepicker/datepicker_listeners.js +78 -0
  233. data/app/packs/src/decidim/datepicker/form_datepicker.js +91 -0
  234. data/app/packs/src/decidim/datepicker/generate_datepicker.js +148 -0
  235. data/app/packs/src/decidim/datepicker/generate_timepicker.js +298 -0
  236. data/app/packs/src/decidim/datepicker/test/date.test.js +118 -0
  237. data/app/packs/src/decidim/datepicker/test/time.test.js +227 -0
  238. data/app/packs/src/decidim/direct_uploads/upload_field.js +8 -21
  239. data/app/packs/src/decidim/direct_uploads/upload_modal.js +0 -3
  240. data/app/packs/src/decidim/editor/extensions/indent/index.js +1 -1
  241. data/app/packs/src/decidim/editor/extensions/video_embed/index.js +4 -4
  242. data/app/packs/src/decidim/editor/test/extensions/decidim_kit.test.js +0 -15
  243. data/app/packs/src/decidim/editor/test/extensions/indent.test.js +1 -1
  244. data/app/packs/src/decidim/editor/test/fixtures/upload_templates.js +1 -1
  245. data/app/packs/src/decidim/editor/test/helpers.js +1 -14
  246. data/app/packs/src/decidim/editor/utilities/paste_transform.js +2 -2
  247. data/app/packs/src/decidim/external_domain_warning.js +2 -2
  248. data/app/packs/src/decidim/external_domain_warning.test.js +4 -4
  249. data/app/packs/src/decidim/form_filter.js +4 -4
  250. data/app/packs/src/decidim/impersonation.js +1 -1
  251. data/app/packs/src/decidim/index.js +11 -8
  252. data/app/packs/src/decidim/input_character_counter.js +2 -2
  253. data/app/packs/src/decidim/input_emoji.js +171 -72
  254. data/app/packs/src/decidim/input_hashtags.js +1 -1
  255. data/app/packs/src/decidim/input_mentions.js +1 -1
  256. data/app/packs/src/decidim/notifications_actions.js +40 -0
  257. data/app/packs/src/decidim/sticky_header.js +87 -0
  258. data/app/packs/src/decidim/sw/sw.js +8 -6
  259. data/app/packs/src/decidim/toggle.js +1 -1
  260. data/app/packs/src/decidim/tooltips.js +23 -43
  261. data/app/packs/stylesheets/decidim/_buttons.scss +1 -1
  262. data/app/packs/stylesheets/decidim/_datepicker.scss +193 -0
  263. data/app/packs/stylesheets/decidim/_dropdown.scss +45 -9
  264. data/app/packs/stylesheets/decidim/_emoji.scss +36 -0
  265. data/app/packs/stylesheets/decidim/_filters.scss +4 -2
  266. data/app/packs/stylesheets/decidim/_flash.scss +2 -2
  267. data/app/packs/stylesheets/decidim/_footer.scss +1 -3
  268. data/app/packs/stylesheets/decidim/_forms.scss +13 -5
  269. data/app/packs/stylesheets/decidim/_header.scss +70 -50
  270. data/app/packs/stylesheets/decidim/_home.scss +1 -1
  271. data/app/packs/stylesheets/decidim/_layout.scss +13 -0
  272. data/app/packs/stylesheets/decidim/_modal.scss +1 -1
  273. data/app/packs/stylesheets/decidim/_modal_update.scss +1 -5
  274. data/app/packs/stylesheets/decidim/_notifications.scss +4 -0
  275. data/app/packs/stylesheets/decidim/_profile.scss +1 -1
  276. data/app/packs/stylesheets/decidim/_progress-bar.scss +1 -1
  277. data/app/packs/stylesheets/decidim/_tabs_x.scss +5 -1
  278. data/app/packs/stylesheets/decidim/_tooltip.scss +10 -10
  279. data/app/packs/stylesheets/decidim/application.scss +4 -0
  280. data/app/packs/stylesheets/decidim/editor.scss +1 -1
  281. data/app/packs/stylesheets/decidim/legacy/conference-diploma.scss +1 -2
  282. data/app/packs/stylesheets/decidim/legacy/leaflet.scss +1 -1
  283. data/app/packs/stylesheets/decidim/vendor/_datepicker_light.scss +228 -0
  284. data/app/permissions/decidim/default_permissions.rb +2 -2
  285. data/app/presenters/decidim/admin_log/organization_presenter.rb +1 -1
  286. data/app/presenters/decidim/admin_log/static_page_presenter.rb +1 -1
  287. data/app/presenters/decidim/attachment_presenter.rb +1 -1
  288. data/app/presenters/decidim/authorization_transfer_presenter.rb +1 -1
  289. data/app/presenters/decidim/component_attachment_collection_presenter.rb +81 -0
  290. data/app/presenters/decidim/footer_menu_presenter.rb +1 -1
  291. data/app/presenters/decidim/home_stats_presenter.rb +1 -1
  292. data/app/presenters/decidim/menu_item_presenter.rb +1 -1
  293. data/app/presenters/decidim/organization_presenter.rb +1 -1
  294. data/app/queries/decidim/last_activity.rb +5 -16
  295. data/app/queries/decidim/metric_measure.rb +1 -1
  296. data/app/queries/decidim/public_activities.rb +1 -1
  297. data/app/queries/decidim/user_groups/admin_memberships.rb +1 -1
  298. data/app/queries/decidim/user_groups/member_memberships.rb +1 -1
  299. data/app/services/decidim/action_logger.rb +3 -3
  300. data/app/services/decidim/base_diff_renderer.rb +2 -26
  301. data/app/services/decidim/download_your_data_exporter.rb +25 -36
  302. data/app/services/decidim/email_notification_generator.rb +5 -14
  303. data/app/services/decidim/log/diff_changeset_calculator.rb +2 -2
  304. data/app/services/decidim/notifications_digest_sending_decider.rb +1 -1
  305. data/app/services/decidim/open_data_exporter.rb +7 -8
  306. data/app/services/decidim/zip_stream/writer.rb +39 -0
  307. data/app/uploaders/decidim/organization_favicon_uploader.rb +1 -1
  308. data/app/uploaders/decidim/record_image_uploader.rb +2 -2
  309. data/app/validators/organization_present_validator.rb +1 -1
  310. data/app/validators/passthru_validator.rb +1 -1
  311. data/app/validators/uploader_image_dimensions_validator.rb +2 -2
  312. data/app/views/decidim/account/show.html.erb +1 -1
  313. data/app/views/decidim/amendments/_wizard_header.html.erb +1 -2
  314. data/app/views/decidim/application/_collection.html.erb +3 -1
  315. data/app/views/decidim/application/_component_documents.html.erb +4 -0
  316. data/app/views/decidim/application/_document.html.erb +23 -9
  317. data/app/views/decidim/block_user_mailer/notify.html.erb +2 -2
  318. data/app/views/decidim/devise/invitations/edit.html.erb +2 -2
  319. data/app/views/decidim/devise/omniauth_registrations/new.html.erb +2 -2
  320. data/app/views/decidim/devise/registrations/new.html.erb +1 -1
  321. data/app/views/decidim/devise/shared/_login_boxes.html.erb +1 -1
  322. data/app/views/decidim/doorkeeper/authorizations/new.html.erb +1 -1
  323. data/app/views/decidim/endorsements/_identity.html.erb +1 -1
  324. data/app/views/decidim/gamification/badges/index.html.erb +1 -1
  325. data/app/views/decidim/manifests/show.json.erb +4 -4
  326. data/app/views/decidim/messaging/conversations/_add_conversation_users.html.erb +2 -2
  327. data/app/views/decidim/messaging/conversations/_error_modal.html.erb +5 -5
  328. data/app/views/decidim/newsletter_mailer/newsletter.html.erb +1 -1
  329. data/app/views/decidim/newsletters/show.html.erb +1 -1
  330. data/app/views/decidim/newsletters_opt_in_mailer/notify.html.erb +2 -2
  331. data/app/views/decidim/offline/show.html.erb +1 -1
  332. data/app/views/decidim/pages/_tabbed.html.erb +5 -5
  333. data/app/views/decidim/pages/index.html.erb +1 -2
  334. data/app/views/decidim/reported_mailer/report.html.erb +4 -2
  335. data/app/views/decidim/scopes/picker.html.erb +5 -5
  336. data/app/views/decidim/searches/_resources_filter_block.html.erb +6 -6
  337. data/app/views/decidim/shared/_extended_navigation_bar.html.erb +8 -8
  338. data/app/views/decidim/shared/_filters.html.erb +5 -5
  339. data/app/views/decidim/shared/_login_modal.html.erb +1 -1
  340. data/app/views/decidim/shared/_orders.html.erb +2 -3
  341. data/app/views/decidim/shared/filters/_check_boxes_tree.html.erb +1 -1
  342. data/app/views/decidim/shared/filters/_collection.html.erb +1 -1
  343. data/app/views/decidim/user_interests/_areas.html.erb +2 -2
  344. data/app/views/decidim/user_report_mailer/notify.html.erb +2 -2
  345. data/app/views/decidim/user_update_mailer/notify.html.erb +1 -1
  346. data/app/views/decidim/widgets/_data_picker.html.erb +1 -1
  347. data/app/views/devise/mailer/invitation_instructions.html.erb +1 -1
  348. data/app/views/devise/mailer/invitation_instructions.text.erb +1 -1
  349. data/app/views/devise/mailer/invite_admin.html.erb +2 -2
  350. data/app/views/devise/mailer/invite_admin.text.erb +2 -2
  351. data/app/views/devise/mailer/invite_collaborator.html.erb +2 -2
  352. data/app/views/devise/mailer/invite_collaborator.text.erb +2 -2
  353. data/app/views/devise/mailer/invite_private_user.html.erb +2 -2
  354. data/app/views/devise/mailer/invite_private_user.text.erb +2 -2
  355. data/app/views/devise/mailer/organization_admin_invitation_instructions.html.erb +1 -1
  356. data/app/views/devise/mailer/organization_admin_invitation_instructions.text.erb +1 -1
  357. data/app/views/layouts/decidim/_application.html.erb +3 -6
  358. data/app/views/layouts/decidim/_data_consent_warning.html.erb +2 -2
  359. data/app/views/layouts/decidim/_decidim_javascript.html.erb +1 -1
  360. data/app/views/layouts/decidim/_head.html.erb +1 -1
  361. data/app/views/layouts/decidim/_head_extra.html.erb +2 -2
  362. data/app/views/layouts/decidim/_impersonation_warning.html.erb +1 -1
  363. data/app/views/layouts/decidim/_js_configuration.html.erb +7 -2
  364. data/app/views/layouts/decidim/_logo.html.erb +2 -2
  365. data/app/views/layouts/decidim/_logo_mobile.html.erb +11 -0
  366. data/app/views/layouts/decidim/_mailer_logo.html.erb +2 -2
  367. data/app/views/layouts/decidim/_meta_tags_config.html.erb +1 -1
  368. data/app/views/layouts/decidim/_wrapper.html.erb +16 -9
  369. data/app/views/layouts/decidim/footer/_main.html.erb +2 -3
  370. data/app/views/layouts/decidim/footer/_main_intro.html.erb +2 -2
  371. data/app/views/layouts/decidim/footer/_main_legal.html.erb +2 -3
  372. data/app/views/layouts/decidim/footer/_main_links.html.erb +13 -11
  373. data/app/views/layouts/decidim/footer/_main_social_media_links.html.erb +8 -8
  374. data/app/views/layouts/decidim/header/_main.html.erb +9 -22
  375. data/app/views/layouts/decidim/header/_main_links_desktop.html.erb +4 -5
  376. data/app/views/layouts/decidim/header/_main_links_mobile_account.html.erb +11 -4
  377. data/app/views/layouts/decidim/header/_main_links_mobile_item_account.html.erb +24 -0
  378. data/app/views/layouts/decidim/header/_main_links_mobile_search.html.erb +0 -21
  379. data/app/views/layouts/decidim/header/_main_menu_mobile.html.erb +12 -0
  380. data/app/views/layouts/decidim/header/_menu_breadcrumb_desktop.html.erb +1 -1
  381. data/app/views/layouts/decidim/header/_menu_breadcrumb_main_dropdown_mobile.html.erb +17 -0
  382. data/app/views/layouts/decidim/header/_menu_breadcrumb_main_dropdown_top_left.html.erb +1 -1
  383. data/app/views/layouts/decidim/header/_menu_breadcrumb_mobile_tablet.html.erb +1 -1
  384. data/app/views/layouts/decidim/header/_menu_form_search_mobile.html.erb +16 -0
  385. data/app/views/layouts/decidim/header/_mobile_language_choose.html.erb +25 -0
  386. data/app/views/layouts/decidim/mailer.html.erb +2 -2
  387. data/app/views/layouts/decidim/shared/_layout_center.html.erb +1 -1
  388. data/app/views/layouts/decidim/shared/_layout_item.html.erb +0 -14
  389. data/app/views/layouts/decidim/shared/_layout_user_profile.html.erb +2 -2
  390. data/config/initializers/active_storage.rb +3 -0
  391. data/config/initializers/devise.rb +1 -1
  392. data/config/initializers/new_framework_defaults_7_0.rb +145 -0
  393. data/config/locales/ar.yml +3 -54
  394. data/config/locales/bg.yml +56 -57
  395. data/config/locales/ca.yml +78 -71
  396. data/config/locales/cs.yml +54 -63
  397. data/config/locales/de.yml +77 -70
  398. data/config/locales/el.yml +1 -32
  399. data/config/locales/en.yml +69 -62
  400. data/config/locales/es-MX.yml +69 -62
  401. data/config/locales/es-PY.yml +69 -62
  402. data/config/locales/es.yml +74 -67
  403. data/config/locales/eu.yml +251 -257
  404. data/config/locales/fi-plain.yml +70 -63
  405. data/config/locales/fi.yml +128 -121
  406. data/config/locales/fr-CA.yml +62 -61
  407. data/config/locales/fr.yml +56 -55
  408. data/config/locales/ga-IE.yml +0 -16
  409. data/config/locales/gl.yml +1 -22
  410. data/config/locales/hu.yml +38 -57
  411. data/config/locales/id-ID.yml +0 -18
  412. data/config/locales/is-IS.yml +1 -17
  413. data/config/locales/it.yml +0 -65
  414. data/config/locales/ja.yml +83 -74
  415. data/config/locales/lb.yml +0 -30
  416. data/config/locales/lt.yml +2 -49
  417. data/config/locales/lv.yml +0 -25
  418. data/config/locales/nl.yml +1 -30
  419. data/config/locales/no.yml +0 -30
  420. data/config/locales/pl.yml +69 -57
  421. data/config/locales/pt-BR.yml +5 -250
  422. data/config/locales/pt.yml +0 -36
  423. data/config/locales/ro-RO.yml +180 -329
  424. data/config/locales/ru.yml +0 -19
  425. data/config/locales/sk.yml +1 -26
  426. data/config/locales/sl.yml +0 -8
  427. data/config/locales/sv.yml +164 -605
  428. data/config/locales/tr-TR.yml +5 -33
  429. data/config/locales/uk.yml +1 -14
  430. data/config/locales/zh-CN.yml +0 -27
  431. data/config/locales/zh-TW.yml +1 -51
  432. data/config/routes.rb +0 -2
  433. data/db/migrate/20170128112958_change_user_groups_verified_to_timestamp.rb +1 -1
  434. data/db/migrate/20181025082245_add_timestamps_to_components.rb +1 -5
  435. data/db/migrate/20240110150230_rename_external_domain_whitelist_to_external_domain_allowlist.rb +7 -0
  436. data/db/migrate/20240326104215_remove_show_in_footer_in_static_pages.rb +7 -0
  437. data/db/migrate/20240401192628_change_name_on_decidim_organizations.rb +31 -0
  438. data/db/seeds/avatars/001.jpg +0 -0
  439. data/db/seeds/avatars/002.jpg +0 -0
  440. data/db/seeds/avatars/003.jpg +0 -0
  441. data/db/seeds/avatars/004.jpg +0 -0
  442. data/db/seeds/avatars/005.jpg +0 -0
  443. data/db/seeds/avatars/006.jpg +0 -0
  444. data/db/seeds/avatars/007.jpg +0 -0
  445. data/db/seeds/avatars/008.jpg +0 -0
  446. data/db/seeds/avatars/009.jpg +0 -0
  447. data/db/seeds/avatars/010.jpg +0 -0
  448. data/db/seeds/avatars/011.jpg +0 -0
  449. data/db/seeds/avatars/012.jpg +0 -0
  450. data/db/seeds/avatars/013.jpg +0 -0
  451. data/db/seeds/avatars/014.jpg +0 -0
  452. data/db/seeds/avatars/015.jpg +0 -0
  453. data/db/seeds/avatars/016.jpg +0 -0
  454. data/db/seeds/avatars/017.jpg +0 -0
  455. data/db/seeds/avatars/018.jpg +0 -0
  456. data/db/seeds/avatars/019.jpg +0 -0
  457. data/db/seeds/avatars/020.jpg +0 -0
  458. data/db/seeds/avatars/021.jpg +0 -0
  459. data/db/seeds/avatars/022.jpg +0 -0
  460. data/db/seeds/avatars/023.jpg +0 -0
  461. data/db/seeds/avatars/024.jpg +0 -0
  462. data/db/seeds/avatars/025.jpg +0 -0
  463. data/db/seeds/avatars/026.jpg +0 -0
  464. data/db/seeds/avatars/027.jpg +0 -0
  465. data/db/seeds/avatars/028.jpg +0 -0
  466. data/db/seeds/avatars/029.jpg +0 -0
  467. data/db/seeds/avatars/030.jpg +0 -0
  468. data/db/seeds/avatars/031.jpg +0 -0
  469. data/db/seeds/avatars/032.jpg +0 -0
  470. data/db/seeds/avatars/033.jpg +0 -0
  471. data/db/seeds/avatars/034.jpg +0 -0
  472. data/db/seeds/avatars/035.jpg +0 -0
  473. data/db/seeds/avatars/036.jpg +0 -0
  474. data/db/seeds/avatars/037.jpg +0 -0
  475. data/db/seeds/avatars/038.jpg +0 -0
  476. data/db/seeds/avatars/039.jpg +0 -0
  477. data/db/seeds/avatars/040.jpg +0 -0
  478. data/db/seeds/avatars/041.jpg +0 -0
  479. data/db/seeds/avatars/042.jpg +0 -0
  480. data/db/seeds/avatars/043.jpg +0 -0
  481. data/db/seeds/avatars/044.jpg +0 -0
  482. data/db/seeds/avatars/045.jpg +0 -0
  483. data/db/seeds/avatars/046.jpg +0 -0
  484. data/db/seeds/avatars/047.jpg +0 -0
  485. data/db/seeds/avatars/048.jpg +0 -0
  486. data/db/seeds/avatars/049.jpg +0 -0
  487. data/db/seeds/avatars/050.jpg +0 -0
  488. data/db/seeds/avatars/051.jpg +0 -0
  489. data/db/seeds/avatars/052.jpg +0 -0
  490. data/db/seeds/avatars/053.jpg +0 -0
  491. data/db/seeds/avatars/054.jpg +0 -0
  492. data/db/seeds/avatars/055.jpg +0 -0
  493. data/db/seeds/avatars/056.jpg +0 -0
  494. data/db/seeds/avatars/057.jpg +0 -0
  495. data/db/seeds/avatars/058.jpg +0 -0
  496. data/db/seeds/avatars/059.jpg +0 -0
  497. data/db/seeds/avatars/060.jpg +0 -0
  498. data/db/seeds/avatars/061.jpg +0 -0
  499. data/db/seeds/avatars/062.jpg +0 -0
  500. data/db/seeds/avatars/063.jpg +0 -0
  501. data/db/seeds/avatars/064.jpg +0 -0
  502. data/db/seeds/avatars/065.jpg +0 -0
  503. data/db/seeds/avatars/066.jpg +0 -0
  504. data/db/seeds/avatars/067.jpg +0 -0
  505. data/db/seeds/avatars/068.jpg +0 -0
  506. data/db/seeds/avatars/069.jpg +0 -0
  507. data/db/seeds/avatars/070.jpg +0 -0
  508. data/db/seeds/avatars/071.jpg +0 -0
  509. data/db/seeds/avatars/072.jpg +0 -0
  510. data/db/seeds/avatars/073.jpg +0 -0
  511. data/db/seeds/avatars/074.jpg +0 -0
  512. data/db/seeds/avatars/075.jpg +0 -0
  513. data/db/seeds/avatars/076.jpg +0 -0
  514. data/db/seeds/avatars/077.jpg +0 -0
  515. data/db/seeds/avatars/078.jpg +0 -0
  516. data/db/seeds/avatars/079.jpg +0 -0
  517. data/db/seeds/avatars/080.jpg +0 -0
  518. data/db/seeds/avatars/081.jpg +0 -0
  519. data/db/seeds/avatars/082.jpg +0 -0
  520. data/db/seeds/avatars/083.jpg +0 -0
  521. data/db/seeds/avatars/084.jpg +0 -0
  522. data/db/seeds/avatars/085.jpg +0 -0
  523. data/db/seeds/avatars/086.jpg +0 -0
  524. data/db/seeds/avatars/087.jpg +0 -0
  525. data/db/seeds/avatars/088.jpg +0 -0
  526. data/db/seeds/avatars/089.jpg +0 -0
  527. data/db/seeds/avatars/090.jpg +0 -0
  528. data/db/seeds/avatars/091.jpg +0 -0
  529. data/db/seeds/avatars/092.jpg +0 -0
  530. data/db/seeds/avatars/093.jpg +0 -0
  531. data/db/seeds/avatars/094.jpg +0 -0
  532. data/db/seeds/avatars/095.jpg +0 -0
  533. data/db/seeds/avatars/096.jpg +0 -0
  534. data/db/seeds/avatars/097.jpg +0 -0
  535. data/db/seeds/avatars/098.jpg +0 -0
  536. data/db/seeds/avatars/099.jpg +0 -0
  537. data/db/seeds/avatars/100.jpg +0 -0
  538. data/db/seeds/avatars/CREDITS.md +114 -0
  539. data/db/seeds/avatars/README.md +25 -0
  540. data/decidim-core.gemspec +8 -9
  541. data/lib/decidim/acts_as_author.rb +1 -1
  542. data/lib/decidim/admin_filter.rb +44 -0
  543. data/lib/decidim/admin_filters_registry.rb +55 -0
  544. data/lib/decidim/amendable.rb +1 -2
  545. data/lib/decidim/api/functions/component_finder_base.rb +1 -1
  546. data/lib/decidim/api/functions/component_list.rb +1 -1
  547. data/lib/decidim/api/functions/needs_api_filter_and_order.rb +3 -3
  548. data/lib/decidim/api/functions/participatory_space_finder_base.rb +2 -12
  549. data/lib/decidim/api/functions/participatory_space_list_base.rb +1 -1
  550. data/lib/decidim/api/input_filters/user_entity_input_filter.rb +3 -3
  551. data/lib/decidim/api/interfaces/author_interface.rb +1 -1
  552. data/lib/decidim/api/interfaces/participatory_space_interface.rb +1 -1
  553. data/lib/decidim/api/types/component_type.rb +0 -7
  554. data/lib/decidim/api/types/organization_type.rb +1 -1
  555. data/lib/decidim/api/types/user_group_type.rb +1 -5
  556. data/lib/decidim/api/types/user_type.rb +1 -5
  557. data/lib/decidim/asset_router/pipeline.rb +2 -2
  558. data/lib/decidim/asset_router/storage.rb +11 -214
  559. data/lib/decidim/assets/tailwind/instance.rb +1 -1
  560. data/lib/decidim/assets/tailwind/tailwind.config.js.erb +8 -3
  561. data/lib/decidim/attribute_object/model.rb +2 -2
  562. data/lib/decidim/attribute_object/type_resolver.rb +1 -3
  563. data/lib/decidim/attribute_object.rb +2 -2
  564. data/lib/decidim/attributes/time_with_zone.rb +1 -11
  565. data/lib/decidim/attributes.rb +0 -6
  566. data/lib/decidim/authorable.rb +5 -0
  567. data/lib/decidim/command.rb +2 -2
  568. data/lib/decidim/commands/create_resource.rb +63 -0
  569. data/lib/decidim/commands/destroy_resource.rb +74 -0
  570. data/lib/decidim/commands/hook_error.rb +8 -0
  571. data/lib/decidim/commands/resource_handler.rb +85 -0
  572. data/lib/decidim/commands/update_resource.rb +64 -0
  573. data/lib/decidim/component_manifest.rb +3 -1
  574. data/lib/decidim/component_validator.rb +1 -1
  575. data/lib/decidim/content_blocks/has_related_components.rb +1 -1
  576. data/lib/decidim/content_parsers/resource_parser.rb +2 -2
  577. data/lib/decidim/content_parsers.rb +0 -1
  578. data/lib/decidim/content_processor.rb +1 -1
  579. data/lib/decidim/content_renderers.rb +0 -1
  580. data/lib/decidim/content_security_policy.rb +1 -1
  581. data/lib/decidim/core/engine.rb +13 -58
  582. data/lib/decidim/core/menu.rb +13 -3
  583. data/lib/decidim/core/seeds.rb +120 -147
  584. data/lib/decidim/core/test/factories.rb +24 -31
  585. data/lib/decidim/core/test/shared_examples/acts_as_author_examples.rb +1 -1
  586. data/lib/decidim/core/test/shared_examples/amendable/withdraw_amendment_examples.rb +2 -2
  587. data/lib/decidim/core/test/shared_examples/announcements_examples.rb +3 -3
  588. data/lib/decidim/core/test/shared_examples/assembly_announcements_examples.rb +4 -4
  589. data/lib/decidim/core/test/shared_examples/attachable_interface_examples.rb +1 -1
  590. data/lib/decidim/core/test/shared_examples/authorable_interface_examples.rb +1 -1
  591. data/lib/decidim/core/test/shared_examples/comments_examples.rb +90 -107
  592. data/lib/decidim/core/test/shared_examples/comments_reports_examples.rb +4 -4
  593. data/lib/decidim/core/test/shared_examples/digest_mail_examples.rb +1 -1
  594. data/lib/decidim/core/test/shared_examples/edit_link_shared_examples.rb +1 -1
  595. data/lib/decidim/core/test/shared_examples/editor_shared_examples.rb +7 -7
  596. data/lib/decidim/core/test/shared_examples/fingerprint_examples.rb +1 -1
  597. data/lib/decidim/core/test/shared_examples/follows_examples.rb +6 -11
  598. data/lib/decidim/core/test/shared_examples/has_attachment_collections.rb +4 -2
  599. data/lib/decidim/core/test/shared_examples/has_attachments.rb +3 -2
  600. data/lib/decidim/core/test/shared_examples/has_contextual_help.rb +4 -4
  601. data/lib/decidim/core/test/shared_examples/has_reference.rb +1 -1
  602. data/lib/decidim/core/test/shared_examples/logo_email.rb +1 -1
  603. data/lib/decidim/core/test/shared_examples/manage_component_share_tokens.rb +9 -9
  604. data/lib/decidim/core/test/shared_examples/map_examples.rb +5 -5
  605. data/lib/decidim/core/test/shared_examples/paginated_resource_examples.rb +7 -7
  606. data/lib/decidim/core/test/shared_examples/participatory_space_dropdown_metadata_cell_examples.rb +3 -3
  607. data/lib/decidim/core/test/shared_examples/preview_component_with_share_token_examples.rb +3 -3
  608. data/lib/decidim/core/test/shared_examples/process_announcements_examples.rb +4 -4
  609. data/lib/decidim/core/test/shared_examples/reports_examples.rb +5 -5
  610. data/lib/decidim/core/test/shared_examples/rich_text_editor_examples.rb +10 -10
  611. data/lib/decidim/core/test/shared_examples/searchable_participatory_space_examples.rb +1 -1
  612. data/lib/decidim/core/test/shared_examples/searchable_results_examples.rb +8 -8
  613. data/lib/decidim/core/test/shared_examples/share_link_examples.rb +2 -2
  614. data/lib/decidim/core/test/shared_examples/simple_event.rb +1 -1
  615. data/lib/decidim/core/test/shared_examples/space_cell_changes_button_text_cta.rb +3 -3
  616. data/lib/decidim/core/test/shared_examples/system_endorse_resource_examples.rb +15 -113
  617. data/lib/decidim/core/test/shared_examples/translated_event_examples.rb +2 -2
  618. data/lib/decidim/core/test/shared_examples/uncommentable_component_examples.rb +2 -2
  619. data/lib/decidim/core/test/shared_examples/with_endorsable_permissions_examples.rb +1 -1
  620. data/lib/decidim/core/version.rb +1 -1
  621. data/lib/decidim/core.rb +24 -17
  622. data/lib/decidim/dependency_resolver.rb +3 -3
  623. data/lib/decidim/diffy_extension.rb +1 -19
  624. data/lib/decidim/download_your_data_serializers/download_your_data_user_serializer.rb +2 -1
  625. data/lib/decidim/engine_router.rb +2 -2
  626. data/lib/decidim/events/base_event.rb +19 -0
  627. data/lib/decidim/events/simple_event.rb +1 -0
  628. data/lib/decidim/exporters/export_manifest.rb +1 -1
  629. data/lib/decidim/faker/localized.rb +3 -3
  630. data/lib/decidim/form_builder.rb +5 -5
  631. data/lib/decidim/hashtag.rb +1 -1
  632. data/lib/decidim/jsonb_attributes.rb +4 -4
  633. data/lib/decidim/manifest_messages.rb +2 -2
  634. data/lib/decidim/map/autocomplete.rb +0 -1
  635. data/lib/decidim/organization_settings.rb +5 -8
  636. data/lib/decidim/paddable.rb +1 -1
  637. data/lib/decidim/participable.rb +1 -1
  638. data/lib/decidim/participatory_space_manifest.rb +1 -1
  639. data/lib/decidim/participatory_space_user.rb +0 -4
  640. data/lib/decidim/query_extensions.rb +26 -0
  641. data/lib/decidim/resourceable.rb +1 -1
  642. data/lib/decidim/search_resource_fields_mapper.rb +2 -2
  643. data/lib/decidim/searchable.rb +3 -3
  644. data/lib/decidim/seeds.rb +62 -0
  645. data/lib/decidim/settings_manifest.rb +0 -2
  646. data/lib/decidim/stats_registry.rb +2 -2
  647. data/lib/decidim/translatable_attributes.rb +4 -9
  648. data/lib/decidim/translatable_resource.rb +1 -1
  649. data/lib/decidim/view_hooks.rb +1 -1
  650. data/lib/decidim/view_model.rb +5 -1
  651. data/lib/decidim/webpacker/esbuild.config.js +14 -0
  652. data/lib/decidim/webpacker/shakapacker.yml +2 -2
  653. data/lib/decidim/webpacker/tsconfig.json +11 -0
  654. data/lib/decidim/webpacker/webpack/custom.js +13 -35
  655. data/lib/devise/models/decidim_newsletterable.rb +1 -1
  656. data/lib/tasks/decidim_download_your_data_tasks.rake +2 -2
  657. data/lib/tasks/decidim_locales_tasks.rake +1 -1
  658. data/lib/tasks/decidim_mailers_tasks.rake +2 -2
  659. data/lib/tasks/decidim_metrics_tasks.rake +6 -6
  660. data/lib/tasks/decidim_procfile.rake +9 -3
  661. data/lib/tasks/decidim_tasks.rake +5 -4
  662. data/lib/tasks/decidim_webpacker_tasks.rake +126 -117
  663. data/lib/tasks/upgrade/decidim_active_storage_migration_tasks.rake +80 -0
  664. data/lib/tasks/upgrade/decidim_content_blocks_tasks.rake +50 -0
  665. data/lib/tasks/upgrade/decidim_deduplicate_endorsements.rake +1 -1
  666. data/lib/tasks/upgrade/decidim_fix_categorization.rake +6 -132
  667. data/lib/tasks/upgrade/decidim_fix_nickname_uniqueness.rake +1 -1
  668. data/lib/tasks/upgrade/decidim_fix_short_url_resolver.rake +1 -1
  669. data/lib/tasks/upgrade/decidim_moderation_tasks.rake +1 -1
  670. data/lib/tasks/upgrade/decidim_user_moderation.rake +1 -1
  671. metadata +219 -101
  672. data/app/cells/decidim/content_blocks/cta/show.erb +0 -12
  673. data/app/cells/decidim/content_blocks/cta_cell.rb +0 -31
  674. data/app/cells/decidim/footer_pages/pages.erb +0 -3
  675. data/app/cells/decidim/footer_pages/topics.erb +0 -12
  676. data/app/cells/decidim/footer_pages_cell.rb +0 -68
  677. data/app/controllers/concerns/decidim/direct_upload.rb +0 -82
  678. data/app/helpers/concerns/decidim/user_role_checker.rb +0 -46
  679. data/app/packs/src/decidim/remote_tooltips.js +0 -38
  680. data/app/packs/src/decidim/vendor/modernizr.js +0 -5
  681. data/app/queries/decidim/similar_emendations.rb +0 -56
  682. data/app/uploaders/decidim/cw/application_uploader.rb +0 -77
  683. data/app/uploaders/decidim/cw/attachment_uploader.rb +0 -56
  684. data/app/uploaders/decidim/cw/avatar_uploader.rb +0 -24
  685. data/app/uploaders/decidim/cw/banner_image_uploader.rb +0 -7
  686. data/app/uploaders/decidim/cw/download_your_data_uploader.rb +0 -15
  687. data/app/uploaders/decidim/cw/downloader.rb +0 -9
  688. data/app/uploaders/decidim/cw/hero_image_uploader.rb +0 -10
  689. data/app/uploaders/decidim/cw/homepage_image_uploader.rb +0 -14
  690. data/app/uploaders/decidim/cw/image_uploader.rb +0 -78
  691. data/app/uploaders/decidim/cw/newsletter_template_image_uploader.rb +0 -38
  692. data/app/uploaders/decidim/cw/oauth_application_logo_uploader.rb +0 -10
  693. data/app/uploaders/decidim/cw/official_image_footer_uploader.rb +0 -10
  694. data/app/uploaders/decidim/cw/official_image_header_uploader.rb +0 -10
  695. data/app/uploaders/decidim/cw/open_data_uploader.rb +0 -23
  696. data/app/uploaders/decidim/cw/organization_favicon_uploader.rb +0 -18
  697. data/app/uploaders/decidim/cw/organization_logo_uploader.rb +0 -10
  698. data/app/uploaders/decidim/cw/record_image_uploader.rb +0 -15
  699. data/app/uploaders/decidim/downloader.rb +0 -9
  700. data/app/views/decidim/amendments/compare_draft.html.erb +0 -18
  701. data/app/views/layouts/decidim/_edit_link.html.erb +0 -0
  702. data/app/views/layouts/decidim/header/_main_links_mobile.html.erb +0 -36
  703. data/config/initializers/carrierwave.rb +0 -15
  704. data/config/locales/bn-BD.yml +0 -1
  705. data/config/locales/bs-BA.yml +0 -98
  706. data/lib/decidim/attributes/rich_text.rb +0 -38
  707. data/lib/decidim/carrier_wave_migrator_service.rb +0 -287
  708. data/lib/decidim/content_parsers/blob_parser.rb +0 -93
  709. data/lib/decidim/content_renderers/blob_renderer.rb +0 -90
  710. data/lib/decidim/seven_zip_wrapper.rb +0 -29
  711. data/lib/tasks/decidim_active_storage_migration_tasks.rake +0 -114
  712. data/lib/tasks/decidim_content_blocks_tasks.rake +0 -48
  713. data/lib/tasks/upgrade/decidim_attachments.rake +0 -14
  714. /data/app/views/layouts/decidim/header/{_menu_breadcrumb_main_dropdown.html.erb → _menu_breadcrumb_main_dropdown_desktop.html.erb} +0 -0
@@ -16,8 +16,8 @@ shared_examples "comments" do
16
16
  it "shows the list of comments for the resource" do
17
17
  visit resource_path
18
18
 
19
- expect(page).to have_selector("#comments")
20
- expect(page).to have_selector(".comment", count: comments.length)
19
+ expect(page).to have_css("#comments")
20
+ expect(page).to have_css(".comment", count: comments.length)
21
21
 
22
22
  within "#comments" do
23
23
  comments.each do |comment|
@@ -33,12 +33,12 @@ shared_examples "comments" do
33
33
 
34
34
  visit resource_path
35
35
 
36
- expect(page).not_to have_content("Comments are disabled at this time")
36
+ expect(page).to have_no_content("Comments are disabled at this time")
37
37
 
38
38
  expect(page).to have_css(".comment", minimum: 1)
39
39
 
40
40
  within ".comment-order-by" do
41
- click_link "Best rated"
41
+ click_on "Best rated"
42
42
  end
43
43
 
44
44
  expect(page).to have_css(".comments > div:nth-child(2)", text: "Most Rated Comment")
@@ -50,7 +50,7 @@ shared_examples "comments" do
50
50
 
51
51
  it "displays the show replies link on comment with reply" do
52
52
  visit resource_path
53
- expect(page).not_to have_content("Comments are disabled at this time")
53
+ expect(page).to have_no_content("Comments are disabled at this time")
54
54
  expect(page).to have_css(".comment", minimum: 1)
55
55
 
56
56
  within("#accordion-#{single_comment.id}") do
@@ -66,11 +66,11 @@ shared_examples "comments" do
66
66
 
67
67
  it "displays the show replies link on comment with reply" do
68
68
  visit resource_path
69
- expect(page).not_to have_content("Comments are disabled at this time")
69
+ expect(page).to have_no_content("Comments are disabled at this time")
70
70
  expect(page).to have_css(".comment", minimum: 1)
71
71
 
72
72
  within("#accordion-#{single_comment.id}") do
73
- expect(page).not_to have_content "Hide reply"
73
+ expect(page).to have_no_content "Hide reply"
74
74
  end
75
75
  end
76
76
  end
@@ -85,18 +85,18 @@ shared_examples "comments" do
85
85
  end
86
86
 
87
87
  it "shows only a deletion message for deleted comments" do
88
- expect(page).to have_selector("#comment_#{deleted_comment.id}")
88
+ expect(page).to have_css("#comment_#{deleted_comment.id}")
89
89
 
90
- expect(page).not_to have_content(deleted_comment.author.name)
91
- expect(page).not_to have_content(translated(deleted_comment.body))
90
+ expect(page).to have_no_content(deleted_comment.author.name)
91
+ expect(page).to have_no_content(translated(deleted_comment.body))
92
92
  within "#comment_#{deleted_comment.id}" do
93
93
  expect(page).to have_content("Comment deleted on")
94
- expect(page).not_to have_selector("comment__footer")
94
+ expect(page).to have_no_css(".comment__header")
95
95
  end
96
96
  end
97
97
 
98
98
  it "counts only not deleted comments" do
99
- expect(page).to have_selector("span.comments-count", text: "#{comments.length - 1} comments")
99
+ expect(page).to have_css("span.comments-count", text: "#{comments.length - 1} comments")
100
100
  end
101
101
 
102
102
  context "when deleted comment has replies, they are shown" do
@@ -106,7 +106,7 @@ shared_examples "comments" do
106
106
  visit resource_path
107
107
 
108
108
  within "#comment_#{deleted_comment.id}" do
109
- expect(page).to have_selector("#comment-#{deleted_comment.id}-replies")
109
+ expect(page).to have_css("#comment-#{deleted_comment.id}-replies")
110
110
  expect(page).to have_content(reply.author.name)
111
111
  expect(page).to have_content(reply.body.values.first)
112
112
  end
@@ -117,7 +117,7 @@ shared_examples "comments" do
117
117
  context "when not authenticated" do
118
118
  it "does not show form to add comments to user" do
119
119
  visit resource_path
120
- expect(page).not_to have_css(".add-comment form")
120
+ expect(page).to have_no_css(".add-comment form")
121
121
  expect(page).to have_css(".comment-thread")
122
122
  end
123
123
  end
@@ -129,7 +129,7 @@ shared_examples "comments" do
129
129
  end
130
130
 
131
131
  it "shows form to add comments to user" do
132
- expect(page).to have_selector(".add-comment form")
132
+ expect(page).to have_css(".add-comment form")
133
133
  end
134
134
 
135
135
  context "when user is not authorized to comment" do
@@ -153,7 +153,7 @@ shared_examples "comments" do
153
153
 
154
154
  it "shows a message indicating that comments are restricted" do
155
155
  visit resource_path
156
- expect(page).not_to have_content("Comments are disabled at this time")
156
+ expect(page).to have_no_content("Comments are disabled at this time")
157
157
  expect(page).to have_content("You need to be verified to comment at this moment")
158
158
  end
159
159
  end
@@ -161,27 +161,33 @@ shared_examples "comments" do
161
161
  describe "when using emojis" do
162
162
  before do
163
163
  within_language_menu do
164
- click_link "Castellano"
164
+ click_on "Castellano"
165
165
  end
166
166
  end
167
167
  shared_examples_for "allowing to select emojis" do
168
168
  it "allows selecting emojis" do
169
169
  within_language_menu do
170
- click_link locale
170
+ click_on locale
171
171
  end
172
172
 
173
173
  within ".add-comment form" do
174
- expect(page).to have_selector(".emoji__container")
175
- expect(page).to have_selector(".emoji__trigger .emoji__button")
174
+ expect(page).to have_css(".emoji__container")
175
+ expect(page).to have_css(".emoji__trigger .emoji__button")
176
176
  find(".emoji__trigger .emoji__button").click
177
177
  end
178
178
 
179
- within ".picmo__popupContainer .picmo__picker .picmo__content" do
179
+ within ".emoji__decidim" do
180
180
  expect(page).to have_content(phrase)
181
- categories = page.all(".picmo__emojiCategory")
182
- within categories[1] do
183
- click_button "😀"
184
- end
181
+ # Since emoji-mart is a React component, we need to use JS to click on an emoji icon
182
+ # as the emoji picker is a shadow DOM element.
183
+ # The script below is trying to find the first emoji in the "Smileys & People" category and simulate
184
+ # a click from the user on it.
185
+ script = <<~JS
186
+ var emoji_picker = document.getElementsByTagName("em-emoji-picker")[0];
187
+ var category = emoji_picker.shadowRoot.querySelectorAll("div.category")[1]
188
+ category.querySelectorAll("button")[0].click();
189
+ JS
190
+ execute_script(script)
185
191
  end
186
192
 
187
193
  within ".add-comment form" do
@@ -192,14 +198,14 @@ shared_examples "comments" do
192
198
 
193
199
  context "when the locale is supported" do
194
200
  let(:locale) { "English" }
195
- let(:phrase) { "SMILEYS & EMOTION" }
201
+ let(:phrase) { I18n.t("emojis.categories.people") }
196
202
 
197
203
  it_behaves_like "allowing to select emojis"
198
204
  end
199
205
 
200
206
  context "when the locale is not supported" do
201
207
  let(:locale) { "Català" }
202
- let(:phrase) { "SOMRIURES I EMOCIONS" }
208
+ let(:phrase) { I18n.with_locale(:ca) { I18n.t("emojis.categories.people") } }
203
209
 
204
210
  it_behaves_like "allowing to select emojis"
205
211
  end
@@ -452,11 +458,11 @@ shared_examples "comments" do
452
458
  field.native.send_keys "toto"
453
459
  end
454
460
 
455
- expect(page).not_to have_selector(".picmo__picker.picmo__picker")
461
+ expect(page).to have_no_css(".emoji__decidim")
456
462
  within "form#new_comment_for_#{commentable.commentable_type.demodulize}_#{commentable.id}" do
457
463
  find(".emoji__button").click
458
464
  end
459
- expect(page).to have_selector(".picmo__picker.picmo__picker")
465
+ expect(page).to have_css(".emoji__decidim")
460
466
  end
461
467
  end
462
468
 
@@ -471,7 +477,7 @@ shared_examples "comments" do
471
477
  field.native.send_keys("0123456789012345678901234567")
472
478
  find(".emoji__button").click
473
479
  end
474
- expect(page).not_to have_selector(".picmo__picker.picmo__picker")
480
+ expect(page).to have_no_css(".emoji-picker__picker.emoji-picker__picker")
475
481
  end
476
482
  end
477
483
  end
@@ -485,25 +491,15 @@ shared_examples "comments" do
485
491
  field = find("#add-comment-#{commentable.commentable_type.demodulize}-#{commentable.id}")
486
492
  field.set " "
487
493
  field.native.send_keys content
488
- click_button "Publish comment"
494
+ click_on "Publish comment"
489
495
  end
490
496
  end
491
497
 
492
498
  it "shows comment to the user, updates the comments counter and clears the comment textarea" do
493
499
  expect(page).to have_comment_from(user, content, wait: 20)
494
- expect(page).to have_selector("span.comments-count", text: "#{commentable.comments.count} comments")
500
+ expect(page).to have_css("span.comments-count", text: "#{commentable.comments.count} comments")
495
501
  expect(page.find("#add-comment-#{commentable.commentable_type.demodulize}-#{commentable.id}").value).to be_empty
496
502
  end
497
-
498
- it "shows the entry in last activities" do
499
- visit decidim.last_activities_path
500
- expect(page).to have_content("New comment: #{content}")
501
-
502
- within "#filters" do
503
- find("a", class: "filter", text: "Comment", match: :first).click
504
- end
505
- expect(page).to have_content("New comment: #{content}")
506
- end
507
503
  end
508
504
 
509
505
  context "when user adds a new comment with a link" do
@@ -514,7 +510,7 @@ shared_examples "comments" do
514
510
  field = find("#add-comment-#{commentable.commentable_type.demodulize}-#{commentable.id}")
515
511
  field.set " "
516
512
  field.native.send_keys content
517
- click_button "Publish comment"
513
+ click_on "Publish comment"
518
514
  end
519
515
  end
520
516
 
@@ -565,9 +561,9 @@ shared_examples "comments" do
565
561
  it "displays the show button" do
566
562
  visit current_path
567
563
  within "#comment_#{thread.id}" do
568
- click_button "Hide reply"
564
+ click_on "Hide reply"
569
565
  expect(page).to have_content("Show reply")
570
- expect(page).not_to have_content(new_reply_body)
566
+ expect(page).to have_no_content(new_reply_body)
571
567
  end
572
568
  end
573
569
 
@@ -577,9 +573,9 @@ shared_examples "comments" do
577
573
  it "displays the show button" do
578
574
  visit current_path
579
575
  within "#comment_#{thread.id}" do
580
- click_button "Hide 3 replies"
576
+ click_on "Hide 3 replies"
581
577
  expect(page).to have_content("Show 3 replies")
582
- expect(page).not_to have_content(new_reply_body)
578
+ expect(page).to have_no_content(new_reply_body)
583
579
  end
584
580
  end
585
581
  end
@@ -613,7 +609,7 @@ shared_examples "comments" do
613
609
  end
614
610
 
615
611
  context "when the user has verified organizations" do
616
- let(:user_group) { create(:user_group, :verified, organization:) }
612
+ let(:user_group) { create(:user_group, :verified) }
617
613
  let(:content) { "This is a new comment" }
618
614
 
619
615
  before do
@@ -628,7 +624,7 @@ shared_examples "comments" do
628
624
  field.set " "
629
625
  field.native.send_keys content
630
626
  select user_group.name, from: "Comment as"
631
- click_button "Publish comment"
627
+ click_on "Publish comment"
632
628
  end
633
629
 
634
630
  expect(page).to have_comment_from(user_group, content, wait: 20)
@@ -649,7 +645,7 @@ shared_examples "comments" do
649
645
  it "the context menu of the comment does not show a delete link" do
650
646
  within "#comment_#{comment.id}" do
651
647
  page.find("[id^='dropdown-trigger']").click
652
- expect(page).not_to have_link("Delete")
648
+ expect(page).to have_no_link("Delete")
653
649
  end
654
650
  end
655
651
  end
@@ -669,18 +665,18 @@ shared_examples "comments" do
669
665
 
670
666
  within "#comment_#{comment.id}" do
671
667
  page.find("[id^='dropdown-trigger']").click
672
- click_link "Delete"
668
+ click_on "Delete"
673
669
  end
674
670
 
675
671
  accept_confirm
676
672
 
677
- expect(page).to have_selector("#comment_#{comment.id}")
673
+ expect(page).to have_css("#comment_#{comment.id}")
678
674
  within "#comment_#{comment.id}" do
679
675
  expect(page).to have_content("Comment deleted on")
680
- expect(page).not_to have_content comment_author.name
681
- expect(page).not_to have_selector("comment__footer")
676
+ expect(page).to have_no_content comment_author.name
677
+ expect(page).to have_no_css(".comment__header")
682
678
  end
683
- expect(page).to have_selector("span.comments-count", text: "3 comments")
679
+ expect(page).to have_css("span.comments-count", text: "3 comments")
684
680
 
685
681
  expect(Decidim::Comments::Comment.not_deleted.count).to eq(3)
686
682
  end
@@ -702,7 +698,7 @@ shared_examples "comments" do
702
698
  within "#comment_#{comment.id}" do
703
699
  # Toolbar
704
700
  page.find("[id^='dropdown-trigger']").click
705
- expect(page).not_to have_button("Edit")
701
+ expect(page).to have_no_button("Edit")
706
702
  end
707
703
  end
708
704
  end
@@ -723,16 +719,16 @@ shared_examples "comments" do
723
719
  within "#comment_#{comment.id}" do
724
720
  # Toolbar
725
721
  page.find("[id^='dropdown-trigger']").click
726
- click_button "Edit"
722
+ click_on "Edit"
727
723
  end
728
724
  fill_in "edit_comment_#{comment.id}", with: " This comment has been fixed"
729
- click_button "Send"
725
+ click_on "Send"
730
726
  end
731
727
 
732
728
  it "the comment body changes" do
733
729
  within "#comment_#{comment.id}" do
734
730
  expect(page).to have_content("This comment has been fixed")
735
- expect(page).not_to have_content(comment_body)
731
+ expect(page).to have_no_content(comment_body)
736
732
  end
737
733
  end
738
734
 
@@ -741,20 +737,6 @@ shared_examples "comments" do
741
737
  expect(page).to have_content("Edited")
742
738
  end
743
739
  end
744
-
745
- it "has only one edit modal" do
746
- expect(page).to have_css("#editCommentModal#{comment.id}", visible: :hidden, count: 1)
747
- 3.times do |index|
748
- sleep 2
749
- within "#comment_#{comment.id}" do
750
- page.find("[id^='dropdown-trigger']").click
751
- click_on "Edit"
752
- end
753
- fill_in "edit_comment_#{comment.id}", with: " This comment has been edited #{1 + index} times"
754
- click_on "Send"
755
- end
756
- expect(page).to have_css("#editCommentModal#{comment.id}", visible: :all, count: 1)
757
- end
758
740
  end
759
741
  end
760
742
  end
@@ -768,20 +750,20 @@ shared_examples "comments" do
768
750
  visit resource_path
769
751
 
770
752
  within "#comments #comment_#{comment.id}" do
771
- click_button "Reply"
753
+ click_on "Reply"
772
754
  end
773
755
 
774
- expect(page).to have_selector("#comment_#{comment.id} .add-comment")
756
+ expect(page).to have_css("#comment_#{comment.id} .add-comment")
775
757
 
776
758
  within "form#new_comment_for_#{comment.commentable_type.demodulize}_#{comment.id}" do
777
759
  field = find("#add-comment-#{comment.commentable_type.demodulize}-#{comment.id}")
778
760
  field.set " "
779
761
  field.native.send_keys content
780
- click_button "Publish reply"
762
+ click_on "Publish reply"
781
763
  end
782
764
 
783
765
  expect(page).to have_reply_to(comment, content)
784
- expect(page).to have_selector("span.comments-count", text: "#{commentable.comments.count} comments")
766
+ expect(page).to have_css("span.comments-count", text: "#{commentable.comments.count} comments")
785
767
  expect(page).to have_reply_to(comment, "This is a reply")
786
768
  end
787
769
  end
@@ -796,7 +778,7 @@ shared_examples "comments" do
796
778
  visit current_path
797
779
 
798
780
  within "#comments #comment_#{parent.id}" do
799
- expect(page).to have_selector("#comment-#{parent.id}-replies")
781
+ expect(page).to have_css("#comment-#{parent.id}-replies")
800
782
  expect(page.find("#comment-#{parent.id}-replies").text).to be_blank
801
783
  end
802
784
  end
@@ -807,29 +789,29 @@ shared_examples "comments" do
807
789
  before do
808
790
  visit resource_path
809
791
 
810
- expect(page).to have_selector(".add-comment form")
792
+ expect(page).to have_css(".add-comment form")
811
793
  end
812
794
 
813
795
  it "works according to the setting in the commentable" do
814
796
  if commentable.comments_have_alignment?
815
- page.find(".opinion-toggle--ok").click
816
- expect(page.find(".opinion-toggle--ok")["aria-pressed"]).to eq("true")
817
- expect(page.find(".opinion-toggle--meh")["aria-pressed"]).to eq("false")
818
- expect(page.find(".opinion-toggle--ko")["aria-pressed"]).to eq("false")
819
- expect(page.find(".opinion-toggle .selected-state", visible: false)).to have_content("Your opinion about this topic is positive")
797
+ page.find("[data-toggle-ok=true]").click
798
+ expect(page.find("[data-toggle-ok=true]")["aria-pressed"]).to eq("true")
799
+ expect(page.find("[data-toggle-meh=true]")["aria-pressed"]).to eq("false")
800
+ expect(page.find("[data-toggle-ko=true]")["aria-pressed"]).to eq("false")
801
+ expect(page.find("div[data-opinion-toggle] .selected-state", visible: false)).to have_content("Your opinion about this topic is positive")
820
802
 
821
803
  within "form#new_comment_for_#{commentable.commentable_type.demodulize}_#{commentable.id}" do
822
804
  field = find("#add-comment-#{commentable.commentable_type.demodulize}-#{commentable.id}")
823
805
  field.set " "
824
806
  field.native.send_keys "I am in favor about this!"
825
- click_button "Publish comment"
807
+ click_on "Publish comment"
826
808
  end
827
809
 
828
810
  within "#comments" do
829
- expect(page).to have_selector "span.success.label", text: "In favor", wait: 20
811
+ expect(page).to have_css "span.success.label", text: "In favor", wait: 20
830
812
  end
831
813
  else
832
- expect(page).not_to have_selector(".opinion-toggle--ok")
814
+ expect(page).to have_no_css("[data-toggle-ok=true]")
833
815
  end
834
816
  end
835
817
  end
@@ -844,11 +826,11 @@ shared_examples "comments" do
844
826
  it "works according to the setting in the commentable" do
845
827
  within "#comment_#{comments[0].id}" do
846
828
  if commentable.comments_have_votes?
847
- expect(page).to have_selector(".js-comment__votes--up", text: /0/)
829
+ expect(page).to have_css(".js-comment__votes--up", text: /0/)
848
830
  page.find(".js-comment__votes--up").click
849
- expect(page).to have_selector(".js-comment__votes--up", text: /1/)
831
+ expect(page).to have_css(".js-comment__votes--up", text: /1/)
850
832
  else
851
- expect(page).not_to have_selector(".js-comment__votes--up", text: /0/)
833
+ expect(page).to have_no_css(".js-comment__votes--up", text: /0/)
852
834
  end
853
835
  end
854
836
  end
@@ -860,10 +842,10 @@ shared_examples "comments" do
860
842
  skip "Commentable comments has no votes" unless commentable.comments_have_votes?
861
843
 
862
844
  visit current_path
863
- expect(page).to have_selector("#comment_#{comments[0].id} > .comment__footer > .comment__footer-grid .comment__votes .js-comment__votes--up", text: /0/)
864
- page.find("#comment_#{comments[0].id} > .comment__footer > .comment__footer-grid .comment__votes .js-comment__votes--up").click
865
- expect(page).to have_selector("#comment_#{comments[0].id} > .comment__footer > .comment__footer-grid .comment__votes .js-comment__votes--up", text: /1/)
866
- expect(page).to have_selector("#comment_#{comment_on_comment.id} > .comment__footer > .comment__footer-grid .comment__votes .js-comment__votes--up", text: /0/)
845
+ expect(page).to have_css("#comment_#{comments[0].id} > [data-comment-footer] > .comment__footer-grid .comment__votes .js-comment__votes--up", text: /0/)
846
+ page.find("#comment_#{comments[0].id} > [data-comment-footer] > .comment__footer-grid .comment__votes .js-comment__votes--up").click
847
+ expect(page).to have_css("#comment_#{comments[0].id} > [data-comment-footer] > .comment__footer-grid .comment__votes .js-comment__votes--up", text: /1/)
848
+ expect(page).to have_css("#comment_#{comment_on_comment.id} > [data-comment-footer] > .comment__footer-grid .comment__votes .js-comment__votes--up", text: /0/)
867
849
  end
868
850
  end
869
851
  end
@@ -872,11 +854,11 @@ shared_examples "comments" do
872
854
  it "works according to the setting in the commentable" do
873
855
  within "#comment_#{comments[0].id}" do
874
856
  if commentable.comments_have_votes?
875
- expect(page).to have_selector(".js-comment__votes--down", text: /0/)
857
+ expect(page).to have_css(".js-comment__votes--down", text: /0/)
876
858
  page.find(".js-comment__votes--down").click
877
- expect(page).to have_selector(".js-comment__votes--down", text: /1/)
859
+ expect(page).to have_css(".js-comment__votes--down", text: /1/)
878
860
  else
879
- expect(page).not_to have_selector(".js-comment__votes--down", text: /0/)
861
+ expect(page).to have_no_css(".js-comment__votes--down", text: /0/)
880
862
  end
881
863
  end
882
864
  end
@@ -900,7 +882,7 @@ shared_examples "comments" do
900
882
 
901
883
  context "when text finish with a mention" do
902
884
  it "shows the tribute container" do
903
- expect(page).to have_selector(".tribute-container", text: mentioned_user.name, wait: 10)
885
+ expect(page).to have_css(".tribute-container", text: mentioned_user.name, wait: 10)
904
886
  end
905
887
  end
906
888
 
@@ -908,7 +890,7 @@ shared_examples "comments" do
908
890
  let(:content) { "A valid user mention: @#{mentioned_user.nickname}." }
909
891
 
910
892
  it "shows the tribute container" do
911
- expect(page).not_to have_selector(".tribute-container", text: mentioned_user.name)
893
+ expect(page).to have_no_css(".tribute-container", text: mentioned_user.name)
912
894
  end
913
895
  end
914
896
  end
@@ -918,7 +900,7 @@ shared_examples "comments" do
918
900
  let(:content) { "A unconfirmed user mention: @#{mentioned_user.nickname}" }
919
901
 
920
902
  it "do not show the tribute container" do
921
- expect(page).not_to have_selector(".tribute-container", text: mentioned_user.name)
903
+ expect(page).to have_no_css(".tribute-container", text: mentioned_user.name)
922
904
  end
923
905
  end
924
906
 
@@ -927,7 +909,7 @@ shared_examples "comments" do
927
909
  let(:content) { "A confirmed user group mention: @#{mentioned_group.nickname}" }
928
910
 
929
911
  it "shows the tribute container" do
930
- expect(page).to have_selector(".tribute-container", text: mentioned_group.nickname, wait: 10)
912
+ expect(page).to have_css(".tribute-container", text: mentioned_group.nickname, wait: 10)
931
913
  end
932
914
  end
933
915
  end
@@ -940,7 +922,7 @@ shared_examples "comments" do
940
922
  field = find("#add-comment-#{commentable.commentable_type.demodulize}-#{commentable.id}")
941
923
  field.set " "
942
924
  field.native.send_keys content
943
- click_button "Publish comment"
925
+ click_on "Publish comment"
944
926
  end
945
927
  end
946
928
 
@@ -961,7 +943,7 @@ shared_examples "comments" do
961
943
 
962
944
  it "ignores the mention" do
963
945
  expect(page).to have_comment_from(user, "This text mentions a user outside current organization: @#{mentioned_user.nickname}", wait: 20)
964
- expect(page).not_to have_link "@#{mentioned_user.nickname}"
946
+ expect(page).to have_no_link "@#{mentioned_user.nickname}"
965
947
  end
966
948
  end
967
949
 
@@ -970,7 +952,7 @@ shared_examples "comments" do
970
952
 
971
953
  it "ignores the mention" do
972
954
  expect(page).to have_comment_from(user, "This text mentions a @nonexistent user", wait: 20)
973
- expect(page).not_to have_link "@nonexistent"
955
+ expect(page).to have_no_link "@nonexistent"
974
956
  end
975
957
  end
976
958
  end
@@ -985,7 +967,7 @@ shared_examples "comments" do
985
967
  field = find("#add-comment-#{commentable.commentable_type.demodulize}-#{commentable.id}")
986
968
  field.set " "
987
969
  field.native.send_keys content
988
- click_button "Publish comment"
970
+ click_on "Publish comment"
989
971
  end
990
972
  end
991
973
 
@@ -1033,12 +1015,13 @@ shared_examples "comments blocked" do
1033
1015
  it "shows a message indicating that comments are disabled" do
1034
1016
  visit resource_path
1035
1017
  expect(page).to have_content("Comments are disabled at this time")
1036
- expect(page).not_to have_content("You need to be verified to comment at this moment")
1018
+ expect(page).to have_no_content("You need to be verified to comment at this moment")
1037
1019
  end
1038
1020
  end
1039
1021
  end
1040
1022
 
1041
1023
  context "when authenticated" do
1024
+ let!(:organization) { create(:organization) }
1042
1025
  let!(:user) { create(:user, :confirmed, organization:) }
1043
1026
  let!(:comments) { create_list(:comment, 3, commentable:) }
1044
1027
 
@@ -1057,7 +1040,7 @@ shared_examples "comments blocked" do
1057
1040
  it "shows a message indicating that comments are disabled" do
1058
1041
  visit resource_path
1059
1042
  expect(page).to have_content("Comments are disabled at this time")
1060
- expect(page).not_to have_content("You need to be verified to comment at this moment")
1043
+ expect(page).to have_no_content("You need to be verified to comment at this moment")
1061
1044
  end
1062
1045
  end
1063
1046
  end
@@ -7,7 +7,7 @@ shared_examples "comments_reports" do
7
7
 
8
8
  # Open toolbar
9
9
  page.find("[id^='dropdown-trigger']").click
10
- click_button "Report"
10
+ click_on "Report"
11
11
 
12
12
  expect(page).to have_css("#loginModal", visible: :visible)
13
13
  end
@@ -24,12 +24,12 @@ shared_examples "comments_reports" do
24
24
 
25
25
  # Open toolbar
26
26
  page.find("[id^='dropdown-trigger']").click
27
- click_button "Report"
27
+ click_on "Report"
28
28
 
29
29
  expect(page).to have_css(".flag-modal", visible: :visible)
30
30
 
31
31
  within ".flag-modal" do
32
- click_button "Report"
32
+ click_on "Report"
33
33
  end
34
34
 
35
35
  expect(page).to have_content "report has been created"
@@ -47,7 +47,7 @@ shared_examples "comments_reports" do
47
47
 
48
48
  # Open toolbar
49
49
  page.find("[id^='dropdown-trigger']").click
50
- click_button "Report"
50
+ click_on "Report"
51
51
 
52
52
  expect(page).to have_css(".flag-modal", visible: :visible)
53
53
 
@@ -15,7 +15,7 @@ shared_context "when sends the notification digest" do
15
15
  end
16
16
 
17
17
  shared_examples_for "notification digest mail" do
18
- context "when a notificable event takes place" do
18
+ context "when a notifiable event takes place" do
19
19
  let!(:organization) { create(:organization) }
20
20
  let!(:participatory_space) { create(:participatory_process, organization:) }
21
21
 
@@ -27,7 +27,7 @@ shared_examples "editable content for admins" do
27
27
  let(:user) { create(:user, :confirmed, organization:) }
28
28
 
29
29
  it "does not have a link to edit the content at the admin" do
30
- expect(page).not_to have_css(header_selector)
30
+ expect(page).to have_no_css(header_selector)
31
31
  end
32
32
  end
33
33
  end
@@ -18,25 +18,25 @@ shared_examples_for "has embedded video in description" do |description_attribut
18
18
 
19
19
  context "when cookies are rejected" do
20
20
  before do
21
- click_link "Cookie settings"
22
- click_button "Accept only essential"
21
+ click_on "Cookie settings"
22
+ click_on "Accept only essential"
23
23
  end
24
24
 
25
25
  it "disables iframe" do
26
26
  expect(page).to have_content(cookie_warning)
27
- expect(page).not_to have_selector("iframe")
27
+ expect(page).to have_no_css("iframe")
28
28
  end
29
29
  end
30
30
 
31
31
  context "when cookies are accepted" do
32
32
  before do
33
- click_link "Cookie settings"
34
- click_button "Accept all"
33
+ click_on "Cookie settings"
34
+ click_on "Accept all"
35
35
  end
36
36
 
37
37
  it "shows iframe" do
38
- expect(page).not_to have_content(cookie_warning)
39
- expect(page).to have_selector("iframe", count:)
38
+ expect(page).to have_no_content(cookie_warning)
39
+ expect(page).to have_css("iframe", count:)
40
40
  end
41
41
  end
42
42
  end
@@ -5,7 +5,7 @@ shared_examples "fingerprint" do
5
5
 
6
6
  it "shows a fingerprint" do
7
7
  visit(resource_locator(fingerprintable).path)
8
- click_button("Check fingerprint")
8
+ click_on("Check fingerprint")
9
9
 
10
10
  within ".fingerprint-modal" do
11
11
  expect(page).to(have_content(fingerprintable.fingerprint.value))