decidim-core 0.27.10 → 0.28.0.rc4

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 (1512) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +4 -4
  3. data/app/cells/decidim/activities/show.erb +5 -3
  4. data/app/cells/decidim/activities_cell.rb +5 -5
  5. data/app/cells/decidim/activity/show.erb +23 -22
  6. data/app/cells/decidim/activity_cell.rb +28 -8
  7. data/app/cells/decidim/address/online.erb +9 -0
  8. data/app/cells/decidim/address/show.erb +13 -13
  9. data/app/cells/decidim/address_cell.rb +3 -7
  10. data/app/cells/decidim/amendable/amend_button_card/show.erb +4 -9
  11. data/app/cells/decidim/amendable/amend_button_card_cell.rb +0 -17
  12. data/app/cells/decidim/amendable/amenders_list/show.erb +0 -12
  13. data/app/cells/decidim/amendable/amendments/show.erb +12 -0
  14. data/app/cells/decidim/amendable/amendments_cell.rb +25 -0
  15. data/app/cells/decidim/amendable/announcement_cell.rb +1 -1
  16. data/app/cells/decidim/amendable/emendation_actions/show.erb +12 -10
  17. data/app/cells/decidim/amendable/emendation_actions_cell.rb +0 -26
  18. data/app/cells/decidim/amendable/promote_button_card/show.erb +9 -9
  19. data/app/cells/decidim/amendable/promote_button_card_cell.rb +1 -5
  20. data/app/cells/decidim/amendable/wizard_step_form_cell.rb +5 -5
  21. data/app/cells/decidim/announcement/show.erb +10 -10
  22. data/app/cells/decidim/announcement_cell.rb +14 -4
  23. data/app/cells/decidim/author/avatar.erb +9 -0
  24. data/app/cells/decidim/author/avatar_image.erb +1 -0
  25. data/app/cells/decidim/author/cancelled_on.erb +4 -0
  26. data/app/cells/decidim/author/comments.erb +3 -5
  27. data/app/cells/decidim/author/date.erb +4 -5
  28. data/app/cells/decidim/author/endorsements.erb +3 -5
  29. data/app/cells/decidim/author/flag.erb +6 -8
  30. data/app/cells/decidim/author/flag_user.erb +10 -6
  31. data/app/cells/decidim/author/name.erb +5 -0
  32. data/app/cells/decidim/author/profile_minicard.erb +24 -19
  33. data/app/cells/decidim/author/show.erb +22 -14
  34. data/app/cells/decidim/author/withdraw.erb +3 -5
  35. data/app/cells/decidim/author_cell.rb +50 -32
  36. data/app/cells/decidim/authorization_modal/show.erb +28 -0
  37. data/app/cells/decidim/authorization_modal_cell.rb +92 -0
  38. data/app/cells/decidim/badge/show.erb +9 -31
  39. data/app/cells/decidim/badge/small.erb +3 -3
  40. data/app/cells/decidim/badges/show.erb +13 -6
  41. data/app/cells/decidim/badges_cell.rb +1 -0
  42. data/app/cells/decidim/button/button.erb +9 -0
  43. data/app/cells/decidim/button/content.erb +2 -0
  44. data/app/cells/decidim/button/link.erb +10 -0
  45. data/app/cells/decidim/button/show.erb +5 -0
  46. data/app/cells/decidim/button_cell.rb +48 -0
  47. data/app/cells/decidim/card/show.erb +8 -16
  48. data/app/cells/decidim/card/title.erb +1 -0
  49. data/app/cells/decidim/card_cell.rb +63 -6
  50. data/app/cells/decidim/card_g/show.erb +19 -0
  51. data/app/cells/decidim/card_g_cell.rb +102 -0
  52. data/app/cells/decidim/card_l/author.erb +3 -0
  53. data/app/cells/decidim/card_l/content.erb +10 -0
  54. data/app/cells/decidim/card_l/description.erb +3 -0
  55. data/app/cells/decidim/card_l/image.erb +11 -0
  56. data/app/cells/decidim/card_l/metadata.erb +3 -0
  57. data/app/cells/decidim/card_l/show.erb +13 -0
  58. data/app/cells/decidim/card_l/space.erb +1 -0
  59. data/app/cells/decidim/card_l/title_and_details.erb +5 -0
  60. data/app/cells/decidim/card_l_cell.rb +139 -0
  61. data/app/cells/decidim/card_metadata/show.erb +22 -0
  62. data/app/cells/decidim/card_metadata_cell.rb +218 -0
  63. data/app/cells/decidim/card_s/show.erb +10 -0
  64. data/app/cells/decidim/card_s_cell.rb +34 -0
  65. data/app/cells/decidim/coauthorships_cell.rb +2 -27
  66. data/app/cells/decidim/collapsible_authors/show.erb +17 -16
  67. data/app/cells/decidim/collapsible_authors/stack.erb +9 -0
  68. data/app/cells/decidim/collapsible_authors_cell.rb +13 -22
  69. data/app/cells/decidim/comments_button_cell.rb +31 -0
  70. data/app/cells/decidim/content_blocks/base/show.erb +3 -0
  71. data/app/cells/decidim/content_blocks/base_cell.rb +49 -0
  72. data/app/cells/decidim/content_blocks/cta/show.erb +10 -12
  73. data/app/cells/decidim/content_blocks/cta_cell.rb +0 -4
  74. data/app/cells/decidim/content_blocks/footer_sub_hero/show.erb +14 -12
  75. data/app/cells/decidim/content_blocks/global_menu/show.erb +11 -0
  76. data/app/cells/decidim/content_blocks/global_menu_cell.rb +35 -0
  77. data/app/cells/decidim/content_blocks/hero/cta_button.erb +4 -0
  78. data/app/cells/decidim/content_blocks/hero/show.erb +11 -18
  79. data/app/cells/decidim/content_blocks/hero_cell.rb +1 -1
  80. data/app/cells/decidim/content_blocks/highlighted_content_banner/show.erb +16 -20
  81. data/app/cells/decidim/content_blocks/highlighted_elements_cell.rb +7 -31
  82. data/app/cells/decidim/content_blocks/highlighted_elements_for_component_settings_form/show.erb +4 -0
  83. data/app/cells/decidim/content_blocks/highlighted_elements_for_component_settings_form_cell.rb +31 -0
  84. data/app/cells/decidim/content_blocks/highlighted_elements_settings_form/show.erb +1 -1
  85. data/app/cells/decidim/content_blocks/highlighted_elements_with_cell_for_list/content.erb +1 -0
  86. data/app/cells/decidim/content_blocks/highlighted_elements_with_cell_for_list_cell.rb +29 -0
  87. data/app/cells/decidim/content_blocks/highlighted_participatory_spaces/content.erb +16 -0
  88. data/app/cells/decidim/content_blocks/highlighted_participatory_spaces_cell.rb +39 -0
  89. data/app/cells/decidim/content_blocks/how_to_participate/show.erb +37 -41
  90. data/app/cells/decidim/content_blocks/html/show.erb +1 -1
  91. data/app/cells/decidim/content_blocks/html_cell.rb +4 -0
  92. data/app/cells/decidim/content_blocks/html_settings_form/show.erb +1 -1
  93. data/app/cells/decidim/content_blocks/last_activity/show.erb +11 -14
  94. data/app/cells/decidim/content_blocks/last_activity_cell.rb +2 -2
  95. data/app/cells/decidim/content_blocks/last_activity_settings_form/show.erb +3 -0
  96. data/app/cells/decidim/content_blocks/last_activity_settings_form_cell.rb +13 -0
  97. data/app/cells/decidim/content_blocks/menu_breadcrumb_last_activity/show.erb +10 -0
  98. data/app/cells/decidim/content_blocks/menu_breadcrumb_last_activity_cell.rb +43 -0
  99. data/app/cells/decidim/content_blocks/organization_metrics_cell.rb +21 -0
  100. data/app/cells/decidim/content_blocks/participatory_space_announcement/content.erb +1 -0
  101. data/app/cells/decidim/content_blocks/participatory_space_announcement_cell.rb +19 -0
  102. data/app/cells/decidim/content_blocks/participatory_space_documents/content.erb +5 -0
  103. data/app/cells/decidim/content_blocks/participatory_space_documents_cell.rb +7 -0
  104. data/app/cells/decidim/content_blocks/participatory_space_extra_data/content.erb +5 -0
  105. data/app/cells/decidim/content_blocks/participatory_space_extra_data/extra_data.erb +13 -0
  106. data/app/cells/decidim/content_blocks/participatory_space_extra_data/recent_users.erb +5 -0
  107. data/app/cells/decidim/content_blocks/participatory_space_extra_data_cell.rb +13 -0
  108. data/app/cells/decidim/content_blocks/participatory_space_hero/show.erb +20 -0
  109. data/app/cells/decidim/content_blocks/participatory_space_hero_cell.rb +41 -0
  110. data/app/cells/decidim/content_blocks/participatory_space_images/content.erb +5 -0
  111. data/app/cells/decidim/content_blocks/participatory_space_images_cell.rb +7 -0
  112. data/app/cells/decidim/content_blocks/participatory_space_last_activity/content.erb +11 -0
  113. data/app/cells/decidim/content_blocks/participatory_space_last_activity/recent_avatars.erb +5 -0
  114. data/app/cells/decidim/content_blocks/participatory_space_last_activity_cell.rb +45 -0
  115. data/app/cells/decidim/content_blocks/participatory_space_main_data/content.erb +7 -0
  116. data/app/cells/decidim/content_blocks/participatory_space_main_data/title.erb +32 -0
  117. data/app/cells/decidim/content_blocks/participatory_space_main_data_cell.rb +23 -0
  118. data/app/cells/decidim/content_blocks/participatory_space_metadata/content.erb +10 -0
  119. data/app/cells/decidim/content_blocks/participatory_space_metadata_cell.rb +40 -0
  120. data/app/cells/decidim/content_blocks/participatory_space_metrics/content.erb +18 -0
  121. data/app/cells/decidim/content_blocks/participatory_space_metrics_cell.rb +43 -0
  122. data/app/cells/decidim/content_blocks/participatory_space_social_networks/content.erb +10 -0
  123. data/app/cells/decidim/content_blocks/participatory_space_social_networks_cell.rb +31 -0
  124. data/app/cells/decidim/content_blocks/participatory_space_stats/content.erb +1 -0
  125. data/app/cells/decidim/content_blocks/participatory_space_stats_cell.rb +21 -0
  126. data/app/cells/decidim/content_blocks/static_page/section/show.erb +1 -0
  127. data/app/cells/decidim/content_blocks/static_page/section_cell.rb +13 -0
  128. data/app/cells/decidim/content_blocks/static_page/section_settings_form/show.erb +3 -0
  129. data/app/cells/decidim/content_blocks/static_page/section_settings_form_cell.rb +19 -0
  130. data/app/cells/decidim/content_blocks/static_page/summary/show.erb +1 -0
  131. data/app/cells/decidim/content_blocks/static_page/summary_cell.rb +13 -0
  132. data/app/cells/decidim/content_blocks/static_page/summary_settings_form/show.erb +3 -0
  133. data/app/cells/decidim/content_blocks/static_page/summary_settings_form_cell.rb +19 -0
  134. data/app/cells/decidim/content_blocks/static_page/two_pane_section/show.erb +8 -0
  135. data/app/cells/decidim/content_blocks/static_page/two_pane_section_cell.rb +17 -0
  136. data/app/cells/decidim/content_blocks/static_page/two_pane_section_settings_form/show.erb +4 -0
  137. data/app/cells/decidim/content_blocks/static_page/two_pane_section_settings_form_cell.rb +23 -0
  138. data/app/cells/decidim/content_blocks/stats/show.erb +5 -18
  139. data/app/cells/decidim/content_blocks/sub_hero/show.erb +11 -13
  140. data/app/cells/decidim/data_consent/category.erb +49 -45
  141. data/app/cells/decidim/data_consent/dialog.erb +20 -24
  142. data/app/cells/decidim/data_consent/modal.erb +32 -36
  143. data/app/cells/decidim/date_range/show.erb +4 -4
  144. data/app/cells/decidim/diff/attribute.erb +5 -25
  145. data/app/cells/decidim/diff/diff_mode_dropdown.erb +5 -33
  146. data/app/cells/decidim/diff/diff_mode_html.erb +5 -33
  147. data/app/cells/decidim/diff/diff_split.erb +2 -11
  148. data/app/cells/decidim/diff/diff_split_full.erb +8 -0
  149. data/app/cells/decidim/diff/diff_unified.erb +1 -7
  150. data/app/cells/decidim/diff/show.erb +10 -3
  151. data/app/cells/decidim/diff_cell.rb +35 -4
  152. data/app/cells/decidim/documents_panel/show.erb +1 -0
  153. data/app/cells/decidim/documents_panel_cell.rb +34 -0
  154. data/app/cells/decidim/endorsement_block/show.erb +4 -0
  155. data/app/cells/decidim/endorsement_block_cell.rb +7 -0
  156. data/app/cells/decidim/endorsement_buttons/button_content.erb +2 -0
  157. data/app/cells/decidim/endorsement_buttons/disabled_endorsements.erb +3 -0
  158. data/app/cells/decidim/endorsement_buttons/select_identity_button.erb +5 -7
  159. data/app/cells/decidim/endorsement_buttons/show.erb +16 -3
  160. data/app/cells/decidim/endorsement_buttons/verification_modal.erb +5 -0
  161. data/app/cells/decidim/endorsement_buttons_cell.rb +25 -138
  162. data/app/cells/decidim/endorsers_list/full.erb +6 -0
  163. data/app/cells/decidim/endorsers_list/full_endorsers_list.erb +3 -0
  164. data/app/cells/decidim/endorsers_list/show.erb +11 -16
  165. data/app/cells/decidim/endorsers_list_button/content.erb +1 -0
  166. data/app/cells/decidim/endorsers_list_button_cell.rb +15 -0
  167. data/app/cells/decidim/endorsers_list_cell.rb +25 -5
  168. data/app/cells/decidim/flag_modal/flag_user.erb +12 -2
  169. data/app/cells/decidim/flag_modal/show.erb +51 -26
  170. data/app/cells/decidim/flag_modal_cell.rb +22 -1
  171. data/app/cells/decidim/follow_button/content.erb +2 -0
  172. data/app/cells/decidim/follow_button/show.erb +24 -53
  173. data/app/cells/decidim/follow_button_cell.rb +23 -34
  174. data/app/cells/decidim/followers/show.erb +11 -8
  175. data/app/cells/decidim/followers_cell.rb +4 -0
  176. data/app/cells/decidim/following/show.erb +6 -11
  177. data/app/cells/decidim/following_cell.rb +9 -2
  178. data/app/cells/decidim/footer_pages/pages.erb +3 -0
  179. data/app/cells/decidim/footer_pages/topics.erb +12 -0
  180. data/app/cells/decidim/footer_pages_cell.rb +68 -0
  181. data/app/cells/decidim/group_admins/show.erb +32 -0
  182. data/app/cells/decidim/group_admins_cell.rb +8 -0
  183. data/app/cells/decidim/group_members/show.erb +42 -0
  184. data/app/cells/decidim/group_members_cell.rb +8 -0
  185. data/app/cells/decidim/groups/show.erb +12 -8
  186. data/app/cells/decidim/groups_cell.rb +6 -0
  187. data/app/cells/decidim/highlighted_participatory_process/show.erb +1 -0
  188. data/app/cells/decidim/highlighted_participatory_process_cell.rb +15 -0
  189. data/app/cells/decidim/images_panel/show.erb +7 -0
  190. data/app/cells/decidim/images_panel_cell.rb +29 -0
  191. data/app/cells/decidim/linked_resources_for/show.erb +3 -0
  192. data/app/cells/decidim/linked_resources_for_cell.rb +52 -0
  193. data/app/cells/decidim/members/show.erb +11 -8
  194. data/app/cells/decidim/members_cell.rb +9 -7
  195. data/app/cells/decidim/nav_links/show.erb +17 -0
  196. data/app/cells/decidim/nav_links_cell.rb +10 -0
  197. data/app/cells/decidim/navbar_admin_link/show.erb +4 -6
  198. data/app/cells/decidim/navbar_admin_link_cell.rb +2 -8
  199. data/app/cells/decidim/newsletter_templates/basic_only_text/show.erb +1 -12
  200. data/app/cells/decidim/newsletter_templates/image_text_cta/show.erb +1 -12
  201. data/app/cells/decidim/newsletter_templates/image_text_cta_settings_form/show.erb +1 -1
  202. data/app/cells/decidim/notification/show.erb +14 -30
  203. data/app/cells/decidim/notification_cell.rb +12 -5
  204. data/app/cells/decidim/notifications/show.erb +5 -20
  205. data/app/cells/decidim/notifications/validations.erb +3 -0
  206. data/app/cells/decidim/notifications_cell.rb +13 -0
  207. data/app/cells/decidim/pad_iframe/show.erb +1 -1
  208. data/app/cells/decidim/participatory_space_dropdown_metadata/links.erb +9 -0
  209. data/app/cells/decidim/participatory_space_dropdown_metadata/metadata.erb +9 -0
  210. data/app/cells/decidim/participatory_space_dropdown_metadata/show.erb +9 -0
  211. data/app/cells/decidim/participatory_space_dropdown_metadata_cell.rb +35 -0
  212. data/app/cells/decidim/photo/show.erb +19 -0
  213. data/app/cells/decidim/photo_cell.rb +44 -0
  214. data/app/cells/decidim/photos_list/show.erb +5 -0
  215. data/app/cells/decidim/photos_list_cell.rb +16 -0
  216. data/app/cells/decidim/profile/avatar.erb +7 -0
  217. data/app/cells/decidim/profile/badge.erb +4 -0
  218. data/app/cells/decidim/profile/details.erb +22 -0
  219. data/app/cells/decidim/profile/inaccessible.erb +1 -9
  220. data/app/cells/decidim/profile/invalid.erb +1 -9
  221. data/app/cells/decidim/profile/show.erb +24 -14
  222. data/app/cells/decidim/profile/tabs.erb +13 -0
  223. data/app/cells/decidim/profile_actions/dropdown_actions.erb +21 -0
  224. data/app/cells/decidim/profile_actions/profile_actions.erb +7 -0
  225. data/app/cells/decidim/profile_actions/show.erb +12 -0
  226. data/app/cells/decidim/profile_actions_cell.rb +144 -0
  227. data/app/cells/decidim/profile_cell.rb +77 -11
  228. data/app/cells/decidim/profile_sidebar/show.erb +11 -11
  229. data/app/cells/decidim/progress_bar/show.erb +9 -19
  230. data/app/cells/decidim/progress_bar_cell.rb +1 -30
  231. data/app/cells/decidim/public_participation/show.erb +1 -1
  232. data/app/cells/decidim/report_button/already_reported_modal.erb +11 -0
  233. data/app/cells/decidim/report_button/flag_modal.erb +60 -0
  234. data/app/cells/decidim/report_button/show.erb +2 -0
  235. data/app/cells/decidim/report_button_cell.rb +82 -0
  236. data/app/cells/decidim/represent_user_group/show.erb +5 -5
  237. data/app/cells/decidim/resource_types_filter/show.erb +22 -0
  238. data/app/cells/decidim/resource_types_filter_cell.rb +56 -0
  239. data/app/cells/decidim/scopes_picker/scope_picker_values.erb +1 -1
  240. data/app/cells/decidim/search_results/show.erb +1 -2
  241. data/app/cells/decidim/search_results_section/show.erb +20 -20
  242. data/app/cells/decidim/search_results_section_cell.rb +0 -4
  243. data/app/cells/decidim/share_button_cell.rb +23 -0
  244. data/app/cells/decidim/statistic/show.erb +4 -5
  245. data/app/cells/decidim/statistics/show.erb +7 -19
  246. data/app/cells/decidim/statistics_cell.rb +0 -20
  247. data/app/cells/decidim/tab_panels/show.erb +19 -0
  248. data/app/cells/decidim/tab_panels_cell.rb +40 -0
  249. data/app/cells/decidim/tags/show.erb +3 -4
  250. data/app/cells/decidim/tags_cell.rb +25 -8
  251. data/app/cells/decidim/tos_page/form.erb +9 -15
  252. data/app/cells/decidim/tos_page/refuse_btn_modal.erb +17 -27
  253. data/app/cells/decidim/tos_page_cell.rb +3 -3
  254. data/app/cells/decidim/upload_modal/files.erb +50 -35
  255. data/app/cells/decidim/upload_modal/modal.erb +62 -47
  256. data/app/cells/decidim/upload_modal/show.erb +1 -2
  257. data/app/cells/decidim/upload_modal_cell.rb +11 -26
  258. data/app/cells/decidim/user_activity/show.erb +9 -27
  259. data/app/cells/decidim/user_activity_cell.rb +4 -2
  260. data/app/cells/decidim/user_conversation/conversation_header.erb +12 -12
  261. data/app/cells/decidim/user_conversation/messages.erb +1 -15
  262. data/app/cells/decidim/user_conversation/new.erb +4 -13
  263. data/app/cells/decidim/user_conversation/reply.erb +8 -16
  264. data/app/cells/decidim/user_conversation/show.erb +15 -18
  265. data/app/cells/decidim/user_conversation/start.erb +12 -0
  266. data/app/cells/decidim/user_conversation_cell.rb +7 -32
  267. data/app/cells/decidim/user_conversations/new_conversation_button.erb +20 -0
  268. data/app/cells/decidim/user_conversations/show.erb +11 -55
  269. data/app/cells/decidim/user_conversations_cell.rb +2 -21
  270. data/app/cells/decidim/user_group_pending_invitations_list/show.erb +22 -17
  271. data/app/cells/decidim/user_group_pending_requests_list/show.erb +21 -17
  272. data/app/cells/decidim/user_profile/badge.erb +4 -0
  273. data/app/cells/decidim/user_profile/role_badge.erb +3 -0
  274. data/app/cells/decidim/user_profile/show.erb +15 -0
  275. data/app/cells/decidim/user_profile_cell.rb +19 -24
  276. data/app/cells/decidim/user_timeline/show.erb +1 -3
  277. data/app/cells/decidim/version/show.erb +5 -30
  278. data/app/cells/decidim/version_author_cell.rb +13 -10
  279. data/app/cells/decidim/version_cell.rb +8 -23
  280. data/app/cells/decidim/versions_list/show.erb +3 -32
  281. data/app/cells/decidim/versions_list_cell.rb +11 -23
  282. data/app/cells/decidim/versions_list_item/show.erb +4 -20
  283. data/app/cells/decidim/versions_list_item_cell.rb +10 -3
  284. data/app/cells/decidim/wizard_step_form/wizard_aside.erb +1 -1
  285. data/app/cells/decidim/wizard_step_form/wizard_header.erb +2 -2
  286. data/app/cells/decidim/wizard_step_form_cell.rb +3 -3
  287. data/app/commands/decidim/accept_group_invitation.rb +2 -2
  288. data/app/commands/decidim/accept_user_group_join_request.rb +1 -1
  289. data/app/commands/decidim/amendable/accept.rb +1 -1
  290. data/app/commands/decidim/amendable/create_draft.rb +2 -2
  291. data/app/commands/decidim/amendable/publish_draft.rb +1 -1
  292. data/app/commands/decidim/amendable/reject.rb +1 -1
  293. data/app/commands/decidim/amendable/update_draft.rb +1 -1
  294. data/app/commands/decidim/attachment_methods.rb +1 -5
  295. data/app/commands/decidim/create_editor_image.rb +1 -1
  296. data/app/commands/decidim/create_follow.rb +1 -1
  297. data/app/commands/decidim/create_omniauth_registration.rb +7 -6
  298. data/app/commands/decidim/create_registration.rb +1 -2
  299. data/app/commands/decidim/create_report.rb +15 -24
  300. data/app/commands/decidim/create_user_group.rb +1 -1
  301. data/app/commands/decidim/create_user_report.rb +1 -1
  302. data/app/commands/decidim/delete_follow.rb +1 -1
  303. data/app/commands/decidim/demote_membership.rb +2 -2
  304. data/app/commands/decidim/endorse_resource.rb +1 -1
  305. data/app/commands/decidim/gallery_methods.rb +1 -1
  306. data/app/commands/decidim/invite_user_to_group.rb +3 -3
  307. data/app/commands/decidim/join_user_group.rb +3 -3
  308. data/app/commands/decidim/leave_user_group.rb +4 -4
  309. data/app/commands/decidim/messaging/reply_to_conversation.rb +2 -5
  310. data/app/commands/decidim/messaging/start_conversation.rb +2 -5
  311. data/app/commands/decidim/multiple_attachments_methods.rb +5 -3
  312. data/app/commands/decidim/promote_membership.rb +1 -1
  313. data/app/commands/decidim/reject_group_invitation.rb +2 -2
  314. data/app/commands/decidim/reject_user_group_join_request.rb +1 -1
  315. data/app/commands/decidim/remove_user_from_group.rb +1 -1
  316. data/app/commands/decidim/search.rb +3 -11
  317. data/app/commands/decidim/unendorse_resource.rb +1 -1
  318. data/app/commands/decidim/update_account.rb +21 -5
  319. data/app/commands/decidim/update_password.rb +0 -1
  320. data/app/commands/decidim/update_user_group.rb +1 -1
  321. data/app/constraints/decidim/current_component.rb +1 -1
  322. data/app/controllers/concerns/decidim/amendments_controller.rb +9 -1
  323. data/app/controllers/concerns/decidim/devise_controllers.rb +3 -0
  324. data/app/controllers/concerns/decidim/disable_redirection_to_external_host.rb +1 -1
  325. data/app/controllers/concerns/decidim/filter_resource.rb +9 -15
  326. data/app/controllers/concerns/decidim/force_authentication.rb +2 -2
  327. data/app/controllers/concerns/decidim/has_account_breadcrumb.rb +24 -0
  328. data/app/controllers/concerns/decidim/has_participatory_space_content_blocks.rb +31 -0
  329. data/app/controllers/concerns/decidim/has_profile_breadcrumb.rb +24 -0
  330. data/app/controllers/concerns/decidim/has_specific_breadcrumb.rb +23 -0
  331. data/app/controllers/concerns/decidim/has_stored_path.rb +2 -2
  332. data/app/controllers/concerns/decidim/headers/content_security_policy.rb +25 -0
  333. data/app/controllers/concerns/decidim/headers/http_caching_disabler.rb +23 -0
  334. data/app/controllers/concerns/decidim/html_safe_flash.rb +40 -0
  335. data/app/controllers/concerns/decidim/linked_resource_reference.rb +30 -0
  336. data/app/controllers/concerns/decidim/locale_switcher.rb +2 -2
  337. data/app/controllers/concerns/decidim/needs_permission.rb +1 -1
  338. data/app/controllers/concerns/decidim/needs_tos_accepted.rb +12 -5
  339. data/app/controllers/concerns/decidim/paginable.rb +2 -2
  340. data/app/controllers/concerns/decidim/participatory_space_context.rb +30 -1
  341. data/app/controllers/concerns/decidim/safe_redirect.rb +1 -1
  342. data/app/controllers/concerns/decidim/skip_timeoutable.rb +1 -1
  343. data/app/controllers/concerns/decidim/use_organization_time_zone.rb +3 -3
  344. data/app/controllers/concerns/decidim/user_profile.rb +2 -1
  345. data/app/controllers/decidim/account_controller.rb +13 -8
  346. data/app/controllers/decidim/application_controller.rb +8 -3
  347. data/app/controllers/decidim/authorization_modals_controller.rb +5 -5
  348. data/app/controllers/decidim/components/base_controller.rb +15 -4
  349. data/app/controllers/decidim/devise/confirmations_controller.rb +3 -1
  350. data/app/controllers/decidim/devise/invitations_controller.rb +1 -1
  351. data/app/controllers/decidim/devise/omniauth_registrations_controller.rb +22 -1
  352. data/app/controllers/decidim/devise/passwords_controller.rb +1 -1
  353. data/app/controllers/decidim/devise/registrations_controller.rb +1 -1
  354. data/app/controllers/decidim/devise/sessions_controller.rb +24 -1
  355. data/app/controllers/decidim/devise/unlocks_controller.rb +1 -1
  356. data/app/controllers/decidim/doorkeeper/authorizations_controller.rb +9 -0
  357. data/app/controllers/decidim/download_your_data_controller.rb +3 -3
  358. data/app/controllers/decidim/endorsements_controller.rb +3 -3
  359. data/app/controllers/decidim/errors_controller.rb +8 -0
  360. data/app/controllers/decidim/favicon_controller.rb +56 -0
  361. data/app/controllers/decidim/follows_controller.rb +13 -3
  362. data/app/controllers/decidim/free_resource_authorization_modals_controller.rb +4 -4
  363. data/app/controllers/decidim/gamification/badges_controller.rb +10 -0
  364. data/app/controllers/decidim/group_email_confirmations_controller.rb +1 -1
  365. data/app/controllers/decidim/group_invites_controller.rb +2 -2
  366. data/app/controllers/decidim/group_members_controller.rb +23 -10
  367. data/app/controllers/decidim/groups_controller.rb +5 -4
  368. data/app/controllers/decidim/homepage_controller.rb +0 -1
  369. data/app/controllers/decidim/last_activities_controller.rb +14 -12
  370. data/app/controllers/decidim/links_controller.rb +6 -17
  371. data/app/controllers/decidim/locales_controller.rb +1 -1
  372. data/app/controllers/decidim/messaging/conversations_controller.rb +26 -8
  373. data/app/controllers/decidim/newsletters_opt_in_controller.rb +1 -1
  374. data/app/controllers/decidim/notifications_controller.rb +11 -1
  375. data/app/controllers/decidim/notifications_settings_controller.rb +2 -2
  376. data/app/controllers/decidim/offline_controller.rb +9 -0
  377. data/app/controllers/decidim/pages_controller.rb +15 -2
  378. data/app/controllers/decidim/profiles_controller.rb +31 -2
  379. data/app/controllers/decidim/report_users_controller.rb +5 -1
  380. data/app/controllers/decidim/reports_controller.rb +1 -1
  381. data/app/controllers/decidim/scopes_controller.rb +7 -7
  382. data/app/controllers/decidim/searches_controller.rb +17 -4
  383. data/app/controllers/decidim/tos_controller.rb +3 -3
  384. data/app/controllers/decidim/user_activities_controller.rb +8 -4
  385. data/app/controllers/decidim/user_conversations_controller.rb +4 -3
  386. data/app/controllers/decidim/user_group_join_requests_controller.rb +7 -7
  387. data/app/controllers/decidim/user_interests_controller.rb +2 -2
  388. data/app/events/decidim/amendable/amendment_accepted_event.rb +1 -1
  389. data/app/events/decidim/amendable/amendment_base_event.rb +1 -1
  390. data/app/events/decidim/amendable/amendment_created_event.rb +1 -1
  391. data/app/events/decidim/amendable/amendment_rejected_event.rb +1 -1
  392. data/app/events/decidim/amendable/emendation_promoted_event.rb +1 -1
  393. data/app/events/decidim/change_nickname_event.rb +1 -1
  394. data/app/events/decidim/demoted_membership_event.rb +3 -3
  395. data/app/events/decidim/invited_to_group_event.rb +1 -1
  396. data/app/events/decidim/join_request_accepted_event.rb +1 -1
  397. data/app/events/decidim/join_request_created_event.rb +3 -3
  398. data/app/events/decidim/join_request_rejected_event.rb +1 -1
  399. data/app/events/decidim/profile_updated_event.rb +1 -1
  400. data/app/events/decidim/promoted_to_admin_event.rb +3 -3
  401. data/app/events/decidim/removed_from_group_event.rb +3 -3
  402. data/app/events/decidim/resource_endorsed_event.rb +1 -1
  403. data/app/events/decidim/user_group_admin_event.rb +1 -1
  404. data/app/events/decidim/user_group_created_event.rb +1 -1
  405. data/app/events/decidim/user_group_updated_event.rb +1 -1
  406. data/app/events/decidim/welcome_notification_event.rb +9 -6
  407. data/app/forms/decidim/account_form.rb +13 -8
  408. data/app/forms/decidim/amendable/form.rb +2 -2
  409. data/app/forms/decidim/follow_form.rb +1 -1
  410. data/app/forms/decidim/invite_user_form.rb +1 -1
  411. data/app/forms/decidim/password_form.rb +1 -2
  412. data/app/forms/decidim/registration_form.rb +8 -12
  413. data/app/forms/decidim/report_form.rb +2 -0
  414. data/app/forms/decidim/user_group_form.rb +7 -7
  415. data/app/forms/decidim/user_interest_scope_form.rb +1 -1
  416. data/app/forms/decidim/user_interests_form.rb +1 -7
  417. data/app/helpers/concerns/decidim/flash_helper_extensions.rb +80 -12
  418. data/app/helpers/decidim/account_helper.rb +9 -0
  419. data/app/helpers/decidim/action_authorization_helper.rb +11 -11
  420. data/app/helpers/decidim/amendments_helper.rb +45 -27
  421. data/app/helpers/decidim/application_helper.rb +11 -11
  422. data/app/helpers/decidim/aria_selected_link_to_helper.rb +1 -1
  423. data/app/helpers/decidim/attachments_helper.rb +26 -3
  424. data/app/helpers/decidim/authorization_form_helper.rb +2 -2
  425. data/app/helpers/decidim/breadcrumb_helper.rb +60 -0
  426. data/app/helpers/decidim/cache_helper.rb +2 -2
  427. data/app/helpers/decidim/cells_paginate_helper.rb +2 -2
  428. data/app/helpers/decidim/check_boxes_tree_helper.rb +86 -21
  429. data/app/helpers/decidim/component_path_helper.rb +1 -1
  430. data/app/helpers/decidim/contextual_help_helper.rb +2 -2
  431. data/app/helpers/decidim/cta_button_helper.rb +5 -3
  432. data/app/helpers/decidim/date_range_helper.rb +19 -0
  433. data/app/helpers/decidim/decidim_form_helper.rb +24 -10
  434. data/app/helpers/decidim/endorsable_helper.rb +3 -3
  435. data/app/helpers/decidim/filters_helper.rb +16 -17
  436. data/app/helpers/decidim/followable_helper.rb +5 -2
  437. data/app/helpers/decidim/icon_helper.rb +20 -3
  438. data/app/helpers/decidim/layout_helper.rb +52 -39
  439. data/app/helpers/decidim/map_helper.rb +20 -46
  440. data/app/helpers/decidim/menu_helper.rb +47 -0
  441. data/app/helpers/decidim/messaging/conversation_helper.rb +34 -16
  442. data/app/helpers/decidim/meta_tags_helper.rb +3 -3
  443. data/app/helpers/decidim/modal_helper.rb +38 -0
  444. data/app/helpers/decidim/newsletters_helper.rb +16 -83
  445. data/app/helpers/decidim/omniauth_helper.rb +5 -2
  446. data/app/helpers/decidim/orders_helper.rb +3 -3
  447. data/app/helpers/decidim/paginate_helper.rb +12 -1
  448. data/app/helpers/decidim/participatory_space_helpers.rb +4 -5
  449. data/app/helpers/decidim/passwords_helper.rb +19 -4
  450. data/app/helpers/decidim/resource_helper.rb +3 -27
  451. data/app/helpers/decidim/resource_reference_helper.rb +3 -3
  452. data/app/helpers/decidim/resource_versions_helper.rb +6 -4
  453. data/app/helpers/decidim/rich_text_editor_helper.rb +1 -0
  454. data/app/helpers/decidim/sanitize_helper.rb +8 -15
  455. data/app/helpers/decidim/scopes_helper.rb +23 -13
  456. data/app/helpers/decidim/searches_helper.rb +2 -2
  457. data/app/helpers/decidim/social_share_button_helper.rb +53 -0
  458. data/app/helpers/decidim/tooltip_helper.rb +4 -3
  459. data/app/helpers/decidim/traceability_helper.rb +3 -1
  460. data/app/helpers/decidim/twitter_search_helper.rb +1 -1
  461. data/app/helpers/decidim/user_profile_helper.rb +2 -7
  462. data/app/helpers/decidim/view_hooks_helper.rb +1 -4
  463. data/app/jobs/decidim/email_notifications_digest_generator_job.rb +2 -2
  464. data/app/jobs/decidim/event_publisher_job.rb +2 -2
  465. data/app/jobs/decidim/export_job.rb +4 -1
  466. data/app/jobs/decidim/find_and_update_descendants_job.rb +1 -1
  467. data/app/jobs/decidim/hide_all_created_by_author_job.rb +31 -0
  468. data/app/jobs/decidim/machine_translation_fields_job.rb +1 -1
  469. data/app/jobs/decidim/machine_translation_resource_job.rb +1 -1
  470. data/app/jobs/decidim/machine_translation_save_job.rb +2 -2
  471. data/app/jobs/decidim/open_data_job.rb +1 -1
  472. data/app/mailers/decidim/application_mailer.rb +6 -40
  473. data/app/mailers/decidim/block_user_mailer.rb +1 -1
  474. data/app/mailers/decidim/decidim_devise_mailer.rb +1 -1
  475. data/app/mailers/decidim/messaging/conversation_mailer.rb +73 -4
  476. data/app/mailers/decidim/notification_mailer.rb +2 -2
  477. data/app/mailers/decidim/reported_mailer.rb +3 -3
  478. data/app/mailers/decidim/user_update_mailer.rb +28 -0
  479. data/app/models/decidim/action_log.rb +41 -9
  480. data/app/models/decidim/amendment.rb +8 -11
  481. data/app/models/decidim/authorization.rb +14 -4
  482. data/app/models/decidim/authorization_transfer.rb +257 -0
  483. data/app/models/decidim/authorization_transfer_record.rb +31 -0
  484. data/app/models/decidim/coauthorship.rb +7 -0
  485. data/app/models/decidim/component.rb +2 -2
  486. data/app/models/decidim/content_block.rb +5 -5
  487. data/app/models/decidim/contextual_help_section.rb +3 -3
  488. data/app/models/decidim/follow.rb +1 -3
  489. data/app/models/decidim/messaging/conversation.rb +7 -7
  490. data/app/models/decidim/messaging/message.rb +1 -1
  491. data/app/models/decidim/messaging/receipt.rb +1 -1
  492. data/app/models/decidim/newsletter.rb +2 -2
  493. data/app/models/decidim/notification.rb +5 -5
  494. data/app/models/decidim/organization.rb +16 -10
  495. data/app/models/decidim/participatory_space_private_user.rb +2 -23
  496. data/app/models/decidim/permission_action.rb +1 -1
  497. data/app/models/decidim/reminder_record.rb +3 -20
  498. data/app/models/decidim/report.rb +1 -1
  499. data/app/models/decidim/share_token.rb +2 -2
  500. data/app/models/decidim/short_link.rb +6 -6
  501. data/app/models/decidim/static_page.rb +5 -5
  502. data/app/models/decidim/user.rb +7 -6
  503. data/app/models/decidim/user_base_entity.rb +16 -2
  504. data/app/models/decidim/user_group.rb +4 -4
  505. data/app/packs/entrypoints/decidim_conference_diploma.scss +3 -1
  506. data/app/packs/entrypoints/decidim_core.js +4 -66
  507. data/app/packs/entrypoints/decidim_core.scss +2 -0
  508. data/app/packs/entrypoints/decidim_editor.js +7 -0
  509. data/app/packs/entrypoints/decidim_email.js +2 -1
  510. data/app/packs/entrypoints/decidim_map.scss +2 -0
  511. data/app/packs/fonts/decidim/source-sans-pro-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-600.eot +0 -0
  512. data/app/packs/fonts/decidim/source-sans-pro-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-600.svg +337 -0
  513. data/app/packs/fonts/decidim/source-sans-pro-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-600.ttf +0 -0
  514. data/app/packs/fonts/decidim/source-sans-pro-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-600.woff +0 -0
  515. data/app/packs/fonts/decidim/source-sans-pro-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-600.woff2 +0 -0
  516. data/app/packs/fonts/decidim/source-sans-pro-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-700.eot +0 -0
  517. data/app/packs/fonts/decidim/source-sans-pro-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-700.svg +337 -0
  518. data/app/packs/fonts/decidim/source-sans-pro-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-700.ttf +0 -0
  519. data/app/packs/fonts/decidim/source-sans-pro-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-700.woff +0 -0
  520. data/app/packs/fonts/decidim/source-sans-pro-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-700.woff2 +0 -0
  521. data/app/packs/fonts/decidim/source-sans-pro-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-regular.eot +0 -0
  522. data/app/packs/fonts/decidim/source-sans-pro-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-regular.svg +337 -0
  523. data/app/packs/fonts/decidim/source-sans-pro-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-regular.ttf +0 -0
  524. data/app/packs/fonts/decidim/source-sans-pro-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-regular.woff +0 -0
  525. data/app/packs/fonts/decidim/source-sans-pro-v21-cyrillic_cyrillic-ext_greek_greek-ext_latin_latin-ext_vietnamese-regular.woff2 +0 -0
  526. data/app/packs/images/decidim/gamification/badges/decidim_gamification_badges_followers.svg +52 -1
  527. data/app/packs/images/decidim/placeholder-card-g.svg +8 -0
  528. data/app/packs/images/decidim/placeholder-card-l.svg +7 -0
  529. data/app/packs/images/decidim/remixicon.symbol.svg +11 -0
  530. data/app/packs/images/decidim/vendor/social-share-button/x.svg +2 -5
  531. data/app/packs/src/decidim/a11y.js +186 -0
  532. data/app/packs/src/decidim/account_form.js +49 -30
  533. data/app/packs/src/decidim/append_redirect_url_to_modals.js +1 -1
  534. data/app/packs/src/decidim/autocomplete.js +15 -2
  535. data/app/packs/src/decidim/back_to_list.js +1 -1
  536. data/app/packs/src/decidim/change_report_form_behavior.js +45 -0
  537. data/app/packs/src/decidim/check_boxes_tree.js +31 -89
  538. data/app/packs/src/decidim/clipboard.js +2 -2
  539. data/app/packs/src/decidim/confirm.js +8 -25
  540. data/app/packs/src/decidim/data_consent/consent_manager.js +2 -1
  541. data/app/packs/src/decidim/data_consent/consent_manager.test.js +8 -8
  542. data/app/packs/src/decidim/data_consent/index.js +7 -23
  543. data/app/packs/src/decidim/direct_uploads/upload_field.js +110 -96
  544. data/app/packs/src/decidim/direct_uploads/upload_modal.js +195 -186
  545. data/app/packs/src/decidim/direct_uploads/upload_utility.js +0 -40
  546. data/app/packs/src/decidim/direct_uploads/uploader.js +19 -45
  547. data/app/packs/src/decidim/editor/common/bubble_menu.js +163 -0
  548. data/app/packs/src/decidim/editor/common/helpers.js +3 -0
  549. data/app/packs/src/decidim/editor/common/input_dialog.js +156 -0
  550. data/app/packs/src/decidim/editor/common/suggestion.js +179 -0
  551. data/app/packs/src/decidim/editor/common/upload_dialog.js +225 -0
  552. data/app/packs/src/decidim/editor/extensions/bold/index.js +34 -0
  553. data/app/packs/src/decidim/editor/extensions/character_count/index.js +35 -0
  554. data/app/packs/src/decidim/editor/extensions/decidim_kit/index.js +84 -0
  555. data/app/packs/src/decidim/editor/extensions/dialog/index.js +34 -0
  556. data/app/packs/src/decidim/editor/extensions/emoji/index.js +16 -0
  557. data/app/packs/src/decidim/editor/extensions/hashtag/index.js +66 -0
  558. data/app/packs/src/decidim/editor/extensions/heading/index.js +33 -0
  559. data/app/packs/src/decidim/editor/extensions/image/index.js +215 -0
  560. data/app/packs/src/decidim/editor/extensions/image/node_view.js +216 -0
  561. data/app/packs/src/decidim/editor/extensions/indent/index.js +188 -0
  562. data/app/packs/src/decidim/editor/extensions/link/bubble_menu.js +50 -0
  563. data/app/packs/src/decidim/editor/extensions/link/index.js +128 -0
  564. data/app/packs/src/decidim/editor/extensions/mention/index.js +66 -0
  565. data/app/packs/src/decidim/editor/extensions/ordered_list/index.js +188 -0
  566. data/app/packs/src/decidim/editor/extensions/video_embed/index.js +242 -0
  567. data/app/packs/src/decidim/editor/index.js +86 -0
  568. data/app/packs/src/decidim/editor/test/editor/create.test.js +38 -0
  569. data/app/packs/src/decidim/editor/test/extensions/bold.test.js +69 -0
  570. data/app/packs/src/decidim/editor/test/extensions/character_count.test.js +41 -0
  571. data/app/packs/src/decidim/editor/test/extensions/decidim_kit.test.js +110 -0
  572. data/app/packs/src/decidim/editor/test/extensions/dialog.test.js +32 -0
  573. data/app/packs/src/decidim/editor/test/extensions/emoji.test.js +35 -0
  574. data/app/packs/src/decidim/editor/test/extensions/hashtag.test.js +105 -0
  575. data/app/packs/src/decidim/editor/test/extensions/heading.test.js +56 -0
  576. data/app/packs/src/decidim/editor/test/extensions/image.test.js +294 -0
  577. data/app/packs/src/decidim/editor/test/extensions/indent.test.js +154 -0
  578. data/app/packs/src/decidim/editor/test/extensions/link.test.js +103 -0
  579. data/app/packs/src/decidim/editor/test/extensions/mention.test.js +129 -0
  580. data/app/packs/src/decidim/editor/test/extensions/ordered_list.test.js +219 -0
  581. data/app/packs/src/decidim/editor/test/extensions/video_embed.test.js +183 -0
  582. data/app/packs/src/decidim/editor/test/fixtures/editor_messages.js +57 -0
  583. data/app/packs/src/decidim/editor/test/fixtures/logo.png +0 -0
  584. data/app/packs/src/decidim/editor/test/fixtures/upload_templates.js +50 -0
  585. data/app/packs/src/decidim/editor/test/helpers.js +255 -0
  586. data/app/packs/src/decidim/editor/test/toolbar/basic.test.js +36 -0
  587. data/app/packs/src/decidim/editor/test/toolbar/content.test.js +37 -0
  588. data/app/packs/src/decidim/editor/test/toolbar/full.test.js +245 -0
  589. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_basic.js +23 -0
  590. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_basic_block.js +45 -0
  591. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_basic_formatting.js +17 -0
  592. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_basic_indent.js +61 -0
  593. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_basic_link.js +33 -0
  594. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_basic_list.js +47 -0
  595. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_basic_styling.js +95 -0
  596. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_content.js +25 -0
  597. data/app/packs/src/decidim/editor/test/toolbar/shared/behaves_like_content_styling.js +40 -0
  598. data/app/packs/src/decidim/editor/test/toolbar/shared/context.js +18 -0
  599. data/app/packs/src/decidim/editor/test/utilities/paste_transform.test.js +272 -0
  600. data/app/packs/src/decidim/editor/toolbar.js +263 -0
  601. data/app/packs/src/decidim/editor/utilities/file.js +3 -0
  602. data/app/packs/src/decidim/editor/utilities/html.js +53 -0
  603. data/app/packs/src/decidim/editor/utilities/paste_transform.js +251 -0
  604. data/app/packs/src/decidim/external_domain_warning.js +16 -23
  605. data/app/packs/src/decidim/external_domain_warning.test.js +59 -0
  606. data/app/packs/src/decidim/external_link.js +24 -56
  607. data/app/packs/src/decidim/external_link.test.js +8 -29
  608. data/app/packs/src/decidim/focus_guard.js +3 -1
  609. data/app/packs/src/decidim/form_filter.component_for_testing.js +1 -1
  610. data/app/packs/src/decidim/form_filter.js +12 -53
  611. data/app/packs/src/decidim/form_validator.js +1 -1
  612. data/app/packs/src/decidim/i18n.js +52 -0
  613. data/app/packs/src/decidim/i18n.test.js +64 -0
  614. data/app/packs/src/decidim/icon.js +13 -19
  615. data/app/packs/src/decidim/identity_selector_dialog.js +24 -51
  616. data/app/packs/src/decidim/index.js +159 -63
  617. data/app/packs/src/decidim/input_autojump.js +1 -1
  618. data/app/packs/src/decidim/input_character_counter.js +34 -38
  619. data/app/packs/src/decidim/input_emoji.js +130 -52
  620. data/app/packs/src/decidim/input_hashtags.js +7 -54
  621. data/app/packs/src/decidim/input_mentions.js +15 -60
  622. data/app/packs/src/decidim/input_multiple_mentions.js +11 -11
  623. data/app/packs/src/decidim/input_tags.js +12 -8
  624. data/app/packs/src/decidim/map/controller/markers.js +3 -3
  625. data/app/packs/src/decidim/map/controller.js +7 -4
  626. data/app/packs/src/decidim/map/factory.js +1 -3
  627. data/app/packs/src/decidim/map/legacy.js +1 -1
  628. data/app/packs/src/decidim/notifications.js +42 -30
  629. data/app/packs/src/decidim/password_toggler.js +104 -0
  630. data/app/packs/src/decidim/remote_modal.js +54 -0
  631. data/app/packs/src/decidim/scroll_to_last_child.js +14 -0
  632. data/app/packs/src/decidim/session_timeouter.js +3 -4
  633. data/app/packs/src/decidim/sw/loader.js +1 -1
  634. data/app/packs/src/decidim/sw/sw.js +1 -1
  635. data/app/packs/src/decidim/toggle.js +37 -0
  636. data/app/packs/src/decidim/tooltips.js +132 -0
  637. data/app/packs/src/decidim/user_registrations.js +10 -3
  638. data/app/packs/src/decidim/vendor/jquery-tmpl.js +1 -1
  639. data/app/packs/src/decidim/vendor/leaflet-tilelayer-here.js +1 -1
  640. data/app/packs/src/decidim/vendor/tribute.js +3 -3
  641. data/app/packs/src/decidim/vizzs/areachart.js +7 -8
  642. data/app/packs/src/decidim/vizzs/index.js +1 -1
  643. data/app/packs/stylesheets/decidim/_accordion.scss +13 -0
  644. data/app/packs/stylesheets/decidim/_actions.scss +7 -0
  645. data/app/packs/stylesheets/decidim/_activity.scss +49 -0
  646. data/app/packs/stylesheets/decidim/_address.scss +25 -0
  647. data/app/packs/stylesheets/decidim/_author.scss +74 -0
  648. data/app/packs/stylesheets/decidim/_buttons.scss +100 -0
  649. data/app/packs/stylesheets/decidim/_callout.scss +55 -0
  650. data/app/packs/stylesheets/decidim/_cards.scss +186 -0
  651. data/app/packs/stylesheets/decidim/_content_blocks.scss +39 -0
  652. data/app/packs/stylesheets/decidim/_conversations.scss +122 -0
  653. data/app/packs/stylesheets/decidim/_cookies.scss +117 -0
  654. data/app/packs/stylesheets/decidim/_documents.scss +60 -0
  655. data/app/packs/stylesheets/decidim/_dropdown.scss +69 -0
  656. data/app/packs/stylesheets/decidim/_endorsers_list.scss +45 -0
  657. data/app/packs/stylesheets/decidim/_filters.scss +137 -0
  658. data/app/packs/stylesheets/decidim/_flash.scss +57 -0
  659. data/app/packs/stylesheets/decidim/_floating_help.scss +7 -0
  660. data/app/packs/stylesheets/decidim/_fonts.scss +70 -0
  661. data/app/packs/stylesheets/decidim/_footer.scss +59 -0
  662. data/app/packs/stylesheets/decidim/_forms.scss +199 -0
  663. data/app/packs/stylesheets/decidim/_header.scss +444 -0
  664. data/app/packs/stylesheets/decidim/_hero.scss +20 -0
  665. data/app/packs/stylesheets/decidim/_home.scss +105 -0
  666. data/app/packs/stylesheets/decidim/_labels.scss +26 -0
  667. data/app/packs/stylesheets/decidim/_layout.scss +107 -0
  668. data/app/packs/stylesheets/decidim/_login.scss +59 -0
  669. data/app/packs/stylesheets/decidim/_login_box.scss +31 -0
  670. data/app/packs/stylesheets/decidim/_metadata.scss +18 -0
  671. data/app/packs/stylesheets/decidim/_metrics.scss +70 -0
  672. data/app/packs/stylesheets/decidim/_modal.scss +45 -0
  673. data/app/packs/stylesheets/decidim/_modal_authorization.scss +21 -0
  674. data/app/packs/stylesheets/decidim/_modal_fingerprint.scss +17 -0
  675. data/app/packs/stylesheets/decidim/_modal_flag.scss +39 -0
  676. data/app/packs/stylesheets/decidim/_modal_identities.scss +23 -0
  677. data/app/packs/stylesheets/decidim/_modal_share.scss +28 -0
  678. data/app/packs/stylesheets/decidim/_modal_tos_refuse.scss +6 -0
  679. data/app/packs/stylesheets/decidim/_modal_update.scss +137 -0
  680. data/app/packs/stylesheets/decidim/_notifications.scss +35 -0
  681. data/app/packs/stylesheets/decidim/_omnipresent_banner.scss +7 -0
  682. data/app/packs/stylesheets/decidim/_order-by.scss +15 -0
  683. data/app/packs/stylesheets/decidim/_pages.scss +49 -0
  684. data/app/packs/stylesheets/decidim/_participatory_spaces.scss +201 -0
  685. data/app/packs/stylesheets/decidim/_photos.scss +53 -0
  686. data/app/packs/stylesheets/decidim/_profile.scss +258 -0
  687. data/app/packs/stylesheets/decidim/_progress-bar.scss +42 -0
  688. data/app/packs/stylesheets/decidim/_rich_text.scss +96 -0
  689. data/app/packs/stylesheets/decidim/_search.scss +17 -0
  690. data/app/packs/stylesheets/decidim/_spinner.scss +11 -0
  691. data/app/packs/stylesheets/decidim/_static-map.scss +15 -0
  692. data/app/packs/stylesheets/decidim/_statistics.scss +15 -0
  693. data/app/packs/stylesheets/decidim/_tabs_x.scss +20 -0
  694. data/app/packs/stylesheets/decidim/_tags.scss +11 -0
  695. data/app/packs/stylesheets/decidim/_toggle_switch.scss +77 -0
  696. data/app/packs/stylesheets/decidim/_tooltip.scss +69 -0
  697. data/app/packs/stylesheets/decidim/_tos.scss +7 -0
  698. data/app/packs/stylesheets/decidim/_typography.scss +80 -0
  699. data/app/packs/stylesheets/decidim/_versions.scss +63 -0
  700. data/app/packs/stylesheets/decidim/_vertical_tabs.scss +49 -0
  701. data/app/packs/stylesheets/decidim/_wizard_steps.scss +15 -0
  702. data/app/packs/stylesheets/decidim/application.scss +77 -3
  703. data/app/packs/stylesheets/decidim/decidim_application.scss +0 -2
  704. data/app/packs/stylesheets/decidim/editor.scss +204 -0
  705. data/app/packs/stylesheets/decidim/legacy/MarkerCluster.Default.scss +67 -0
  706. data/app/packs/stylesheets/decidim/legacy/MarkerCluster.scss +18 -0
  707. data/app/packs/stylesheets/decidim/{_variables.scss → legacy/_variables.scss} +7 -7
  708. data/app/packs/stylesheets/decidim/{conference-diploma.scss → legacy/conference-diploma.scss} +11 -11
  709. data/app/packs/stylesheets/decidim/{email.scss → legacy/email.scss} +312 -312
  710. data/app/packs/stylesheets/decidim/{plugins → legacy}/leaflet.scss +222 -202
  711. data/app/packs/stylesheets/decidim/map.scss +65 -3
  712. data/app/permissions/decidim/permissions.rb +2 -2
  713. data/app/presenters/decidim/admin_log/area_presenter.rb +2 -2
  714. data/app/presenters/decidim/admin_log/area_type_presenter.rb +2 -2
  715. data/app/presenters/decidim/admin_log/attachment_collection_presenter.rb +2 -2
  716. data/app/presenters/decidim/admin_log/attachment_presenter.rb +2 -2
  717. data/app/presenters/decidim/admin_log/category_presenter.rb +2 -2
  718. data/app/presenters/decidim/admin_log/component_presenter.rb +2 -2
  719. data/app/presenters/decidim/admin_log/contextual_help_section_presenter.rb +2 -2
  720. data/app/presenters/decidim/admin_log/impersonation_log_presenter.rb +2 -2
  721. data/app/presenters/decidim/admin_log/moderation_presenter.rb +2 -2
  722. data/app/presenters/decidim/admin_log/newsletter_presenter.rb +2 -2
  723. data/app/presenters/decidim/admin_log/oauth_application_presenter.rb +2 -2
  724. data/app/presenters/decidim/admin_log/oauth_application_resource_presenter.rb +1 -1
  725. data/app/presenters/decidim/admin_log/organization_presenter.rb +3 -4
  726. data/app/presenters/decidim/admin_log/participatory_space_private_user_presenter.rb +2 -2
  727. data/app/presenters/decidim/admin_log/scope_presenter.rb +2 -2
  728. data/app/presenters/decidim/admin_log/scope_type_presenter.rb +2 -2
  729. data/app/presenters/decidim/admin_log/static_page_presenter.rb +2 -2
  730. data/app/presenters/decidim/admin_log/user_group_presenter.rb +2 -2
  731. data/app/presenters/decidim/admin_log/user_moderation_presenter.rb +2 -2
  732. data/app/presenters/decidim/admin_log/user_presenter.rb +2 -2
  733. data/app/presenters/decidim/area_presenter.rb +6 -0
  734. data/app/presenters/decidim/authorization_transfer_presenter.rb +57 -0
  735. data/app/presenters/decidim/breadcrumb_root_menu_item_presenter.rb +25 -0
  736. data/app/presenters/decidim/breadcrumb_root_menu_presenter.rb +18 -0
  737. data/app/presenters/decidim/footer_menu_presenter.rb +12 -0
  738. data/app/presenters/decidim/hashtag_presenter.rb +1 -1
  739. data/app/presenters/decidim/log/base_presenter.rb +13 -6
  740. data/app/presenters/decidim/log/diff_presenter.rb +9 -8
  741. data/app/presenters/decidim/log/resource_presenter.rb +2 -8
  742. data/app/presenters/decidim/log/space_presenter.rb +1 -1
  743. data/app/presenters/decidim/log/user_presenter.rb +3 -7
  744. data/app/presenters/decidim/log/value_types/default_presenter.rb +2 -2
  745. data/app/presenters/decidim/menu_item_presenter.rb +11 -3
  746. data/app/presenters/decidim/menu_presenter.rb +11 -3
  747. data/app/presenters/decidim/metric_charts_presenter.rb +25 -46
  748. data/app/presenters/decidim/nil_presenter.rb +4 -2
  749. data/app/presenters/decidim/notification_presenter.rb +1 -1
  750. data/app/presenters/decidim/notification_to_mailer_presenter.rb +5 -14
  751. data/app/presenters/decidim/notifications_digest_presenter.rb +1 -1
  752. data/app/presenters/decidim/official_author_presenter.rb +4 -0
  753. data/app/presenters/decidim/participatory_space_manifest_presenter.rb +24 -0
  754. data/app/presenters/decidim/resource_presenter.rb +18 -1
  755. data/app/presenters/decidim/stats_presenter.rb +54 -0
  756. data/app/presenters/decidim/user_group_presenter.rb +4 -0
  757. data/app/presenters/decidim/user_presenter.rb +4 -2
  758. data/app/queries/decidim/last_activity.rb +1 -1
  759. data/app/queries/decidim/metric_manage.rb +1 -1
  760. data/app/queries/decidim/participatory_processes_with_user_role.rb +2 -2
  761. data/app/queries/decidim/participatory_space_last_activity.rb +18 -0
  762. data/app/queries/decidim/public_activities.rb +1 -1
  763. data/app/queries/decidim/public_components.rb +2 -2
  764. data/app/queries/decidim/similar_emendations.rb +1 -1
  765. data/app/resolvers/decidim/core/metric_resolver.rb +1 -1
  766. data/app/scrubbers/decidim/admin_input_scrubber.rb +1 -1
  767. data/app/scrubbers/decidim/newsletter_scrubber.rb +1 -1
  768. data/app/serializers/decidim/exporters/serializer.rb +2 -2
  769. data/app/services/decidim/action_authorizer.rb +3 -3
  770. data/app/services/decidim/action_logger.rb +11 -11
  771. data/app/services/decidim/base_diff_renderer.rb +5 -5
  772. data/app/services/decidim/content_blocks_creator.rb +89 -0
  773. data/app/services/decidim/email_notification_generator.rb +3 -3
  774. data/app/services/decidim/engine_resolver.rb +2 -2
  775. data/app/services/decidim/events_manager.rb +6 -12
  776. data/app/services/decidim/log/diff_changeset_calculator.rb +3 -3
  777. data/app/services/decidim/log_reference_generator.rb +31 -0
  778. data/app/services/decidim/notification_generator.rb +3 -3
  779. data/app/services/decidim/notification_generator_for_recipient.rb +2 -2
  780. data/app/services/decidim/open_data_exporter.rb +3 -3
  781. data/app/services/decidim/send_push_notification.rb +13 -27
  782. data/app/services/decidim/static_map_generator.rb +4 -4
  783. data/app/uploaders/decidim/application_uploader.rb +1 -1
  784. data/app/uploaders/decidim/avatar_uploader.rb +2 -2
  785. data/app/uploaders/decidim/cw/application_uploader.rb +1 -1
  786. data/app/uploaders/decidim/image_uploader.rb +1 -1
  787. data/app/uploaders/decidim/organization_favicon_uploader.rb +15 -2
  788. data/app/validators/etiquette_validator.rb +1 -1
  789. data/app/validators/geocoding_validator.rb +1 -1
  790. data/app/validators/password_validator.rb +16 -12
  791. data/app/validators/uploader_image_dimensions_validator.rb +3 -3
  792. data/app/views/decidim/account/_account_notification.js.erb +4 -18
  793. data/app/views/decidim/account/_delete_modal.html.erb +17 -0
  794. data/app/views/decidim/account/_old_password_field.html.erb +15 -0
  795. data/app/views/decidim/account/_password_fields.html.erb +13 -2
  796. data/app/views/decidim/account/cancel_email_change.js.erb +1 -1
  797. data/app/views/decidim/account/delete.html.erb +23 -30
  798. data/app/views/decidim/account/show.html.erb +48 -33
  799. data/app/views/decidim/amendments/_edit_form_fields.html.erb +1 -3
  800. data/app/views/decidim/amendments/_wizard_header.html.erb +17 -0
  801. data/app/views/decidim/amendments/compare_draft.html.erb +14 -17
  802. data/app/views/decidim/amendments/edit_draft.html.erb +23 -25
  803. data/app/views/decidim/amendments/new.html.erb +21 -24
  804. data/app/views/decidim/amendments/preview_draft.html.erb +24 -25
  805. data/app/views/decidim/amendments/review.html.erb +26 -37
  806. data/app/views/decidim/application/_collection.html.erb +18 -15
  807. data/app/views/decidim/application/_document.html.erb +23 -0
  808. data/app/views/decidim/application/_documents.html.erb +13 -0
  809. data/app/views/decidim/authorization_modals/show.html.erb +1 -5
  810. data/app/views/decidim/devise/confirmations/new.html.erb +19 -25
  811. data/app/views/decidim/devise/invitations/edit.html.erb +42 -69
  812. data/app/views/decidim/devise/omniauth_registrations/new.html.erb +34 -45
  813. data/app/views/decidim/devise/passwords/edit.html.erb +23 -32
  814. data/app/views/decidim/devise/passwords/new.html.erb +20 -24
  815. data/app/views/decidim/devise/registrations/new.html.erb +59 -83
  816. data/app/views/decidim/devise/sessions/new.html.erb +52 -53
  817. data/app/views/decidim/devise/shared/_links.html.erb +5 -15
  818. data/app/views/decidim/devise/shared/_login_boxes.html.erb +28 -0
  819. data/app/views/decidim/devise/shared/_newsletter_modal.html.erb +15 -23
  820. data/app/views/decidim/devise/shared/_omniauth_buttons.html.erb +13 -19
  821. data/app/views/decidim/devise/unlocks/new.html.erb +20 -26
  822. data/app/views/decidim/doorkeeper/authorizations/new.html.erb +53 -57
  823. data/app/views/decidim/download_your_data/show.html.erb +15 -7
  824. data/app/views/decidim/endorsements/_identity.html.erb +4 -9
  825. data/app/views/decidim/endorsements/identities.html.erb +16 -10
  826. data/app/views/decidim/endorsements/update_buttons_and_counters.js.erb +24 -17
  827. data/app/views/decidim/errors/internal_server_error.html.erb +32 -8
  828. data/app/views/decidim/errors/not_found.html.erb +15 -11
  829. data/app/views/decidim/follows/update_button.js.erb +8 -1
  830. data/app/views/decidim/gamification/badges/index.html.erb +5 -7
  831. data/app/views/decidim/group_invites/index.html.erb +20 -24
  832. data/app/views/decidim/groups/_form.html.erb +15 -24
  833. data/app/views/decidim/groups/edit.html.erb +13 -22
  834. data/app/views/decidim/groups/new.html.erb +16 -24
  835. data/app/views/decidim/homepage/show.html.erb +6 -4
  836. data/app/views/decidim/last_activities/_activities.html.erb +4 -11
  837. data/app/views/decidim/last_activities/index.html.erb +8 -13
  838. data/app/views/decidim/last_activities/index.js.erb +7 -2
  839. data/app/views/decidim/links/_modal.html.erb +18 -19
  840. data/app/views/decidim/links/new.html.erb +16 -22
  841. data/app/views/decidim/links/new.js.erb +22 -6
  842. data/app/views/decidim/manifests/show.json.erb +2 -2
  843. data/app/views/decidim/messaging/conversations/_add_conversation_users.html.erb +18 -22
  844. data/app/views/decidim/messaging/conversations/_conversation.html.erb +39 -53
  845. data/app/views/decidim/messaging/conversations/_messages.html.erb +15 -19
  846. data/app/views/decidim/messaging/conversations/_new_conversation_button.html.erb +20 -32
  847. data/app/views/decidim/messaging/conversations/_reply.html.erb +7 -10
  848. data/app/views/decidim/messaging/conversations/_reply_form.html.erb +9 -0
  849. data/app/views/decidim/messaging/conversations/_show.html.erb +29 -35
  850. data/app/views/decidim/messaging/conversations/_start.html.erb +9 -14
  851. data/app/views/decidim/messaging/conversations/create.js.erb +1 -1
  852. data/app/views/decidim/messaging/conversations/error.js.erb +1 -1
  853. data/app/views/decidim/messaging/conversations/index.html.erb +17 -51
  854. data/app/views/decidim/messaging/conversations/new.html.erb +1 -2
  855. data/app/views/decidim/messaging/conversations/show.html.erb +3 -9
  856. data/app/views/decidim/newsletters/show.html.erb +1 -1
  857. data/app/views/decidim/newsletters_opt_in_mailer/notify.html.erb +1 -1
  858. data/app/views/decidim/notifications/index.html.erb +15 -4
  859. data/app/views/decidim/notifications_digest_mailer/_email_content.html.erb +0 -7
  860. data/app/views/decidim/notifications_digest_mailer/digest_mail.erb +2 -2
  861. data/app/views/decidim/notifications_settings/show.html.erb +169 -70
  862. data/app/views/decidim/own_user_groups/index.html.erb +9 -29
  863. data/app/views/decidim/pages/_standalone.html.erb +17 -15
  864. data/app/views/decidim/pages/_tabbed.html.erb +38 -38
  865. data/app/views/decidim/pages/index.html.erb +48 -64
  866. data/app/views/decidim/pages/show.html.erb +9 -9
  867. data/app/views/decidim/profiles/show.html.erb +9 -1
  868. data/app/views/decidim/reported_mailer/report.html.erb +1 -1
  869. data/app/views/decidim/scopes/_scopes_picker_input.html.erb +1 -1
  870. data/app/views/decidim/scopes/picker.html.erb +7 -4
  871. data/app/views/decidim/searches/_count.html.erb +19 -28
  872. data/app/views/decidim/searches/_filters.html.erb +41 -27
  873. data/app/views/decidim/searches/_resources_filter_block.html.erb +3 -3
  874. data/app/views/decidim/searches/index.html.erb +18 -12
  875. data/app/views/decidim/searches/index.js.erb +1 -7
  876. data/app/views/decidim/shared/_authorization_modal.html.erb +1 -1
  877. data/app/views/decidim/shared/_component_announcement.html.erb +5 -4
  878. data/app/views/decidim/shared/_confirm_modal.html.erb +15 -16
  879. data/app/views/decidim/shared/_extended_navigation_bar.html.erb +2 -2
  880. data/app/views/decidim/shared/_filters.html.erb +42 -0
  881. data/app/views/decidim/shared/_floating_help.html.erb +13 -27
  882. data/app/views/decidim/shared/_follow_button.html.erb +2 -1
  883. data/app/views/decidim/shared/_login_modal.html.erb +46 -50
  884. data/app/views/decidim/shared/_orders.html.erb +12 -26
  885. data/app/views/decidim/shared/_results_per_page.html.erb +24 -26
  886. data/app/views/decidim/shared/_share_modal.html.erb +21 -44
  887. data/app/views/decidim/shared/_static_map.html.erb +4 -17
  888. data/app/views/decidim/shared/_tags.html.erb +1 -1
  889. data/app/views/decidim/shared/filters/_check_boxes_tree.html.erb +12 -0
  890. data/app/views/decidim/shared/filters/_collection.html.erb +18 -0
  891. data/app/views/decidim/shared/filters/_dropdown_label.html.erb +46 -0
  892. data/app/views/decidim/user_activities/index.html.erb +15 -7
  893. data/app/views/decidim/user_activities/index.js.erb +1 -3
  894. data/app/views/decidim/user_conversations/index.html.erb +3 -3
  895. data/app/views/decidim/user_conversations/show.html.erb +3 -3
  896. data/app/views/decidim/user_interests/_scopes.html.erb +21 -16
  897. data/app/views/decidim/user_interests/show.html.erb +20 -13
  898. data/app/views/decidim/user_update_mailer/notify.html.erb +9 -0
  899. data/app/views/kaminari/decidim/_gap.html.erb +1 -1
  900. data/app/views/kaminari/decidim/_next_page.html.erb +8 -7
  901. data/app/views/kaminari/decidim/_page.html.erb +2 -2
  902. data/app/views/kaminari/decidim/_paginator.html.erb +3 -3
  903. data/app/views/kaminari/decidim/_prev_page.html.erb +8 -7
  904. data/app/views/layouts/decidim/_admin_links.html.erb +11 -2
  905. data/app/views/layouts/decidim/_application.html.erb +6 -1
  906. data/app/views/layouts/decidim/_cors.html.erb +8 -4
  907. data/app/views/layouts/decidim/_data_consent_warning.html.erb +2 -2
  908. data/app/views/layouts/decidim/_decidim_javascript.html.erb +6 -3
  909. data/app/views/layouts/decidim/_head.html.erb +7 -3
  910. data/app/views/layouts/decidim/_impersonation_warning.html.erb +7 -5
  911. data/app/views/layouts/decidim/_js_configuration.html.erb +7 -8
  912. data/app/views/layouts/decidim/_meta_tags_config.html.erb +6 -6
  913. data/app/views/layouts/decidim/_offline_banner.html.erb +3 -3
  914. data/app/views/layouts/decidim/_omnipresent_banner.html.erb +10 -12
  915. data/app/views/layouts/decidim/_organization_colors.html.erb +2 -3
  916. data/app/views/layouts/decidim/_timeout_modal.html.erb +26 -18
  917. data/app/views/layouts/decidim/_user_menu.html.erb +1 -1
  918. data/app/views/layouts/decidim/_wrapper.html.erb +19 -102
  919. data/app/views/layouts/decidim/footer/_main.html.erb +20 -0
  920. data/app/views/layouts/decidim/footer/_main_intro.html.erb +9 -0
  921. data/app/views/layouts/decidim/footer/_main_language_chooser.html.erb +26 -0
  922. data/app/views/layouts/decidim/footer/_main_legal.html.erb +9 -0
  923. data/app/views/layouts/decidim/footer/_main_links.html.erb +27 -0
  924. data/app/views/layouts/decidim/footer/_main_social_media_links.html.erb +42 -0
  925. data/app/views/layouts/decidim/footer/_mini.html.erb +18 -0
  926. data/app/views/layouts/decidim/header/_follow_space_menu_bar_button.html.erb +7 -0
  927. data/app/views/layouts/decidim/header/_main.html.erb +35 -0
  928. data/app/views/layouts/decidim/header/_main_links_desktop.html.erb +54 -0
  929. data/app/views/layouts/decidim/header/_main_links_dropdown.html.erb +45 -0
  930. data/app/views/layouts/decidim/header/_main_links_mobile.html.erb +36 -0
  931. data/app/views/layouts/decidim/header/_main_links_mobile_account.html.erb +32 -0
  932. data/app/views/layouts/decidim/header/_main_links_mobile_search.html.erb +34 -0
  933. data/app/views/layouts/decidim/header/_main_search.html.erb +15 -0
  934. data/app/views/layouts/decidim/header/_menu.html.erb +20 -0
  935. data/app/views/layouts/decidim/header/_menu_breadcrumb_desktop.html.erb +14 -0
  936. data/app/views/layouts/decidim/header/_menu_breadcrumb_items.html.erb +30 -0
  937. data/app/views/layouts/decidim/header/_menu_breadcrumb_main_dropdown.html.erb +16 -0
  938. data/app/views/layouts/decidim/header/_menu_breadcrumb_main_dropdown_top_left.html.erb +2 -0
  939. data/app/views/layouts/decidim/header/_menu_breadcrumb_mobile_tablet.html.erb +33 -0
  940. data/app/views/layouts/decidim/mailer.html.erb +16 -12
  941. data/app/views/layouts/decidim/newsletter_base.html.erb +2 -2
  942. data/app/views/layouts/decidim/shared/_layout_center.html.erb +15 -0
  943. data/app/views/layouts/decidim/shared/_layout_item.html.erb +35 -0
  944. data/app/views/layouts/decidim/shared/_layout_two_col.html.erb +12 -0
  945. data/app/views/layouts/decidim/shared/_layout_user_profile.html.erb +27 -0
  946. data/app/views/layouts/decidim/shared/_linked_resource.html.erb +6 -0
  947. data/app/views/layouts/decidim/user_profile.html.erb +1 -32
  948. data/config/assets.rb +1 -0
  949. data/config/brakeman.ignore +4 -116
  950. data/config/initializers/devise.rb +10 -10
  951. data/config/locales/ar.yml +98 -333
  952. data/config/locales/bg.yml +2 -748
  953. data/config/locales/ca.yml +434 -288
  954. data/config/locales/cs.yml +417 -273
  955. data/config/locales/de.yml +431 -283
  956. data/config/locales/el.yml +108 -267
  957. data/config/locales/en.yml +440 -294
  958. data/config/locales/eo.yml +0 -18
  959. data/config/locales/es-MX.yml +416 -271
  960. data/config/locales/es-PY.yml +419 -274
  961. data/config/locales/es.yml +426 -280
  962. data/config/locales/eu.yml +425 -295
  963. data/config/locales/fi-plain.yml +388 -244
  964. data/config/locales/fi.yml +411 -267
  965. data/config/locales/fr-CA.yml +410 -259
  966. data/config/locales/fr.yml +414 -263
  967. data/config/locales/ga-IE.yml +1 -63
  968. data/config/locales/gl.yml +1 -241
  969. data/config/locales/hu.yml +137 -322
  970. data/config/locales/id-ID.yml +0 -222
  971. data/config/locales/is-IS.yml +0 -78
  972. data/config/locales/it.yml +5 -317
  973. data/config/locales/ja.yml +403 -270
  974. data/config/locales/kaa.yml +4 -5
  975. data/config/locales/lb.yml +5 -308
  976. data/config/locales/lt.yml +359 -263
  977. data/config/locales/lv.yml +2 -274
  978. data/config/locales/nl.yml +6 -312
  979. data/config/locales/no.yml +6 -322
  980. data/config/locales/pl.yml +1 -486
  981. data/config/locales/pt-BR.yml +45 -560
  982. data/config/locales/pt.yml +5 -308
  983. data/config/locales/ro-RO.yml +46 -307
  984. data/config/locales/ru.yml +0 -154
  985. data/config/locales/sk.yml +2 -245
  986. data/config/locales/sl.yml +1 -10
  987. data/config/locales/sr-CS.yml +0 -20
  988. data/config/locales/sv.yml +220 -400
  989. data/config/locales/tr-TR.yml +39 -301
  990. data/config/locales/uk.yml +0 -128
  991. data/config/locales/zh-CN.yml +5 -280
  992. data/config/locales/zh-TW.yml +165 -214
  993. data/config/routes.rb +6 -5
  994. data/db/migrate/20180508111640_add_tos_version_to_organization.rb +2 -2
  995. data/db/migrate/20180730071851_add_core_content_blocks.rb +1 -1
  996. data/db/migrate/20180810092428_move_organization_fields_to_hero_content_block.rb +1 -1
  997. data/db/migrate/20181001124950_move_users_groups_to_users_table.rb +1 -1
  998. data/db/migrate/20181022090732_add_columns_to_pages.rb +1 -1
  999. data/db/migrate/20190412131728_fix_user_names.rb +1 -1
  1000. data/db/migrate/20201128130723_add_allow_public_access_to_static_pages.rb +1 -1
  1001. data/db/migrate/20220629194812_create_decidim_authorization_transfers.rb +20 -0
  1002. data/db/migrate/20230322101707_rename_terms_of_use.rb +23 -0
  1003. data/db/migrate/20230409123300_add_content_policy_to_decidim_organizations.rb +7 -0
  1004. data/db/migrate/20230427105700_change_states_on_amendments.rb +34 -0
  1005. data/db/migrate/20230427105701_change_states_on_reminder_records.rb +33 -0
  1006. data/db/migrate/20231123111229_remove_official_img_header.rb +11 -0
  1007. data/db/seeds/Exampledocument.pdf +0 -0
  1008. data/db/seeds/city.jpeg +0 -0
  1009. data/db/seeds/city2.jpeg +0 -0
  1010. data/db/seeds/logo.png +0 -0
  1011. data/db/seeds.rb +2 -223
  1012. data/lib/decidim/acts_as_tree.rb +2 -15
  1013. data/lib/decidim/amendable.rb +2 -2
  1014. data/lib/decidim/api/functions/component_finder_base.rb +1 -1
  1015. data/lib/decidim/api/functions/component_list.rb +1 -1
  1016. data/lib/decidim/api/functions/component_list_base.rb +1 -1
  1017. data/lib/decidim/api/functions/needs_api_default_order.rb +1 -1
  1018. data/lib/decidim/api/functions/participatory_space_list_base.rb +10 -1
  1019. data/lib/decidim/api/input_filters/category_input_filter.rb +1 -1
  1020. data/lib/decidim/api/interfaces/categories_container_interface.rb +1 -1
  1021. data/lib/decidim/api/interfaces/participatory_space_interface.rb +7 -1
  1022. data/lib/decidim/api/types/attachment_type.rb +3 -1
  1023. data/lib/decidim/api/types/participatory_space_manifest_type.rb +19 -0
  1024. data/lib/decidim/api/types/quantifiable_translated_field_type.rb +12 -0
  1025. data/lib/decidim/api/types/translated_field_type.rb +1 -1
  1026. data/lib/decidim/asset_router/pipeline.rb +1 -1
  1027. data/lib/decidim/asset_router/storage.rb +20 -5
  1028. data/lib/decidim/assets/tailwind/instance.rb +57 -0
  1029. data/lib/decidim/assets/tailwind/tailwind.config.js.erb +80 -0
  1030. data/lib/decidim/assets/tailwind.rb +16 -0
  1031. data/lib/decidim/assets.rb +7 -0
  1032. data/lib/decidim/attribute_encryptor.rb +4 -6
  1033. data/lib/decidim/attribute_object/nested_validator.rb +1 -1
  1034. data/lib/decidim/attribute_object/type_resolver.rb +4 -4
  1035. data/lib/decidim/authorable.rb +2 -2
  1036. data/lib/decidim/block_registry.rb +46 -0
  1037. data/lib/decidim/carrier_wave_migrator_service.rb +28 -36
  1038. data/lib/decidim/coauthorable.rb +4 -4
  1039. data/lib/decidim/command.rb +23 -4
  1040. data/lib/decidim/component_manifest.rb +7 -4
  1041. data/lib/decidim/components/namer.rb +1 -1
  1042. data/lib/decidim/content_block_manifest.rb +2 -1
  1043. data/lib/decidim/content_block_registry.rb +5 -4
  1044. data/lib/decidim/content_blocks/has_related_components.rb +51 -0
  1045. data/lib/decidim/content_blocks.rb +7 -0
  1046. data/lib/decidim/content_parsers/base_parser.rb +2 -0
  1047. data/lib/decidim/content_parsers/hashtag_parser.rb +17 -17
  1048. data/lib/decidim/content_parsers/inline_images_parser.rb +3 -3
  1049. data/lib/decidim/content_parsers/resource_parser.rb +2 -2
  1050. data/lib/decidim/content_parsers/tag_parser.rb +63 -0
  1051. data/lib/decidim/content_parsers/user_group_parser.rb +4 -29
  1052. data/lib/decidim/content_parsers/user_parser.rb +29 -20
  1053. data/lib/decidim/content_parsers.rb +1 -0
  1054. data/lib/decidim/content_processor.rb +26 -1
  1055. data/lib/decidim/content_renderers/base_renderer.rb +2 -0
  1056. data/lib/decidim/content_renderers/hashtag_renderer.rb +6 -3
  1057. data/lib/decidim/content_renderers/link_renderer.rb +15 -5
  1058. data/lib/decidim/content_renderers/user_group_renderer.rb +8 -9
  1059. data/lib/decidim/content_renderers/user_renderer.rb +33 -5
  1060. data/lib/decidim/content_security_policy.rb +132 -0
  1061. data/lib/decidim/core/api.rb +2 -0
  1062. data/lib/decidim/core/content_blocks/registry_manager.rb +188 -0
  1063. data/lib/decidim/core/engine.rb +324 -206
  1064. data/lib/decidim/core/menu.rb +68 -0
  1065. data/lib/decidim/core/seeds.rb +247 -0
  1066. data/lib/decidim/core/test/factories.rb +144 -326
  1067. data/lib/decidim/core/test/shared_examples/active_support_examples.rb +14 -0
  1068. data/lib/decidim/core/test/shared_examples/admin_log_presenter_examples.rb +3 -3
  1069. data/lib/decidim/core/test/shared_examples/amendable/amendment_created_event_examples.rb +26 -6
  1070. data/lib/decidim/core/test/shared_examples/amendable/amendment_event_examples.rb +20 -0
  1071. data/lib/decidim/core/test/shared_examples/amendable/amendment_form_examples.rb +4 -4
  1072. data/lib/decidim/core/test/shared_examples/amendable/amendment_promoted_event_examples.rb +26 -8
  1073. data/lib/decidim/core/test/shared_examples/amendable/amendment_rejected_event_examples.rb +6 -25
  1074. data/lib/decidim/core/test/shared_examples/amendable/create_amendment_draft_examples.rb +1 -1
  1075. data/lib/decidim/core/test/shared_examples/announcements_examples.rb +3 -3
  1076. data/lib/decidim/core/test/shared_examples/assembly_announcements_examples.rb +8 -4
  1077. data/lib/decidim/core/test/shared_examples/authorable.rb +2 -2
  1078. data/lib/decidim/core/test/shared_examples/authorable_interface_examples.rb +3 -3
  1079. data/lib/decidim/core/test/shared_examples/authorization_shared_context.rb +34 -0
  1080. data/lib/decidim/core/test/shared_examples/categorizable_interface_examples.rb +1 -1
  1081. data/lib/decidim/core/test/shared_examples/coauthorable.rb +2 -2
  1082. data/lib/decidim/core/test/shared_examples/coauthorable_interface_examples.rb +3 -3
  1083. data/lib/decidim/core/test/shared_examples/comments_examples.rb +224 -183
  1084. data/lib/decidim/core/test/shared_examples/comments_reports_examples.rb +11 -21
  1085. data/lib/decidim/core/test/shared_examples/controller_render_views.rb +2 -2
  1086. data/lib/decidim/core/test/shared_examples/conversations_examples.rb +1 -1
  1087. data/lib/decidim/core/test/shared_examples/counts_commentators_as_newsletter_participants.rb +1 -1
  1088. data/lib/decidim/core/test/shared_examples/digest_mail_examples.rb +3 -3
  1089. data/lib/decidim/core/test/shared_examples/edit_link_shared_examples.rb +8 -8
  1090. data/lib/decidim/core/test/shared_examples/editor_shared_examples.rb +13 -2
  1091. data/lib/decidim/core/test/shared_examples/endorsable.rb +5 -5
  1092. data/lib/decidim/core/test/shared_examples/endorsements_controller_shared_context.rb +1 -1
  1093. data/lib/decidim/core/test/shared_examples/errors.rb +1 -1
  1094. data/lib/decidim/core/test/shared_examples/fingerprint_examples.rb +2 -2
  1095. data/lib/decidim/core/test/shared_examples/follows_examples.rb +10 -7
  1096. data/lib/decidim/core/test/shared_examples/form_builder_examples.rb +15 -0
  1097. data/lib/decidim/core/test/shared_examples/has_attachment_collections.rb +17 -25
  1098. data/lib/decidim/core/test/shared_examples/has_attachments.rb +62 -15
  1099. data/lib/decidim/core/test/shared_examples/has_category.rb +0 -27
  1100. data/lib/decidim/core/test/shared_examples/has_contextual_help.rb +11 -5
  1101. data/lib/decidim/core/test/shared_examples/has_private_users.rb +1 -1
  1102. data/lib/decidim/core/test/shared_examples/has_reference.rb +1 -1
  1103. data/lib/decidim/core/test/shared_examples/has_space_in_mcell_examples.rb +1 -1
  1104. data/lib/decidim/core/test/shared_examples/hideable_resource_examples.rb +43 -0
  1105. data/lib/decidim/core/test/shared_examples/localised_email.rb +2 -2
  1106. data/lib/decidim/core/test/shared_examples/map_examples.rb +21 -15
  1107. data/lib/decidim/core/test/shared_examples/paginated_resource_examples.rb +7 -7
  1108. data/lib/decidim/core/test/shared_examples/participatory_space_dropdown_metadata_cell_examples.rb +99 -0
  1109. data/lib/decidim/core/test/shared_examples/permissions.rb +8 -8
  1110. data/lib/decidim/core/test/shared_examples/preview_component_with_share_token_examples.rb +3 -3
  1111. data/lib/decidim/core/test/shared_examples/process_announcements_examples.rb +12 -6
  1112. data/lib/decidim/core/test/shared_examples/reportable.rb +4 -4
  1113. data/lib/decidim/core/test/shared_examples/reports_examples.rb +114 -31
  1114. data/lib/decidim/core/test/shared_examples/resource_endorsed_event_examples.rb +3 -6
  1115. data/lib/decidim/core/test/shared_examples/resource_search_examples.rb +17 -17
  1116. data/lib/decidim/core/test/shared_examples/scopable_interface_examples.rb +1 -1
  1117. data/lib/decidim/core/test/shared_examples/scopable_resource_examples.rb +2 -2
  1118. data/lib/decidim/core/test/shared_examples/scope_helper_examples.rb +6 -6
  1119. data/lib/decidim/core/test/shared_examples/searchable_participatory_space_examples.rb +9 -9
  1120. data/lib/decidim/core/test/shared_examples/searchable_resources_shared_context.rb +2 -2
  1121. data/lib/decidim/core/test/shared_examples/searchable_results_examples.rb +22 -21
  1122. data/lib/decidim/core/test/shared_examples/share_link_examples.rb +8 -15
  1123. data/lib/decidim/core/test/shared_examples/simple_event.rb +8 -27
  1124. data/lib/decidim/core/test/shared_examples/static_pages_examples.rb +3 -3
  1125. data/lib/decidim/core/test/shared_examples/statistics_cell_examples.rb +13 -0
  1126. data/lib/decidim/core/test/shared_examples/system_endorse_resource_examples.rb +24 -36
  1127. data/lib/decidim/core/test/shared_examples/translated_event_examples.rb +1 -1
  1128. data/lib/decidim/core/test/shared_examples/uncommentable_component_examples.rb +3 -3
  1129. data/lib/decidim/core/test/shared_examples/with_endorsable_permissions_examples.rb +1 -1
  1130. data/lib/decidim/core/test.rb +5 -5
  1131. data/lib/decidim/core/version.rb +1 -1
  1132. data/lib/decidim/core.rb +112 -29
  1133. data/lib/decidim/dependency_resolver.rb +4 -4
  1134. data/lib/decidim/download_your_data_serializers/download_your_data_conversation_serializer.rb +1 -1
  1135. data/lib/decidim/endorsable.rb +1 -1
  1136. data/lib/decidim/engine_router.rb +4 -17
  1137. data/lib/decidim/event_recorder.rb +1 -1
  1138. data/lib/decidim/events/base_event.rb +2 -9
  1139. data/lib/decidim/events/email_event.rb +4 -4
  1140. data/lib/decidim/events/machine_translated_event.rb +1 -1
  1141. data/lib/decidim/events/notification_event.rb +2 -2
  1142. data/lib/decidim/events/simple_event.rb +25 -11
  1143. data/lib/decidim/exporters/csv.rb +1 -1
  1144. data/lib/decidim/exporters/pdf.rb +5 -5
  1145. data/lib/decidim/faker/localized.rb +1 -1
  1146. data/lib/decidim/filter_form_builder.rb +43 -76
  1147. data/lib/decidim/fingerprintable.rb +1 -1
  1148. data/lib/decidim/form_builder.rb +128 -100
  1149. data/lib/decidim/gamification/badge.rb +4 -4
  1150. data/lib/decidim/gamification/badge_earned_event.rb +1 -1
  1151. data/lib/decidim/gamification/badge_registry.rb +3 -3
  1152. data/lib/decidim/gamification/badge_scorer.rb +6 -6
  1153. data/lib/decidim/gamification.rb +3 -3
  1154. data/lib/decidim/geocodable.rb +3 -3
  1155. data/lib/decidim/has_category.rb +1 -1
  1156. data/lib/decidim/has_reference.rb +1 -1
  1157. data/lib/decidim/icon_registry.rb +54 -0
  1158. data/lib/decidim/importers/import_manifest.rb +3 -3
  1159. data/lib/decidim/map/autocomplete.rb +1 -10
  1160. data/lib/decidim/map/dynamic_map.rb +6 -9
  1161. data/lib/decidim/map/frontend.rb +2 -12
  1162. data/lib/decidim/map/provider/autocomplete/here.rb +3 -3
  1163. data/lib/decidim/map/provider/autocomplete/osm.rb +3 -3
  1164. data/lib/decidim/map/provider/dynamic_map/here.rb +5 -4
  1165. data/lib/decidim/map/provider/static_map/here.rb +3 -3
  1166. data/lib/decidim/map/provider/static_map/osm.rb +3 -3
  1167. data/lib/decidim/map/static_map.rb +19 -16
  1168. data/lib/decidim/menu.rb +2 -0
  1169. data/lib/decidim/menu_registry.rb +2 -2
  1170. data/lib/decidim/metric_manifest.rb +1 -1
  1171. data/lib/decidim/metric_operation.rb +3 -3
  1172. data/lib/decidim/metric_registry.rb +3 -3
  1173. data/lib/decidim/middleware/current_organization.rb +1 -1
  1174. data/lib/decidim/middleware/static_dispatcher.rb +31 -0
  1175. data/lib/decidim/moderation_tools.rb +91 -0
  1176. data/lib/decidim/nicknamizable.rb +2 -2
  1177. data/lib/decidim/organization_settings.rb +7 -16
  1178. data/lib/decidim/paddable.rb +1 -1
  1179. data/lib/decidim/participable.rb +1 -18
  1180. data/lib/decidim/participatory_space_manifest.rb +15 -7
  1181. data/lib/decidim/participatory_space_resourceable.rb +2 -2
  1182. data/lib/decidim/participatory_space_user.rb +50 -0
  1183. data/lib/decidim/processes_file_locally.rb +1 -1
  1184. data/lib/decidim/publicable.rb +1 -3
  1185. data/lib/decidim/query.rb +2 -2
  1186. data/lib/decidim/query_extensions.rb +7 -7
  1187. data/lib/decidim/reminder_manifest.rb +3 -3
  1188. data/lib/decidim/reminder_registry.rb +2 -2
  1189. data/lib/decidim/reportable.rb +15 -1
  1190. data/lib/decidim/resource_manifest.rb +6 -3
  1191. data/lib/decidim/resourceable.rb +5 -5
  1192. data/lib/decidim/scopable.rb +1 -1
  1193. data/lib/decidim/searchable.rb +18 -5
  1194. data/lib/decidim/seeds.rb +95 -0
  1195. data/lib/decidim/settings_manifest.rb +9 -2
  1196. data/lib/decidim/social_share_service_manifest.rb +77 -0
  1197. data/lib/decidim/stats_registry.rb +2 -2
  1198. data/lib/decidim/translatable_attributes.rb +2 -2
  1199. data/lib/decidim/translatable_resource.rb +3 -3
  1200. data/lib/decidim/upgrade/wysiwyg_migrator.rb +429 -0
  1201. data/lib/decidim/upgrade.rb +7 -0
  1202. data/lib/decidim/user_reportable.rb +1 -1
  1203. data/lib/decidim/view_hooks.rb +2 -2
  1204. data/lib/decidim/view_model.rb +28 -4
  1205. data/lib/decidim/webpacker/configuration.rb +4 -3
  1206. data/lib/decidim/webpacker/postcss.config.js +4 -2
  1207. data/lib/decidim/webpacker/runner.rb +6 -1
  1208. data/lib/decidim/webpacker/{webpacker.yml → shakapacker.yml} +26 -2
  1209. data/lib/decidim/webpacker/webpack/custom.js +25 -9
  1210. data/lib/decidim/webpacker/webpack/webpack.config.js +10 -0
  1211. data/lib/decidim/webpacker.rb +1 -1
  1212. data/lib/devise/models/decidim_validatable.rb +4 -5
  1213. data/lib/gem_overrides/{webpacker → shakapacker}/runner.rb +2 -2
  1214. data/lib/premailer/adapter/decidim.rb +4 -5
  1215. data/lib/tasks/decidim_active_storage_migration_tasks.rake +18 -13
  1216. data/lib/tasks/decidim_content_blocks_tasks.rake +48 -0
  1217. data/lib/tasks/decidim_mailers_tasks.rake +1 -1
  1218. data/lib/tasks/decidim_procfile.rake +36 -0
  1219. data/lib/tasks/decidim_pwa_tasks.rake +2 -2
  1220. data/lib/tasks/decidim_reminders_tasks.rake +0 -1
  1221. data/lib/tasks/decidim_robots.rake +15 -0
  1222. data/lib/tasks/decidim_tasks.rake +9 -1
  1223. data/lib/tasks/decidim_webpacker_tasks.rake +49 -11
  1224. data/lib/tasks/upgrade/decidim_migrate_wysiwyg_content.rake +89 -0
  1225. metadata +520 -385
  1226. data/app/cells/decidim/address/details.erb +0 -7
  1227. data/app/cells/decidim/amendable/amenders_list_cell.rb +0 -33
  1228. data/app/cells/decidim/author/profile.erb +0 -9
  1229. data/app/cells/decidim/author/profile_inline.erb +0 -39
  1230. data/app/cells/decidim/card_m/badge.erb +0 -1
  1231. data/app/cells/decidim/card_m/comments_counter.erb +0 -3
  1232. data/app/cells/decidim/card_m/header.erb +0 -17
  1233. data/app/cells/decidim/card_m/image.erb +0 -5
  1234. data/app/cells/decidim/card_m/label.erb +0 -3
  1235. data/app/cells/decidim/card_m/show.erb +0 -23
  1236. data/app/cells/decidim/card_m/status.erb +0 -9
  1237. data/app/cells/decidim/card_m/tags.erb +0 -0
  1238. data/app/cells/decidim/card_m/top.erb +0 -7
  1239. data/app/cells/decidim/card_m_cell.rb +0 -156
  1240. data/app/cells/decidim/collapsible_list/show.erb +0 -28
  1241. data/app/cells/decidim/collapsible_list_cell.rb +0 -69
  1242. data/app/cells/decidim/content_blocks/highlighted_elements/elements.erb +0 -0
  1243. data/app/cells/decidim/content_blocks/highlighted_elements/heading.erb +0 -0
  1244. data/app/cells/decidim/content_blocks/highlighted_elements/show.erb +0 -4
  1245. data/app/cells/decidim/content_blocks/metrics/show.erb +0 -13
  1246. data/app/cells/decidim/content_blocks/metrics_cell.rb +0 -11
  1247. data/app/cells/decidim/fingerprint/show.erb +0 -22
  1248. data/app/cells/decidim/fingerprint_cell.rb +0 -19
  1249. data/app/cells/decidim/notification/moderated.erb +0 -24
  1250. data/app/cells/decidim/profile/user_group_tabs.erb +0 -10
  1251. data/app/cells/decidim/profile/user_tabs.erb +0 -16
  1252. data/app/cells/decidim/statistic/homepage.erb +0 -9
  1253. data/app/cells/decidim/tags/category.erb +0 -1
  1254. data/app/cells/decidim/tags/scope.erb +0 -1
  1255. data/app/cells/decidim/user_conversations/add_conversation_users.erb +0 -26
  1256. data/app/cells/decidim/user_conversations/conversation_item.erb +0 -38
  1257. data/app/cells/decidim/user_group_admin_membership_profile/footer.erb +0 -29
  1258. data/app/cells/decidim/user_group_admin_membership_profile_cell.rb +0 -14
  1259. data/app/cells/decidim/user_group_membership_profile/tags.erb +0 -1
  1260. data/app/cells/decidim/user_group_membership_profile_cell.rb +0 -8
  1261. data/app/cells/decidim/user_profile/footer.erb +0 -5
  1262. data/app/cells/decidim/user_profile/header.erb +0 -5
  1263. data/app/cells/decidim/user_profile/unlinked_user_data.erb +0 -16
  1264. data/app/cells/decidim/user_profile/user_data.erb +0 -16
  1265. data/app/cells/decidim/version_author/show.erb +0 -18
  1266. data/app/controllers/concerns/decidim/devise_authentication_methods.rb +0 -36
  1267. data/app/controllers/concerns/decidim/http_caching_disabler.rb +0 -21
  1268. data/app/controllers/decidim/group_admins_controller.rb +0 -44
  1269. data/app/controllers/decidim/user_timeline_controller.rb +0 -56
  1270. data/app/controllers/decidim/widgets_controller.rb +0 -40
  1271. data/app/helpers/decidim/widget_urls_helper.rb +0 -13
  1272. data/app/jobs/decidim/block_user_job.rb +0 -11
  1273. data/app/models/decidim/push_notification_message.rb +0 -39
  1274. data/app/packs/entrypoints/decidim_email.scss +0 -1
  1275. data/app/packs/fonts/decidim/Roboto-Regular.eot +0 -0
  1276. data/app/packs/fonts/decidim/Roboto-Regular.svg +0 -1
  1277. data/app/packs/fonts/decidim/Roboto-Regular.ttf +0 -0
  1278. data/app/packs/fonts/decidim/Roboto-Regular.woff +0 -0
  1279. data/app/packs/fonts/decidim/Roboto-Regular.woff2 +0 -0
  1280. data/app/packs/fonts/decidim/Source_Sans_Pro_400.eot +0 -0
  1281. data/app/packs/fonts/decidim/Source_Sans_Pro_400.svg +0 -1
  1282. data/app/packs/fonts/decidim/Source_Sans_Pro_400.ttf +0 -0
  1283. data/app/packs/fonts/decidim/Source_Sans_Pro_400.woff +0 -0
  1284. data/app/packs/fonts/decidim/Source_Sans_Pro_400.woff2 +0 -0
  1285. data/app/packs/fonts/decidim/Source_Sans_Pro_600.eot +0 -0
  1286. data/app/packs/fonts/decidim/Source_Sans_Pro_600.svg +0 -1
  1287. data/app/packs/fonts/decidim/Source_Sans_Pro_600.ttf +0 -0
  1288. data/app/packs/fonts/decidim/Source_Sans_Pro_600.woff +0 -0
  1289. data/app/packs/fonts/decidim/Source_Sans_Pro_600.woff2 +0 -0
  1290. data/app/packs/fonts/decidim/Source_Sans_Pro_900.eot +0 -0
  1291. data/app/packs/fonts/decidim/Source_Sans_Pro_900.svg +0 -1
  1292. data/app/packs/fonts/decidim/Source_Sans_Pro_900.ttf +0 -0
  1293. data/app/packs/fonts/decidim/Source_Sans_Pro_900.woff +0 -0
  1294. data/app/packs/fonts/decidim/Source_Sans_Pro_900.woff2 +0 -0
  1295. data/app/packs/images/decidim/.keep +0 -0
  1296. data/app/packs/images/decidim/vendor/social-share-button/delicious.svg +0 -13
  1297. data/app/packs/images/decidim/vendor/social-share-button/google_plus.svg +0 -10
  1298. data/app/packs/images/decidim/vendor/social-share-button/qq.svg +0 -8
  1299. data/app/packs/images/decidim/vendor/social-share-button/weibo.svg +0 -10
  1300. data/app/packs/src/decidim/ajax_modals.js +0 -20
  1301. data/app/packs/src/decidim/conferences.js +0 -15
  1302. data/app/packs/src/decidim/conversations.js +0 -17
  1303. data/app/packs/src/decidim/data_picker.js +0 -273
  1304. data/app/packs/src/decidim/dialog_mode.js +0 -55
  1305. data/app/packs/src/decidim/dialog_mode.test.js +0 -181
  1306. data/app/packs/src/decidim/diff_mode_dropdown.js +0 -49
  1307. data/app/packs/src/decidim/dropdowns_menus.js +0 -30
  1308. data/app/packs/src/decidim/editor/attribute_diff.js +0 -28
  1309. data/app/packs/src/decidim/editor/clipboard_override.js +0 -147
  1310. data/app/packs/src/decidim/editor/clipboard_utilities.js +0 -119
  1311. data/app/packs/src/decidim/editor/history_override.js +0 -110
  1312. data/app/packs/src/decidim/editor/linebreak_module.js +0 -175
  1313. data/app/packs/src/decidim/editor/modified_backspace_offset1.js +0 -96
  1314. data/app/packs/src/decidim/editor/modified_backspace_offset_any.js +0 -46
  1315. data/app/packs/src/decidim/editor/modified_enter.js +0 -116
  1316. data/app/packs/src/decidim/editor.js +0 -151
  1317. data/app/packs/src/decidim/floating_help.js +0 -47
  1318. data/app/packs/src/decidim/form_datepicker.js +0 -21
  1319. data/app/packs/src/decidim/form_filter.component.test.js +0 -299
  1320. data/app/packs/src/decidim/foundation-datepicker/js/locales/foundation-datepicker.lb.js +0 -13
  1321. data/app/packs/src/decidim/foundation_datepicker_locales.js +0 -67
  1322. data/app/packs/src/decidim/map/icon.js +0 -31
  1323. data/app/packs/src/decidim/map/svg-icon.js +0 -248
  1324. data/app/packs/src/decidim/represent_user_group.js +0 -18
  1325. data/app/packs/src/decidim/start_conversation_dialog.js +0 -13
  1326. data/app/packs/src/decidim/tooltip_keep_on_hover.js +0 -18
  1327. data/app/packs/src/decidim/vendor/foundation-datepicker.js +0 -1431
  1328. data/app/packs/src/decidim/vendor/image-resize.min.js +0 -3
  1329. data/app/packs/src/decidim/vendor/image-upload.min.js +0 -8
  1330. data/app/packs/src/decidim/vendor/social-share-button.js +0 -174
  1331. data/app/packs/src/decidim/vizzs/linechart.js +0 -268
  1332. data/app/packs/src/decidim/vizzs/rowchart.js +0 -328
  1333. data/app/packs/stylesheets/decidim/_decidim-settings.scss +0 -7
  1334. data/app/packs/stylesheets/decidim/_decidim.scss +0 -19
  1335. data/app/packs/stylesheets/decidim/_editor.scss +0 -142
  1336. data/app/packs/stylesheets/decidim/_properties.scss +0 -25
  1337. data/app/packs/stylesheets/decidim/extras/_add_comments.scss +0 -9
  1338. data/app/packs/stylesheets/decidim/extras/_announcement.scss +0 -3
  1339. data/app/packs/stylesheets/decidim/extras/_collection-sort-controls.scss +0 -5
  1340. data/app/packs/stylesheets/decidim/extras/_embed.scss +0 -33
  1341. data/app/packs/stylesheets/decidim/extras/_external-links.scss +0 -44
  1342. data/app/packs/stylesheets/decidim/extras/_extras.scss +0 -15
  1343. data/app/packs/stylesheets/decidim/extras/_impersonation-bar.scss +0 -26
  1344. data/app/packs/stylesheets/decidim/extras/_label-required.scss +0 -12
  1345. data/app/packs/stylesheets/decidim/extras/_leaflet.scss +0 -17
  1346. data/app/packs/stylesheets/decidim/extras/_meeting-registrations.scss +0 -25
  1347. data/app/packs/stylesheets/decidim/extras/_proposal_form.scss +0 -9
  1348. data/app/packs/stylesheets/decidim/extras/_quill.scss +0 -13
  1349. data/app/packs/stylesheets/decidim/extras/_reference.scss +0 -3
  1350. data/app/packs/stylesheets/decidim/extras/_results-per-page.scss +0 -74
  1351. data/app/packs/stylesheets/decidim/extras/_social_share.scss +0 -39
  1352. data/app/packs/stylesheets/decidim/extras/_status-labels.scss +0 -3
  1353. data/app/packs/stylesheets/decidim/layouts/_highlighted_banner.scss +0 -34
  1354. data/app/packs/stylesheets/decidim/layouts/_home.scss +0 -371
  1355. data/app/packs/stylesheets/decidim/layouts/_layouts.scss +0 -5
  1356. data/app/packs/stylesheets/decidim/layouts/_logo.scss +0 -26
  1357. data/app/packs/stylesheets/decidim/layouts/_user.scss +0 -64
  1358. data/app/packs/stylesheets/decidim/layouts/_view.scss +0 -21
  1359. data/app/packs/stylesheets/decidim/modules/_address.scss +0 -31
  1360. data/app/packs/stylesheets/decidim/modules/_author-avatar.scss +0 -171
  1361. data/app/packs/stylesheets/decidim/modules/_autocomplete.scss +0 -99
  1362. data/app/packs/stylesheets/decidim/modules/_badges.scss +0 -116
  1363. data/app/packs/stylesheets/decidim/modules/_block-banner.scss +0 -39
  1364. data/app/packs/stylesheets/decidim/modules/_buttons.scss +0 -531
  1365. data/app/packs/stylesheets/decidim/modules/_callout.scss +0 -33
  1366. data/app/packs/stylesheets/decidim/modules/_card-grid.scss +0 -25
  1367. data/app/packs/stylesheets/decidim/modules/_cards.scss +0 -1124
  1368. data/app/packs/stylesheets/decidim/modules/_collapsible-list.scss +0 -60
  1369. data/app/packs/stylesheets/decidim/modules/_comments.scss +0 -307
  1370. data/app/packs/stylesheets/decidim/modules/_conference-diploma.scss +0 -75
  1371. data/app/packs/stylesheets/decidim/modules/_conference-media.scss +0 -46
  1372. data/app/packs/stylesheets/decidim/modules/_conference-nav.scss +0 -31
  1373. data/app/packs/stylesheets/decidim/modules/_conference-programme.scss +0 -109
  1374. data/app/packs/stylesheets/decidim/modules/_conference-registration.scss +0 -34
  1375. data/app/packs/stylesheets/decidim/modules/_conference-speaker.scss +0 -87
  1376. data/app/packs/stylesheets/decidim/modules/_confirm.scss +0 -5
  1377. data/app/packs/stylesheets/decidim/modules/_conversation.scss +0 -113
  1378. data/app/packs/stylesheets/decidim/modules/_data-consent.scss +0 -115
  1379. data/app/packs/stylesheets/decidim/modules/_data-picker.scss +0 -190
  1380. data/app/packs/stylesheets/decidim/modules/_datepicker.scss +0 -224
  1381. data/app/packs/stylesheets/decidim/modules/_definition-data.scss +0 -95
  1382. data/app/packs/stylesheets/decidim/modules/_docs-manager.scss +0 -15
  1383. data/app/packs/stylesheets/decidim/modules/_extra.scss +0 -50
  1384. data/app/packs/stylesheets/decidim/modules/_filter-tags.scss +0 -27
  1385. data/app/packs/stylesheets/decidim/modules/_filters.scss +0 -193
  1386. data/app/packs/stylesheets/decidim/modules/_fingerprint.scss +0 -8
  1387. data/app/packs/stylesheets/decidim/modules/_flag.scss +0 -10
  1388. data/app/packs/stylesheets/decidim/modules/_floating-helper.scss +0 -118
  1389. data/app/packs/stylesheets/decidim/modules/_footer.scss +0 -115
  1390. data/app/packs/stylesheets/decidim/modules/_forms.scss +0 -157
  1391. data/app/packs/stylesheets/decidim/modules/_help.scss +0 -58
  1392. data/app/packs/stylesheets/decidim/modules/_horizontal-tabs.scss +0 -114
  1393. data/app/packs/stylesheets/decidim/modules/_hover-section.scss +0 -29
  1394. data/app/packs/stylesheets/decidim/modules/_icons.scss +0 -56
  1395. data/app/packs/stylesheets/decidim/modules/_inline-filters.scss +0 -66
  1396. data/app/packs/stylesheets/decidim/modules/_input-gallery.scss +0 -35
  1397. data/app/packs/stylesheets/decidim/modules/_input-mentions.scss +0 -142
  1398. data/app/packs/stylesheets/decidim/modules/_input-multiple-mentions.scss +0 -32
  1399. data/app/packs/stylesheets/decidim/modules/_input-tags.scss +0 -55
  1400. data/app/packs/stylesheets/decidim/modules/_layout.scss +0 -82
  1401. data/app/packs/stylesheets/decidim/modules/_list-docs.scss +0 -33
  1402. data/app/packs/stylesheets/decidim/modules/_list-request.scss +0 -16
  1403. data/app/packs/stylesheets/decidim/modules/_loading-spinner.scss +0 -46
  1404. data/app/packs/stylesheets/decidim/modules/_main-container.scss +0 -72
  1405. data/app/packs/stylesheets/decidim/modules/_map.scss +0 -130
  1406. data/app/packs/stylesheets/decidim/modules/_margins.scss +0 -60
  1407. data/app/packs/stylesheets/decidim/modules/_messages.scss +0 -36
  1408. data/app/packs/stylesheets/decidim/modules/_modules.scss +0 -94
  1409. data/app/packs/stylesheets/decidim/modules/_navbar.scss +0 -592
  1410. data/app/packs/stylesheets/decidim/modules/_notification.scss +0 -5
  1411. data/app/packs/stylesheets/decidim/modules/_omnipresent_banner.scss +0 -26
  1412. data/app/packs/stylesheets/decidim/modules/_opinion-toggle.scss +0 -55
  1413. data/app/packs/stylesheets/decidim/modules/_order-by.scss +0 -82
  1414. data/app/packs/stylesheets/decidim/modules/_pagination.scss +0 -6
  1415. data/app/packs/stylesheets/decidim/modules/_process-header.scss +0 -95
  1416. data/app/packs/stylesheets/decidim/modules/_process-info.scss +0 -52
  1417. data/app/packs/stylesheets/decidim/modules/_process-nav.scss +0 -182
  1418. data/app/packs/stylesheets/decidim/modules/_process-phase.scss +0 -173
  1419. data/app/packs/stylesheets/decidim/modules/_progress-bar.scss +0 -73
  1420. data/app/packs/stylesheets/decidim/modules/_reference.scss +0 -5
  1421. data/app/packs/stylesheets/decidim/modules/_reveal.scss +0 -111
  1422. data/app/packs/stylesheets/decidim/modules/_share.scss +0 -34
  1423. data/app/packs/stylesheets/decidim/modules/_signup.scss +0 -119
  1424. data/app/packs/stylesheets/decidim/modules/_space-stats.scss +0 -53
  1425. data/app/packs/stylesheets/decidim/modules/_static-pages.scss +0 -51
  1426. data/app/packs/stylesheets/decidim/modules/_statistics.scss +0 -53
  1427. data/app/packs/stylesheets/decidim/modules/_status-labels.scss +0 -33
  1428. data/app/packs/stylesheets/decidim/modules/_sticky.scss +0 -5
  1429. data/app/packs/stylesheets/decidim/modules/_tags.scss +0 -41
  1430. data/app/packs/stylesheets/decidim/modules/_timeline.scss +0 -181
  1431. data/app/packs/stylesheets/decidim/modules/_title-action.scss +0 -29
  1432. data/app/packs/stylesheets/decidim/modules/_toggle.scss +0 -9
  1433. data/app/packs/stylesheets/decidim/modules/_typography.scss +0 -309
  1434. data/app/packs/stylesheets/decidim/modules/_upload_modal.scss +0 -139
  1435. data/app/packs/stylesheets/decidim/modules/_user-form.scss +0 -15
  1436. data/app/packs/stylesheets/decidim/modules/_versions.scss +0 -74
  1437. data/app/packs/stylesheets/decidim/modules/_video.scss +0 -18
  1438. data/app/packs/stylesheets/decidim/modules/_wizard-steps.scss +0 -45
  1439. data/app/packs/stylesheets/decidim/plugins/MarkerCluster.Default.scss +0 -67
  1440. data/app/packs/stylesheets/decidim/plugins/MarkerCluster.scss +0 -15
  1441. data/app/packs/stylesheets/decidim/utils/_fontface.scss +0 -32
  1442. data/app/packs/stylesheets/decidim/utils/_helpers.scss +0 -159
  1443. data/app/packs/stylesheets/decidim/utils/_keyframes.scss +0 -21
  1444. data/app/packs/stylesheets/decidim/utils/_mixins.scss +0 -252
  1445. data/app/packs/stylesheets/decidim/utils/_settings.scss +0 -890
  1446. data/app/packs/stylesheets/decidim/utils/_toggle-expand.scss +0 -23
  1447. data/app/packs/stylesheets/decidim/vendor/_social_share_button.scss +0 -139
  1448. data/app/packs/stylesheets/decidim/vizzs/_areachart.scss +0 -66
  1449. data/app/packs/stylesheets/decidim/vizzs/_chart-tooltip.scss +0 -42
  1450. data/app/packs/stylesheets/decidim/vizzs/_linechart.scss +0 -114
  1451. data/app/packs/stylesheets/decidim/vizzs/_orgchart.scss +0 -54
  1452. data/app/packs/stylesheets/decidim/vizzs/_rowchart.scss +0 -76
  1453. data/app/packs/stylesheets/decidim/vizzs/_vizzs.scss +0 -5
  1454. data/app/packs/stylesheets/decidim/vizzs.scss +0 -8
  1455. data/app/packs/stylesheets/foundation-overrides/components/_button-group.scss +0 -321
  1456. data/app/services/decidim/push_notification_message_sender.rb +0 -36
  1457. data/app/uploaders/decidim/official_image_header_uploader.rb +0 -10
  1458. data/app/views/decidim/amendments/_similar_emendation.html.erb +0 -24
  1459. data/app/views/decidim/application/_attachments.erb +0 -12
  1460. data/app/views/decidim/application/_document.erb +0 -19
  1461. data/app/views/decidim/application/_documents.erb +0 -15
  1462. data/app/views/decidim/application/_photos.erb +0 -16
  1463. data/app/views/decidim/authorization_modals/_content.html.erb +0 -45
  1464. data/app/views/decidim/devise/shared/_omniauth_buttons_mini.html.erb +0 -23
  1465. data/app/views/decidim/group_admins/index.html.erb +0 -20
  1466. data/app/views/decidim/group_members/index.html.erb +0 -21
  1467. data/app/views/decidim/links/_invalid_url_modal.html.erb +0 -17
  1468. data/app/views/decidim/links/_warning.html.erb +0 -4
  1469. data/app/views/decidim/links/invalid_url.js.erb +0 -24
  1470. data/app/views/decidim/profiles/_followers.html.erb +0 -5
  1471. data/app/views/decidim/profiles/_following.html.erb +0 -5
  1472. data/app/views/decidim/profiles/_notifications.html.erb +0 -0
  1473. data/app/views/decidim/profiles/_user_follow.erb +0 -32
  1474. data/app/views/decidim/searches/_filters_small_view.html.erb +0 -18
  1475. data/app/views/decidim/shared/_address_details.html.erb +0 -7
  1476. data/app/views/decidim/shared/_check_boxes_tree.html.erb +0 -56
  1477. data/app/views/decidim/shared/_embed_modal.html.erb +0 -22
  1478. data/app/views/decidim/shared/_filter_form_help.erb +0 -8
  1479. data/app/views/decidim/shared/_private_participatory_space.html.erb +0 -5
  1480. data/app/views/decidim/shared/participatory_space_filters/_filters.html.erb +0 -16
  1481. data/app/views/decidim/shared/participatory_space_filters/_filters_small_view.html.erb +0 -19
  1482. data/app/views/decidim/shared/participatory_space_filters/_show.html.erb +0 -9
  1483. data/app/views/decidim/user_timeline/index.html.erb +0 -8
  1484. data/app/views/decidim/user_timeline/index.js.erb +0 -14
  1485. data/app/views/decidim/widgets/show.html.erb +0 -4
  1486. data/app/views/decidim/widgets/show.js.erb +0 -32
  1487. data/app/views/kaminari/decidim/_first_page.html.erb +0 -14
  1488. data/app/views/kaminari/decidim/_last_page.html.erb +0 -14
  1489. data/app/views/layouts/decidim/_language_chooser.html.erb +0 -26
  1490. data/app/views/layouts/decidim/_main_footer.html.erb +0 -31
  1491. data/app/views/layouts/decidim/_mini_footer.html.erb +0 -21
  1492. data/app/views/layouts/decidim/_social_media_links.html.erb +0 -44
  1493. data/app/views/layouts/decidim/_topbar_search.html.erb +0 -18
  1494. data/app/views/layouts/decidim/widget.html.erb +0 -34
  1495. data/config/locales/he-IL.yml +0 -1
  1496. data/decidim-core.gemspec +0 -82
  1497. data/lib/decidim/core/test/shared_examples/amendable/amendment_accepted_event_examples.rb +0 -42
  1498. data/lib/decidim/core/test/shared_examples/back_to_list_button_examples.rb +0 -17
  1499. data/lib/decidim/core/test/shared_examples/embed_resource_examples.rb +0 -225
  1500. data/lib/decidim/core/test/shared_examples/resource_locator_presenter_examples.rb +0 -134
  1501. data/lib/decidim/has_conversations.rb +0 -91
  1502. data/lib/decidim/webpacker/thread_safe_compiler.rb +0 -30
  1503. data/lib/decidim/webpacker/webpack/.modernizrrc +0 -9
  1504. data/lib/decidim/webpacker/webpack/base.js +0 -6
  1505. data/lib/decidim/webpacker/webpack/development.js +0 -7
  1506. data/lib/decidim/webpacker/webpack/production.js +0 -7
  1507. data/lib/decidim/webpacker/webpack/test.js +0 -7
  1508. data/lib/tasks/upgrade/decidim_fix_categorization.rake +0 -15
  1509. /data/app/cells/decidim/{card_m/data.erb → card_l/extra_data.erb} +0 -0
  1510. /data/app/cells/decidim/{card_m/footer.erb → content_blocks/base/content.erb} +0 -0
  1511. /data/app/{forms → validators}/translatable_presence_validator.rb +0 -0
  1512. /data/app/{forms → validators}/url_validator.rb +0 -0
@@ -0,0 +1,257 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ # An authorization transfer object is created when the user authorizes
5
+ # themselves with the same unique ID as some other user had used in the past.
6
+ # Typically this can happen if the user first created an account and
7
+ # authorized it, then deleted their account, and finally decided to register
8
+ # again and authorize their account for a second time.
9
+ #
10
+ # To register an authorization transfer handler in a specific module, use the
11
+ # following code example.
12
+ #
13
+ # @example Register authorization handler
14
+ # Decidim::AuthorizationTransfer.register(:my_module) do |transfer, auth_handler|
15
+ # # The move_records method updates the provided active record objects
16
+ # # to be mapped to the new user for which the authorization is being
17
+ # # transferred to. Provide the record class and the column name which
18
+ # # maps the user records to these records as its arguments.
19
+ # #
20
+ # # If you need access to the authorization handler that caused the
21
+ # # transfer to be initiated, it is available as the second yielded
22
+ # # argument (auth_hander).
23
+ # transfer.move_records(Decidim::MyModule::FooBar, :decidim_user_id)
24
+ # end
25
+ #
26
+ # The handler registration needs a name for the specific module handling the
27
+ # transfer and a block which handles the specific transfer. The block is
28
+ # called with the transfer record, i.e. instance of this class with access to
29
+ # all necessary information required for handling the transfer.
30
+ class AuthorizationTransfer < ApplicationRecord
31
+ belongs_to :authorization, class_name: "Decidim::Authorization"
32
+ belongs_to :user, class_name: "Decidim::User"
33
+ belongs_to :source_user, class_name: "Decidim::User"
34
+ has_many :records, class_name: "Decidim::AuthorizationTransferRecord", foreign_key: :transfer_id, dependent: :destroy
35
+
36
+ class DisabledError < StandardError; end
37
+
38
+ class << self
39
+ # Provides access to the registry instance that stores the transfer
40
+ # handlers for each module.
41
+ #
42
+ # The only reason for the registry is defined at the Decidim core module
43
+ # is to have it in the `lib` folder which is not reloaded on every request
44
+ # at the development environment. If the registry was stored within the
45
+ # model class itself, it would be empty after every code reload (i.e.
46
+ # every request).
47
+ #
48
+ # @return [Decidim::BlockRegistry] The registry of the authorization
49
+ # transfer handlers.
50
+ def registry
51
+ Decidim.authorization_transfer_registry
52
+ end
53
+
54
+ # Expose the methods provided by the registry singleton through the model
55
+ # class.
56
+ #
57
+ # @!method register(name)
58
+ # Registers an authorization transfer handler for a specific use case in
59
+ # any modules that need to handle authorization transfers.
60
+ # @example
61
+ # Decidim::AuthorizationTransfer.register(:my_module) do |transfer, auth_handler|
62
+ # transfer.move_records(Decidim::MyModule::FooBar, :decidim_user_id)
63
+ # end
64
+ # @param name [Symbol] The name for the block, e.g. `:proposals`.
65
+ # @yield [transfer, authorization_handler] Handles the authorization
66
+ # transfer for the given context. This is called before the
67
+ # authorization is transferred over to the new user and granted.
68
+ # @yieldparam [Decidim::AuthorizationTransfer] The authorization transfer
69
+ # being processed which stores all the necessary information about the
70
+ # transfer, related authorization and related user and source user (i.e.
71
+ # the user from which the authorization is transferred from).
72
+ # @yieldparam [Decidim::AuthorizationHandler] The authorization handler
73
+ # in charge of the current authorization action which initiated the
74
+ # transfer due to the duplicate unique ID it detected. This handler can
75
+ # provide access to the metadata from the new authorization action that
76
+ # caused the conflict to happen.
77
+ # @return [Proc] The registered block itself.
78
+ #
79
+ # @!method unregister(name)
80
+ # @see Decidim::BlockRegistry#unregister(name)
81
+ #
82
+ # @!method unregister(*names)
83
+ # @see Decidim::BlockRegistry#unregister(*names)
84
+ #
85
+ # @!method registrations
86
+ # @see Decidim::BlockRegistry#registrations
87
+ delegate :register, :unregister, :registrations, to: :registry
88
+
89
+ # Returns the enabled status for the authorization transfers. True by
90
+ # default.
91
+ #
92
+ # @return [Boolean] True if the authorization transfers are enabled and
93
+ # false if they are disabled.
94
+ def enabled?
95
+ enable! if @enabled.nil?
96
+
97
+ @enabled
98
+ end
99
+
100
+ # Enables the authorization transfer functionality. By default the
101
+ # functionality is already enabled, so this method is only needed in case
102
+ # the enabled state is changed e.g. during tests.
103
+ #
104
+ # @return [Boolean] Returns the enabled status after the enabling, i.e.
105
+ # true.
106
+ def enable!
107
+ @enabled = true
108
+ end
109
+
110
+ # Disables the authorization transfer functionality.
111
+ #
112
+ # @return [Boolean] Returns the enabled status after the disabling, i.e.
113
+ # false.
114
+ def disable!
115
+ @enabled = false
116
+ end
117
+
118
+ # Performs the authorization transfer for the provided authorization object
119
+ # with the provided handler which is authorizing the user.
120
+ #
121
+ # @param authorization [Decidim::Authorization] The authorization object
122
+ # to be transferred over to the new user indicated by the authorization
123
+ # handler.
124
+ # @param handler [Decidim::AuthorizationHandler] The authorization handler
125
+ # object with all the necessary information for authorizing the new
126
+ # user. The target user for which the authorization is transferred over
127
+ # to is fetched from the handler.
128
+ # @raise [DisabledError] If the functionality is disabled.
129
+ # @return [Decidim::AuthorizationTransfer] The created authorization
130
+ # transfer object.
131
+ def perform!(authorization, handler)
132
+ raise DisabledError unless enabled?
133
+
134
+ transaction do
135
+ transfer = create!(
136
+ authorization:,
137
+ user: handler.user,
138
+ source_user: authorization.user
139
+ )
140
+
141
+ transfer.announce!(handler)
142
+
143
+ # Update the metadata, transfer to the new user and grant.
144
+ authorization.attributes = {
145
+ metadata: handler.metadata,
146
+ user: handler.user
147
+ }
148
+
149
+ authorization.grant!
150
+
151
+ transfer
152
+ end
153
+ end
154
+ end
155
+
156
+ # Overwrites the method so that records cannot be modified.
157
+ #
158
+ # @return [Boolean] A boolean indicating whether the record is read only.
159
+ def readonly?
160
+ !new_record? && !destroyed_by_association
161
+ end
162
+
163
+ # This announces the transfer to external modules that can perform their own
164
+ # actions during the authorization transfer. This is called before the
165
+ # authorization is transferred to the new user allowing different modules to
166
+ # transfer their records from the source user to the user that the
167
+ # authorization is being transferred to. Note that during the publish event,
168
+ # the authorization record is still pointing to the source user but the
169
+ # transfer record itself available for the event is mapped correctly to the
170
+ # target user.
171
+ #
172
+ # @param handler [Decidim::AuthorizationHandler] The authorization handler
173
+ # for the transfer procedure which contains all the necessary information
174
+ # about the data that was submitted from the authorization action. It is
175
+ # yielded to the registered transfer handlers as the second argument of
176
+ # the registered block.
177
+ # @raise [DisabledError] If the functionality is disabled.
178
+ # @return [Array<Proc>] An array of the blocks that were processed during
179
+ # the transfer.
180
+ def announce!(handler)
181
+ raise DisabledError unless self.class.enabled?
182
+
183
+ self.class.registrations.values.each do |block|
184
+ block.call(self, handler)
185
+ end
186
+ end
187
+
188
+ # Creates a presenter instance for this record and returns it.
189
+ #
190
+ # @return [Decidim::AuthorizationTransferPresenter] The presenter object.
191
+ def presenter
192
+ AuthorizationTransferPresenter.new(self)
193
+ end
194
+
195
+ # Returns information about the transfer in the described format. The
196
+ # returned hash contains information about the transferred records as the
197
+ # record type (class name as string) as its keys and an informational hash
198
+ # as its values with the following keys:
199
+ # - :class - The class constant of the transferred records
200
+ # - :count - Number of the records of this type that were transferred
201
+ # - :name - An instance of ActiveModel::Name for the record class
202
+ #
203
+ # @example Format of the returned information hash
204
+ # {
205
+ # "Decidim::Foo" => {
206
+ # class: Decidim::Foo,
207
+ # count: 123,
208
+ # name: ActiveModel::Name.new(Decidim::Foo)
209
+ # },
210
+ # "Decidim::Bar" => {
211
+ # class: Decidim::Bar,
212
+ # count: 456,
213
+ # name: ActiveModel::Name.new(Decidim::Bar)
214
+ # }
215
+ # }
216
+ #
217
+ # @return [Hash<String => Hash<Symbol => Integer, ActiveModel::Name>>] The
218
+ # information hash created for the transfer.
219
+ def information
220
+ {}.tap do |types|
221
+ records.find_each do |record|
222
+ resource_class = record.type.safe_constantize
223
+ next unless resource_class
224
+
225
+ types[record.type] ||= { class: resource_class, count: 0 }
226
+ types[record.type][:count] += 1
227
+ end
228
+ end
229
+ end
230
+
231
+ # Handles moving records from the source user to the user to which the
232
+ # authorization is being transferred to. This updates the provided user
233
+ # column of the provided class to the user being authorized.
234
+ #
235
+ # @param resource_class <Class> The resource class for which records should
236
+ # be transferred for.
237
+ # @param user_column <Symbol, String> The User column to be updated for the
238
+ # records. It is updated with the user mapped to the transfer, i.e. the
239
+ # target user.
240
+ # @return [Array<Decidim::AuthorizationTransferRecord>] An array of the
241
+ # created authorization transfer records.
242
+ def move_records(resource_class, user_column)
243
+ transferrable_records = resource_class.where(user_column => source_user_id)
244
+ transferrable_ids = transferrable_records.pluck(:id)
245
+
246
+ # rubocop:disable Rails::SkipsModelValidations
247
+ transferrable_records.update_all(user_column => user_id)
248
+ # rubocop:enable Rails::SkipsModelValidations
249
+
250
+ records.create!(
251
+ transferrable_ids.map do |resource_id|
252
+ { resource_type: resource_class.name, resource_id: }
253
+ end
254
+ )
255
+ end
256
+ end
257
+ end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ # Represents an authorization transfer record, i.e. a Decidim record object
5
+ # which was transferred from another user to the target user during an
6
+ # authorization transfer.
7
+ class AuthorizationTransferRecord < ApplicationRecord
8
+ belongs_to :transfer, class_name: "Decidim::AuthorizationTransfer"
9
+ belongs_to :resource, polymorphic: true
10
+
11
+ # Overwrites the method so that records cannot be modified.
12
+ #
13
+ # @return [Boolean] a boolean indicating whether the record is read only.
14
+ def readonly?
15
+ !new_record? && !destroyed_by_association
16
+ end
17
+
18
+ # Returns the resource type for the records which is the value of the
19
+ # resource_type column stored for the record or the mapped_resource_type for
20
+ # the resource if it responds to that method.
21
+ #
22
+ # For example, Decidim::Coauthorable records need to report a model that
23
+ # they represent instead of "Coauthorable" because otherwise e.g. proposal
24
+ # transfers would not be reported correctly.
25
+ #
26
+ # @return [String] The resource type as string.
27
+ def type
28
+ resource.try(:mapped_resource_type) || resource_type
29
+ end
30
+ end
31
+ end
@@ -12,6 +12,13 @@ module Decidim
12
12
  user_group || author
13
13
  end
14
14
 
15
+ # Reports the mapped resource type for authorization transfers.
16
+ #
17
+ # @return [String] The resource type as string (i.e. its class name).
18
+ def mapped_resource_type
19
+ coauthorable_type
20
+ end
21
+
15
22
  private
16
23
 
17
24
  # As it is used to validate by comparing to author.organization
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Decidim
4
4
  # A Component represents a self-contained group of functionalities usually
5
- # defined via a ComponentManifest. It's meant to be able to provide a single
5
+ # defined via a ComponentManifest. It is meant to be able to provide a single
6
6
  # component that spans over several steps.
7
7
  class Component < ApplicationRecord
8
8
  include HasSettings
@@ -24,7 +24,7 @@ module Decidim
24
24
 
25
25
  # Other components with the same manifest and same participatory space as this one.
26
26
  def siblings
27
- @siblings ||= participatory_space.components.where.not(id: id).where(manifest_name: manifest_name)
27
+ @siblings ||= participatory_space.components.where.not(id:).where(manifest_name:)
28
28
  end
29
29
 
30
30
  # Public: Finds the manifest this component is associated to.
@@ -11,7 +11,7 @@ module Decidim
11
11
  belongs_to :organization, foreign_key: :decidim_organization_id, class_name: "Decidim::Organization"
12
12
  has_many :attachments, foreign_key: "decidim_content_block_id", class_name: "Decidim::ContentBlockAttachment", inverse_of: :content_block, dependent: :destroy
13
13
 
14
- delegate :public_name_key, :has_settings?, :settings_form_cell, :cell, to: :manifest
14
+ delegate :public_name_key, :has_settings?, :settings_form_cell, :cell, :component_manifest_name, to: :manifest
15
15
 
16
16
  before_save :save_images
17
17
  after_save :reload_images
@@ -21,7 +21,7 @@ module Decidim
21
21
  # Public: finds the published content blocks for the given scope and
22
22
  # organization. Returns them ordered by ascending weight (lowest first).
23
23
  def self.for_scope(scope, organization:)
24
- where(organization: organization, scope_name: scope)
24
+ where(organization:, scope_name: scope)
25
25
  .order(weight: :asc)
26
26
  end
27
27
 
@@ -47,8 +47,8 @@ module Decidim
47
47
 
48
48
  # Public: Holds access to the images related to the content block. This
49
49
  # method generates a dynamic class that encapsulates the uploaders for the
50
- # content block images, and eases the access to them. It's a little bit
51
- # hacky, but it's the only way I could come up with in order to let content
50
+ # content block images, and eases the access to them. It is a little bit
51
+ # hacky, but it is the only way I could come up with in order to let content
52
52
  # block images have different uploaders.
53
53
  #
54
54
  # Examples:
@@ -128,7 +128,7 @@ module Decidim
128
128
  end
129
129
  end
130
130
 
131
- # Internal: Since we're using the `images_container` hack to hold the
131
+ # Internal: Since we are using the `images_container` hack to hold the
132
132
  # uploaders, we need to manually trigger it to save the attached images.
133
133
  def save_images
134
134
  images_container.save
@@ -21,7 +21,7 @@ module Decidim
21
21
  #
22
22
  # Returns a Hash with the localized content
23
23
  def self.find_content(organization, id)
24
- find_by(organization: organization, section_id: id).try(:content) || {}
24
+ find_by(organization:, section_id: id).try(:content) || {}
25
25
  end
26
26
 
27
27
  # Public: Stores the content.
@@ -33,12 +33,12 @@ module Decidim
33
33
  # Returns a Hash with the localized content
34
34
  def self.set_content(organization, id, content)
35
35
  item = find_or_initialize_by(
36
- organization: organization,
36
+ organization:,
37
37
  section_id: id
38
38
  )
39
39
 
40
40
  if content.present? && content.values.any?(&:present?)
41
- item.update!(content: content)
41
+ item.update!(content:)
42
42
  else
43
43
  item.destroy!
44
44
  end
@@ -24,9 +24,7 @@ module Decidim
24
24
  end
25
25
 
26
26
  def self.user_follower_ids_for_participatory_spaces(spaces)
27
- # IF the space has questions it's a Consultations
28
- followables = spaces.flat_map { |space| space.try(:questions) || space }
29
- joins(:user).where(followable: followables).pluck(:decidim_user_id).uniq
27
+ joins(:user).where(followable: spaces).pluck(:decidim_user_id).uniq
30
28
  end
31
29
 
32
30
  private
@@ -49,10 +49,10 @@ module Decidim
49
49
  #
50
50
  def self.start!(originator:, interlocutors:, body:, user: nil)
51
51
  conversation = start(
52
- originator: originator,
53
- interlocutors: interlocutors,
54
- body: body,
55
- user: user
52
+ originator:,
53
+ interlocutors:,
54
+ body:,
55
+ user:
56
56
  )
57
57
 
58
58
  conversation.save!
@@ -75,7 +75,7 @@ module Decidim
75
75
  def self.start(originator:, interlocutors:, body:, user: nil)
76
76
  conversation = new(participants: [originator] + interlocutors)
77
77
 
78
- conversation.add_message(sender: originator, body: body, user: user)
78
+ conversation.add_message(sender: originator, body:, user:)
79
79
 
80
80
  conversation
81
81
  end
@@ -87,7 +87,7 @@ module Decidim
87
87
  # @return (see #add_message)
88
88
  #
89
89
  def add_message!(sender:, body:, user: nil)
90
- add_message(sender: sender, body: body, user: user)
90
+ add_message(sender:, body:, user:)
91
91
 
92
92
  save!
93
93
  end
@@ -102,7 +102,7 @@ module Decidim
102
102
  # @return [Decidim::Messaging::Message] The newly created message
103
103
  #
104
104
  def add_message(sender:, body:, user: nil)
105
- message = messages.build(sender: sender, body: body)
105
+ message = messages.build(sender:, body:)
106
106
 
107
107
  message.envelope_for(recipients: interlocutors(sender), from: user)
108
108
 
@@ -52,7 +52,7 @@ module Decidim
52
52
  all_recipients(recipients).each do |recipient|
53
53
  next if @already_notified.include?(recipient)
54
54
 
55
- receipts.build(recipient: recipient)
55
+ receipts.build(recipient:)
56
56
  @already_notified.push(recipient)
57
57
  end
58
58
  end
@@ -13,7 +13,7 @@ module Decidim
13
13
  belongs_to :recipient, foreign_key: "decidim_recipient_id", class_name: "Decidim::User"
14
14
  belongs_to :message, foreign_key: "decidim_message_id", class_name: "Decidim::Messaging::Message"
15
15
 
16
- scope :recipient, ->(recipient) { where(recipient: recipient) }
16
+ scope :recipient, ->(recipient) { where(recipient:) }
17
17
  scope :unread_by, ->(user) { recipient(user).unread }
18
18
  scope :unread, -> { where(read_at: nil) }
19
19
 
@@ -52,12 +52,12 @@ module Decidim
52
52
 
53
53
  def template
54
54
  @template ||= Decidim::ContentBlock
55
- .for_scope(:newsletter_template, organization: organization)
55
+ .for_scope(:newsletter_template, organization:)
56
56
  .find_by(scoped_resource_id: id)
57
57
  end
58
58
 
59
59
  def url(**kwargs)
60
- proxy_url(:newsletter_url, id: id, **kwargs)
60
+ proxy_url(:newsletter_url, id:, **kwargs)
61
61
  end
62
62
 
63
63
  def notifications_settings_url(**kwargs)
@@ -21,11 +21,11 @@ module Decidim
21
21
 
22
22
  def event_class_instance
23
23
  @event_class_instance ||= event_class.constantize.new(
24
- resource: resource,
25
- event_name: event_name,
26
- user: user,
27
- user_role: user_role,
28
- extra: extra
24
+ resource:,
25
+ event_name:,
26
+ user:,
27
+ user_role:,
28
+ extra:
29
29
  )
30
30
  end
31
31
 
@@ -18,7 +18,7 @@ module Decidim
18
18
  translatable_fields :description, :cta_button_text, :omnipresent_banner_title, :omnipresent_banner_short_description,
19
19
  :highlighted_content_banner_title, :highlighted_content_banner_short_description, :highlighted_content_banner_action_title,
20
20
  :highlighted_content_banner_action_subtitle, :welcome_notification_subject, :welcome_notification_body, :id_documents_explanation_text,
21
- :admin_terms_of_use_body
21
+ :admin_terms_of_service_body
22
22
 
23
23
  has_many :static_pages, foreign_key: "decidim_organization_id", class_name: "Decidim::StaticPage", inverse_of: :organization, dependent: :destroy
24
24
  has_many :static_page_topics, class_name: "Decidim::StaticPageTopic", inverse_of: :organization, dependent: :destroy
@@ -35,10 +35,10 @@ module Decidim
35
35
 
36
36
  has_many :templates, foreign_key: "decidim_organization_id", class_name: "Decidim::Templates::Template", dependent: :destroy if defined? Decidim::Templates
37
37
 
38
- # Users registration mode. Whether users can register or access the system. Doesn't affect users that access through Omniauth integrations.
38
+ # Users registration mode. Whether users can register or access the system. Does not affect users that access through Omniauth integrations.
39
39
  # enabled: Users registration and sign in are enabled (default value).
40
- # existing: Users can't be registered in the system. Only existing users can sign in.
41
- # disable: Users can't register or sign in.
40
+ # existing: Users cannot be registered in the system. Only existing users can sign in.
41
+ # disable: Users cannot register or sign in.
42
42
  enum users_registration_mode: [:enabled, :existing, :disabled], _prefix: true
43
43
 
44
44
  validates :name, :host, uniqueness: true
@@ -46,9 +46,6 @@ module Decidim
46
46
  validates :time_zone, presence: true, time_zone: true
47
47
  validates :default_locale, inclusion: { in: :available_locales }
48
48
 
49
- has_one_attached :official_img_header
50
- validates_upload :official_img_header, uploader: Decidim::OfficialImageHeaderUploader
51
-
52
49
  has_one_attached :official_img_footer
53
50
  validates_upload :official_img_footer, uploader: Decidim::OfficialImageFooterUploader
54
51
 
@@ -117,9 +114,9 @@ module Decidim
117
114
  multi_translation("decidim.welcome_notification.default_body", available_locales)
118
115
  end
119
116
 
120
- def admin_terms_of_use_body
121
- self[:admin_terms_of_use_body] ||
122
- multi_translation("decidim.admin_terms_of_use.default_body", available_locales)
117
+ def admin_terms_of_service_body
118
+ self[:admin_terms_of_service_body] ||
119
+ multi_translation("decidim.admin_terms_of_service.default_body", available_locales)
123
120
  end
124
121
 
125
122
  def sign_up_enabled?
@@ -159,6 +156,15 @@ module Decidim
159
156
  static_pages.accessible_for(self, user)
160
157
  end
161
158
 
159
+ def favicon_ico
160
+ return unless favicon.attached?
161
+ return favicon if favicon.content_type == "image/vnd.microsoft.icon"
162
+
163
+ uploader = attached_uploader(:favicon)
164
+ variant = uploader.variant(:favicon)
165
+ variant.processed.image
166
+ end
167
+
162
168
  private
163
169
 
164
170
  def tenant_disabled_providers_keys
@@ -4,12 +4,10 @@ module Decidim
4
4
  # This class gives a given User access to a given private ParticipatorySpacePrivateUser
5
5
  class ParticipatorySpacePrivateUser < ApplicationRecord
6
6
  include Decidim::DownloadYourData
7
+ include ParticipatorySpaceUser
7
8
 
8
- belongs_to :user, class_name: "Decidim::User", foreign_key: :decidim_user_id
9
9
  belongs_to :privatable_to, polymorphic: true
10
10
 
11
- validate :user_and_participatory_space_same_organization
12
-
13
11
  scope :by_participatory_space, ->(privatable_to) { where(privatable_to_id: privatable_to.id, privatable_to_type: privatable_to.class.to_s) }
14
12
 
15
13
  def self.user_collection(user)
@@ -24,29 +22,10 @@ module Decidim
24
22
  Decidim::AdminLog::ParticipatorySpacePrivateUserPresenter
25
23
  end
26
24
 
27
- ransacker :name do
28
- Arel.sql(%{("decidim_users"."name")::text})
29
- end
30
-
31
- ransacker :email do
32
- Arel.sql(%{("decidim_users"."email")::text})
33
- end
34
-
35
25
  ransacker :invitation_sent_at do
36
26
  Arel.sql(%{("invitation_sent_at")::text})
37
27
  end
38
28
 
39
- ransacker :invitation_accepted_at do
40
- Arel.sql(%{("invitation_accepted_at")::text})
41
- end
42
-
43
- private
44
-
45
- # Private: check if the participatory space and the user have the same organization
46
- def user_and_participatory_space_same_organization
47
- return if !privatable_to || !user
48
-
49
- errors.add(:privatable_to, :invalid) unless user.organization == privatable_to.organization
50
- end
29
+ def target_space_association = :privatable_to
51
30
  end
52
31
  end
@@ -32,7 +32,7 @@ module Decidim
32
32
  end
33
33
 
34
34
  def allowed?
35
- raise PermissionNotSetError, "Permission hasn't been allowed or disallowed yet: #{inspect}" if @state.blank?
35
+ raise PermissionNotSetError, "Permission has not been allowed or disallowed yet: #{inspect}" if @state.blank?
36
36
 
37
37
  @state == :allowed
38
38
  end
@@ -2,28 +2,11 @@
2
2
 
3
3
  module Decidim
4
4
  class ReminderRecord < ApplicationRecord
5
+ STATES = { active: 0, pending: 10, completed: 20, deleted: -1 }.freeze
6
+
5
7
  belongs_to :reminder, foreign_key: "decidim_reminder_id", class_name: "Decidim::Reminder"
6
8
  belongs_to :remindable, foreign_type: "remindable_type", polymorphic: true, optional: true
7
9
 
8
- scope :active, -> { where(state: "active") }
9
- scope :pending, -> { where(state: "pending") }
10
- scope :completed, -> { where(state: "completed") }
11
- scope :deleted, -> { where(state: "deleted") }
12
-
13
- def active?
14
- state == "active"
15
- end
16
-
17
- def pending?
18
- state == "pending"
19
- end
20
-
21
- def completed?
22
- state == "completed"
23
- end
24
-
25
- def deleted?
26
- state == "deleted"
27
- end
10
+ enum state: STATES
28
11
  end
29
12
  end
@@ -5,7 +5,7 @@ module Decidim
5
5
  class Report < ApplicationRecord
6
6
  include Decidim::DownloadYourData
7
7
 
8
- REASONS = %w(spam offensive does_not_belong).freeze
8
+ REASONS = %w(spam offensive does_not_belong hidden_during_block).freeze
9
9
 
10
10
  belongs_to :moderation, foreign_key: "decidim_moderation_id", class_name: "Decidim::Moderation"
11
11
  belongs_to :user, foreign_key: "decidim_user_id", class_name: "Decidim::User"
@@ -11,7 +11,7 @@ module Decidim
11
11
  after_initialize :generate, :set_default_expiration
12
12
 
13
13
  def self.use!(token_for:, token:)
14
- record = find_by!(token_for: token_for, token: token)
14
+ record = find_by!(token_for:, token:)
15
15
  record.use!
16
16
  end
17
17
 
@@ -36,7 +36,7 @@ module Decidim
36
36
 
37
37
  loop do
38
38
  self.token = SecureRandom.hex(32)
39
- break if ShareToken.find_by(token: token).blank?
39
+ break if ShareToken.find_by(token:).blank?
40
40
  end
41
41
  end
42
42