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
@@ -52,7 +52,7 @@ module Decidim
52
52
  result.update(key => selected_handlers(value).any? ? serialized : {})
53
53
  end
54
54
 
55
- resource_permissions.update!(permissions: permissions)
55
+ resource_permissions.update!(permissions:)
56
56
  end
57
57
 
58
58
  def resource_permissions
@@ -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
@@ -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
@@ -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
@@ -0,0 +1,130 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Admin
5
+ module ContentBlocks
6
+ module LandingPage
7
+ extend ActiveSupport::Concern
8
+ included do
9
+ helper_method :active_blocks, :active_content_blocks_title, :add_content_block_text, :available_manifests,
10
+ :content_block_destroy_confirmation_text, :content_blocks_title, :inactive_blocks,
11
+ :inactive_content_blocks_title, :resource_content_block_cell, :resource_create_url,
12
+ :resource_sort_url
13
+ def edit
14
+ enforce_permission_to_update_resource
15
+
16
+ render "decidim/admin/shared/landing_page/edit"
17
+ end
18
+
19
+ def update
20
+ enforce_permission_to_update_resource
21
+
22
+ ReorderContentBlocks.call(current_organization, content_block_scope, params[:ids_order], scoped_resource&.id) do
23
+ on(:ok) do
24
+ head :ok
25
+ end
26
+ on(:invalid) do
27
+ head :bad_request
28
+ end
29
+ end
30
+ end
31
+
32
+ # Method that specifies the i18n scope for this controller. This can be overwritten in your controller.
33
+ # so that you can pass a different scope to the i18n methods.
34
+ def i18n_scope = "decidim.admin.content_blocks"
35
+
36
+ # Method to be implemented at the controller. Returns a string
37
+ # with the text for the title of content blocks
38
+ #
39
+ # i18n-tasks-use t('decidim.admin.content_blocks.edit.title')
40
+ # Example: t("edit.title", scope: "decidim.admin.content_blocks")
41
+ def content_blocks_title = t("edit.title", scope: i18n_scope)
42
+
43
+ # Method to be implemented at the controller. Returns a string
44
+ # with the text for the title of content blocks
45
+ #
46
+ # i18n-tasks-use t('decidim.admin.content_blocks.edit.add')
47
+ # Example: t("edit.add", scope: "decidim.admin.content_blocks")
48
+ def add_content_block_text = t("edit.add", scope: i18n_scope)
49
+
50
+ # Method to be implemented at the controller. Returns a string
51
+ # with the text for the title of content blocks
52
+ #
53
+ # i18n-tasks-use t('decidim.admin.content_blocks.edit.destroy_confirmation')
54
+ # Example: t("edit.destroy_confirmation", scope: "decidim.admin.content_blocks")
55
+ def content_block_destroy_confirmation_text = t("edit.destroy_confirmation", scope: i18n_scope)
56
+
57
+ # Method to be implemented at the controller. Returns a string
58
+ # with the header text for the active content_block column.
59
+ #
60
+ # i18n-tasks-use t('decidim.admin.content_blocks.edit.active_content_blocks')
61
+ # Example: t("edit.active_content_blocks", scope: "decidim.admin.content_blocks")
62
+ def active_content_blocks_title = t("edit.active_content_blocks", scope: i18n_scope)
63
+
64
+ # Method to be implemented at the controller. Returns a string
65
+ # with the header text for the inactive content_block column.
66
+ #
67
+ # i18n-tasks-use t('decidim.admin.content_blocks.edit.inactive_content_blocks')
68
+ # Example: t("edit.inactive_content_blocks", scope: "decidim.admin.content_blocks")
69
+ def inactive_content_blocks_title = t("edit.inactive_content_blocks", scope: i18n_scope)
70
+
71
+ private
72
+
73
+ # Method to be implemented at the controller. You need to
74
+ # return a symbol that defines the content block scope.
75
+ # Examples of scopes could be `:homepage` or `:landing_page`.
76
+ def content_block_scope
77
+ raise "#{self.class.name} is expected to implement #content_block_scope"
78
+ end
79
+
80
+ # Method to be implemented at the controller. Defines the permissions for
81
+ # edit and update actions.
82
+ # For example `enforce_permission_to :manage_landing_page, :voting, voting: current_space`.
83
+ def enforce_permission_to_update_resource
84
+ raise "#{self.class.name} is expected to implement #enforce_permission_to_update_resource"
85
+ end
86
+
87
+ # Method to be implemented at the controller. Returns the URL
88
+ # where the ordered/activated content_blocks is submitted to.
89
+ def resource_sort_url
90
+ raise "#{self.class.name} is expected to implement #resource_sort_url"
91
+ end
92
+
93
+ # Method to be implemented at the controller. Returns the URL
94
+ # where the new content_blocks is submitted to.
95
+ def resource_create_url
96
+ raise "#{self.class.name} is expected to implement #resource_create_url"
97
+ end
98
+
99
+ # Method to be implemented at the controller. Returns a string
100
+ # with the cell name to be used for the drag'n'drop for each content_block.
101
+ #
102
+ # Example: "decidim/votings/content_block"
103
+ def resource_content_block_cell
104
+ raise "#{self.class.name} is expected to implement #resource_content_block_cell"
105
+ end
106
+
107
+ # Shared methods
108
+ def content_blocks
109
+ @content_blocks ||= Decidim::ContentBlock.for_scope(
110
+ content_block_scope,
111
+ organization: current_organization
112
+ ).where(scoped_resource_id: scoped_resource&.id, manifest_name: available_manifests.map(&:name))
113
+ end
114
+
115
+ def active_blocks
116
+ @active_blocks ||= content_blocks.published
117
+ end
118
+
119
+ def inactive_blocks
120
+ @inactive_blocks ||= content_blocks.unpublished
121
+ end
122
+
123
+ def available_manifests
124
+ @available_manifests ||= Decidim.content_blocks.for(content_block_scope)
125
+ end
126
+ end
127
+ end
128
+ end
129
+ end
130
+ end
@@ -0,0 +1,158 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Admin
5
+ module ContentBlocks
6
+ module LandingPageContentBlocks
7
+ extend ActiveSupport::Concern
8
+ included do
9
+ helper_method :content_block, :resource_landing_page_content_block_path, :scoped_resource, :submit_button_text
10
+
11
+ def create
12
+ enforce_permission_to_update_resource
13
+
14
+ CreateContentBlock.call(current_organization, content_block_scope, params[:manifest_name], scoped_resource&.id) do
15
+ on(:ok) do
16
+ flash[:success] = content_block_create_success_text
17
+ end
18
+ on(:invalid) do
19
+ flash[:error] = content_block_create_error_text
20
+ end
21
+
22
+ redirect_to edit_resource_landing_page_path
23
+ end
24
+ end
25
+
26
+ def destroy
27
+ enforce_permission_to_update_resource
28
+
29
+ DestroyContentBlock.call(content_block) do
30
+ on(:ok) do
31
+ flash[:success] = content_block_destroy_success_text
32
+ end
33
+ on(:invalid) do
34
+ flash[:error] = content_block_destroy_error_text
35
+ end
36
+
37
+ redirect_to edit_resource_landing_page_path
38
+ end
39
+ end
40
+
41
+ def edit
42
+ enforce_permission_to_update_resource
43
+ @form = form(ContentBlockForm).from_model(content_block)
44
+
45
+ render "decidim/admin/shared/landing_page_content_blocks/edit"
46
+ end
47
+
48
+ def update
49
+ enforce_permission_to_update_resource
50
+
51
+ @form = form(ContentBlockForm).from_params(params)
52
+
53
+ UpdateContentBlock.call(@form, content_block, content_block_scope) do
54
+ on(:ok) do
55
+ redirect_to edit_resource_landing_page_path
56
+ end
57
+ on(:invalid) do
58
+ render "decidim/admin/shared/landing_page_content_blocks/edit"
59
+ end
60
+ end
61
+ end
62
+
63
+ private
64
+
65
+ # Method to be implemented at the controller. You need to
66
+ # return a symbol that defines the content block scope.
67
+ # Examples of scopes could be `:homepage` or `:voting_landing_page`.
68
+ def content_block_scope
69
+ raise "#{self.class.name} is expected to implement #content_block_scope"
70
+ end
71
+
72
+ # Method to be implemented at the controller. You need to
73
+ # return an Object to filter the content blocks for the given resource.
74
+ #
75
+ # For example a `Voting` record.
76
+ def scoped_resource
77
+ raise "#{self.class.name} is expected to implement #scoped_resource"
78
+ end
79
+
80
+ # Method to be implemented at the controller. Defines the permissions for
81
+ # create, destroy, edit and update actions.
82
+ #
83
+ # Example: `enforce_permission_to :manage_landing_page, :voting, voting: current_space`.
84
+ def enforce_permission_to_update_resource
85
+ raise "#{self.class.name} is expected to implement #enforce_permission_to_update_resource"
86
+ end
87
+
88
+ # Method to be implemented at the controller. Returns the URL
89
+ # to the edit landing page path.
90
+ #
91
+ # Example: `edit_voting_landing_page_path(scoped_resource)`
92
+ def edit_resource_landing_page_path
93
+ raise "#{self.class.name} is expected to implement #edit_resource_landing_page_path"
94
+ end
95
+
96
+ # Method to be implemented at the controller. Returns the URL
97
+ # where the ContentBlockForm is submitted.
98
+ #
99
+ # Example: `voting_landing_page_content_block_path(scoped_resource, params[:id])`
100
+ def resource_landing_page_content_block_path
101
+ raise "#{self.class.name} is expected to implement #resource_landing_page_content_block_path"
102
+ end
103
+
104
+ # Method that specifies the i18n scope for this controller. This can be overwritten in your controller.
105
+ # so that you can pass a different scope to the i18n methods.
106
+ def i18n_scope = "decidim.admin.content_blocks"
107
+
108
+ # Method to be implemented at the controller. Returns a string
109
+ # with the text for the submit button of the ContentBlockForm.
110
+ #
111
+ # i18n-tasks-use t('decidim.admin.content_blocks.edit.update')
112
+ # Example: t("edit.update", scope: "decidim.admin.content_blocks")
113
+ def submit_button_text = t("edit.update", scope: i18n_scope)
114
+
115
+ # Method to be implemented at the controller. Returns a string
116
+ # with the success text after creating a content block.
117
+ #
118
+ # i18n-tasks-use t('decidim.admin.content_blocks.create.success')
119
+ # Example: t("create.success", scope: "decidim.admin.content_blocks")
120
+ def content_block_create_success_text = t("create.success", scope: i18n_scope)
121
+
122
+ # Method to be implemented at the controller. Returns a string
123
+ # with the success text after creating a content block.
124
+ #
125
+ # i18n-tasks-use t('decidim.admin.content_blocks.create.error')
126
+ # Example: t("create.error", scope: "decidim.admin.content_blocks")
127
+ def content_block_create_error_text = t("create.error", scope: i18n_scope)
128
+
129
+ # Method to be implemented at the controller. Returns a string
130
+ # with the success text after destroying a content block.
131
+ #
132
+ # i18n-tasks-use t('decidim.admin.content_blocks.destroy.success')
133
+ # Example: t("destroy.success", scope: "decidim.admin.content_blocks")
134
+ def content_block_destroy_success_text = t("destroy.success", scope: i18n_scope)
135
+
136
+ # Method to be implemented at the controller. Returns a string
137
+ # with the success text after destroying a content block.
138
+ #
139
+ # i18n-tasks-use t('decidim.admin.content_blocks.destroy.error')
140
+ # Example: t("destroy.error", scope: "decidim.admin.content_blocks")
141
+ def content_block_destroy_error_text = t("destroy.error", scope: i18n_scope)
142
+
143
+ # Shared methods
144
+ def content_block
145
+ @content_block ||= content_blocks.find(params[:id])
146
+ end
147
+
148
+ def content_blocks
149
+ @content_blocks ||= Decidim::ContentBlock.for_scope(
150
+ content_block_scope,
151
+ organization: current_organization
152
+ ).where(scoped_resource_id: scoped_resource&.id)
153
+ end
154
+ end
155
+ end
156
+ end
157
+ end
158
+ end
@@ -103,7 +103,7 @@ module Decidim
103
103
  # Hash values are used to build nested dropdown submenus with many levels.
104
104
  # By default, uses the Symbols in `filters` as keys and injects an Array
105
105
  # with true and false as values. If these values fit your filtering needs,
106
- # you won't have to declare a `filters_with_values` method in your concern.
106
+ # you will not have to declare a `filters_with_values` method in your concern.
107
107
  def filters_with_values
108
108
  filters.index_with { [true, false] }
109
109
  end
@@ -138,11 +138,11 @@ module Decidim
138
138
  end
139
139
 
140
140
  def translated_scope_id_eq(id)
141
- translated_attribute(scopes.find_by(id: id).name)
141
+ translated_attribute(scopes.find_by(id:).name)
142
142
  end
143
143
 
144
144
  def translated_category_id_eq(id)
145
- translated_attribute(categories.find_by(id: id).name)
145
+ translated_attribute(categories.find_by(id:).name)
146
146
  end
147
147
  end
148
148
  end
@@ -14,32 +14,13 @@ module Decidim
14
14
  :global_moderation
15
15
  end
16
16
 
17
- # Private: Finds the participatory spaces the current user is admin to.
18
- # This method will later be used to find out what moderations the
19
- # current user can manage.
20
- #
21
- # Returns an Array.
22
- def spaces_user_is_admin_to
23
- @spaces_user_is_admin_to ||=
24
- Decidim.participatory_space_manifests.flat_map do |manifest|
25
- Decidim
26
- .find_participatory_space_manifest(manifest.name)
27
- .participatory_spaces
28
- .call(current_organization)&.select do |space|
29
- space.moderators.exists?(id: current_user.id) ||
30
- space.admins.exists?(id: current_user.id)
31
- end
32
- end
33
- end
34
-
35
17
  # Private: finds the moderations the current user can manage, taking into
36
18
  # account whether the user is an organization-wide admin or a
37
19
  # "participatory space admin".
38
20
  #
39
21
  # Returns an `ActiveRecord::Relation`
40
22
  def moderations_for_user
41
- @moderations_for_user ||=
42
- Decidim::Moderation.where(participatory_space: spaces_user_is_admin_to)
23
+ @moderations_for_user ||= Decidim::Admin::ModerationStats.new(current_user).content_moderations
43
24
  end
44
25
  end
45
26
  end
@@ -0,0 +1,31 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "active_support/concern"
4
+
5
+ module Decidim
6
+ module Admin
7
+ module Logs
8
+ module Filterable
9
+ extend ActiveSupport::Concern
10
+
11
+ included do
12
+ include Decidim::Admin::Filterable
13
+
14
+ private
15
+
16
+ def base_query
17
+ collection
18
+ end
19
+
20
+ def search_field_predicate
21
+ :user_name_or_user_nickname_or_user_email_cont
22
+ end
23
+
24
+ def filters
25
+ []
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Admin
5
+ # This module contains all the logic needed to render breadcrumb items in
6
+ # the context of participatory spaces
7
+ module ParticipatorySpaceAdminBreadcrumb
8
+ extend ActiveSupport::Concern
9
+
10
+ included do
11
+ include Decidim::TranslatableAttributes
12
+
13
+ helper_method :context_breadcrumb_items
14
+ end
15
+
16
+ private
17
+
18
+ def context_breadcrumb_items
19
+ @context_breadcrumb_items ||= [current_participatory_space_breadcrumb_item].flatten.compact_blank
20
+ end
21
+
22
+ def current_participatory_space_path
23
+ Decidim::ResourceLocatorPresenter.new(current_participatory_space).edit
24
+ end
25
+
26
+ def current_participatory_space_breadcrumb_item
27
+ return {} if current_participatory_space.blank?
28
+
29
+ {
30
+ label: translated_attribute(current_participatory_space.title),
31
+ url: current_participatory_space_path,
32
+ active: true,
33
+ resource: current_participatory_space
34
+ }
35
+ end
36
+ end
37
+ end
38
+ end
@@ -24,6 +24,7 @@ module Decidim
24
24
 
25
25
  included do
26
26
  include Decidim::NeedsOrganization
27
+ include Decidim::Admin::ParticipatorySpaceAdminBreadcrumb
27
28
  helper ParticipatorySpaceHelpers
28
29
 
29
30
  helper_method :current_participatory_space
@@ -44,12 +45,12 @@ module Decidim
44
45
  end
45
46
 
46
47
  def authorize_participatory_space
47
- enforce_permission_to :read, :participatory_space, current_participatory_space: current_participatory_space
48
+ enforce_permission_to :read, :participatory_space, current_participatory_space:
48
49
  end
49
50
 
50
51
  def permissions_context
51
52
  super.merge(
52
- current_participatory_space: current_participatory_space
53
+ current_participatory_space:
53
54
  )
54
55
  end
55
56
 
@@ -3,15 +3,15 @@
3
3
  module Decidim
4
4
  module Admin
5
5
  # The controller to handle the Admin
6
- # Terms of use agreement.
6
+ # Terms of service agreement.
7
7
  class AdminTermsController < Decidim::Admin::ApplicationController
8
8
  def accept
9
9
  current_user.admin_terms_accepted_at = Time.current
10
10
  if current_user.save!
11
- flash[:notice] = t("accept.success", scope: "decidim.admin.admin_terms_of_use")
11
+ flash[:notice] = t("accept.success", scope: "decidim.admin.admin_terms_of_service")
12
12
  redirect_to stored_location_for(current_user) || decidim_admin.root_path
13
13
  else
14
- flash[:alert] = t("accept.error", scope: "decidim.admin.admin_terms_of_use")
14
+ flash[:alert] = t("accept.error", scope: "decidim.admin.admin_terms_of_service")
15
15
  redirect_to decidim_admin.admin_terms_show_path
16
16
  end
17
17
  end
@@ -13,13 +13,16 @@ module Decidim
13
13
  include LocaleSwitcher
14
14
  include UseOrganizationTimeZone
15
15
  include PayloadInfo
16
- include HttpCachingDisabler
16
+ include Headers::HttpCachingDisabler
17
+ include Headers::ContentSecurityPolicy
17
18
  include DisableRedirectionToExternalHost
19
+ include Decidim::Admin::Concerns::HasBreadcrumbItems
18
20
 
19
21
  helper Decidim::Admin::ApplicationHelper
20
22
  helper Decidim::Admin::AttributesDisplayHelper
21
23
  helper Decidim::Admin::SettingsHelper
22
24
  helper Decidim::Admin::IconLinkHelper
25
+ helper Decidim::Admin::IconWithTooltipHelper
23
26
  helper Decidim::Admin::MenuHelper
24
27
  helper Decidim::Admin::ScopesHelper
25
28
  helper Decidim::Admin::Paginable::PerPageHelper
@@ -30,6 +33,8 @@ module Decidim
30
33
  helper Decidim::LanguageChooserHelper
31
34
  helper Decidim::ComponentPathHelper
32
35
  helper Decidim::SanitizeHelper
36
+ helper Decidim::BreadcrumbHelper
37
+ helper Decidim::Templates::Admin::ApplicationHelper if Decidim.module_installed?(:templates)
33
38
 
34
39
  default_form_builder Decidim::Admin::FormBuilder
35
40
 
@@ -5,7 +5,12 @@ module Decidim
5
5
  # Controller that allows managing areatypes to group areas
6
6
 
7
7
  class AreaTypesController < Decidim::Admin::ApplicationController
8
+ include Decidim::Admin::Concerns::HasTabbedMenu
9
+
8
10
  layout "decidim/admin/settings"
11
+
12
+ add_breadcrumb_item_from_menu :admin_settings_menu
13
+
9
14
  helper_method :area_types
10
15
 
11
16
  def index
@@ -35,12 +40,12 @@ module Decidim
35
40
  end
36
41
 
37
42
  def edit
38
- enforce_permission_to :update, :area_type, area_type: area_type
43
+ enforce_permission_to(:update, :area_type, area_type:)
39
44
  @form = form(AreaTypeForm).from_model(area_type)
40
45
  end
41
46
 
42
47
  def update
43
- enforce_permission_to :update, :area_type, area_type: area_type
48
+ enforce_permission_to(:update, :area_type, area_type:)
44
49
  @form = form(AreaTypeForm).from_params(params)
45
50
 
46
51
  UpdateAreaType.call(area_type, @form, current_user) do
@@ -57,7 +62,7 @@ module Decidim
57
62
  end
58
63
 
59
64
  def destroy
60
- enforce_permission_to :destroy, :area_type, area_type: area_type
65
+ enforce_permission_to(:destroy, :area_type, area_type:)
61
66
 
62
67
  Decidim.traceability.perform_action!("delete", area_type, current_user) do
63
68
  area_type.destroy!
@@ -70,6 +75,8 @@ module Decidim
70
75
 
71
76
  private
72
77
 
78
+ def tab_menu_name = :admin_areas_menu
79
+
73
80
  def area_type
74
81
  @area_type ||= area_types.find(params[:id])
75
82
  end
@@ -5,7 +5,12 @@ module Decidim
5
5
  # Controller that allows managing all areas at the admin panel.
6
6
  #
7
7
  class AreasController < Decidim::Admin::ApplicationController
8
+ include Decidim::Admin::Concerns::HasTabbedMenu
9
+
8
10
  layout "decidim/admin/settings"
11
+
12
+ add_breadcrumb_item_from_menu :admin_settings_menu
13
+
9
14
  helper_method :area, :organization_areas
10
15
 
11
16
  def index
@@ -35,12 +40,12 @@ module Decidim
35
40
  end
36
41
 
37
42
  def edit
38
- enforce_permission_to :update, :area, area: area
43
+ enforce_permission_to(:update, :area, area:)
39
44
  @form = form(AreaForm).from_model(area)
40
45
  end
41
46
 
42
47
  def update
43
- enforce_permission_to :update, :area, area: area
48
+ enforce_permission_to(:update, :area, area:)
44
49
  @form = form(AreaForm).from_params(params)
45
50
 
46
51
  UpdateArea.call(area, @form) do
@@ -57,7 +62,7 @@ module Decidim
57
62
  end
58
63
 
59
64
  def destroy
60
- enforce_permission_to :destroy, :area, area: area
65
+ enforce_permission_to(:destroy, :area, area:)
61
66
 
62
67
  DestroyArea.call(area, current_user) do
63
68
  on(:ok) do
@@ -73,6 +78,8 @@ module Decidim
73
78
 
74
79
  private
75
80
 
81
+ def tab_menu_name = :admin_areas_menu
82
+
76
83
  def organization_areas
77
84
  current_organization.areas
78
85
  end
@@ -3,7 +3,7 @@
3
3
  module Decidim
4
4
  module Admin
5
5
  class BlockUserController < Decidim::Admin::ApplicationController
6
- layout "decidim/admin/users"
6
+ layout "decidim/admin/global_moderations"
7
7
 
8
8
  helper_method :user
9
9
 
@@ -11,6 +11,7 @@ module Decidim
11
11
  enforce_permission_to :block, :admin_user
12
12
 
13
13
  @form = form(BlockUserForm).from_model(user)
14
+ @form.hide = params[:hide] || false
14
15
  end
15
16
 
16
17
  def create
@@ -21,7 +22,7 @@ module Decidim
21
22
  BlockUser.call(@form) do
22
23
  on(:ok) do
23
24
  flash[:notice] = I18n.t("officializations.block.success", scope: "decidim.admin")
24
- redirect_to moderated_users_path(blocked: true)
25
+ redirect_to moderated_users_path(blocked: true), notice:
25
26
  end
26
27
 
27
28
  on(:invalid) do
@@ -44,7 +45,7 @@ module Decidim
44
45
  end
45
46
  end
46
47
 
47
- redirect_to moderated_users_path(blocked: false)
48
+ redirect_to moderated_users_path, notice:
48
49
  end
49
50
 
50
51
  private