decidim-elections 0.26.1 → 0.26.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/cells/decidim/elections/election_vote_cta_cell.rb +8 -3
- data/app/cells/decidim/votings/content_blocks/landing_page/description/show.erb +1 -12
- data/app/cells/decidim/votings/content_blocks/landing_page/description_cell.rb +0 -8
- data/app/commands/decidim/elections/admin/add_user_as_trustee.rb +21 -11
- data/app/commands/decidim/elections/admin/create_question.rb +2 -5
- data/app/commands/decidim/votings/admin/destroy_ballot_style.rb +1 -1
- data/app/controllers/decidim/elections/admin/questions_controller.rb +5 -0
- data/app/controllers/decidim/votings/census/admin/census_controller.rb +1 -1
- data/app/controllers/decidim/votings/votings_controller.rb +2 -0
- data/app/forms/decidim/votings/census/admin/datum_form.rb +4 -0
- data/app/helpers/decidim/elections/votes_helper.rb +3 -1
- data/app/mailers/decidim/elections/trustee_mailer.rb +28 -0
- data/app/packs/src/decidim/votings/voting-description-cell.js +1 -8
- data/app/permissions/decidim/votings/admin/permissions.rb +3 -1
- data/app/presenters/decidim/votings/admin_log/ballot_style_presenter.rb +5 -1
- data/app/views/decidim/elections/trustee_mailer/notification.html.erb +5 -0
- data/app/views/decidim/elections/votes/new.html.erb +8 -6
- data/app/views/decidim/votings/admin/votings/_form.html.erb +6 -6
- data/app/views/decidim/votings/votings/_check_fields.html.erb +13 -15
- data/app/views/decidim/votings/votings/check_census.html.erb +5 -1
- data/config/locales/ar.yml +9 -0
- data/config/locales/ca.yml +27 -11
- data/config/locales/cs.yml +30 -13
- data/config/locales/de.yml +6 -16
- data/config/locales/en.yml +27 -12
- data/config/locales/es-MX.yml +36 -20
- data/config/locales/es-PY.yml +31 -15
- data/config/locales/es.yml +31 -15
- data/config/locales/eu.yml +1 -14
- data/config/locales/fi-plain.yml +28 -13
- data/config/locales/fi.yml +28 -13
- data/config/locales/fr-CA.yml +28 -13
- data/config/locales/fr.yml +29 -14
- data/config/locales/gl.yml +8 -13
- data/config/locales/hu.yml +8 -0
- data/config/locales/it.yml +5 -16
- data/config/locales/ja.yml +28 -14
- data/config/locales/nl.yml +13 -15
- data/config/locales/no.yml +5 -2
- data/config/locales/pl.yml +2 -15
- data/config/locales/pt-BR.yml +2 -15
- data/config/locales/pt.yml +2 -15
- data/config/locales/ro-RO.yml +0 -13
- data/config/locales/sv.yml +1 -9
- data/config/locales/tr-TR.yml +5 -0
- data/config/locales/zh-CN.yml +4 -0
- data/lib/decidim/elections/admin_engine.rb +4 -1
- data/lib/decidim/elections/version.rb +1 -1
- metadata +14 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f8219848da3b47bb1de74d7c35c5d9f2f1b98ee394a1d9e07201cfc3760e8650
|
4
|
+
data.tar.gz: 8c2a725b532393fc5ddbdcbc2db2e320ce288e3b067e22524277097409f1ffa5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 668655440f14e989272e753a90332751b8d10ed8b8b63a7b0cbd14ef1fde3f4e79edaf9d6f499f00318ba1862ef1be157a7407806d30ed60dd2d274299f70968
|
7
|
+
data.tar.gz: 82341a653e8ee97716326601b815ce8d6f90811b94b92e057f1ae4983614d835253e5b3d6d59671c7ccd76d8d18db28bb3505aac69b750bedbba96bb688442e0
|
@@ -5,15 +5,20 @@ module Decidim
|
|
5
5
|
# This cell renders the results
|
6
6
|
# for a given instance of an Election
|
7
7
|
class ElectionVoteCtaCell < Decidim::ViewModel
|
8
|
+
include Decidim::Elections::HasVoteFlow
|
9
|
+
|
8
10
|
delegate :current_user,
|
9
11
|
:current_participatory_space,
|
10
|
-
:
|
11
|
-
:can_preview?,
|
12
|
-
:vote_flow,
|
12
|
+
:allowed_to?,
|
13
13
|
to: :controller
|
14
14
|
|
15
15
|
private
|
16
16
|
|
17
|
+
# This is needed by HasVoteFlow
|
18
|
+
def election
|
19
|
+
model
|
20
|
+
end
|
21
|
+
|
17
22
|
def last_vote
|
18
23
|
@last_vote ||= Decidim::Elections::Votes::LastVoteForVoter.for(model, vote_flow.voter_id) if vote_flow.has_voter?
|
19
24
|
end
|
@@ -5,21 +5,10 @@
|
|
5
5
|
<img src="<%= introductory_image.path %>" alt="">
|
6
6
|
</div>
|
7
7
|
<% end %>
|
8
|
-
<div class="columns medium-8 mediumlarge-7
|
8
|
+
<div class="columns medium-8 mediumlarge-7">
|
9
9
|
<h2 class="show-for-sr"><%= t("decidim.votings.content_blocks.landing_page.description.title") %></h2>
|
10
10
|
<div><%= description_text %></div>
|
11
11
|
</div>
|
12
|
-
<div class="content-height-toggler show-more">
|
13
|
-
<button class="button button--muted tiny">
|
14
|
-
<span class="button-text show-more-content">
|
15
|
-
<%= button_show_more_text %>
|
16
|
-
</span>
|
17
|
-
|
18
|
-
<span class="button-text show-less-content hide">
|
19
|
-
<%= button_show_less_text %>
|
20
|
-
</span>
|
21
|
-
</button>
|
22
|
-
</div>
|
23
12
|
</div>
|
24
13
|
</div>
|
25
14
|
|
@@ -18,14 +18,6 @@ module Decidim
|
|
18
18
|
def description_text
|
19
19
|
decidim_sanitize_editor(translated_attribute(current_participatory_space.description))
|
20
20
|
end
|
21
|
-
|
22
|
-
def button_show_more_text
|
23
|
-
t(:show_more, scope: "decidim.votings.content_blocks.landing_page.description")
|
24
|
-
end
|
25
|
-
|
26
|
-
def button_show_less_text
|
27
|
-
t(:show_less, scope: "decidim.votings.content_blocks.landing_page.description")
|
28
|
-
end
|
29
21
|
end
|
30
22
|
end
|
31
23
|
end
|
@@ -11,6 +11,8 @@ module Decidim
|
|
11
11
|
# form - A form object with the params.
|
12
12
|
def initialize(form, current_user)
|
13
13
|
@form = form
|
14
|
+
@user = form.user
|
15
|
+
@participatory_space = form.current_participatory_space
|
14
16
|
@current_user = current_user
|
15
17
|
end
|
16
18
|
|
@@ -27,29 +29,31 @@ module Decidim
|
|
27
29
|
notify_user_about_trustee_role if new_trustee?
|
28
30
|
end
|
29
31
|
|
32
|
+
send_email
|
33
|
+
|
30
34
|
broadcast(:ok)
|
31
35
|
end
|
32
36
|
|
33
37
|
private
|
34
38
|
|
35
|
-
attr_reader :form, :current_user, :trustee
|
39
|
+
attr_reader :form, :current_user, :trustee, :participatory_space, :user
|
36
40
|
|
37
41
|
def add_user_as_trustee!
|
38
42
|
@trustee = Decidim.traceability.create!(
|
39
43
|
Trustee,
|
40
|
-
|
41
|
-
user:
|
42
|
-
organization:
|
44
|
+
current_user,
|
45
|
+
user: user,
|
46
|
+
organization: user.organization
|
43
47
|
)
|
44
48
|
end
|
45
49
|
|
46
50
|
# If a trustee exists for this participatory space, it won't get created again
|
47
51
|
def existing_trustee_participatory_spaces?
|
48
|
-
trustees_space = TrusteesParticipatorySpace.where(participatory_space:
|
52
|
+
trustees_space = TrusteesParticipatorySpace.where(participatory_space: participatory_space).includes(:trustee)
|
49
53
|
@existing_trustee_participatory_spaces ||= Decidim::Elections::Trustee.joins(:trustees_participatory_spaces)
|
50
54
|
.includes([:user])
|
51
55
|
.where(trustees_participatory_spaces: trustees_space)
|
52
|
-
.where(decidim_user_id:
|
56
|
+
.where(decidim_user_id: user.id).any?
|
53
57
|
end
|
54
58
|
|
55
59
|
# if there's no user - trustee relation, the trustee gets created and the notification
|
@@ -57,13 +61,13 @@ module Decidim
|
|
57
61
|
def new_trustee?
|
58
62
|
return @new_trustee if defined?(@new_trustee)
|
59
63
|
|
60
|
-
@new_trustee = Decidim::Elections::Trustee.where(decidim_user_id:
|
64
|
+
@new_trustee = Decidim::Elections::Trustee.where(decidim_user_id: user.id).empty?
|
61
65
|
end
|
62
66
|
|
63
67
|
def add_participatory_space
|
64
|
-
trustee = Decidim::Elections::Trustee.find_by(decidim_user_id:
|
68
|
+
trustee = Decidim::Elections::Trustee.find_by(decidim_user_id: user.id)
|
65
69
|
trustee.trustees_participatory_spaces.create!(
|
66
|
-
participatory_space:
|
70
|
+
participatory_space: participatory_space
|
67
71
|
)
|
68
72
|
end
|
69
73
|
|
@@ -71,11 +75,17 @@ module Decidim
|
|
71
75
|
data = {
|
72
76
|
event: "decidim.events.elections.trustees.new_trustee",
|
73
77
|
event_class: Decidim::Elections::Trustees::NotifyNewTrusteeEvent,
|
74
|
-
resource:
|
75
|
-
affected_users: [
|
78
|
+
resource: participatory_space,
|
79
|
+
affected_users: [user]
|
76
80
|
}
|
77
81
|
Decidim::EventsManager.publish(**data)
|
78
82
|
end
|
83
|
+
|
84
|
+
def send_email
|
85
|
+
Decidim::Elections::TrusteeMailer.notification(
|
86
|
+
user, participatory_space, I18n.locale.to_s
|
87
|
+
).deliver_later
|
88
|
+
end
|
79
89
|
end
|
80
90
|
end
|
81
91
|
end
|
@@ -14,7 +14,8 @@ module Decidim
|
|
14
14
|
#
|
15
15
|
# Broadcasts :ok if successful, :invalid otherwise.
|
16
16
|
def call
|
17
|
-
return broadcast(:
|
17
|
+
return broadcast(:election_started) if form.election.started?
|
18
|
+
return broadcast(:invalid) if form.invalid?
|
18
19
|
|
19
20
|
create_question!
|
20
21
|
|
@@ -25,10 +26,6 @@ module Decidim
|
|
25
26
|
|
26
27
|
attr_reader :form, :question
|
27
28
|
|
28
|
-
def invalid?
|
29
|
-
form.election.started? || form.invalid?
|
30
|
-
end
|
31
|
-
|
32
29
|
def create_question!
|
33
30
|
attributes = {
|
34
31
|
election: form.election,
|
@@ -26,6 +26,11 @@ module Decidim
|
|
26
26
|
flash.now[:alert] = I18n.t("questions.create.invalid", scope: "decidim.elections.admin")
|
27
27
|
render action: "new"
|
28
28
|
end
|
29
|
+
|
30
|
+
on(:election_started) do
|
31
|
+
flash.now[:alert] = I18n.t("questions.create.election_started", scope: "decidim.elections.admin")
|
32
|
+
render action: "new"
|
33
|
+
end
|
29
34
|
end
|
30
35
|
end
|
31
36
|
|
@@ -98,7 +98,7 @@ module Decidim
|
|
98
98
|
if current_census.access_codes_file.attached?
|
99
99
|
redirect_to Rails.application.routes.url_helpers.rails_blob_url(current_census.access_codes_file.blob, only_path: true)
|
100
100
|
else
|
101
|
-
flash[:error] = t("export_access_codes.
|
101
|
+
flash[:error] = t("export_access_codes.file_not_exist", scope: "decidim.votings.census.admin.census")
|
102
102
|
redirect_to admin_voting_census_path
|
103
103
|
end
|
104
104
|
end
|
@@ -103,6 +103,8 @@ module Decidim
|
|
103
103
|
end
|
104
104
|
|
105
105
|
def elections
|
106
|
+
raise ActionController::RoutingError, "Not Found" unless current_participatory_space
|
107
|
+
|
106
108
|
Decidim::Elections::Election.where(component: current_participatory_space.components).where.not(bb_status: nil)
|
107
109
|
end
|
108
110
|
|
@@ -17,9 +17,13 @@ module Decidim
|
|
17
17
|
attribute :email, String
|
18
18
|
attribute :ballot_style_code, String
|
19
19
|
|
20
|
+
validates :birthdate, format: { with: /\A\d{8}\z/ }
|
21
|
+
|
20
22
|
validates :full_name,
|
21
23
|
:full_address,
|
24
|
+
:birthdate,
|
22
25
|
presence: true
|
26
|
+
|
23
27
|
def ballot_style_code
|
24
28
|
@ballot_style_code&.upcase
|
25
29
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Elections
|
5
|
+
# This mailer sends a notification email to a recently added trustee
|
6
|
+
class TrusteeMailer < Decidim::ApplicationMailer
|
7
|
+
include TranslatableAttributes
|
8
|
+
|
9
|
+
# Public: Sends an email to a trustee that just got added to a participatory space.
|
10
|
+
#
|
11
|
+
# user - The user to be notified
|
12
|
+
# participatory_space - The participatory space where the trustee was added.
|
13
|
+
# locale - The locale that will be used for the email content (optional).
|
14
|
+
#
|
15
|
+
# Returns nothing.
|
16
|
+
def notification(user, participatory_space, locale = nil)
|
17
|
+
@user = user
|
18
|
+
@participatory_space = participatory_space
|
19
|
+
@organization = user.organization
|
20
|
+
|
21
|
+
I18n.with_locale(locale || @organization.default_locale) do
|
22
|
+
@participatory_space_title = translated_attribute(participatory_space.title)
|
23
|
+
mail(to: user.email, subject: I18n.t("subject", scope: "decidim.elections.admin.mailers.trustee_mailer", resource_name: @participatory_space_title))
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -1,6 +1,4 @@
|
|
1
1
|
$(() => {
|
2
|
-
const isShowMoreButton = ($button) => $button.hasClass("show-more-content");
|
3
|
-
|
4
2
|
const remToPx = (count) => {
|
5
3
|
const unit = $("html").css("font-size");
|
6
4
|
|
@@ -25,17 +23,12 @@ $(() => {
|
|
25
23
|
$content.css("max-height", contentMaxHeight);
|
26
24
|
}
|
27
25
|
|
28
|
-
$button.on("click", (
|
29
|
-
const $buttonTextMore = $button.find(".button-text.show-more-content");
|
26
|
+
$button.on("click", () => {
|
30
27
|
const $buttonTextLess = $button.find(".button-text.show-less-content");
|
31
28
|
|
32
29
|
let newHeight = contentMaxHeight;
|
33
|
-
if (isShowMoreButton($(event.target))) {
|
34
|
-
newHeight = contentHeight;
|
35
|
-
}
|
36
30
|
|
37
31
|
$content.css("max-height", newHeight);
|
38
32
|
$buttonTextLess.toggleClass("hide");
|
39
|
-
$buttonTextMore.toggleClass("hide");
|
40
33
|
});
|
41
34
|
});
|
@@ -8,6 +8,9 @@ module Decidim
|
|
8
8
|
return permission_action unless user
|
9
9
|
return user_allowed_to_read_admin_dashboard? if read_admin_dashboard_action?
|
10
10
|
return permission_action unless permission_action.scope == :admin
|
11
|
+
|
12
|
+
user_can_enter_space_area?
|
13
|
+
|
11
14
|
return permission_action if voting && !voting.is_a?(Decidim::Votings::Voting)
|
12
15
|
|
13
16
|
unless user_can_read_votings_admin_dashboard?
|
@@ -15,7 +18,6 @@ module Decidim
|
|
15
18
|
return permission_action
|
16
19
|
end
|
17
20
|
|
18
|
-
user_can_enter_space_area?
|
19
21
|
allowed_read_participatory_space?
|
20
22
|
allowed_voting_action?
|
21
23
|
|
@@ -17,10 +17,14 @@ module Decidim
|
|
17
17
|
|
18
18
|
def i18n_params
|
19
19
|
super.merge(
|
20
|
-
ballot_style_code:
|
20
|
+
ballot_style_code: ballot_style_code.to_s
|
21
21
|
)
|
22
22
|
end
|
23
23
|
|
24
|
+
def ballot_style_code
|
25
|
+
action_log&.resource&.code || action_log.extra["code"]
|
26
|
+
end
|
27
|
+
|
24
28
|
def action_string
|
25
29
|
case action
|
26
30
|
when "create", "delete", "update"
|
@@ -0,0 +1,5 @@
|
|
1
|
+
<%== t("body", scope: "decidim.elections.admin.mailers.trustee_mailer", resource_name: @participatory_space_title, user_name: @user.name) %>
|
2
|
+
|
3
|
+
<p class="email-button email-button__cta">
|
4
|
+
<%= link_to t("trustee_zone", scope: "decidim.elections.admin.mailers.trustee_mailer"), decidim.decidim_elections_trustee_zone_url(host: @organization.host) %>
|
5
|
+
</p>
|
@@ -1,11 +1,13 @@
|
|
1
1
|
<div class="vote-wrapper"
|
2
|
-
data-election-id="
|
3
|
-
data-api-endpoint-url="
|
2
|
+
data-election-id="<%== election.id %>"
|
3
|
+
data-api-endpoint-url="<%== bulletin_board_server %>"
|
4
4
|
data-authority-public-key="<%= authority_public_key %>"
|
5
|
-
data-election-unique-id="
|
6
|
-
data-voter-id="
|
7
|
-
|
8
|
-
|
5
|
+
data-election-unique-id="<%== election_unique_id %>"
|
6
|
+
data-voter-id="<%== voter_id %>"
|
7
|
+
data-scheme-name="<%== scheme_name %>"
|
8
|
+
<% if ballot_style_id.present? %>
|
9
|
+
data-ballot-style-id="<%== ballot_style_id %>"
|
10
|
+
<% end %>>
|
9
11
|
|
10
12
|
<% questions.each_with_index do |step_question, step_index| %>
|
11
13
|
<div id="step-<%= step_index %>" class="focus__step <%= "hide" if step_index.positive? %>"
|
@@ -27,7 +27,7 @@
|
|
27
27
|
<div class="row column">
|
28
28
|
<%= form.select :voting_type,
|
29
29
|
@form.options_for_voting_type_select,
|
30
|
-
{ include_blank: t(".select_a_voting_type") },
|
30
|
+
{ include_blank: t(".select_a_voting_type"), label: t(".voting_type_label") },
|
31
31
|
{ multiple: false } %>
|
32
32
|
</div>
|
33
33
|
|
@@ -37,7 +37,7 @@
|
|
37
37
|
|
38
38
|
<div class="row">
|
39
39
|
<div class="columns xlarge-6 slug">
|
40
|
-
<%= form.text_field :slug %>
|
40
|
+
<%= form.text_field :slug, label: t(".slug") %>
|
41
41
|
<p class="help-text">
|
42
42
|
<%== t(".slug_help", url: decidim_form_slug_url(:votings, form.object.slug)) %>
|
43
43
|
</p>
|
@@ -46,7 +46,7 @@
|
|
46
46
|
|
47
47
|
<div class="row">
|
48
48
|
<div class="columns xlarge-6 census_contact_information">
|
49
|
-
<%= form.text_field :census_contact_information %>
|
49
|
+
<%= form.text_field :census_contact_information, label: t(".census_contact_information") %>
|
50
50
|
<p class="help-text">
|
51
51
|
<%== t(".census_contact_information_help") %>
|
52
52
|
</p>
|
@@ -54,16 +54,16 @@
|
|
54
54
|
</div>
|
55
55
|
|
56
56
|
<div class="row column">
|
57
|
-
<%= form.check_box :promoted %>
|
57
|
+
<%= form.check_box :promoted, label: t(".promoted") %>
|
58
58
|
</div>
|
59
59
|
|
60
60
|
<div class="row">
|
61
61
|
<div class="columns xlarge-4">
|
62
|
-
<%= form.upload :banner_image %>
|
62
|
+
<%= form.upload :banner_image, label: t(".banner_image") %>
|
63
63
|
</div>
|
64
64
|
|
65
65
|
<div class="columns xlarge-4">
|
66
|
-
<%= form.upload :introductory_image %>
|
66
|
+
<%= form.upload :introductory_image, label: t(".introductory_image") %>
|
67
67
|
</div>
|
68
68
|
</div>
|
69
69
|
</div>
|
@@ -1,10 +1,8 @@
|
|
1
1
|
<div>
|
2
|
-
<%= f.
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
{ multiple: false } %>
|
7
|
-
<% end %>
|
2
|
+
<%= f.select :document_type,
|
3
|
+
form.options_for_document_type_select,
|
4
|
+
{ include_blank: t(".select"), label: t(".document_type") },
|
5
|
+
{ multiple: false } %>
|
8
6
|
</div>
|
9
7
|
<div>
|
10
8
|
<%= f.text_field :document_number, label: t(".document_number"), placeholder: t(".document_number_placeholder") %>
|
@@ -15,17 +13,17 @@
|
|
15
13
|
<fieldset>
|
16
14
|
<legend><%= t(".date_of_birth") %></legend>
|
17
15
|
<div class="row">
|
18
|
-
|
19
|
-
<%= f.text_field :day, placeholder: t(".day_placeholder"), "data-autojump" => true, "data-max-length" => 2,
|
16
|
+
<div class="columns small-4">
|
17
|
+
<%= f.text_field :day, placeholder: t(".day_placeholder"), label: t(".day"), "data-autojump" => true, "data-max-length" => 2,
|
20
18
|
"data-jump-next" => "#login_month" %>
|
21
|
-
|
22
|
-
|
23
|
-
<%= f.text_field :month, placeholder: t(".month_placeholder"), "data-autojump" => true, "data-max-length" => 2,
|
19
|
+
</div>
|
20
|
+
<div class="columns small-4">
|
21
|
+
<%= f.text_field :month, placeholder: t(".month_placeholder"), label: t(".month"), "data-autojump" => true, "data-max-length" => 2,
|
24
22
|
"data-jump-prev" => "#login_day", "data-jump-next" => "#login_year" %>
|
25
|
-
|
26
|
-
|
27
|
-
<%= f.text_field :year, placeholder: t(".year_placeholder"), "data-autojump" => true, "data-max-length" => 4,
|
23
|
+
</div>
|
24
|
+
<div class="columns small-4">
|
25
|
+
<%= f.text_field :year, placeholder: t(".year_placeholder"), label: t(".year"), "data-autojump" => true, "data-max-length" => 4,
|
28
26
|
"data-jump-prev" => "#login_month" %>
|
29
|
-
|
27
|
+
</div>
|
30
28
|
</div>
|
31
29
|
</fieldset>
|
@@ -22,12 +22,16 @@ edit_link(
|
|
22
22
|
<p>
|
23
23
|
<%= t("decidim.votings.votings.check_census.success.info") %>
|
24
24
|
<button type="button" class="link" data-open="access-code-modal">
|
25
|
+
<% if Decidim.sms_gateway_service.to_s.safe_constantize %>
|
26
|
+
<%= t("decidim.votings.votings.check_census.success.access_link_with_sms") %>
|
27
|
+
<% else %>
|
25
28
|
<%= t("decidim.votings.votings.check_census.success.access_link") %>
|
29
|
+
<% end %>
|
26
30
|
</button>
|
27
31
|
</p>
|
28
32
|
</div>
|
29
33
|
<% if datum.email.present? || datum.mobile_phone_number.present? %>
|
30
|
-
<%= render partial: "access_code_modal", locals: { datum: datum, email: datum.email ? datum.email.gsub!(
|
34
|
+
<%= render partial: "access_code_modal", locals: { datum: datum, email: datum.email ? datum.email.gsub!(/^.+@/,"****@") : "", sms: datum.mobile_phone_number ? datum.mobile_phone_number.gsub!(/.{3}\d$/,"***") : "" } %>
|
31
35
|
<% end %>
|
32
36
|
<% elsif not_found %>
|
33
37
|
<div class="verify-census-error callout alert mt-s">
|
data/config/locales/ar.yml
CHANGED
@@ -9,6 +9,15 @@ ar:
|
|
9
9
|
description: الوصف
|
10
10
|
decidim:
|
11
11
|
elections:
|
12
|
+
admin:
|
13
|
+
steps:
|
14
|
+
tally:
|
15
|
+
invalid: كانت هناك مشكلة في الإبلاغ عن الأمين المفقود
|
16
|
+
mark_as_missing: وضع علامة مفقود
|
17
|
+
mark_as_missing_description: يجب أن يشارك جميع الأمناء في هذه العملية، ولكن إذا لم يتمكن الأمين من المشاركة في العملية، يمكنك وضع علامة على أنها مفقودة.
|
18
|
+
success: وقد تم بنجاح إرسال تقرير الأمين المفقود إلى لوحة الإعلانات
|
19
|
+
tally_completion: وستكتمل هذه العملية عندما يكون جميع الأمناء مُفعلين أو موسومين باعتبارهم مفقودين. مطلوب بحد أدنى %{quorum} من الأمناء لإكمال العملية.
|
20
|
+
undo_mark_as_missing: وسيتمكن الأمين الذي وُضع عليه علامة مفقودة عن طريق الخطأ من المشاركة قبل إتمام العملية. ويمكنهم المضي قدما كالمعتاد وسيتم تجاهل العلامة المفقودة.
|
12
21
|
elections:
|
13
22
|
election_log:
|
14
23
|
results_title: النتائج
|
data/config/locales/ca.yml
CHANGED
@@ -58,6 +58,9 @@ ca:
|
|
58
58
|
decidim/elections/question:
|
59
59
|
one: Pregunta
|
60
60
|
other: Preguntes
|
61
|
+
decidim/voting:
|
62
|
+
one: Votació
|
63
|
+
other: Votacions
|
61
64
|
decidim/votings/census/dataset:
|
62
65
|
one: Conjunt de dades
|
63
66
|
other: Conjunts de dades
|
@@ -182,6 +185,11 @@ ca:
|
|
182
185
|
exports:
|
183
186
|
elections: Eleccions
|
184
187
|
feedback_form_answers: Feedback de les respostes
|
188
|
+
mailers:
|
189
|
+
trustee_mailer:
|
190
|
+
body: "<p>Hola %{user_name},</p><p>Se t'ha afegit com a garant a%{resource_name}.</p>"
|
191
|
+
subject: Se t'ha afegit com a garant de %{resource_name}
|
192
|
+
trustee_zone: Portant a l'espai de garants
|
185
193
|
menu:
|
186
194
|
trustees: Garants
|
187
195
|
models:
|
@@ -204,6 +212,7 @@ ca:
|
|
204
212
|
title: Importar propostes
|
205
213
|
questions:
|
206
214
|
create:
|
215
|
+
election_started: L'elecció ja ha començat
|
207
216
|
invalid: S'ha produït un error en crear aquesta pregunta
|
208
217
|
success: S'ha creat la pregunta correctament
|
209
218
|
destroy:
|
@@ -531,7 +540,7 @@ ca:
|
|
531
540
|
upload_election_keys: Pujar claus de l'elecció
|
532
541
|
upload_icon: Icona que indica una acció de descàrrega
|
533
542
|
tally_steps:
|
534
|
-
back:
|
543
|
+
back: Enrere
|
535
544
|
description: Els resultats d'aquesta elecció s'estan computant al Bulletin Board. Per completar aquest procés, és necessària la teva participació com a garant.
|
536
545
|
keys:
|
537
546
|
end_tally: Recompte finalitzat
|
@@ -543,7 +552,7 @@ ca:
|
|
543
552
|
task: Tasca
|
544
553
|
process_warning: Un cop ha començat el procés, no hauries de sortir d'aquesta pàgina fins que aquest acabi. Trigarà varis minuts, ja que tots els garants han de connectar-se al mateix temps per completar-lo.
|
545
554
|
start: Començar
|
546
|
-
start_icon: Icona que indica un botó d'inici per
|
555
|
+
start_icon: Icona que indica un botó d'inici per a la generació de claus d'una elecció
|
547
556
|
status:
|
548
557
|
completed: Completada
|
549
558
|
pending: Pendent
|
@@ -599,7 +608,7 @@ ca:
|
|
599
608
|
audit: "( Auditar papereta )"
|
600
609
|
back: Començar de nou el procés de votació
|
601
610
|
ballot_hash: 'L''identificador de la teva papereta és:'
|
602
|
-
cast:
|
611
|
+
cast: Dipositar la papereta per a finalitzar el teu vot
|
603
612
|
description: Aquí tens les opcions per emetre la teva papereta perquè sigui degudament comptada o, alternativament, pots auditar que la teva papereta hagi estat xifrada correctament. Per raons de seguretat, l'auditoria de la teva papereta l'espatllarà, cosa que significa, que per a emetre el teu vot hauràs de reiniciar el procés de votació.
|
604
613
|
header: 'La papereta està xifrada: pots dipositar-la o auditar-la'
|
605
614
|
casting:
|
@@ -985,14 +994,20 @@ ca:
|
|
985
994
|
assign_missing_officers: Hi ha punts de votació sense president i/o gestors. Si us plau, assigna'ls des de la secció de punts de votació
|
986
995
|
update: Actualitzar
|
987
996
|
form:
|
997
|
+
banner_image: Imatge de capçalera
|
998
|
+
census_contact_information: Dades de contacte del cens
|
988
999
|
census_contact_information_help: La informació de contacte és per a participants que vulguin avisar d'incidències amb el cens. Pot ser una adreça de correu electrònic, un formulari de contacte ubicat en un altre lloc web, una enquesta de Decidim per a visitants, etc.
|
1000
|
+
introductory_image: Imatge de presentació
|
1001
|
+
promoted: Destacada
|
989
1002
|
select_a_voting_type: Si us plau selecciona un tipus de votació
|
1003
|
+
slug: Nom curt d'URL
|
990
1004
|
slug_help: 'Els noms curts d''URL s''utilitzen per generar els URL que apunten a aquest procés. Només accepta lletres, números i guions, i ha de començar amb una lletra. Exemple: %{url}'
|
991
1005
|
title: Títol
|
992
1006
|
voting_type:
|
993
1007
|
hybrid: Híbrida
|
994
1008
|
in_person: Presencial
|
995
1009
|
online: En línia
|
1010
|
+
voting_type_label: Tipus de votació
|
996
1011
|
new:
|
997
1012
|
create: Crear
|
998
1013
|
title: Nova votació
|
@@ -1044,7 +1059,7 @@ ca:
|
|
1044
1059
|
button: Exportar els codis d'accés de la votació
|
1045
1060
|
callout: Ara ja pots exportar els codis d'accés. Això només es pot fer una sola vegada. Tan bon punt comencis amb l'exportació, rebràs un correu electrònic amb les instruccions a <strong>%{email}</strong>
|
1046
1061
|
confirm: Només pots exportar els codis d'accés una sola vegada. Assegura't de poder rebre'ls correctament a l'adreça de correu electrònic <strong>%{email}</strong>.
|
1047
|
-
|
1062
|
+
file_not_exist: Aquest fitxer no existeix
|
1048
1063
|
launch_error: Hi ha hagut un error en exportar els codis d'accés
|
1049
1064
|
launch_success: S'ha iniciat l'exportació dels codis d'accés. En breu rebràs un correu a %{email}
|
1050
1065
|
exporting_access_codes:
|
@@ -1069,7 +1084,7 @@ ca:
|
|
1069
1084
|
has_ballot_styles_message: Estàs configurant estils de papereta. Si us plau assegura't de que el camp "%{ballot_style_code_header}" del CSV correspongui al codi de l'estil de papereta que vols.
|
1070
1085
|
info_message: "<strong>Encara no hi ha cap cens.</strong> Si us plau, utilitza el següent formulari per a crear-lo important un fitxer CSV."
|
1071
1086
|
missing_ballot_styles_message: 'Encara no hi ha cap estil de papereta per a aquesta votació. Si vols disposar de preguntes condicionals (com ara que votants puguin rebre diferents preguntes segons el seu districte o la seva regió de residència, per exemple) cal que importis el cens <strong>abans</strong> de configurar l''<a href=%{ballot_styles_admin_path}>estil de papereta</a>. Si el que vols és mostrar les mateixes preguntes a tothom, pots iniciar el procès d''importació del cens.'
|
1072
|
-
submit: Enviar
|
1087
|
+
submit: Enviar CSV
|
1073
1088
|
title: Crear el cens
|
1074
1089
|
show:
|
1075
1090
|
heading: Cens de l'espai de votació
|
@@ -1095,8 +1110,7 @@ ca:
|
|
1095
1110
|
name: Votacions destacades
|
1096
1111
|
landing_page:
|
1097
1112
|
description:
|
1098
|
-
|
1099
|
-
show_more: Llegir més
|
1113
|
+
title: Quant a aquesta votació
|
1100
1114
|
metrics:
|
1101
1115
|
heading: Mètriques
|
1102
1116
|
polling_stations:
|
@@ -1149,7 +1163,7 @@ ca:
|
|
1149
1163
|
modal_ballots_count_error:
|
1150
1164
|
btn_validate_total: Validar recompte total de paperetes
|
1151
1165
|
close_modal: Tancar
|
1152
|
-
info_explanation_text: 'Si us plau, revisa el nombre total de paperetes. Si el número total és
|
1166
|
+
info_explanation_text: 'Si us plau, revisa el nombre total de paperetes. Si el número total és incorrecte, has de proporcionar una explicació per al Comitè de Seguiment:'
|
1153
1167
|
info_text: El nombre total de paperetes (sobres) introduïdes no coincideix amb el registre de persones que han votat en aquest punt de votació.
|
1154
1168
|
message_for_monitoring_committee: Missatge per al Comitè de Seguiment
|
1155
1169
|
review_recount: Revisar el recompte
|
@@ -1274,12 +1288,13 @@ ca:
|
|
1274
1288
|
check_status: Comprovar l'estat
|
1275
1289
|
description: Comprova les dades del cens per saber si tens dret a participar en la votació. Si les dades són correctes, hauries de tenir ja un codi d'accés, però si l'has perdut pots demanar-lo de nou si les teves dades són correctes.
|
1276
1290
|
error:
|
1277
|
-
info: 'Prova de nou, si us plau. Si creus que les dades que tenim al sistema no són correctes, pots avisar-nos a %{census_contact_information}
|
1278
|
-
title: Les
|
1291
|
+
info: 'Prova de nou, si us plau. Si creus que les dades que tenim al sistema no són correctes, pots avisar-nos a %{census_contact_information}'
|
1292
|
+
title: Les dades que has introduït no es troben al cens d'aquesta votació
|
1279
1293
|
form_title: 'Emplena el formulari següent per comprovar les dades del cens:'
|
1280
1294
|
invalid: Hi ha hagut un problema en comprovar el cens.
|
1281
1295
|
success:
|
1282
|
-
access_link:
|
1296
|
+
access_link: per correu electrònic.
|
1297
|
+
access_link_with_sms: via SMS o correu electrònic.
|
1283
1298
|
info: Ja hauries d'haver rebut el codi d'accés per correu postal. En cas que no l'hagis rebut, pots demanar-lo de nou aquí
|
1284
1299
|
title: Les teves dades del cens són correctes!
|
1285
1300
|
title: Puc votar?
|
@@ -1289,6 +1304,7 @@ ca:
|
|
1289
1304
|
day_placeholder: DD
|
1290
1305
|
document_number: Número de document
|
1291
1306
|
document_number_placeholder: Número d'ID
|
1307
|
+
document_type: Tipus de document
|
1292
1308
|
month: Mes
|
1293
1309
|
month_placeholder: MM
|
1294
1310
|
postal_code: Codi postal
|