decidim-admin 0.27.10 → 0.28.0.rc4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of decidim-admin might be problematic. Click here for more details.

Files changed (513) 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 +2 -2
  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 -2
  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/authorization_workflows_controller.rb +1 -3
  72. data/app/controllers/decidim/admin/block_user_controller.rb +4 -3
  73. data/app/controllers/decidim/admin/categories_controller.rb +20 -12
  74. data/app/controllers/decidim/admin/component_permissions_controller.rb +2 -2
  75. data/app/controllers/decidim/admin/components/base_controller.rb +16 -1
  76. data/app/controllers/decidim/admin/components_controller.rb +13 -1
  77. data/app/controllers/decidim/admin/concerns/has_attachment_collections.rb +4 -10
  78. data/app/controllers/decidim/admin/concerns/has_attachments.rb +10 -16
  79. data/app/controllers/decidim/admin/concerns/has_breadcrumb_items.rb +27 -0
  80. data/app/controllers/decidim/admin/concerns/has_content_blocks.rb +23 -0
  81. data/app/controllers/decidim/admin/concerns/has_private_users.rb +4 -4
  82. data/app/controllers/decidim/admin/concerns/has_private_users_csv_import.rb +2 -2
  83. data/app/controllers/decidim/admin/concerns/has_tabbed_menu.rb +21 -0
  84. data/app/controllers/decidim/admin/conflicts_controller.rb +3 -9
  85. data/app/controllers/decidim/admin/dashboard_controller.rb +8 -3
  86. data/app/controllers/decidim/admin/exports_controller.rb +21 -4
  87. data/app/controllers/decidim/admin/help_sections_controller.rb +3 -1
  88. data/app/controllers/decidim/admin/impersonatable_users_controller.rb +3 -1
  89. data/app/controllers/decidim/admin/impersonations_controller.rb +8 -9
  90. data/app/controllers/decidim/admin/imports_controller.rb +24 -6
  91. data/app/controllers/decidim/admin/logs_controller.rb +20 -8
  92. data/app/controllers/decidim/admin/managed_users/impersonation_logs_controller.rb +1 -3
  93. data/app/controllers/decidim/admin/managed_users/promotions_controller.rb +2 -2
  94. data/app/controllers/decidim/admin/metrics_controller.rb +1 -1
  95. data/app/controllers/decidim/admin/moderated_users_controller.rb +7 -4
  96. data/app/controllers/decidim/admin/newsletters_controller.rb +16 -7
  97. data/app/controllers/decidim/admin/officializations_controller.rb +3 -3
  98. data/app/controllers/decidim/admin/organization_appearance_controller.rb +3 -0
  99. data/app/controllers/decidim/admin/organization_controller.rb +6 -7
  100. data/app/controllers/decidim/admin/organization_external_domain_whitelist_controller.rb +2 -0
  101. data/app/controllers/decidim/admin/organization_homepage_content_blocks_controller.rb +12 -41
  102. data/app/controllers/decidim/admin/organization_homepage_controller.rb +15 -33
  103. data/app/controllers/decidim/admin/participatory_space/user_role_controller.rb +119 -0
  104. data/app/controllers/decidim/admin/reminders_controller.rb +1 -1
  105. data/app/controllers/decidim/admin/resource_permissions_controller.rb +1 -1
  106. data/app/controllers/decidim/admin/scope_types_controller.rb +10 -3
  107. data/app/controllers/decidim/admin/scopes_controller.rb +10 -3
  108. data/app/controllers/decidim/admin/share_tokens_controller.rb +1 -1
  109. data/app/controllers/decidim/admin/space_publications_controller.rb +53 -0
  110. data/app/controllers/decidim/admin/static_page_content_blocks_controller.rb +40 -0
  111. data/app/controllers/decidim/admin/static_page_topics_controller.rb +18 -7
  112. data/app/controllers/decidim/admin/static_pages_controller.rb +33 -6
  113. data/app/controllers/decidim/admin/users_controller.rb +2 -2
  114. data/app/events/decidim/attachment_created_event.rb +1 -1
  115. data/app/events/decidim/component_published_event.rb +1 -12
  116. data/app/events/decidim/resource_hidden_event.rb +2 -6
  117. data/app/forms/decidim/admin/area_form.rb +1 -1
  118. data/app/forms/decidim/admin/block_user_form.rb +1 -0
  119. data/app/forms/decidim/admin/category_form.rb +1 -1
  120. data/app/forms/decidim/admin/managed_user_promotion_form.rb +1 -1
  121. data/app/forms/decidim/admin/organization_appearance_form.rb +7 -12
  122. data/app/forms/decidim/admin/organization_form.rb +2 -2
  123. data/app/forms/decidim/admin/participatory_space_admin_user_form.rb +16 -0
  124. data/app/forms/decidim/admin/participatory_space_private_user_csv_import_form.rb +3 -5
  125. data/app/forms/decidim/admin/scope_form.rb +1 -1
  126. data/app/forms/decidim/admin/selective_newsletter_form.rb +1 -1
  127. data/app/forms/decidim/admin/static_page_form.rb +3 -3
  128. data/app/helpers/decidim/admin/admin_terms_helper.rb +10 -10
  129. data/app/helpers/decidim/admin/application_helper.rb +1 -14
  130. data/app/helpers/decidim/admin/attributes_display_helper.rb +1 -1
  131. data/app/helpers/decidim/admin/bulk_actions_helper.rb +2 -2
  132. data/app/helpers/decidim/admin/dashboard_helper.rb +3 -3
  133. data/app/helpers/decidim/admin/exports_helper.rb +26 -2
  134. data/app/helpers/decidim/admin/filterable_helper.rb +2 -2
  135. data/app/helpers/decidim/admin/icon_link_helper.rb +12 -11
  136. data/app/helpers/decidim/admin/icon_with_tooltip_helper.rb +22 -0
  137. data/app/helpers/decidim/admin/imports_helper.rb +1 -1
  138. data/app/helpers/decidim/admin/logs_helper.rb +18 -0
  139. data/app/helpers/decidim/admin/menu_helper.rb +61 -1
  140. data/app/helpers/decidim/admin/moderations/reports_helper.rb +3 -2
  141. data/app/helpers/decidim/admin/newsletters_helper.rb +4 -4
  142. data/app/helpers/decidim/admin/paginable/per_page_helper.rb +1 -1
  143. data/app/helpers/decidim/admin/resource_permissions_helper.rb +2 -2
  144. data/app/helpers/decidim/admin/search_form_helper.rb +19 -0
  145. data/app/helpers/decidim/admin/settings_helper.rb +9 -8
  146. data/app/jobs/decidim/admin/application_job.rb +1 -1
  147. data/app/jobs/decidim/admin/expire_impersonation_job.rb +1 -1
  148. data/app/jobs/decidim/admin/import_participatory_space_private_user_csv_job.rb +2 -2
  149. data/app/jobs/decidim/admin/newsletter_job.rb +1 -1
  150. data/app/mailers/decidim/admin/application_mailer.rb +12 -0
  151. data/app/packs/entrypoints/decidim_admin.js +2 -23
  152. data/app/packs/entrypoints/decidim_admin.scss +1 -1
  153. data/app/packs/src/decidim/admin/application.js +0 -12
  154. data/app/packs/src/decidim/admin/officializations.js +21 -3
  155. data/app/packs/src/decidim/admin/participatory_space_search.js +268 -0
  156. data/app/packs/src/decidim/admin/scope_picker_enabler.component.js +2 -2
  157. data/app/packs/src/decidim/admin/sortable.js +0 -2
  158. data/app/packs/src/decidim/admin/tab_focus.js +3 -3
  159. data/app/packs/src/decidim/admin/toggle_nav.js +1 -1
  160. data/app/packs/src/decidim/admin/triadic_color_picker.js +128 -0
  161. data/app/packs/stylesheets/decidim/admin/_bulk_actions.scss +16 -0
  162. data/app/packs/stylesheets/decidim/admin/_cards.scss +171 -0
  163. data/app/packs/stylesheets/decidim/admin/_color_picker.scss +61 -0
  164. data/app/packs/stylesheets/decidim/admin/_component-show.scss +95 -0
  165. data/app/packs/stylesheets/decidim/admin/_data_picker.scss +55 -0
  166. data/app/packs/stylesheets/decidim/admin/_dropdown.scss +35 -0
  167. data/app/packs/stylesheets/decidim/admin/_filters.scss +94 -0
  168. data/app/packs/stylesheets/decidim/admin/_forms.scss +81 -0
  169. data/app/packs/stylesheets/decidim/admin/_item_edit.scss +122 -0
  170. data/app/packs/stylesheets/decidim/admin/_item_show.scss +69 -0
  171. data/app/packs/stylesheets/decidim/admin/_layout.scss +79 -0
  172. data/app/packs/stylesheets/decidim/admin/_legacy_foundation.scss +482 -0
  173. data/app/packs/stylesheets/decidim/admin/_logs.scss +80 -0
  174. data/app/packs/stylesheets/decidim/admin/_main-nav.scss +93 -0
  175. data/app/packs/stylesheets/decidim/admin/_minimap.scss +59 -0
  176. data/app/packs/stylesheets/decidim/admin/_moderations.scss +36 -0
  177. data/app/packs/stylesheets/decidim/admin/_secondary-nav.scss +111 -0
  178. data/app/packs/stylesheets/decidim/admin/_show_email.scss +19 -0
  179. data/app/packs/stylesheets/decidim/admin/_sidebar-menu.scss +66 -0
  180. data/app/packs/stylesheets/decidim/admin/_table-list.scss +155 -0
  181. data/app/packs/stylesheets/decidim/admin/_tabs.scss +74 -0
  182. data/app/packs/stylesheets/decidim/admin/_title-bar.scss +62 -0
  183. data/app/packs/stylesheets/decidim/admin/_user-login.scss +9 -0
  184. data/app/packs/stylesheets/decidim/admin/application.scss +37 -21
  185. data/app/permissions/decidim/admin/permissions.rb +2 -2
  186. data/app/presenters/decidim/admin/aside_menu_presenter.rb +25 -0
  187. data/app/presenters/decidim/admin/dashboard_metric_charts_presenter.rb +0 -26
  188. data/app/presenters/decidim/admin/secondary_menu_presenter.rb +5 -9
  189. data/app/presenters/decidim/admin/simple_menu_presenter.rb +2 -2
  190. data/app/queries/decidim/admin/active_users_counter.rb +1 -1
  191. data/app/queries/decidim/admin/invites.rb +58 -0
  192. data/app/queries/decidim/admin/moderation_stats.rb +53 -0
  193. data/app/views/decidim/admin/admin_terms/show.html.erb +15 -10
  194. data/app/views/decidim/admin/area_types/_form.html.erb +11 -6
  195. data/app/views/decidim/admin/area_types/edit.html.erb +14 -12
  196. data/app/views/decidim/admin/area_types/index.html.erb +35 -33
  197. data/app/views/decidim/admin/area_types/new.html.erb +14 -12
  198. data/app/views/decidim/admin/areas/_form.html.erb +12 -8
  199. data/app/views/decidim/admin/areas/edit.html.erb +14 -12
  200. data/app/views/decidim/admin/areas/index.html.erb +40 -38
  201. data/app/views/decidim/admin/areas/new.html.erb +14 -12
  202. data/app/views/decidim/admin/attachment_collections/_form.html.erb +12 -14
  203. data/app/views/decidim/admin/attachment_collections/edit.html.erb +17 -5
  204. data/app/views/decidim/admin/attachment_collections/index.html.erb +35 -40
  205. data/app/views/decidim/admin/attachment_collections/new.html.erb +16 -5
  206. data/app/views/decidim/admin/attachments/_form.html.erb +18 -22
  207. data/app/views/decidim/admin/attachments/edit.html.erb +17 -5
  208. data/app/views/decidim/admin/attachments/index.html.erb +45 -48
  209. data/app/views/decidim/admin/attachments/new.html.erb +16 -5
  210. data/app/views/decidim/admin/authorization_workflows/index.html.erb +7 -0
  211. data/app/views/decidim/admin/block_user/new.html.erb +39 -18
  212. data/app/views/decidim/admin/categories/_form.html.erb +13 -15
  213. data/app/views/decidim/admin/categories/edit.html.erb +16 -5
  214. data/app/views/decidim/admin/categories/index.html.erb +44 -55
  215. data/app/views/decidim/admin/categories/new.html.erb +16 -5
  216. data/app/views/decidim/admin/components/_actions.html.erb +17 -16
  217. data/app/views/decidim/admin/components/_component.html.erb +5 -3
  218. data/app/views/decidim/admin/components/_form.html.erb +87 -47
  219. data/app/views/decidim/admin/components/_resource_action.html.erb +9 -0
  220. data/app/views/decidim/admin/components/_settings_fields.html.erb +11 -8
  221. data/app/views/decidim/admin/components/edit.html.erb +16 -5
  222. data/app/views/decidim/admin/components/index.html.erb +23 -18
  223. data/app/views/decidim/admin/components/new.html.erb +16 -5
  224. data/app/views/decidim/admin/conflicts/edit.html.erb +24 -26
  225. data/app/views/decidim/admin/conflicts/index.html.erb +23 -26
  226. data/app/views/decidim/admin/dashboard/_pending_moderations.html.erb +12 -0
  227. data/app/views/decidim/admin/dashboard/show.html.erb +26 -20
  228. data/app/views/decidim/admin/devise/mailers/password_change.html.erb +1 -1
  229. data/app/views/decidim/admin/devise/mailers/reset_password_instructions.html.erb +2 -2
  230. data/app/views/decidim/admin/exports/_dropdown.html.erb +11 -4
  231. data/app/views/decidim/admin/help_sections/_form.html.erb +34 -18
  232. data/app/views/decidim/admin/impersonatable_users/index.html.erb +46 -53
  233. data/app/views/decidim/admin/impersonations/_form.html.erb +53 -35
  234. data/app/views/decidim/admin/impersonations/new.html.erb +21 -19
  235. data/app/views/decidim/admin/imports/_dropdown.html.erb +5 -2
  236. data/app/views/decidim/admin/imports/new.html.erb +54 -43
  237. data/app/views/decidim/admin/logs/_filters.html.erb +37 -0
  238. data/app/views/decidim/admin/logs/_logs_list.html.erb +4 -3
  239. data/app/views/decidim/admin/logs/index.html.erb +3 -6
  240. data/app/views/decidim/admin/managed_users/impersonation_logs/index.html.erb +27 -28
  241. data/app/views/decidim/admin/managed_users/promotions/_form.html.erb +8 -2
  242. data/app/views/decidim/admin/managed_users/promotions/new.html.erb +17 -15
  243. data/app/views/decidim/admin/metrics/_metrics.html.erb +1 -6
  244. data/app/views/decidim/admin/metrics/index.html.erb +1 -1
  245. data/app/views/decidim/admin/moderated_users/_report.html.erb +1 -5
  246. data/app/views/decidim/admin/moderated_users/index.html.erb +58 -75
  247. data/app/views/decidim/admin/moderations/index.html.erb +91 -101
  248. data/app/views/decidim/admin/moderations/reports/index.html.erb +91 -92
  249. data/app/views/decidim/admin/moderations/reports/show.html.erb +51 -49
  250. data/app/views/decidim/admin/newsletter_templates/index.html.erb +12 -11
  251. data/app/views/decidim/admin/newsletter_templates/show.html.erb +8 -6
  252. data/app/views/decidim/admin/newsletters/_form.html.erb +10 -4
  253. data/app/views/decidim/admin/newsletters/edit.html.erb +21 -12
  254. data/app/views/decidim/admin/newsletters/index.html.erb +57 -57
  255. data/app/views/decidim/admin/newsletters/new.html.erb +20 -12
  256. data/app/views/decidim/admin/newsletters/select_recipients_to_deliver.html.erb +53 -55
  257. data/app/views/decidim/admin/newsletters/show.html.erb +24 -17
  258. data/app/views/decidim/admin/officializations/_show_email_modal.html.erb +20 -21
  259. data/app/views/decidim/admin/officializations/index.html.erb +55 -62
  260. data/app/views/decidim/admin/officializations/new.html.erb +24 -16
  261. data/app/views/decidim/admin/officializations/show_email.html.erb +0 -1
  262. data/app/views/decidim/admin/organization/_form.html.erb +76 -90
  263. data/app/views/decidim/admin/organization/edit.html.erb +19 -11
  264. data/app/views/decidim/admin/organization_appearance/_form.html.erb +72 -57
  265. data/app/views/decidim/admin/organization_appearance/edit.html.erb +17 -6
  266. data/app/views/decidim/admin/organization_appearance/form/_colors.html.erb +63 -24
  267. data/app/views/decidim/admin/organization_appearance/form/_header_snippets.html.erb +17 -0
  268. data/app/views/decidim/admin/organization_appearance/form/_images.html.erb +39 -40
  269. data/app/views/decidim/admin/organization_appearance/form/_minimap.html.erb +5 -14
  270. data/app/views/decidim/admin/organization_external_domain_whitelist/_external_domain.html.erb +18 -13
  271. data/app/views/decidim/admin/organization_external_domain_whitelist/_form.html.erb +8 -10
  272. data/app/views/decidim/admin/organization_external_domain_whitelist/edit.html.erb +17 -6
  273. data/app/views/decidim/admin/participatory_space_private_users/_form.html.erb +10 -14
  274. data/app/views/decidim/admin/participatory_space_private_users/index.html.erb +59 -60
  275. data/app/views/decidim/admin/participatory_space_private_users/new.html.erb +17 -5
  276. data/app/views/decidim/admin/participatory_space_private_users_csv_imports/new.html.erb +28 -11
  277. data/app/views/decidim/admin/reminders/new.html.erb +18 -16
  278. data/app/views/decidim/admin/resource_permissions/edit.html.erb +46 -47
  279. data/app/views/decidim/admin/scope_types/_form.html.erb +9 -6
  280. data/app/views/decidim/admin/scope_types/edit.html.erb +17 -11
  281. data/app/views/decidim/admin/scope_types/index.html.erb +40 -34
  282. data/app/views/decidim/admin/scope_types/new.html.erb +17 -11
  283. data/app/views/decidim/admin/scopes/_form.html.erb +11 -9
  284. data/app/views/decidim/admin/scopes/edit.html.erb +17 -11
  285. data/app/views/decidim/admin/scopes/index.html.erb +39 -41
  286. data/app/views/decidim/admin/scopes/new.html.erb +17 -11
  287. data/app/views/decidim/admin/share_tokens/_share_tokens.html.erb +3 -15
  288. data/app/views/decidim/admin/shared/_admin_confirm_modal.html.erb +18 -0
  289. data/app/views/decidim/admin/shared/_filters.html.erb +6 -10
  290. data/app/views/decidim/admin/shared/_gallery.html.erb +8 -19
  291. data/app/views/decidim/admin/shared/_js-callout.html.erb +4 -2
  292. data/app/views/decidim/admin/shared/landing_page/_content_blocks.html.erb +68 -0
  293. data/app/views/decidim/admin/shared/landing_page/edit.html.erb +1 -47
  294. data/app/views/decidim/admin/shared/landing_page_content_blocks/edit.html.erb +24 -14
  295. data/app/views/decidim/admin/static_page_topics/_form.html.erb +2 -2
  296. data/app/views/decidim/admin/static_page_topics/edit.html.erb +21 -11
  297. data/app/views/decidim/admin/static_page_topics/index.html.erb +41 -0
  298. data/app/views/decidim/admin/static_page_topics/new.html.erb +21 -11
  299. data/app/views/decidim/admin/static_pages/_form.html.erb +41 -26
  300. data/app/views/decidim/admin/static_pages/_form_notable_changes.html.erb +2 -3
  301. data/app/views/decidim/admin/static_pages/_topic.html.erb +40 -44
  302. data/app/views/decidim/admin/static_pages/edit.html.erb +22 -12
  303. data/app/views/decidim/admin/static_pages/index.html.erb +14 -2
  304. data/app/views/decidim/admin/static_pages/new.html.erb +15 -11
  305. data/app/views/decidim/admin/user_groups/index.html.erb +58 -58
  306. data/app/views/decidim/admin/user_groups_csv_verifications/new.html.erb +28 -17
  307. data/app/views/decidim/admin/users/_form.html.erb +14 -8
  308. data/app/views/decidim/admin/users/index.html.erb +52 -54
  309. data/app/views/decidim/admin/users/new.html.erb +15 -12
  310. data/app/views/layouts/decidim/admin/_admin_timeout_modal.html.erb +24 -0
  311. data/app/views/layouts/decidim/admin/_application.html.erb +50 -12
  312. data/app/views/layouts/decidim/admin/_breadcrumb.html.erb +26 -0
  313. data/app/views/layouts/decidim/admin/_callouts_full.html.erb +2 -13
  314. data/app/views/layouts/decidim/admin/_header.html.erb +2 -6
  315. data/app/views/layouts/decidim/admin/_js_configuration.html.erb +3 -6
  316. data/app/views/layouts/decidim/admin/_sidebar_menu.html.erb +24 -0
  317. data/app/views/layouts/decidim/admin/_title_bar.html.erb +36 -37
  318. data/app/views/layouts/decidim/admin/_title_bar_responsive.html.erb +46 -0
  319. data/app/views/layouts/decidim/admin/global_moderations.html.erb +1 -3
  320. data/app/views/layouts/decidim/admin/newsletters.erb +0 -11
  321. data/app/views/layouts/decidim/admin/settings.html.erb +2 -3
  322. data/app/views/layouts/decidim/admin/users.html.erb +1 -3
  323. data/config/locales/ar-SA.yml +0 -3
  324. data/config/locales/ar.yml +9 -83
  325. data/config/locales/bg.yml +3 -990
  326. data/config/locales/ca.yml +121 -89
  327. data/config/locales/cs-CZ.yml +0 -3
  328. data/config/locales/cs.yml +120 -86
  329. data/config/locales/de.yml +123 -91
  330. data/config/locales/el.yml +90 -78
  331. data/config/locales/en.yml +123 -91
  332. data/config/locales/eo.yml +0 -2
  333. data/config/locales/es-MX.yml +121 -89
  334. data/config/locales/es-PY.yml +121 -89
  335. data/config/locales/es.yml +124 -92
  336. data/config/locales/eu.yml +126 -94
  337. data/config/locales/fi-pl.yml +0 -3
  338. data/config/locales/fi-plain.yml +112 -80
  339. data/config/locales/fi.yml +115 -83
  340. data/config/locales/fr-CA.yml +119 -87
  341. data/config/locales/fr-LU.yml +0 -3
  342. data/config/locales/fr.yml +119 -87
  343. data/config/locales/ga-IE.yml +4 -12
  344. data/config/locales/gl.yml +7 -99
  345. data/config/locales/hu.yml +93 -98
  346. data/config/locales/id-ID.yml +0 -64
  347. data/config/locales/is-IS.yml +0 -53
  348. data/config/locales/it.yml +9 -103
  349. data/config/locales/ja.yml +117 -88
  350. data/config/locales/kaa.yml +6 -13
  351. data/config/locales/ko.yml +0 -720
  352. data/config/locales/lb-LU.yml +0 -3
  353. data/config/locales/lb.yml +9 -104
  354. data/config/locales/lt.yml +90 -72
  355. data/config/locales/lv.yml +0 -79
  356. data/config/locales/nl.yml +14 -109
  357. data/config/locales/no.yml +8 -115
  358. data/config/locales/pl.yml +7 -158
  359. data/config/locales/pt-BR.yml +87 -106
  360. data/config/locales/pt.yml +9 -104
  361. data/config/locales/ro-RO.yml +86 -85
  362. data/config/locales/ru.yml +0 -55
  363. data/config/locales/sk-SK.yml +3 -6
  364. data/config/locales/sk.yml +0 -76
  365. data/config/locales/sl.yml +0 -8
  366. data/config/locales/sq-AL.yml +4 -486
  367. data/config/locales/sr-CS.yml +0 -60
  368. data/config/locales/sv.yml +99 -192
  369. data/config/locales/th-TH.yml +0 -100
  370. data/config/locales/tr-TR.yml +1 -89
  371. data/config/locales/uk.yml +0 -48
  372. data/config/locales/zh-CN.yml +0 -79
  373. data/config/locales/zh-TW.yml +74 -72
  374. data/config/routes.rb +12 -4
  375. data/lib/decidim/admin/components.rb +1 -1
  376. data/lib/decidim/admin/custom_import.rb +29 -0
  377. data/lib/decidim/admin/engine.rb +54 -216
  378. data/lib/decidim/admin/import/importer.rb +3 -3
  379. data/lib/decidim/admin/import/importer_factory.rb +1 -1
  380. data/lib/decidim/admin/import/readers/base.rb +1 -1
  381. data/lib/decidim/admin/import/readers/csv.rb +2 -2
  382. data/lib/decidim/admin/import/verifier.rb +4 -4
  383. data/lib/decidim/admin/menu.rb +281 -0
  384. data/lib/decidim/admin/search_form_builder.rb +39 -0
  385. data/lib/decidim/admin/test/admin_participatory_space_access_examples.rb +3 -2
  386. data/lib/decidim/admin/test/commands/create_attachment_collection_examples.rb +3 -3
  387. data/lib/decidim/admin/test/commands/create_category_examples.rb +2 -2
  388. data/lib/decidim/admin/test/commands/destroy_category_examples.rb +4 -13
  389. data/lib/decidim/admin/test/commands/publish_participatory_space_examples.rb +102 -0
  390. data/lib/decidim/admin/test/commands/update_attachment_collection_examples.rb +4 -4
  391. data/lib/decidim/admin/test/commands/update_category_examples.rb +3 -3
  392. data/lib/decidim/admin/test/destroy_admin_examples.rb +39 -0
  393. data/lib/decidim/admin/test/filterable_examples.rb +8 -8
  394. data/lib/decidim/admin/test/filters_participatory_space_user_roles_examples.rb +12 -43
  395. data/lib/decidim/admin/test/filters_participatory_space_users_examples.rb +34 -43
  396. data/lib/decidim/admin/test/forms/attachment_collection_form_examples.rb +1 -1
  397. data/lib/decidim/admin/test/forms/attachment_form_examples.rb +1 -1
  398. data/lib/decidim/admin/test/forms/category_form_examples.rb +1 -1
  399. data/lib/decidim/admin/test/manage_attachment_collections_examples.rb +21 -22
  400. data/lib/decidim/admin/test/manage_attachments_examples.rb +12 -12
  401. data/lib/decidim/admin/test/manage_categories_examples.rb +16 -19
  402. data/lib/decidim/admin/test/manage_component_permissions_examples.rb +24 -24
  403. data/lib/decidim/admin/test/manage_hide_content_examples.rb +59 -0
  404. data/lib/decidim/admin/test/manage_moderations_examples.rb +39 -21
  405. data/lib/decidim/admin/test/manage_paginated_collection_examples.rb +2 -2
  406. data/lib/decidim/admin/test/manage_participatory_space_publications_examples.rb +54 -0
  407. data/lib/decidim/admin/test/needs_admin_tos_accepted_examples.rb +1 -1
  408. data/lib/decidim/admin/test.rb +4 -0
  409. data/lib/decidim/admin/version.rb +1 -1
  410. data/lib/decidim/admin.rb +2 -0
  411. metadata +92 -117
  412. data/app/commands/decidim/admin/create_participatory_space_admin_user_actions.rb +0 -94
  413. data/app/commands/decidim/admin/reorder_content_blocks.rb +0 -100
  414. data/app/commands/decidim/admin/update_content_block.rb +0 -79
  415. data/app/controllers/concerns/decidim/admin/landing_page.rb +0 -105
  416. data/app/controllers/concerns/decidim/admin/landing_page_content_blocks.rb +0 -118
  417. data/app/packs/images/decidim/admin/.keep +0 -0
  418. data/app/packs/stylesheets/decidim/admin/_decidim.scss +0 -23
  419. data/app/packs/stylesheets/decidim/admin/_variables.scss +0 -18
  420. data/app/packs/stylesheets/decidim/admin/bundle.scss +0 -2
  421. data/app/packs/stylesheets/decidim/admin/components/_accordion.scss +0 -41
  422. data/app/packs/stylesheets/decidim/admin/components/_dropdown-menu.scss +0 -3
  423. data/app/packs/stylesheets/decidim/admin/components/_sortable.scss +0 -5
  424. data/app/packs/stylesheets/decidim/admin/extra/_action-icon.scss +0 -32
  425. data/app/packs/stylesheets/decidim/admin/extra/_block_user.scss +0 -5
  426. data/app/packs/stylesheets/decidim/admin/extra/_cards.scss +0 -24
  427. data/app/packs/stylesheets/decidim/admin/extra/_categories.scss +0 -5
  428. data/app/packs/stylesheets/decidim/admin/extra/_dropdown_inverted.scss +0 -47
  429. data/app/packs/stylesheets/decidim/admin/extra/_editor.scss +0 -1
  430. data/app/packs/stylesheets/decidim/admin/extra/_email_preview.scss +0 -5
  431. data/app/packs/stylesheets/decidim/admin/extra/_label-required.scss +0 -3
  432. data/app/packs/stylesheets/decidim/admin/extra/_login.scss +0 -37
  433. data/app/packs/stylesheets/decidim/admin/extra/_logs.scss +0 -122
  434. data/app/packs/stylesheets/decidim/admin/extra/_newsletter-templates-gallery.scss +0 -3
  435. data/app/packs/stylesheets/decidim/admin/extra/_organization-appearance.scss +0 -141
  436. data/app/packs/stylesheets/decidim/admin/extra/_quill.scss +0 -12
  437. data/app/packs/stylesheets/decidim/admin/extra/_select_multiple.scss +0 -3
  438. data/app/packs/stylesheets/decidim/admin/extra/_show_email.scss +0 -31
  439. data/app/packs/stylesheets/decidim/admin/extra/_sort.scss +0 -13
  440. data/app/packs/stylesheets/decidim/admin/extra/_title_bar.scss +0 -80
  441. data/app/packs/stylesheets/decidim/admin/modules/_action-icon.scss +0 -30
  442. data/app/packs/stylesheets/decidim/admin/modules/_agenda.scss +0 -34
  443. data/app/packs/stylesheets/decidim/admin/modules/_autocomplete.scss +0 -5
  444. data/app/packs/stylesheets/decidim/admin/modules/_buttons.scss +0 -86
  445. data/app/packs/stylesheets/decidim/admin/modules/_callouts.scss +0 -45
  446. data/app/packs/stylesheets/decidim/admin/modules/_card-grid.scss +0 -25
  447. data/app/packs/stylesheets/decidim/admin/modules/_cards.scss +0 -126
  448. data/app/packs/stylesheets/decidim/admin/modules/_char-counter.scss +0 -22
  449. data/app/packs/stylesheets/decidim/admin/modules/_component-counter.scss +0 -26
  450. data/app/packs/stylesheets/decidim/admin/modules/_draggable-list.scss +0 -27
  451. data/app/packs/stylesheets/decidim/admin/modules/_dropdown.scss +0 -20
  452. data/app/packs/stylesheets/decidim/admin/modules/_filters.scss +0 -83
  453. data/app/packs/stylesheets/decidim/admin/modules/_forms.scss +0 -164
  454. data/app/packs/stylesheets/decidim/admin/modules/_icons.scss +0 -68
  455. data/app/packs/stylesheets/decidim/admin/modules/_layout.scss +0 -75
  456. data/app/packs/stylesheets/decidim/admin/modules/_loading-spinner.scss +0 -19
  457. data/app/packs/stylesheets/decidim/admin/modules/_main-nav.scss +0 -45
  458. data/app/packs/stylesheets/decidim/admin/modules/_moderations.scss +0 -39
  459. data/app/packs/stylesheets/decidim/admin/modules/_modules.scss +0 -44
  460. data/app/packs/stylesheets/decidim/admin/modules/_pics.scss +0 -5
  461. data/app/packs/stylesheets/decidim/admin/modules/_process-header.scss +0 -13
  462. data/app/packs/stylesheets/decidim/admin/modules/_reveal.scss +0 -5
  463. data/app/packs/stylesheets/decidim/admin/modules/_secondary-nav.scss +0 -114
  464. data/app/packs/stylesheets/decidim/admin/modules/_table-list.scss +0 -146
  465. data/app/packs/stylesheets/decidim/admin/modules/_tabs.scss +0 -63
  466. data/app/packs/stylesheets/decidim/admin/modules/_title-bar.scss +0 -35
  467. data/app/packs/stylesheets/decidim/admin/modules/_typography.scss +0 -27
  468. data/app/packs/stylesheets/decidim/admin/modules/_upload_modal.scss +0 -42
  469. data/app/packs/stylesheets/decidim/admin/modules/_user-login.scss +0 -25
  470. data/app/packs/stylesheets/decidim/admin/modules/_users_statistics.scss +0 -18
  471. data/app/packs/stylesheets/decidim/admin/plugins/_foundation-datepicker.scss +0 -224
  472. data/app/packs/stylesheets/decidim/admin/plugins/jquery.auto-complete.css +0 -9
  473. data/app/packs/stylesheets/decidim/admin/user_moderations.scss +0 -3
  474. data/app/packs/stylesheets/decidim/admin/utils/_flex.scss +0 -60
  475. data/app/packs/stylesheets/decidim/admin/utils/_helpers.scss +0 -53
  476. data/app/packs/stylesheets/decidim/admin/utils/_keyframes.scss +0 -21
  477. data/app/packs/stylesheets/decidim/admin/utils/_mixins.scss +0 -151
  478. data/app/packs/stylesheets/decidim/admin/utils/_settings.scss +0 -882
  479. data/app/packs/stylesheets/decidim/admin/utils/_toggle-expand.scss +0 -9
  480. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/_constants.scss +0 -5
  481. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/_math.scss +0 -45
  482. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_acos.scss +0 -14
  483. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_asin.scss +0 -16
  484. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_atan.scss +0 -36
  485. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_atan2.scss +0 -46
  486. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_cos.scss +0 -17
  487. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_cot.scss +0 -12
  488. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_csc.scss +0 -12
  489. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_exp.scss +0 -16
  490. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_fact.scss +0 -21
  491. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_frexp.scss +0 -25
  492. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_ldexp.scss +0 -20
  493. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_log.scss +0 -39
  494. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_pow.scss +0 -34
  495. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_sec.scss +0 -12
  496. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_sin.scss +0 -10
  497. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_sqrt.scss +0 -21
  498. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/functions/_tan.scss +0 -12
  499. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/helpers/_deg-to-rad.scss +0 -6
  500. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/helpers/_rad-to-deg.scss +0 -6
  501. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/helpers/_strip-unit.scss +0 -11
  502. data/app/packs/stylesheets/decidim/admin/vendor/mathsass/helpers/_unitless-rad.scss +0 -19
  503. data/app/views/decidim/admin/attachment_collections/show.html.erb +0 -13
  504. data/app/views/decidim/admin/attachments/show.html.erb +0 -24
  505. data/app/views/decidim/admin/categories/show.html.erb +0 -12
  506. data/app/views/decidim/admin/organization_homepage/edit.html.erb +0 -43
  507. data/app/views/decidim/admin/organization_homepage_content_blocks/edit.html.erb +0 -13
  508. data/app/views/decidim/admin/static_pages/show.html.erb +0 -21
  509. data/app/views/layouts/decidim/admin/_template_bottom.html.erb +0 -2
  510. data/app/views/layouts/decidim/admin/_template_top.html.erb +0 -4
  511. data/app/views/layouts/decidim/admin/pages.html.erb +0 -15
  512. data/config/locales/he-IL.yml +0 -53
  513. data/decidim-admin.gemspec +0 -36
@@ -10,8 +10,20 @@ module Decidim
10
10
  # current component.
11
11
  #
12
12
  # Returns a rendered dropdown.
13
- def export_dropdown(component = current_component, resource_id = nil)
14
- render partial: "decidim/admin/exports/dropdown", locals: { component: component, resource_id: resource_id }
13
+ def export_dropdown(component = current_component, resource_id = nil, apply_search: false)
14
+ filters =
15
+ if apply_search && respond_to?(:query)
16
+ { id_in: query.result.map(&:id) }
17
+ else
18
+ {}
19
+ end
20
+ render_dropdown(component:, resource_id:, filters:)
21
+ end
22
+
23
+ def export_dropdowns(query, component = current_component, resource_id = nil)
24
+ return export_dropdown(component, resource_id, apply_search: false) if query.conditions.empty?
25
+
26
+ export_dropdown(component, resource_id, apply_search: false).concat(export_dropdown(component, resource_id, apply_search: true))
15
27
  end
16
28
 
17
29
  # Routes to the correct exporter for a component.
@@ -23,6 +35,18 @@ module Decidim
23
35
  def exports_path(component, options)
24
36
  EngineRouter.admin_proxy(component.participatory_space).component_exports_path(options.merge(component_id: component))
25
37
  end
38
+
39
+ def dropdown_id(filters)
40
+ return "export-dropdown" if filters.empty?
41
+
42
+ "export-selection-dropdown"
43
+ end
44
+
45
+ private
46
+
47
+ def render_dropdown(component:, resource_id:, filters:)
48
+ render partial: "decidim/admin/exports/dropdown", locals: { component:, resource_id:, filters: }
49
+ end
26
50
  end
27
51
  end
28
52
  end
@@ -6,7 +6,7 @@ module Decidim
6
6
  module FilterableHelper
7
7
  # Renders the filters selector with tags in the admin panel.
8
8
  def admin_filter_selector(i18n_ctx = nil)
9
- render partial: "decidim/admin/shared/filters", locals: { i18n_ctx: i18n_ctx }
9
+ render partial: "decidim/admin/shared/filters", locals: { i18n_ctx: }
10
10
  end
11
11
 
12
12
  # Builds a tree of links from Decidim::Admin::Filterable::filters_with_values
@@ -113,7 +113,7 @@ module Decidim
113
113
 
114
114
  def remove_filter_icon_link(filter)
115
115
  icon_link_to(
116
- "circle-x",
116
+ "delete-bin-line",
117
117
  url_for(query_params_without(filter)),
118
118
  t("decidim.admin.actions.cancel"),
119
119
  class: "action-icon--remove"
@@ -5,8 +5,7 @@ module Decidim
5
5
  module IconLinkHelper
6
6
  # This helper adds the necessary boilerplate for the admin icon links.
7
7
  #
8
- # icon_name - A String representing the icon name from Iconic
9
- # http://useiconic.com/open
8
+ # icon_name - A String representing the icon name
10
9
  # link - The path or url where the link should point to.
11
10
  # title - A String that will be shown when hovering the icon.
12
11
  # options - An optional Hash containing extra data for the link:
@@ -15,15 +14,17 @@ module Decidim
15
14
  # data - This option can be used to add custom data attributes.
16
15
  #
17
16
  def icon_link_to(icon_name, link, title, options = {})
18
- link_to(link,
19
- method: options[:method],
20
- class: "action-icon #{options[:class]}",
21
- data: options[:data] || {},
22
- title: title,
23
- target: options[:target]) do
24
- content_tag(:span, data: { tooltip: true, disable_hover: false, click_open: false },
25
- title: title) do
26
- icon(icon_name, aria_label: title, role: "img")
17
+ with_tooltip(title, options.merge(class: "top")) do
18
+ link_to(link,
19
+ method: options[:method],
20
+ class: "action-icon #{options[:class]}",
21
+ data: options[:data] || {},
22
+ title:,
23
+ target: options[:target]) do
24
+ content_tag(:span, data: { tooltip: true, disable_hover: false, click_open: false },
25
+ title:) do
26
+ icon(icon_name, aria_label: title, role: "img")
27
+ end
27
28
  end
28
29
  end
29
30
  end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Admin
5
+ module IconWithTooltipHelper
6
+ # This helper adds the necessary boilerplate for the admin icon with tooltip.
7
+ #
8
+ # icon_name - A String representing the icon name
9
+ # title - A String that will be shown when hovering the icon.
10
+ # class - Any extra class that will be added to the link.
11
+ # data - This option can be used to add custom data attributes.
12
+ def icon_with_tooltip(icon_name, title, options = {})
13
+ with_tooltip(title, options.merge(class: "top")) do
14
+ content_tag(:span, data: { tooltip: true, disable_hover: false, click_open: false },
15
+ title:) do
16
+ icon(icon_name, aria_label: title, role: "img")
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -13,7 +13,7 @@ module Decidim
13
13
  #
14
14
  # Returns a rendered dropdown.
15
15
  def import_dropdown(component = current_component, resource_id: nil)
16
- render "decidim/admin/imports/dropdown", component: component, resource_id: resource_id, custom: block_given? do
16
+ render "decidim/admin/imports/dropdown", component:, resource_id:, custom: block_given? do
17
17
  yield if block_given?
18
18
  end
19
19
  end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Admin
5
+ module LogsHelper
6
+ def participatory_space_options
7
+ Decidim.participatory_space_manifests.map do |manifest|
8
+ model_class = manifest.model_class_name.constantize
9
+ spaces = manifest.participatory_spaces.call(current_organization).map do |space|
10
+ [translated_attribute(space.title), "#{manifest.name}(#{space.id})"]
11
+ end
12
+
13
+ [model_class.model_name.human(count: 2), spaces]
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -14,14 +14,74 @@ module Decidim
14
14
  )
15
15
  end
16
16
 
17
+ def main_menu_modules
18
+ @main_menu_modules ||= ::Decidim::MenuPresenter.new(
19
+ :admin_menu_modules,
20
+ self,
21
+ container_options: { class: "main-nav__modules" },
22
+ active_class: "is-active",
23
+ label: t("layouts.decidim.header.main_menu")
24
+ )
25
+ end
26
+
27
+ def dropdown_menu(target_menu)
28
+ ::Decidim::Admin::SecondaryMenuPresenter.new(
29
+ target_menu,
30
+ self,
31
+ container_options: { class: "dropdown dropdown__bottom" },
32
+ element_class: "dropdown__item",
33
+ active_class: "is-active"
34
+ )
35
+ end
36
+
17
37
  def sidebar_menu(target_menu)
18
- ::Decidim::Admin::SecondaryMenuPresenter.new(target_menu, self, active_class: "is-active")
38
+ ::Decidim::Admin::SecondaryMenuPresenter.new(
39
+ target_menu,
40
+ self,
41
+ element_class: "sidebar-menu__item",
42
+ active_class: "is-active"
43
+ )
44
+ end
45
+
46
+ def admin_tabs(target_menu)
47
+ ::Decidim::MenuPresenter.new(
48
+ target_menu,
49
+ self,
50
+ container_options: { class: "tab-x-container" },
51
+ active_class: "is-active"
52
+ )
53
+ end
54
+
55
+ def breadcrumb_modules_admin_menu
56
+ @breadcrumb_modules_admin_menu ||= ::Decidim::BreadcrumbRootMenuPresenter.new(
57
+ :admin_menu_modules,
58
+ self,
59
+ container_options: { class: "menu-bar__main-dropdown__menu" }
60
+ )
61
+ end
62
+
63
+ def breadcrumb_root_admin_menu
64
+ @breadcrumb_root_admin_menu ||= ::Decidim::BreadcrumbRootMenuPresenter.new(
65
+ :admin_menu,
66
+ self,
67
+ container_options: { class: "menu-bar__main-dropdown__menu" }
68
+ )
19
69
  end
20
70
 
21
71
  def simple_menu(target_menu:, options: {})
22
72
  options = { active_class: "is-active" }.merge(options)
23
73
  ::Decidim::Admin::SimpleMenuPresenter.new(target_menu, self, options)
24
74
  end
75
+
76
+ def add_secondary_root_menu(menu)
77
+ @secondary_root_menu = menu
78
+ end
79
+
80
+ attr_reader :secondary_root_menu
81
+
82
+ def has_secondary_root_menu?
83
+ @secondary_root_menu.present?
84
+ end
25
85
  end
26
86
  end
27
87
  end
@@ -7,6 +7,7 @@ module Decidim
7
7
  module ReportsHelper
8
8
  include Decidim::Messaging::ConversationHelper
9
9
  include Decidim::ResourceHelper
10
+ include Decidim::SanitizeHelper
10
11
  include Decidim::TranslationsHelper
11
12
 
12
13
  # Public: Returns the reportable's author names separated by commas.
@@ -18,13 +19,13 @@ module Decidim
18
19
  when User
19
20
  content_tag :li do
20
21
  link_to current_or_new_conversation_path_with(author), target: "_blank", rel: "noopener" do
21
- "#{author.name} #{icon "envelope-closed"}".html_safe
22
+ "#{author.name} #{icon "mail-send-line"}".html_safe
22
23
  end
23
24
  end
24
25
  when Decidim::Meetings::Meeting
25
26
  content_tag :li do
26
27
  link_to resource_locator(author).path, target: "_blank", rel: "noopener" do
27
- translated_attribute(author.title)
28
+ decidim_sanitize(translated_attribute(author.title))
28
29
  end
29
30
  end
30
31
  else
@@ -31,7 +31,7 @@ module Decidim
31
31
  { prompt: t("select_recipients_to_deliver.none", scope: "decidim.admin.newsletters"),
32
32
  label: t("activerecord.models.decidim/#{manifest_name.singularize}.other"),
33
33
  include_hidden: false },
34
- multiple: true, size: spaces.size > 10 ? 10 : spaces.size, class: "chosen-select"
34
+ multiple: true, size: [spaces.size, 10].min, class: "chosen-select"
35
35
  end
36
36
  end
37
37
 
@@ -74,7 +74,7 @@ module Decidim
74
74
  else
75
75
  Decidim.find_participatory_space_manifest(type["manifest_name"].to_sym)
76
76
  .participatory_spaces.call(current_organization).where(id: type["ids"]).each do |space|
77
- html += "<strong>#{decidim_escape_translated space.title}</strong>"
77
+ html += "<strong>#{decidim_html_escape(translated_attribute(space.title))}</strong>"
78
78
  end
79
79
  end
80
80
  html += "<br/>"
@@ -88,7 +88,7 @@ module Decidim
88
88
  concat t("index.segmented_to", scope: "decidim.admin.newsletters", subject: nil)
89
89
  if newsletter.sent_scopes.any?
90
90
  newsletter.sent_scopes.each do |scope|
91
- concat content_tag(:strong, (translated_attribute scope.name).to_s)
91
+ concat content_tag(:strong, decidim_html_escape(translated_attribute(scope.name)).to_s)
92
92
  end
93
93
  else
94
94
  concat content_tag(:strong, t("index.no_scopes", scope: "decidim.admin.newsletters"))
@@ -141,7 +141,7 @@ module Decidim
141
141
  spinner = "<span id='recipients_count_spinner' class='loading-spinner hide'></span>"
142
142
  body = "#{t("recipients_count", scope: "decidim.admin.newsletters.select_recipients_to_deliver", count: recipients_count_query)} #{spinner}"
143
143
  {
144
- body: body
144
+ body:
145
145
  }
146
146
  end
147
147
  end
@@ -7,7 +7,7 @@ module Decidim
7
7
  module PerPageHelper
8
8
  def per_page_options
9
9
  OpenStruct.new(
10
- per_page: per_page,
10
+ per_page:,
11
11
  per_page_range: Decidim::Admin.per_page_range
12
12
  )
13
13
  end
@@ -10,7 +10,7 @@ module Decidim
10
10
  return unless resource.allow_resource_permissions? && allowed_to?(:update, :component, component: resource.component)
11
11
 
12
12
  current_participatory_space_admin_proxy = ::Decidim::EngineRouter.admin_proxy(current_participatory_space)
13
- icon_link_to "key",
13
+ icon_link_to "key-2-line",
14
14
  current_participatory_space_admin_proxy.edit_component_permissions_path(
15
15
  current_component.id,
16
16
  resource_name: resource.resource_manifest.name,
@@ -28,7 +28,7 @@ module Decidim
28
28
  resource_key = resource.resource_manifest.name.to_sym
29
29
  return unless resource.allow_resource_permissions? && allowed_to?(:update, resource_key, resource_key => resource)
30
30
 
31
- icon_link_to "key",
31
+ icon_link_to "key-2-line",
32
32
  send("edit_#{resource_key}_permissions_path", resource, resource_name: resource.resource_manifest.name),
33
33
  t("actions.permissions", scope: "decidim.admin"),
34
34
  class: "action-icon--permissions #{"action-icon--highlighted" if resource.permissions.present?}"
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Admin
5
+ # Overrides some methods from Ransack::Helpers::FormHelper to fix the search
6
+ # user interfaces within Decidim.
7
+ module SearchFormHelper
8
+ # Provide the correct builder option for the admin search forms. Otherwise
9
+ # they would be generated using Ransack::Helpers::FormHelper which does
10
+ # not provide all the same features that the Decidim form builders, such
11
+ # as datetime pickers.
12
+ def search_form_for(record, options = {}, &)
13
+ options[:builder] ||= SearchFormBuilder
14
+
15
+ super(record, options, &)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -11,6 +11,7 @@ module Decidim
11
11
  boolean: :check_box,
12
12
  integer: :number_field,
13
13
  string: :text_field,
14
+ float: :number_field,
14
15
  text: :text_area,
15
16
  select: :select_field,
16
17
  scope: :scope_field,
@@ -25,14 +26,14 @@ module Decidim
25
26
  # @param attribute [Decidim::SettingsManifest::Attribute] The Settings::Attribute instance with the
26
27
  # description of the attribute.
27
28
  # @param name [Symbol] The name of the field.
28
- # @param i18n_scope [String] The scope where it'll find all the texts for the internationalization (locales)
29
+ # @param i18n_scope [String] The scope where it will find all the texts for the internationalization (locales)
29
30
  # @param options [Hash] Extra options to be passed to the field helper.
30
31
  # @option options [String] :tabs_prefix The type of the setting.
31
32
  # It can be "global-settings" or "step-N-settings", where N is the number of the step.
32
33
  # @option options [nil, Boolean] :readonly True if the input is readonly.
33
34
  # @return [ActiveSupport::SafeBuffer] Rendered form field.
34
35
  def settings_attribute_input(form, attribute, name, i18n_scope, options = {})
35
- form_method = form_method_for_attribute(attribute)
36
+ form_method = form_method_for_attribute(attribute, options)
36
37
 
37
38
  container_class = "#{name}_container"
38
39
  if options[:readonly]
@@ -40,7 +41,7 @@ module Decidim
40
41
  help_text = text_for_setting(name, "readonly", i18n_scope)
41
42
  end
42
43
  help_text ||= text_for_setting(name, "help", i18n_scope)
43
- help_text_options = help_text ? { help_text: help_text } : {}
44
+ help_text_options = help_text ? { help_text: } : {}
44
45
 
45
46
  options = { label: t(name, scope: i18n_scope) }
46
47
  .merge(help_text_options)
@@ -56,7 +57,7 @@ module Decidim
56
57
  elsif form_method == :select_field
57
58
  render_select_form_field(form, attribute, name, i18n_scope, options)
58
59
  elsif form_method == :scope_field
59
- scopes_picker_field(form, name)
60
+ scopes_select_field(form, name)
60
61
  else
61
62
  form.send(form_method, name, options)
62
63
  end
@@ -108,14 +109,14 @@ module Decidim
108
109
  :last,
109
110
  :first,
110
111
  { checked: form.object.send(name) },
111
- options) { |b| b.label { b.radio_button + b.text } }
112
+ options) { |b| b.label(class: "form__wrapper-checkbox-label") { b.radio_button + b.text } }
112
113
  end
113
114
  html << content_tag(:p, options[:help_text], class: "help-text") if options[:help_text]
114
115
  html
115
116
  end
116
117
 
117
118
  # Get the translation for a given attribute
118
- # Returns a translation or nil. If nil, ZURB Foundation won't add the help_text.
119
+ # Returns a translation or nil. If nil, FoundationRailsHelper will not add the help_text.
119
120
  #
120
121
  # @param name (see #settings_attribute_input)
121
122
  # @param suffix [String] What suffix the i18n key has
@@ -133,8 +134,8 @@ module Decidim
133
134
  #
134
135
  # @param attribute [Decidim::SettingsManifest::Attribute]
135
136
  # @return [Symbol] The FormBuilder's method used to render
136
- def form_method_for_attribute(attribute)
137
- return :editor if attribute.type.to_sym == :text && attribute.editor?
137
+ def form_method_for_attribute(attribute, options)
138
+ return :editor if attribute.type.to_sym == :text && options[:editor]
138
139
 
139
140
  TYPES[attribute.type.to_sym]
140
141
  end
@@ -4,7 +4,7 @@ module Decidim
4
4
  module Admin
5
5
  # Custom ApplicationJob scoped to the admin panel.
6
6
  #
7
- class ApplicationJob < ActiveJob::Base
7
+ class ApplicationJob < Decidim::ApplicationJob
8
8
  end
9
9
  end
10
10
  end
@@ -6,7 +6,7 @@ module Decidim
6
6
  queue_as :default
7
7
 
8
8
  def perform(user, current_user)
9
- impersonation_log = Decidim::ImpersonationLog.where(admin: current_user, user: user).active.first
9
+ impersonation_log = Decidim::ImpersonationLog.where(admin: current_user, user:).active.first
10
10
  return unless impersonation_log
11
11
 
12
12
  impersonation_log.expire!
@@ -14,9 +14,9 @@ module Decidim
14
14
  name: user_name,
15
15
  email: email.downcase.strip
16
16
  }
17
- private_user_form = ParticipatorySpacePrivateUserForm.from_params(params, privatable_to: privatable_to)
17
+ private_user_form = ParticipatorySpacePrivateUserForm.from_params(params, privatable_to:)
18
18
  .with_context(
19
- current_user: current_user,
19
+ current_user:,
20
20
  current_particiaptory_space: privatable_to
21
21
  )
22
22
 
@@ -17,7 +17,7 @@ module Decidim
17
17
 
18
18
  @newsletter.update!(
19
19
  sent_at: Time.current,
20
- extended_data: extended_data,
20
+ extended_data:,
21
21
  total_recipients: recipients.count,
22
22
  total_deliveries: 0
23
23
  )
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Admin
5
+ # Custom application mailer, scoped to the admin mailer.
6
+ #
7
+ class ApplicationMailer < ActionMailer::Base
8
+ default from: Decidim.config.mailer_sender
9
+ layout "mailer"
10
+ end
11
+ end
12
+ end
@@ -1,17 +1,6 @@
1
1
  /* eslint no-unused-vars: 0 */
2
2
  /* eslint id-length: ["error", { "exceptions": ["$"] }] */
3
3
 
4
- import "core-js/stable";
5
- import "regenerator-runtime/runtime";
6
- import $ from "jquery"
7
- import Quill from "quill"
8
- import Rails from "@rails/ujs"
9
-
10
- import "foundation-sites"
11
- import "src/decidim/vendor/foundation-datepicker"
12
- import "src/decidim/foundation_datepicker_locales"
13
- import "jquery-serializejson"
14
-
15
4
  import "src/decidim/admin/tab_focus"
16
5
  import initLanguageChangeSelect from "src/decidim/admin/choose_language"
17
6
  import "src/decidim/admin/application"
@@ -20,28 +9,18 @@ import "src/decidim/admin/welcome_notification"
20
9
  import "src/decidim/admin/newsletters"
21
10
  import "src/decidim/admin/form"
22
11
  import "src/decidim/admin/external_domain_whitelist"
23
- import "src/decidim/confirm"
24
12
  import "src/decidim/admin/draggable-list"
25
13
  import "src/decidim/admin/sortable"
26
- import "src/decidim/gallery"
27
14
  import "src/decidim/admin/moderations"
28
- import "src/decidim/input_tags"
29
- import "src/decidim/input_hashtags"
30
- import "src/decidim/input_mentions"
31
- import "src/decidim/vizzs"
32
- import "src/decidim/ajax_modals"
33
15
  import "src/decidim/admin/officializations"
34
- import "src/decidim/session_timeouter"
35
16
  import "src/decidim/slug_form"
36
- import "src/decidim/direct_uploads/upload_field"
37
17
  import "src/decidim/admin/admin_autocomplete"
18
+ import "src/decidim/admin/triadic_color_picker"
19
+ import "src/decidim/admin/participatory_space_search"
38
20
 
39
21
  // CSS
40
22
  import "entrypoints/decidim_admin.scss";
41
23
 
42
- // This needs to be loaded after confirm dialog to bind properly
43
- Rails.start()
44
-
45
24
  window.addEventListener("DOMContentLoaded", () => {
46
25
  initLanguageChangeSelect(document.querySelectorAll("select.language-change"));
47
26
  });
@@ -1 +1 @@
1
- @import "stylesheets/decidim/admin/application.scss"
1
+ @import "stylesheets/decidim/admin/application.scss";
@@ -2,9 +2,6 @@
2
2
 
3
3
  import toggleNav from "src/decidim/admin/toggle_nav"
4
4
  import createSortList from "src/decidim/admin/sort_list.component"
5
- import createQuillEditor from "src/decidim/editor"
6
- import formDatePicker from "src/decidim/form_datepicker"
7
- import DataPicker from "src/decidim/data_picker"
8
5
  import FormFilterComponent from "src/decidim/form_filter"
9
6
  import Configuration from "src/decidim/configuration"
10
7
  import InputCharacterCounter from "src/decidim/input_character_counter"
@@ -16,8 +13,6 @@ window.Decidim.config = new Configuration()
16
13
  window.Decidim.InputCharacterCounter = InputCharacterCounter;
17
14
 
18
15
  $(() => {
19
- window.theDataPicker = new DataPicker($(".data-picker"));
20
-
21
16
  $(document).foundation();
22
17
 
23
18
  toggleNav();
@@ -37,16 +32,9 @@ $(() => {
37
32
  }
38
33
  })
39
34
 
40
- formDatePicker();
41
-
42
- $(".editor-container").each((_idx, container) => {
43
- createQuillEditor(container);
44
- });
45
-
46
35
  $("form.new_filter").each(function () {
47
36
  const formFilter = new FormFilterComponent($(this));
48
37
 
49
38
  formFilter.mountComponent();
50
39
  })
51
40
  });
52
-
@@ -9,12 +9,30 @@ $(() => {
9
9
  const $email = $("#user_email", $modal);
10
10
  const $fullName = $("#user_full_name", $modal);
11
11
 
12
- $("[data-toggle=show-email-modal]").on("click", (event) => {
12
+ $("[data-dialog-open=show-email-modal]").on("click", (event) => {
13
13
  event.preventDefault()
14
14
 
15
15
  $button.show()
16
- $button.attr("data-open-url", event.currentTarget.href)
16
+ $button.attr("data-remote-url", event.currentTarget.href)
17
17
  $fullName.text($(event.currentTarget).data("full-name"))
18
- $email.html("")
18
+ $email.html("");
19
19
  })
20
+
21
+ /* eslint-disable */
22
+ async function getUserEmail(url) {
23
+ let response = await fetch(url);
24
+ if (response.ok) {
25
+ let userEmail = await response.text();
26
+ $("#user_email").html(userEmail);
27
+ $button.hide()
28
+ } else {
29
+ console.log(`Error-HTTP: " + ${response.status}`);
30
+ }
31
+ }
32
+ /* eslint-enable */
33
+
34
+ $("[data-open=user_email]").on("click", (event) => {
35
+ getUserEmail(event.currentTarget.dataset.remoteUrl);
36
+ })
37
+
20
38
  })