decidim-participatory_processes 0.27.10 → 0.28.0.rc4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/app/cells/decidim/participatory_process_groups/content_block_cell.rb +5 -1
  4. data/app/cells/decidim/participatory_process_groups/content_blocks/extra_data/recent_users.erb +1 -0
  5. data/app/cells/decidim/participatory_process_groups/content_blocks/extra_data_cell.rb +71 -0
  6. data/app/cells/decidim/participatory_process_groups/content_blocks/main_data/content.erb +30 -0
  7. data/app/cells/decidim/participatory_process_groups/content_blocks/main_data_cell.rb +77 -0
  8. data/app/cells/decidim/participatory_process_groups/content_blocks/related_processes_cell.rb +47 -0
  9. data/app/cells/decidim/participatory_process_groups/content_blocks/statistics_cell.rb +2 -2
  10. data/app/cells/decidim/participatory_process_groups/process_filters_cell.rb +4 -4
  11. data/app/cells/decidim/participatory_processes/content_block_cell.rb +21 -0
  12. data/app/cells/decidim/participatory_processes/content_blocks/extra_data/active_step.erb +1 -0
  13. data/app/cells/decidim/participatory_processes/content_blocks/extra_data_cell.rb +60 -0
  14. data/app/cells/decidim/participatory_processes/content_blocks/hero_cell.rb +29 -0
  15. data/app/cells/decidim/participatory_processes/content_blocks/highlighted_processes_cell.rb +14 -27
  16. data/app/cells/decidim/participatory_processes/content_blocks/highlighted_processes_settings_form/show.erb +1 -1
  17. data/app/cells/decidim/participatory_processes/content_blocks/main_data_cell.rb +34 -0
  18. data/app/cells/decidim/participatory_processes/content_blocks/metadata_cell.rb +23 -0
  19. data/app/cells/decidim/participatory_processes/content_blocks/metrics_cell.rb +25 -0
  20. data/app/cells/decidim/participatory_processes/content_blocks/processes_settings_form/show.erb +3 -0
  21. data/app/cells/decidim/participatory_processes/content_blocks/processes_settings_form_cell.rb +28 -0
  22. data/app/cells/decidim/participatory_processes/content_blocks/related_processes/content.erb +1 -0
  23. data/app/cells/decidim/participatory_processes/content_blocks/related_processes_cell.rb +53 -0
  24. data/app/cells/decidim/participatory_processes/content_blocks/stats_cell.rb +17 -0
  25. data/app/cells/decidim/participatory_processes/filtered_participatory_processes_cell.rb +1 -1
  26. data/app/cells/decidim/participatory_processes/process_cell.rb +2 -2
  27. data/app/cells/decidim/participatory_processes/process_dropdown_metadata/metadata.erb +22 -0
  28. data/app/cells/decidim/participatory_processes/process_dropdown_metadata_cell.rb +39 -0
  29. data/app/cells/decidim/participatory_processes/process_filters/show.erb +4 -5
  30. data/app/cells/decidim/participatory_processes/process_filters/type_filter.erb +1 -1
  31. data/app/cells/decidim/participatory_processes/process_filters_cell.rb +6 -6
  32. data/app/cells/decidim/participatory_processes/process_g_cell.rb +31 -0
  33. data/app/cells/decidim/participatory_processes/process_group_cell.rb +2 -2
  34. data/app/cells/decidim/participatory_processes/process_group_g_cell.rb +23 -0
  35. data/app/cells/decidim/participatory_processes/process_group_metadata_cell.rb +46 -0
  36. data/app/cells/decidim/participatory_processes/process_group_s_cell.rb +5 -13
  37. data/app/cells/decidim/participatory_processes/process_metadata_cell.rb +44 -0
  38. data/app/cells/decidim/participatory_processes/process_metadata_g_cell.rb +15 -0
  39. data/app/cells/decidim/participatory_processes/process_s_cell.rb +5 -25
  40. data/app/cells/decidim/participatory_processes/process_step/show.erb +48 -0
  41. data/app/cells/decidim/participatory_processes/process_step_cell.rb +30 -0
  42. data/app/cells/decidim/participatory_processes/processes/show.erb +16 -0
  43. data/app/cells/decidim/participatory_processes/processes_cell.rb +24 -0
  44. data/app/commands/decidim/participatory_processes/admin/activate_participatory_process_step.rb +1 -1
  45. data/app/commands/decidim/participatory_processes/admin/copy_participatory_process.rb +2 -2
  46. data/app/commands/decidim/participatory_processes/admin/create_participatory_process.rb +3 -1
  47. data/app/commands/decidim/participatory_processes/admin/create_participatory_process_group.rb +4 -2
  48. data/app/commands/decidim/participatory_processes/admin/create_participatory_process_step.rb +1 -1
  49. data/app/commands/decidim/participatory_processes/admin/create_participatory_process_type.rb +1 -1
  50. data/app/commands/decidim/participatory_processes/admin/destroy_participatory_process_group.rb +1 -1
  51. data/app/commands/decidim/participatory_processes/admin/destroy_participatory_process_step.rb +1 -1
  52. data/app/commands/decidim/participatory_processes/admin/destroy_participatory_process_type.rb +1 -1
  53. data/app/commands/decidim/participatory_processes/admin/import_participatory_process.rb +1 -1
  54. data/app/commands/decidim/participatory_processes/admin/reorder_participatory_process_steps.rb +1 -1
  55. data/app/commands/decidim/participatory_processes/admin/update_participatory_process.rb +1 -1
  56. data/app/commands/decidim/participatory_processes/admin/update_participatory_process_group.rb +2 -2
  57. data/app/commands/decidim/participatory_processes/admin/update_participatory_process_step.rb +1 -1
  58. data/app/commands/decidim/participatory_processes/admin/update_participatory_process_type.rb +1 -1
  59. data/app/constraints/decidim/participatory_processes/current_participatory_process.rb +1 -1
  60. data/app/controllers/decidim/participatory_processes/admin/application_controller.rb +29 -0
  61. data/app/controllers/decidim/participatory_processes/admin/categories_controller.rb +2 -0
  62. data/app/controllers/decidim/participatory_processes/admin/concerns/participatory_process_admin.rb +3 -1
  63. data/app/controllers/decidim/participatory_processes/admin/moderations/reports_controller.rb +1 -1
  64. data/app/controllers/decidim/participatory_processes/admin/moderations_controller.rb +1 -1
  65. data/app/controllers/decidim/participatory_processes/admin/participatory_process_attachment_collections_controller.rb +5 -0
  66. data/app/controllers/decidim/participatory_processes/admin/participatory_process_attachments_controller.rb +5 -0
  67. data/app/controllers/decidim/participatory_processes/admin/participatory_process_group_landing_page_content_blocks_controller.rb +1 -5
  68. data/app/controllers/decidim/participatory_processes/admin/participatory_process_group_landing_page_controller.rb +24 -7
  69. data/app/controllers/decidim/participatory_processes/admin/participatory_process_groups_controller.rb +16 -0
  70. data/app/controllers/decidim/participatory_processes/admin/participatory_process_imports_controller.rb +14 -0
  71. data/app/controllers/decidim/participatory_processes/admin/participatory_process_landing_page_content_blocks_controller.rb +37 -0
  72. data/app/controllers/decidim/participatory_processes/admin/participatory_process_landing_page_controller.rb +37 -0
  73. data/app/controllers/decidim/participatory_processes/admin/participatory_process_publications_controller.rb +9 -29
  74. data/app/controllers/decidim/participatory_processes/admin/participatory_process_step_activations_controller.rb +1 -1
  75. data/app/controllers/decidim/participatory_processes/admin/participatory_process_steps_controller.rb +16 -4
  76. data/app/controllers/decidim/participatory_processes/admin/participatory_process_types_controller.rb +19 -0
  77. data/app/controllers/decidim/participatory_processes/admin/participatory_process_user_roles_controller.rb +8 -91
  78. data/app/controllers/decidim/participatory_processes/admin/participatory_processes_controller.rb +3 -0
  79. data/app/controllers/decidim/participatory_processes/participatory_process_groups_controller.rb +14 -1
  80. data/app/controllers/decidim/participatory_processes/participatory_processes_controller.rb +19 -4
  81. data/app/events/decidim/participatory_process_role_assigned_event.rb +6 -6
  82. data/app/events/decidim/participatory_process_step_activated_event.rb +5 -4
  83. data/app/events/decidim/participatory_process_step_changed_event.rb +5 -4
  84. data/app/forms/decidim/participatory_processes/admin/participatory_process_copy_form.rb +1 -1
  85. data/app/forms/decidim/participatory_processes/admin/participatory_process_form.rb +1 -1
  86. data/app/forms/decidim/participatory_processes/admin/participatory_process_import_form.rb +1 -1
  87. data/app/forms/decidim/participatory_processes/admin/participatory_process_step_form.rb +2 -2
  88. data/app/forms/decidim/participatory_processes/admin/participatory_process_user_role_form.rb +2 -18
  89. data/app/helpers/decidim/participatory_processes/admin/participatory_process_helper.rb +1 -0
  90. data/app/helpers/decidim/participatory_processes/application_helper.rb +5 -0
  91. data/app/helpers/decidim/participatory_processes/participatory_process_helper.rb +37 -9
  92. data/app/helpers/decidim/participatory_processes/participatory_space_content_blocks_helper.rb +17 -0
  93. data/app/jobs/decidim/participatory_processes/change_active_step_job.rb +35 -0
  94. data/app/models/decidim/participatory_process.rb +5 -5
  95. data/app/models/decidim/participatory_process_group.rb +4 -0
  96. data/app/models/decidim/participatory_process_user_role.rb +5 -34
  97. data/app/packs/entrypoints/decidim_participatory_processes.js +0 -2
  98. data/app/packs/src/decidim/participatory_processes/admin/participatory_processes.js +2 -2
  99. data/app/permissions/decidim/participatory_processes/permissions.rb +11 -15
  100. data/app/presenters/decidim/participatory_processes/admin_log/participatory_process_group_presenter.rb +2 -2
  101. data/app/presenters/decidim/participatory_processes/admin_log/participatory_process_presenter.rb +2 -2
  102. data/app/presenters/decidim/participatory_processes/admin_log/participatory_process_type_presenter.rb +2 -2
  103. data/app/presenters/decidim/participatory_processes/admin_log/participatory_process_user_role_presenter.rb +2 -2
  104. data/app/presenters/decidim/participatory_processes/admin_log/step_presenter.rb +2 -2
  105. data/app/presenters/decidim/participatory_processes/participatory_process_group_stats_presenter.rb +4 -40
  106. data/app/presenters/decidim/participatory_processes/participatory_process_metric_charts_presenter.rb +0 -68
  107. data/app/presenters/decidim/participatory_processes/participatory_process_presenter.rb +6 -0
  108. data/app/presenters/decidim/participatory_processes/participatory_process_stats_presenter.rb +3 -42
  109. data/app/queries/decidim/participatory_processes/admin/admin_users.rb +1 -1
  110. data/app/queries/decidim/participatory_processes/admin/moderators.rb +1 -1
  111. data/app/serializers/decidim/participatory_processes/participatory_process_importer.rb +4 -4
  112. data/app/views/decidim/participatory_processes/admin/participatory_process_copies/_form.html.erb +24 -29
  113. data/app/views/decidim/participatory_processes/admin/participatory_process_copies/new.html.erb +16 -5
  114. data/app/views/decidim/participatory_processes/admin/participatory_process_groups/_form.html.erb +72 -50
  115. data/app/views/decidim/participatory_processes/admin/participatory_process_groups/edit.html.erb +15 -9
  116. data/app/views/decidim/participatory_processes/admin/participatory_process_groups/index.html.erb +49 -54
  117. data/app/views/decidim/participatory_processes/admin/participatory_process_groups/new.html.erb +28 -5
  118. data/app/views/decidim/participatory_processes/admin/participatory_process_imports/_form.html.erb +33 -39
  119. data/app/views/decidim/participatory_processes/admin/participatory_process_imports/new.html.erb +18 -5
  120. data/app/views/decidim/participatory_processes/admin/participatory_process_steps/_form.html.erb +18 -25
  121. data/app/views/decidim/participatory_processes/admin/participatory_process_steps/edit.html.erb +16 -5
  122. data/app/views/decidim/participatory_processes/admin/participatory_process_steps/index.html.erb +54 -54
  123. data/app/views/decidim/participatory_processes/admin/participatory_process_steps/new.html.erb +18 -5
  124. data/app/views/decidim/participatory_processes/admin/participatory_process_steps/show.html.erb +2 -2
  125. data/app/views/decidim/participatory_processes/admin/participatory_process_types/_form.html.erb +6 -8
  126. data/app/views/decidim/participatory_processes/admin/participatory_process_types/edit.html.erb +14 -6
  127. data/app/views/decidim/participatory_processes/admin/participatory_process_types/index.html.erb +47 -50
  128. data/app/views/decidim/participatory_processes/admin/participatory_process_types/new.html.erb +14 -6
  129. data/app/views/decidim/participatory_processes/admin/participatory_process_user_roles/_form.html.erb +14 -18
  130. data/app/views/decidim/participatory_processes/admin/participatory_process_user_roles/edit.html.erb +17 -6
  131. data/app/views/decidim/participatory_processes/admin/participatory_process_user_roles/index.html.erb +59 -60
  132. data/app/views/decidim/participatory_processes/admin/participatory_process_user_roles/new.html.erb +16 -5
  133. data/app/views/decidim/participatory_processes/admin/participatory_processes/_form.html.erb +193 -146
  134. data/app/views/decidim/participatory_processes/admin/participatory_processes/edit.html.erb +25 -11
  135. data/app/views/decidim/participatory_processes/admin/participatory_processes/index.html.erb +111 -128
  136. data/app/views/decidim/participatory_processes/admin/participatory_processes/new.html.erb +16 -9
  137. data/app/views/decidim/participatory_processes/participatory_process_groups/show.html.erb +6 -10
  138. data/app/views/decidim/participatory_processes/participatory_processes/_collection.html.erb +8 -0
  139. data/app/views/decidim/participatory_processes/participatory_processes/all_metrics.html.erb +21 -8
  140. data/app/views/decidim/participatory_processes/participatory_processes/index.html.erb +19 -17
  141. data/app/views/decidim/participatory_processes/participatory_processes/index.js.erb +1 -8
  142. data/app/views/decidim/participatory_processes/participatory_processes/show.html.erb +14 -128
  143. data/app/views/layouts/decidim/_process_header.html.erb +15 -26
  144. data/app/views/layouts/decidim/_process_nav_item.html.erb +6 -0
  145. data/app/views/layouts/decidim/admin/_manage_processes.html.erb +36 -0
  146. data/app/views/layouts/decidim/admin/participatory_process.html.erb +12 -14
  147. data/app/views/layouts/decidim/admin/participatory_process_group.html.erb +23 -13
  148. data/app/views/layouts/decidim/admin/participatory_process_groups.html.erb +13 -0
  149. data/app/views/layouts/decidim/admin/participatory_process_type.html.erb +13 -11
  150. data/app/views/layouts/decidim/admin/participatory_processes.html.erb +14 -8
  151. data/app/views/layouts/decidim/participatory_process.html.erb +7 -14
  152. data/config/locales/ar.yml +1 -55
  153. data/config/locales/bg.yml +0 -518
  154. data/config/locales/ca.yml +50 -70
  155. data/config/locales/cs.yml +51 -71
  156. data/config/locales/de.yml +52 -72
  157. data/config/locales/el.yml +8 -64
  158. data/config/locales/en.yml +52 -72
  159. data/config/locales/es-MX.yml +49 -69
  160. data/config/locales/es-PY.yml +49 -69
  161. data/config/locales/es.yml +49 -69
  162. data/config/locales/eu.yml +89 -112
  163. data/config/locales/fi-plain.yml +50 -70
  164. data/config/locales/fi.yml +57 -77
  165. data/config/locales/fr-CA.yml +51 -71
  166. data/config/locales/fr.yml +52 -72
  167. data/config/locales/ga-IE.yml +0 -16
  168. data/config/locales/gl.yml +0 -67
  169. data/config/locales/hu.yml +6 -66
  170. data/config/locales/id-ID.yml +1 -55
  171. data/config/locales/is-IS.yml +0 -24
  172. data/config/locales/it.yml +0 -67
  173. data/config/locales/ja.yml +51 -71
  174. data/config/locales/lb.yml +1 -153
  175. data/config/locales/lt.yml +39 -65
  176. data/config/locales/lv.yml +1 -59
  177. data/config/locales/nl.yml +0 -67
  178. data/config/locales/no.yml +0 -92
  179. data/config/locales/pl.yml +0 -124
  180. data/config/locales/pt-BR.yml +1 -113
  181. data/config/locales/pt.yml +0 -67
  182. data/config/locales/ro-RO.yml +4 -64
  183. data/config/locales/ru.yml +0 -49
  184. data/config/locales/sk.yml +1 -56
  185. data/config/locales/sl.yml +0 -7
  186. data/config/locales/sr-CS.yml +0 -4
  187. data/config/locales/sv.yml +148 -240
  188. data/config/locales/tr-TR.yml +7 -68
  189. data/config/locales/uk.yml +0 -49
  190. data/config/locales/zh-CN.yml +2 -63
  191. data/config/locales/zh-TW.yml +3 -63
  192. data/db/migrate/20220315100140_change_steps_dates_to_datetime.rb +8 -0
  193. data/lib/decidim/api/participatory_process_step_type.rb +2 -2
  194. data/lib/decidim/participatory_processes/admin_engine.rb +20 -139
  195. data/lib/decidim/participatory_processes/content_blocks/registry_manager.rb +278 -0
  196. data/lib/decidim/participatory_processes/engine.rb +13 -103
  197. data/lib/decidim/participatory_processes/menu.rb +190 -0
  198. data/lib/decidim/participatory_processes/participatory_space.rb +7 -204
  199. data/lib/decidim/participatory_processes/query_extensions.rb +2 -2
  200. data/lib/decidim/participatory_processes/seeds.rb +164 -0
  201. data/lib/decidim/participatory_processes/test/factories.rb +58 -66
  202. data/lib/decidim/participatory_processes/version.rb +1 -1
  203. data/lib/tasks/decidim_participatory_processes.rake +8 -0
  204. metadata +62 -67
  205. data/app/cells/decidim/participatory_process_groups/content_blocks/highlighted_participatory_processes/filters.erb +0 -21
  206. data/app/cells/decidim/participatory_process_groups/content_blocks/highlighted_participatory_processes/filters_small_view.erb +0 -18
  207. data/app/cells/decidim/participatory_process_groups/content_blocks/highlighted_participatory_processes/participatory_space_filters.erb +0 -6
  208. data/app/cells/decidim/participatory_process_groups/content_blocks/highlighted_participatory_processes/show.erb +0 -8
  209. data/app/cells/decidim/participatory_process_groups/content_blocks/highlighted_participatory_processes/title_filter_order.erb +0 -8
  210. data/app/cells/decidim/participatory_process_groups/content_blocks/highlighted_participatory_processes_cell.rb +0 -60
  211. data/app/cells/decidim/participatory_process_groups/content_blocks/html/show.erb +0 -3
  212. data/app/cells/decidim/participatory_process_groups/content_blocks/html_cell.rb +0 -13
  213. data/app/cells/decidim/participatory_process_groups/content_blocks/metadata/show.erb +0 -28
  214. data/app/cells/decidim/participatory_process_groups/content_blocks/metadata_cell.rb +0 -15
  215. data/app/cells/decidim/participatory_process_groups/content_blocks/title/show.erb +0 -43
  216. data/app/cells/decidim/participatory_process_groups/content_blocks/title_cell.rb +0 -64
  217. data/app/cells/decidim/participatory_processes/content_blocks/highlighted_processes/_all_processes.erb +0 -9
  218. data/app/cells/decidim/participatory_processes/content_blocks/highlighted_processes/show.erb +0 -14
  219. data/app/cells/decidim/participatory_processes/content_blocks/highlighted_processes/single_process.erb +0 -48
  220. data/app/cells/decidim/participatory_processes/process_group_m/footer.erb +0 -8
  221. data/app/cells/decidim/participatory_processes/process_group_m_cell.rb +0 -60
  222. data/app/cells/decidim/participatory_processes/process_group_s/image.erb +0 -1
  223. data/app/cells/decidim/participatory_processes/process_group_s/show.erb +0 -8
  224. data/app/cells/decidim/participatory_processes/process_m/data.erb +0 -21
  225. data/app/cells/decidim/participatory_processes/process_m/footer.erb +0 -14
  226. data/app/cells/decidim/participatory_processes/process_m/tags.erb +0 -8
  227. data/app/cells/decidim/participatory_processes/process_m_cell.rb +0 -87
  228. data/app/cells/decidim/participatory_processes/process_s/image.erb +0 -1
  229. data/app/cells/decidim/participatory_processes/process_s/show.erb +0 -14
  230. data/app/commands/decidim/participatory_processes/admin/create_participatory_process_admin.rb +0 -58
  231. data/app/commands/decidim/participatory_processes/admin/destroy_participatory_process_admin.rb +0 -58
  232. data/app/commands/decidim/participatory_processes/admin/notify_role_assigned_to_participatory_process.rb +0 -22
  233. data/app/commands/decidim/participatory_processes/admin/publish_participatory_process.rb +0 -40
  234. data/app/commands/decidim/participatory_processes/admin/unpublish_participatory_process.rb +0 -40
  235. data/app/commands/decidim/participatory_processes/admin/update_participatory_process_admin.rb +0 -56
  236. data/app/controllers/decidim/participatory_processes/participatory_process_steps_controller.rb +0 -28
  237. data/app/controllers/decidim/participatory_processes/widgets_controller.rb +0 -37
  238. data/app/packs/src/decidim/participatory_processes/filters.js +0 -28
  239. data/app/views/decidim/participatory_process_steps/_participatory_process_step.html.erb +0 -16
  240. data/app/views/decidim/participatory_processes/participatory_process_steps/_timeline.html.erb +0 -7
  241. data/app/views/decidim/participatory_processes/participatory_process_steps/index.html.erb +0 -18
  242. data/app/views/decidim/participatory_processes/participatory_processes/_metrics.html.erb +0 -10
  243. data/app/views/decidim/participatory_processes/participatory_processes/_order_by_processes.html.erb +0 -1
  244. data/app/views/decidim/participatory_processes/participatory_processes/_participatory_process_group.html.erb +0 -4
  245. data/app/views/decidim/participatory_processes/participatory_processes/_promoted_process.html.erb +0 -39
  246. data/app/views/decidim/participatory_processes/participatory_processes/_promoted_process_group.html.erb +0 -31
  247. data/app/views/layouts/decidim/_process_header_steps.html.erb +0 -37
  248. data/app/views/layouts/decidim/_process_navigation.html.erb +0 -20
  249. data/config/locales/he-IL.yml +0 -1
  250. data/db/seeds/Exampledocument.pdf +0 -0
  251. data/db/seeds/city.jpeg +0 -0
  252. data/db/seeds/city2.jpeg +0 -0
  253. data/db/seeds/homepage_image.jpg +0 -0
  254. data/decidim-participatory_processes.gemspec +0 -31
@@ -19,7 +19,6 @@ module Decidim
19
19
  public_list_process_groups_action?
20
20
  public_read_process_group_action?
21
21
  public_read_process_action?
22
- public_embed_process_action?
23
22
  return permission_action
24
23
  end
25
24
 
@@ -43,6 +42,8 @@ module Decidim
43
42
 
44
43
  return permission_action unless process
45
44
 
45
+ user_can_read_private_users?
46
+
46
47
  moderator_action?
47
48
  collaborator_action?
48
49
  valuator_action?
@@ -53,7 +54,14 @@ module Decidim
53
54
 
54
55
  private
55
56
 
56
- # It's an admin user if it's an organization admin or is a space admin
57
+ def user_can_read_private_users?
58
+ return unless permission_action.subject == :space_private_user
59
+ return unless process.private_space?
60
+
61
+ toggle_allow(user.admin? || can_manage_process?(role: :admin) || can_manage_process?(role: :collaborator))
62
+ end
63
+
64
+ # It is an admin user if it is an organization admin or is a space admin
57
65
  # for the current `process`.
58
66
  def admin_user?
59
67
  user.admin? || (process ? can_manage_process?(role: :admin) : has_manageable_processes?)
@@ -113,17 +121,6 @@ module Decidim
113
121
  toggle_allow(can_manage_process?)
114
122
  end
115
123
 
116
- def public_embed_process_action?
117
- return unless permission_action.action == :embed &&
118
- [:process, :participatory_space].include?(permission_action.subject) &&
119
- process
120
-
121
- return disallow! unless process.published?
122
- return disallow! if process.private_space
123
-
124
- allow!
125
- end
126
-
127
124
  def can_view_private_space?
128
125
  return true unless process.private_space
129
126
  return false unless user
@@ -207,6 +204,7 @@ module Decidim
207
204
  # Collaborators can only preview their own processes.
208
205
  def collaborator_action?
209
206
  return unless can_manage_process?(role: :collaborator)
207
+ return if permission_action.subject == :space_private_user
210
208
 
211
209
  allow! if permission_action.action == :preview
212
210
  end
@@ -238,7 +236,6 @@ module Decidim
238
236
  :process,
239
237
  :process_step,
240
238
  :process_user_role,
241
- :space_private_user,
242
239
  :export_space,
243
240
  :import
244
241
  ].include?(permission_action.subject)
@@ -258,7 +255,6 @@ module Decidim
258
255
  :process,
259
256
  :process_step,
260
257
  :process_user_role,
261
- :space_private_user,
262
258
  :export_space,
263
259
  :import
264
260
  ].include?(permission_action.subject)
@@ -6,8 +6,8 @@ module Decidim
6
6
  # This class holds the logic to present a `Decidim::ParticipatoryProcess`
7
7
  # for the `AdminLog` log.
8
8
  #
9
- # Usage should be automatic and you shouldn't need to call this class
10
- # directly, but here's an example:
9
+ # Usage should be automatic and you should not need to call this class
10
+ # directly, but here is an example:
11
11
  #
12
12
  # action_log = Decidim::ActionLog.last
13
13
  # view_helpers # => this comes from the views
@@ -6,8 +6,8 @@ module Decidim
6
6
  # This class holds the logic to present a `Decidim::ParticipatoryProcess`
7
7
  # for the `AdminLog` log.
8
8
  #
9
- # Usage should be automatic and you shouldn't need to call this class
10
- # directly, but here's an example:
9
+ # Usage should be automatic and you should not need to call this class
10
+ # directly, but here is an example:
11
11
  #
12
12
  # action_log = Decidim::ActionLog.last
13
13
  # view_helpers # => this comes from the views
@@ -7,8 +7,8 @@ module Decidim
7
7
  # `Decidim::ParticipatoryProcessType`
8
8
  # for the `AdminLog` log.
9
9
  #
10
- # Usage should be automatic and you shouldn't need to call this class
11
- # directly, but here's an example:
10
+ # Usage should be automatic and you should not need to call this class
11
+ # directly, but here is an example:
12
12
  #
13
13
  # action_log = Decidim::ActionLog.last
14
14
  # view_helpers # => this comes from the views
@@ -6,8 +6,8 @@ module Decidim
6
6
  # This class holds the logic to present a `Decidim::ParticipatoryProcessUserRole`
7
7
  # for the `AdminLog` log.
8
8
  #
9
- # Usage should be automatic and you shouldn't need to call this class
10
- # directly, but here's an example:
9
+ # Usage should be automatic and you should not need to call this class
10
+ # directly, but here is an example:
11
11
  #
12
12
  # action_log = Decidim::ActionLog.last
13
13
  # view_helpers # => this comes from the views
@@ -6,8 +6,8 @@ module Decidim
6
6
  # This class holds the logic to present a `Decidim::Step`
7
7
  # for the `AdminLog` log.
8
8
  #
9
- # Usage should be automatic and you shouldn't need to call this class
10
- # directly, but here's an example:
9
+ # Usage should be automatic and you should not need to call this class
10
+ # directly, but here is an example:
11
11
  #
12
12
  # action_log = Decidim::ActionLog.last
13
13
  # view_helpers # => this comes from the views
@@ -2,54 +2,18 @@
2
2
 
3
3
  module Decidim
4
4
  module ParticipatoryProcesses
5
- # A presenter to render statistics in the homepage.
5
+ # A presenter to render statistics in a Participatory Process Group
6
6
  class ParticipatoryProcessGroupStatsPresenter < Decidim::StatsPresenter
7
7
  include Decidim::IconHelper
8
8
 
9
- def participatory_process_group
10
- __getobj__.fetch(:participatory_process_group)
11
- end
12
-
13
- # Public: returns a collection of stats (Hash) for the participatory
14
- # process group landing page.
15
- def collection
16
- highlighted_stats = process_participants_stats
17
- highlighted_stats.concat(process_followers_stats(priority: StatsRegistry::HIGH_PRIORITY))
18
- highlighted_stats.concat(component_stats(priority: StatsRegistry::HIGH_PRIORITY))
19
- highlighted_stats.concat(component_stats(priority: StatsRegistry::MEDIUM_PRIORITY))
20
- highlighted_stats.concat(comments_stats(:participatory_processes))
21
- highlighted_stats = highlighted_stats.reject(&:empty?)
22
- highlighted_stats = highlighted_stats.reject { |_stat_manifest, _stat_title, stat_number| stat_number.zero? }
23
- grouped_highlighted_stats = highlighted_stats.group_by(&:first)
24
-
25
- statistics(grouped_highlighted_stats)
26
- end
27
-
28
9
  private
29
10
 
30
- def process_participants_stats
31
- Decidim.stats.only([:participants_count]).with_context(participatory_process_group)
32
- .map { |stat_title, stat_number| [:participatory_process_group, stat_title, stat_number] }
33
- end
34
-
35
- def component_stats(conditions)
36
- Decidim.component_manifests.map do |component_manifest|
37
- component_manifest.stats.except([:proposals_accepted])
38
- .filter(conditions)
39
- .with_context(published_components)
40
- .map { |stat_title, stat_number| [component_manifest.name, stat_title, stat_number] }.flatten
41
- end
42
- end
11
+ def participatory_space = __getobj__.fetch(:participatory_process_group)
43
12
 
44
- def process_followers_stats(conditions)
45
- Decidim.stats.only([:followers_count])
46
- .filter(conditions)
47
- .with_context(participatory_process_group)
48
- .map { |stat_title, stat_number| [:participatory_process_group, stat_title, stat_number] }
49
- end
13
+ def participatory_space_sym = :participatory_process_group
50
14
 
51
15
  def participatory_processes
52
- @participatory_processes ||= participatory_process_group.participatory_processes
16
+ @participatory_processes ||= participatory_space.participatory_processes
53
17
  end
54
18
 
55
19
  def published_components
@@ -16,74 +16,6 @@ module Decidim
16
16
  concat(hidden_field_tag(:metrics_space_id, participatory_process.id, id: :"metrics-space_id"))
17
17
  end
18
18
  end
19
-
20
- def highlighted
21
- render_highlighted(Decidim.metrics_registry.filtered(highlight: true, scope: "participatory_process"))
22
- end
23
-
24
- def not_highlighted
25
- render_not_highlighted(Decidim.metrics_registry.filtered(highlight: false, scope: "participatory_process"))
26
- end
27
-
28
- def big_stats
29
- safe_join(
30
- Decidim.metrics_registry.filtered(scope: "participatory_process", block: "big", sort: true).map do |metric_manifest|
31
- content_tag :div, class: "row" do
32
- render_metrics_descriptive(metric_manifest.metric_name,
33
- klass: "column",
34
- graph_klass: "small",
35
- title: I18n.t("decidim.metrics.#{metric_manifest.metric_name}.title"),
36
- description: I18n.t("decidim.metrics.#{metric_manifest.metric_name}.description"),
37
- download: true,
38
- data: { ratio: "11:4", axis: true })
39
- end
40
- end
41
- )
42
- end
43
-
44
- def medium_stats
45
- safe_join(
46
- Decidim.metrics_registry.filtered(scope: "participatory_process", block: "medium", sort: true).in_groups_of(2).map do |metrics_group|
47
- content_tag :div, class: "row" do
48
- safe_join(
49
- metrics_group.map do |metric_manifest|
50
- next "" if metric_manifest.blank?
51
-
52
- render_metrics_descriptive(metric_manifest.metric_name,
53
- klass: "column medium-6",
54
- graph_klass: "small",
55
- title: I18n.t("decidim.metrics.#{metric_manifest.metric_name}.title"),
56
- description: I18n.t("decidim.metrics.#{metric_manifest.metric_name}.description"),
57
- download: true,
58
- data: { ratio: "16:9", axis: true })
59
- end
60
- )
61
- end
62
- end
63
- )
64
- end
65
-
66
- def small_stats
67
- safe_join(
68
- Decidim.metrics_registry.filtered(scope: "participatory_process", block: "small", sort: true).in_groups_of(3).map do |metrics_group|
69
- content_tag :div, class: "row" do
70
- safe_join(
71
- metrics_group.map do |metric_manifest|
72
- next "" if metric_manifest.blank?
73
-
74
- render_metrics_data(metric_manifest.metric_name,
75
- klass: "column medium-4",
76
- ratio: "16:9",
77
- margin: "margin-top: 30px",
78
- graph_klass: "small",
79
- download: true,
80
- data: { ratio: "16:9" })
81
- end
82
- )
83
- end
84
- end
85
- )
86
- end
87
19
  end
88
20
  end
89
21
  end
@@ -11,6 +11,12 @@ module Decidim
11
11
  process.attached_uploader(:banner_image).url(host: process.organization.host)
12
12
  end
13
13
 
14
+ def area_name
15
+ return if process.area.blank?
16
+
17
+ Decidim::AreaPresenter.new(process.area).translated_name_with_type
18
+ end
19
+
14
20
  def process
15
21
  __getobj__
16
22
  end
@@ -2,54 +2,15 @@
2
2
 
3
3
  module Decidim
4
4
  module ParticipatoryProcesses
5
- # A presenter to render statistics in the homepage.
5
+ # A presenter to render statistics in a Participatory Process.
6
6
  class ParticipatoryProcessStatsPresenter < Decidim::StatsPresenter
7
7
  include Decidim::IconHelper
8
8
 
9
- def participatory_process
10
- __getobj__.fetch(:participatory_process)
11
- end
12
-
13
- # Public: returns a collection of stats (Hash) for the Process Home.
14
- def collection
15
- highlighted_stats = process_participants_stats
16
- highlighted_stats.concat(process_followers_stats(priority: StatsRegistry::HIGH_PRIORITY))
17
- highlighted_stats.concat(component_stats(priority: StatsRegistry::HIGH_PRIORITY))
18
- highlighted_stats.concat(component_stats(priority: StatsRegistry::MEDIUM_PRIORITY))
19
- highlighted_stats.concat(comments_stats(:participatory_processes))
20
- highlighted_stats = highlighted_stats.reject(&:empty?)
21
- highlighted_stats = highlighted_stats.reject { |_stat_manifest, _stat_title, stat_number| stat_number.zero? }
22
- grouped_highlighted_stats = highlighted_stats.group_by(&:first)
23
-
24
- statistics(grouped_highlighted_stats)
25
- end
26
-
27
9
  private
28
10
 
29
- def process_participants_stats
30
- Decidim.stats.only([:participants_count]).with_context(participatory_process)
31
- .map { |stat_title, stat_number| [participatory_process.manifest.name, stat_title, stat_number] }
32
- end
33
-
34
- def component_stats(conditions)
35
- Decidim.component_manifests.map do |component_manifest|
36
- component_manifest.stats.except([:proposals_accepted])
37
- .filter(conditions)
38
- .with_context(published_components)
39
- .map { |stat_title, stat_number| [component_manifest.name, stat_title, stat_number] }.flatten
40
- end
41
- end
42
-
43
- def process_followers_stats(conditions)
44
- Decidim.stats.only([:followers_count])
45
- .filter(conditions)
46
- .with_context(participatory_process)
47
- .map { |stat_title, stat_number| [participatory_process.manifest.name, stat_title, stat_number] }
48
- end
11
+ def participatory_space = __getobj__.fetch(:participatory_process)
49
12
 
50
- def published_components
51
- @published_components ||= Component.where(participatory_space: participatory_process).published
52
- end
13
+ def participatory_space_sym = :participatory_processes
53
14
  end
54
15
  end
55
16
  end
@@ -51,7 +51,7 @@ module Decidim
51
51
  if process
52
52
  [process]
53
53
  else
54
- Decidim::ParticipatoryProcess.where(organization: organization)
54
+ Decidim::ParticipatoryProcess.where(organization:)
55
55
  end
56
56
  end
57
57
  end
@@ -53,7 +53,7 @@ module Decidim
53
53
  if process
54
54
  [process]
55
55
  else
56
- Decidim::ParticipatoryProcess.where(organization: organization)
56
+ Decidim::ParticipatoryProcess.where(organization:)
57
57
  end
58
58
  end
59
59
  end
@@ -24,8 +24,8 @@ module Decidim
24
24
  Decidim.traceability.perform_action!(:create, ParticipatoryProcess, @user, visibility: "all") do
25
25
  @imported_process = ParticipatoryProcess.new(
26
26
  organization: @organization,
27
- title: title,
28
- slug: slug,
27
+ title:,
28
+ slug:,
29
29
  subtitle: attributes["subtitle"],
30
30
  hashtag: attributes["hashtag"],
31
31
  description: attributes["description"],
@@ -174,8 +174,8 @@ module Decidim
174
174
  private
175
175
 
176
176
  def compact_translation(translation)
177
- translation["machine_translations"] = translation["machine_translations"].reject { |_k, v| v.blank? } if translation["machine_translations"].present?
178
- translation.reject { |_k, v| v.blank? }
177
+ translation["machine_translations"] = translation["machine_translations"].compact_blank if translation["machine_translations"].present?
178
+ translation.compact_blank
179
179
  end
180
180
 
181
181
  def create_attachment_collection(attributes)
@@ -1,35 +1,30 @@
1
- <div class="card" id="processes">
2
- <div class="card-divider">
3
- <h2 class="card-title"><%= title %></h2>
4
- </div>
5
-
6
- <div class="card-section">
7
- <div class="row column">
8
- <div class="row">
9
- <div class="column xlarge-8">
10
- <%= form.translated :text_field, :title, autofocus: true %>
11
- </div>
12
- <div class="column xlarge-4 slug">
13
- <%= form.text_field :slug %>
14
- <p class="help-text"><%== t(".slug_help", url: decidim_form_slug_url(:processes, form.object.slug)) %></p>
15
- </div>
1
+ <div class="form__wrapper">
2
+ <div class="card pt-4" id="processes">
3
+ <div class="card-section">
4
+ <div class="row column">
5
+ <%= form.translated :text_field, :title, autofocus: true, aria: { label: :title } %>
16
6
  </div>
17
- <div class="card">
18
- <div class="card-divider">
19
- <legend><%= select %></legend>
20
- </div>
21
- <div class="card-section">
22
- <div class="row">
23
- <div class="columns xlarge-3">
24
- <%= form.check_box :copy_steps %>
25
- </div>
7
+ <div class="row column">
8
+ <%= form.text_field :slug, help_text: t(".slug_help_html", url: decidim_form_slug_url(:processes, form.object.slug)) %>
9
+ </div>
10
+ <div class="row column">
11
+ <div class="card">
12
+ <div class="card-divider">
13
+ <legend><%= t("participatory_process_copies.new.select", scope: "decidim.admin") %></legend>
14
+ </div>
15
+ <div class="card-section">
16
+ <div class="row">
17
+ <div class="columns">
18
+ <%= form.check_box :copy_steps %>
19
+ </div>
26
20
 
27
- <div class="columns xlarge-3">
28
- <%= form.check_box :copy_categories %>
29
- </div>
21
+ <div class="columns">
22
+ <%= form.check_box :copy_categories %>
23
+ </div>
30
24
 
31
- <div class="columns xlarge-6">
32
- <%= form.check_box :copy_components %>
25
+ <div class="columns">
26
+ <%= form.check_box :copy_components %>
27
+ </div>
33
28
  </div>
34
29
  </div>
35
30
  </div>
@@ -1,8 +1,19 @@
1
1
  <% add_decidim_page_title(t("participatory_process_copies.new.title", scope: "decidim.admin")) %>
2
- <%= decidim_form_for(@form, url: participatory_process_copies_path(current_participatory_process), method: :post, html: { class: "form copy_participatory_process" }) do |f| %>
3
- <%= render partial: "form", object: f, locals: { title: t("participatory_process_copies.new.title", scope: "decidim.admin"), select: t("participatory_process_copies.new.select", scope: "decidim.admin") } %>
2
+ <div class="item_show__header">
3
+ <h2 class="item_show__header-title">
4
+ <%= t("participatory_process_copies.new.title", scope: "decidim.admin") %>
5
+ </h2>
6
+ </div>
4
7
 
5
- <div class="button--double form-general-submit">
6
- <%= f.submit t("participatory_process_copies.new.copy", scope: "decidim.admin") %>
8
+ <div class="item__edit item__edit-1col">
9
+ <div class="item__edit-form">
10
+ <%= decidim_form_for(@form, url: participatory_process_copies_path(current_participatory_process), method: :post, html: { class: "form form-defaults copy_participatory_process" }) do |f| %>
11
+ <%= render partial: "form", object: f %>
12
+ <div class="item__edit-sticky">
13
+ <div class="item__edit-sticky-container">
14
+ <%= f.submit t("participatory_process_copies.new.copy", scope: "decidim.admin"), class: "button button__sm button__secondary" %>
15
+ </div>
16
+ </div>
17
+ <% end %>
7
18
  </div>
8
- <% end %>
19
+ </div>
@@ -1,72 +1,94 @@
1
- <div class="card">
2
- <div class="card-divider">
3
- <h2 class="card-title"><%= t(".title") %></h2>
4
- </div>
5
- <div class="card-section">
6
- <div class="row column">
7
- <%= form.translated :text_field, :title, autofocus: true %>
1
+ <div class="form__wrapper">
2
+ <div class="card" data-component="accordion" id="accordion-title">
3
+ <div class="card-divider">
4
+ <button class="card-divider-button" data-open="true" data-controls="panel-title" type="button">
5
+ <%= icon "arrow-right-s-line" %>
6
+ <h2 class="card-title" id="title">
7
+ <%= t("title", scope: "decidim.participatory_processes.admin.participatory_process_groups.form") %>
8
+ </h2>
9
+ </button>
8
10
  </div>
11
+ <div id="panel-title" class="card-section">
12
+ <div class="row column">
13
+ <%= form.translated :text_field, :title, autofocus: true, aria: { label: :title } %>
14
+ </div>
9
15
 
10
- <div class="row column">
11
- <%= form.translated :editor, :description %>
12
- </div>
16
+ <div class="row column">
17
+ <%= form.translated :editor, :description, aria: { label: :description } %>
18
+ </div>
13
19
 
14
- <div class="row column">
15
- <% if processes_for_select %>
16
- <%= form.select :participatory_process_ids, processes_for_select, {}, { multiple: true, class: "chosen-select" } %>
17
- <% end %>
18
- </div>
20
+ <div class="row column">
21
+ <% if processes_for_select %>
22
+ <%= form.select :participatory_process_ids, processes_for_select, {}, { multiple: true, class: "chosen-select" } %>
23
+ <% end %>
24
+ </div>
19
25
 
20
- <div class="row column">
21
- <%= form.upload :hero_image %>
26
+ <div class="row column">
27
+ <%= form.upload :hero_image, button_class: "button button__sm button__transparent-secondary" %>
28
+ </div>
22
29
  </div>
23
30
  </div>
24
31
 
25
- <div class="card-divider">
26
- <h2 class="card-title"><%= t(".metadata") %></h2>
27
- </div>
28
-
29
- <div class="card-section">
30
- <div class="row column">
31
- <%= form.text_field :hashtag %>
32
+ <div class="card" data-component="accordion" id="accordion-metadata">
33
+ <div class="card-divider">
34
+ <button class="card-divider-button" data-open="true" data-controls="panel-metadata" type="button">
35
+ <%= icon "arrow-right-s-line" %>
36
+ <h2 class="card-title" id="metadata">
37
+ <%= t("metadata", scope: "decidim.participatory_processes.admin.participatory_process_groups.form") %>
38
+ </h2>
39
+ </button>
32
40
  </div>
33
41
 
34
- <div class="row column">
35
- <%= form.text_field :group_url %>
36
- </div>
42
+ <div id="panel-metadata" class="card-section">
43
+ <div class="row column">
44
+ <%= form.text_field :hashtag %>
45
+ </div>
37
46
 
38
- <div class="row column">
39
- <%= form.translated :text_field, :developer_group %>
40
- </div>
47
+ <div class="row column">
48
+ <%= form.text_field :group_url %>
49
+ </div>
41
50
 
42
- <div class="row column">
43
- <%= form.translated :text_field, :local_area %>
44
- </div>
51
+ <div class="row column">
52
+ <%= form.translated :text_field, :developer_group, aria: { label: :developer_group } %>
53
+ </div>
45
54
 
46
- <div class="row column">
47
- <%= form.translated :text_field, :meta_scope %>
48
- </div>
55
+ <div class="row column">
56
+ <%= form.translated :text_field, :local_area, aria: { label: :local_area } %>
57
+ </div>
49
58
 
50
- <div class="row column">
51
- <%= form.translated :text_field, :target %>
52
- </div>
59
+ <div class="row column">
60
+ <%= form.translated :text_field, :meta_scope, aria: { label: :meta_scope } %>
61
+ </div>
53
62
 
54
- <div class="row column">
55
- <%= form.translated :text_field, :participatory_scope %>
56
- </div>
63
+ <div class="row column">
64
+ <%= form.translated :text_field, :target, aria: { label: :target } %>
65
+ </div>
66
+
67
+ <div class="row column">
68
+ <%= form.translated :text_field, :participatory_scope, aria: { label: :participatory_scope } %>
69
+ </div>
57
70
 
58
- <div class="row column">
59
- <%= form.translated :text_field, :participatory_structure %>
71
+ <div class="row column">
72
+ <%= form.translated :text_field, :participatory_structure, aria: { label: :participatory_structure } %>
73
+ </div>
60
74
  </div>
61
75
  </div>
62
76
 
63
- <div class="card-divider">
64
- <h2 class="card-title"><%= t(".visibility") %></h2>
65
- </div>
77
+ <div class="card" data-component="accordion" id="accordion-visibility">
78
+ <div class="card-divider">
79
+ <button class="card-divider-button" data-open="true" data-controls="panel-visibility" type="button">
80
+ <%= icon "arrow-right-s-line" %>
81
+ <h2 class="card-title" id="visibility">
82
+ <%= t("visibility", scope: "decidim.participatory_processes.admin.participatory_process_groups.form") %>
83
+ </h2>
84
+ </button>
85
+ </div>
66
86
 
67
- <div class="card-section">
68
- <div class="row column">
69
- <%= form.check_box :promoted %>
87
+ <div id="panel-visibility" class="card-section">
88
+ <div class="row column">
89
+ <%= form.check_box :promoted %>
90
+ </div>
70
91
  </div>
71
92
  </div>
93
+
72
94
  </div>
@@ -1,13 +1,19 @@
1
1
  <% add_decidim_page_title t("participatory_process_groups.edit.title", scope: "decidim.admin") %>
2
- <%= decidim_form_for(@form, html: { class: "form edit_participatory_process_group" }) do |f| %>
3
- <h2 class="process-title-summary">
2
+ <div class="item_show__header">
3
+ <h2 class="item_show__header-title">
4
4
  <%= t "participatory_process_groups.edit.title", scope: "decidim.admin" %>
5
- <% if allowed_to? :destroy, :process_group, process_group: participatory_process_group %>
6
- <%= link_to t("decidim.admin.actions.destroy"), participatory_process_group, method: :delete, class: "button alert tiny button--title destroy", data: { confirm: t("decidim.admin.actions.confirm_destroy") } %>
7
- <% end %>
8
5
  </h2>
9
- <%= render partial: "form", object: f %>
10
- <div class="button--double form-general-submit">
11
- <%= f.submit t("participatory_process_groups.edit.update", scope: "decidim.admin") %>
6
+ </div>
7
+
8
+ <div class="item__edit item__edit-1col">
9
+ <div class="item__edit-form">
10
+ <%= decidim_form_for(@form, html: { class: "form-defaults form edit_participatory_process_group" }) do |f| %>
11
+ <%= render partial: "form", object: f %>
12
+ <div class="item__edit-sticky">
13
+ <div class="item__edit-sticky-container">
14
+ <%= f.submit t("participatory_process_groups.edit.update", scope: "decidim.admin"), class: "button button__sm button__secondary" %>
15
+ </div>
16
+ </div>
17
+ <% end %>
12
18
  </div>
13
- <% end %>
19
+ </div>