decidim-core 0.30.3 → 0.31.0.rc2

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 (777) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +0 -4
  3. data/app/cells/decidim/activity_cell.rb +0 -3
  4. data/app/cells/decidim/address/show.erb +1 -0
  5. data/app/cells/decidim/address_cell.rb +7 -1
  6. data/app/cells/decidim/amendable/amend_button_card/show.erb +2 -2
  7. data/app/cells/decidim/author/avatar.erb +1 -7
  8. data/app/cells/decidim/author/likes.erb +4 -0
  9. data/app/cells/decidim/author/name.erb +1 -5
  10. data/app/cells/decidim/author/show.erb +45 -19
  11. data/app/cells/decidim/author_cell.rb +5 -28
  12. data/app/cells/decidim/badge_cell.rb +1 -7
  13. data/app/cells/decidim/card_cell.rb +2 -12
  14. data/app/cells/decidim/card_metadata_cell.rb +4 -4
  15. data/app/cells/decidim/coauthorships_cell.rb +1 -1
  16. data/app/cells/decidim/collapsible_authors/show.erb +1 -1
  17. data/app/cells/decidim/content_blocks/hero_cell.rb +23 -4
  18. data/app/cells/decidim/content_blocks/hero_settings_form/show.erb +16 -2
  19. data/app/cells/decidim/content_blocks/highlighted_content_banner/show.erb +6 -6
  20. data/app/cells/decidim/content_blocks/highlighted_content_banner_cell.rb +28 -1
  21. data/app/cells/decidim/content_blocks/highlighted_content_banner_settings_form/show.erb +27 -0
  22. data/app/cells/decidim/content_blocks/highlighted_content_banner_settings_form_cell.rb +13 -0
  23. data/app/cells/decidim/content_blocks/highlighted_elements_for_component_settings_form/show.erb +9 -2
  24. data/app/cells/decidim/content_blocks/html_settings_form/show.erb +3 -1
  25. data/app/cells/decidim/content_blocks/last_activity_cell.rb +1 -1
  26. data/app/cells/decidim/content_blocks/last_activity_settings_form/show.erb +3 -1
  27. data/app/cells/decidim/content_blocks/menu_breadcrumb_last_activity_cell.rb +1 -1
  28. data/app/cells/decidim/content_blocks/participatory_space_extra_data/recent_users.erb +1 -1
  29. data/app/cells/decidim/content_blocks/participatory_space_hero/show.erb +0 -5
  30. data/app/cells/decidim/content_blocks/participatory_space_hero_cell.rb +1 -13
  31. data/app/cells/decidim/content_blocks/participatory_space_hero_settings_form/show.erb +10 -3
  32. data/app/cells/decidim/content_blocks/participatory_space_last_activity/content.erb +1 -1
  33. data/app/cells/decidim/content_blocks/participatory_space_last_activity/recent_avatars.erb +1 -1
  34. data/app/cells/decidim/content_blocks/participatory_space_last_activity_cell.rb +3 -3
  35. data/app/cells/decidim/content_blocks/participatory_space_main_data/title.erb +17 -5
  36. data/app/cells/decidim/content_blocks/participatory_space_main_data_cell.rb +4 -0
  37. data/app/cells/decidim/content_blocks/stats/show.erb +2 -3
  38. data/app/cells/decidim/data_consent/modal.erb +1 -1
  39. data/app/cells/decidim/like_block/show.erb +3 -0
  40. data/app/cells/decidim/{endorsement_block_cell.rb → like_block_cell.rb} +2 -2
  41. data/app/cells/decidim/like_buttons/button_content.erb +2 -0
  42. data/app/cells/decidim/like_buttons/show.erb +17 -0
  43. data/app/cells/decidim/{endorsement_buttons → like_buttons}/verification_modal.erb +3 -3
  44. data/app/cells/decidim/like_buttons_cell.rb +77 -0
  45. data/app/cells/decidim/likers_list/empty.erb +3 -0
  46. data/app/cells/decidim/{endorsers_list → likers_list}/full.erb +3 -3
  47. data/app/cells/decidim/likers_list/show.erb +20 -0
  48. data/app/cells/decidim/likers_list_cell.rb +64 -0
  49. data/app/cells/decidim/nav_links/show.erb +1 -1
  50. data/app/cells/decidim/notification_actions/buttons_cell.rb +1 -1
  51. data/app/cells/decidim/onboarding_action_message_cell.rb +1 -1
  52. data/app/cells/decidim/participatory_space_dropdown_metadata/metadata.erb +0 -8
  53. data/app/cells/decidim/participatory_space_dropdown_metadata_cell.rb +0 -8
  54. data/app/cells/decidim/profile/details.erb +1 -1
  55. data/app/cells/decidim/profile/tabs.erb +1 -1
  56. data/app/cells/decidim/profile_actions/show.erb +0 -1
  57. data/app/cells/decidim/profile_actions_cell.rb +5 -91
  58. data/app/cells/decidim/profile_cell.rb +4 -39
  59. data/app/cells/decidim/report_button/content.erb +2 -0
  60. data/app/cells/decidim/report_button/flag_modal.erb +1 -1
  61. data/app/cells/decidim/report_button_cell.rb +1 -1
  62. data/app/cells/decidim/report_user_button/flag_modal.erb +1 -1
  63. data/app/cells/decidim/resource_history_cell.rb +2 -1
  64. data/app/cells/decidim/resource_types_filter/show.erb +1 -1
  65. data/app/cells/decidim/share_button_cell.rb +1 -1
  66. data/app/cells/decidim/share_text_widget/modal.erb +16 -0
  67. data/app/cells/decidim/share_text_widget/show.erb +2 -0
  68. data/app/cells/decidim/share_text_widget_cell.rb +27 -0
  69. data/app/cells/decidim/share_widget/modal.erb +19 -8
  70. data/app/cells/decidim/share_widget/qr_code_modal.erb +26 -0
  71. data/app/cells/decidim/share_widget/show.erb +1 -0
  72. data/app/cells/decidim/share_widget_cell.rb +10 -6
  73. data/app/cells/decidim/statistic/show.erb +23 -5
  74. data/app/cells/decidim/statistic_cell.rb +28 -3
  75. data/app/cells/decidim/tab_panels/show.erb +1 -1
  76. data/app/cells/decidim/user_profile/show.erb +1 -1
  77. data/app/cells/decidim/user_profile_cell.rb +1 -9
  78. data/app/cells/decidim/version_author_cell.rb +0 -7
  79. data/app/commands/decidim/amendable/accept.rb +1 -3
  80. data/app/commands/decidim/amendable/create_draft.rb +2 -3
  81. data/app/commands/decidim/amendable/update_draft.rb +2 -3
  82. data/app/commands/decidim/create_ephemeral_user.rb +7 -1
  83. data/app/commands/decidim/create_omniauth_registration.rb +8 -7
  84. data/app/commands/decidim/create_report.rb +9 -1
  85. data/app/commands/decidim/destroy_account.rb +0 -5
  86. data/app/commands/decidim/like_resource.rb +52 -0
  87. data/app/commands/decidim/messaging/reply_to_conversation.rb +2 -21
  88. data/app/commands/decidim/messaging/start_conversation.rb +2 -21
  89. data/app/commands/decidim/unlike_resource.rb +34 -0
  90. data/app/commands/decidim/update_account.rb +1 -1
  91. data/app/controllers/concerns/decidim/ephemeral_session_checker.rb +6 -2
  92. data/app/controllers/concerns/decidim/user_profile.rb +0 -1
  93. data/app/controllers/decidim/account_controller.rb +1 -1
  94. data/app/controllers/decidim/amendments_controller.rb +4 -5
  95. data/app/controllers/decidim/application_controller.rb +2 -1
  96. data/app/controllers/decidim/devise/confirmations_controller.rb +0 -5
  97. data/app/controllers/decidim/devise/omniauth_registrations_controller.rb +1 -1
  98. data/app/controllers/decidim/devise/passwords_controller.rb +1 -1
  99. data/app/controllers/decidim/devise/registrations_controller.rb +1 -1
  100. data/app/controllers/decidim/doorkeeper/authorizations_controller.rb +19 -1
  101. data/app/controllers/decidim/download_your_data_controller.rb +2 -2
  102. data/app/controllers/decidim/likes_controller.rb +57 -0
  103. data/app/controllers/decidim/links_controller.rb +1 -0
  104. data/app/controllers/decidim/messaging/conversations_controller.rb +1 -8
  105. data/app/controllers/decidim/newsletters_controller.rb +1 -1
  106. data/app/controllers/decidim/notifications_settings_controller.rb +2 -2
  107. data/app/controllers/decidim/pages_controller.rb +0 -1
  108. data/app/controllers/decidim/profiles_controller.rb +2 -57
  109. data/app/controllers/decidim/qr_controller.rb +73 -0
  110. data/app/controllers/decidim/resource_autocomplete_controller.rb +56 -0
  111. data/app/controllers/decidim/user_activities_controller.rb +0 -1
  112. data/app/events/decidim/resource_liked_event.rb +36 -0
  113. data/app/forms/decidim/amendable/create_form.rb +0 -1
  114. data/app/forms/decidim/amendable/edit_form.rb +0 -1
  115. data/app/forms/decidim/amendable/form.rb +4 -4
  116. data/app/forms/decidim/ephemeral_user_form.rb +1 -0
  117. data/app/forms/decidim/notifications_settings_form.rb +1 -1
  118. data/app/forms/decidim/omniauth_registration_form.rb +1 -1
  119. data/app/forms/decidim/upload_validation_form.rb +9 -1
  120. data/app/helpers/decidim/amendments_helper.rb +1 -2
  121. data/app/helpers/decidim/animations_helper.rb +14 -0
  122. data/app/helpers/decidim/decidim_form_helper.rb +17 -6
  123. data/app/helpers/decidim/layout_helper.rb +1 -15
  124. data/app/helpers/decidim/likeable_helper.rb +46 -0
  125. data/app/helpers/decidim/messaging/conversation_helper.rb +1 -1
  126. data/app/helpers/decidim/omniauth_helper.rb +1 -1
  127. data/app/helpers/decidim/qr_code_helper.rb +37 -0
  128. data/app/helpers/decidim/rich_text_editor_helper.rb +0 -1
  129. data/app/helpers/decidim/sanitize_helper.rb +5 -5
  130. data/app/helpers/decidim/social_share_button_helper.rb +11 -10
  131. data/app/jobs/decidim/delete_inactive_participants_job.rb +41 -0
  132. data/app/jobs/decidim/process_inactive_participant_job.rb +48 -0
  133. data/app/mailers/decidim/participants_account_mailer.rb +38 -0
  134. data/app/mailers/decidim/user_group_mailer.rb +49 -0
  135. data/app/models/decidim/action_log.rb +3 -5
  136. data/app/models/decidim/amendment.rb +1 -1
  137. data/app/models/decidim/attachment_collection.rb +2 -0
  138. data/app/models/decidim/authorization_transfer.rb +0 -1
  139. data/app/models/decidim/coauthorship.rb +1 -1
  140. data/app/models/decidim/component.rb +4 -1
  141. data/app/models/decidim/{endorsement.rb → like.rb} +4 -4
  142. data/app/models/decidim/messaging/conversation.rb +3 -5
  143. data/app/models/decidim/messaging/message.rb +3 -15
  144. data/app/models/decidim/omniauth_provider.rb +1 -1
  145. data/app/models/decidim/organization.rb +3 -8
  146. data/app/models/decidim/participatory_space_role_config/{valuator.rb → evaluator.rb} +1 -1
  147. data/app/models/decidim/reminder_record.rb +1 -1
  148. data/app/models/decidim/searchable_resource.rb +16 -0
  149. data/app/models/decidim/taxonomy.rb +6 -1
  150. data/app/models/decidim/user.rb +32 -15
  151. data/app/models/decidim/user_base_entity.rb +2 -2
  152. data/app/packs/entrypoints/decidim_conference_diploma.scss +2 -2
  153. data/app/packs/entrypoints/decidim_core.scss +2 -2
  154. data/app/packs/entrypoints/decidim_editor.js +0 -4
  155. data/app/packs/entrypoints/decidim_map.scss +2 -2
  156. data/app/packs/entrypoints/decidim_overrides.scss +1 -1
  157. data/app/packs/entrypoints/decidim_qr.js +1 -0
  158. data/app/packs/images/decidim/remixicon.symbol.svg +3 -3
  159. data/app/packs/src/decidim/a11y.js +1 -120
  160. data/app/packs/src/decidim/append_redirect_url_to_modals.js +1 -1
  161. data/app/packs/src/decidim/attachments/file_or_link_tabs.js +1 -1
  162. data/app/packs/src/decidim/confirm.js +27 -20
  163. data/app/packs/src/decidim/controllers/.keep +0 -0
  164. data/app/packs/src/decidim/controllers/accordion/controller.js +100 -0
  165. data/app/packs/src/decidim/controllers/account_form/account_form.test.js +423 -0
  166. data/app/packs/src/decidim/controllers/account_form/controller.js +69 -0
  167. data/app/packs/src/decidim/{input_character_counter.js → controllers/character_counter/controller.js} +90 -106
  168. data/app/packs/src/decidim/controllers/clipboard_copy/clipboard_copy.test.js +305 -0
  169. data/app/packs/src/decidim/controllers/clipboard_copy/controller.js +403 -0
  170. data/app/packs/src/decidim/controllers/date_picker/controller.js +12 -0
  171. data/app/packs/src/decidim/controllers/delete_account_form/controller.js +45 -0
  172. data/app/packs/src/decidim/controllers/delete_account_form/delete_account_form.test.js +216 -0
  173. data/app/packs/src/decidim/controllers/dropdown/controller.js +125 -0
  174. data/app/packs/src/decidim/controllers/editor/controller.js +11 -0
  175. data/app/packs/src/decidim/controllers/emoji/controller.js +26 -0
  176. data/app/packs/src/decidim/{input_emoji.js → controllers/emoji/emoji.js} +1 -15
  177. data/app/packs/src/decidim/{form_filter.js → controllers/form_filter/controller.js} +68 -51
  178. data/app/packs/src/decidim/controllers/form_filter/form_filter.test.js +648 -0
  179. data/app/packs/src/decidim/controllers/form_validator/controller.js +23 -0
  180. data/app/packs/src/decidim/controllers/form_validator/form_validator.js +789 -0
  181. data/app/packs/src/decidim/controllers/form_validator/form_validator.test.js +685 -0
  182. data/app/packs/src/decidim/controllers/impersonation_warning/controller.js +137 -0
  183. data/app/packs/src/decidim/controllers/impersonation_warning/impersonation.test.js +382 -0
  184. data/app/packs/src/decidim/controllers/input_tags/controller.js +28 -0
  185. data/app/packs/src/decidim/controllers/mention/controller.js +243 -0
  186. data/app/packs/src/decidim/controllers/mention/input_mentions.test.js +562 -0
  187. data/app/packs/src/decidim/controllers/multiple_mentions/controller.js +215 -0
  188. data/app/packs/src/decidim/controllers/multiple_mentions/input_multiple_mentions.test.js +645 -0
  189. data/app/packs/src/decidim/controllers/notification_action/controller.js +210 -0
  190. data/app/packs/src/decidim/controllers/notification_action/notification_action.test.js +388 -0
  191. data/app/packs/src/decidim/controllers/password_toggler/controller.js +232 -0
  192. data/app/packs/src/decidim/controllers/password_toggler/password_toggler.test.js +229 -0
  193. data/app/packs/src/decidim/controllers/report_form/controller.js +184 -0
  194. data/app/packs/src/decidim/controllers/report_form/report_form_manager.test.js +511 -0
  195. data/app/packs/src/decidim/controllers/scroll_to_last/controller.js +9 -0
  196. data/app/packs/src/decidim/controllers/scroll_to_last/scroll_to_last_child.test.js +225 -0
  197. data/app/packs/src/decidim/controllers/sticky_buttons/controller.js +55 -0
  198. data/app/packs/src/decidim/controllers/sticky_buttons/sticky_buttons.test.js +334 -0
  199. data/app/packs/src/decidim/controllers/sticky_header/controller.js +116 -0
  200. data/app/packs/src/decidim/controllers/sticky_header/sticky_header.test.js +320 -0
  201. data/app/packs/src/decidim/controllers/toggle/controller.js +111 -0
  202. data/app/packs/src/decidim/controllers/toggle/toggle.test.js +260 -0
  203. data/app/packs/src/decidim/controllers/tooltip/controller.js +287 -0
  204. data/app/packs/src/decidim/controllers/tooltip/tooltip.test.js +380 -0
  205. data/app/packs/src/decidim/controllers/user_registration_form/controller.js +160 -0
  206. data/app/packs/src/decidim/controllers/user_registration_form/omniauth_registration_form.test.js +441 -0
  207. data/app/packs/src/decidim/controllers/user_registration_form/user_registration_form.test.js +386 -0
  208. data/app/packs/src/decidim/data_consent/index.js +1 -1
  209. data/app/packs/src/decidim/datalist_select.js +1 -1
  210. data/app/packs/src/decidim/datepicker/form_datepicker.js +1 -1
  211. data/app/packs/src/decidim/datepicker/generate_datepicker.js +2 -2
  212. data/app/packs/src/decidim/datepicker/generate_timepicker.js +2 -2
  213. data/app/packs/src/decidim/direct_uploads/upload_field.js +3 -5
  214. data/app/packs/src/decidim/direct_uploads/upload_modal.js +1 -1
  215. data/app/packs/src/decidim/dropdown_menu.js +1 -1
  216. data/app/packs/src/decidim/editor/common/input_dialog.js +1 -1
  217. data/app/packs/src/decidim/editor/common/suggestion.js +10 -2
  218. data/app/packs/src/decidim/editor/common/upload_dialog.js +1 -1
  219. data/app/packs/src/decidim/editor/extensions/decidim_kit/index.js +7 -7
  220. data/app/packs/src/decidim/editor/extensions/emoji/index.js +2 -3
  221. data/app/packs/src/decidim/editor/extensions/image/index.js +1 -1
  222. data/app/packs/src/decidim/editor/extensions/image/node_view.js +1 -1
  223. data/app/packs/src/decidim/editor/extensions/link/bubble_menu.js +1 -1
  224. data/app/packs/src/decidim/editor/extensions/link/index.js +1 -1
  225. data/app/packs/src/decidim/editor/extensions/mention/index.js +1 -2
  226. data/app/packs/src/decidim/editor/extensions/mention_resource/index.js +69 -0
  227. data/app/packs/src/decidim/editor/extensions/video_embed/index.js +1 -1
  228. data/app/packs/src/decidim/editor/index.js +6 -5
  229. data/app/packs/src/decidim/editor/test/extensions/decidim_kit.test.js +1 -2
  230. data/app/packs/src/decidim/editor/test/extensions/emoji.test.js +17 -0
  231. data/app/packs/src/decidim/editor/test/extensions/heading.test.js +2 -2
  232. data/app/packs/src/decidim/editor/toolbar.js +1 -1
  233. data/app/packs/src/decidim/form_attachments.js +1 -1
  234. data/app/packs/src/decidim/geocoding/attach_input.js +3 -0
  235. data/app/packs/src/decidim/geocoding/provider/here.js +1 -1
  236. data/app/packs/src/decidim/geocoding/provider/photon.js +1 -1
  237. data/app/packs/src/decidim/geocoding/reverse_geocoding.js +2 -2
  238. data/app/packs/src/decidim/geocoding.js +2 -2
  239. data/app/packs/src/decidim/index.js +127 -95
  240. data/app/packs/src/decidim/map/integration/forms.js +1 -1
  241. data/app/packs/src/decidim/map/legacy.js +1 -1
  242. data/app/packs/src/decidim/map/provider/default.js +1 -1
  243. data/app/packs/src/decidim/map/provider/here.js +1 -1
  244. data/app/packs/src/decidim/map.js +1 -1
  245. data/app/packs/src/decidim/{external_link.js → refactor/implementation/external_link.js} +1 -1
  246. data/app/packs/src/decidim/{onboarding_pending_action.js → refactor/integration/onboarding_pending_action.js} +4 -4
  247. data/app/packs/src/decidim/{check_boxes_tree.js → refactor/moved/check_boxes_tree.js} +25 -9
  248. data/app/packs/src/decidim/{i18n.test.js → refactor/moved/i18n.test.js} +1 -1
  249. data/app/packs/src/decidim/{icon.js → refactor/moved/icon.js} +2 -0
  250. data/app/packs/src/decidim/refactor/support/stimulus.js +39 -0
  251. data/app/packs/src/decidim/refactor/test/configuration.test.js +360 -0
  252. data/app/packs/src/decidim/{external_domain_warning.test.js → refactor/test/external_domain_warning.test.js} +1 -1
  253. data/app/packs/src/decidim/{external_link.test.js → refactor/test/external_link.test.js} +1 -1
  254. data/app/packs/src/decidim/results_listing.js +2 -2
  255. data/app/packs/src/decidim/security/selfxss_warning.js +1 -1
  256. data/app/packs/src/decidim/session_timeouter.js +1 -1
  257. data/app/packs/src/decidim/sw/push-permissions.js +1 -1
  258. data/app/packs/src/decidim/utilities/dom.js +1 -1
  259. data/app/packs/stylesheets/decidim/_accordion.scss +37 -3
  260. data/app/packs/stylesheets/decidim/_author.scss +7 -22
  261. data/app/packs/stylesheets/decidim/_buttons.scss +4 -0
  262. data/app/packs/stylesheets/decidim/_callout.scss +1 -1
  263. data/app/packs/stylesheets/decidim/_cards.scss +1 -1
  264. data/app/packs/stylesheets/decidim/_content_blocks.scss +1 -1
  265. data/app/packs/stylesheets/decidim/_cookies.scss +1 -1
  266. data/app/packs/stylesheets/decidim/_datepicker.scss +0 -4
  267. data/app/packs/stylesheets/decidim/_dropdown.scss +56 -19
  268. data/app/packs/stylesheets/decidim/_forms.scss +6 -6
  269. data/app/packs/stylesheets/decidim/_header.scss +17 -1
  270. data/app/packs/stylesheets/decidim/_labels.scss +1 -1
  271. data/app/packs/stylesheets/decidim/_layout.scss +12 -2
  272. data/app/packs/stylesheets/decidim/{_endorsers_list.scss → _likes_list.scss} +1 -1
  273. data/app/packs/stylesheets/decidim/_modal.scss +5 -1
  274. data/app/packs/stylesheets/decidim/_modal_share.scss +83 -9
  275. data/app/packs/stylesheets/decidim/_modal_update.scss +1 -5
  276. data/app/packs/stylesheets/decidim/_participatory_spaces.scss +1 -1
  277. data/app/packs/stylesheets/decidim/_rich_text.scss +13 -0
  278. data/app/packs/stylesheets/decidim/_statistics.scss +35 -3
  279. data/app/packs/stylesheets/decidim/_tooltip.scss +1 -1
  280. data/app/packs/stylesheets/decidim/_typography.scss +6 -0
  281. data/app/packs/stylesheets/decidim/_wizard_steps.scss +1 -1
  282. data/app/packs/stylesheets/decidim/application.scss +76 -76
  283. data/app/packs/stylesheets/decidim/editor.scss +11 -12
  284. data/app/packs/stylesheets/decidim/legacy/email.scss +6 -5
  285. data/app/packs/stylesheets/decidim/map.scss +5 -3
  286. data/app/packs/stylesheets/decidim/qr.scss +65 -0
  287. data/app/permissions/decidim/default_permissions.rb +16 -0
  288. data/app/permissions/decidim/permissions.rb +5 -26
  289. data/app/presenters/decidim/admin_log/base_user_presenter.rb +2 -2
  290. data/app/presenters/decidim/admin_log/organization_presenter.rb +0 -15
  291. data/app/presenters/decidim/home_stats_presenter.rb +4 -54
  292. data/app/presenters/decidim/log/base_presenter.rb +1 -1
  293. data/app/presenters/decidim/menu_item_presenter.rb +10 -3
  294. data/app/presenters/decidim/official_author_presenter.rb +0 -4
  295. data/app/presenters/decidim/participatory_space_private_user_presenter.rb +0 -4
  296. data/app/presenters/decidim/resource_locator_presenter.rb +15 -4
  297. data/app/presenters/decidim/resource_presenter.rb +8 -8
  298. data/app/presenters/decidim/stats_presenter.rb +39 -60
  299. data/app/presenters/decidim/taxonomy_presenter.rb +5 -1
  300. data/app/presenters/decidim/user_presenter.rb +0 -6
  301. data/app/queries/decidim/authorized_users.rb +26 -0
  302. data/app/queries/decidim/inactive_users_query.rb +31 -0
  303. data/app/queries/decidim/public_activities.rb +2 -2
  304. data/app/queries/decidim/stats_followers_count.rb +43 -0
  305. data/app/queries/decidim/stats_participants_count.rb +102 -0
  306. data/app/serializers/decidim/exporters/open_data_user_serializer.rb +1 -5
  307. data/app/serializers/decidim/exporters/participatory_space_serializer.rb +0 -1
  308. data/app/services/decidim/action_logger.rb +2 -1
  309. data/app/services/decidim/base_diff_renderer.rb +0 -17
  310. data/app/services/decidim/onboarding_manager.rb +4 -0
  311. data/app/services/decidim/open_data_exporter.rb +19 -11
  312. data/app/services/decidim/send_push_notification.rb +4 -3
  313. data/app/services/decidim/traceability.rb +1 -1
  314. data/app/validators/etiquette_validator.rb +7 -0
  315. data/app/validators/translated_etiquette_validator.rb +1 -0
  316. data/app/views/decidim/account/_old_password_field.html.erb +1 -1
  317. data/app/views/decidim/account/_password_fields.html.erb +1 -1
  318. data/app/views/decidim/account/delete.html.erb +1 -1
  319. data/app/views/decidim/account/show.html.erb +3 -3
  320. data/app/views/decidim/amendments/edit_draft.html.erb +0 -4
  321. data/app/views/decidim/amendments/new.html.erb +0 -4
  322. data/app/views/decidim/amendments/preview_draft.html.erb +1 -1
  323. data/app/views/decidim/application/_accordion_section.html.erb +1 -1
  324. data/app/views/decidim/application/_collection.html.erb +1 -1
  325. data/app/views/decidim/application/_radio_accordion.html.erb +30 -0
  326. data/app/views/decidim/devise/omniauth_registrations/new.html.erb +1 -1
  327. data/app/views/decidim/devise/omniauth_registrations/new_tos_fields.html.erb +1 -1
  328. data/app/views/decidim/devise/registrations/new.html.erb +1 -1
  329. data/app/views/decidim/devise/shared/_links.html.erb +1 -1
  330. data/app/views/decidim/doorkeeper/authorizations/new.html.erb +39 -8
  331. data/app/views/decidim/errors/internal_server_error.html.erb +1 -0
  332. data/app/views/decidim/likes/update_buttons_and_counters.js.erb +21 -0
  333. data/app/views/decidim/messaging/conversations/_add_conversation_users.html.erb +2 -2
  334. data/app/views/decidim/messaging/conversations/_reply_form.html.erb +1 -1
  335. data/app/views/decidim/messaging/conversations/_start.html.erb +1 -1
  336. data/app/views/decidim/messaging/conversations/create.js.erb +0 -1
  337. data/app/views/decidim/messaging/conversations/new.html.erb +1 -1
  338. data/app/views/decidim/messaging/conversations/show.html.erb +1 -1
  339. data/app/views/decidim/notifications_settings/show.html.erb +3 -3
  340. data/app/views/decidim/pages/_tabbed.html.erb +1 -1
  341. data/app/views/decidim/pages/index.html.erb +1 -1
  342. data/app/views/decidim/participants_account_mailer/inactivity_notification.html.erb +13 -0
  343. data/app/views/decidim/participants_account_mailer/removal_notification.html.erb +11 -0
  344. data/app/views/decidim/profiles/show.html.erb +1 -1
  345. data/app/views/decidim/qr/show.html.erb +28 -0
  346. data/app/views/decidim/searches/_filters.html.erb +18 -2
  347. data/app/views/decidim/searches/index.html.erb +5 -2
  348. data/app/views/decidim/shared/_confirm_modal.html.erb +5 -3
  349. data/app/views/decidim/shared/_filters.html.erb +2 -2
  350. data/app/views/decidim/shared/_orders.html.erb +1 -1
  351. data/app/views/decidim/shared/_resource_actions.html.erb +8 -5
  352. data/app/views/decidim/user_activities/index.html.erb +1 -1
  353. data/app/views/decidim/user_group_mailer/notify_deprecation_to_member.html.erb +18 -0
  354. data/app/views/decidim/user_group_mailer/notify_deprecation_to_owner.html.erb +19 -0
  355. data/app/views/decidim/user_group_mailer/notify_user_group_patched.html.erb +21 -0
  356. data/app/views/layouts/decidim/_head.html.erb +15 -12
  357. data/app/views/layouts/decidim/_impersonation_warning.html.erb +1 -1
  358. data/app/views/layouts/decidim/_js_configuration.html.erb +17 -19
  359. data/app/views/layouts/decidim/_meta_tags_context.html.erb +3 -0
  360. data/app/views/layouts/decidim/_offline_banner.html.erb +1 -1
  361. data/app/views/layouts/decidim/_wrapper.html.erb +8 -6
  362. data/app/views/layouts/decidim/footer/_focus_mode_main.html.erb +7 -0
  363. data/app/views/layouts/decidim/footer/_main_language_chooser.html.erb +1 -1
  364. data/app/views/layouts/decidim/header/_close_ephemeral_session.html.erb +12 -2
  365. data/app/views/layouts/decidim/header/_focus_mode_back_button.html.erb +24 -0
  366. data/app/views/layouts/decidim/header/_main.html.erb +28 -22
  367. data/app/views/layouts/decidim/header/_main_links_desktop.html.erb +1 -1
  368. data/app/views/layouts/decidim/header/_main_links_dropdown.html.erb +18 -18
  369. data/app/views/layouts/decidim/header/_main_links_mobile_item_account.html.erb +1 -1
  370. data/app/views/layouts/decidim/header/_main_menu_mobile.html.erb +1 -1
  371. data/app/views/layouts/decidim/header/_menu_breadcrumb_desktop.html.erb +1 -1
  372. data/app/views/layouts/decidim/header/_menu_breadcrumb_items.html.erb +1 -1
  373. data/app/views/layouts/decidim/header/_menu_breadcrumb_mobile_tablet.html.erb +1 -1
  374. data/app/views/layouts/decidim/header/_mobile_language_choose.html.erb +1 -1
  375. data/app/views/layouts/decidim/mailer.html.erb +2 -2
  376. data/app/views/layouts/decidim/newsletter_base.html.erb +2 -2
  377. data/app/views/layouts/decidim/shared/_layout_two_col.html.erb +3 -1
  378. data/app/views/layouts/decidim/shared/_layout_user_profile.html.erb +7 -3
  379. data/config/assets.rb +3 -3
  380. data/config/initializers/devise.rb +8 -0
  381. data/config/initializers/omniauth.rb +1 -1
  382. data/config/locales/ar.yml +0 -209
  383. data/config/locales/bg.yml +0 -238
  384. data/config/locales/bs-BA.yml +0 -30
  385. data/config/locales/ca-IT.yml +122 -286
  386. data/config/locales/ca.yml +122 -286
  387. data/config/locales/cs.yml +84 -284
  388. data/config/locales/de.yml +102 -285
  389. data/config/locales/el.yml +0 -224
  390. data/config/locales/en.yml +122 -286
  391. data/config/locales/eo.yml +0 -2
  392. data/config/locales/es-MX.yml +122 -286
  393. data/config/locales/es-PY.yml +122 -286
  394. data/config/locales/es.yml +122 -286
  395. data/config/locales/eu.yml +114 -287
  396. data/config/locales/fi-plain.yml +112 -286
  397. data/config/locales/fi.yml +112 -286
  398. data/config/locales/fr-CA.yml +85 -275
  399. data/config/locales/fr.yml +85 -275
  400. data/config/locales/ga-IE.yml +0 -28
  401. data/config/locales/gl.yml +0 -140
  402. data/config/locales/hu.yml +0 -237
  403. data/config/locales/id-ID.yml +0 -136
  404. data/config/locales/is-IS.yml +0 -14
  405. data/config/locales/it.yml +1 -234
  406. data/config/locales/ja.yml +97 -282
  407. data/config/locales/lb.yml +0 -189
  408. data/config/locales/lt.yml +0 -240
  409. data/config/locales/lv.yml +0 -186
  410. data/config/locales/nl.yml +0 -189
  411. data/config/locales/no.yml +0 -189
  412. data/config/locales/pl.yml +0 -244
  413. data/config/locales/pt-BR.yml +0 -213
  414. data/config/locales/pt.yml +0 -189
  415. data/config/locales/ro-RO.yml +54 -218
  416. data/config/locales/ru.yml +0 -62
  417. data/config/locales/sk.yml +0 -164
  418. data/config/locales/sr-CS.yml +0 -31
  419. data/config/locales/sv.yml +80 -263
  420. data/config/locales/tr-TR.yml +0 -189
  421. data/config/locales/uk.yml +0 -23
  422. data/config/locales/zh-CN.yml +0 -180
  423. data/config/locales/zh-TW.yml +0 -229
  424. data/config/routes.rb +3 -36
  425. data/db/migrate/20250217192438_convert_user_groups_into_users.rb +56 -0
  426. data/db/migrate/20250221085317_add_user_type_to_action_logs.rb +12 -0
  427. data/db/migrate/20250221090905_create_decidim_api_jwt_denylist.rb +11 -0
  428. data/db/migrate/20250221091348_add_api_key_to_decidim_api_user.rb +7 -0
  429. data/db/migrate/20250327143657_remove_metrics_content_blocks.rb +9 -0
  430. data/db/migrate/20250401153444_enable_pkce.rb +8 -0
  431. data/db/migrate/20250416130426_rename_doorkeeper_scopes.rb +25 -0
  432. data/db/migrate/20250515105231_rename_endorsements_to_likes.rb +62 -0
  433. data/db/migrate/20250523104311_move_cta_to_hero_content_block.rb +34 -0
  434. data/db/migrate/20250527122040_move_highlighted_content_banner_settings_to_content_block.rb +69 -0
  435. data/db/migrate/20250603103953_add_refresh_tokens_enabled_to_doorkeeper_applications.rb +7 -0
  436. data/db/migrate/20250609073104_remove_not_null_on_active_storage_blobs_checksum.active_storage.rb +10 -0
  437. data/db/migrate/20250613122148_remove_hashtag_table_from_core.rb +7 -0
  438. data/decidim-core.gemspec +4 -4
  439. data/{app/helpers → lib}/decidim/action_authorization_helper.rb +5 -4
  440. data/lib/decidim/amendable.rb +4 -4
  441. data/lib/decidim/api/functions/user_entity_finder.rb +1 -1
  442. data/lib/decidim/api/input_filters/component_input_filter.rb +3 -3
  443. data/lib/decidim/api/input_filters/user_entity_input_filter.rb +0 -21
  444. data/lib/decidim/api/input_sorts/has_likeable_input_sort.rb +15 -0
  445. data/lib/decidim/api/interfaces/attachable_collection_interface.rb +13 -0
  446. data/lib/decidim/api/interfaces/author_interface.rb +1 -2
  447. data/lib/decidim/api/interfaces/authorable_interface.rb +2 -2
  448. data/lib/decidim/api/interfaces/coauthorable_interface.rb +1 -1
  449. data/lib/decidim/api/interfaces/component_interface.rb +6 -0
  450. data/lib/decidim/api/interfaces/followable_interface.rb +13 -0
  451. data/lib/decidim/api/interfaces/likeable_interface.rb +19 -0
  452. data/lib/decidim/api/interfaces/localizable_interface.rb +18 -0
  453. data/lib/decidim/api/interfaces/participatory_space_interface.rb +6 -8
  454. data/lib/decidim/api/interfaces/referable_interface.rb +13 -0
  455. data/lib/decidim/api/interfaces/timestamps_interface.rb +0 -1
  456. data/lib/decidim/api/interfaces/traceable_interface.rb +1 -1
  457. data/lib/decidim/api/types/attachment_collection_type.rb +14 -0
  458. data/lib/decidim/api/types/organization_type.rb +3 -1
  459. data/lib/decidim/api/types/session_type.rb +0 -5
  460. data/lib/decidim/api/types/statistic_type.rb +29 -3
  461. data/lib/decidim/api/types/trace_version_type.rb +1 -1
  462. data/lib/decidim/api/types/user_type.rb +1 -2
  463. data/lib/decidim/api_response_helper.rb +12 -0
  464. data/lib/decidim/asset_router/storage.rb +2 -4
  465. data/lib/decidim/assets/tailwind/instance.rb +1 -1
  466. data/lib/decidim/assets/tailwind/tailwind.config.js.erb +4 -3
  467. data/lib/decidim/attribute_encryptor.rb +1 -1
  468. data/lib/decidim/attributes/time_with_zone.rb +1 -1
  469. data/lib/decidim/authorable.rb +5 -34
  470. data/lib/decidim/coauthorable.rb +13 -31
  471. data/lib/decidim/content_parsers/blob_parser.rb +1 -1
  472. data/lib/decidim/content_parsers/mention_resource_parser.rb +23 -0
  473. data/lib/decidim/content_parsers/tag_parser.rb +2 -2
  474. data/lib/decidim/content_parsers/user_parser.rb +2 -2
  475. data/lib/decidim/content_parsers.rb +14 -2
  476. data/lib/decidim/content_processor.rb +1 -1
  477. data/lib/decidim/content_renderers/mention_resource_renderer.rb +77 -0
  478. data/lib/decidim/content_renderers.rb +1 -2
  479. data/lib/decidim/core/api.rb +7 -8
  480. data/lib/decidim/core/content_blocks/registry_manager.rb +19 -5
  481. data/lib/decidim/core/engine.rb +72 -104
  482. data/lib/decidim/core/menu.rb +0 -7
  483. data/lib/decidim/core/seeds.rb +11 -39
  484. data/lib/decidim/core/test/factories.rb +22 -121
  485. data/lib/decidim/core/test/shared_examples/authorable.rb +0 -17
  486. data/lib/decidim/core/test/shared_examples/coauthorable.rb +5 -48
  487. data/lib/decidim/core/test/shared_examples/comments_examples.rb +7 -56
  488. data/lib/decidim/core/test/shared_examples/likeable.rb +22 -0
  489. data/lib/decidim/core/test/shared_examples/manage_share_tokens_examples.rb +16 -3
  490. data/lib/decidim/core/test/shared_examples/map_examples.rb +1 -1
  491. data/lib/decidim/core/test/shared_examples/oauth_application_examples.rb +137 -0
  492. data/lib/decidim/core/test/shared_examples/participatory_space_dropdown_metadata_cell_examples.rb +0 -18
  493. data/lib/decidim/core/test/shared_examples/permissions.rb +0 -46
  494. data/lib/decidim/core/test/shared_examples/reports_examples.rb +2 -2
  495. data/lib/decidim/core/test/shared_examples/{resource_endorsed_event_examples.rb → resource_liked_event_examples.rb} +7 -7
  496. data/lib/decidim/core/test/shared_examples/resource_search_examples.rb +0 -14
  497. data/lib/decidim/core/test/shared_examples/searchable_results_examples.rb +8 -34
  498. data/lib/decidim/core/test/shared_examples/social_share_examples.rb +79 -0
  499. data/lib/decidim/core/test/shared_examples/system_like_resource_examples.rb +192 -0
  500. data/lib/decidim/core/test/shared_examples/uncommentable_component_examples.rb +2 -2
  501. data/lib/decidim/core/test/shared_examples/{with_endorsable_permissions_examples.rb → with_likeable_permissions_examples.rb} +22 -22
  502. data/lib/decidim/core/test.rb +6 -9
  503. data/lib/decidim/core/version.rb +1 -1
  504. data/lib/decidim/core.rb +237 -88
  505. data/lib/decidim/deprecations.rb +1 -1
  506. data/lib/decidim/download_your_data_serializers.rb +6 -3
  507. data/lib/decidim/env.rb +3 -1
  508. data/lib/decidim/events.rb +0 -1
  509. data/lib/decidim/form_builder.rb +26 -43
  510. data/lib/decidim/gamification/badge_scorer.rb +0 -2
  511. data/lib/decidim/gamification.rb +1 -1
  512. data/lib/decidim/has_conversations.rb +0 -44
  513. data/lib/decidim/has_workflows.rb +42 -0
  514. data/lib/decidim/icon_registry.rb +4 -4
  515. data/lib/decidim/legacy_form_builder.rb +17 -2
  516. data/lib/decidim/likeable.rb +24 -0
  517. data/lib/decidim/manifest_registry.rb +1 -1
  518. data/lib/decidim/map/provider/dynamic_map/here.rb +0 -19
  519. data/lib/decidim/map/provider/static_map/here.rb +2 -10
  520. data/lib/decidim/menu.rb +1 -1
  521. data/lib/decidim/moderation_tools.rb +1 -1
  522. data/lib/decidim/mutation_registry.rb +17 -0
  523. data/lib/decidim/newsletter_encryptor.rb +1 -1
  524. data/lib/decidim/oauth/token_generator.rb +35 -0
  525. data/lib/decidim/oauth.rb +7 -0
  526. data/lib/decidim/organization_settings.rb +2 -10
  527. data/lib/decidim/paddable.rb +1 -1
  528. data/lib/decidim/participatory_space_resourceable.rb +2 -2
  529. data/lib/decidim/participatory_space_user.rb +1 -1
  530. data/lib/decidim/pdf_signature_example.rb +108 -0
  531. data/lib/decidim/query.rb +1 -1
  532. data/lib/decidim/query_extensions.rb +0 -33
  533. data/lib/decidim/reportable.rb +1 -1
  534. data/lib/decidim/searchable.rb +4 -2
  535. data/lib/decidim/seeds.rb +8 -0
  536. data/lib/decidim/settings_manifest.rb +3 -2
  537. data/lib/decidim/{webpacker → shakapacker}/configuration.rb +4 -4
  538. data/lib/decidim/{webpacker → shakapacker}/runner.rb +3 -3
  539. data/lib/decidim/shakapacker/shakapacker.rb +8 -0
  540. data/lib/decidim/{webpacker → shakapacker}/shakapacker.yml +3 -1
  541. data/lib/decidim/{webpacker → shakapacker}/webpack/custom.js +1 -1
  542. data/lib/decidim/shakapacker.rb +34 -0
  543. data/lib/decidim/social_share_service_manifest.rb +7 -12
  544. data/lib/decidim/stats_registry.rb +15 -3
  545. data/{app/helpers → lib}/decidim/tooltip_helper.rb +3 -3
  546. data/lib/decidim/url_option_resolver.rb +1 -1
  547. data/lib/decidim/view_model.rb +0 -3
  548. data/lib/decidim/webpacker.rb +11 -20
  549. data/lib/decidim/workflow_registry.rb +61 -0
  550. data/lib/tasks/decidim_participants_tasks.rake +22 -0
  551. data/lib/tasks/{decidim_webpacker_tasks.rake → decidim_shakapacker_tasks.rake} +35 -33
  552. data/lib/tasks/decidim_tasks.rake +4 -1
  553. data/lib/tasks/decidim_taxonomies.rake +0 -34
  554. data/lib/tasks/upgrade/clean.rake +1 -1
  555. data/lib/tasks/upgrade/decidim_action_log_valuation_assignment.rake +13 -0
  556. data/lib/tasks/upgrade/decidim_change_valuator_tasks.rake +12 -0
  557. data/lib/tasks/upgrade/{decidim_deduplicate_endorsements.rake → decidim_deduplicate_likes.rake} +10 -10
  558. data/lib/tasks/upgrade/decidim_migrate_wysiwyg_content.rake +2 -2
  559. data/lib/tasks/upgrade/decidim_paper_trail_valuation_assignment.rake +13 -0
  560. data/lib/tasks/upgrade/user_groups_migration.rake +188 -0
  561. metadata +204 -255
  562. data/app/cells/decidim/author/endorsements.erb +0 -4
  563. data/app/cells/decidim/author/profile_minicard.erb +0 -30
  564. data/app/cells/decidim/content_blocks/organization_metrics_cell.rb +0 -21
  565. data/app/cells/decidim/content_blocks/participatory_space_metrics/content.erb +0 -18
  566. data/app/cells/decidim/content_blocks/participatory_space_metrics_cell.rb +0 -43
  567. data/app/cells/decidim/endorsement_block/show.erb +0 -3
  568. data/app/cells/decidim/endorsement_buttons/button_content.erb +0 -2
  569. data/app/cells/decidim/endorsement_buttons/select_identity_button.erb +0 -7
  570. data/app/cells/decidim/endorsement_buttons/show.erb +0 -17
  571. data/app/cells/decidim/endorsement_buttons_cell.rb +0 -87
  572. data/app/cells/decidim/endorsers_list/empty.erb +0 -3
  573. data/app/cells/decidim/endorsers_list/show.erb +0 -20
  574. data/app/cells/decidim/endorsers_list_cell.rb +0 -64
  575. data/app/cells/decidim/group_admins/show.erb +0 -34
  576. data/app/cells/decidim/group_admins_cell.rb +0 -8
  577. data/app/cells/decidim/group_members/show.erb +0 -46
  578. data/app/cells/decidim/group_members_cell.rb +0 -8
  579. data/app/cells/decidim/groups/show.erb +0 -14
  580. data/app/cells/decidim/groups_cell.rb +0 -22
  581. data/app/cells/decidim/members/show.erb +0 -12
  582. data/app/cells/decidim/members_cell.rb +0 -34
  583. data/app/cells/decidim/profile_actions/dropdown_actions.erb +0 -21
  584. data/app/cells/decidim/represent_user_group/show.erb +0 -11
  585. data/app/cells/decidim/represent_user_group_cell.rb +0 -46
  586. data/app/cells/decidim/user_conversation/conversation_header.erb +0 -14
  587. data/app/cells/decidim/user_conversation/messages.erb +0 -1
  588. data/app/cells/decidim/user_conversation/new.erb +0 -6
  589. data/app/cells/decidim/user_conversation/reply.erb +0 -9
  590. data/app/cells/decidim/user_conversation/show.erb +0 -19
  591. data/app/cells/decidim/user_conversation/start.erb +0 -12
  592. data/app/cells/decidim/user_conversation_cell.rb +0 -62
  593. data/app/cells/decidim/user_conversations/new_conversation_button.erb +0 -20
  594. data/app/cells/decidim/user_conversations/show.erb +0 -13
  595. data/app/cells/decidim/user_conversations_cell.rb +0 -28
  596. data/app/cells/decidim/user_group_pending_invitations_list/show.erb +0 -28
  597. data/app/cells/decidim/user_group_pending_invitations_list_cell.rb +0 -26
  598. data/app/cells/decidim/user_group_pending_requests_list/show.erb +0 -27
  599. data/app/cells/decidim/user_group_pending_requests_list_cell.rb +0 -26
  600. data/app/commands/decidim/accept_group_invitation.rb +0 -43
  601. data/app/commands/decidim/accept_user_group_join_request.rb +0 -53
  602. data/app/commands/decidim/create_user_group.rb +0 -73
  603. data/app/commands/decidim/demote_membership.rb +0 -57
  604. data/app/commands/decidim/endorse_resource.rb +0 -66
  605. data/app/commands/decidim/invite_user_to_group.rb +0 -63
  606. data/app/commands/decidim/join_user_group.rb +0 -57
  607. data/app/commands/decidim/leave_user_group.rb +0 -47
  608. data/app/commands/decidim/promote_membership.rb +0 -55
  609. data/app/commands/decidim/reject_group_invitation.rb +0 -42
  610. data/app/commands/decidim/reject_user_group_join_request.rb +0 -53
  611. data/app/commands/decidim/remove_user_from_group.rb +0 -53
  612. data/app/commands/decidim/unendorse_resource.rb +0 -39
  613. data/app/commands/decidim/update_user_group.rb +0 -72
  614. data/app/controllers/concerns/decidim/user_groups.rb +0 -23
  615. data/app/controllers/decidim/endorsements_controller.rb +0 -71
  616. data/app/controllers/decidim/group_email_confirmations_controller.rb +0 -32
  617. data/app/controllers/decidim/group_invites_controller.rb +0 -104
  618. data/app/controllers/decidim/group_members_controller.rb +0 -75
  619. data/app/controllers/decidim/groups_controller.rb +0 -99
  620. data/app/controllers/decidim/own_user_groups_controller.rb +0 -15
  621. data/app/controllers/decidim/user_conversations_controller.rb +0 -133
  622. data/app/controllers/decidim/user_group_join_requests_controller.rb +0 -72
  623. data/app/events/decidim/demoted_membership_event.rb +0 -28
  624. data/app/events/decidim/invited_to_group_event.rb +0 -62
  625. data/app/events/decidim/join_request_accepted_event.rb +0 -28
  626. data/app/events/decidim/join_request_created_event.rb +0 -28
  627. data/app/events/decidim/join_request_rejected_event.rb +0 -28
  628. data/app/events/decidim/promoted_to_admin_event.rb +0 -28
  629. data/app/events/decidim/removed_from_group_event.rb +0 -28
  630. data/app/events/decidim/resource_endorsed_event.rb +0 -36
  631. data/app/events/decidim/user_group_admin_event.rb +0 -37
  632. data/app/events/decidim/user_group_created_event.rb +0 -6
  633. data/app/events/decidim/user_group_updated_event.rb +0 -6
  634. data/app/forms/decidim/invite_user_to_group_form.rb +0 -29
  635. data/app/forms/decidim/user_group_form.rb +0 -87
  636. data/app/helpers/decidim/cta_button_helper.rb +0 -31
  637. data/app/helpers/decidim/endorsable_helper.rb +0 -84
  638. data/app/helpers/decidim/twitter_search_helper.rb +0 -14
  639. data/app/helpers/decidim/user_group_helper.rb +0 -22
  640. data/app/jobs/decidim/metric_job.rb +0 -15
  641. data/app/models/decidim/metric.rb +0 -25
  642. data/app/models/decidim/user_group.rb +0 -217
  643. data/app/models/decidim/user_group_membership.rb +0 -17
  644. data/app/packs/entrypoints/decidim_widget.js +0 -1
  645. data/app/packs/src/decidim/abide_form_validator_fixer.js +0 -44
  646. data/app/packs/src/decidim/account_form.js +0 -96
  647. data/app/packs/src/decidim/append_elements.js +0 -6
  648. data/app/packs/src/decidim/back_to_list.js +0 -26
  649. data/app/packs/src/decidim/change_report_form_behavior.js +0 -45
  650. data/app/packs/src/decidim/clipboard.js +0 -128
  651. data/app/packs/src/decidim/editor/extensions/hashtag/index.js +0 -66
  652. data/app/packs/src/decidim/editor/extensions/heading/index.js +0 -33
  653. data/app/packs/src/decidim/editor/test/extensions/hashtag.test.js +0 -105
  654. data/app/packs/src/decidim/form_filter.component_for_testing.js +0 -7
  655. data/app/packs/src/decidim/form_validator.js +0 -56
  656. data/app/packs/src/decidim/gallery.js +0 -5
  657. data/app/packs/src/decidim/impersonation.js +0 -23
  658. data/app/packs/src/decidim/input_autojump.js +0 -38
  659. data/app/packs/src/decidim/input_hashtags.js +0 -91
  660. data/app/packs/src/decidim/input_mentions.js +0 -143
  661. data/app/packs/src/decidim/input_multiple_mentions.js +0 -115
  662. data/app/packs/src/decidim/input_tags.js +0 -16
  663. data/app/packs/src/decidim/notifications_actions.js +0 -40
  664. data/app/packs/src/decidim/password_toggler.js +0 -104
  665. data/app/packs/src/decidim/remote_tooltips.js +0 -38
  666. data/app/packs/src/decidim/responsive_horizontal_tabs.js +0 -12
  667. data/app/packs/src/decidim/scroll_to_last_child.js +0 -14
  668. data/app/packs/src/decidim/slug_form.js +0 -9
  669. data/app/packs/src/decidim/sticky_footer.js +0 -48
  670. data/app/packs/src/decidim/sticky_header.js +0 -62
  671. data/app/packs/src/decidim/toggle.js +0 -37
  672. data/app/packs/src/decidim/tooltips.js +0 -152
  673. data/app/packs/src/decidim/user_registrations.js +0 -65
  674. data/app/packs/src/decidim/vizzs/areachart.js +0 -251
  675. data/app/packs/src/decidim/vizzs/index.js +0 -82
  676. data/app/packs/src/decidim/widget.js +0 -14
  677. data/app/packs/stylesheets/decidim/_hashtags.scss +0 -5
  678. data/app/packs/stylesheets/decidim/_metrics.scss +0 -70
  679. data/app/packs/stylesheets/decidim/_modal_identities.scss +0 -23
  680. data/app/presenters/decidim/admin_log/user_group_presenter.rb +0 -31
  681. data/app/presenters/decidim/hashtag_presenter.rb +0 -37
  682. data/app/presenters/decidim/metric_charts_presenter.rb +0 -92
  683. data/app/presenters/decidim/metric_object_presenter.rb +0 -32
  684. data/app/presenters/decidim/user_group_presenter.rb +0 -38
  685. data/app/queries/decidim/metric_manage.rb +0 -81
  686. data/app/queries/decidim/metric_measure.rb +0 -36
  687. data/app/queries/decidim/metrics/blocked_users_metric_manage.rb +0 -26
  688. data/app/queries/decidim/metrics/followers_metric_manage.rb +0 -65
  689. data/app/queries/decidim/metrics/participants_metric_manage.rb +0 -79
  690. data/app/queries/decidim/metrics/reported_users_metric_manage.rb +0 -26
  691. data/app/queries/decidim/metrics/user_reports_metric_manage.rb +0 -26
  692. data/app/queries/decidim/metrics/users_metric_manage.rb +0 -26
  693. data/app/queries/decidim/user_groups/accepted_memberships.rb +0 -36
  694. data/app/queries/decidim/user_groups/accepted_user_groups.rb +0 -38
  695. data/app/queries/decidim/user_groups/accepted_users.rb +0 -36
  696. data/app/queries/decidim/user_groups/admin_memberships.rb +0 -37
  697. data/app/queries/decidim/user_groups/invited_memberships.rb +0 -36
  698. data/app/queries/decidim/user_groups/manageable_user_groups.rb +0 -39
  699. data/app/queries/decidim/user_groups/member_memberships.rb +0 -37
  700. data/app/resolvers/decidim/core/metric_resolver.rb +0 -71
  701. data/app/resolvers/decidim/hashtags_resolver.rb +0 -15
  702. data/app/serializers/decidim/exporters/open_data_metric_serializer.rb +0 -22
  703. data/app/serializers/decidim/exporters/open_data_user_group_serializer.rb +0 -38
  704. data/app/views/decidim/endorsements/_identity.html.erb +0 -4
  705. data/app/views/decidim/endorsements/identities.html.erb +0 -18
  706. data/app/views/decidim/endorsements/update_buttons_and_counters.js.erb +0 -25
  707. data/app/views/decidim/group_invites/index.html.erb +0 -26
  708. data/app/views/decidim/groups/_form.html.erb +0 -17
  709. data/app/views/decidim/groups/edit.html.erb +0 -19
  710. data/app/views/decidim/groups/new.html.erb +0 -23
  711. data/app/views/decidim/messaging/conversation_mailer/comanagers_new_conversation.html.erb +0 -17
  712. data/app/views/decidim/messaging/conversation_mailer/comanagers_new_message.html.erb +0 -17
  713. data/app/views/decidim/messaging/conversation_mailer/new_group_conversation.html.erb +0 -17
  714. data/app/views/decidim/messaging/conversation_mailer/new_group_message.html.erb +0 -17
  715. data/app/views/decidim/own_user_groups/index.html.erb +0 -10
  716. data/app/views/decidim/shared/_extended_navigation_bar.html.erb +0 -50
  717. data/app/views/decidim/user_conversations/index.html.erb +0 -4
  718. data/app/views/decidim/user_conversations/show.html.erb +0 -4
  719. data/app/views/decidim/user_conversations/update.js.erb +0 -8
  720. data/config/initializers/new_framework_defaults_7_0.rb +0 -145
  721. data/lib/decidim/api/input_filters/has_hastaggable_input_filter.rb +0 -15
  722. data/lib/decidim/api/input_sorts/has_endorsable_input_sort.rb +0 -15
  723. data/lib/decidim/api/interfaces/endorsable_interface.rb +0 -19
  724. data/lib/decidim/api/types/hashtag_type.rb +0 -13
  725. data/lib/decidim/api/types/metric_history_type.rb +0 -20
  726. data/lib/decidim/api/types/metric_type.rb +0 -13
  727. data/lib/decidim/api/types/user_group_type.rb +0 -55
  728. data/lib/decidim/content_parsers/hashtag_parser.rb +0 -66
  729. data/lib/decidim/content_parsers/user_group_parser.rb +0 -33
  730. data/lib/decidim/content_renderers/hashtag_renderer.rb +0 -78
  731. data/lib/decidim/content_renderers/user_group_renderer.rb +0 -31
  732. data/lib/decidim/core/test/shared_examples/amendable_interface_examples.rb +0 -14
  733. data/lib/decidim/core/test/shared_examples/amendable_proposals_interface_examples.rb +0 -50
  734. data/lib/decidim/core/test/shared_examples/assembly_announcements_examples.rb +0 -38
  735. data/lib/decidim/core/test/shared_examples/attachable_interface_examples.rb +0 -16
  736. data/lib/decidim/core/test/shared_examples/authorable_interface_examples.rb +0 -59
  737. data/lib/decidim/core/test/shared_examples/categories_container_examples.rb +0 -22
  738. data/lib/decidim/core/test/shared_examples/categorizable_interface_examples.rb +0 -27
  739. data/lib/decidim/core/test/shared_examples/coauthorable_interface_examples.rb +0 -91
  740. data/lib/decidim/core/test/shared_examples/endorsable.rb +0 -69
  741. data/lib/decidim/core/test/shared_examples/endorsable_interface_examples.rb +0 -22
  742. data/lib/decidim/core/test/shared_examples/fingerprintable_interface_examples.rb +0 -17
  743. data/lib/decidim/core/test/shared_examples/input_filter_examples.rb +0 -118
  744. data/lib/decidim/core/test/shared_examples/input_sort_examples.rb +0 -126
  745. data/lib/decidim/core/test/shared_examples/metric_manage_shared_context.rb +0 -9
  746. data/lib/decidim/core/test/shared_examples/participatory_space_resourcable_interface_examples.rb +0 -43
  747. data/lib/decidim/core/test/shared_examples/process_announcements_examples.rb +0 -37
  748. data/lib/decidim/core/test/shared_examples/scopable_interface_examples.rb +0 -19
  749. data/lib/decidim/core/test/shared_examples/system_endorse_resource_examples.rb +0 -298
  750. data/lib/decidim/core/test/shared_examples/taxonomizable_interface_examples.rb +0 -20
  751. data/lib/decidim/core/test/shared_examples/timestamps_interface_examples.rb +0 -21
  752. data/lib/decidim/core/test/shared_examples/traceable_interface_examples.rb +0 -47
  753. data/lib/decidim/download_your_data_serializers/download_your_data_user_group_serializer.rb +0 -21
  754. data/lib/decidim/endorsable.rb +0 -29
  755. data/lib/decidim/events/user_group_event.rb +0 -43
  756. data/lib/decidim/hashtag.rb +0 -13
  757. data/lib/decidim/metric_manifest.rb +0 -35
  758. data/lib/decidim/metric_operation.rb +0 -58
  759. data/lib/decidim/metric_operation_manifest.rb +0 -21
  760. data/lib/decidim/metric_registry.rb +0 -109
  761. data/lib/gem_overrides/shakapacker/runner.rb +0 -9
  762. data/lib/tasks/decidim_metrics_tasks.rake +0 -89
  763. /data/app/cells/decidim/{endorsement_buttons/disabled_endorsements.erb → like_buttons/disabled_likes.erb} +0 -0
  764. /data/app/packs/src/decidim/{configuration.js → refactor/implementation/configuration.js} +0 -0
  765. /data/app/packs/src/decidim/{external_domain_warning.js → refactor/implementation/external_domain_warning.js} +0 -0
  766. /data/app/packs/src/decidim/{autocomplete.js → refactor/moved/autocomplete.js} +0 -0
  767. /data/app/packs/src/decidim/{delayed.js → refactor/moved/delayed.js} +0 -0
  768. /data/app/packs/src/decidim/{focus_guard.js → refactor/moved/focus_guard.js} +0 -0
  769. /data/app/packs/src/decidim/{history.js → refactor/moved/history.js} +0 -0
  770. /data/app/packs/src/decidim/{i18n.js → refactor/moved/i18n.js} +0 -0
  771. /data/lib/decidim/core/test/shared_examples/{endorsements_controller_shared_context.rb → likes_controller_shared_context.rb} +0 -0
  772. /data/{app/helpers → lib}/decidim/resource_helper.rb +0 -0
  773. /data/lib/decidim/{webpacker → shakapacker}/esbuild.config.js +0 -0
  774. /data/lib/decidim/{webpacker → shakapacker}/postcss.config.js +0 -0
  775. /data/lib/decidim/{webpacker → shakapacker}/tsconfig.json +0 -0
  776. /data/lib/decidim/{webpacker → shakapacker}/webpack/.modernizrrc +0 -0
  777. /data/lib/decidim/{webpacker → shakapacker}/webpack/webpack.config.js +0 -0
@@ -1,99 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- # The controller to handle user groups creation
5
- class GroupsController < Decidim::ApplicationController
6
- include FormFactory
7
- include UserGroups
8
- include HasProfileBreadcrumb
9
-
10
- before_action :enforce_user_groups_enabled
11
- before_action :ensure_user_group_not_blocked
12
-
13
- def new
14
- enforce_permission_to(:create, :user_group, current_user:)
15
- @form = form(UserGroupForm).instance
16
- end
17
-
18
- def create
19
- enforce_permission_to(:create, :user_group, current_user:)
20
- @form = form(UserGroupForm).from_params(params)
21
-
22
- CreateUserGroup.call(@form) do
23
- on(:ok) do |user_group|
24
- flash[:notice] = t("groups.create.success", scope: "decidim")
25
-
26
- redirect_to profile_path(user_group.nickname)
27
- end
28
-
29
- on(:invalid) do
30
- flash[:alert] = t("groups.create.error", scope: "decidim")
31
- render action: :new
32
- end
33
- end
34
- end
35
-
36
- def edit
37
- enforce_permission_to(:manage, :user_group, current_user:, user_group:)
38
- @form = form(UserGroupForm).from_model(user_group)
39
- end
40
-
41
- def update
42
- enforce_permission_to(:manage, :user_group, current_user:, user_group:)
43
- @form = form(UserGroupForm).from_params(user_group_params)
44
-
45
- UpdateUserGroup.call(@form, user_group) do
46
- on(:ok) do |user_group|
47
- flash[:notice] = t("groups.update.success", scope: "decidim")
48
-
49
- redirect_to profile_path(user_group.nickname)
50
- end
51
-
52
- on(:invalid) do
53
- flash[:alert] = t("groups.update.error", scope: "decidim")
54
- render action: :edit
55
- end
56
- end
57
- end
58
-
59
- def leave
60
- enforce_permission_to :leave, :user_group, user_group: accepted_user_group
61
-
62
- LeaveUserGroup.call(current_user, accepted_user_group) do
63
- on(:ok) do
64
- flash[:notice] = t("groups.leave.success", scope: "decidim")
65
-
66
- redirect_back fallback_location: profile_path(accepted_user_group.nickname)
67
- end
68
-
69
- on(:last_admin) do
70
- flash[:alert] = t("groups.leave.last_admin", scope: "decidim")
71
- redirect_back fallback_location: profile_path(accepted_user_group.nickname)
72
- end
73
-
74
- on(:invalid) do
75
- flash[:alert] = t("groups.leave.error", scope: "decidim")
76
- redirect_back fallback_location: profile_path(accepted_user_group.nickname)
77
- end
78
- end
79
- end
80
-
81
- private
82
-
83
- def ensure_user_group_not_blocked
84
- raise ActionController::RoutingError, "Blocked User Group" if user_group&.blocked?
85
- end
86
-
87
- def accepted_user_group
88
- @accepted_user_group ||= Decidim::UserGroups::AcceptedUserGroups.for(current_user).find_by(nickname: params[:id])
89
- end
90
-
91
- def user_group
92
- @user_group ||= Decidim::UserGroups::ManageableUserGroups.for(current_user).find_by(nickname: params[:id])
93
- end
94
-
95
- def user_group_params
96
- params[:group].merge(id: user_group.id)
97
- end
98
- end
99
- end
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- # The controller to handle managing the current user's
5
- # UserGroups.
6
- class OwnUserGroupsController < Decidim::ApplicationController
7
- include UserProfile
8
-
9
- before_action :enforce_user_groups_enabled
10
-
11
- def index
12
- @user_groups = current_user.user_groups
13
- end
14
- end
15
- end
@@ -1,133 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- # The controller to show all the conversations for a user or group
5
- # This controller places conversations in the public profile page.
6
- # Only for groups at the moment but it will make conversations_controller
7
- # obsolete in the future
8
- class UserConversationsController < Decidim::ApplicationController
9
- include Paginable
10
- include UserGroups
11
- include FormFactory
12
- include Messaging::ConversationHelper
13
- include HasProfileBreadcrumb
14
- include AjaxPermissionHandler
15
-
16
- before_action :authenticate_user!
17
- before_action :ensure_profile_manager
18
-
19
- helper Decidim::ResourceHelper
20
- helper_method :user, :conversations, :conversation
21
-
22
- def index
23
- enforce_permission_to :list, :conversation, interlocutor: user
24
- end
25
-
26
- # shows a conversation thread and presents a form to reply in ajax
27
- def show
28
- enforce_permission_to(:show, :conversation, interlocutor: user, conversation:)
29
-
30
- conversation.mark_as_read(current_user)
31
- end
32
-
33
- # receive replies in ajax, messages are returned through the view update.js.erb and printed
34
- # over the form instead of using flash messages
35
- def update
36
- enforce_permission_to(:update, :conversation, interlocutor: user, conversation:)
37
-
38
- @form = form(Messaging::MessageForm).from_params(params, sender: user)
39
-
40
- Messaging::ReplyToConversation.call(conversation, @form) do
41
- on(:ok) do |message|
42
- render action: :update, locals: { message: }
43
- end
44
-
45
- on(:invalid) do
46
- render_unprocessable_entity I18n.t("user_conversations.update.error", scope: "decidim")
47
- end
48
- end
49
- end
50
-
51
- # Shows the form to initiate a conversation with one or more users/groups (the recipients)
52
- # recipients are passed via GET parameters:
53
- # - if no recipient are valid, redirects back to the users profile page
54
- # - if the user already has a conversation with the user(s), redirects to the initiated conversation
55
- def new
56
- @form = form(Messaging::ConversationForm).from_params(params, sender: user)
57
-
58
- return redirect_back(fallback_location: profile_path(user.nickname)) if @form.recipient.empty?
59
-
60
- @conversation = new_conversation(@form.recipient)
61
-
62
- # redirect to existing conversation if already started
63
- return redirect_to profile_conversation_path(nickname: user.nickname, id: @conversation.id) if @conversation.id
64
-
65
- enforce_permission_to :create, :conversation, interlocutor: user, conversation: @conversation
66
-
67
- render :show
68
- end
69
-
70
- def create
71
- @form = form(Messaging::ConversationForm).from_params(params, sender: user)
72
- @conversation = new_conversation(@form.recipient)
73
-
74
- enforce_permission_to :create, :conversation, interlocutor: user, conversation: @conversation
75
-
76
- # do not allow to create multiple conversation to the same actors if already started
77
- if @conversation.id
78
- flash[:alert] = I18n.t("user_conversations.create.existing_error", scope: "decidim")
79
- return redirect_to profile_conversation_path(nickname: user.nickname, id: @conversation.id)
80
- end
81
- Messaging::StartConversation.call(@form) do
82
- on(:ok) do |_conversation|
83
- flash[:notice] = I18n.t("user_conversations.create.success", scope: "decidim")
84
- return redirect_to profile_conversations_path(nickname: user.nickname)
85
- end
86
- on(:invalid) do
87
- flash[:alert] = I18n.t("user_conversations.create.error", scope: "decidim")
88
- render action: :show
89
- end
90
- end
91
- end
92
-
93
- private
94
-
95
- def render_unprocessable_entity(message)
96
- render action: :update, locals: { error: message }, status: :unprocessable_entity
97
- end
98
-
99
- def user
100
- @user ||= Decidim::UserBaseEntity.find_by(nickname: params[:nickname], organization: current_organization)
101
- end
102
-
103
- def conversations
104
- paginate(Messaging::UserConversations.for(user))
105
- end
106
-
107
- def conversation
108
- @conversation ||= Messaging::Conversation.find(params[:id])
109
- end
110
-
111
- def new_conversation(recipients)
112
- conversation = conversation_between_multiple([user] + recipients)
113
- return conversation if conversation
114
-
115
- Messaging::Conversation.new(participants: [user] + recipients)
116
- end
117
-
118
- def ensure_profile_manager
119
- return if user.is_a?(UserGroup) && current_user.manageable_user_groups.include?(user)
120
-
121
- # For the moment, this controller is only for UserGroup profiles,
122
- # next line may be removed if in the future user conversations are handled in the
123
- # profile page as well
124
- return redirect_to conversations_path if user == current_user
125
-
126
- # if the previous line is removed, next must be uncommented to ensure only authorized
127
- # users access to the page
128
- # return if user == current_user
129
-
130
- raise ActionController::RoutingError, "Conversation not found"
131
- end
132
- end
133
- end
@@ -1,72 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- # The controller to handle user groups join requests.
5
- class UserGroupJoinRequestsController < Decidim::ApplicationController
6
- include FormFactory
7
- include UserGroups
8
-
9
- before_action :enforce_user_groups_enabled
10
-
11
- def create
12
- enforce_permission_to :join, :user_group
13
-
14
- JoinUserGroup.call(current_user, user_group) do
15
- on(:ok) do
16
- flash[:notice] = t("groups.join.success", scope: "decidim")
17
-
18
- redirect_back fallback_location: profile_members_path(user_group.nickname)
19
- end
20
-
21
- on(:invalid) do
22
- flash[:alert] = t("groups.join.error", scope: "decidim")
23
- redirect_back fallback_location: profile_members_path(user_group.nickname)
24
- end
25
- end
26
- end
27
-
28
- def update
29
- enforce_permission_to(:manage, :user_group, user_group:)
30
-
31
- AcceptUserGroupJoinRequest.call(membership) do
32
- on(:ok) do
33
- flash[:notice] = t("group_members.accept.success", scope: "decidim")
34
-
35
- redirect_back fallback_location: profile_group_members_path(user_group.nickname)
36
- end
37
-
38
- on(:invalid) do
39
- flash[:alert] = t("group_members.accept.error", scope: "decidim")
40
- redirect_back fallback_location: profile_group_members_path(user_group.nickname)
41
- end
42
- end
43
- end
44
-
45
- def destroy
46
- enforce_permission_to(:manage, :user_group, user_group:)
47
-
48
- RejectUserGroupJoinRequest.call(membership) do
49
- on(:ok) do
50
- flash[:notice] = t("group_members.reject.success", scope: "decidim")
51
-
52
- redirect_back fallback_location: profile_group_members_path(user_group.nickname)
53
- end
54
-
55
- on(:invalid) do
56
- flash[:alert] = t("group_members.reject.error", scope: "decidim")
57
- redirect_back fallback_location: profile_group_members_path(user_group.nickname)
58
- end
59
- end
60
- end
61
-
62
- private
63
-
64
- def user_group
65
- @user_group ||= Decidim::UserGroup.where(organization: current_user.organization).find_by(nickname: params[:group_id])
66
- end
67
-
68
- def membership
69
- @membership ||= Decidim::UserGroupMembership.where(user_group:).find(params[:id])
70
- end
71
- end
72
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- class DemotedMembershipEvent < Decidim::Events::SimpleEvent
5
- delegate :url_helpers, to: "Decidim::Core::Engine.routes"
6
-
7
- i18n_attributes :user_group_name
8
-
9
- def resource_url
10
- url_helpers.profile_group_members_url(
11
- user_group_nickname,
12
- host: user.organization.host
13
- )
14
- end
15
-
16
- def resource_path
17
- url_helpers.profile_group_members_path(user_group_nickname)
18
- end
19
-
20
- def user_group_nickname
21
- extra["user_group_nickname"]
22
- end
23
-
24
- def user_group_name
25
- extra["user_group_name"]
26
- end
27
- end
28
- end
@@ -1,62 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- class InvitedToGroupEvent < Decidim::Events::SimpleEvent
5
- delegate :url_helpers, to: "Decidim::Core::Engine.routes"
6
-
7
- i18n_attributes :user_group_name
8
- i18n_attributes :groups_profile_tab_path
9
-
10
- def resource_url
11
- url_helpers.profile_url(
12
- user_group_nickname,
13
- host: user.organization.host
14
- )
15
- end
16
-
17
- def resource_path
18
- url_helpers.profile_path(user_group_nickname)
19
- end
20
-
21
- def groups_profile_tab_path
22
- url_helpers.profile_groups_path(user.nickname)
23
- end
24
-
25
- def user_group_nickname
26
- extra["user_group_nickname"]
27
- end
28
-
29
- def user_group_name
30
- extra["user_group_name"]
31
- end
32
-
33
- def membership_id
34
- extra["membership_id"]
35
- end
36
-
37
- def invitation
38
- @invitation ||= UserGroupMembership.find_by(user:, id: membership_id, role: "invited")
39
- end
40
-
41
- def action_cell
42
- "decidim/notification_actions/buttons" if invitation
43
- end
44
-
45
- def action_data
46
- [
47
- {
48
- url: url_helpers.group_invite_path(user_group_nickname, membership_id, format: :json),
49
- icon: "check-line",
50
- method: "patch",
51
- i18n_label: "decidim.group_invites.accept_invitation"
52
- },
53
- {
54
- url: url_helpers.group_invite_path(user_group_nickname, membership_id, format: :json),
55
- icon: "close-circle-line",
56
- method: "delete",
57
- i18n_label: "decidim.group_invites.reject_invitation"
58
- }
59
- ]
60
- end
61
- end
62
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- class JoinRequestAcceptedEvent < Decidim::Events::SimpleEvent
5
- delegate :url_helpers, to: "Decidim::Core::Engine.routes"
6
-
7
- i18n_attributes :user_group_name
8
-
9
- def resource_url
10
- url_helpers.profile_url(
11
- user_group_nickname,
12
- host: user.organization.host
13
- )
14
- end
15
-
16
- def resource_path
17
- url_helpers.profile_path(user_group_nickname)
18
- end
19
-
20
- def user_group_nickname
21
- extra["user_group_nickname"]
22
- end
23
-
24
- def user_group_name
25
- extra["user_group_name"]
26
- end
27
- end
28
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- class JoinRequestCreatedEvent < Decidim::Events::SimpleEvent
5
- delegate :url_helpers, to: "Decidim::Core::Engine.routes"
6
-
7
- i18n_attributes :user_group_name
8
-
9
- def resource_url
10
- url_helpers.profile_group_members_url(
11
- user_group_nickname,
12
- host: user.organization.host
13
- )
14
- end
15
-
16
- def resource_path
17
- url_helpers.profile_group_members_path(user_group_nickname)
18
- end
19
-
20
- def user_group_nickname
21
- extra["user_group_nickname"]
22
- end
23
-
24
- def user_group_name
25
- extra["user_group_name"]
26
- end
27
- end
28
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- class JoinRequestRejectedEvent < Decidim::Events::SimpleEvent
5
- delegate :url_helpers, to: "Decidim::Core::Engine.routes"
6
-
7
- i18n_attributes :user_group_name
8
-
9
- def resource_url
10
- url_helpers.profile_url(
11
- user_group_nickname,
12
- host: user.organization.host
13
- )
14
- end
15
-
16
- def resource_path
17
- url_helpers.profile_path(user_group_nickname)
18
- end
19
-
20
- def user_group_nickname
21
- extra["user_group_nickname"]
22
- end
23
-
24
- def user_group_name
25
- extra["user_group_name"]
26
- end
27
- end
28
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- class PromotedToAdminEvent < Decidim::Events::SimpleEvent
5
- delegate :url_helpers, to: "Decidim::Core::Engine.routes"
6
-
7
- i18n_attributes :user_group_name
8
-
9
- def resource_url
10
- url_helpers.profile_group_members_url(
11
- user_group_nickname,
12
- host: user.organization.host
13
- )
14
- end
15
-
16
- def resource_path
17
- url_helpers.profile_group_members_path(user_group_nickname)
18
- end
19
-
20
- def user_group_nickname
21
- extra["user_group_nickname"]
22
- end
23
-
24
- def user_group_name
25
- extra["user_group_name"]
26
- end
27
- end
28
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- class RemovedFromGroupEvent < Decidim::Events::SimpleEvent
5
- delegate :url_helpers, to: "Decidim::Core::Engine.routes"
6
-
7
- i18n_attributes :user_group_name
8
-
9
- def resource_url
10
- url_helpers.profile_group_members_url(
11
- user_group_nickname,
12
- host: user.organization.host
13
- )
14
- end
15
-
16
- def resource_path
17
- url_helpers.profile_group_members_path(user_group_nickname)
18
- end
19
-
20
- def user_group_nickname
21
- extra["user_group_nickname"]
22
- end
23
-
24
- def user_group_name
25
- extra["user_group_name"]
26
- end
27
- end
28
- end
@@ -1,36 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- class ResourceEndorsedEvent < Decidim::Events::SimpleEvent
5
- i18n_attributes :endorser_nickname, :endorser_name, :endorser_path, :nickname, :resource_type
6
-
7
- delegate :nickname, :name, to: :endorser, prefix: true
8
-
9
- def nickname
10
- endorser_nickname
11
- end
12
-
13
- def endorser_path
14
- endorser.profile_path
15
- end
16
-
17
- def resource_text
18
- return resource.body if resource.respond_to? :body
19
- return resource.description if resource.respond_to? :description
20
- end
21
-
22
- def resource_type
23
- resource.class.model_name.human
24
- end
25
-
26
- private
27
-
28
- def endorser
29
- @endorser ||= Decidim::UserPresenter.new(endorser_user)
30
- end
31
-
32
- def endorser_user
33
- @endorser_user ||= Decidim::User.find_by(id: extra[:endorser_id])
34
- end
35
- end
36
- end
@@ -1,37 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- # To be used by UserGroup related events that trigger a notification to the administrators.
5
- class UserGroupAdminEvent < Decidim::Events::SimpleEvent
6
- delegate :url_helpers, to: "Decidim::Core::Engine.routes"
7
-
8
- i18n_attributes :user_group_name, :groups_admin_url, :groups_admin_path
9
-
10
- def resource_path
11
- url_helpers.profile_path(user_group_nickname)
12
- end
13
-
14
- def resource_url
15
- url_helpers.profile_url(
16
- user_group_nickname,
17
- host: user.organization.host
18
- )
19
- end
20
-
21
- def groups_admin_path
22
- Decidim::Admin::Engine.routes.url_helpers.user_groups_path
23
- end
24
-
25
- def groups_admin_url
26
- Decidim::Admin::Engine.routes.url_helpers.user_groups_url(host: user.organization.host)
27
- end
28
-
29
- def user_group_name
30
- resource.name
31
- end
32
-
33
- def user_group_nickname
34
- resource.nickname
35
- end
36
- end
37
- end
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- class UserGroupCreatedEvent < ::Decidim::UserGroupAdminEvent
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- class UserGroupUpdatedEvent < ::Decidim::UserGroupAdminEvent
5
- end
6
- end
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Decidim
4
- # The form object that handles the data behind creating a user group.
5
- class InviteUserToGroupForm < Form
6
- mimic :invite
7
-
8
- attribute :nickname, String
9
-
10
- validates :nickname, presence: true
11
- validate :user_exists
12
-
13
- def user
14
- @user ||= Decidim::User.find_by(nickname: clean_nickname, organization: current_organization)
15
- end
16
-
17
- private
18
-
19
- def clean_nickname
20
- nickname.to_s.tr("@", "")
21
- end
22
-
23
- def user_exists
24
- return true if user.present?
25
-
26
- errors.add :nickname, :invalid
27
- end
28
- end
29
- end