decidim-elections 0.26.2 → 0.26.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/votings/content_blocks/highlighted_votings/show.erb +1 -1
  3. data/app/cells/decidim/votings/content_blocks/highlighted_votings_cell.rb +1 -0
  4. data/app/cells/decidim/votings/content_blocks/landing_page/description/show.erb +1 -1
  5. data/app/cells/decidim/votings/content_blocks/landing_page/header/show.erb +2 -2
  6. data/app/commands/decidim/elections/admin/create_question.rb +0 -1
  7. data/app/commands/decidim/elections/admin/setup_election.rb +3 -1
  8. data/app/commands/decidim/elections/admin/update_question.rb +0 -1
  9. data/app/forms/decidim/elections/admin/question_form.rb +0 -2
  10. data/app/forms/decidim/elections/admin/setup_form.rb +43 -0
  11. data/app/models/decidim/elections/election.rb +2 -2
  12. data/app/models/decidim/elections/question.rb +1 -1
  13. data/app/packs/src/decidim/elections/admin/pending_action.js +2 -0
  14. data/app/packs/src/decidim/elections/admin/trustees_process.js +2 -0
  15. data/app/packs/src/decidim/elections/broken_promises_handler.js +11 -0
  16. data/app/packs/src/decidim/elections/trustee/key_ceremony.js +3 -0
  17. data/app/packs/src/decidim/elections/trustee/tally.js +3 -0
  18. data/app/packs/src/decidim/elections/voter/casting-vote.js +3 -0
  19. data/app/packs/src/decidim/elections/voter/setup-vote.js +9 -0
  20. data/app/packs/src/decidim/votings/in-person-vote.js +3 -0
  21. data/app/views/decidim/elections/admin/questions/_form.html.erb +0 -4
  22. data/app/views/decidim/elections/admin/steps/_create_election.html.erb +14 -1
  23. data/app/views/decidim/elections/admin/steps/index.html.erb +2 -0
  24. data/app/views/decidim/elections/shared/_broken_promises_modal.html.erb +33 -0
  25. data/app/views/decidim/elections/trustee_zone/elections/show.html.erb +3 -0
  26. data/app/views/decidim/elections/votes/_server_error_modal.html.erb +28 -0
  27. data/app/views/decidim/elections/votes/_show_casting.html.erb +2 -0
  28. data/app/views/decidim/elections/votes/new.html.erb +3 -0
  29. data/app/views/decidim/votings/polling_officer_zone/in_person_votes/new.html.erb +2 -0
  30. data/app/views/decidim/votings/polling_officer_zone/in_person_votes/show.html.erb +2 -0
  31. data/app/views/decidim/votings/votings/_promoted_voting.html.erb +1 -1
  32. data/config/locales/ar.yml +0 -2
  33. data/config/locales/ca.yml +21 -2
  34. data/config/locales/cs.yml +25 -6
  35. data/config/locales/de.yml +33 -3
  36. data/config/locales/el.yml +0 -1
  37. data/config/locales/en.yml +21 -2
  38. data/config/locales/es-MX.yml +21 -2
  39. data/config/locales/es-PY.yml +21 -2
  40. data/config/locales/es.yml +21 -2
  41. data/config/locales/eu.yml +2 -2
  42. data/config/locales/fi-plain.yml +21 -2
  43. data/config/locales/fi.yml +21 -2
  44. data/config/locales/fr-CA.yml +22 -3
  45. data/config/locales/fr.yml +21 -2
  46. data/config/locales/ga-IE.yml +3 -0
  47. data/config/locales/gl.yml +2 -1
  48. data/config/locales/hu.yml +6 -1
  49. data/config/locales/it.yml +2 -2
  50. data/config/locales/ja.yml +21 -2
  51. data/config/locales/lt.yml +1427 -0
  52. data/config/locales/lv.yml +0 -1
  53. data/config/locales/nl.yml +2 -2
  54. data/config/locales/no.yml +3 -2
  55. data/config/locales/oc-FR.yml +1 -0
  56. data/config/locales/pl.yml +7 -2
  57. data/config/locales/pt-BR.yml +2 -2
  58. data/config/locales/pt.yml +2 -2
  59. data/config/locales/ro-RO.yml +2 -2
  60. data/config/locales/sv.yml +52 -1
  61. data/config/locales/tr-TR.yml +3 -1
  62. data/config/locales/zh-CN.yml +3 -1
  63. data/db/migrate/20220615102642_remove_description_from_elections_questions.rb +7 -0
  64. data/lib/decidim/api/election_question_type.rb +0 -1
  65. data/lib/decidim/elections/component.rb +0 -12
  66. data/lib/decidim/elections/test/factories.rb +0 -1
  67. data/lib/decidim/elections/version.rb +1 -1
  68. metadata +17 -12
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f8219848da3b47bb1de74d7c35c5d9f2f1b98ee394a1d9e07201cfc3760e8650
4
- data.tar.gz: 8c2a725b532393fc5ddbdcbc2db2e320ce288e3b067e22524277097409f1ffa5
3
+ metadata.gz: 79cbe0a072815eeb089fe22866c15107b9dd0f68e6a3a3cc3c45471f7186777c
4
+ data.tar.gz: d67f9a69166f20546353b2b40d7a19ce08a59f4837fde321d2c369c7c9a9ab3f
5
5
  SHA512:
6
- metadata.gz: 668655440f14e989272e753a90332751b8d10ed8b8b63a7b0cbd14ef1fde3f4e79edaf9d6f499f00318ba1862ef1be157a7407806d30ed60dd2d274299f70968
7
- data.tar.gz: 82341a653e8ee97716326601b815ce8d6f90811b94b92e057f1ae4983614d835253e5b3d6d59671c7ccd76d8d18db28bb3505aac69b750bedbba96bb688442e0
6
+ metadata.gz: b2ef4df36d4b64aa1f6d26d01716d39ce15511c1c4c70be51c86830f29c43d4d854ab2b1a5d3f2fd38ee0f8f9c31d0c9542497b86cc261030cdb8278b739aa34
7
+ data.tar.gz: 6da057cd74be00affe5622b0b6de4be710838768b0ec778596bf8588b166d5a4c6ca8357563b396f62169a49c8a4449bfb7a9e653eceeecd21fdbfe65157210a
@@ -8,7 +8,7 @@
8
8
  <div class="column">
9
9
  <%= link_to decidim_votings.voting_path(voting), class: "card card--voting card--mini" do %>
10
10
  <div aria-hidden="true" class="card__image-top"
11
- style="background-image:url(<%= voting.attached_uploader(:banner_image).path %>)"></div>
11
+ style="background-image:url('<%= voting.attached_uploader(:banner_image).path %>')"></div>
12
12
  <div class="card__content">
13
13
  <span class="card__title card__link"><%= translated_attribute voting.title %></span>
14
14
  </div>
@@ -37,6 +37,7 @@ module Decidim
37
37
  def cache_hash
38
38
  hash = []
39
39
  hash.push(I18n.locale)
40
+ hash.push(highlighted_votings.map(&:cache_key_with_version))
40
41
  hash.join(Decidim.cache_key_separator)
41
42
  end
42
43
  end
@@ -1,4 +1,4 @@
1
- <div class="row section voting-description-cell">
1
+ <div class="row section voting-description-cell mt-m">
2
2
  <div class="columns">
3
3
  <% if introductory_image.attached? %>
4
4
  <div id="introductory-image" class="columns medium-4 mediumlarge-5">
@@ -1,4 +1,4 @@
1
- <section class="extended hero" style="background-image:url(<%= current_participatory_space.attached_uploader(:banner_image).path %>);">
1
+ <section class="extended hero" style="background-image:url('<%= current_participatory_space.attached_uploader(:banner_image).path %>');">
2
2
  <div class="hero__container">
3
3
  <div class="row">
4
4
  <div class="columns large-10 text-left">
@@ -24,6 +24,6 @@
24
24
  </div>
25
25
  </section>
26
26
 
27
- <section class="section">
27
+ <section>
28
28
  <%= extended_navigation_bar(navigation_items) %>
29
29
  </section>
@@ -30,7 +30,6 @@ module Decidim
30
30
  attributes = {
31
31
  election: form.election,
32
32
  title: form.title,
33
- description: form.description,
34
33
  max_selections: form.max_selections,
35
34
  weight: form.weight,
36
35
  random_answers_order: form.random_answers_order,
@@ -94,7 +94,9 @@ module Decidim
94
94
  weight: question.weight,
95
95
  max_selections: question.max_selections,
96
96
  title: flatten_translations(question.title),
97
- description: flatten_translations(question.description),
97
+ # the bulletin_board gem (ruby client) expects a description for the question
98
+ # as development is in a separate repository, let's send an empty content for the moment
99
+ description: {},
98
100
  answers: question_answers_data(question)
99
101
  }
100
102
  end
@@ -33,7 +33,6 @@ module Decidim
33
33
  def update_question!
34
34
  attributes = {
35
35
  title: form.title,
36
- description: form.description,
37
36
  max_selections: form.max_selections,
38
37
  weight: form.weight,
39
38
  random_answers_order: form.random_answers_order,
@@ -8,14 +8,12 @@ module Decidim
8
8
  include TranslatableAttributes
9
9
 
10
10
  translatable_attribute :title, String
11
- translatable_attribute :description, String
12
11
  attribute :max_selections, Integer, default: 1
13
12
  attribute :weight, Integer, default: 0
14
13
  attribute :random_answers_order, Boolean, default: true
15
14
  attribute :min_selections, Integer, default: 1
16
15
 
17
16
  validates :title, translatable_presence: true
18
- validates :description, translatable_presence: true
19
17
  validates :max_selections, presence: true, numericality: { greater_than_or_equal_to: 1 }
20
18
 
21
19
  def election
@@ -13,6 +13,12 @@ module Decidim
13
13
  validations.each do |message, t_args, valid|
14
14
  errors.add(message, I18n.t("steps.create_election.errors.#{message}", **t_args, scope: "decidim.elections.admin")) unless valid
15
15
  end
16
+
17
+ if needs_census?
18
+ census_validations.each do |message, t_args, valid|
19
+ errors.add(message, I18n.t("steps.create_election.errors.#{message}", **t_args, scope: "decidim.elections.admin")) unless valid
20
+ end
21
+ end
16
22
  end
17
23
 
18
24
  def current_step; end
@@ -34,17 +40,34 @@ module Decidim
34
40
  [:minimum_answers, {}, election.minimum_answers?],
35
41
  [:max_selections, {}, election.valid_questions?],
36
42
  [:published, {}, election.published_at.present?],
43
+ [:component_published, {}, election.component.published?],
37
44
  [:time_before, { hours: Decidim::Elections.setup_minimum_hours_before_start }, election.minimum_hours_before_start?],
38
45
  [:trustees_number, { number: bulletin_board.number_of_trustees }, participatory_space_trustees_with_public_key.size >= bulletin_board.number_of_trustees]
39
46
  ].freeze
40
47
  end
41
48
 
49
+ def census_validations
50
+ return [] unless needs_census?
51
+
52
+ @census_validations ||= [
53
+ [:census_uploaded, {}, census.present? && census.data.exists?],
54
+ [:census_codes_generated, {}, census_codes_generated?],
55
+ [:census_frozen, {}, census&.freeze?]
56
+ ].freeze
57
+ end
58
+
42
59
  def messages
43
60
  @messages ||= validations.map do |message, t_args, _valid|
44
61
  [message, I18n.t("steps.create_election.requirements.#{message}", **t_args, scope: "decidim.elections.admin")]
45
62
  end.to_h
46
63
  end
47
64
 
65
+ def census_messages
66
+ @census_messages ||= census_validations.to_h do |message, t_args, _valid|
67
+ [message, I18n.t("steps.create_election.requirements.#{message}", **t_args, scope: "decidim.elections.admin")]
68
+ end
69
+ end
70
+
48
71
  def participatory_space_trustees
49
72
  @participatory_space_trustees ||= Decidim::Elections::Trustees::ByParticipatorySpace.new(election.component.participatory_space).to_a
50
73
  end
@@ -57,6 +80,26 @@ module Decidim
57
80
  @bulletin_board ||= context[:bulletin_board] || Decidim::Elections.bulletin_board
58
81
  end
59
82
 
83
+ def needs_census?
84
+ vote_flow.is_a?(Decidim::Votings::CensusVoteFlow)
85
+ end
86
+
87
+ def vote_flow
88
+ @vote_flow ||= election.participatory_space.try(:vote_flow_for, election)
89
+ end
90
+
91
+ def census_codes_generated?
92
+ return unless needs_census?
93
+
94
+ census&.codes_generated? || census&.exporting_codes? || census&.freeze?
95
+ end
96
+
97
+ def census
98
+ return unless needs_census?
99
+
100
+ @census ||= election.component.participatory_space.dataset
101
+ end
102
+
60
103
  def main_button?
61
104
  true
62
105
  end
@@ -86,7 +86,7 @@ module Decidim
86
86
  #
87
87
  # Returns a boolean.
88
88
  def minimum_answers?
89
- questions.all? { |question| question.answers.size > 1 }
89
+ questions.any? && questions.all? { |question| question.answers.size > 1 }
90
90
  end
91
91
 
92
92
  # Public: Checks if the election results are published and election finished
@@ -107,7 +107,7 @@ module Decidim
107
107
  #
108
108
  # Returns a boolean.
109
109
  def valid_questions?
110
- questions.all?(&:valid_max_selection?)
110
+ questions.any? && questions.all?(&:valid_max_selection?)
111
111
  end
112
112
 
113
113
  # Public: Gets the voting period status of the election
@@ -3,7 +3,7 @@
3
3
  module Decidim
4
4
  module Elections
5
5
  # The data store for a Question in the Decidim::Elections component. It stores a
6
- # title, description and a maximum number of selection that voters can choose.
6
+ # title and a maximum number of selection that voters can choose.
7
7
  class Question < ApplicationRecord
8
8
  include Decidim::Resourceable
9
9
  include Traceable
@@ -1,3 +1,5 @@
1
+ // show a message to the user if comunication is lost
2
+ import "src/decidim/elections/broken_promises_handler";
1
3
  import { Client } from "@decidim/decidim-bulletin_board";
2
4
 
3
5
  $(() => {
@@ -1,3 +1,5 @@
1
+ // show a message to the user if comunication is lost
2
+ import "src/decidim/elections/broken_promises_handler";
1
3
  import {
2
4
  Client,
3
5
  Election,
@@ -0,0 +1,11 @@
1
+ /* Fallback for non-handled failed promises */
2
+ window.addEventListener("unhandledrejection", (event) => {
3
+ console.log("broken", event)
4
+ $("#server-failure .tech-info").html(event.reason);
5
+ if (event.reason.toString().indexOf("fetch") === -1) {
6
+ $("#server-failure .communication_error").addClass("hide");
7
+ $("#server-failure .generic_error").removeClass("hide");
8
+ }
9
+ $("#server-failure").foundation("open");
10
+ });
11
+
@@ -1,3 +1,6 @@
1
+ // show a message to the user if comunication is lost
2
+ import "src/decidim/elections/broken_promises_handler";
3
+
1
4
  import {
2
5
  KeyCeremonyComponent,
3
6
  MessageIdentifier,
@@ -1,3 +1,6 @@
1
+ // show a message to the user if comunication is lost
2
+ import "src/decidim/elections/broken_promises_handler";
3
+
1
4
  import {
2
5
  TallyComponent,
3
6
  IdentificationKeys,
@@ -1,3 +1,6 @@
1
+ // show a message to the user if comunication is lost
2
+ import "src/decidim/elections/broken_promises_handler";
3
+
1
4
  import { Client } from "@decidim/decidim-bulletin_board";
2
5
 
3
6
  $(async () => {
@@ -1,5 +1,7 @@
1
1
  /* eslint-disable require-jsdoc */
2
2
 
3
+ // show a message to the user if comunication is lost
4
+ import "src/decidim/elections/broken_promises_handler";
3
5
  import { VoteComponent } from "@decidim/decidim-bulletin_board";
4
6
 
5
7
  import * as VotingSchemesDummy from "@decidim/voting_schemes-dummy";
@@ -46,5 +48,12 @@ export default function setupVoteComponent($voteWrapper) {
46
48
  });
47
49
  }
48
50
 
51
+ /* Fallback for non-handled failed promises */
52
+ window.addEventListener("unhandledrejection", (event) => {
53
+ $("#server-failure .tech-info").html(event.reason);
54
+ $("#server-failure").foundation("open");
55
+ });
56
+
49
57
  window.Decidim = window.Decidim || {};
50
58
  window.Decidim.setupVoteComponent = setupVoteComponent;
59
+
@@ -1,3 +1,6 @@
1
+ // show a message to the user if comunication is lost
2
+ import "src/decidim/elections/broken_promises_handler";
3
+
1
4
  import { Client } from "@decidim/decidim-bulletin_board";
2
5
 
3
6
  $(async () => {
@@ -8,10 +8,6 @@
8
8
  <%= form.translated :text_field, :title, autofocus: true %>
9
9
  </div>
10
10
 
11
- <div class="row column">
12
- <%= form.translated :editor, :description %>
13
- </div>
14
-
15
11
  <div class="row column">
16
12
  <%= form.number_field :max_selections, step: 1, min: 0 %>
17
13
  </div>
@@ -14,10 +14,23 @@
14
14
  <% end %>
15
15
  </ul>
16
16
 
17
+ <% if form.needs_census? %>
18
+ <h4><%= t(".census") %></h4>
19
+ <ul class="no-bullet-indented">
20
+ <% form.census_messages.each do |key, value| %>
21
+ <% if form.errors.include?(key) %>
22
+ <li><%= icon "x", class: "text-alert", role: "img", "aria-hidden": true %>&nbsp;<%= form.errors.messages[key][0].html_safe %></li>
23
+ <% else %>
24
+ <li><%= icon "check", class: "text-success", role: "img", "aria-hidden": true %>&nbsp;<%= value.html_safe %></li>
25
+ <% end %>
26
+ <% end %>
27
+ </ul>
28
+ <% end %>
29
+
17
30
  <h4><%= t(".trustees") %></h4>
18
31
  <ul class="no-bullet-indented">
19
32
  <% if form.participatory_space_trustees.none? %>
20
- <li><%= t(".no_trustees") %></li>
33
+ <li><%= icon "x", class: "text-alert", role: "img", "aria-hidden": true %>&nbsp;<%= t(".no_trustees") %></li>
21
34
  <% end %>
22
35
 
23
36
  <% form.participatory_space_trustees.map {|trustee| [trustee, form.trustees.none? || form.trustees.include?(trustee)] }
@@ -43,3 +43,5 @@
43
43
  <%= render partial: current_step.to_s %>
44
44
  </div>
45
45
  <% end %>
46
+
47
+ <%= render "decidim/elections/shared/broken_promises_modal" %>
@@ -0,0 +1,33 @@
1
+ <% i18n_scope ||= "decidim.elections.connection.failed" %>
2
+
3
+ <div class="reveal" id="server-failure" data-reveal>
4
+ <div class="reveal__header">
5
+ <h3 class="reveal__title">
6
+ <%= t("modal.title", scope: i18n_scope) %>
7
+ </h3>
8
+
9
+ <button class="close-button" data-close aria-label="<%= t("modal.close", scope: i18n_scope) %>"
10
+ type="button">
11
+ <span aria-hidden="true">&times;</span>
12
+ </button>
13
+ </div>
14
+
15
+ <div class="row">
16
+ <p class="communication_error">
17
+ <%= t("modal.communication_lost", scope: i18n_scope).html_safe %>
18
+ </p>
19
+ <p class="generic_error hide">
20
+ <%= t("modal.generic_error", scope: i18n_scope).html_safe %>
21
+ </p>
22
+
23
+ <p class="help-text tech-info"></p>
24
+ </div>
25
+
26
+ <div class="row">
27
+ <div class="column flex-center">
28
+ <button class="button primary expanded" data-close type="button">
29
+ <%= t("modal.close", scope: i18n_scope) %>
30
+ </button>
31
+ </div>
32
+ </div>
33
+ </div>
@@ -18,5 +18,8 @@
18
18
  <%= render("#{current_step}_steps") %>
19
19
  </div>
20
20
 
21
+ <%= render "decidim/elections/shared/broken_promises_modal" %>
22
+
21
23
  <%= javascript_pack_tag "decidim_elections_trustee_#{current_step}" %>
24
+
22
25
  <% end %>
@@ -0,0 +1,28 @@
1
+ <div class="reveal" id="server-failure" data-reveal>
2
+ <div class="reveal__header">
3
+ <h3 class="reveal__title">
4
+ <%= t("modal.title", scope: "decidim.elections.votes.failed") %>
5
+ </h3>
6
+
7
+ <button class="close-button" data-close aria-label="<%= t("modal.close", scope: "decidim.elections.votes.failed") %>"
8
+ type="button">
9
+ <span aria-hidden="true">&times;</span>
10
+ </button>
11
+ </div>
12
+
13
+ <div class="row">
14
+ <p>
15
+ <%= t("modal.communication_lost", scope: "decidim.elections.votes.failed").html_safe %>
16
+ </p>
17
+
18
+ <p class="help-text tech-info"></p>
19
+ </div>
20
+
21
+ <div class="row">
22
+ <div class="column flex-center">
23
+ <button class="button primary expanded" data-close type="button">
24
+ <%= t("modal.close", scope: "decidim.elections.votes.failed") %>
25
+ </button>
26
+ </div>
27
+ </div>
28
+ </div>
@@ -22,4 +22,6 @@
22
22
  <%= form_tag election_vote_path(election, id: vote.encrypted_vote_hash), method: :patch, class: "update_vote_status" %>
23
23
  </div>
24
24
 
25
+ <%= render "decidim/elections/shared/broken_promises_modal" %>
26
+
25
27
  <%= javascript_pack_tag "decidim_elections_voter_casting_vote" %>
@@ -59,9 +59,12 @@
59
59
  </div>
60
60
  </div>
61
61
 
62
+ <%= render "decidim/elections/shared/broken_promises_modal" %>
63
+
62
64
  <% if preview_mode? %>
63
65
  <%= javascript_pack_tag "decidim_elections_voter_setup_preview" %>
64
66
  <% else %>
65
67
  <%= javascript_pack_tag "decidim_elections_voter_setup_vote" %>
66
68
  <% end %>
69
+
67
70
  <%= javascript_pack_tag "decidim_elections_voter_new_vote" %>
@@ -18,4 +18,6 @@
18
18
  <% end %>
19
19
  </div>
20
20
 
21
+ <%= render "decidim/elections/shared/broken_promises_modal" %>
22
+
21
23
  <%= javascript_pack_tag "decidim_votings_in_person_vote" %>
@@ -22,4 +22,6 @@
22
22
  <%= form_tag polling_officer_election_in_person_vote_path(polling_officer, election, in_person_vote), method: :patch, class: "update_vote_status" %>
23
23
  </div>
24
24
 
25
+ <%= render "decidim/elections/shared/broken_promises_modal" %>
26
+
25
27
  <%= javascript_pack_tag "decidim_votings_in_person_vote" %>
@@ -13,7 +13,7 @@
13
13
  </div>
14
14
  <div class="columns mediumlarge-8 large-6 card--process__column">
15
15
  <div class="card--full__image"
16
- style="background-image:url(<%= promoted_voting.attached_uploader(:banner_image).path %>)">
16
+ style="background-image:url('<%= promoted_voting.attached_uploader(:banner_image).path %>')">
17
17
  <div class="card__content row collapse">
18
18
  <div class="large-6 large-offset-6 columns">
19
19
  <%= link_to voting_path(promoted_voting), class: "button expanded button--sc" do %>
@@ -5,8 +5,6 @@ ar:
5
5
  description: الوصف
6
6
  election:
7
7
  description: الوصف
8
- question:
9
- description: الوصف
10
8
  decidim:
11
9
  elections:
12
10
  admin:
@@ -12,7 +12,6 @@ ca:
12
12
  start_time: La votació comença el
13
13
  title: Títol
14
14
  question:
15
- description: Descripció
16
15
  max_selections: Número màxim d'opcions
17
16
  min_selections: Cap de les opcions anteriors
18
17
  title: Títol
@@ -231,12 +230,17 @@ ca:
231
230
  success: La pregunta s'ha actualitzat correctament
232
231
  steps:
233
232
  create_election:
233
+ census: Cens
234
234
  errors:
235
+ census_codes_generated: No es generen codi electorals per al cens.
236
+ census_frozen: No s'exporten els codis electorals.
237
+ census_uploaded: No s'ha pujat el cens per a aquestes eleccions.
238
+ component_published: L'elecció <strong>no està publicada</strong>.
235
239
  max_selections: Les preguntes no tenen un <strong>valor correcte per quantitat de respostes</strong>
236
240
  minimum_answers: Les preguntes han de tenir <strong>almenys dues respostes</strong>.
237
241
  minimum_questions: L'elecció <strong>ha de tenir almenys una pregunta</strong>.
238
242
  published: L'elecció <strong>no està publicada</strong>.
239
- time_before: L'hora d'inici és en <strong>menys de 3 hores</strong> abans de que comenci l'elecció.
243
+ time_before: L'hora d'inici és en <strong>menys de %{hours} hores </strong> abans de que comenci l'elecció.
240
244
  trustees_number: L'espai de participació <strong>ha de tenir almenys %{number} garants amb clau pública</strong>.
241
245
  invalid: S'ha produït un error en configurar aquesta elecció
242
246
  no_trustees: No hi ha garants configurats per aquest espai de participació
@@ -245,6 +249,10 @@ ca:
245
249
  'false': no té una <strong>clau pública</strong>
246
250
  'true': té una <strong>clau pública</strong>
247
251
  requirements:
252
+ census_codes_generated: Es generen codis de cens.
253
+ census_frozen: Els codis s'exporten i el cens es congela.
254
+ census_uploaded: El cens s'ha pujat.
255
+ component_published: L'elecció està <strong>publicada</strong>.
248
256
  max_selections: Totes les preguntes tenen un valor correcte per <strong>màxim de respostes</strong>.
249
257
  minimum_answers: Cada pregunta té <strong>almenys 2 respostes</strong>.
250
258
  minimum_questions: L'elecció té <strong>almenys 1 pregunta</strong>.
@@ -357,6 +365,13 @@ ca:
357
365
  update: "%{user_name} ha actualitzat l'elecció %{resource_name} a %{space_name}"
358
366
  trustee:
359
367
  create: "%{user_name} ha assignat a la usuària %{trustee_user} com a garant"
368
+ connection:
369
+ failed:
370
+ modal:
371
+ close: Tancar
372
+ communication_lost: Malauradament, sembla que la comunicació amb el servidor de votació (Bulletin Board) s'ha perdut.<br>Pot ser que la connexió a Internet estigui avariada o que el servidor de destí estigui massa ocupat.<br>Pots provar-ho més tard o posar-te en contacte amb el servei d'assistència si aquest problema persisteix.
373
+ generic_error: Malauradament, s'ha produït un error desconegut. És probable que el teu navegador no estigui suportat o que estiguis fent servir el mode "d'incògnit" o "privat" que no són compatibles.
374
+ title: Alguna cosa ha anat malament
360
375
  election_m:
361
376
  badge_name:
362
377
  finished: Acabada
@@ -639,6 +654,10 @@ ca:
639
654
  failed:
640
655
  header: Vot fallit
641
656
  lead: El teu vot no s'ha enviat!
657
+ modal:
658
+ close: Tancar
659
+ communication_lost: Malauradament, sembla que la comunicació amb el servidor de votació (Bulletin Board) s'ha perdut.<br>Pot ser que la connexió a Internet estigui avariada o que el servidor de destí estigui massa ocupat.<br>Pots provar-ho més tard o posar-te en contacte amb el servei d'assistència si aquest problema persisteix.
660
+ title: Alguna cosa ha anat malament
642
661
  text: Alguna cosa ha anat malament. Si us plau, torna-ho a provar.
643
662
  try_again: Prova-ho de nou
644
663
  header:
@@ -12,7 +12,6 @@ cs:
12
12
  start_time: Hlasování začíná v
13
13
  title: Název
14
14
  question:
15
- description: Popis
16
15
  max_selections: Maximální počet výběrů
17
16
  min_selections: Žádná z výše uvedených možností
18
17
  title: Název
@@ -249,12 +248,17 @@ cs:
249
248
  success: Otázka byla úspěšně aktualizována
250
249
  steps:
251
250
  create_election:
251
+ census: Rejstřík obyvatel
252
252
  errors:
253
+ census_codes_generated: Volební kódy pro rejstřík obyvatel nejsou generovány.
254
+ census_frozen: Volební kódy nejsou exportovány.
255
+ census_uploaded: Pro tyto volby není nahrán žádný rejstřík obyvatel.
256
+ component_published: Volební složka <strong>není publikována</strong>.
253
257
  max_selections: Otázky nemají <strong>správnou hodnotu pro množství odpovědí</strong>
254
258
  minimum_answers: Otázky musí mít <strong>alespoň dvě odpovědi</strong>.
255
259
  minimum_questions: Volby <strong>musí mít alespoň jednu otázku</strong>.
256
260
  published: Volby <strong>nejsou publikovány</strong>.
257
- time_before: Počáteční čas je za <strong>méně než 3 hodiny</strong> před zahájením voleb.
261
+ time_before: Čas zahájení je v <strong>méně než %{hours} hodin</strong> před začátkem voleb.
258
262
  trustees_number: Participační prostor <strong>musí mít alespoň %{number} důvěrníků s veřejným klíčem</strong>.
259
263
  invalid: Při zřizování těchto voleb došlo k chybě
260
264
  no_trustees: Pro tento participační prostor nejsou nakonfigurováni žádní důvěrníci
@@ -263,6 +267,10 @@ cs:
263
267
  'false': nemá <strong>veřejný klíč</strong>
264
268
  'true': má <strong>veřejný klíč</strong>
265
269
  requirements:
270
+ census_codes_generated: Vytvářejí se kódy pro rejstřík obyvatel.
271
+ census_frozen: Kódy jsou exportovány a rejstřík obyvatel je zmrazen.
272
+ census_uploaded: Rejstřík obyvatel je nahrán.
273
+ component_published: Volební komponenta je <strong>publikována</strong>.
266
274
  max_selections: Všechny otázky mají správnou hodnotu pro <strong>maximum odpovědí</strong>.
267
275
  minimum_answers: Každá otázka má <strong>alespoň 2 odpovědi</strong>.
268
276
  minimum_questions: Volba má <strong>alespoň jednu otázku</strong>.
@@ -375,6 +383,13 @@ cs:
375
383
  update: "%{user_name} aktualizoval volbu %{resource_name} z %{space_name}"
376
384
  trustee:
377
385
  create: "%{user_name} přiřadil uživatele %{trustee_user} jako důvěrníka"
386
+ connection:
387
+ failed:
388
+ modal:
389
+ close: Zavřít‏
390
+ communication_lost: Bohužel se zdá, že komunikace s hlasovacím serverem (Bulletin Board) je ztracena.<br>Může se stát, že připojení k internetu je přerušeno nebo že cílový server je příliš zaneprázdněný.<br>Pokud tento problém přetrvává, můžete to zkusit později nebo se obraťte na podporu.
391
+ generic_error: Bohužel došlo k neznámé chybě. Je pravděpodobné, že váš prohlížeč není podporován nebo že používáte "incognito" nebo "privátní" režim, který není podporován.
392
+ title: Něco se pokazilo
378
393
  election_m:
379
394
  badge_name:
380
395
  finished: Dokončeno
@@ -629,7 +644,7 @@ cs:
629
644
  back: Zahájit proces hlasování znovu
630
645
  ballot_hash: 'Identifikátor vašeho hlasování:'
631
646
  cast: Uložte hlasování, abyste dokončili vaše hlasování
632
- description: Zde máte možnost odevzdat hlasovací lístek tak, aby byl správně spočítán, nebo případně můžete kontrolovat, zda je vaše hlasování správně šifrované. Z důvodů porušeného zabezpečnení to váš hlasovací lístek může zrušit. To znamená, že abyste mohli hlasovat, budete muset znovu zahájit hlasovací proces.
647
+ description: Zde máte možnost odevzdat hlasovací lístek tak, aby byl správně spočítán, nebo případně můžete kontrolovat, zda je vaše hlasování správně šifrované. Z důvodů porušeného zabezpečení to váš hlasovací lístek může zrušit. To znamená, že abyste mohli hlasovat, budete muset znovu zahájit hlasovací proces.
633
648
  header: 'Hlasovací lístek je šifrovaný: zahlasujte s ním nebo jej auditujte'
634
649
  casting:
635
650
  header: Hlasování...
@@ -659,6 +674,10 @@ cs:
659
674
  failed:
660
675
  header: Hlasování se nezdařilo
661
676
  lead: Váš hlas nebyl odeslán!
677
+ modal:
678
+ close: Zavřít
679
+ communication_lost: Bohužel se zdá, že komunikace s hlasovacím serverem (Bulletin Board) je ztracena.<br>Může se stát, že připojení k internetu je přerušeno nebo že cílový server je příliš zaneprázdněný.<br>Pokud tento problém přetrvává, můžete to zkusit později nebo se obraťte na podporu.
680
+ title: Něco se pokazilo
662
681
  text: Něco se pokazilo, zkuste to prosím znovu.
663
682
  try_again: Zkuste to znovu
664
683
  header:
@@ -697,7 +716,7 @@ cs:
697
716
  header: Hlasování nenalezeno!
698
717
  info: Kód hlasu nebyl nalezen v %{link} volebních urnám, zkuste to znovu.
699
718
  form:
700
- back: Zpět na Deidim
719
+ back: Zpět na Decidim
701
720
  submit: Ověřit
702
721
  vote_identifier: 'Identifikační kód:'
703
722
  header:
@@ -731,7 +750,7 @@ cs:
731
750
  notification_title: Jste důvěrník pro <a href="%{participatory_space_url}">%{resource_name}</a>.
732
751
  votes:
733
752
  accepted_votes:
734
- email_intro: 'Váš hlas byl přijat! Pomocí tvého hlasovacího tokenu: %{encrypted_vote_hash}, můžete ověřit svůj hlas <a href="%{verify_url}">zde</a>.'
753
+ email_intro: 'Váš hlas byl přijat! Pomocí vašeho hlasovacího tokenu: %{encrypted_vote_hash}, můžete ověřit svůj hlas <a href="%{verify_url}">zde</a>.'
735
754
  email_outro: Obdrželi jste toto oznámení, protože jste hlasovali pro hlasování %{resource_name}.
736
755
  email_subject: Váš hlas pro %{resource_name} byl přijat.
737
756
  notification_title: 'Váš hlas byl přijat. Ověřte svůj hlas <a href="%{verify_url}">zde</a> pomocí hlasovacího tokenu: %{encrypted_vote_hash}'
@@ -1021,7 +1040,7 @@ cs:
1021
1040
  promoted: Propagováno
1022
1041
  select_a_voting_type: Vyberte prosím typ hlasování
1023
1042
  slug: Slug
1024
- slug_help: 'URL slugů se používají k generování URL, které odkazují na toto hlasování. přijímá pouze písmena, čísla a pomlčky a musí začínat písmenem. Příklad: %{url}'
1043
+ slug_help: 'URL slug se používá k generování URL, které odkazují na toto hlasování. přijímá pouze písmena, čísla a pomlčky a musí začínat písmenem. Příklad: %{url}'
1025
1044
  title: Název
1026
1045
  voting_type:
1027
1046
  hybrid: Hybridní