decidim-elections 0.26.2 → 0.26.4

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 (76) 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/import_proposals_to_elections.rb +4 -1
  8. data/app/commands/decidim/elections/admin/setup_election.rb +3 -1
  9. data/app/commands/decidim/elections/admin/update_question.rb +0 -1
  10. data/app/controllers/decidim/elections/elections_controller.rb +2 -2
  11. data/app/controllers/decidim/votings/admin/imports_controller.rb +14 -0
  12. data/app/controllers/decidim/votings/votings_controller.rb +2 -2
  13. data/app/forms/decidim/elections/admin/question_form.rb +0 -2
  14. data/app/forms/decidim/elections/admin/setup_form.rb +43 -0
  15. data/app/models/decidim/elections/election.rb +2 -2
  16. data/app/models/decidim/elections/question.rb +1 -1
  17. data/app/packs/src/decidim/elections/admin/pending_action.js +2 -0
  18. data/app/packs/src/decidim/elections/admin/trustees_process.js +2 -0
  19. data/app/packs/src/decidim/elections/broken_promises_handler.js +11 -0
  20. data/app/packs/src/decidim/elections/trustee/key_ceremony.js +3 -0
  21. data/app/packs/src/decidim/elections/trustee/tally.js +3 -0
  22. data/app/packs/src/decidim/elections/voter/casting-vote.js +3 -0
  23. data/app/packs/src/decidim/elections/voter/setup-vote.js +9 -0
  24. data/app/packs/src/decidim/votings/in-person-vote.js +3 -0
  25. data/app/permissions/decidim/votings/admin/permissions.rb +4 -1
  26. data/app/views/decidim/elections/admin/questions/_form.html.erb +0 -4
  27. data/app/views/decidim/elections/admin/steps/_create_election.html.erb +14 -1
  28. data/app/views/decidim/elections/admin/steps/index.html.erb +2 -0
  29. data/app/views/decidim/elections/shared/_broken_promises_modal.html.erb +33 -0
  30. data/app/views/decidim/elections/trustee_zone/elections/show.html.erb +3 -0
  31. data/app/views/decidim/elections/votes/_server_error_modal.html.erb +28 -0
  32. data/app/views/decidim/elections/votes/_show_casting.html.erb +2 -0
  33. data/app/views/decidim/elections/votes/new.html.erb +3 -0
  34. data/app/views/decidim/votings/polling_officer_zone/in_person_votes/new.html.erb +2 -0
  35. data/app/views/decidim/votings/polling_officer_zone/in_person_votes/show.html.erb +2 -0
  36. data/app/views/decidim/votings/votings/_promoted_voting.html.erb +1 -1
  37. data/config/locales/ar.yml +0 -2
  38. data/config/locales/ca.yml +21 -2
  39. data/config/locales/cs.yml +25 -6
  40. data/config/locales/de.yml +33 -3
  41. data/config/locales/el.yml +0 -1
  42. data/config/locales/en.yml +21 -2
  43. data/config/locales/es-MX.yml +21 -2
  44. data/config/locales/es-PY.yml +21 -2
  45. data/config/locales/es.yml +21 -2
  46. data/config/locales/eu.yml +6 -2
  47. data/config/locales/fi-plain.yml +21 -2
  48. data/config/locales/fi.yml +21 -2
  49. data/config/locales/fr-CA.yml +22 -3
  50. data/config/locales/fr.yml +21 -2
  51. data/config/locales/ga-IE.yml +3 -0
  52. data/config/locales/gl.yml +2 -1
  53. data/config/locales/gn-PY.yml +1 -0
  54. data/config/locales/hu.yml +6 -1
  55. data/config/locales/it.yml +2 -2
  56. data/config/locales/ja.yml +21 -2
  57. data/config/locales/lo-LA.yml +1 -0
  58. data/config/locales/lt.yml +1423 -0
  59. data/config/locales/lv.yml +0 -1
  60. data/config/locales/nl.yml +2 -2
  61. data/config/locales/no.yml +3 -2
  62. data/config/locales/oc-FR.yml +1 -0
  63. data/config/locales/pl.yml +7 -2
  64. data/config/locales/pt-BR.yml +2 -2
  65. data/config/locales/pt.yml +2 -2
  66. data/config/locales/ro-RO.yml +2 -2
  67. data/config/locales/sv.yml +52 -1
  68. data/config/locales/tr-TR.yml +3 -1
  69. data/config/locales/zh-CN.yml +3 -1
  70. data/db/migrate/20220615102642_remove_description_from_elections_questions.rb +7 -0
  71. data/lib/decidim/api/election_question_type.rb +0 -1
  72. data/lib/decidim/elections/component.rb +0 -12
  73. data/lib/decidim/elections/test/factories.rb +0 -1
  74. data/lib/decidim/elections/version.rb +1 -1
  75. data/lib/decidim/votings/admin_engine.rb +3 -0
  76. metadata +20 -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: 8ec0e86b7444f64ee3b9a825db1950f6dbfd337abf7ea93ca577d4637225d99d
4
+ data.tar.gz: 2303d3bad0bfc976ee51ba20cd5cc0b4722706f2a7b216cda95d47a1a6c71d63
5
5
  SHA512:
6
- metadata.gz: 668655440f14e989272e753a90332751b8d10ed8b8b63a7b0cbd14ef1fde3f4e79edaf9d6f499f00318ba1862ef1be157a7407806d30ed60dd2d274299f70968
7
- data.tar.gz: 82341a653e8ee97716326601b815ce8d6f90811b94b92e057f1ae4983614d835253e5b3d6d59671c7ccd76d8d18db28bb3505aac69b750bedbba96bb688442e0
6
+ metadata.gz: b74806f59ce7fe4cdb2a78e3a7fe813ff345e0024a01e8cb270e865c2dbd671faef589490a9d7d5393d50ca413c8affe79ef9007861ab5f2db6436033f0ce58f
7
+ data.tar.gz: 2a915f400a8549614a12be707202a991376f1b732bc171b74a27e423b6c1cae88840cb837ce07f55987ef184a32e185d884dd6b0099b35c7c8c2934138a680cc
@@ -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,
@@ -77,7 +77,10 @@ module Decidim
77
77
  end
78
78
 
79
79
  def proposal_already_copied?(original_proposal)
80
- original_proposal.linked_resources(:answers, "related_proposals").any? do |answer|
80
+ # Note: we are including also answers from unpublished components
81
+ # because otherwise duplicates could be created until the component is
82
+ # published.
83
+ original_proposal.linked_resources(:answers, "related_proposals", component_published: false).any? do |answer|
81
84
  answer.question == target_question
82
85
  end
83
86
  end
@@ -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,
@@ -57,8 +57,8 @@ module Decidim
57
57
  end
58
58
 
59
59
  def paginated_elections
60
- @paginated_elections ||= paginate(search.results.published)
61
- @paginated_elections = reorder(@paginated_elections)
60
+ @paginated_elections ||= reorder(search.results.published)
61
+ @paginated_elections = paginate(@paginated_elections)
62
62
  end
63
63
 
64
64
  def scheduled_elections
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Votings
5
+ module Admin
6
+ # This controller allows importing things.
7
+ # It is targeted for customizations for importing things that lives under
8
+ # a voting space.
9
+ class ImportsController < Decidim::Admin::ImportsController
10
+ include VotingAdmin
11
+ end
12
+ end
13
+ end
14
+ end
@@ -129,8 +129,8 @@ module Decidim
129
129
  end
130
130
 
131
131
  def paginated_votings
132
- @paginated_votings ||= paginate(search.results.published)
133
- @paginated_votings = reorder(@paginated_votings)
132
+ @paginated_votings ||= reorder(search.results.published)
133
+ @paginated_votings = paginate(@paginated_votings)
134
134
  end
135
135
 
136
136
  def promoted_votings
@@ -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 () => {
@@ -59,7 +59,8 @@ module Decidim
59
59
  :monitoring_committee_verify_elections,
60
60
  :monitoring_committee_election_result, :monitoring_committee_election_results,
61
61
  :census,
62
- :ballot_style, :ballot_styles
62
+ :ballot_style, :ballot_styles,
63
+ :component_data
63
64
  ].member? permission_action.subject
64
65
 
65
66
  case permission_action.subject
@@ -130,6 +131,8 @@ module Decidim
130
131
  end
131
132
  when :ballot_styles
132
133
  toggle_allow(user.admin?) if permission_action.action == :read
134
+ when :component_data
135
+ toggle_allow(user.admin?) if permission_action.action == :import
133
136
  end
134
137
  end
135
138
 
@@ -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: Els codis d'accés al cens no s'han pogut generar.
236
+ census_frozen: Els codis d'accés al cens no s'han pogut exportar.
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: S'han generat els codis d'accés al cens.
253
+ census_frozen: S'han exportat els codis per al cens i el cens ha quedat congelat.
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: