decidim-elections 0.23.5 → 0.24.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (326) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -0
  3. data/app/assets/config/admin/decidim_votings_manifest.css +0 -0
  4. data/app/assets/config/admin/decidim_votings_manifest.js +4 -0
  5. data/app/assets/config/decidim_elections_manifest.css +3 -0
  6. data/app/assets/config/decidim_elections_manifest.js +6 -0
  7. data/app/assets/config/decidim_votings_manifest.css +3 -0
  8. data/app/assets/config/decidim_votings_manifest.js +0 -0
  9. data/app/assets/images/decidim/votings/icon.svg +1 -0
  10. data/app/assets/javascripts/decidim/elections/admin/pending_action.js.es6 +16 -0
  11. data/app/assets/javascripts/decidim/elections/admin/vote_statistics.js.es6 +11 -0
  12. data/app/assets/javascripts/decidim/elections/trustee_zone.js.es6 +54 -0
  13. data/app/assets/javascripts/decidim/elections/trustee_zone/key_ceremony.js.es6 +126 -0
  14. data/app/assets/javascripts/decidim/elections/trustee_zone/tally.js.es6 +104 -0
  15. data/app/assets/javascripts/decidim/elections/vote.js.es6 +107 -160
  16. data/app/assets/javascripts/decidim/elections/vote_questions.component.js.es6 +129 -0
  17. data/app/assets/javascripts/decidim/elections/vote_verify.js.es6 +71 -0
  18. data/app/assets/javascripts/decidim/votings/admin/monitoring_committee_members_form.js.es6 +35 -0
  19. data/app/assets/javascripts/decidim/votings/admin/polling_officers_form.js.es6 +35 -0
  20. data/app/assets/javascripts/decidim/votings/admin/polling_officers_picker.js.es6 +35 -0
  21. data/app/assets/javascripts/decidim/votings/admin/polling_stations_form.js.es6 +5 -0
  22. data/app/assets/stylesheets/decidim/elections/elections.scss +0 -4
  23. data/app/assets/stylesheets/decidim/elections/focus/_accordion.scss +36 -0
  24. data/app/assets/stylesheets/decidim/elections/focus/_evote.scss +58 -0
  25. data/app/assets/stylesheets/decidim/elections/trustee_zone.scss +24 -0
  26. data/app/assets/stylesheets/decidim/votings/votings.scss +1 -0
  27. data/app/assets/stylesheets/decidim/votings/votings/_votings-header.scss +99 -0
  28. data/app/assets/stylesheets/decidim/votings/votings/_votings-home-banner.scss +11 -0
  29. data/app/cells/decidim/votings/content_block_cell.rb +17 -0
  30. data/app/cells/decidim/votings/content_blocks/highlighted_votings/show.erb +30 -0
  31. data/app/cells/decidim/votings/content_blocks/highlighted_votings_cell.rb +33 -0
  32. data/app/cells/decidim/votings/content_blocks/highlighted_votings_settings_form/show.erb +3 -0
  33. data/app/cells/decidim/votings/content_blocks/highlighted_votings_settings_form_cell.rb +19 -0
  34. data/app/cells/decidim/votings/content_blocks/landing_page/attachments_and_folders_cell.rb +15 -0
  35. data/app/cells/decidim/votings/content_blocks/landing_page/description_cell.rb +15 -0
  36. data/app/cells/decidim/votings/content_blocks/landing_page/elections_cell.rb +15 -0
  37. data/app/cells/decidim/votings/content_blocks/landing_page/header_cell.rb +15 -0
  38. data/app/cells/decidim/votings/content_blocks/landing_page/metrics_cell.rb +15 -0
  39. data/app/cells/decidim/votings/content_blocks/landing_page/polling_stations_cell.rb +15 -0
  40. data/app/cells/decidim/votings/content_blocks/landing_page/stats_cell.rb +15 -0
  41. data/app/cells/decidim/votings/content_blocks/landing_page/timeline_cell.rb +15 -0
  42. data/app/cells/decidim/votings/polling_officers/polling_officers_picker/polling_officers.erb +12 -0
  43. data/app/cells/decidim/votings/polling_officers/polling_officers_picker/show.erb +14 -0
  44. data/app/cells/decidim/votings/polling_officers/polling_officers_picker_cell.rb +73 -0
  45. data/app/cells/decidim/votings/voting_cell.rb +19 -0
  46. data/app/cells/decidim/votings/voting_m/data.erb +21 -0
  47. data/app/cells/decidim/votings/voting_m/footer.erb +5 -0
  48. data/app/cells/decidim/votings/voting_m_cell.rb +94 -0
  49. data/app/commands/decidim/elections/admin/add_user_as_trustee.rb +81 -0
  50. data/app/commands/decidim/elections/admin/create_election.rb +2 -1
  51. data/app/commands/decidim/elections/admin/end_vote.rb +63 -0
  52. data/app/commands/decidim/elections/admin/publish_results.rb +59 -0
  53. data/app/commands/decidim/elections/admin/remove_trustee_from_participatory_space.rb +37 -0
  54. data/app/commands/decidim/elections/admin/setup_election.rb +160 -0
  55. data/app/commands/decidim/elections/admin/start_key_ceremony.rb +63 -0
  56. data/app/commands/decidim/elections/admin/start_tally.rb +63 -0
  57. data/app/commands/decidim/elections/admin/start_vote.rb +63 -0
  58. data/app/commands/decidim/elections/admin/update_action_status.rb +47 -0
  59. data/app/commands/decidim/elections/admin/update_answer_selection.rb +41 -0
  60. data/app/commands/decidim/elections/admin/update_trustee_participatory_space.rb +40 -0
  61. data/app/commands/decidim/elections/trustee_zone/update_election_bulletin_board_status.rb +39 -0
  62. data/app/commands/decidim/elections/trustee_zone/update_trustee.rb +41 -0
  63. data/app/commands/decidim/elections/voter/cast_vote.rb +59 -0
  64. data/app/commands/decidim/elections/voter/update_vote_status.rb +70 -0
  65. data/app/commands/decidim/votings/admin/create_monitoring_committee_member.rb +99 -0
  66. data/app/commands/decidim/votings/admin/create_polling_officer.rb +99 -0
  67. data/app/commands/decidim/votings/admin/create_polling_station.rb +59 -0
  68. data/app/commands/decidim/votings/admin/create_voting.rb +59 -0
  69. data/app/commands/decidim/votings/admin/destroy_monitoring_committee_member.rb +51 -0
  70. data/app/commands/decidim/votings/admin/destroy_polling_officer.rb +52 -0
  71. data/app/commands/decidim/votings/admin/destroy_polling_station.rb +40 -0
  72. data/app/commands/decidim/votings/admin/manage_polling_station.rb +64 -0
  73. data/app/commands/decidim/votings/admin/publish_voting.rb +40 -0
  74. data/app/commands/decidim/votings/admin/unpublish_voting.rb +40 -0
  75. data/app/commands/decidim/votings/admin/update_polling_station.rb +50 -0
  76. data/app/commands/decidim/votings/admin/update_voting.rb +85 -0
  77. data/app/constraints/decidim/votings/current_component.rb +28 -0
  78. data/app/constraints/decidim/votings/current_voting.rb +43 -0
  79. data/app/controllers/concerns/decidim/elections/orderable.rb +2 -2
  80. data/app/controllers/concerns/decidim/polling_officers/admin/filterable.rb +58 -0
  81. data/app/controllers/concerns/decidim/polling_stations/admin/filterable.rb +57 -0
  82. data/app/controllers/concerns/decidim/votings/admin/filterable.rb +27 -0
  83. data/app/controllers/concerns/decidim/votings/admin/voting_admin.rb +48 -0
  84. data/app/controllers/concerns/decidim/votings/needs_voting.rb +44 -0
  85. data/app/controllers/concerns/decidim/votings/orderable.rb +32 -0
  86. data/app/controllers/decidim/elections/admin/answers_controller.rb +32 -0
  87. data/app/controllers/decidim/elections/admin/elections_controller.rb +2 -2
  88. data/app/controllers/decidim/elections/admin/feedback_forms_controller.rb +55 -0
  89. data/app/controllers/decidim/elections/admin/steps_controller.rb +96 -0
  90. data/app/controllers/decidim/elections/admin/trustees_participatory_spaces_controller.rb +89 -0
  91. data/app/controllers/decidim/elections/elections_controller.rb +5 -1
  92. data/app/controllers/decidim/elections/feedbacks_controller.rb +38 -0
  93. data/app/controllers/decidim/elections/trustee_zone/application_controller.rb +45 -0
  94. data/app/controllers/decidim/elections/trustee_zone/elections_controller.rb +35 -0
  95. data/app/controllers/decidim/elections/trustee_zone/trustees_controller.rb +36 -0
  96. data/app/controllers/decidim/elections/votes_controller.rb +54 -2
  97. data/app/controllers/decidim/votings/admin/application_controller.rb +26 -0
  98. data/app/controllers/decidim/votings/admin/component_permissions_controller.rb +13 -0
  99. data/app/controllers/decidim/votings/admin/components_controller.rb +15 -0
  100. data/app/controllers/decidim/votings/admin/monitoring_committee_members_controller.rb +62 -0
  101. data/app/controllers/decidim/votings/admin/polling_officers_controller.rb +66 -0
  102. data/app/controllers/decidim/votings/admin/polling_stations_controller.rb +92 -0
  103. data/app/controllers/decidim/votings/admin/voting_attachment_collections_controller.rb +22 -0
  104. data/app/controllers/decidim/votings/admin/voting_attachments_controller.rb +21 -0
  105. data/app/controllers/decidim/votings/admin/votings_controller.rb +124 -0
  106. data/app/controllers/decidim/votings/admin/votings_landing_page_content_blocks_controller.rb +44 -0
  107. data/app/controllers/decidim/votings/admin/votings_landing_page_controller.rb +46 -0
  108. data/app/controllers/decidim/votings/application_controller.rb +26 -0
  109. data/app/controllers/decidim/votings/polling_officer_zone/application_controller.rb +33 -0
  110. data/app/controllers/decidim/votings/polling_officer_zone/polling_officers_controller.rb +17 -0
  111. data/app/controllers/decidim/votings/polling_officer_zone/polling_stations_controller.rb +22 -0
  112. data/app/controllers/decidim/votings/votings_controller.rb +98 -0
  113. data/app/events/decidim/elections/trustees/notify_new_trustee_event.rb +28 -0
  114. data/app/events/decidim/elections/trustees/notify_trustee_new_election_event.rb +14 -0
  115. data/app/events/decidim/elections/votes/vote_accepted_event.rb +24 -0
  116. data/app/events/decidim/votings/polling_officers/polling_station_assigned_event.rb +44 -0
  117. data/app/forms/decidim/elections/admin/action_form.rb +34 -0
  118. data/app/forms/decidim/elections/admin/answer_form.rb +3 -2
  119. data/app/forms/decidim/elections/admin/election_form.rb +3 -2
  120. data/app/forms/decidim/elections/admin/setup_form.rb +79 -0
  121. data/app/forms/decidim/elections/admin/trustees_participatory_space_form.rb +22 -0
  122. data/app/forms/decidim/elections/admin/vote_period_form.rb +37 -0
  123. data/app/forms/decidim/elections/ballot/verify_vote_form.rb +29 -0
  124. data/app/forms/decidim/elections/trustee_zone/trustee_form.rb +26 -0
  125. data/app/forms/decidim/elections/voter/encrypted_vote_form.rb +49 -0
  126. data/app/forms/decidim/votings/admin/monitoring_committee_member_form.rb +27 -0
  127. data/app/forms/decidim/votings/admin/polling_officer_form.rb +27 -0
  128. data/app/forms/decidim/votings/admin/polling_station_form.rb +58 -0
  129. data/app/forms/decidim/votings/admin/voting_form.rb +71 -0
  130. data/app/helpers/decidim/elections/admin/answers_helper.rb +19 -0
  131. data/app/helpers/decidim/elections/admin/steps_helper.rb +23 -0
  132. data/app/helpers/decidim/elections/admin/trustees_participatory_spaces_helper.rb +31 -0
  133. data/app/helpers/decidim/elections/elections_helper.rb +29 -0
  134. data/app/helpers/decidim/votings/admin/polling_officers_picker_helper.rb +29 -0
  135. data/app/helpers/decidim/votings/votings_helper.rb +20 -0
  136. data/app/models/decidim/elections/action.rb +13 -0
  137. data/app/models/decidim/elections/election.rb +54 -3
  138. data/app/models/decidim/elections/elections_trustee.rb +11 -0
  139. data/app/models/decidim/elections/question.rb +19 -0
  140. data/app/models/decidim/elections/trustee.rb +26 -0
  141. data/app/models/decidim/elections/trustees_participatory_space.rb +13 -0
  142. data/app/models/decidim/elections/vote.rb +15 -0
  143. data/app/models/decidim/votings/monitoring_committee_member.rb +24 -0
  144. data/app/models/decidim/votings/polling_officer.rb +76 -0
  145. data/app/models/decidim/votings/polling_station.rb +64 -0
  146. data/app/models/decidim/votings/voting.rb +138 -0
  147. data/app/permissions/decidim/elections/admin/permissions.rb +50 -10
  148. data/app/permissions/decidim/elections/permissions.rb +20 -2
  149. data/app/permissions/decidim/elections/trustee_zone/permissions.rb +32 -0
  150. data/app/permissions/decidim/votings/admin/permissions.rb +127 -0
  151. data/app/permissions/decidim/votings/permissions.rb +40 -0
  152. data/app/permissions/decidim/votings/polling_officer_zone/permissions.rb +32 -0
  153. data/app/presenters/decidim/elections/admin_log/election_presenter.rb +1 -1
  154. data/app/presenters/decidim/elections/trustee_presenter.rb +24 -0
  155. data/app/presenters/decidim/votings/admin_log/voting_presenter.rb +45 -0
  156. data/app/presenters/decidim/votings/polling_station_presenter.rb +27 -0
  157. data/app/presenters/decidim/votings/voting_presenter.rb +36 -0
  158. data/app/queries/decidim/elections/admin/pending_actions.rb +20 -0
  159. data/app/queries/decidim/elections/admin/votes_for_statistics.rb +24 -0
  160. data/app/queries/decidim/elections/elections_finished_to_end.rb +19 -0
  161. data/app/queries/decidim/elections/elections_ready_to_start.rb +25 -0
  162. data/app/queries/decidim/elections/trustees/by_participatory_space.rb +24 -0
  163. data/app/queries/decidim/elections/trustees/by_participatory_space_trustee_ids.rb +24 -0
  164. data/app/queries/decidim/elections/votes/election_votes.rb +19 -0
  165. data/app/queries/decidim/elections/votes/pending_votes.rb +20 -0
  166. data/app/queries/decidim/elections/votes/user_election_last_vote.rb +26 -0
  167. data/app/queries/decidim/elections/votes/user_votes.rb +19 -0
  168. data/app/queries/decidim/votings/admin/admin_users.rb +39 -0
  169. data/app/queries/decidim/votings/admin/polling_officers_join_polling_stations.rb +33 -0
  170. data/app/queries/decidim/votings/admin/polling_officers_join_polling_stations_and_user.rb +34 -0
  171. data/app/queries/decidim/votings/admin/polling_officers_join_user.rb +32 -0
  172. data/app/queries/decidim/votings/organization_prioritized_votings.rb +21 -0
  173. data/app/queries/decidim/votings/organization_promoted_votings.rb +16 -0
  174. data/app/queries/decidim/votings/organization_published_votings.rb +19 -0
  175. data/app/queries/decidim/votings/organization_votings.rb +16 -0
  176. data/app/queries/decidim/votings/prioritized_votings.rb +13 -0
  177. data/app/queries/decidim/votings/published_votings.rb +12 -0
  178. data/app/services/decidim/votings/voting_search.rb +46 -0
  179. data/app/views/decidim/elections/admin/answers/index.html.erb +12 -0
  180. data/app/views/decidim/elections/admin/elections/index.html.erb +13 -1
  181. data/app/views/decidim/elections/admin/proposals_imports/new.html.erb +1 -1
  182. data/app/views/decidim/elections/admin/questions/index.html.erb +5 -1
  183. data/app/views/decidim/elections/admin/shared/_trustees_secondary_nav.html.erb +3 -0
  184. data/app/views/decidim/elections/admin/steps/_create_election.html.erb +38 -0
  185. data/app/views/decidim/elections/admin/steps/_created.html.erb +16 -0
  186. data/app/views/decidim/elections/admin/steps/_key_ceremony.html.erb +16 -0
  187. data/app/views/decidim/elections/admin/steps/_key_ceremony_ended.html.erb +15 -0
  188. data/app/views/decidim/elections/admin/steps/_tally.html.erb +17 -0
  189. data/app/views/decidim/elections/admin/steps/_tally_ended.html.erb +9 -0
  190. data/app/views/decidim/elections/admin/steps/_vote.html.erb +21 -0
  191. data/app/views/decidim/elections/admin/steps/_vote_ended.html.erb +15 -0
  192. data/app/views/decidim/elections/admin/steps/_vote_stats.html.erb +31 -0
  193. data/app/views/decidim/elections/admin/steps/index.html.erb +43 -0
  194. data/app/views/decidim/elections/admin/trustees_participatory_spaces/_form.html.erb +19 -0
  195. data/app/views/decidim/elections/admin/trustees_participatory_spaces/index.html.erb +64 -0
  196. data/app/views/decidim/elections/admin/trustees_participatory_spaces/new.html.erb +7 -0
  197. data/app/views/decidim/elections/elections/_filters_small_view.html.erb +1 -1
  198. data/app/views/decidim/elections/elections/_preview.html.erb +26 -0
  199. data/app/views/decidim/elections/elections/_results.html.erb +47 -0
  200. data/app/views/decidim/elections/elections/show.html.erb +43 -18
  201. data/app/views/decidim/elections/trustee_zone/elections/_backup_modal.html.erb +24 -0
  202. data/app/views/decidim/elections/trustee_zone/elections/_key_ceremony_steps.html.erb +44 -0
  203. data/app/views/decidim/elections/trustee_zone/elections/_restore_modal.html.erb +25 -0
  204. data/app/views/decidim/elections/trustee_zone/elections/_tally_steps.html.erb +43 -0
  205. data/app/views/decidim/elections/trustee_zone/elections/show.html.erb +38 -0
  206. data/app/views/decidim/elections/trustee_zone/elections/update.js.erb +5 -0
  207. data/app/views/decidim/elections/trustee_zone/trustees/show.html.erb +102 -0
  208. data/app/views/decidim/elections/votes/_election_votes_confirmed.html.erb +38 -17
  209. data/app/views/decidim/elections/votes/_election_votes_failed.html.erb +21 -0
  210. data/app/views/decidim/elections/votes/_election_votes_question.html.erb +4 -4
  211. data/app/views/decidim/elections/votes/cast_failed.js.erb +1 -0
  212. data/app/views/decidim/elections/votes/cast_success.js.erb +1 -0
  213. data/app/views/decidim/elections/votes/new.html.erb +41 -33
  214. data/app/views/decidim/elections/votes/verify.html.erb +78 -0
  215. data/app/views/decidim/votings/admin/monitoring_committee_members/_form.html.erb +27 -0
  216. data/app/views/decidim/votings/admin/monitoring_committee_members/index.html.erb +41 -0
  217. data/app/views/decidim/votings/admin/monitoring_committee_members/new.html.erb +7 -0
  218. data/app/views/decidim/votings/admin/polling_officers/_form.html.erb +27 -0
  219. data/app/views/decidim/votings/admin/polling_officers/index.html.erb +50 -0
  220. data/app/views/decidim/votings/admin/polling_officers/new.html.erb +7 -0
  221. data/app/views/decidim/votings/admin/polling_stations/_form.html.erb +40 -0
  222. data/app/views/decidim/votings/admin/polling_stations/edit.html.erb +7 -0
  223. data/app/views/decidim/votings/admin/polling_stations/index.html.erb +55 -0
  224. data/app/views/decidim/votings/admin/polling_stations/new.html.erb +7 -0
  225. data/app/views/decidim/votings/admin/votings/_form.html.erb +63 -0
  226. data/app/views/decidim/votings/admin/votings/edit.html.erb +31 -0
  227. data/app/views/decidim/votings/admin/votings/index.html.erb +87 -0
  228. data/app/views/decidim/votings/admin/votings/new.html.erb +13 -0
  229. data/app/views/decidim/votings/admin/votings/polling_officers_picker.html.erb +2 -0
  230. data/app/views/decidim/votings/polling_officer_zone/polling_officers/show.html.erb +42 -0
  231. data/app/views/decidim/votings/polling_officer_zone/polling_stations/show.html.erb +1 -0
  232. data/app/views/decidim/votings/votings/_count.html.erb +1 -0
  233. data/app/views/decidim/votings/votings/_filters.html.erb +25 -0
  234. data/app/views/decidim/votings/votings/_filters_small_view.html.erb +23 -0
  235. data/app/views/decidim/votings/votings/_promoted_voting.html.erb +27 -0
  236. data/app/views/decidim/votings/votings/_voting_details.html.erb +7 -0
  237. data/app/views/decidim/votings/votings/_votings.html.erb +25 -0
  238. data/app/views/decidim/votings/votings/index.html.erb +42 -0
  239. data/app/views/decidim/votings/votings/index.js.erb +10 -0
  240. data/app/views/decidim/votings/votings/show.html.erb +20 -0
  241. data/app/views/layouts/decidim/_voting_header.html.erb +16 -0
  242. data/app/views/layouts/decidim/admin/voting.html.erb +101 -0
  243. data/app/views/layouts/decidim/voting.html.erb +16 -0
  244. data/config/initializers/decidim_bulletin_board.rb +23 -0
  245. data/config/locales/ca.yml +650 -20
  246. data/config/locales/cs.yml +644 -6
  247. data/config/locales/de.yml +636 -6
  248. data/config/locales/el.yml +0 -2
  249. data/config/locales/en.yml +636 -6
  250. data/config/locales/es-MX.yml +636 -6
  251. data/config/locales/es-PY.yml +636 -6
  252. data/config/locales/es.yml +646 -16
  253. data/config/locales/fi-plain.yml +636 -6
  254. data/config/locales/fi.yml +636 -6
  255. data/config/locales/fr-CA.yml +423 -6
  256. data/config/locales/fr.yml +423 -6
  257. data/config/locales/gl.yml +85 -7
  258. data/config/locales/it.yml +94 -6
  259. data/config/locales/ja.yml +8 -6
  260. data/config/locales/lv.yml +0 -2
  261. data/config/locales/nl.yml +503 -6
  262. data/config/locales/no.yml +2 -5
  263. data/config/locales/pl.yml +644 -6
  264. data/config/locales/pt.yml +0 -6
  265. data/config/locales/ro-RO.yml +176 -6
  266. data/config/locales/sv.yml +257 -6
  267. data/config/locales/tr-TR.yml +111 -6
  268. data/config/locales/zh-CN.yml +0 -6
  269. data/db/migrate/20200915142713_add_questionnaire_to_existing_elections.rb +29 -0
  270. data/db/migrate/20200918153813_create_decidim_elections_trustees_participatory_spaces.rb +13 -0
  271. data/db/migrate/20200918153824_create_decidim_elections_elections_trustees.rb +10 -0
  272. data/db/migrate/20200918153835_create_decidim_elections_trustees.rb +12 -0
  273. data/db/migrate/20201026163334_add_blocked_at_and_bb_status_to_elections.rb +8 -0
  274. data/db/migrate/20201028090110_add_votes_to_decidim_elections_answers.rb +7 -0
  275. data/db/migrate/20201028135614_add_selected_to_decidim_elections_answers.rb +7 -0
  276. data/db/migrate/20201209110653_create_decidim_elections_votes.rb +14 -0
  277. data/db/migrate/20201216091123_add_name_to_trustees.rb +7 -0
  278. data/db/migrate/20210113113818_add_message_id_to_decidim_elections_votes.rb +7 -0
  279. data/db/migrate/20210113120115_create_decidim_elections_votings.rb +20 -0
  280. data/db/migrate/20210114100749_add_published_at_to_decidim_votings_votings.rb +7 -0
  281. data/db/migrate/20210114111850_add_user_to_decidim_elections_votes.rb +7 -0
  282. data/db/migrate/20210120164634_add_promoted_to_voting.rb +7 -0
  283. data/db/migrate/20210125124801_add_voting_type_to_voting_voting.rb +7 -0
  284. data/db/migrate/20210129124956_create_decidim_elections_actions.rb +14 -0
  285. data/db/migrate/20210204132111_add_votings_polling_stations.rb +19 -0
  286. data/db/migrate/20210208090441_add_polling_officers_to_votings.rb +12 -0
  287. data/db/migrate/20210210090738_add_votings_polling_station_references_to_votings_polling_officer.rb +8 -0
  288. data/db/migrate/20210216074707_add_monitoring_committee_member.rb +12 -0
  289. data/db/migrate/20210310120708_add_followable_counter_cache_to_votings.rb +16 -0
  290. data/db/seeds/city.jpeg +0 -0
  291. data/lib/decidim/api/election_answer_type.rb +23 -0
  292. data/lib/decidim/api/election_question_type.rb +22 -0
  293. data/lib/decidim/api/election_type.rb +27 -0
  294. data/lib/decidim/api/elections_type.rb +32 -0
  295. data/lib/decidim/api/trustee_type.rb +16 -0
  296. data/lib/decidim/api/voting_type.rb +20 -0
  297. data/lib/decidim/elections.rb +19 -2
  298. data/lib/decidim/elections/admin_engine.rb +42 -1
  299. data/lib/decidim/elections/answer_serializer.rb +48 -0
  300. data/lib/decidim/elections/api.rb +11 -0
  301. data/lib/decidim/elections/component.rb +367 -24
  302. data/lib/decidim/elections/engine.rb +8 -1
  303. data/lib/decidim/elections/test/factories.rb +201 -4
  304. data/lib/decidim/elections/trustee_zone.rb +10 -0
  305. data/lib/decidim/elections/trustee_zone_engine.rb +35 -0
  306. data/lib/decidim/elections/version.rb +1 -1
  307. data/lib/decidim/votings.rb +16 -0
  308. data/lib/decidim/votings/admin.rb +10 -0
  309. data/lib/decidim/votings/admin_engine.rb +71 -0
  310. data/lib/decidim/votings/api.rb +7 -0
  311. data/lib/decidim/votings/engine.rb +147 -0
  312. data/lib/decidim/votings/participatory_space.rb +92 -0
  313. data/lib/decidim/votings/polling_officer_zone.rb +10 -0
  314. data/lib/decidim/votings/polling_officer_zone_engine.rb +33 -0
  315. data/lib/decidim/votings/query_extensions.rb +43 -0
  316. data/lib/decidim/votings/test/capybara_polling_officers_picker.rb +49 -0
  317. data/lib/decidim/votings/test/factories.rb +83 -0
  318. data/lib/decidim/votings/voting_serializer.rb +54 -0
  319. data/lib/tasks/decidim_elections.rake +68 -5
  320. metadata +303 -19
  321. data/app/types/decidim/elections/election_answer_type.rb +0 -24
  322. data/app/types/decidim/elections/election_question_type.rb +0 -25
  323. data/app/types/decidim/elections/election_type.rb +0 -27
  324. data/app/types/decidim/elections/elections_type.rb +0 -32
  325. data/config/i18n-tasks.yml +0 -10
  326. data/lib/decidim/elections/bulletin_board_client.rb +0 -35
@@ -16,6 +16,9 @@ fi:
16
16
  max_selections: Valintojen enimmäismäärä
17
17
  min_selections: Ei mikään edellä mainituista
18
18
  title: Otsikko
19
+ voting:
20
+ end_time: Äänestyksen päättymisaika
21
+ start_time: Äänestyksen alkamisaika
19
22
  errors:
20
23
  models:
21
24
  answer:
@@ -26,7 +29,25 @@ fi:
26
29
  attributes:
27
30
  attachment:
28
31
  needs_to_be_reattached: Liitettävä uudestaan
32
+ trustee:
33
+ attributes:
34
+ name:
35
+ cant_be_changed: tietoa ei voi muuttaa
36
+ public_key:
37
+ cant_be_changed: tietoa ei voi muuttaa
29
38
  activerecord:
39
+ errors:
40
+ models:
41
+ decidim/votings/polling_officer:
42
+ attributes:
43
+ presided_polling_station:
44
+ president_and_manager: Äänestysvirkailija on jo äänestyspaikan esimies tai hoitaja
45
+ voting:
46
+ different_organization: Äänestyksen tulee tapahtua sen organisaation alla, johon käyttäjä on rekisteröitynyt
47
+ decidim/votings/polling_station:
48
+ attributes:
49
+ polling_station_president:
50
+ different_voting: Äänestysvirkailijan on oltava samassa äänestyksessä kuin äänestyspaikka
30
51
  models:
31
52
  decidim/elections/answer:
32
53
  one: Vastaus
@@ -37,7 +58,33 @@ fi:
37
58
  decidim/elections/question:
38
59
  one: Kysymys
39
60
  other: Kysymykset
61
+ decidim/votings/polling_officer:
62
+ one: Äänestysvirkailija
63
+ other: Äänestysvirkailijat
64
+ decidim/votings/polling_station:
65
+ one: Äänestyspaikka
66
+ other: Äänestyspaikat
67
+ decidim/votings/voting:
68
+ one: Äänestys
69
+ other: Äänestykset
40
70
  decidim:
71
+ admin:
72
+ filters:
73
+ officers_assigned_eq:
74
+ label: Virkailijat
75
+ values:
76
+ assigned: Määritetty
77
+ unassigned: Ei määritetty
78
+ role_eq:
79
+ label: Rooli
80
+ values:
81
+ manager: Virkailija
82
+ president: Esimies
83
+ unassigned: Ei määritetty
84
+ search_placeholder:
85
+ name_or_email_or_nickname_or_presided_station_title_or_managed_station_title_cont: Hae %{collection} nimellä, sähköpostilla, nimimerkillä tai äänestyspaikan perusteella.
86
+ ? title_or_address_or_manager_name_or_manager_email_or_manager_nickname_or_president_name_or_president_email_or_president_nickname_cont
87
+ : Hae %{collection} otsikolla, osoitteella tai virkailijan nimellä, sähköpostilla tai nimimerkillä.
41
88
  components:
42
89
  elections:
43
90
  actions:
@@ -53,9 +100,11 @@ fi:
53
100
  confirm_destroy: Oletko varma?
54
101
  destroy: Tuhoa
55
102
  edit: Muokkaa
56
- edit_answers: Muokkaa vastauksia
57
- edit_questions: Muokkaa kysymyksiä
103
+ feedback: Äänestäjän palaute
58
104
  import: Tuo ehdotuksia vastauksiin
105
+ manage_answers: Hallitse vastauksia
106
+ manage_questions: Hallinnoi kysymyksiä
107
+ manage_steps: Hallinnoi vaiheita
59
108
  new: Uusi %{name}
60
109
  preview: Esikatsele
61
110
  publish: Julkaise
@@ -78,6 +127,14 @@ fi:
78
127
  new:
79
128
  create: Luo vastaus
80
129
  title: Uusi vastaus
130
+ select:
131
+ disable: Poista vastausvalinta
132
+ enable: Merkitse vastaus valituksi
133
+ invalid: Vastauksen valinta epäonnistui
134
+ success: Vastauksen valinta onnistui
135
+ unselect:
136
+ invalid: Vastauksen valinnan poisto epäonnistui
137
+ success: Vastauksen valinnan poisto onnistui
81
138
  update:
82
139
  invalid: Vastauksen päivitys epäonnistui
83
140
  success: Vastauksen päivitys onnistui
@@ -104,6 +161,9 @@ fi:
104
161
  update:
105
162
  invalid: Vaalin päivitys epäonnistui
106
163
  success: Vaalin päivitys onnistui
164
+ exports:
165
+ elections: Vaalit
166
+ feedback_form_answers: Palautelomakkeen vastaukset
107
167
  models:
108
168
  answer:
109
169
  name: Vastaus
@@ -111,6 +171,8 @@ fi:
111
171
  name: Vaali
112
172
  question:
113
173
  name: Kysymys
174
+ trustee:
175
+ name: Luottamushenkilö
114
176
  proposals_imports:
115
177
  create:
116
178
  invalid: Ehdotusten tuonti vastauksiksi epäonnistui
@@ -119,6 +181,7 @@ fi:
119
181
  create: Tuo ehdotuksia vastauksiksi
120
182
  no_components: Tässä osallistumistilassa ei ole muita ehdotuskomponentteja, joista voisit tuoda ehdotuksia vastauksiksi.
121
183
  select_component: Valitse komponentti
184
+ title: Tuo ehdotuksia
122
185
  questions:
123
186
  create:
124
187
  invalid: Kysymyksen luonti epäonnistui
@@ -137,9 +200,107 @@ fi:
137
200
  update:
138
201
  invalid: Kysymyksen päivitys epäonnistui
139
202
  success: Kysymyksen päivitys onnistui
203
+ steps:
204
+ create_election:
205
+ errors:
206
+ max_selections: Kysymyksillä ei ole <strong>oikeaa arvoa vastausten määrälle</strong>
207
+ minimum_answers: Kysymyksillä on oltava <strong>vähintään kaksi vastausta</strong>.
208
+ minimum_questions: Vaalilla <strong>on oltava vähintään yksi kysymys</strong>.
209
+ published: Vaalia <strong>ei ole julkaistu</strong>.
210
+ time_before: Alkamisaika on <strong>alle 3 tuntia</strong> ennen vaalin alkua.
211
+ trustees_number: Osallistumistilassa <strong>on oltava vähintään %{number} luottamushenkilöä, joilla on julkinen avain</strong>.
212
+ invalid: Vaalin asetusten määrittäminen epäonnistui
213
+ no_trustees: Tähän osallistumistilaan ei ole määritetty luottamushenkilöitä
214
+ not_used_trustee: "(ei käytössä)"
215
+ public_key:
216
+ 'false': vaalilla ei ole <strong>julkista avainta</strong>
217
+ 'true': vaalilla on <strong>julkinen avain</strong>
218
+ requirements:
219
+ max_selections: Kaikilla kysymyksillä on oikea arvo asetukselle <strong>vastausten maksimimäärä</strong>.
220
+ minimum_answers: Jokaisella kysymyksellä on <strong>vähintään 2 vastausta</strong>.
221
+ minimum_questions: Vaalilla on <strong>vähintään 1 kysymys</strong>.
222
+ published: Vaalia <strong>ei ole julkaistu</strong>.
223
+ time_before: Vaalin määritys tulee tapahtua <strong>vähintään %{hours} tuntia</strong> ennen sen alkamista.
224
+ trustees_number: Osallistumistilassa <strong>on oltava vähintään %{number} luottamushenkilöä, joilla on julkinen avain</strong>.
225
+ submit: Määritä vaali
226
+ success: Vaalin lähetys sähköiselle ääniuurnalle onnistui
227
+ title: Määritä vaali
228
+ trustees: Vaalin luottamushenkilöt
229
+ created:
230
+ invalid: Avainseremonian käynnistäminen epäonnistui
231
+ submit: Aloita avainseremonia
232
+ success: Avainseremonian aloituspyyntö on onnistuneesti lähetetty sähköiselle ääniuurnalle
233
+ title: Vaali luotu
234
+ trustees: Luottamushenkilöt
235
+ key_ceremony:
236
+ title: Avainseremonia
237
+ trustees: Luottamushenkilöt
238
+ key_ceremony_ended:
239
+ errors:
240
+ time_before: Vaali on valmis alkamaan. Vaalin äänestysaika voidaan käynnistää aikaisintaan %{hours} tuntia ennen alkamisaikaa (%{start_time}).
241
+ invalid: Äänestysajan käynnistäminen epäonnistui
242
+ requirements:
243
+ time_before: 'Äänestys alkaa pian. Voit käynnistää äänestysajan manuaalisesti tai se käynnistetään automaattisesti ennen alkamisaikaa: %{start_time}.'
244
+ submit: Käynnistä äänestys
245
+ success: Pyyntösi aloittaa äänestysaika on onnistuneesti lähetetty sähköiselle ääniuurnalle
246
+ title: Valmis alkamaan
247
+ processing: Käsitellään...
248
+ results_published:
249
+ title: Tulokset julkaistu
250
+ tally:
251
+ title: Ääntenlaskun prosessi
252
+ trustees: Luottamushenkilöt
253
+ tally_ended:
254
+ submit: Julkaise tulokset
255
+ title: Tulokset laskettu
256
+ vote:
257
+ errors:
258
+ time_after: Vaali on edelleen käynnissä. Sinun on odotettava päättymisaikaan saakka (%{end_time}) päättääksesi äänestyksen.
259
+ invalid: Äänestysajan päättäminen epäonnistui
260
+ requirements:
261
+ time_after: Äänestys on päättynyt. Voit sulkea äänestysajan manuaalisesti tai se suljetaan automaattisesti muutaman minuutin päästä.
262
+ submit: Päätä äänestysaika
263
+ success: Pyyntösi päättää äänestysaika on onnistuneesti lähetetty sähköiselle ääniuurnalle
264
+ title: Äänestysaika
265
+ vote_ended:
266
+ invalid: Ääntenlaskennan käynnistäminen epäonnistui
267
+ submit: Aloita ääntenlaskenta
268
+ success: Pyyntösi aloittaa ääntenlaskenta on onnistuneesti lähetetty sähköiselle ääniuurnalle
269
+ title: Äänestysaika on päättynyt
270
+ vote_stats:
271
+ no_vote_statistics_yet: Ei vielä äänitilastoja
272
+ title: Äänten tilastot
273
+ voters: Äänestäjät
274
+ votes: Äänet
275
+ trustees_participatory_spaces:
276
+ actions:
277
+ disable: Poista käytöstä
278
+ enable: Harkitse
279
+ create:
280
+ exists: Tällä osallistumistilalla on luottamushenkilö
281
+ invalid: Luottamushenkilön luonti epäonnistui
282
+ success: Luottamushenkilön luonti onnistui
283
+ delete:
284
+ invalid: Luottamushenkilön poisto epäonnistui
285
+ success: Luottamushenkilön poisto onnistui
286
+ form:
287
+ select_user: Valitse käyttäjä
288
+ index:
289
+ title: Luottamushenkilöt
290
+ new:
291
+ create: Luo luottamushenkilö
292
+ title: Uusi luottamushenkilö
293
+ update:
294
+ invalid: Luottamushenkilön %{trustee} päivityksessä tapahtui virhe
295
+ success: Luottamushenkilön %{trustee} päivittäminen onnistui
140
296
  admin_log:
141
297
  election:
298
+ end_vote: "%{user_name} päätti äänestysajan vaalille %{resource_name} sähköisellä ääniuurnalla"
142
299
  publish: "%{user_name} julkaisi vaalin %{resource_name}"
300
+ setup: "%{user_name} loi vaalin %{resource_name} sähköiselle ääniuurnalle"
301
+ start_key_ceremony: "%{user_name} aloitti avainseremonian vaalille %{resource_name} sähköisellä ääniuurnalla"
302
+ start_tally: "%{user_name} aloitti ääntenlaskennan vaalille %{resource_name} sähköisellä ääniuurnalla"
303
+ start_vote: "%{user_name} aloitti äänestysajan vaalille %{resource_name} sähköisellä ääniuurnalla"
143
304
  unpublish: "%{user_name} lopetti vaalin %{resource_name} julkaisun"
144
305
  election_m:
145
306
  badge_name:
@@ -172,14 +333,41 @@ fi:
172
333
  filter: Rajaa
173
334
  filter_by: Rajaa hakua
174
335
  unfold: Avaa
336
+ preview:
337
+ available_answers: Vastausvaihtoehdot
338
+ description: Nämä kysymykset esitetään äänestyksen yhteydessä
339
+ title: Vaaliin liittyvät kysymykset
340
+ results:
341
+ description: Tässä on äänestyksen tulokset kaikille kysymyksille
342
+ selected: Valittu
343
+ title: Vaalin tulokset
344
+ votes:
345
+ one: "%{count} ääni"
346
+ other: "%{count} ääntä"
347
+ zero: "%{count} ääntä"
175
348
  show:
176
- back: Kaikki vaalit
349
+ action-button:
350
+ change-vote: Muuta ääntäsi
351
+ vote: Aloita äänestys
352
+ vote-again: Äänestä uudelleen
353
+ back: Käynnissä olevat vaalit
354
+ callout:
355
+ already-voted: Olet jo äänestänyt näissä vaaleissa. Voit muuttaa ääntäsi tai tarkastaa sen.
356
+ vote-rejected: Ääntäsi ei voida tarkastaa. Ole hyvä ja lähetä äänesi uudestaan.
177
357
  preview: Esikatsele
178
- vote: Äänestä
358
+ verify:
359
+ already-voted: Oletko jo äänestänyt?
360
+ verify-here: Tarkista äänesi täältä.
361
+ will-verify: Voit tarkistaa äänesi, kun vaalit ovat alkaneet.
179
362
  voting_period_status:
180
363
  finished: Äänestys alkoi %{start_time} ja päättyi %{end_time}
181
- ongoing: Äänestys päättyy %{end_time}
364
+ ongoing: 'Äänestysaika päättyy: %{end_time}'
182
365
  upcoming: Äänestys alkaa %{start_time}
366
+ feedback:
367
+ answer:
368
+ invalid: Palautteen lähettäminen epäonnistui.
369
+ spam_detected: Lomakkeeseen vastaaminen epäonnistui. Saatoit toimia liian nopeasti. Yrittäisitkö uudestaan?
370
+ success: Palautteen lähettäminen onnistui.
183
371
  models:
184
372
  answer:
185
373
  fields:
@@ -187,6 +375,7 @@ fi:
187
375
  title: Otsikko
188
376
  election:
189
377
  fields:
378
+ bb_status: Sähköisen ääniuurnan tila
190
379
  end_time: Päättymisaika
191
380
  start_time: Alkamisaika
192
381
  title: Otsikko
@@ -195,10 +384,114 @@ fi:
195
384
  answers: Vastaukset
196
385
  max_selections: Valintojen enimmäismäärä
197
386
  title: Otsikko
387
+ trustees_participatory_space:
388
+ fields:
389
+ considered: harkittu
390
+ email: Sähköposti
391
+ inactive: ei käytössä
392
+ name: Nimi
393
+ notification: Ilmoituksen lähetysaika
394
+ public_key: Julkinen avain
395
+ status: Tila
198
396
  orders:
199
397
  label: Järjestä vaalit
200
398
  older: Vanhimmat
201
399
  recent: Uusimmat
400
+ trustee_zone:
401
+ elections:
402
+ backup_modal:
403
+ description: Näitä vaaleja luodaan sähköiselle ääniuurnalle. On erityisen tärkeää, että jokainen luottamushenkilö luo varmuuskopion näistä avaimista ja tallentaa sen turvalliseen paikkaan. Tämän jälkeen, prosessi jatkuu.
404
+ download_election_keys: Lataa avaimet
405
+ download_icon: Kuvake, joka ilmaisee lataustoiminnon
406
+ title: Varmuuskopioi vaaliavaimet kohteelle %{election}
407
+ key_ceremony_steps:
408
+ back: Takaisin
409
+ description: Näitä vaaleja luodaan parhaillaan sähköiselle ääniuurnalle. Jotta tämä prosessi voidaan saattaa loppuun, sinun tulee osallistua luottamushenkilönä.
410
+ keys:
411
+ create_election: Avainten luonti
412
+ key_ceremony:
413
+ joint_election_key: Yhteisen avaimen luonti
414
+ step_1: Avainten julkaisu
415
+ list:
416
+ status: Tila
417
+ task: Tehtävä
418
+ process_warning: Kun prosessi on käynnistetty, sinun ei tule poistua tältä sivulta ennen kuin prosessi päättyy. Se kestää useita minuutteja, koska kaikkiin luottamushenkilöihin tulee olla yhteydessä, jotta prosessi voidaan päättää.
419
+ start: Aloita
420
+ start_icon: Kuvake, joka ilmaisee aloituspainikkeen avainten luonnille
421
+ status:
422
+ completed: Valmis
423
+ pending: Odottaa
424
+ processing: Käsitellään
425
+ title: Luo vaaliavaimet kohteelle %{election}
426
+ restore_modal:
427
+ description: Sähköiseen ääniuurnaan on liitetty tieto sinusta näiden vaalien luottamushenkilönä. Jatkaaksesi tätä prosessia, lataa oma varmuuskopiotiedostosi, joka luotiin edellisen istuntosi yhteydessä.
428
+ title: Palauta vaaliavaimet kohteelle %{election}
429
+ upload_election_keys: Lataa vaaliavaimet
430
+ upload_icon: Kuvake, joka ilmaisee lataustoiminnon
431
+ tally_steps:
432
+ back: Takaisin
433
+ description: Näiden vaalien tuloksia lasketaan parhaillaan sähköiseen ääniuurnaan. Jotta tämä prosessi voidaan saattaa loppuun, sinun tulee osallistua luottamushenkilönä.
434
+ keys:
435
+ end_tally: Ääntenlaskennan päättyminen
436
+ tally:
437
+ cast: Ääntenlaskennan tuloksen valmistuminen
438
+ share: Ääntenlaskennan tulosten jakaminen
439
+ list:
440
+ status: Tila
441
+ task: Tehtävä
442
+ process_warning: Kun prosessi on aloitettu, sinun ei tule poistua tältä sivulta ennen kuin prosessi saatetaan päätökseen. Tämä kestää useita minuutteja, koska kaikkien luottamushenkilöiden tulee olla yhteydessä samanaikaisesti, jotta prosessi voidaan päättää.
443
+ start: Aloita
444
+ start_icon: Kuvake, joka ilmaisee aloituspainikkeen avainten luonnille
445
+ status:
446
+ completed: Suoritettu
447
+ pending: Odottaa
448
+ processing: Käsitellään
449
+ title: Ääntenlaskenta vaaleille %{election}
450
+ update:
451
+ error: Vaalin tilaa ei päivitetty.
452
+ success: 'Vaalin tila on: %{status}'
453
+ menu:
454
+ trustee_zone: Luottamushenkilön alue
455
+ no_bulletin_board:
456
+ body: Tätä osiota varten vaaditaan sähköisen ääniuurnan palvelin. Ota yhteyttä järjestelmänvalvojaan saadaksesi lisätietoja tästä.
457
+ title: Pahoittelut, sähköistä ääniuurnaa ei ole vielä määritetty.
458
+ trustees:
459
+ show:
460
+ elections:
461
+ list:
462
+ action_required:
463
+ 'false': 'Ei'
464
+ name: Tarvitaanko toimenpiteitä?
465
+ 'true': Suorita toimenpide
466
+ bb_status: Tila
467
+ election: Vaali
468
+ voting_period: Äänestysaika
469
+ no_elections: Sellaisia vaaleja ei ole, joissa sinä toimit luottamushenkilönä.
470
+ title: Vaalit
471
+ identification_keys:
472
+ cancel: Peruuta
473
+ generate: Luo tunnistusavaimet
474
+ generate_error: Tunnistusavainten luonti epäonnistui.
475
+ generate_legend: Sinun tulee luoda tunnistusavainten parit toimiaksesi äänestyksen luottamushenkilönä.
476
+ generate_legend_1: Painikkeen painamisen jälkeen sinun tulee ladata tunnistusavainten tiedosto omalle tietokoneellesi.
477
+ generate_legend_2: Kopioi ladattu tiedosto puhtaalle ja tyhjälle USB-tallennuslaitteelle
478
+ generate_legend_3: Tarkasta, että tietokoneellesi ei jää kopiota kyseisestä tiedostosta (tarkasta myös Lataukset-kansio sekä työpöytäsi).
479
+ generate_legend_4: Luo toinen kopio tiedostosta toiselle ulkoiselle laitteelle ja talleta se erittäin turvalliseen paikkaan.
480
+ submit: Lähetä
481
+ submit_legend: Kun olet toteuttanut kaikki edellä esitetyt vaiheet, viimeistele julkisten tunnistusvainten lähetys Decidim-palvelimelle.
482
+ submit_title: Lähetä julkinen tunnistusavain
483
+ title: Luottamushenkilöiden tunnistusavaimet
484
+ upload: Lataa tunnistusavaimet
485
+ upload_error:
486
+ invalid_format: Ladattu tiedosto ei sisällä yhtään tunnistusavainta.
487
+ invalid_key: Ladatussa tiedostossa olevia tunnistusavaimia ei voida ladata.
488
+ invalid_public_key: Ladatun tiedoston tunnistusavaimet eivät vastaa Decidimiin tallennettua julkista tunnistusavainta.
489
+ upload_legend: Julkiset tunnistusavaimet ovat Decidimissä, mutta eivät selaimessasi. Sinun tulee tuoda tunnistusavainten tiedosto omalle tietokoneellesi varmuuskopiosta, jonka tallensit avaimia luotaessa.
490
+ not_supported_browser_description: Näyttää siltä, että käytät selainta, jota ei voi käyttää luottamushenkilönä toimimiseen. Tarkasta, että käytät selaimesi viimeisintä versiota tai yritä käyttää jotain suosituimmista selaimista luottamushenkilön tehtävien suorittamiseksi.
491
+ not_supported_browser_title: Päivitä selaimesi toimiaksesi luottamushenkilönä
492
+ trustee_role_description: Sinulle on annettu luottamushenkilön tehtävä joissain vaaleissa tällä alustalla.
493
+ update:
494
+ success: Julkisen tunnistusavaimesi tallentaminen onnistui.
202
495
  votes:
203
496
  confirm:
204
497
  answer: Vastaa
@@ -211,15 +504,20 @@ fi:
211
504
  question: Kysymys %{count}
212
505
  confirmed:
213
506
  back: Takaisin vaaleihin
507
+ error: Pahoittelut, äänen vahvistaminen epäonnistui. Ole hyvä ja äänestä uudestaan.
214
508
  experience: Minkälainen käyttökokemuksesi oli?
215
509
  feedback: Jätä meille palautetta
216
510
  header: Ääni vahvistettu
217
511
  lead: Olet jo äänestänyt!
218
512
  text: 'Voit tarkastaa, että äänesi on jätetty onnistuneesti äänestyslaatikkoon seuraavalla tunnisteella: <strong class="evote__poll-id">%{e_vote_poll_id}</strong>'
219
- verify_text: Tarkastaaksesi tämän, voit syöttää äänen tunnisteen <a href="evote-verify">äänten vahvistussivulle</a>
513
+ verify_link: Tarkastaaksesi tämän, kopioi äänen tunniste <a href="%{link}">äänten vahvistussivulle</a>
220
514
  encrypting:
221
515
  header: Ääntäsi salataan...
222
516
  text: Äänesi salataan, jotta henkilöllisyyttäsi ei voida selvittää äänesi perusteella.
517
+ failed:
518
+ header: Äänestys epäonnistui
519
+ lead: Ääntäsi ei ole annettu!
520
+ text: Jokin meni pieleen, yritä uudelleen.
223
521
  header:
224
522
  confirm: Vahvista äänesi
225
523
  confirmed: Ääni vahvistettu
@@ -236,6 +534,28 @@ fi:
236
534
  preview_alert: Tämä on äänestyskopin esikatselunäkymä.
237
535
  question_steps: Kysymys %{current_step} / %{total_steps}
238
536
  selections: "Valittu<br>\n%{selected} / %{max_selections}"
537
+ processing:
538
+ header: Käsitellään ääntä...
539
+ text: Äänesi on vastaanotettu ja sitä käsitellään. Odota hetki.
540
+ update:
541
+ error: Äänen tilan päivitys epäonnistui
542
+ success: Äänen tilan päivitys onnistui
543
+ verify:
544
+ content:
545
+ heading: Vahvista äänesi
546
+ info: Tämä tarkastustyökalu varmentaa, että salatulla merkkijonolla löytyvä äänesi on annettu oikein ja se on vaaliuurnassa.
547
+ error:
548
+ header: Ääntä ei löytynyt!
549
+ info: Äänestystunnusta ei löytynyt vaaliuurnasta %{link}, yritä uudelleen.
550
+ form:
551
+ back: Takaisin Decidimiin
552
+ submit: Tarkista
553
+ vote_identifier: 'Äänen tunniste:'
554
+ header:
555
+ title: Vahvista äänesi
556
+ success:
557
+ header: Äänesi löytyi!
558
+ info: Salattu äänesi on vaaliuurnassa %{link}
239
559
  voting_step:
240
560
  back: Takaisin
241
561
  continue: Seuraava
@@ -249,6 +569,38 @@ fi:
249
569
  email_outro: Tämä ilmoitus on lähetetty sinulle, koska seuraat kohdetta %{participatory_space_title}. Voit lopettaa ilmoitusten vastaanottamisen edellä esitetyn linkin kautta.
250
570
  email_subject: Vaali %{resource_title} on nyt aktiivisena osallistumistilassa %{participatory_space_title}.
251
571
  notification_title: Vaali <a href="%{resource_path}">%{resource_title}</a> on nyt aktiivisena osallistumistilassa %{participatory_space_title}.
572
+ trustees:
573
+ new_election:
574
+ email_intro: Sinut on lisätty luottamushenkilöksi vaaliin %{resource_title}.
575
+ email_outro: Tämä ilmoitus on lähetetty sinulle, koska sinulle on myönnettu luottamushenkilön tehtävä kohteessa %{resource_title}.
576
+ email_subject: Sinut on lisätty luottamushenkilöksi vaaliin %{resource_title}..
577
+ notification_title: Olet luottamushenkilö vaalissa <a href="%{resource_path}">%{resource_title}</a>.
578
+ new_trustee:
579
+ email_intro: Hallinnointikäyttäjä on myöntänyt sinulle luottamushenkilön tehtävän kohteessa %{resource_name}. Sinun tulee luoda julkinen tunnistusavain <a href='%{trustee_zone_url}'>omalla luottamushenkilöiden alueellasi</a>
580
+ email_outro: Tämä ilmoitus on lähetetty sinulle, koska sinulle on myönnettu luottamushenkilön tehtävä kohteessa %{resource_name}.
581
+ email_subject: Olet luottamushenkilö kohteessa %{resource_name}.
582
+ notification_title: Olet luottamushenkilö kohteessa <a href="%{participatory_space_url}">%{resource_name}</a>.
583
+ votes:
584
+ accepted_votes:
585
+ email_intro: 'Äänesi hyväksyttiin! Voit <a href="%{verify_url}">tarkastaa äänesi täältä</a> käyttäen äänestystunnustasi: %{encrypted_vote_hash}.'
586
+ email_outro: Tämä ilmoitus on lähetetty sinulle, koska äänestit vaaleissa %{resource_name}.
587
+ email_subject: Äänesi vaaleihin %{resource_name} hyväksyttiin.
588
+ notification_title: 'Äänesi hyväksyttiin. Voit <a href="%{verify_url}">tarkastaa äänesi täältä</a> käyttäen äänestystunnustasi: %{encrypted_vote_hash}'
589
+ votings:
590
+ polling_officers:
591
+ polling_station_assigned:
592
+ email_intro: Sinulle on määritetty rooli %{role} äänestyspaikalla %{polling_station_name} osiossa <a href="%{resource_url}">%{resource_title}</a>. Voit hallinnoida äänestyspaikkaa <a href="%{polling_officer_zone_url}">äänestysvirkailijoille määritetyssä osiossa</a>.
593
+ email_outro: Tämä ilmoitus on lähetetty sinulle, koska sinulle on myönnettu rooli %{role} äänestyspaikalle %{polling_station_name}.
594
+ email_subject: Roolisi äänestyspaikalla %{polling_station_name} on %{role}.
595
+ notification_title: Roolisi äänestyspaikan %{polling_station_name} äänestyksessä <a href="%{resource_path}">%{resource_title}</a> on %{role}.
596
+ help:
597
+ participatory_spaces:
598
+ votings:
599
+ contextual: "<p><strong>Äänestys</strong> on osallistumistila, jossa voit kysyä selkeitä kysymyksiä kaikilta organisaation ihmisiltä, päättää äänestykseen osallistumisesta sekä kannustaa ja järjestää keskusteluita tietyn lopputuloksen puolesta tai sitä vastaan. Kun äänestysaika alkaa, voit äänestää ja julkaista äänestystuloksen.</p> <p>Esimerkkejä: äänestyksiä voidaan järjestää lähes mistä tahansa organisaatioon vaikuttavasta asiasta, kuten nimen tai logon muuttamisesta, päättämisestä laajempaan organisaatioon liittymisestä, strategisen suunnitelman tai työryhmän päätöksen hyväksymisestä tai hylkäämisestä, tai tarvittavien mandaattien määrän päättämisestä.</p>\n"
600
+ page: "<p><strong>Äänestys</strong> on osallistumistila, jossa voit kysyä selkeitä kysymyksiä kaikilta organisaation ihmisiltä, päättää äänestykseen osallistumisesta sekä kannustaa ja järjestää keskusteluita tietyn lopputuloksen puolesta tai sitä vastaan. Kun äänestysaika alkaa, voit äänestää ja julkaista äänestystuloksen.</p> <p>Esimerkkejä: äänestyksiä voidaan järjestää lähes mistä tahansa organisaatioon vaikuttavasta asiasta, kuten nimen tai logon muuttamisesta, päättämisestä laajempaan organisaatioon liittymisestä, strategisen suunnitelman tai työryhmän päätöksen hyväksymisestä tai hylkäämisestä, tai tarvittavien mandaattien määrän päättämisestä.</p>\n"
601
+ title: Mitä ovat äänestykset?
602
+ menu:
603
+ votings: Äänestykset
252
604
  pages:
253
605
  home:
254
606
  statistics:
@@ -256,7 +608,285 @@ fi:
256
608
  participatory_processes:
257
609
  statistics:
258
610
  elections_count: Vaalit
611
+ votings:
612
+ admin:
613
+ content_blocks:
614
+ highlighted_votings:
615
+ max_results: Näytettävien elementtien enimmäismäärä
616
+ landing_page:
617
+ attachments_and_folders:
618
+ name: Äänestyksen liitteet ja kansiot
619
+ description:
620
+ name: Äänestyksen kuvaus
621
+ elections:
622
+ name: Äänestyksen vaalit
623
+ header:
624
+ name: Äänestyksen otsikko
625
+ html_block_1:
626
+ name: Äänestyksen HTML-lohko 1
627
+ html_block_2:
628
+ name: Äänestyksen HTML-lohko 2
629
+ html_block_3:
630
+ name: Äänestyksen HTML-lohko 3
631
+ metrics:
632
+ name: Äänestyksen tilastomittarit
633
+ polling_stations:
634
+ name: Äänestyspaikat
635
+ stats:
636
+ name: Äänestyksen tilastot
637
+ timeline:
638
+ name: Äänestyksen aikajana
639
+ index:
640
+ not_published: Julkaisematon
641
+ published: Julkaistu
642
+ landing_page:
643
+ content_blocks:
644
+ edit:
645
+ update: Päivitä
646
+ edit:
647
+ active_content_blocks: Aktiiviset sisältölohkot
648
+ inactive_content_blocks: Käytöstä poistetut sisältölohkot
649
+ menu:
650
+ votings: Äänestykset
651
+ votings_submenu:
652
+ attachment_collections: Kansiot
653
+ attachment_files: Tiedostot
654
+ attachments: Liitteet
655
+ components: Komponentit
656
+ info: Tiedot
657
+ landing_page: Laskeutumissivu
658
+ monitoring_committee_members: Tarkkailukomitea
659
+ polling_officers: Äänestysvirkailijat
660
+ polling_stations: Äänestyspaikat
661
+ models:
662
+ monitoring_committee_member:
663
+ fields:
664
+ email: Sähköposti
665
+ name: Nimi
666
+ name: Tarkkailukomitean jäsen
667
+ polling_officer:
668
+ fields:
669
+ email: Sähköposti
670
+ name: Nimi
671
+ polling_station: Äänestyspaikka (rooli)
672
+ name: Äänestysvirkailija
673
+ polling_station:
674
+ fields:
675
+ address: Osoite
676
+ polling_station_managers: Virkailijat
677
+ polling_station_president: Esimies
678
+ title: Otsikko
679
+ name: Äänestyspaikka
680
+ voting:
681
+ fields:
682
+ created_at: Luonnin ajankohta
683
+ promoted: Korostettu
684
+ published: Julkaistu
685
+ title: Otsikko
686
+ monitoring_committee_members:
687
+ create:
688
+ invalid: Tarkkailukomitean jäsenen luonti epäonnistui
689
+ success: Tarkkailukomitean jäsenen luonti onnistui
690
+ destroy:
691
+ invalid: Tarkkailukomitean jäsenen poistaminen epäonnistui
692
+ success: Tarkkailukomitean jäsenen poistaminen onnistui
693
+ form:
694
+ existing_user: Olemassa oleva osallistuja
695
+ non_user: Kutsu uusi osallistuja
696
+ select_user: Etsi nimellä, sähköpostilla tai nimimerkillä
697
+ user_type: Osallistujan tyyppi
698
+ index:
699
+ title: Tarkkailukomitea
700
+ new:
701
+ create: Luo
702
+ title: Luo tarkkailukomitean jäsen
703
+ polling_officers:
704
+ create:
705
+ invalid: Äänestysvirkailijan luonti epäonnistui
706
+ success: Äänestysvirkailijan luonti onnistui
707
+ destroy:
708
+ invalid: Äänestysvirkailijan poistaminen epäonnistui
709
+ success: Äänestysvirkailijan poistaminen onnistui
710
+ form:
711
+ existing_user: Olemassa oleva osallistuja
712
+ non_user: Kutsu uusi osallistuja
713
+ select_user: Etsi nimellä, sähköpostilla tai nimimerkillä
714
+ user_type: Osallistujan tyyppi
715
+ index:
716
+ role_manager: virkailija
717
+ role_president: esimies
718
+ title: Äänestysvirkailijat
719
+ new:
720
+ create: Luo
721
+ title: Luo äänestysvirkailija
722
+ polling_officers_picker:
723
+ choose_polling_officers: Valitse äänestysvirkailijat
724
+ close: Sulje
725
+ more_polling_officers: Virkailijoita on vielä %{number} kpl lisää. Muuta hakuehtoja löytääksesi ne.
726
+ no_polling_officers: Yksikään äänestysvirkailija ei vastaa hakuehtojasi tai yhtään äänestysvirkailijaa ei vielä ole määritetty.
727
+ polling_stations:
728
+ create:
729
+ invalid: Äänestyspaikan luonti epäonnistui
730
+ success: Äänestyspaikan luonti onnistui
731
+ destroy:
732
+ invalid: Äänestyspaikan poistaminen epäonnistui
733
+ success: Äänestyspaikan poistaminen onnistui
734
+ edit:
735
+ title: Muokkaa äänestyspaikkaa
736
+ update: Päivitä äänestyspaikkaa
737
+ form:
738
+ address_help: 'Osoite: käytetään geokoodauksessa sijainnin löytämiseen'
739
+ location_help: 'Sijaintitieto: äänestäjille näytettävä viesti, jolla selvennetään äänestyspaikan tarkkaa sijaintia'
740
+ location_hints_help: 'Sijainnin lisätiedot: sijaintia tarkentava lisätieto. Esimerkiksi: äänestyspaikan kerros rakennuksessa.'
741
+ polling_station_managers_help: 'Äänestyspaikan virkailijat: ne virkailijat, jotka hallinnoivat äänestyspaikkaa. Tarkasta, että virkailijat on jo luotu Äänestysvirkailijat-osiossa ja heitä ei ole määrätty mihinkään muuhun äänestyspaikkaan'
742
+ polling_station_president_help: 'Äänestyspaikan esimies: se virkailija, joka toimii äänestyspaikan esimiehenä. Tarkasta, että virkailija on jo luotu Äänestysvirkailijat-osiossa ja häntä ei ole määrätty mihinkään muuhun äänestyspaikkaan'
743
+ select_president: Valitse äänestysvirkailija äänestyspaikan esimieheksi
744
+ index:
745
+ title: Äänestyspaikat
746
+ new:
747
+ create: Luo
748
+ title: Luo äänestyspaikka
749
+ update:
750
+ invalid: Äänestyspaikan luonti epäonnistui
751
+ success: Äänestyspaikan päivitys onnistui
752
+ titles:
753
+ votings: Äänestykset
754
+ votings:
755
+ actions:
756
+ confirm_destroy: Oletko varma?
757
+ destroy: Tuhoa
758
+ new_voting: Uusi äänestystila
759
+ publish: Julkaise
760
+ unpublish: Lopeta julkaisu
761
+ create:
762
+ invalid: Äänestyksen luonti epäonnistui
763
+ success: Äänestyksen luonti onnistui
764
+ edit:
765
+ add_election_component: Tälle äänestykselle ei ole määritetty vaalia. Lisää vaali Komponentit-osiosta
766
+ assign_missing_officers: Joillekin äänestyspaikoille ei ole määrätty esimiehiä ja/tai virkailijoita. Määritä virkailijat Äänestyspaikat-osiosta
767
+ update: Päivitä
768
+ form:
769
+ select_a_voting_type: Valitse äänestystapa
770
+ slug_help: 'URL-tunnisteita käytetään luomaan URL-osoitteita, jotka viittaavat tähän äänestykseen. Hyväksyy vain kirjaimet, numerot ja viivat. Kirjaimen on oltava ensimmäinen merkki tunnisteessa. Esimerkki: %{url}'
771
+ title: Otsikko
772
+ voting_type:
773
+ hybrid: Yhdistetty äänestystapa
774
+ in_person: Fyysinen äänestys
775
+ online: Verkkoäänestys
776
+ new:
777
+ create: Luo
778
+ title: Uusi äänestys
779
+ publish:
780
+ success: Äänestyksen julkaisu onnistui
781
+ unpublish:
782
+ success: Äänestyksen julkaisun lopetus onnistui
783
+ update:
784
+ invalid: Äänestyksen päivitys epäonnistui
785
+ success: Äänestyksen päivitys onnistui
786
+ admin_log:
787
+ voting:
788
+ create: "%{user_name} loi äänestyksen %{resource_name}"
789
+ publish: "%{user_name} julkaisi äänestyksen %{resource_name}"
790
+ unpublish: "%{user_name} lopetti äänestyksen %{resource_name} julkaisun"
791
+ content_blocks:
792
+ highlighted_votings:
793
+ name: Korostetut äänestykset
794
+ monitoring_committee_members:
795
+ actions:
796
+ confirm_destroy: Oletko varma?
797
+ destroy: Poista
798
+ new: Uusi jäsen
799
+ title: Toiminnot
800
+ pages:
801
+ home:
802
+ highlighted_votings:
803
+ active_votings: Aktiiviset äänestykset
804
+ see_all_votings: Näytä kaikki äänestykset
805
+ votings_button_title: Linkki kaikkien äänestysten sivulle
806
+ polling_officer_zone:
807
+ menu:
808
+ polling_officer_zone: Äänestysvirkailijoiden alue
809
+ polling_officers:
810
+ show:
811
+ actions:
812
+ count_votes: Laske vaaliuurnan äänet
813
+ identify_person: Tunnista ja varmenna henkilö
814
+ polling_officer_role_description: Sinulle on annettu tehtäväksi toimia äänestyspaikan virkailijana (esimiehenä tai muuna virkailijana) tällä alustalla järjestettävissä vaaleissa.
815
+ polling_stations:
816
+ list:
817
+ actions: Toiminnot
818
+ address: Osoite
819
+ name: Nimi
820
+ role: Roolisi
821
+ voting: Äänestys
822
+ no_polling_stations: Sinua ei ole vielä liitetty millekään äänestyspaikalle.
823
+ title: Äänestyspaikat
824
+ polling_officers:
825
+ actions:
826
+ confirm_destroy: Oletko varma?
827
+ destroy: Poista
828
+ new: Uusi
829
+ title: Toiminnot
830
+ roles:
831
+ manager: Virkailija
832
+ president: Esimies
833
+ unassigned: Ei määritetty
834
+ polling_stations:
835
+ actions:
836
+ confirm_destroy: Oletko varma?
837
+ destroy: Poista
838
+ edit: Muokkaa
839
+ new: Uusi
840
+ title: Toiminnot
841
+ votings:
842
+ count:
843
+ title:
844
+ one: "%{count} äänestys"
845
+ other: "%{count} äänestystä"
846
+ filters:
847
+ active: Aktiiviset
848
+ all: Kaikki
849
+ finished: Päättyneet
850
+ search: Hae
851
+ state: Tila
852
+ upcoming: Tulevat
853
+ filters_small_view:
854
+ close_modal: Sulje ikkuna
855
+ filter: Suodata
856
+ filter_by: Suodata
857
+ unfold: Avaa
858
+ index:
859
+ no_votings: Hakuehdoillasi ei löytynyt yhtään äänestystä.
860
+ only_finished: Tällä hetkellä ei ole yhtään ajastettua äänestystä, mutta täältä näet kaikki päättyneet äänestykset.
861
+ title: Äänestykset
862
+ orders:
863
+ label: 'Järjestä äänestykset:'
864
+ random: Satunnainen
865
+ recent: Viimeisimmät
866
+ show:
867
+ dates: Päivämäärät
868
+ votings_m:
869
+ badge_name:
870
+ finished: Päättynyt
871
+ ongoing: Käynnissä
872
+ upcoming: Tulossa
873
+ footer_button_text:
874
+ participate: Osallistu
875
+ view: Näytä
876
+ vote: Äänestä
877
+ unspecified: Ei määritetty
878
+ voting_type:
879
+ hybrid: Yhdistetty äänestystapa
880
+ in_person: Fyysinen äänestys
881
+ online: Verkkoäänestys
882
+ voting_types_label: Äänestystapa
259
883
  layouts:
260
884
  decidim:
261
885
  election_votes_header:
262
886
  exit: Poistu
887
+ votings:
888
+ index:
889
+ promoted_votings: Korostetut äänestykset
890
+ promoted_voting:
891
+ more_info: Lisätiedot
892
+ vote: Äänestä