decidim-admin 0.27.5 → 0.28.0.rc4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (507) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +3 -3
  3. data/app/cells/decidim/admin/attachments_privacy_warning/show.erb +1 -1
  4. data/app/cells/decidim/admin/content_block/show.erb +11 -6
  5. data/app/cells/decidim/admin/content_block_cell.rb +21 -7
  6. data/app/cells/decidim/admin/homepage_content_block_cell.rb +19 -0
  7. data/app/cells/decidim/admin/results_per_page/show.erb +1 -1
  8. data/app/cells/decidim/admin/static_page_content_block_cell.rb +21 -0
  9. data/app/commands/decidim/admin/block_user.rb +15 -11
  10. data/app/commands/decidim/admin/close_session_managed_user.rb +1 -1
  11. data/app/commands/decidim/admin/content_blocks/create_content_block.rb +50 -0
  12. data/app/commands/decidim/admin/content_blocks/destroy_content_block.rb +36 -0
  13. data/app/commands/decidim/admin/content_blocks/reorder_content_blocks.rb +88 -0
  14. data/app/commands/decidim/admin/content_blocks/update_content_block.rb +81 -0
  15. data/app/commands/decidim/admin/create_area.rb +1 -1
  16. data/app/commands/decidim/admin/create_area_type.rb +1 -1
  17. data/app/commands/decidim/admin/create_attachment.rb +1 -1
  18. data/app/commands/decidim/admin/create_attachment_collection.rb +1 -1
  19. data/app/commands/decidim/admin/create_category.rb +1 -1
  20. data/app/commands/decidim/admin/create_newsletter.rb +1 -1
  21. data/app/commands/decidim/admin/create_participatory_space_private_user.rb +3 -3
  22. data/app/commands/decidim/admin/create_scope.rb +1 -1
  23. data/app/commands/decidim/admin/create_scope_type.rb +1 -1
  24. data/app/commands/decidim/admin/create_static_page.rb +1 -1
  25. data/app/commands/decidim/admin/create_static_page_topic.rb +1 -1
  26. data/app/commands/decidim/admin/destroy_area.rb +1 -1
  27. data/app/commands/decidim/admin/destroy_category.rb +1 -1
  28. data/app/commands/decidim/admin/destroy_participatory_space_private_user.rb +1 -1
  29. data/app/commands/decidim/admin/destroy_scope.rb +1 -1
  30. data/app/commands/decidim/admin/destroy_share_token.rb +1 -1
  31. data/app/commands/decidim/admin/destroy_static_page_topic.rb +1 -1
  32. data/app/commands/decidim/admin/hide_resource.rb +9 -35
  33. data/app/commands/decidim/admin/impersonate_user.rb +1 -1
  34. data/app/commands/decidim/admin/invite_admin.rb +1 -1
  35. data/app/commands/decidim/admin/participatory_space/create_admin.rb +132 -0
  36. data/app/commands/decidim/admin/participatory_space/destroy_admin.rb +61 -0
  37. data/app/commands/decidim/admin/participatory_space/publish.rb +41 -0
  38. data/app/commands/decidim/admin/participatory_space/unpublish.rb +41 -0
  39. data/app/commands/decidim/admin/participatory_space/update_admin.rb +72 -0
  40. data/app/commands/decidim/admin/process_participatory_space_private_user_import_csv.rb +4 -6
  41. data/app/commands/decidim/admin/process_user_group_verification_csv.rb +4 -7
  42. data/app/commands/decidim/admin/promote_managed_user.rb +1 -1
  43. data/app/commands/decidim/admin/reject_user_group.rb +1 -1
  44. data/app/commands/decidim/admin/update_area.rb +1 -1
  45. data/app/commands/decidim/admin/update_area_type.rb +1 -1
  46. data/app/commands/decidim/admin/update_attachment.rb +1 -1
  47. data/app/commands/decidim/admin/update_attachment_collection.rb +1 -1
  48. data/app/commands/decidim/admin/update_category.rb +1 -1
  49. data/app/commands/decidim/admin/update_component_permissions.rb +2 -2
  50. data/app/commands/decidim/admin/update_newsletter.rb +1 -1
  51. data/app/commands/decidim/admin/update_organization.rb +2 -2
  52. data/app/commands/decidim/admin/update_organization_appearance.rb +5 -7
  53. data/app/commands/decidim/admin/update_organization_tos_version.rb +3 -3
  54. data/app/commands/decidim/admin/update_resource_permissions.rb +1 -1
  55. data/app/commands/decidim/admin/update_scope.rb +1 -1
  56. data/app/commands/decidim/admin/update_scope_type.rb +1 -1
  57. data/app/commands/decidim/admin/update_static_page.rb +1 -1
  58. data/app/commands/decidim/admin/update_static_page_topic.rb +1 -1
  59. data/app/commands/decidim/admin/update_user_groups.rb +1 -1
  60. data/app/controllers/concerns/decidim/admin/content_blocks/landing_page.rb +130 -0
  61. data/app/controllers/concerns/decidim/admin/content_blocks/landing_page_content_blocks.rb +158 -0
  62. data/app/controllers/concerns/decidim/admin/filterable.rb +3 -3
  63. data/app/controllers/concerns/decidim/admin/global_moderation_context.rb +1 -20
  64. data/app/controllers/concerns/decidim/admin/logs/filterable.rb +31 -0
  65. data/app/controllers/concerns/decidim/admin/participatory_space_admin_breadcrumb.rb +38 -0
  66. data/app/controllers/concerns/decidim/admin/participatory_space_admin_context.rb +3 -2
  67. data/app/controllers/decidim/admin/admin_terms_controller.rb +3 -3
  68. data/app/controllers/decidim/admin/application_controller.rb +6 -1
  69. data/app/controllers/decidim/admin/area_types_controller.rb +10 -3
  70. data/app/controllers/decidim/admin/areas_controller.rb +10 -3
  71. data/app/controllers/decidim/admin/block_user_controller.rb +4 -3
  72. data/app/controllers/decidim/admin/categories_controller.rb +20 -12
  73. data/app/controllers/decidim/admin/component_permissions_controller.rb +2 -2
  74. data/app/controllers/decidim/admin/components/base_controller.rb +16 -1
  75. data/app/controllers/decidim/admin/components_controller.rb +13 -1
  76. data/app/controllers/decidim/admin/concerns/has_attachment_collections.rb +4 -10
  77. data/app/controllers/decidim/admin/concerns/has_attachments.rb +10 -16
  78. data/app/controllers/decidim/admin/concerns/has_breadcrumb_items.rb +27 -0
  79. data/app/controllers/decidim/admin/concerns/has_content_blocks.rb +23 -0
  80. data/app/controllers/decidim/admin/concerns/has_private_users.rb +4 -4
  81. data/app/controllers/decidim/admin/concerns/has_private_users_csv_import.rb +2 -2
  82. data/app/controllers/decidim/admin/concerns/has_tabbed_menu.rb +21 -0
  83. data/app/controllers/decidim/admin/conflicts_controller.rb +3 -3
  84. data/app/controllers/decidim/admin/dashboard_controller.rb +8 -3
  85. data/app/controllers/decidim/admin/exports_controller.rb +21 -4
  86. data/app/controllers/decidim/admin/help_sections_controller.rb +3 -1
  87. data/app/controllers/decidim/admin/impersonatable_users_controller.rb +3 -1
  88. data/app/controllers/decidim/admin/impersonations_controller.rb +8 -8
  89. data/app/controllers/decidim/admin/imports_controller.rb +24 -6
  90. data/app/controllers/decidim/admin/logs_controller.rb +20 -8
  91. data/app/controllers/decidim/admin/managed_users/impersonation_logs_controller.rb +1 -1
  92. data/app/controllers/decidim/admin/managed_users/promotions_controller.rb +2 -2
  93. data/app/controllers/decidim/admin/metrics_controller.rb +1 -1
  94. data/app/controllers/decidim/admin/moderated_users_controller.rb +7 -4
  95. data/app/controllers/decidim/admin/newsletters_controller.rb +16 -7
  96. data/app/controllers/decidim/admin/officializations_controller.rb +3 -3
  97. data/app/controllers/decidim/admin/organization_appearance_controller.rb +3 -0
  98. data/app/controllers/decidim/admin/organization_controller.rb +2 -0
  99. data/app/controllers/decidim/admin/organization_external_domain_whitelist_controller.rb +2 -0
  100. data/app/controllers/decidim/admin/organization_homepage_content_blocks_controller.rb +12 -41
  101. data/app/controllers/decidim/admin/organization_homepage_controller.rb +15 -33
  102. data/app/controllers/decidim/admin/participatory_space/user_role_controller.rb +119 -0
  103. data/app/controllers/decidim/admin/reminders_controller.rb +1 -1
  104. data/app/controllers/decidim/admin/resource_permissions_controller.rb +1 -1
  105. data/app/controllers/decidim/admin/scope_types_controller.rb +10 -3
  106. data/app/controllers/decidim/admin/scopes_controller.rb +10 -3
  107. data/app/controllers/decidim/admin/share_tokens_controller.rb +1 -1
  108. data/app/controllers/decidim/admin/space_publications_controller.rb +53 -0
  109. data/app/controllers/decidim/admin/static_page_content_blocks_controller.rb +40 -0
  110. data/app/controllers/decidim/admin/static_page_topics_controller.rb +18 -7
  111. data/app/controllers/decidim/admin/static_pages_controller.rb +33 -6
  112. data/app/controllers/decidim/admin/users_controller.rb +2 -2
  113. data/app/events/decidim/attachment_created_event.rb +1 -1
  114. data/app/events/decidim/component_published_event.rb +1 -1
  115. data/app/events/decidim/resource_hidden_event.rb +1 -1
  116. data/app/forms/decidim/admin/area_form.rb +1 -1
  117. data/app/forms/decidim/admin/block_user_form.rb +1 -0
  118. data/app/forms/decidim/admin/category_form.rb +1 -1
  119. data/app/forms/decidim/admin/managed_user_promotion_form.rb +1 -1
  120. data/app/forms/decidim/admin/organization_appearance_form.rb +7 -12
  121. data/app/forms/decidim/admin/organization_form.rb +2 -2
  122. data/app/forms/decidim/admin/participatory_space_admin_user_form.rb +16 -0
  123. data/app/forms/decidim/admin/participatory_space_private_user_csv_import_form.rb +3 -5
  124. data/app/forms/decidim/admin/scope_form.rb +1 -1
  125. data/app/forms/decidim/admin/selective_newsletter_form.rb +1 -1
  126. data/app/forms/decidim/admin/static_page_form.rb +3 -3
  127. data/app/helpers/decidim/admin/admin_terms_helper.rb +10 -10
  128. data/app/helpers/decidim/admin/application_helper.rb +1 -14
  129. data/app/helpers/decidim/admin/attributes_display_helper.rb +1 -1
  130. data/app/helpers/decidim/admin/bulk_actions_helper.rb +2 -2
  131. data/app/helpers/decidim/admin/dashboard_helper.rb +3 -3
  132. data/app/helpers/decidim/admin/exports_helper.rb +26 -2
  133. data/app/helpers/decidim/admin/filterable_helper.rb +2 -2
  134. data/app/helpers/decidim/admin/icon_link_helper.rb +12 -11
  135. data/app/helpers/decidim/admin/icon_with_tooltip_helper.rb +22 -0
  136. data/app/helpers/decidim/admin/imports_helper.rb +1 -1
  137. data/app/helpers/decidim/admin/logs_helper.rb +18 -0
  138. data/app/helpers/decidim/admin/menu_helper.rb +61 -1
  139. data/app/helpers/decidim/admin/moderations/reports_helper.rb +3 -2
  140. data/app/helpers/decidim/admin/newsletters_helper.rb +4 -4
  141. data/app/helpers/decidim/admin/paginable/per_page_helper.rb +1 -1
  142. data/app/helpers/decidim/admin/resource_permissions_helper.rb +2 -2
  143. data/app/helpers/decidim/admin/search_form_helper.rb +19 -0
  144. data/app/helpers/decidim/admin/settings_helper.rb +9 -8
  145. data/app/jobs/decidim/admin/application_job.rb +1 -1
  146. data/app/jobs/decidim/admin/expire_impersonation_job.rb +1 -1
  147. data/app/jobs/decidim/admin/import_participatory_space_private_user_csv_job.rb +2 -2
  148. data/app/jobs/decidim/admin/newsletter_job.rb +1 -1
  149. data/app/packs/entrypoints/decidim_admin.js +2 -23
  150. data/app/packs/entrypoints/decidim_admin.scss +1 -1
  151. data/app/packs/src/decidim/admin/application.js +0 -12
  152. data/app/packs/src/decidim/admin/officializations.js +21 -3
  153. data/app/packs/src/decidim/admin/participatory_space_search.js +268 -0
  154. data/app/packs/src/decidim/admin/scope_picker_enabler.component.js +2 -2
  155. data/app/packs/src/decidim/admin/sortable.js +0 -2
  156. data/app/packs/src/decidim/admin/tab_focus.js +3 -3
  157. data/app/packs/src/decidim/admin/toggle_nav.js +1 -1
  158. data/app/packs/src/decidim/admin/triadic_color_picker.js +128 -0
  159. data/app/packs/stylesheets/decidim/admin/_bulk_actions.scss +16 -0
  160. data/app/packs/stylesheets/decidim/admin/_cards.scss +171 -0
  161. data/app/packs/stylesheets/decidim/admin/_color_picker.scss +61 -0
  162. data/app/packs/stylesheets/decidim/admin/_component-show.scss +95 -0
  163. data/app/packs/stylesheets/decidim/admin/_data_picker.scss +55 -0
  164. data/app/packs/stylesheets/decidim/admin/_dropdown.scss +35 -0
  165. data/app/packs/stylesheets/decidim/admin/_filters.scss +94 -0
  166. data/app/packs/stylesheets/decidim/admin/_forms.scss +81 -0
  167. data/app/packs/stylesheets/decidim/admin/_item_edit.scss +122 -0
  168. data/app/packs/stylesheets/decidim/admin/_item_show.scss +69 -0
  169. data/app/packs/stylesheets/decidim/admin/_layout.scss +79 -0
  170. data/app/packs/stylesheets/decidim/admin/_legacy_foundation.scss +482 -0
  171. data/app/packs/stylesheets/decidim/admin/_logs.scss +80 -0
  172. data/app/packs/stylesheets/decidim/admin/_main-nav.scss +93 -0
  173. data/app/packs/stylesheets/decidim/admin/_minimap.scss +59 -0
  174. data/app/packs/stylesheets/decidim/admin/_moderations.scss +36 -0
  175. data/app/packs/stylesheets/decidim/admin/_secondary-nav.scss +111 -0
  176. data/app/packs/stylesheets/decidim/admin/_show_email.scss +19 -0
  177. data/app/packs/stylesheets/decidim/admin/_sidebar-menu.scss +66 -0
  178. data/app/packs/stylesheets/decidim/admin/_table-list.scss +155 -0
  179. data/app/packs/stylesheets/decidim/admin/_tabs.scss +74 -0
  180. data/app/packs/stylesheets/decidim/admin/_title-bar.scss +62 -0
  181. data/app/packs/stylesheets/decidim/admin/_user-login.scss +9 -0
  182. data/app/packs/stylesheets/decidim/admin/application.scss +37 -21
  183. data/app/permissions/decidim/admin/permissions.rb +2 -2
  184. data/app/presenters/decidim/admin/aside_menu_presenter.rb +25 -0
  185. data/app/presenters/decidim/admin/dashboard_metric_charts_presenter.rb +0 -26
  186. data/app/presenters/decidim/admin/secondary_menu_presenter.rb +5 -9
  187. data/app/presenters/decidim/admin/simple_menu_presenter.rb +2 -2
  188. data/app/queries/decidim/admin/active_users_counter.rb +1 -1
  189. data/app/queries/decidim/admin/invites.rb +58 -0
  190. data/app/queries/decidim/admin/moderation_stats.rb +53 -0
  191. data/app/views/decidim/admin/admin_terms/show.html.erb +15 -10
  192. data/app/views/decidim/admin/area_types/_form.html.erb +11 -6
  193. data/app/views/decidim/admin/area_types/edit.html.erb +14 -12
  194. data/app/views/decidim/admin/area_types/index.html.erb +35 -33
  195. data/app/views/decidim/admin/area_types/new.html.erb +14 -12
  196. data/app/views/decidim/admin/areas/_form.html.erb +12 -8
  197. data/app/views/decidim/admin/areas/edit.html.erb +14 -12
  198. data/app/views/decidim/admin/areas/index.html.erb +40 -38
  199. data/app/views/decidim/admin/areas/new.html.erb +14 -12
  200. data/app/views/decidim/admin/attachment_collections/_form.html.erb +12 -14
  201. data/app/views/decidim/admin/attachment_collections/edit.html.erb +17 -5
  202. data/app/views/decidim/admin/attachment_collections/index.html.erb +35 -40
  203. data/app/views/decidim/admin/attachment_collections/new.html.erb +16 -5
  204. data/app/views/decidim/admin/attachments/_form.html.erb +18 -22
  205. data/app/views/decidim/admin/attachments/edit.html.erb +17 -5
  206. data/app/views/decidim/admin/attachments/index.html.erb +45 -48
  207. data/app/views/decidim/admin/attachments/new.html.erb +16 -5
  208. data/app/views/decidim/admin/authorization_workflows/index.html.erb +7 -0
  209. data/app/views/decidim/admin/block_user/new.html.erb +39 -18
  210. data/app/views/decidim/admin/categories/_form.html.erb +13 -15
  211. data/app/views/decidim/admin/categories/edit.html.erb +16 -5
  212. data/app/views/decidim/admin/categories/index.html.erb +44 -49
  213. data/app/views/decidim/admin/categories/new.html.erb +16 -5
  214. data/app/views/decidim/admin/components/_actions.html.erb +17 -16
  215. data/app/views/decidim/admin/components/_component.html.erb +5 -3
  216. data/app/views/decidim/admin/components/_form.html.erb +87 -47
  217. data/app/views/decidim/admin/components/_resource_action.html.erb +9 -0
  218. data/app/views/decidim/admin/components/_settings_fields.html.erb +11 -8
  219. data/app/views/decidim/admin/components/edit.html.erb +16 -5
  220. data/app/views/decidim/admin/components/index.html.erb +23 -18
  221. data/app/views/decidim/admin/components/new.html.erb +16 -5
  222. data/app/views/decidim/admin/conflicts/edit.html.erb +24 -26
  223. data/app/views/decidim/admin/conflicts/index.html.erb +23 -26
  224. data/app/views/decidim/admin/dashboard/_pending_moderations.html.erb +12 -0
  225. data/app/views/decidim/admin/dashboard/show.html.erb +26 -20
  226. data/app/views/decidim/admin/devise/mailers/password_change.html.erb +1 -1
  227. data/app/views/decidim/admin/devise/mailers/reset_password_instructions.html.erb +2 -2
  228. data/app/views/decidim/admin/exports/_dropdown.html.erb +11 -4
  229. data/app/views/decidim/admin/help_sections/_form.html.erb +34 -18
  230. data/app/views/decidim/admin/impersonatable_users/index.html.erb +46 -53
  231. data/app/views/decidim/admin/impersonations/_form.html.erb +53 -35
  232. data/app/views/decidim/admin/impersonations/new.html.erb +21 -19
  233. data/app/views/decidim/admin/imports/_dropdown.html.erb +5 -2
  234. data/app/views/decidim/admin/imports/new.html.erb +54 -43
  235. data/app/views/decidim/admin/logs/_filters.html.erb +37 -0
  236. data/app/views/decidim/admin/logs/_logs_list.html.erb +4 -3
  237. data/app/views/decidim/admin/logs/index.html.erb +3 -6
  238. data/app/views/decidim/admin/managed_users/impersonation_logs/index.html.erb +27 -28
  239. data/app/views/decidim/admin/managed_users/promotions/_form.html.erb +8 -2
  240. data/app/views/decidim/admin/managed_users/promotions/new.html.erb +17 -15
  241. data/app/views/decidim/admin/metrics/_metrics.html.erb +1 -6
  242. data/app/views/decidim/admin/metrics/index.html.erb +1 -1
  243. data/app/views/decidim/admin/moderated_users/_report.html.erb +1 -5
  244. data/app/views/decidim/admin/moderated_users/index.html.erb +58 -75
  245. data/app/views/decidim/admin/moderations/index.html.erb +91 -101
  246. data/app/views/decidim/admin/moderations/reports/index.html.erb +91 -92
  247. data/app/views/decidim/admin/moderations/reports/show.html.erb +51 -49
  248. data/app/views/decidim/admin/newsletter_templates/index.html.erb +12 -11
  249. data/app/views/decidim/admin/newsletter_templates/show.html.erb +8 -6
  250. data/app/views/decidim/admin/newsletters/_form.html.erb +10 -4
  251. data/app/views/decidim/admin/newsletters/edit.html.erb +21 -12
  252. data/app/views/decidim/admin/newsletters/index.html.erb +57 -57
  253. data/app/views/decidim/admin/newsletters/new.html.erb +20 -12
  254. data/app/views/decidim/admin/newsletters/select_recipients_to_deliver.html.erb +53 -55
  255. data/app/views/decidim/admin/newsletters/show.html.erb +24 -17
  256. data/app/views/decidim/admin/officializations/_show_email_modal.html.erb +20 -21
  257. data/app/views/decidim/admin/officializations/index.html.erb +55 -62
  258. data/app/views/decidim/admin/officializations/new.html.erb +24 -16
  259. data/app/views/decidim/admin/officializations/show_email.html.erb +0 -1
  260. data/app/views/decidim/admin/organization/_form.html.erb +76 -90
  261. data/app/views/decidim/admin/organization/edit.html.erb +19 -11
  262. data/app/views/decidim/admin/organization_appearance/_form.html.erb +72 -57
  263. data/app/views/decidim/admin/organization_appearance/edit.html.erb +17 -6
  264. data/app/views/decidim/admin/organization_appearance/form/_colors.html.erb +63 -24
  265. data/app/views/decidim/admin/organization_appearance/form/_header_snippets.html.erb +17 -0
  266. data/app/views/decidim/admin/organization_appearance/form/_images.html.erb +39 -40
  267. data/app/views/decidim/admin/organization_appearance/form/_minimap.html.erb +5 -14
  268. data/app/views/decidim/admin/organization_external_domain_whitelist/_external_domain.html.erb +18 -13
  269. data/app/views/decidim/admin/organization_external_domain_whitelist/_form.html.erb +8 -10
  270. data/app/views/decidim/admin/organization_external_domain_whitelist/edit.html.erb +17 -6
  271. data/app/views/decidim/admin/participatory_space_private_users/_form.html.erb +10 -14
  272. data/app/views/decidim/admin/participatory_space_private_users/index.html.erb +59 -60
  273. data/app/views/decidim/admin/participatory_space_private_users/new.html.erb +17 -5
  274. data/app/views/decidim/admin/participatory_space_private_users_csv_imports/new.html.erb +28 -11
  275. data/app/views/decidim/admin/reminders/new.html.erb +18 -16
  276. data/app/views/decidim/admin/resource_permissions/edit.html.erb +46 -47
  277. data/app/views/decidim/admin/scope_types/_form.html.erb +9 -6
  278. data/app/views/decidim/admin/scope_types/edit.html.erb +17 -11
  279. data/app/views/decidim/admin/scope_types/index.html.erb +40 -34
  280. data/app/views/decidim/admin/scope_types/new.html.erb +17 -11
  281. data/app/views/decidim/admin/scopes/_form.html.erb +11 -9
  282. data/app/views/decidim/admin/scopes/edit.html.erb +17 -11
  283. data/app/views/decidim/admin/scopes/index.html.erb +39 -41
  284. data/app/views/decidim/admin/scopes/new.html.erb +17 -11
  285. data/app/views/decidim/admin/share_tokens/_share_tokens.html.erb +3 -15
  286. data/app/views/decidim/admin/shared/_admin_confirm_modal.html.erb +18 -0
  287. data/app/views/decidim/admin/shared/_filters.html.erb +6 -10
  288. data/app/views/decidim/admin/shared/_gallery.html.erb +8 -19
  289. data/app/views/decidim/admin/shared/_js-callout.html.erb +4 -2
  290. data/app/views/decidim/admin/shared/landing_page/_content_blocks.html.erb +68 -0
  291. data/app/views/decidim/admin/shared/landing_page/edit.html.erb +1 -47
  292. data/app/views/decidim/admin/shared/landing_page_content_blocks/edit.html.erb +24 -14
  293. data/app/views/decidim/admin/static_page_topics/_form.html.erb +2 -2
  294. data/app/views/decidim/admin/static_page_topics/edit.html.erb +21 -11
  295. data/app/views/decidim/admin/static_page_topics/index.html.erb +41 -0
  296. data/app/views/decidim/admin/static_page_topics/new.html.erb +21 -11
  297. data/app/views/decidim/admin/static_pages/_form.html.erb +41 -26
  298. data/app/views/decidim/admin/static_pages/_form_notable_changes.html.erb +2 -3
  299. data/app/views/decidim/admin/static_pages/_topic.html.erb +40 -44
  300. data/app/views/decidim/admin/static_pages/edit.html.erb +22 -12
  301. data/app/views/decidim/admin/static_pages/index.html.erb +14 -2
  302. data/app/views/decidim/admin/static_pages/new.html.erb +15 -11
  303. data/app/views/decidim/admin/user_groups/index.html.erb +58 -58
  304. data/app/views/decidim/admin/user_groups_csv_verifications/new.html.erb +28 -17
  305. data/app/views/decidim/admin/users/_form.html.erb +14 -8
  306. data/app/views/decidim/admin/users/index.html.erb +52 -54
  307. data/app/views/decidim/admin/users/new.html.erb +15 -12
  308. data/app/views/layouts/decidim/admin/_admin_timeout_modal.html.erb +24 -0
  309. data/app/views/layouts/decidim/admin/_application.html.erb +50 -12
  310. data/app/views/layouts/decidim/admin/_breadcrumb.html.erb +26 -0
  311. data/app/views/layouts/decidim/admin/_callouts_full.html.erb +2 -13
  312. data/app/views/layouts/decidim/admin/_header.html.erb +2 -3
  313. data/app/views/layouts/decidim/admin/_js_configuration.html.erb +3 -5
  314. data/app/views/layouts/decidim/admin/_sidebar_menu.html.erb +24 -0
  315. data/app/views/layouts/decidim/admin/_title_bar.html.erb +36 -37
  316. data/app/views/layouts/decidim/admin/_title_bar_responsive.html.erb +46 -0
  317. data/app/views/layouts/decidim/admin/global_moderations.html.erb +1 -3
  318. data/app/views/layouts/decidim/admin/newsletters.erb +0 -11
  319. data/app/views/layouts/decidim/admin/settings.html.erb +2 -3
  320. data/app/views/layouts/decidim/admin/users.html.erb +1 -3
  321. data/config/locales/ar-SA.yml +0 -3
  322. data/config/locales/ar.yml +2 -82
  323. data/config/locales/bg.yml +0 -4
  324. data/config/locales/ca.yml +119 -87
  325. data/config/locales/cs-CZ.yml +0 -3
  326. data/config/locales/cs.yml +118 -84
  327. data/config/locales/de.yml +116 -84
  328. data/config/locales/el.yml +82 -78
  329. data/config/locales/en.yml +123 -91
  330. data/config/locales/eo.yml +0 -2
  331. data/config/locales/es-MX.yml +120 -88
  332. data/config/locales/es-PY.yml +120 -88
  333. data/config/locales/es.yml +120 -88
  334. data/config/locales/eu.yml +124 -92
  335. data/config/locales/fi-pl.yml +0 -3
  336. data/config/locales/fi-plain.yml +112 -80
  337. data/config/locales/fi.yml +111 -79
  338. data/config/locales/fr-CA.yml +118 -86
  339. data/config/locales/fr-LU.yml +0 -3
  340. data/config/locales/fr.yml +119 -87
  341. data/config/locales/ga-IE.yml +0 -12
  342. data/config/locales/gl.yml +0 -98
  343. data/config/locales/hu.yml +89 -81
  344. data/config/locales/id-ID.yml +0 -61
  345. data/config/locales/is-IS.yml +0 -50
  346. data/config/locales/it.yml +1 -103
  347. data/config/locales/ja.yml +115 -86
  348. data/config/locales/kaa.yml +6 -13
  349. data/config/locales/lb-LU.yml +0 -3
  350. data/config/locales/lb.yml +0 -103
  351. data/config/locales/lt.yml +82 -72
  352. data/config/locales/lv.yml +0 -73
  353. data/config/locales/nl.yml +6 -109
  354. data/config/locales/no.yml +0 -111
  355. data/config/locales/pl.yml +4 -146
  356. data/config/locales/pt-BR.yml +81 -90
  357. data/config/locales/pt.yml +0 -103
  358. data/config/locales/ro-RO.yml +76 -80
  359. data/config/locales/ru.yml +0 -52
  360. data/config/locales/sk-SK.yml +3 -6
  361. data/config/locales/sk.yml +0 -73
  362. data/config/locales/sl.yml +0 -5
  363. data/config/locales/sq-AL.yml +4 -7
  364. data/config/locales/sr-CS.yml +0 -57
  365. data/config/locales/sv.yml +22 -108
  366. data/config/locales/tr-TR.yml +1 -86
  367. data/config/locales/uk.yml +0 -45
  368. data/config/locales/zh-CN.yml +0 -76
  369. data/config/locales/zh-TW.yml +66 -72
  370. data/config/routes.rb +12 -4
  371. data/lib/decidim/admin/components.rb +1 -1
  372. data/lib/decidim/admin/custom_import.rb +29 -0
  373. data/lib/decidim/admin/engine.rb +54 -216
  374. data/lib/decidim/admin/import/importer.rb +3 -3
  375. data/lib/decidim/admin/import/importer_factory.rb +1 -1
  376. data/lib/decidim/admin/import/readers/base.rb +1 -1
  377. data/lib/decidim/admin/import/readers/csv.rb +2 -2
  378. data/lib/decidim/admin/import/verifier.rb +4 -4
  379. data/lib/decidim/admin/menu.rb +281 -0
  380. data/lib/decidim/admin/search_form_builder.rb +39 -0
  381. data/lib/decidim/admin/test/admin_participatory_space_access_examples.rb +3 -2
  382. data/lib/decidim/admin/test/commands/create_attachment_collection_examples.rb +3 -3
  383. data/lib/decidim/admin/test/commands/create_category_examples.rb +2 -2
  384. data/lib/decidim/admin/test/commands/destroy_category_examples.rb +4 -4
  385. data/lib/decidim/admin/test/commands/publish_participatory_space_examples.rb +102 -0
  386. data/lib/decidim/admin/test/commands/update_attachment_collection_examples.rb +4 -4
  387. data/lib/decidim/admin/test/commands/update_category_examples.rb +3 -3
  388. data/lib/decidim/admin/test/destroy_admin_examples.rb +39 -0
  389. data/lib/decidim/admin/test/filterable_examples.rb +8 -8
  390. data/lib/decidim/admin/test/filters_participatory_space_user_roles_examples.rb +12 -43
  391. data/lib/decidim/admin/test/filters_participatory_space_users_examples.rb +34 -43
  392. data/lib/decidim/admin/test/forms/attachment_collection_form_examples.rb +1 -1
  393. data/lib/decidim/admin/test/forms/attachment_form_examples.rb +1 -1
  394. data/lib/decidim/admin/test/forms/category_form_examples.rb +1 -1
  395. data/lib/decidim/admin/test/manage_attachment_collections_examples.rb +9 -9
  396. data/lib/decidim/admin/test/manage_attachments_examples.rb +9 -9
  397. data/lib/decidim/admin/test/manage_categories_examples.rb +7 -7
  398. data/lib/decidim/admin/test/manage_component_permissions_examples.rb +24 -24
  399. data/lib/decidim/admin/test/manage_hide_content_examples.rb +59 -0
  400. data/lib/decidim/admin/test/manage_moderations_examples.rb +31 -22
  401. data/lib/decidim/admin/test/manage_paginated_collection_examples.rb +2 -2
  402. data/lib/decidim/admin/test/manage_participatory_space_publications_examples.rb +54 -0
  403. data/lib/decidim/admin/test/needs_admin_tos_accepted_examples.rb +1 -1
  404. data/lib/decidim/admin/test.rb +4 -0
  405. data/lib/decidim/admin/version.rb +1 -1
  406. data/lib/decidim/admin.rb +2 -0
  407. metadata +90 -114
  408. data/app/commands/decidim/admin/create_participatory_space_admin_user_actions.rb +0 -94
  409. data/app/commands/decidim/admin/reorder_content_blocks.rb +0 -100
  410. data/app/commands/decidim/admin/update_content_block.rb +0 -79
  411. data/app/controllers/concerns/decidim/admin/landing_page.rb +0 -105
  412. data/app/controllers/concerns/decidim/admin/landing_page_content_blocks.rb +0 -118
  413. data/app/packs/stylesheets/decidim/admin/_decidim.scss +0 -23
  414. data/app/packs/stylesheets/decidim/admin/_variables.scss +0 -18
  415. data/app/packs/stylesheets/decidim/admin/bundle.scss +0 -2
  416. data/app/packs/stylesheets/decidim/admin/components/_accordion.scss +0 -41
  417. data/app/packs/stylesheets/decidim/admin/components/_dropdown-menu.scss +0 -3
  418. data/app/packs/stylesheets/decidim/admin/components/_sortable.scss +0 -5
  419. data/app/packs/stylesheets/decidim/admin/extra/_action-icon.scss +0 -32
  420. data/app/packs/stylesheets/decidim/admin/extra/_block_user.scss +0 -5
  421. data/app/packs/stylesheets/decidim/admin/extra/_cards.scss +0 -24
  422. data/app/packs/stylesheets/decidim/admin/extra/_categories.scss +0 -5
  423. data/app/packs/stylesheets/decidim/admin/extra/_dropdown_inverted.scss +0 -47
  424. data/app/packs/stylesheets/decidim/admin/extra/_editor.scss +0 -1
  425. data/app/packs/stylesheets/decidim/admin/extra/_email_preview.scss +0 -5
  426. data/app/packs/stylesheets/decidim/admin/extra/_label-required.scss +0 -3
  427. data/app/packs/stylesheets/decidim/admin/extra/_login.scss +0 -37
  428. data/app/packs/stylesheets/decidim/admin/extra/_logs.scss +0 -122
  429. data/app/packs/stylesheets/decidim/admin/extra/_newsletter-templates-gallery.scss +0 -3
  430. data/app/packs/stylesheets/decidim/admin/extra/_organization-appearance.scss +0 -141
  431. data/app/packs/stylesheets/decidim/admin/extra/_quill.scss +0 -12
  432. data/app/packs/stylesheets/decidim/admin/extra/_select_multiple.scss +0 -3
  433. data/app/packs/stylesheets/decidim/admin/extra/_show_email.scss +0 -31
  434. data/app/packs/stylesheets/decidim/admin/extra/_sort.scss +0 -13
  435. data/app/packs/stylesheets/decidim/admin/extra/_title_bar.scss +0 -80
  436. data/app/packs/stylesheets/decidim/admin/modules/_action-icon.scss +0 -30
  437. data/app/packs/stylesheets/decidim/admin/modules/_agenda.scss +0 -34
  438. data/app/packs/stylesheets/decidim/admin/modules/_autocomplete.scss +0 -5
  439. data/app/packs/stylesheets/decidim/admin/modules/_buttons.scss +0 -86
  440. data/app/packs/stylesheets/decidim/admin/modules/_callouts.scss +0 -45
  441. data/app/packs/stylesheets/decidim/admin/modules/_card-grid.scss +0 -25
  442. data/app/packs/stylesheets/decidim/admin/modules/_cards.scss +0 -126
  443. data/app/packs/stylesheets/decidim/admin/modules/_char-counter.scss +0 -22
  444. data/app/packs/stylesheets/decidim/admin/modules/_component-counter.scss +0 -26
  445. data/app/packs/stylesheets/decidim/admin/modules/_draggable-list.scss +0 -27
  446. data/app/packs/stylesheets/decidim/admin/modules/_dropdown.scss +0 -20
  447. data/app/packs/stylesheets/decidim/admin/modules/_filters.scss +0 -83
  448. data/app/packs/stylesheets/decidim/admin/modules/_forms.scss +0 -164
  449. data/app/packs/stylesheets/decidim/admin/modules/_icons.scss +0 -68
  450. data/app/packs/stylesheets/decidim/admin/modules/_layout.scss +0 -75
  451. data/app/packs/stylesheets/decidim/admin/modules/_loading-spinner.scss +0 -19
  452. data/app/packs/stylesheets/decidim/admin/modules/_main-nav.scss +0 -45
  453. data/app/packs/stylesheets/decidim/admin/modules/_moderations.scss +0 -39
  454. data/app/packs/stylesheets/decidim/admin/modules/_modules.scss +0 -44
  455. data/app/packs/stylesheets/decidim/admin/modules/_pics.scss +0 -5
  456. data/app/packs/stylesheets/decidim/admin/modules/_process-header.scss +0 -13
  457. data/app/packs/stylesheets/decidim/admin/modules/_reveal.scss +0 -5
  458. data/app/packs/stylesheets/decidim/admin/modules/_secondary-nav.scss +0 -114
  459. data/app/packs/stylesheets/decidim/admin/modules/_table-list.scss +0 -146
  460. data/app/packs/stylesheets/decidim/admin/modules/_tabs.scss +0 -63
  461. data/app/packs/stylesheets/decidim/admin/modules/_title-bar.scss +0 -35
  462. data/app/packs/stylesheets/decidim/admin/modules/_typography.scss +0 -27
  463. data/app/packs/stylesheets/decidim/admin/modules/_upload_modal.scss +0 -42
  464. data/app/packs/stylesheets/decidim/admin/modules/_user-login.scss +0 -25
  465. data/app/packs/stylesheets/decidim/admin/modules/_users_statistics.scss +0 -18
  466. data/app/packs/stylesheets/decidim/admin/plugins/_foundation-datepicker.scss +0 -224
  467. data/app/packs/stylesheets/decidim/admin/plugins/jquery.auto-complete.css +0 -9
  468. data/app/packs/stylesheets/decidim/admin/user_moderations.scss +0 -3
  469. data/app/packs/stylesheets/decidim/admin/utils/_flex.scss +0 -60
  470. data/app/packs/stylesheets/decidim/admin/utils/_helpers.scss +0 -53
  471. data/app/packs/stylesheets/decidim/admin/utils/_keyframes.scss +0 -21
  472. data/app/packs/stylesheets/decidim/admin/utils/_mixins.scss +0 -151
  473. data/app/packs/stylesheets/decidim/admin/utils/_settings.scss +0 -882
  474. data/app/packs/stylesheets/decidim/admin/utils/_toggle-expand.scss +0 -9
  475. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/_constants.scss +0 -5
  476. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/_math.scss +0 -45
  477. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_acos.scss +0 -14
  478. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_asin.scss +0 -16
  479. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_atan.scss +0 -36
  480. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_atan2.scss +0 -46
  481. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_cos.scss +0 -17
  482. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_cot.scss +0 -12
  483. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_csc.scss +0 -12
  484. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_exp.scss +0 -16
  485. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_fact.scss +0 -21
  486. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_frexp.scss +0 -25
  487. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_ldexp.scss +0 -20
  488. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_log.scss +0 -39
  489. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_pow.scss +0 -34
  490. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_sec.scss +0 -12
  491. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_sin.scss +0 -10
  492. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_sqrt.scss +0 -21
  493. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_tan.scss +0 -12
  494. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/helpers/_deg-to-rad.scss +0 -6
  495. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/helpers/_rad-to-deg.scss +0 -6
  496. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/helpers/_strip-unit.scss +0 -11
  497. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/helpers/_unitless-rad.scss +0 -19
  498. data/app/views/decidim/admin/attachment_collections/show.html.erb +0 -13
  499. data/app/views/decidim/admin/attachments/show.html.erb +0 -24
  500. data/app/views/decidim/admin/categories/show.html.erb +0 -12
  501. data/app/views/decidim/admin/organization_homepage/edit.html.erb +0 -43
  502. data/app/views/decidim/admin/organization_homepage_content_blocks/edit.html.erb +0 -13
  503. data/app/views/decidim/admin/static_pages/show.html.erb +0 -21
  504. data/app/views/layouts/decidim/admin/_template_bottom.html.erb +0 -2
  505. data/app/views/layouts/decidim/admin/_template_top.html.erb +0 -4
  506. data/app/views/layouts/decidim/admin/pages.html.erb +0 -15
  507. data/config/environment.rb +0 -3
@@ -24,7 +24,7 @@ module Decidim
24
24
 
25
25
  attr_reader :page, :current_user
26
26
 
27
- def destroy_page
27
+ def destroy_topic
28
28
  transaction do
29
29
  Decidim.traceability.perform_action!(
30
30
  "delete",
@@ -22,49 +22,23 @@ module Decidim
22
22
  def call
23
23
  return broadcast(:invalid) unless hideable?
24
24
 
25
- hide!
26
-
27
- send_hide_notification_to_author
25
+ with_events do
26
+ tool = Decidim::ModerationTools.new(@reportable, @current_user)
27
+ tool.hide!
28
+ tool.send_notification_to_author
29
+ end
28
30
 
29
31
  broadcast(:ok, @reportable)
30
32
  end
31
33
 
32
34
  private
33
35
 
34
- def hideable?
35
- !@reportable.hidden? && @reportable.reported?
36
- end
37
-
38
- def hide!
39
- Decidim.traceability.perform_action!(
40
- "hide",
41
- @reportable.moderation,
42
- @current_user,
43
- extra: {
44
- reportable_type: @reportable.class.name
45
- }
46
- ) do
47
- @reportable.moderation.update!(hidden_at: Time.current)
48
- @reportable.try(:touch)
49
- end
50
- end
51
-
52
- def send_hide_notification_to_author
53
- data = {
54
- event: "decidim.events.reports.resource_hidden",
55
- event_class: Decidim::ResourceHiddenEvent,
56
- resource: @reportable,
57
- extra: {
58
- report_reasons: report_reasons
59
- },
60
- affected_users: @reportable.try(:authors) || [@reportable.try(:normalized_author)]
61
- }
62
-
63
- Decidim::EventsManager.publish(**data)
36
+ def event_arguments
37
+ { resource: @reportable }
64
38
  end
65
39
 
66
- def report_reasons
67
- @reportable.moderation.reports.pluck(:reason).uniq
40
+ def hideable?
41
+ !@reportable.hidden? && @reportable.reported?
68
42
  end
69
43
  end
70
44
  end
@@ -50,7 +50,7 @@ module Decidim
50
50
  def create_impersonation_log
51
51
  Decidim::ImpersonationLog.create!(
52
52
  admin: form.current_user,
53
- user: user,
53
+ user:,
54
54
  reason: form.reason,
55
55
  started_at: Time.current
56
56
  )
@@ -35,7 +35,7 @@ module Decidim
35
35
  end
36
36
 
37
37
  # Ugly fix to get the user from the block inside the
38
- # `InviteUser#call` method. I'm not proud of this.
38
+ # `InviteUser#call` method. I am not proud of this.
39
39
  def save_user(user)
40
40
  @user = user
41
41
  end
@@ -0,0 +1,132 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Admin
5
+ module ParticipatorySpace
6
+ class CreateAdmin < Decidim::Command
7
+ # Public: Initializes the command.
8
+ #
9
+ # form - A form object with the params.
10
+ # participatory_space - The ParticipatoryProcess that will hold the
11
+ # user role
12
+ def initialize(form, participatory_space, options = {})
13
+ @form = form
14
+ @current_user = form.current_user
15
+ @participatory_space = participatory_space
16
+ @event_class = options.delete(:event_class)
17
+ @event = options.delete(:event)
18
+ @role_class = options.delete(:role_class)
19
+ end
20
+
21
+ # Executes the command. Broadcasts these events:
22
+ #
23
+ # - :ok when everything is valid.
24
+ # - :invalid if the form was not valid and we could not proceed.
25
+ #
26
+ # Returns nothing.
27
+ def call
28
+ return broadcast(:invalid) if form.invalid?
29
+
30
+ ActiveRecord::Base.transaction do
31
+ @user ||= existing_user || new_user
32
+ existing_role || create_role
33
+ add_admin_as_follower
34
+ end
35
+
36
+ broadcast(:ok)
37
+ rescue ActiveRecord::RecordInvalid
38
+ form.errors.add(:email, :taken)
39
+ broadcast(:invalid)
40
+ end
41
+
42
+ private
43
+
44
+ attr_reader :form, :participatory_space, :current_user, :user
45
+
46
+ def event_class = @event_class || (raise NotImplementedError, "You must define an event_class")
47
+
48
+ def event = @event || (raise NotImplementedError, "You must define an event")
49
+
50
+ def role_class = @role_class || (raise NotImplementedError, "You must define a role_class")
51
+
52
+ # This is command specific
53
+ # It is expected to
54
+ # - create a XxxUserRole using `Decidim.traceability`
55
+ # - send a notification to the user telling she has been invited to manage the participatory space
56
+ def create_role
57
+ Decidim.traceability.create!(role_class, current_user, role_params, extra_info)
58
+ send_notification user
59
+ end
60
+
61
+ # This is command specific
62
+ # It is expected to find if a UserRole for the same user, role and participatory_process already exist
63
+ # Return a boolean, or some object equally evaluable
64
+ def existing_role
65
+ role_class.for_space(participatory_space).exists?(role: form.role.to_sym, user:)
66
+ end
67
+
68
+ def extra_info = { resource: { title: user.name } }
69
+
70
+ def role_params = { role: form.role.to_sym, user:, role_class.new.target_space_association => participatory_space }
71
+
72
+ def send_notification(user)
73
+ Decidim::EventsManager.publish(
74
+ event:,
75
+ event_class:,
76
+ resource: form.current_participatory_space,
77
+ affected_users: [user],
78
+ extra: {
79
+ role: form.role
80
+ }
81
+ )
82
+ end
83
+
84
+ def new_user
85
+ @new_user ||= InviteUser.call(user_form) do
86
+ on(:ok) do |user|
87
+ return user
88
+ end
89
+ end
90
+ end
91
+
92
+ def invitation_instructions
93
+ return "invite_admin" if form.role == "admin"
94
+
95
+ "invite_collaborator"
96
+ end
97
+
98
+ def user_form
99
+ OpenStruct.new(name: form.name,
100
+ email: form.email.downcase,
101
+ organization: participatory_space.organization,
102
+ admin: false,
103
+ invited_by: current_user,
104
+ invitation_instructions:)
105
+ end
106
+
107
+ def add_admin_as_follower
108
+ return if user.follows?(participatory_space)
109
+
110
+ form = Decidim::FollowForm
111
+ .from_params(followable_gid: participatory_space.to_signed_global_id.to_s)
112
+ .with_context(
113
+ current_organization: participatory_space.organization,
114
+ current_user: user
115
+ )
116
+
117
+ Decidim::CreateFollow.new(form, user).call
118
+ end
119
+
120
+ def existing_user
121
+ return @existing_user if defined?(@existing_user)
122
+
123
+ @existing_user = User.find_by(email: form.email, organization: participatory_space.organization)
124
+
125
+ InviteUserAgain.call(@existing_user, invitation_instructions) if @existing_user&.invitation_pending?
126
+
127
+ @existing_user
128
+ end
129
+ end
130
+ end
131
+ end
132
+ end
@@ -0,0 +1,61 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Admin
5
+ module ParticipatorySpace
6
+ class DestroyAdmin < Decidim::Command
7
+ # Public: Initializes the command.
8
+ #
9
+ # role - the UserRole to destroy
10
+ # current_user - the user performing this action
11
+ def initialize(role, current_user)
12
+ @role = role
13
+ @current_user = current_user
14
+ end
15
+
16
+ # Executes the command. Broadcasts these events:
17
+ #
18
+ # - :ok when everything is valid.
19
+ # - :invalid if the form was not valid and we could not proceed.
20
+ #
21
+ # Returns nothing.
22
+ def call
23
+ with_events do
24
+ destroy_role!
25
+ end
26
+
27
+ broadcast(:ok)
28
+ end
29
+
30
+ private
31
+
32
+ attr_reader :role, :current_user
33
+
34
+ def event_arguments
35
+ {
36
+ class_name: role.class.name,
37
+ role: role.id
38
+ }
39
+ end
40
+
41
+ def destroy_role!
42
+ extra_info = {
43
+ resource: {
44
+ title: role.user.name
45
+ }
46
+ }
47
+
48
+ Decidim.traceability.perform_action!(
49
+ "delete",
50
+ role,
51
+ current_user,
52
+ extra_info
53
+ ) do
54
+ role.destroy!
55
+ role
56
+ end
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Admin
5
+ module ParticipatorySpace
6
+ # A command that sets a ParticipatorySpace as published.
7
+ class Publish < Decidim::Command
8
+ # Public: Initializes the command.
9
+ #
10
+ # participatory_space - A ParticipatorySpace that will be published
11
+ # user - the user performing the action
12
+ def initialize(participatory_space, user)
13
+ @participatory_space = participatory_space
14
+ @user = user
15
+ end
16
+
17
+ # Executes the command. Broadcasts these events:
18
+ #
19
+ # - :ok when everything is valid.
20
+ # - :invalid if the data was not valid and we could not proceed.
21
+ #
22
+ # Returns nothing.
23
+ def call
24
+ return broadcast(:invalid) if participatory_space.nil? || participatory_space.published?
25
+
26
+ Decidim.traceability.perform_action!(:publish, participatory_space, user, **default_options) do
27
+ participatory_space.publish!
28
+ end
29
+
30
+ broadcast(:ok, participatory_space)
31
+ end
32
+
33
+ private
34
+
35
+ attr_reader :participatory_space, :user
36
+
37
+ def default_options = { visibility: "all" }
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Admin
5
+ module ParticipatorySpace
6
+ # A command that sets a ParticipatorySpace as unpublished.
7
+ class Unpublish < Decidim::Command
8
+ # Public: Initializes the command.
9
+ #
10
+ # participatory_space - A ParticipatorySpace that will be unpublished
11
+ # user - the user performing the action
12
+ def initialize(participatory_space, user)
13
+ @participatory_space = participatory_space
14
+ @user = user
15
+ end
16
+
17
+ # Executes the command. Broadcasts these events:
18
+ #
19
+ # - :ok when everything is valid.
20
+ # - :invalid if the data was not valid and we could not proceed.
21
+ #
22
+ # Returns nothing.
23
+ def call
24
+ return broadcast(:invalid) if participatory_space.nil? || !participatory_space.published?
25
+
26
+ Decidim.traceability.perform_action!(:unpublish, participatory_space, user, **default_options) do
27
+ participatory_space.unpublish!
28
+ end
29
+
30
+ broadcast(:ok, participatory_space)
31
+ end
32
+
33
+ private
34
+
35
+ attr_reader :participatory_space, :user
36
+
37
+ def default_options = { visibility: "all" }
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,72 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Admin
5
+ module ParticipatorySpace
6
+ class UpdateAdmin < Decidim::Command
7
+ # Public: Initializes the command.
8
+ #
9
+ # form - A form object with the params.
10
+ # user_role - The UserRole to update
11
+ # options: a hash with at least two mandatory keys, event_class and event
12
+ # - event_class - The event class to be used when notifying the user
13
+ # - event - The event name to be used when notifying the user
14
+ def initialize(form, user_role, options = {})
15
+ @form = form
16
+ @user_role = user_role
17
+ @event_class = options.delete(:event_class)
18
+ @event = options.delete(:event)
19
+ end
20
+
21
+ # Executes the command. Broadcasts these events:
22
+ #
23
+ # - :ok when everything is valid.
24
+ # - :invalid if the form was not valid and we could not proceed.
25
+ #
26
+ # Returns nothing.
27
+ def call
28
+ return broadcast(:invalid) if form.invalid?
29
+ return broadcast(:invalid) unless user_role
30
+
31
+ update_role!
32
+ broadcast(:ok)
33
+ end
34
+
35
+ private
36
+
37
+ attr_reader :form, :user_role
38
+
39
+ def event_class = @event_class || (raise NotImplementedError, "You must define an event_class")
40
+
41
+ def event = @event || (raise NotImplementedError, "You must define an event")
42
+
43
+ def update_role!
44
+ log_info = {
45
+ resource: {
46
+ title: user_role.user.name
47
+ }
48
+ }
49
+ Decidim.traceability.update!(
50
+ user_role,
51
+ form.current_user,
52
+ { role: form.role },
53
+ log_info
54
+ )
55
+ send_notification user_role.user
56
+ end
57
+
58
+ def send_notification(user)
59
+ Decidim::EventsManager.publish(
60
+ event:,
61
+ event_class:,
62
+ resource: form.current_participatory_space,
63
+ affected_users: [user],
64
+ extra: {
65
+ role: form.role
66
+ }
67
+ )
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end
@@ -5,7 +5,7 @@ require "csv"
5
5
  module Decidim
6
6
  module Admin
7
7
  class ProcessParticipatorySpacePrivateUserImportCsv < Decidim::Command
8
- include Decidim::ProcessesFileLocally
8
+ include Decidim::Admin::CustomImport
9
9
 
10
10
  # Public: Initializes the command.
11
11
  #
@@ -21,7 +21,7 @@ module Decidim
21
21
  # Executes the command. Broadcasts these events:
22
22
  #
23
23
  # - :ok when everything is valid.
24
- # - :invalid if the form wasn't valid and we couldn't proceed.
24
+ # - :invalid if the form was not valid and we could not proceed.
25
25
  #
26
26
  # Returns nothing.
27
27
  def call
@@ -34,10 +34,8 @@ module Decidim
34
34
  private
35
35
 
36
36
  def process_csv
37
- process_file_locally(@form.file) do |file_path|
38
- CSV.foreach(file_path, encoding: "BOM|UTF-8") do |email, user_name|
39
- ImportParticipatorySpacePrivateUserCsvJob.perform_later(email, user_name, @private_users_to, @current_user) if email.present? && user_name.present?
40
- end
37
+ process_import_file(@form.file) do |(email, user_name)|
38
+ ImportParticipatorySpacePrivateUserCsvJob.perform_later(email, user_name, @private_users_to, @current_user) if email.present? && user_name.present?
41
39
  end
42
40
  end
43
41
  end
@@ -7,7 +7,7 @@ module Decidim
7
7
  # A command with all the business logic when processing the CSV to verify
8
8
  # user groups.
9
9
  class ProcessUserGroupVerificationCsv < Decidim::Command
10
- include Decidim::ProcessesFileLocally
10
+ include Decidim::Admin::CustomImport
11
11
 
12
12
  # Public: Initializes the command.
13
13
  #
@@ -19,7 +19,7 @@ module Decidim
19
19
  # Executes the command. Broadcasts these events:
20
20
  #
21
21
  # - :ok when everything is valid.
22
- # - :invalid if the form wasn't valid and we couldn't proceed.
22
+ # - :invalid if the form was not valid and we could not proceed.
23
23
  #
24
24
  # Returns nothing.
25
25
  def call
@@ -35,11 +35,8 @@ module Decidim
35
35
  verifier = @form.current_user
36
36
  organization = @form.current_organization
37
37
 
38
- process_file_locally(@form.file) do |file_path|
39
- CSV.foreach(file_path) do |row|
40
- email = row[0]
41
- VerifyUserGroupFromCsvJob.perform_later(email, verifier, organization) if email.present?
42
- end
38
+ process_import_file(@form.file) do |(email)|
39
+ VerifyUserGroupFromCsvJob.perform_later(email, verifier, organization) if email.present?
43
40
  end
44
41
  end
45
42
  end
@@ -22,7 +22,7 @@ module Decidim
22
22
  # Executes the command. Broadcasts these events:
23
23
  #
24
24
  # - :ok when everything is valid.
25
- # - :invalid if the form wasn't valid and we couldn't proceed.
25
+ # - :invalid if the form was not valid and we could not proceed.
26
26
  #
27
27
  # Returns nothing.
28
28
  def call
@@ -16,7 +16,7 @@ module Decidim
16
16
  # Executes the command. Broadcasts these events:
17
17
  #
18
18
  # - :ok when everything is valid.
19
- # - :invalid if the form wasn't valid and we couldn't proceed.
19
+ # - :invalid if the form was not valid and we could not proceed.
20
20
  #
21
21
  # Returns nothing.
22
22
  def call
@@ -16,7 +16,7 @@ module Decidim
16
16
  # Executes the command. Broadcasts these events:
17
17
  #
18
18
  # - :ok when everything is valid.
19
- # - :invalid if the form wasn't valid and we couldn't proceed.
19
+ # - :invalid if the form was not valid and we could not proceed.
20
20
  #
21
21
  # Returns nothing.
22
22
  def call
@@ -17,7 +17,7 @@ module Decidim
17
17
  # Executes the command. Broadcasts these events:
18
18
  #
19
19
  # - :ok when everything is valid.
20
- # - :invalid if the form wasn't valid and we couldn't proceed.
20
+ # - :invalid if the form was not valid and we could not proceed.
21
21
  #
22
22
  # Returns nothing.
23
23
  def call
@@ -22,7 +22,7 @@ module Decidim
22
22
  # Executes the command. Broadcasts these events:
23
23
  #
24
24
  # - :ok when everything is valid.
25
- # - :invalid if the form wasn't valid and we couldn't proceed.
25
+ # - :invalid if the form was not valid and we could not proceed.
26
26
  #
27
27
  # Returns nothing.
28
28
  def call
@@ -17,7 +17,7 @@ module Decidim
17
17
  # Executes the command. Broadcasts these events:
18
18
  #
19
19
  # - :ok when everything is valid.
20
- # - :invalid if the form wasn't valid and we couldn't proceed.
20
+ # - :invalid if the form was not valid and we could not proceed.
21
21
  #
22
22
  # Returns nothing.
23
23
  def call
@@ -20,7 +20,7 @@ module Decidim
20
20
  # Executes the command. Broadcasts these events:
21
21
  #
22
22
  # - :ok when everything is valid.
23
- # - :invalid if the form wasn't valid and we couldn't proceed.
23
+ # - :invalid if the form was not valid and we could not proceed.
24
24
  #
25
25
  # Returns nothing.
26
26
  def call
@@ -62,12 +62,12 @@ module Decidim
62
62
  if resource
63
63
  resource_permissions.update!(permissions: different_from_component_permissions(permissions))
64
64
  else
65
- component.update!(permissions: permissions)
65
+ component.update!(permissions:)
66
66
  end
67
67
  end
68
68
 
69
69
  def run_hooks
70
- component.manifest.run_hooks(:permission_update, component: component, resource: resource)
70
+ component.manifest.run_hooks(:permission_update, component:, resource:)
71
71
  end
72
72
 
73
73
  def resource_permissions
@@ -44,7 +44,7 @@ module Decidim
44
44
  end
45
45
 
46
46
  def update_content_block
47
- UpdateContentBlock.call(form, content_block, user) do
47
+ ContentBlocks::UpdateContentBlock.call(form, content_block, user) do
48
48
  on(:ok) do |content_block|
49
49
  @content_block = content_block
50
50
  end
@@ -17,7 +17,7 @@ module Decidim
17
17
  # Executes the command. Broadcasts these events:
18
18
  #
19
19
  # - :ok when everything is valid.
20
- # - :invalid if the form wasn't valid and we couldn't proceed.
20
+ # - :invalid if the form was not valid and we could not proceed.
21
21
  #
22
22
  # Returns nothing.
23
23
  def call
@@ -55,7 +55,7 @@ module Decidim
55
55
  user_groups_enabled: form.user_groups_enabled,
56
56
  comments_max_length: form.comments_max_length,
57
57
  enable_machine_translations: form.enable_machine_translations,
58
- admin_terms_of_use_body: form.admin_terms_of_use_body,
58
+ admin_terms_of_service_body: form.admin_terms_of_service_body,
59
59
  rich_text_editor_in_public_views: form.rich_text_editor_in_public_views,
60
60
  enable_participatory_space_filters: form.enable_participatory_space_filters
61
61
  }.merge(welcome_notification_attributes)
@@ -19,7 +19,7 @@ module Decidim
19
19
  # Executes the command. Broadcasts these events:
20
20
  #
21
21
  # - :ok when everything is valid.
22
- # - :invalid if the form wasn't valid and we couldn't proceed.
22
+ # - :invalid if the form was not valid and we could not proceed.
23
23
  #
24
24
  # Returns nothing.
25
25
  def call
@@ -39,7 +39,7 @@ module Decidim
39
39
  private
40
40
 
41
41
  def image_fields
42
- [:logo, :highlighted_content_banner_image, :favicon, :official_img_header, :official_img_footer]
42
+ [:logo, :highlighted_content_banner_image, :favicon, :official_img_footer]
43
43
  end
44
44
 
45
45
  attr_reader :form, :organization
@@ -98,13 +98,11 @@ module Decidim
98
98
  colors: {
99
99
  primary: form.primary_color,
100
100
  secondary: form.secondary_color,
101
+ tertiary: form.tertiary_color,
101
102
  success: form.success_color,
102
103
  warning: form.warning_color,
103
- alert: form.alert_color,
104
- highlight: form.highlight_color,
105
- "highlight-alternative": form.highlight_alternative_color,
106
- theme: form.theme_color
107
- }
104
+ alert: form.alert_color
105
+ }.compact_blank
108
106
  }
109
107
  end
110
108
  end
@@ -8,7 +8,7 @@ module Decidim
8
8
  # Public: Initializes the command.
9
9
  #
10
10
  # organization - The Organization that will be updated.
11
- # page - A static_page instance (slug = "terms-and-conditions").
11
+ # page - A static_page instance (slug = "terms-of-service").
12
12
  # form - A form object with the params.
13
13
  def initialize(organization, page, form)
14
14
  @organization = organization
@@ -19,13 +19,13 @@ module Decidim
19
19
  # Executes the command. Broadcasts these events:
20
20
  #
21
21
  # - :ok when everything is valid.
22
- # - :invalid if the form wasn't valid or not the TOS page.
22
+ # - :invalid if the form was not valid or not the TOS page.
23
23
  #
24
24
  # Returns nothing.
25
25
  def call
26
26
  return broadcast(:invalid) if @form.nil?
27
27
  return broadcast(:invalid) if @page.nil?
28
- return broadcast(:invalid) unless @page.slug == "terms-and-conditions"
28
+ return broadcast(:invalid) unless @page.slug == "terms-of-service"
29
29
 
30
30
  update_organization_tos_version
31
31
  broadcast(:ok)