decidim-elections 0.27.7 → 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 (459) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +60 -3
  3. data/app/cells/decidim/elections/content_blocks/related_elections_cell.rb +13 -0
  4. data/app/cells/decidim/elections/election_cell.rb +7 -2
  5. data/app/cells/decidim/elections/election_g_cell.rb +23 -0
  6. data/app/cells/decidim/elections/election_metadata_cell.rb +57 -0
  7. data/app/cells/decidim/elections/election_preview/show.erb +24 -24
  8. data/app/cells/decidim/elections/election_results/progress_bar.erb +6 -7
  9. data/app/cells/decidim/elections/election_results/show.erb +36 -33
  10. data/app/cells/decidim/elections/election_s_cell.rb +10 -0
  11. data/app/cells/decidim/elections/election_vote_cta/show.erb +14 -26
  12. data/app/cells/decidim/elections/election_vote_cta_cell.rb +0 -9
  13. data/app/cells/decidim/elections/highlighted_elections_for_component/show.erb +18 -0
  14. data/app/cells/decidim/elections/highlighted_elections_for_component_cell.rb +50 -0
  15. data/app/cells/decidim/elections/remaining_time_callout/show.erb +1 -3
  16. data/app/cells/decidim/elections/voting_step_navigation/show.erb +21 -25
  17. data/app/cells/decidim/elections/voting_step_navigation_cell.rb +2 -2
  18. data/app/cells/decidim/votings/content_block_cell.rb +5 -1
  19. data/app/cells/decidim/votings/content_blocks/hero_cell.rb +53 -0
  20. data/app/cells/decidim/votings/content_blocks/hero_settings_form_cell.rb +15 -0
  21. data/app/cells/decidim/votings/content_blocks/highlighted_votings_cell.rb +12 -21
  22. data/app/cells/decidim/votings/content_blocks/highlighted_votings_settings_form/show.erb +1 -1
  23. data/app/cells/decidim/votings/content_blocks/main_data_cell.rb +34 -0
  24. data/app/cells/decidim/votings/content_blocks/metrics_cell.rb +17 -0
  25. data/app/cells/decidim/votings/content_blocks/polling_stations/show.erb +21 -0
  26. data/app/cells/decidim/votings/content_blocks/polling_stations_cell.rb +31 -0
  27. data/app/cells/decidim/votings/content_blocks/statistics_cell.rb +18 -0
  28. data/app/cells/decidim/votings/polling_officers/polling_officers_picker/show.erb +14 -13
  29. data/app/cells/decidim/votings/polling_officers/polling_officers_picker_cell.rb +19 -16
  30. data/app/cells/decidim/votings/polling_station_closure_certificate/show.erb +5 -7
  31. data/app/cells/decidim/votings/polling_station_closure_recount/show.erb +55 -59
  32. data/app/cells/decidim/votings/voting_cell.rb +7 -2
  33. data/app/cells/decidim/votings/voting_dropdown_metadata_cell.rb +19 -0
  34. data/app/cells/decidim/votings/voting_g_cell.rb +19 -0
  35. data/app/cells/decidim/votings/voting_map/show.erb +16 -0
  36. data/app/cells/decidim/votings/voting_map_cell.rb +28 -0
  37. data/app/cells/decidim/votings/voting_metadata_cell.rb +66 -0
  38. data/app/cells/decidim/votings/voting_s_cell.rb +10 -0
  39. data/app/commands/decidim/elections/admin/add_user_as_trustee.rb +5 -5
  40. data/app/commands/decidim/elections/admin/create_answer.rb +0 -1
  41. data/app/commands/decidim/elections/admin/create_election.rb +0 -1
  42. data/app/commands/decidim/elections/admin/destroy_answer.rb +0 -1
  43. data/app/commands/decidim/elections/admin/destroy_election.rb +0 -1
  44. data/app/commands/decidim/elections/admin/end_vote.rb +2 -2
  45. data/app/commands/decidim/elections/admin/import_proposals_to_elections.rb +1 -1
  46. data/app/commands/decidim/elections/admin/publish_election.rb +1 -1
  47. data/app/commands/decidim/elections/admin/publish_results.rb +2 -2
  48. data/app/commands/decidim/elections/admin/report_missing_trustee.rb +2 -2
  49. data/app/commands/decidim/elections/admin/setup_election.rb +2 -2
  50. data/app/commands/decidim/elections/admin/start_key_ceremony.rb +2 -2
  51. data/app/commands/decidim/elections/admin/start_tally.rb +2 -2
  52. data/app/commands/decidim/elections/admin/start_vote.rb +2 -2
  53. data/app/commands/decidim/elections/admin/unpublish_election.rb +1 -1
  54. data/app/commands/decidim/elections/admin/update_answer.rb +0 -1
  55. data/app/commands/decidim/elections/admin/update_answer_selection.rb +1 -1
  56. data/app/commands/decidim/elections/admin/update_election.rb +0 -1
  57. data/app/commands/decidim/elections/trustee_zone/update_election_bulletin_board_status.rb +3 -3
  58. data/app/commands/decidim/elections/voter/cast_vote.rb +1 -1
  59. data/app/commands/decidim/elections/voter/update_vote_status.rb +2 -2
  60. data/app/commands/decidim/votings/admin/create_ballot_style.rb +1 -1
  61. data/app/commands/decidim/votings/admin/create_monitoring_committee_member.rb +4 -4
  62. data/app/commands/decidim/votings/admin/create_polling_officer.rb +4 -4
  63. data/app/commands/decidim/votings/admin/create_polling_station.rb +1 -1
  64. data/app/commands/decidim/votings/admin/create_voting.rb +1 -1
  65. data/app/commands/decidim/votings/admin/destroy_ballot_style.rb +1 -1
  66. data/app/commands/decidim/votings/admin/destroy_monitoring_committee_member.rb +1 -1
  67. data/app/commands/decidim/votings/admin/destroy_polling_officer.rb +1 -1
  68. data/app/commands/decidim/votings/admin/manage_polling_station.rb +1 -1
  69. data/app/commands/decidim/votings/admin/monitoring_committee_validate_polling_station_closure.rb +1 -1
  70. data/app/commands/decidim/votings/admin/update_ballot_style.rb +1 -1
  71. data/app/commands/decidim/votings/admin/update_voting.rb +1 -1
  72. data/app/commands/decidim/votings/census/admin/create_dataset.rb +2 -2
  73. data/app/commands/decidim/votings/census/admin/create_datum.rb +3 -3
  74. data/app/commands/decidim/votings/census/admin/destroy_dataset.rb +1 -1
  75. data/app/commands/decidim/votings/census/admin/increment_dataset_processed_rows.rb +1 -1
  76. data/app/commands/decidim/votings/census/admin/launch_access_codes_generation.rb +1 -1
  77. data/app/commands/decidim/votings/census/admin/update_dataset.rb +1 -1
  78. data/app/commands/decidim/votings/certify_polling_station_closure.rb +1 -2
  79. data/app/commands/decidim/votings/create_polling_station_closure.rb +1 -1
  80. data/app/commands/decidim/votings/create_polling_station_results.rb +1 -1
  81. data/app/commands/decidim/votings/send_access_code.rb +5 -1
  82. data/app/commands/decidim/votings/sign_polling_station_closure.rb +2 -2
  83. data/app/commands/decidim/votings/voter/in_person_vote.rb +1 -1
  84. data/app/constraints/decidim/votings/current_voting.rb +1 -1
  85. data/app/controllers/concerns/decidim/elections/content_security_policy.rb +23 -0
  86. data/app/controllers/concerns/decidim/elections/has_vote_flow.rb +2 -2
  87. data/app/controllers/concerns/decidim/votings/admin/voting_admin.rb +1 -1
  88. data/app/controllers/concerns/decidim/votings/needs_voting.rb +1 -1
  89. data/app/controllers/decidim/elections/admin/answers_controller.rb +9 -10
  90. data/app/controllers/decidim/elections/admin/application_controller.rb +1 -0
  91. data/app/controllers/decidim/elections/admin/elections_controller.rb +7 -7
  92. data/app/controllers/decidim/elections/admin/feedback_forms_controller.rb +2 -2
  93. data/app/controllers/decidim/elections/admin/proposals_imports_controller.rb +3 -3
  94. data/app/controllers/decidim/elections/admin/questions_controller.rb +7 -7
  95. data/app/controllers/decidim/elections/admin/steps_controller.rb +4 -4
  96. data/app/controllers/decidim/elections/admin/trustees_participatory_spaces_controller.rb +2 -2
  97. data/app/controllers/decidim/elections/application_controller.rb +1 -0
  98. data/app/controllers/decidim/elections/elections_controller.rb +5 -2
  99. data/app/controllers/decidim/elections/trustee_zone/application_controller.rb +1 -0
  100. data/app/controllers/decidim/elections/trustee_zone/elections_controller.rb +2 -2
  101. data/app/controllers/decidim/elections/trustee_zone/trustees_controller.rb +3 -3
  102. data/app/controllers/decidim/elections/votes_controller.rb +19 -13
  103. data/app/controllers/decidim/votings/admin/monitoring_committee_election_results_controller.rb +11 -3
  104. data/app/controllers/decidim/votings/admin/monitoring_committee_members_controller.rb +3 -3
  105. data/app/controllers/decidim/votings/admin/monitoring_committee_polling_station_closures_controller.rb +3 -3
  106. data/app/controllers/decidim/votings/admin/polling_officers_controller.rb +3 -3
  107. data/app/controllers/decidim/votings/admin/polling_stations_controller.rb +3 -4
  108. data/app/controllers/decidim/votings/admin/voting_attachment_collections_controller.rb +5 -0
  109. data/app/controllers/decidim/votings/admin/voting_attachments_controller.rb +5 -0
  110. data/app/controllers/decidim/votings/admin/voting_publications_controller.rb +25 -0
  111. data/app/controllers/decidim/votings/admin/votings_controller.rb +2 -26
  112. data/app/controllers/decidim/votings/admin/votings_landing_page_content_blocks_controller.rb +1 -5
  113. data/app/controllers/decidim/votings/admin/votings_landing_page_controller.rb +4 -7
  114. data/app/controllers/decidim/votings/census/admin/census_controller.rb +2 -2
  115. data/app/controllers/decidim/votings/polling_officer_zone/closures_controller.rb +12 -12
  116. data/app/controllers/decidim/votings/polling_officer_zone/in_person_votes_controller.rb +17 -10
  117. data/app/controllers/decidim/votings/polling_officer_zone/polling_officers_controller.rb +1 -1
  118. data/app/controllers/decidim/votings/votings_controller.rb +7 -9
  119. data/app/events/decidim/elections/election_published_event.rb +1 -1
  120. data/app/events/decidim/elections/trustees/notify_new_trustee_event.rb +1 -1
  121. data/app/events/decidim/elections/trustees/notify_trustee_new_election_event.rb +1 -1
  122. data/app/events/decidim/elections/votes/vote_accepted_event.rb +1 -1
  123. data/app/events/decidim/votings/polling_officers/polling_station_assigned_event.rb +1 -1
  124. data/app/forms/decidim/elections/admin/answer_form.rb +1 -1
  125. data/app/forms/decidim/elections/admin/election_form.rb +1 -1
  126. data/app/forms/decidim/votings/admin/publish_results_form.rb +5 -5
  127. data/app/forms/decidim/votings/admin/voting_form.rb +1 -1
  128. data/app/forms/decidim/votings/admin/{polling_officer_form.rb → voting_user_role_form.rb} +1 -1
  129. data/app/forms/decidim/votings/census/frontend_fields.rb +1 -1
  130. data/app/forms/decidim/votings/census/in_person_fields.rb +8 -4
  131. data/app/forms/decidim/votings/closure_result_form.rb +2 -2
  132. data/app/helpers/decidim/elections/admin/trustees_participatory_spaces_helper.rb +4 -2
  133. data/app/helpers/decidim/elections/application_helper.rb +8 -0
  134. data/app/helpers/decidim/votings/map_helper.rb +22 -0
  135. data/app/helpers/decidim/votings/votings_helper.rb +33 -0
  136. data/app/jobs/decidim/votings/census/admin/create_datum_job.rb +1 -1
  137. data/app/jobs/decidim/votings/census/admin/generate_access_codes_job.rb +2 -2
  138. data/app/mailers/decidim/votings/access_code_mailer.rb +1 -1
  139. data/app/mailers/decidim/votings/census/export_mailer.rb +1 -1
  140. data/app/models/decidim/elections/trustee.rb +2 -2
  141. data/app/models/decidim/votings/ballot_style.rb +1 -1
  142. data/app/models/decidim/votings/polling_officer.rb +2 -2
  143. data/app/models/decidim/votings/polling_station.rb +1 -1
  144. data/app/packs/entrypoints/decidim_elections.js +12 -0
  145. data/app/packs/entrypoints/decidim_elections_admin.js +6 -0
  146. data/app/packs/entrypoints/decidim_votings.js +11 -0
  147. data/app/packs/entrypoints/decidim_votings_admin.js +10 -0
  148. data/app/packs/src/decidim/elections/admin/pending_action.js +10 -7
  149. data/app/packs/src/decidim/elections/admin/trustees_process.js +107 -104
  150. data/app/packs/src/decidim/elections/admin/vote_statistics.js +6 -3
  151. data/app/packs/src/decidim/elections/broken_promises_handler.js +9 -7
  152. data/app/packs/src/decidim/elections/election_log.js +126 -128
  153. data/app/packs/src/decidim/elections/trustee/key_ceremony.js +138 -139
  154. data/app/packs/src/decidim/elections/trustee/tally.js +122 -118
  155. data/app/packs/src/decidim/elections/trustee/trustee_zone.js +9 -7
  156. data/app/packs/src/decidim/elections/voter/casting-vote.js +9 -7
  157. data/app/packs/src/decidim/elections/voter/new-vote.js +92 -71
  158. data/app/packs/src/decidim/elections/voter/setup-preview.js +0 -4
  159. data/app/packs/src/decidim/elections/voter/setup-vote.js +0 -4
  160. data/app/packs/src/decidim/elections/voter/verify-vote.js +11 -6
  161. data/app/packs/src/decidim/elections/voter/vote_questions.component.js +74 -28
  162. data/app/packs/src/decidim/votings/admin/polling_officers_picker.js +16 -31
  163. data/app/packs/src/decidim/votings/admin/polling_stations_form.js +4 -1
  164. data/app/packs/src/decidim/votings/admin/{polling_officers_form.js → voting_user_role_form.js} +1 -1
  165. data/app/packs/src/decidim/votings/in-person-vote.js +4 -4
  166. data/app/packs/src/decidim/votings/polling_officer_zone/edit-closure.js +4 -4
  167. data/app/packs/src/decidim/votings/polling_officer_zone/in-person-vote.js +1 -1
  168. data/app/packs/src/decidim/votings/polling_officer_zone/new-closure.js +6 -8
  169. data/app/packs/stylesheets/decidim/elections/elections.scss +200 -6
  170. data/app/packs/stylesheets/decidim/votings/admin/votings/_ballot-styles.scss +3 -3
  171. data/app/packs/stylesheets/decidim/votings/admin/votings/_monitoring-committee-polling-station-closures.scss +2 -2
  172. data/app/packs/stylesheets/decidim/votings/admin/votings/_results.scss +1 -1
  173. data/app/packs/stylesheets/decidim/votings/admin/votings.scss +20 -0
  174. data/app/packs/stylesheets/decidim/votings/votings.scss +53 -2
  175. data/app/permissions/decidim/votings/admin/permissions.rb +2 -2
  176. data/app/presenters/decidim/elections/admin_log/election_presenter.rb +2 -2
  177. data/app/presenters/decidim/elections/admin_log/trustee_presenter.rb +2 -2
  178. data/app/presenters/decidim/elections/trustee_presenter.rb +1 -1
  179. data/app/presenters/decidim/votings/admin_log/ballot_style_presenter.rb +2 -2
  180. data/app/presenters/decidim/votings/admin_log/monitoring_committee_member_presenter.rb +2 -2
  181. data/app/presenters/decidim/votings/admin_log/polling_officer_presenter.rb +2 -2
  182. data/app/presenters/decidim/votings/admin_log/polling_station_presenter.rb +2 -2
  183. data/app/presenters/decidim/votings/admin_log/voting_presenter.rb +2 -2
  184. data/app/presenters/decidim/votings/census/admin_log/dataset_presenter.rb +2 -2
  185. data/app/presenters/decidim/votings/voting_stats_presenter.rb +3 -42
  186. data/app/services/decidim/votings/census/access_codes_exporter.rb +1 -1
  187. data/app/services/decidim/votings/census_vote_flow.rb +3 -3
  188. data/app/views/decidim/elections/admin/answers/_form.html.erb +16 -18
  189. data/app/views/decidim/elections/admin/answers/edit.html.erb +21 -5
  190. data/app/views/decidim/elections/admin/answers/index.html.erb +33 -18
  191. data/app/views/decidim/elections/admin/answers/new.html.erb +21 -5
  192. data/app/views/decidim/elections/admin/elections/_form.html.erb +20 -19
  193. data/app/views/decidim/elections/admin/elections/edit.html.erb +16 -6
  194. data/app/views/decidim/elections/admin/elections/index.html.erb +72 -70
  195. data/app/views/decidim/elections/admin/elections/new.html.erb +16 -6
  196. data/app/views/decidim/elections/admin/proposals_imports/new.html.erb +36 -21
  197. data/app/views/decidim/elections/admin/questions/_form.html.erb +18 -20
  198. data/app/views/decidim/elections/admin/questions/edit.html.erb +20 -6
  199. data/app/views/decidim/elections/admin/questions/index.html.erb +50 -49
  200. data/app/views/decidim/elections/admin/questions/new.html.erb +20 -5
  201. data/app/views/decidim/elections/admin/steps/_create_election.html.erb +41 -36
  202. data/app/views/decidim/elections/admin/steps/_created.html.erb +2 -2
  203. data/app/views/decidim/elections/admin/steps/_key_ceremony.html.erb +7 -7
  204. data/app/views/decidim/elections/admin/steps/_key_ceremony_ended.html.erb +2 -2
  205. data/app/views/decidim/elections/admin/steps/_results_published.html.erb +4 -4
  206. data/app/views/decidim/elections/admin/steps/_tally_ended.html.erb +4 -4
  207. data/app/views/decidim/elections/admin/steps/_tally_started.html.erb +11 -11
  208. data/app/views/decidim/elections/admin/steps/_vote.html.erb +3 -3
  209. data/app/views/decidim/elections/admin/steps/_vote_ended.html.erb +2 -2
  210. data/app/views/decidim/elections/admin/steps/_vote_stats.html.erb +2 -2
  211. data/app/views/decidim/elections/admin/steps/index.html.erb +44 -37
  212. data/app/views/decidim/elections/admin/trustees_participatory_spaces/_form.html.erb +10 -14
  213. data/app/views/decidim/elections/admin/trustees_participatory_spaces/index.html.erb +57 -60
  214. data/app/views/decidim/elections/admin/trustees_participatory_spaces/new.html.erb +16 -5
  215. data/app/views/decidim/elections/elections/_elections.html.erb +9 -16
  216. data/app/views/decidim/elections/elections/election_log.html.erb +171 -179
  217. data/app/views/decidim/elections/elections/index.html.erb +18 -21
  218. data/app/views/decidim/elections/elections/index.js.erb +0 -5
  219. data/app/views/decidim/elections/elections/show.html.erb +63 -39
  220. data/app/views/decidim/elections/shared/_broken_promises_modal.html.erb +18 -27
  221. data/app/views/decidim/elections/trustee_zone/elections/_backup_modal.html.erb +10 -20
  222. data/app/views/decidim/elections/trustee_zone/elections/_key_ceremony_steps.html.erb +32 -27
  223. data/app/views/decidim/elections/trustee_zone/elections/_restore_modal.html.erb +11 -21
  224. data/app/views/decidim/elections/trustee_zone/elections/_tally_started_steps.html.erb +46 -41
  225. data/app/views/decidim/elections/trustee_zone/elections/show.html.erb +4 -6
  226. data/app/views/decidim/elections/trustee_zone/trustees/_no_public_keys.html.erb +30 -0
  227. data/app/views/decidim/elections/trustee_zone/trustees/_public_keys.html.erb +17 -0
  228. data/app/views/decidim/elections/trustee_zone/trustees/_table.html.erb +28 -0
  229. data/app/views/decidim/elections/trustee_zone/trustees/show.html.erb +21 -96
  230. data/app/views/decidim/elections/votes/_new_ballot_decision_step.html.erb +22 -26
  231. data/app/views/decidim/elections/votes/_new_confirm_step.html.erb +59 -47
  232. data/app/views/decidim/elections/votes/_new_encrypting_step.html.erb +8 -19
  233. data/app/views/decidim/elections/votes/_new_question.html.erb +12 -28
  234. data/app/views/decidim/elections/votes/_new_question_modal.html.erb +20 -23
  235. data/app/views/decidim/elections/votes/_onboarding_modal.html.erb +14 -22
  236. data/app/views/decidim/elections/votes/_show_casted.html.erb +28 -30
  237. data/app/views/decidim/elections/votes/_show_casting.html.erb +12 -19
  238. data/app/views/decidim/elections/votes/_show_failed.html.erb +20 -17
  239. data/app/views/decidim/elections/votes/new.html.erb +78 -61
  240. data/app/views/decidim/elections/votes/show.html.erb +12 -11
  241. data/app/views/decidim/elections/votes/verify.html.erb +40 -61
  242. data/app/views/decidim/votings/admin/ballot_styles/_form.html.erb +19 -19
  243. data/app/views/decidim/votings/admin/ballot_styles/edit.html.erb +16 -6
  244. data/app/views/decidim/votings/admin/ballot_styles/index.html.erb +50 -54
  245. data/app/views/decidim/votings/admin/ballot_styles/new.html.erb +16 -6
  246. data/app/views/decidim/votings/admin/monitoring_committee_election_results/_results.html.erb +43 -46
  247. data/app/views/decidim/votings/admin/monitoring_committee_election_results/index.html.erb +23 -25
  248. data/app/views/decidim/votings/admin/monitoring_committee_election_results/show.html.erb +5 -5
  249. data/app/views/decidim/votings/admin/monitoring_committee_members/_form.html.erb +19 -20
  250. data/app/views/decidim/votings/admin/monitoring_committee_members/index.html.erb +32 -34
  251. data/app/views/decidim/votings/admin/monitoring_committee_members/new.html.erb +17 -6
  252. data/app/views/decidim/votings/admin/monitoring_committee_polling_station_closures/_closure_certificate_results.erb +1 -1
  253. data/app/views/decidim/votings/admin/monitoring_committee_polling_station_closures/_closures.html.erb +53 -56
  254. data/app/views/decidim/votings/admin/monitoring_committee_polling_station_closures/_elections.html.erb +22 -25
  255. data/app/views/decidim/votings/admin/monitoring_committee_polling_station_closures/edit.html.erb +12 -11
  256. data/app/views/decidim/votings/admin/monitoring_committee_polling_station_closures/show.html.erb +1 -1
  257. data/app/views/decidim/votings/admin/monitoring_committee_verify_elections/index.html.erb +37 -39
  258. data/app/views/decidim/votings/admin/polling_officers/_form.html.erb +19 -20
  259. data/app/views/decidim/votings/admin/polling_officers/index.html.erb +40 -41
  260. data/app/views/decidim/votings/admin/polling_officers/new.html.erb +17 -6
  261. data/app/views/decidim/votings/admin/polling_stations/_form.html.erb +25 -31
  262. data/app/views/decidim/votings/admin/polling_stations/edit.html.erb +17 -6
  263. data/app/views/decidim/votings/admin/polling_stations/index.html.erb +46 -47
  264. data/app/views/decidim/votings/admin/polling_stations/new.html.erb +17 -6
  265. data/app/views/decidim/votings/admin/votings/_form.html.erb +49 -52
  266. data/app/views/decidim/votings/admin/votings/edit.html.erb +35 -28
  267. data/app/views/decidim/votings/admin/votings/index.html.erb +58 -82
  268. data/app/views/decidim/votings/admin/votings/new.html.erb +16 -9
  269. data/app/views/decidim/votings/census/admin/census/_creating_data.html.erb +4 -4
  270. data/app/views/decidim/votings/census/admin/census/_export_codes.html.erb +3 -3
  271. data/app/views/decidim/votings/census/admin/census/_generate_codes.html.erb +8 -8
  272. data/app/views/decidim/votings/census/admin/census/_new_census.html.erb +8 -7
  273. data/app/views/decidim/votings/census/admin/census/_upload_info.html.erb +5 -5
  274. data/app/views/decidim/votings/census/admin/census/show.html.erb +7 -7
  275. data/app/views/decidim/votings/polling_officer_zone/closures/_answer_results_form_fields.html.erb +2 -3
  276. data/app/views/decidim/votings/polling_officer_zone/closures/_ballot_results_form_fields.html.erb +24 -35
  277. data/app/views/decidim/votings/polling_officer_zone/closures/_certify_form.html.erb +5 -9
  278. data/app/views/decidim/votings/polling_officer_zone/closures/_modal_ballots_count_error.html.erb +34 -48
  279. data/app/views/decidim/votings/polling_officer_zone/closures/_modal_ballots_results_count_error.html.erb +18 -18
  280. data/app/views/decidim/votings/polling_officer_zone/closures/_question_results_form_fields.html.erb +12 -17
  281. data/app/views/decidim/votings/polling_officer_zone/closures/_sign_form.html.erb +34 -49
  282. data/app/views/decidim/votings/polling_officer_zone/closures/edit.html.erb +50 -37
  283. data/app/views/decidim/votings/polling_officer_zone/closures/new.html.erb +57 -51
  284. data/app/views/decidim/votings/polling_officer_zone/closures/show.html.erb +44 -34
  285. data/app/views/decidim/votings/polling_officer_zone/in_person_votes/_complete_voting.html.erb +40 -57
  286. data/app/views/decidim/votings/polling_officer_zone/in_person_votes/_in_person_form.html.erb +34 -47
  287. data/app/views/decidim/votings/polling_officer_zone/in_person_votes/_verify_document.html.erb +19 -22
  288. data/app/views/decidim/votings/polling_officer_zone/in_person_votes/new.html.erb +12 -12
  289. data/app/views/decidim/votings/polling_officer_zone/in_person_votes/show.html.erb +22 -21
  290. data/app/views/decidim/votings/polling_officer_zone/polling_officers/_polling_station.html.erb +34 -41
  291. data/app/views/decidim/votings/polling_officer_zone/polling_officers/index.html.erb +9 -5
  292. data/app/views/decidim/votings/votings/_access_code_modal.html.erb +26 -31
  293. data/app/views/decidim/votings/votings/_check_fields.html.erb +19 -28
  294. data/app/views/decidim/votings/votings/_polling_officers_picker.html.erb +4 -0
  295. data/app/views/decidim/votings/votings/_votings.html.erb +5 -11
  296. data/app/views/decidim/votings/votings/check_census.html.erb +53 -53
  297. data/app/views/decidim/votings/votings/elections_log.html.erb +25 -22
  298. data/app/views/decidim/votings/votings/index.html.erb +24 -25
  299. data/app/views/decidim/votings/votings/index.js.erb +0 -5
  300. data/app/views/decidim/votings/votings/login.html.erb +51 -44
  301. data/app/views/decidim/votings/votings/show.html.erb +5 -7
  302. data/app/views/layouts/decidim/admin/voting.html.erb +11 -11
  303. data/app/views/layouts/decidim/admin/votings.html.erb +16 -0
  304. data/app/views/layouts/decidim/votings.html.erb +10 -14
  305. data/config/assets.rb +3 -28
  306. data/config/locales/ar.yml +0 -6
  307. data/config/locales/bg.yml +0 -1431
  308. data/config/locales/ca.yml +169 -223
  309. data/config/locales/cs.yml +157 -210
  310. data/config/locales/de.yml +161 -215
  311. data/config/locales/el.yml +164 -108
  312. data/config/locales/en.yml +183 -237
  313. data/config/locales/es-MX.yml +164 -218
  314. data/config/locales/es-PY.yml +163 -217
  315. data/config/locales/es.yml +168 -222
  316. data/config/locales/eu.yml +165 -222
  317. data/config/locales/fi-plain.yml +154 -208
  318. data/config/locales/fi.yml +157 -211
  319. data/config/locales/fr-CA.yml +168 -223
  320. data/config/locales/fr.yml +171 -226
  321. data/config/locales/ga-IE.yml +0 -40
  322. data/config/locales/gl.yml +2 -79
  323. data/config/locales/hu.yml +0 -62
  324. data/config/locales/it.yml +6 -243
  325. data/config/locales/ja.yml +173 -227
  326. data/config/locales/lt.yml +135 -204
  327. data/config/locales/lv.yml +0 -34
  328. data/config/locales/nl.yml +2 -211
  329. data/config/locales/no.yml +1 -131
  330. data/config/locales/pl.yml +3 -407
  331. data/config/locales/pt-BR.yml +4 -374
  332. data/config/locales/pt.yml +4 -245
  333. data/config/locales/ro-RO.yml +2 -143
  334. data/config/locales/ru.yml +0 -5
  335. data/config/locales/sk.yml +0 -5
  336. data/config/locales/sv.yml +11 -108
  337. data/config/locales/tr-TR.yml +58 -126
  338. data/config/locales/uk.yml +0 -5
  339. data/config/locales/zh-CN.yml +1 -68
  340. data/config/locales/zh-TW.yml +84 -166
  341. data/db/migrate/20210310120708_add_followable_counter_cache_to_votings.rb +2 -6
  342. data/lib/decidim/api/election_type.rb +1 -1
  343. data/lib/decidim/api/elections_type.rb +1 -1
  344. data/lib/decidim/elections/admin_engine.rb +4 -19
  345. data/lib/decidim/elections/component.rb +4 -452
  346. data/lib/decidim/elections/engine.rb +23 -1
  347. data/lib/decidim/elections/menu.rb +39 -0
  348. data/lib/decidim/elections/seeds.rb +435 -0
  349. data/lib/decidim/elections/test/factories.rb +22 -21
  350. data/lib/decidim/elections/trustee_zone_engine.rb +3 -7
  351. data/lib/decidim/elections/version.rb +1 -1
  352. data/lib/decidim/elections.rb +6 -0
  353. data/lib/decidim/votings/admin_engine.rb +16 -122
  354. data/lib/decidim/votings/census_admin_engine.rb +4 -8
  355. data/lib/decidim/votings/census_menu.rb +18 -0
  356. data/lib/decidim/votings/content_blocks/registry_manager.rb +88 -0
  357. data/lib/decidim/votings/engine.rb +12 -88
  358. data/lib/decidim/votings/menu.rb +164 -0
  359. data/lib/decidim/votings/participatory_space.rb +6 -190
  360. data/lib/decidim/votings/polling_officer_zone_engine.rb +3 -7
  361. data/lib/decidim/votings/polling_officer_zone_menu.rb +17 -0
  362. data/lib/decidim/votings/query_extensions.rb +4 -4
  363. data/lib/decidim/votings/seeds.rb +197 -0
  364. data/lib/decidim/votings/test/factories.rb +29 -13
  365. data/lib/decidim/votings/voting_serializer.rb +1 -1
  366. data/lib/tasks/decidim_elections.rake +2 -2
  367. metadata +76 -125
  368. data/app/cells/decidim/elections/election_m/data.erb +0 -19
  369. data/app/cells/decidim/elections/election_m/footer.erb +0 -5
  370. data/app/cells/decidim/elections/election_m/tags.erb +0 -3
  371. data/app/cells/decidim/elections/election_m_cell.rb +0 -96
  372. data/app/cells/decidim/elections/election_results/blank_votes.erb +0 -7
  373. data/app/cells/decidim/votings/content_blocks/highlighted_votings/show.erb +0 -30
  374. data/app/cells/decidim/votings/content_blocks/landing_page/attachments_and_folders_cell.rb +0 -22
  375. data/app/cells/decidim/votings/content_blocks/landing_page/description/show.erb +0 -15
  376. data/app/cells/decidim/votings/content_blocks/landing_page/description_cell.rb +0 -25
  377. data/app/cells/decidim/votings/content_blocks/landing_page/elections/show.erb +0 -15
  378. data/app/cells/decidim/votings/content_blocks/landing_page/elections/single.erb +0 -11
  379. data/app/cells/decidim/votings/content_blocks/landing_page/elections_cell.rb +0 -47
  380. data/app/cells/decidim/votings/content_blocks/landing_page/header/show.erb +0 -29
  381. data/app/cells/decidim/votings/content_blocks/landing_page/header_cell.rb +0 -108
  382. data/app/cells/decidim/votings/content_blocks/landing_page/header_settings_form_cell.rb +0 -17
  383. data/app/cells/decidim/votings/content_blocks/landing_page/metrics/show.erb +0 -12
  384. data/app/cells/decidim/votings/content_blocks/landing_page/metrics_cell.rb +0 -19
  385. data/app/cells/decidim/votings/content_blocks/landing_page/polling_stations/address.erb +0 -14
  386. data/app/cells/decidim/votings/content_blocks/landing_page/polling_stations/map.erb +0 -18
  387. data/app/cells/decidim/votings/content_blocks/landing_page/polling_stations/show.erb +0 -25
  388. data/app/cells/decidim/votings/content_blocks/landing_page/polling_stations_cell.rb +0 -56
  389. data/app/cells/decidim/votings/content_blocks/landing_page/statistics_cell.rb +0 -24
  390. data/app/cells/decidim/votings/content_blocks/landing_page/timeline/show.erb +0 -7
  391. data/app/cells/decidim/votings/content_blocks/landing_page/timeline_cell.rb +0 -17
  392. data/app/cells/decidim/votings/polling_officers/polling_officers_picker/polling_officers.erb +0 -12
  393. data/app/cells/decidim/votings/voting_m/data.erb +0 -21
  394. data/app/cells/decidim/votings/voting_m/footer.erb +0 -5
  395. data/app/cells/decidim/votings/voting_m_cell.rb +0 -94
  396. data/app/commands/decidim/votings/admin/publish_voting.rb +0 -40
  397. data/app/commands/decidim/votings/admin/unpublish_voting.rb +0 -40
  398. data/app/forms/decidim/votings/admin/monitoring_committee_member_form.rb +0 -27
  399. data/app/helpers/decidim/votings/admin/polling_officers_picker_helper.rb +0 -29
  400. data/app/packs/entrypoints/decidim_elections_admin_pending_action.js +0 -1
  401. data/app/packs/entrypoints/decidim_elections_admin_trustees_process.js +0 -1
  402. data/app/packs/entrypoints/decidim_elections_admin_vote_statistics.js +0 -1
  403. data/app/packs/entrypoints/decidim_elections_election_log.js +0 -1
  404. data/app/packs/entrypoints/decidim_elections_onboarding.js +0 -1
  405. data/app/packs/entrypoints/decidim_elections_trustee_key_ceremony.js +0 -1
  406. data/app/packs/entrypoints/decidim_elections_trustee_tally_started.js +0 -1
  407. data/app/packs/entrypoints/decidim_elections_trustee_trustee_zone.js +0 -1
  408. data/app/packs/entrypoints/decidim_elections_trustee_zone.js +0 -1
  409. data/app/packs/entrypoints/decidim_elections_trustee_zone.scss +0 -1
  410. data/app/packs/entrypoints/decidim_elections_voter_casting-vote.js +0 -1
  411. data/app/packs/entrypoints/decidim_elections_voter_new-vote.js +0 -1
  412. data/app/packs/entrypoints/decidim_elections_voter_setup-preview.js +0 -1
  413. data/app/packs/entrypoints/decidim_elections_voter_setup-vote.js +0 -1
  414. data/app/packs/entrypoints/decidim_elections_voter_verify-vote.js +0 -1
  415. data/app/packs/entrypoints/decidim_votings_admin_monitoring_committee_members_form.js +0 -1
  416. data/app/packs/entrypoints/decidim_votings_admin_polling_officers_form.js +0 -1
  417. data/app/packs/entrypoints/decidim_votings_admin_polling_officers_picker.js +0 -1
  418. data/app/packs/entrypoints/decidim_votings_admin_polling_stations_form.js +0 -1
  419. data/app/packs/entrypoints/decidim_votings_admin_update_census_dataset_status.js +0 -1
  420. data/app/packs/entrypoints/decidim_votings_admin_votings.js +0 -1
  421. data/app/packs/entrypoints/decidim_votings_admin_votings.scss +0 -1
  422. data/app/packs/entrypoints/decidim_votings_in-person-vote.js +0 -1
  423. data/app/packs/entrypoints/decidim_votings_voting-description-cell.js +0 -1
  424. data/app/packs/entrypoints/decidim_votings_voting_polling_officer_zone-edit-closure.js +0 -1
  425. data/app/packs/entrypoints/decidim_votings_voting_polling_officer_zone-in-person-vote.js +0 -1
  426. data/app/packs/entrypoints/decidim_votings_voting_polling_officer_zone-new-closure.js +0 -1
  427. data/app/packs/entrypoints/decidim_votings_voting_polling_officer_zone-sign-closure.js +0 -1
  428. data/app/packs/src/decidim/elections/onboarding.js +0 -5
  429. data/app/packs/src/decidim/votings/admin/monitoring_committee_members_form.js +0 -35
  430. data/app/packs/src/decidim/votings/voting-description-cell.js +0 -34
  431. data/app/packs/stylesheets/decidim/elections/focus/_accordion.scss +0 -36
  432. data/app/packs/stylesheets/decidim/elections/focus/_evote.scss +0 -344
  433. data/app/packs/stylesheets/decidim/elections/focus/_focus.scss +0 -128
  434. data/app/packs/stylesheets/decidim/elections/trustee_zone.scss +0 -24
  435. data/app/packs/stylesheets/decidim/votings/votings/_polling-stations-cell.scss +0 -6
  436. data/app/packs/stylesheets/decidim/votings/votings/_voting-description-cell.scss +0 -29
  437. data/app/views/decidim/elections/admin/answers/proposals_picker.html.erb +0 -1
  438. data/app/views/decidim/elections/elections/_count.html.erb +0 -1
  439. data/app/views/decidim/elections/elections/_election.html.erb +0 -1
  440. data/app/views/decidim/elections/elections/_filters.html.erb +0 -25
  441. data/app/views/decidim/elections/elections/_filters_small_view.html.erb +0 -18
  442. data/app/views/decidim/elections/votes/_focus_header.html.erb +0 -8
  443. data/app/views/decidim/elections/votes/_new_confirm_step_footer.html.erb +0 -23
  444. data/app/views/decidim/votings/admin/votings/polling_officers_picker.html.erb +0 -2
  445. data/app/views/decidim/votings/votings/_count.html.erb +0 -1
  446. data/app/views/decidim/votings/votings/_filters.html.erb +0 -25
  447. data/app/views/decidim/votings/votings/_filters_small_view.html.erb +0 -23
  448. data/app/views/decidim/votings/votings/_promoted_voting.html.erb +0 -27
  449. data/app/views/layouts/decidim/_election_votes_header.html.erb +0 -13
  450. data/app/views/layouts/decidim/election_votes.html.erb +0 -27
  451. data/app/views/layouts/decidim/voting_landing.html.erb +0 -13
  452. data/config/locales/he-IL.yml +0 -1
  453. data/db/seeds/Exampledocument.pdf +0 -0
  454. data/db/seeds/city.jpeg +0 -0
  455. data/db/seeds/city2.jpeg +0 -0
  456. data/decidim-elections.gemspec +0 -37
  457. data/lib/decidim/elections/seeds/city.jpeg +0 -0
  458. data/lib/decidim/votings/test/capybara_polling_officers_picker.rb +0 -49
  459. /data/app/cells/decidim/votings/content_blocks/{landing_page/header_settings_form → hero_settings_form}/show.erb +0 -0
@@ -19,7 +19,7 @@ module Decidim
19
19
 
20
20
  def default_vote_flow
21
21
  Decidim::Elections::CurrentUserVoteFlow.new(election, current_user) do
22
- allowed_to?(:user_vote, :election, election: election)
22
+ allowed_to?(:user_vote, :election, election:)
23
23
  end
24
24
  end
25
25
 
@@ -32,7 +32,7 @@ module Decidim
32
32
  def can_preview?
33
33
  return @can_preview if defined?(@can_preview)
34
34
 
35
- @preview_mode = allowed_to?(:preview, :election, election: election)
35
+ @preview_mode = allowed_to?(:preview, :election, election:)
36
36
  end
37
37
 
38
38
  def ballot_questions
@@ -35,7 +35,7 @@ module Decidim
35
35
  end
36
36
 
37
37
  def permissions_context
38
- super.merge(current_participatory_space: current_participatory_space)
38
+ super.merge(current_participatory_space:)
39
39
  end
40
40
 
41
41
  def permission_class_chain
@@ -2,7 +2,7 @@
2
2
 
3
3
  module Decidim
4
4
  module Votings
5
- # This module, when injected into a controller, ensures there's a
5
+ # This module, when injected into a controller, ensures there is a
6
6
  # voting available and deducts it from the context.
7
7
  module NeedsVoting
8
8
  def self.enhance_controller(instance_or_module)
@@ -5,22 +5,21 @@ module Decidim
5
5
  module Admin
6
6
  # This controller allows the create or update answers for a question.
7
7
  class AnswersController < Admin::ApplicationController
8
- include Decidim::Proposals::Admin::Picker
9
8
  helper Decidim::ApplicationHelper
10
9
  helper_method :election, :question, :answers, :answers, :missing_answers
11
10
 
12
11
  def index
13
- flash.now[:alert] = I18n.t("answers.index.invalid_max_selections", scope: "decidim.elections.admin", missing_answers: missing_answers) if missing_answers.positive?
12
+ flash.now[:alert] = I18n.t("answers.index.invalid_max_selections", scope: "decidim.elections.admin", missing_answers:) if missing_answers.positive?
14
13
  end
15
14
 
16
15
  def new
17
- enforce_permission_to :update, :answer, election: election, question: question
16
+ enforce_permission_to(:update, :answer, election:, question:)
18
17
  @form = form(AnswerForm).instance
19
18
  end
20
19
 
21
20
  def create
22
- enforce_permission_to :update, :answer, election: election, question: question
23
- @form = form(AnswerForm).from_params(params, election: election, question: question)
21
+ enforce_permission_to(:update, :answer, election:, question:)
22
+ @form = form(AnswerForm).from_params(params, election:, question:)
24
23
 
25
24
  CreateAnswer.call(@form) do
26
25
  on(:ok) do
@@ -36,13 +35,13 @@ module Decidim
36
35
  end
37
36
 
38
37
  def edit
39
- enforce_permission_to :update, :answer, election: election, question: question
38
+ enforce_permission_to(:update, :answer, election:, question:)
40
39
  @form = form(AnswerForm).from_model(answer)
41
40
  end
42
41
 
43
42
  def update
44
- enforce_permission_to :update, :answer, election: election, question: question
45
- @form = form(AnswerForm).from_params(params, election: election, question: question)
43
+ enforce_permission_to(:update, :answer, election:, question:)
44
+ @form = form(AnswerForm).from_params(params, election:, question:)
46
45
 
47
46
  UpdateAnswer.call(@form, answer) do
48
47
  on(:ok) do
@@ -66,7 +65,7 @@ module Decidim
66
65
  end
67
66
 
68
67
  def change_selected(selected)
69
- enforce_permission_to :select, :answer, election: election, question: question
68
+ enforce_permission_to(:select, :answer, election:, question:)
70
69
 
71
70
  UpdateAnswerSelection.call(answer, selected) do
72
71
  on(:ok) do
@@ -90,7 +89,7 @@ module Decidim
90
89
  end
91
90
 
92
91
  def destroy
93
- enforce_permission_to :update, :answer, election: election, question: question
92
+ enforce_permission_to(:update, :answer, election:, question:)
94
93
 
95
94
  DestroyAnswer.call(answer, current_user) do
96
95
  on(:ok) do
@@ -9,6 +9,7 @@ module Decidim
9
9
  # Note that it inherits from `Decidim::Admin::Components::BaseController`, which
10
10
  # override its layout and provide all kinds of useful methods.
11
11
  class ApplicationController < Decidim::Admin::Components::BaseController
12
+ include Decidim::Elections::ContentSecurityPolicy
12
13
  end
13
14
  end
14
15
  end
@@ -18,7 +18,7 @@ module Decidim
18
18
 
19
19
  def create
20
20
  enforce_permission_to :create, :election
21
- @form = form(ElectionForm).from_params(params, current_component: current_component)
21
+ @form = form(ElectionForm).from_params(params, current_component:)
22
22
 
23
23
  CreateElection.call(@form) do
24
24
  on(:ok) do
@@ -34,13 +34,13 @@ module Decidim
34
34
  end
35
35
 
36
36
  def edit
37
- enforce_permission_to :update, :election, election: election
37
+ enforce_permission_to(:update, :election, election:)
38
38
  @form = form(ElectionForm).from_model(election)
39
39
  end
40
40
 
41
41
  def update
42
- enforce_permission_to :update, :election, election: election
43
- @form = form(ElectionForm).from_params(params, current_component: current_component)
42
+ enforce_permission_to(:update, :election, election:)
43
+ @form = form(ElectionForm).from_params(params, current_component:)
44
44
 
45
45
  UpdateElection.call(@form, election) do
46
46
  on(:ok) do
@@ -56,7 +56,7 @@ module Decidim
56
56
  end
57
57
 
58
58
  def destroy
59
- enforce_permission_to :delete, :election, election: election
59
+ enforce_permission_to(:delete, :election, election:)
60
60
 
61
61
  DestroyElection.call(election, current_user) do
62
62
  on(:ok) do
@@ -72,7 +72,7 @@ module Decidim
72
72
  end
73
73
 
74
74
  def publish
75
- enforce_permission_to :publish, :election, election: election
75
+ enforce_permission_to(:publish, :election, election:)
76
76
 
77
77
  PublishElection.call(election, current_user) do
78
78
  on(:ok) do
@@ -83,7 +83,7 @@ module Decidim
83
83
  end
84
84
 
85
85
  def unpublish
86
- enforce_permission_to :unpublish, :election, election: election
86
+ enforce_permission_to(:unpublish, :election, election:)
87
87
 
88
88
  UnpublishElection.call(election, current_user) do
89
89
  on(:ok) do
@@ -33,11 +33,11 @@ module Decidim
33
33
  end
34
34
 
35
35
  def questionnaire_participant_answers_url(session_token)
36
- answer_feedback_form_path(id: election.id, session_token: session_token)
36
+ answer_feedback_form_path(id: election.id, session_token:)
37
37
  end
38
38
 
39
39
  def questionnaire_export_response_url(session_token)
40
- answer_export_feedback_form_path(id: election.id, session_token: session_token, format: "pdf")
40
+ answer_export_feedback_form_path(id: election.id, session_token:, format: "pdf")
41
41
  end
42
42
 
43
43
  def questionnaire_url
@@ -8,14 +8,14 @@ module Decidim
8
8
  helper_method :election, :question, :answers, :answers
9
9
 
10
10
  def new
11
- enforce_permission_to :import_proposals, :answer, election: election, question: question
11
+ enforce_permission_to(:import_proposals, :answer, election:, question:)
12
12
  @form = form(Admin::AnswerImportProposalsForm).instance
13
13
  end
14
14
 
15
15
  def create
16
- enforce_permission_to :import_proposals, :answer, election: election, question: question
16
+ enforce_permission_to(:import_proposals, :answer, election:, question:)
17
17
 
18
- @form = form(Admin::AnswerImportProposalsForm).from_params(params, election: election, question: question)
18
+ @form = form(Admin::AnswerImportProposalsForm).from_params(params, election:, question:)
19
19
 
20
20
  Admin::ImportProposalsToElections.call(@form) do
21
21
  on(:ok) do |answers|
@@ -8,13 +8,13 @@ module Decidim
8
8
  helper_method :election, :questions, :question
9
9
 
10
10
  def new
11
- enforce_permission_to :create, :question, election: election
11
+ enforce_permission_to(:create, :question, election:)
12
12
  @form = form(QuestionForm).instance
13
13
  end
14
14
 
15
15
  def create
16
- enforce_permission_to :create, :question, election: election
17
- @form = form(QuestionForm).from_params(params, election: election)
16
+ enforce_permission_to(:create, :question, election:)
17
+ @form = form(QuestionForm).from_params(params, election:)
18
18
 
19
19
  CreateQuestion.call(@form) do
20
20
  on(:ok) do
@@ -35,13 +35,13 @@ module Decidim
35
35
  end
36
36
 
37
37
  def edit
38
- enforce_permission_to :update, :question, election: election, question: question
38
+ enforce_permission_to(:update, :question, election:, question:)
39
39
  @form = form(QuestionForm).from_model(question)
40
40
  end
41
41
 
42
42
  def update
43
- enforce_permission_to :update, :question, election: election, question: question
44
- @form = form(QuestionForm).from_params(params, election: election)
43
+ enforce_permission_to(:update, :question, election:, question:)
44
+ @form = form(QuestionForm).from_params(params, election:)
45
45
 
46
46
  UpdateQuestion.call(@form, question) do
47
47
  on(:ok) do
@@ -57,7 +57,7 @@ module Decidim
57
57
  end
58
58
 
59
59
  def destroy
60
- enforce_permission_to :update, :question, election: election, question: question
60
+ enforce_permission_to(:update, :question, election:, question:)
61
61
 
62
62
  DestroyQuestion.call(question, current_user) do
63
63
  on(:ok) do
@@ -10,19 +10,19 @@ module Decidim
10
10
  helper_method :elections, :election, :current_step, :vote_stats, :bulletin_board_server, :authority_public_key, :election_unique_id, :quorum, :missing_trustees_allowed
11
11
 
12
12
  def index
13
- enforce_permission_to :read, :steps, election: election
13
+ enforce_permission_to(:read, :steps, election:)
14
14
 
15
15
  if current_step_form_class
16
- @form = form(current_step_form_class).instance(election: election)
16
+ @form = form(current_step_form_class).instance(election:)
17
17
  @form.valid?
18
18
  end
19
19
  end
20
20
 
21
21
  def update
22
- enforce_permission_to :update, :steps, election: election
22
+ enforce_permission_to(:update, :steps, election:)
23
23
  redirect_to election_steps_path(election) && return unless params[:id] == current_step
24
24
 
25
- @form = form(current_step_form_class).from_params(params, election: election)
25
+ @form = form(current_step_form_class).from_params(params, election:)
26
26
  Decidim::Elections::Admin::UpdateActionStatus.call(@form.pending_action) if @form.pending_action
27
27
 
28
28
  # check pending action status mode
@@ -38,7 +38,7 @@ module Decidim
38
38
  end
39
39
 
40
40
  def edit
41
- enforce_permission_to :update, :trustee_participatory_space, trustee_participatory_space: trustee_participatory_space
41
+ enforce_permission_to(:update, :trustee_participatory_space, trustee_participatory_space:)
42
42
 
43
43
  UpdateTrusteeParticipatorySpace.call(trustee_participatory_space) do
44
44
  on(:ok) do |trustee|
@@ -54,7 +54,7 @@ module Decidim
54
54
  end
55
55
 
56
56
  def destroy
57
- enforce_permission_to :delete, :trustee_participatory_space, trustee_participatory_space: trustee_participatory_space
57
+ enforce_permission_to(:delete, :trustee_participatory_space, trustee_participatory_space:)
58
58
 
59
59
  RemoveTrusteeFromParticipatorySpace.call(trustee_participatory_space) do
60
60
  on(:ok) do
@@ -8,6 +8,7 @@ module Decidim
8
8
  # Note that it inherits from `Decidim::Components::BaseController`, which
9
9
  # override its layout and provide all kinds of useful methods.
10
10
  class ApplicationController < Decidim::Components::BaseController
11
+ include Decidim::Elections::ContentSecurityPolicy
11
12
  end
12
13
  end
13
14
  end
@@ -8,15 +8,18 @@ module Decidim
8
8
  include Paginable
9
9
  include Decidim::Elections::Orderable
10
10
  include HasVoteFlow
11
+ include Decidim::IconHelper
11
12
 
12
- helper_method :elections, :election, :paginated_elections, :scheduled_elections, :single?, :onboarding, :authority_public_key, :bulletin_board_server, :authority_slug
13
+ helper_method :elections, :election, :paginated_elections, :scheduled_elections,
14
+ :single?, :onboarding, :authority_public_key, :bulletin_board_server,
15
+ :authority_slug, :tabs, :panels
13
16
 
14
17
  def index
15
18
  redirect_to election_path(single, single: true) if single?
16
19
  end
17
20
 
18
21
  def show
19
- enforce_permission_to :view, :election, election: election
22
+ enforce_permission_to :view, :election, election:
20
23
  end
21
24
 
22
25
  def election_log; end
@@ -8,6 +8,7 @@ module Decidim
8
8
 
9
9
  class ApplicationController < ::Decidim::ApplicationController
10
10
  include Decidim::UserProfile
11
+ include Decidim::Elections::ContentSecurityPolicy
11
12
 
12
13
  helper_method :trustee
13
14
 
@@ -8,11 +8,11 @@ module Decidim
8
8
  helper_method :election, :bulletin_board_server, :authority_slug, :authority_public_key, :current_step, :scheme_name
9
9
 
10
10
  def show
11
- enforce_permission_to :view, :election, trustee: trustee
11
+ enforce_permission_to :view, :election, trustee:
12
12
  end
13
13
 
14
14
  def update
15
- enforce_permission_to :update, :election, trustee: trustee
15
+ enforce_permission_to(:update, :election, trustee:)
16
16
 
17
17
  UpdateElectionBulletinBoardStatus.call(election, params[:status]) do
18
18
  on(:ok) do
@@ -8,15 +8,15 @@ module Decidim
8
8
  include Decidim::FormFactory
9
9
 
10
10
  def show
11
- enforce_permission_to :view, :trustee, trustee: trustee
11
+ enforce_permission_to(:view, :trustee, trustee:)
12
12
 
13
13
  trustee.name ||= current_user.name
14
14
  end
15
15
 
16
16
  def update
17
- enforce_permission_to :update, :trustee, trustee: trustee
17
+ enforce_permission_to(:update, :trustee, trustee:)
18
18
 
19
- form = form(TrusteeForm).from_params(params, trustee: trustee)
19
+ form = form(TrusteeForm).from_params(params, trustee:)
20
20
 
21
21
  UpdateTrustee.call(form) do
22
22
  on(:ok) do
@@ -4,13 +4,15 @@ module Decidim
4
4
  module Elections
5
5
  # Exposes the elections resources so users can participate on them
6
6
  class VotesController < Decidim::Elections::ApplicationController
7
- layout "decidim/election_votes"
7
+ WIZARD_STEPS = %w(register election confirm ballot_decision).freeze
8
+
8
9
  include FormFactory
9
10
  include HasVoteFlow
10
11
 
11
12
  helper VotesHelper
12
13
  helper_method :bulletin_board_server, :authority_public_key, :scheme_name, :election_unique_id,
13
- :exit_path, :elections, :election, :questions, :questions_count, :vote, :valid_questionnaire?
14
+ :exit_path, :elections, :election, :questions, :questions_count, :vote, :valid_questionnaire?,
15
+ :wizard_steps
14
16
 
15
17
  delegate :count, to: :questions, prefix: true
16
18
 
@@ -18,8 +20,8 @@ module Decidim
18
20
  vote_flow.voter_login(params)
19
21
  return unless vote_allowed?
20
22
 
21
- @form = form(Voter::VoteForm).from_params({ voter_token: voter_token, voter_id: voter_id },
22
- election: election, user: vote_flow.user)
23
+ @form = form(Voter::VoteForm).from_params({ voter_token:, voter_id: },
24
+ election:, user: vote_flow.user)
23
25
  end
24
26
 
25
27
  def create
@@ -29,7 +31,7 @@ module Decidim
29
31
 
30
32
  return redirect_to election_vote_path(election, id: params[:vote][:encrypted_data_hash], token: vote_flow.voter_id_token) if preview_mode?
31
33
 
32
- @form = form(Voter::VoteForm).from_params(params, election: election, user: vote_flow.user, email: vote_flow.email)
34
+ @form = form(Voter::VoteForm).from_params(params, election:, user: vote_flow.user, email: vote_flow.email)
33
35
  Voter::CastVote.call(@form) do
34
36
  on(:ok) do |vote|
35
37
  redirect_to election_vote_path(election, id: vote.encrypted_vote_hash, token: vote_flow.voter_id_token)
@@ -42,11 +44,11 @@ module Decidim
42
44
  end
43
45
 
44
46
  def show
45
- enforce_permission_to :view, :election, election: election
47
+ enforce_permission_to :view, :election, election:
46
48
  end
47
49
 
48
50
  def update
49
- enforce_permission_to :view, :election, election: election
51
+ enforce_permission_to(:view, :election, election:)
50
52
 
51
53
  Voter::UpdateVoteStatus.call(vote) do
52
54
  on(:ok) do
@@ -60,9 +62,9 @@ module Decidim
60
62
  end
61
63
 
62
64
  def verify
63
- enforce_permission_to :view, :election, election: election
65
+ enforce_permission_to(:view, :election, election:)
64
66
 
65
- @form = form(Voter::VerifyVoteForm).instance(election: election)
67
+ @form = form(Voter::VerifyVoteForm).instance(election:)
66
68
  end
67
69
 
68
70
  private
@@ -74,11 +76,11 @@ module Decidim
74
76
  end
75
77
 
76
78
  def vote
77
- @vote ||= Decidim::Elections::Vote.find_by(election: election, encrypted_vote_hash: params[:id]) if params[:id]
79
+ @vote ||= Decidim::Elections::Vote.find_by(election:, encrypted_vote_hash: params[:id]) if params[:id]
78
80
  end
79
81
 
80
82
  def exit_path
81
- @exit_path ||= if allowed_to? :view, :election, election: election
83
+ @exit_path ||= if allowed_to?(:view, :election, election:)
82
84
  election_path(election)
83
85
  else
84
86
  elections_path
@@ -86,7 +88,7 @@ module Decidim
86
88
  end
87
89
 
88
90
  def pending_vote
89
- @pending_vote ||= Decidim::Elections::Votes::PendingVotes.for.find_by(voter_id: voter_id, election: election)
91
+ @pending_vote ||= Decidim::Elections::Votes::PendingVotes.for.find_by(voter_id:, election:)
90
92
  end
91
93
 
92
94
  def bulletin_board_client
@@ -141,7 +143,7 @@ module Decidim
141
143
  return false
142
144
  end
143
145
 
144
- enforce_permission_to :vote, :election, election: election
146
+ enforce_permission_to(:vote, :election, election:)
145
147
 
146
148
  true
147
149
  end
@@ -157,6 +159,10 @@ module Decidim
157
159
 
158
160
  @valid_questionnaire = election.questionnaire.questions.any?
159
161
  end
162
+
163
+ def wizard_steps
164
+ WIZARD_STEPS
165
+ end
160
166
  end
161
167
  end
162
168
  end
@@ -9,6 +9,8 @@ module Decidim
9
9
 
10
10
  helper_method :current_voting, :elections, :election, :publish_results_form, :bulletin_board_server
11
11
 
12
+ before_action :append_csp_directives
13
+
12
14
  def index
13
15
  enforce_permission_to :read, :monitoring_committee_election_results, voting: current_voting
14
16
 
@@ -16,11 +18,11 @@ module Decidim
16
18
  end
17
19
 
18
20
  def show
19
- enforce_permission_to :read, :monitoring_committee_election_result, voting: current_voting, election: election
21
+ enforce_permission_to :read, :monitoring_committee_election_result, voting: current_voting, election:
20
22
  end
21
23
 
22
24
  def update
23
- enforce_permission_to :validate, :monitoring_committee_election_result, voting: current_voting, election: election
25
+ enforce_permission_to(:validate, :monitoring_committee_election_result, voting: current_voting, election:)
24
26
 
25
27
  if publish_results_form.pending_action
26
28
  Decidim::Elections::Admin::UpdateActionStatus.call(publish_results_form.pending_action)
@@ -48,6 +50,12 @@ module Decidim
48
50
 
49
51
  private
50
52
 
53
+ def append_csp_directives
54
+ return if bulletin_board_server.blank?
55
+
56
+ content_security_policy.append_csp_directive("connect-src", bulletin_board_server)
57
+ end
58
+
51
59
  def bulletin_board_server
52
60
  Decidim::Elections.bulletin_board.bulletin_board_server
53
61
  end
@@ -61,7 +69,7 @@ module Decidim
61
69
  end
62
70
 
63
71
  def publish_results_form
64
- @publish_results_form ||= form(Decidim::Votings::Admin::PublishResultsForm).from_params(params, election: election)
72
+ @publish_results_form ||= form(Decidim::Votings::Admin::PublishResultsForm).from_params(params, election:)
65
73
  end
66
74
  end
67
75
  end
@@ -15,12 +15,12 @@ module Decidim
15
15
 
16
16
  def new
17
17
  enforce_permission_to :create, :monitoring_committee_member, voting: current_voting
18
- @form = form(MonitoringCommitteeMemberForm).instance
18
+ @form = form(VotingUserRoleForm).instance
19
19
  end
20
20
 
21
21
  def create
22
22
  enforce_permission_to :create, :monitoring_committee_member, voting: current_voting
23
- @form = form(MonitoringCommitteeMemberForm).from_params(params, voting: current_voting)
23
+ @form = form(VotingUserRoleForm).from_params(params, voting: current_voting)
24
24
 
25
25
  CreateMonitoringCommitteeMember.call(@form, current_user, current_voting) do
26
26
  on(:ok) do
@@ -36,7 +36,7 @@ module Decidim
36
36
  end
37
37
 
38
38
  def destroy
39
- enforce_permission_to :delete, :monitoring_committee_member, voting: current_voting, monitoring_committee_member: monitoring_committee_member
39
+ enforce_permission_to(:delete, :monitoring_committee_member, voting: current_voting, monitoring_committee_member:)
40
40
 
41
41
  DestroyMonitoringCommitteeMember.call(monitoring_committee_member, current_user) do
42
42
  on(:ok) do
@@ -17,17 +17,17 @@ module Decidim
17
17
  end
18
18
 
19
19
  def show
20
- enforce_permission_to :read, :monitoring_committee_polling_station_closure, voting: current_voting, closure: closure
20
+ enforce_permission_to :read, :monitoring_committee_polling_station_closure, voting: current_voting, closure:
21
21
  end
22
22
 
23
23
  def edit
24
- enforce_permission_to :validate, :monitoring_committee_polling_station_closure, voting: current_voting, closure: closure
24
+ enforce_permission_to(:validate, :monitoring_committee_polling_station_closure, voting: current_voting, closure:)
25
25
 
26
26
  @form = form(MonitoringCommitteePollingStationClosureForm).from_model(closure)
27
27
  end
28
28
 
29
29
  def validate
30
- enforce_permission_to :validate, :monitoring_committee_polling_station_closure, voting: current_voting, closure: closure
30
+ enforce_permission_to(:validate, :monitoring_committee_polling_station_closure, voting: current_voting, closure:)
31
31
 
32
32
  @form = form(MonitoringCommitteePollingStationClosureForm).from_params(params)
33
33
 
@@ -12,12 +12,12 @@ module Decidim
12
12
 
13
13
  def new
14
14
  enforce_permission_to :create, :polling_officer, voting: current_voting
15
- @form = form(PollingOfficerForm).instance
15
+ @form = form(VotingUserRoleForm).instance
16
16
  end
17
17
 
18
18
  def create
19
19
  enforce_permission_to :create, :polling_officer, voting: current_voting
20
- @form = form(PollingOfficerForm).from_params(params, voting: current_voting)
20
+ @form = form(VotingUserRoleForm).from_params(params, voting: current_voting)
21
21
 
22
22
  CreatePollingOfficer.call(@form, current_user, current_voting) do
23
23
  on(:ok) do
@@ -33,7 +33,7 @@ module Decidim
33
33
  end
34
34
 
35
35
  def destroy
36
- enforce_permission_to :delete, :polling_officer, voting: current_voting, polling_officer: polling_officer
36
+ enforce_permission_to(:delete, :polling_officer, voting: current_voting, polling_officer:)
37
37
 
38
38
  DestroyPollingOfficer.call(polling_officer, current_user) do
39
39
  on(:ok) do
@@ -6,7 +6,6 @@ module Decidim
6
6
  # This controller allows to create or update a polling station.
7
7
  class PollingStationsController < Admin::ApplicationController
8
8
  include Decidim::PollingStations::Admin::Filterable
9
- helper Decidim::Votings::Admin::PollingOfficersPickerHelper
10
9
  include VotingAdmin
11
10
 
12
11
  helper_method :current_voting, :polling_station, :filtered_polling_stations
@@ -38,12 +37,12 @@ module Decidim
38
37
  end
39
38
 
40
39
  def edit
41
- enforce_permission_to :update, :polling_station, voting: current_voting, polling_station: polling_station
40
+ enforce_permission_to(:update, :polling_station, voting: current_voting, polling_station:)
42
41
  @form = form(PollingStationForm).from_model(polling_station, voting: current_voting)
43
42
  end
44
43
 
45
44
  def update
46
- enforce_permission_to :update, :polling_station, voting: current_voting, polling_station: polling_station
45
+ enforce_permission_to(:update, :polling_station, voting: current_voting, polling_station:)
47
46
  @form = form(PollingStationForm).from_params(params, voting: current_voting)
48
47
 
49
48
  UpdatePollingStation.call(@form, polling_station) do
@@ -60,7 +59,7 @@ module Decidim
60
59
  end
61
60
 
62
61
  def destroy
63
- enforce_permission_to :delete, :polling_station, voting: current_voting, polling_station: polling_station
62
+ enforce_permission_to(:delete, :polling_station, voting: current_voting, polling_station:)
64
63
 
65
64
  DestroyPollingStation.call(polling_station, current_user) do
66
65
  on(:ok) do
@@ -7,6 +7,7 @@ module Decidim
7
7
  # a voting.
8
8
  class VotingAttachmentCollectionsController < Decidim::Admin::ApplicationController
9
9
  include Decidim::Admin::Concerns::HasAttachmentCollections
10
+ include Decidim::Admin::Concerns::HasTabbedMenu
10
11
  include VotingAdmin
11
12
 
12
13
  def after_destroy_path
@@ -16,6 +17,10 @@ module Decidim
16
17
  def collection_for
17
18
  current_voting
18
19
  end
20
+
21
+ private
22
+
23
+ def tab_menu_name = :votings_admin_attachments_menu
19
24
  end
20
25
  end
21
26
  end
@@ -7,6 +7,7 @@ module Decidim
7
7
  class VotingAttachmentsController < Decidim::Admin::ApplicationController
8
8
  include VotingAdmin
9
9
  include Decidim::Admin::Concerns::HasAttachments
10
+ include Decidim::Admin::Concerns::HasTabbedMenu
10
11
 
11
12
  def after_destroy_path
12
13
  voting_attachments_path(current_voting)
@@ -15,6 +16,10 @@ module Decidim
15
16
  def attached_to
16
17
  current_voting
17
18
  end
19
+
20
+ private
21
+
22
+ def tab_menu_name = :votings_admin_attachments_menu
18
23
  end
19
24
  end
20
25
  end