decidim-verifications 0.30.1 → 0.31.0.rc1
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.
- checksums.yaml +4 -4
- data/README.md +5 -5
- data/app/commands/decidim/verifications/csv_census/admin/create_census_data.rb +5 -4
- data/app/commands/decidim/verifications/csv_census/admin/create_census_record.rb +23 -0
- data/app/commands/decidim/verifications/csv_census/admin/update_census_record.rb +15 -0
- data/app/controllers/concerns/decidim/verifications/admin/filterable.rb +26 -0
- data/app/controllers/decidim/verifications/authorizations_controller.rb +1 -2
- data/app/controllers/decidim/verifications/csv_census/admin/census_controller.rb +58 -14
- data/app/controllers/decidim/verifications/csv_census/admin/census_records_controller.rb +63 -0
- data/app/controllers/decidim/verifications/id_documents/admin/config_controller.rb +1 -1
- data/app/controllers/decidim/verifications/id_documents/admin/confirmations_controller.rb +1 -1
- data/app/controllers/decidim/verifications/id_documents/admin/offline_confirmations_controller.rb +1 -1
- data/app/controllers/decidim/verifications/id_documents/authorizations_controller.rb +2 -2
- data/app/controllers/decidim/verifications/postal_letter/authorizations_controller.rb +2 -2
- data/app/controllers/decidim/verifications/sms/authorizations_controller.rb +2 -2
- data/app/forms/decidim/verifications/csv_census/admin/census_data_form.rb +29 -3
- data/app/forms/decidim/verifications/csv_census/admin/census_form.rb +29 -0
- data/app/forms/decidim/verifications/sms/mobile_phone_form.rb +2 -2
- data/app/jobs/decidim/verifications/csv_census/process_census_data_job.rb +49 -0
- data/app/models/decidim/verifications/csv_census/data.rb +13 -1
- data/app/models/decidim/verifications/csv_datum.rb +21 -0
- data/app/packs/entrypoints/decidim_verifications.js +3 -0
- data/app/packs/src/csv_census.js +47 -0
- data/app/presenters/decidim/verifications/admin_log/csv_datum_presenter.rb +45 -0
- data/app/services/decidim/authorization_handler.rb +1 -1
- data/app/views/decidim/verifications/authorizations/new.html.erb +1 -1
- data/app/views/decidim/verifications/authorizations/onboarding_pending.html.erb +1 -1
- data/app/views/decidim/verifications/csv_census/admin/census/_csv_census_drawer.html.erb +5 -0
- data/app/views/decidim/verifications/csv_census/admin/census/index.html.erb +73 -51
- data/app/views/decidim/verifications/csv_census/admin/census/new_import.html.erb +27 -0
- data/app/views/decidim/verifications/csv_census/admin/census_records/_form.html.erb +9 -0
- data/app/views/decidim/verifications/csv_census/admin/census_records/edit_record.html.erb +14 -0
- data/app/views/decidim/verifications/csv_census/admin/census_records/new_record.html.erb +14 -0
- data/app/views/decidim/verifications/postal_letter/admin/pending_authorizations/index.html.erb +33 -17
- data/config/assets.rb +2 -2
- data/config/locales/ar.yml +0 -5
- data/config/locales/bg.yml +0 -12
- data/config/locales/ca-IT.yml +62 -17
- data/config/locales/ca.yml +62 -17
- data/config/locales/cs.yml +42 -16
- data/config/locales/de.yml +61 -17
- data/config/locales/el.yml +0 -5
- data/config/locales/en.yml +62 -17
- data/config/locales/es-MX.yml +62 -17
- data/config/locales/es-PY.yml +62 -17
- data/config/locales/es.yml +62 -17
- data/config/locales/eu.yml +74 -29
- data/config/locales/fi-plain.yml +63 -11
- data/config/locales/fi.yml +63 -11
- data/config/locales/fr-CA.yml +5 -12
- data/config/locales/fr.yml +5 -12
- data/config/locales/gl.yml +0 -5
- data/config/locales/hu.yml +0 -12
- data/config/locales/id-ID.yml +0 -5
- data/config/locales/it.yml +0 -5
- data/config/locales/ja.yml +62 -17
- data/config/locales/lt.yml +0 -12
- data/config/locales/lv.yml +0 -5
- data/config/locales/nl.yml +0 -5
- data/config/locales/no.yml +0 -5
- data/config/locales/pl.yml +0 -12
- data/config/locales/pt-BR.yml +0 -5
- data/config/locales/pt.yml +0 -5
- data/config/locales/ro-RO.yml +40 -8
- data/config/locales/sk.yml +0 -5
- data/config/locales/sv.yml +61 -17
- data/config/locales/tr-TR.yml +0 -5
- data/config/locales/zh-CN.yml +0 -5
- data/config/locales/zh-TW.yml +0 -12
- data/lib/decidim/verifications/csv_census/admin_engine.rb +10 -2
- data/lib/decidim/verifications/engine.rb +1 -1
- data/lib/decidim/verifications/version.rb +1 -1
- data/lib/decidim/verifications/workflows.rb +3 -58
- data/lib/decidim/verifications.rb +1 -1
- data/lib/tasks/revoke.rake +16 -0
- metadata +22 -10
- data/app/jobs/decidim/verifications/csv_census/remove_duplicates_job.rb +0 -30
- data/lib/decidim/verifications/registry.rb +0 -43
@@ -0,0 +1,47 @@
|
|
1
|
+
document.addEventListener("decidim:loaded", () => {
|
2
|
+
document.querySelectorAll('[data-action="csv_census-record"]').forEach((button) => {
|
3
|
+
const url = button.dataset.censusUrl;
|
4
|
+
const drawer = window.Decidim.currentDialogs[button.dataset.censusDialog];
|
5
|
+
const container = drawer.dialog.querySelector("#csv-census-actions");
|
6
|
+
|
7
|
+
// Handles changes on the form
|
8
|
+
const activateDrawerForm = () => {
|
9
|
+
const saveForm = drawer.dialog.querySelector(".form_census_record");
|
10
|
+
// Handles form errors and success
|
11
|
+
if (saveForm) {
|
12
|
+
saveForm.addEventListener("ajax:success", (event) => {
|
13
|
+
const response = event.detail[0];
|
14
|
+
|
15
|
+
if (response.status === "ok") {
|
16
|
+
window.location.reload();
|
17
|
+
} else {
|
18
|
+
window.location.href = response.redirect_url;
|
19
|
+
}
|
20
|
+
});
|
21
|
+
|
22
|
+
saveForm.addEventListener("ajax:error", (event) => {
|
23
|
+
const response = event.detail[2];
|
24
|
+
container.innerHTML = response.responseText;
|
25
|
+
activateDrawerForm();
|
26
|
+
});
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
30
|
+
const fetchUrl = (urlToFetch) => {
|
31
|
+
container.classList.add("spinner-container");
|
32
|
+
fetch(urlToFetch).then((response) => response.text()).then((html) => {
|
33
|
+
container.innerHTML = html;
|
34
|
+
|
35
|
+
container.classList.remove("spinner-container");
|
36
|
+
// We still need foundation for form validations
|
37
|
+
$(container).foundation();
|
38
|
+
activateDrawerForm()
|
39
|
+
});
|
40
|
+
};
|
41
|
+
|
42
|
+
button.addEventListener("click", () => {
|
43
|
+
fetchUrl(url);
|
44
|
+
drawer.open();
|
45
|
+
});
|
46
|
+
})
|
47
|
+
});
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Verifications
|
5
|
+
module AdminLog
|
6
|
+
# This class holds the logic to present a `Decidim::Verifications::CsvDatum
|
7
|
+
# for the `AdminLog` log.
|
8
|
+
#
|
9
|
+
# Usage should be automatic and you should not need to call this class
|
10
|
+
# directly, but here is an example:
|
11
|
+
#
|
12
|
+
# action_log = Decidim::ActionLog.last
|
13
|
+
# view_helpers # => this comes from the views
|
14
|
+
# CsvDatumPresenter.new(action_log, view_helpers).present
|
15
|
+
class CsvDatumPresenter < Decidim::Log::BasePresenter
|
16
|
+
def initialize(action_log, view_helpers)
|
17
|
+
super
|
18
|
+
@resource = action_log.resource
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def action_string
|
24
|
+
case action
|
25
|
+
when "delete", "create", "update", "import"
|
26
|
+
"decidim.verifications.admin_log.csv_datum.#{action}"
|
27
|
+
else
|
28
|
+
super
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def i18n_params
|
33
|
+
super.merge(
|
34
|
+
resource_email: @resource&.email.to_s,
|
35
|
+
imported_count: imported_records.count
|
36
|
+
)
|
37
|
+
end
|
38
|
+
|
39
|
+
def imported_records
|
40
|
+
action_log.extra.dig("extra", "imported_records") || []
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
@@ -47,7 +47,7 @@ module Decidim
|
|
47
47
|
# @return [Boolean] A boolean indicating whether the authorization can be
|
48
48
|
# transferred.
|
49
49
|
def transferrable?
|
50
|
-
duplicate.present? && duplicate.user.deleted?
|
50
|
+
duplicate.present? && (duplicate.user.deleted? || duplicate.user.ephemeral?)
|
51
51
|
end
|
52
52
|
|
53
53
|
# Defines whether the identity of an ephemeral user with the same authorization
|
@@ -32,7 +32,7 @@
|
|
32
32
|
|
33
33
|
<% unless onboarding_manager.ephemeral? %>
|
34
34
|
<p class="prose prose-a:text-secondary">
|
35
|
-
<%= t("decidim.verifications.authorizations.skip_verification", link: link_to(t("decidim.verifications.authorizations.start_exploring"),
|
35
|
+
<%= t("decidim.verifications.authorizations.skip_verification", link: link_to(t("decidim.verifications.authorizations.start_exploring"), decidim.root_path).html_safe).html_safe %>.
|
36
36
|
</p>
|
37
37
|
<% end %>
|
38
38
|
<% end %>
|
@@ -33,6 +33,6 @@
|
|
33
33
|
<% end %>
|
34
34
|
</section>
|
35
35
|
<p class="prose prose-a:text-secondary">
|
36
|
-
<%= t("decidim.verifications.authorizations.skip_verification", link: link_to(t("decidim.verifications.authorizations.start_exploring"),
|
36
|
+
<%= t("decidim.verifications.authorizations.skip_verification", link: link_to(t("decidim.verifications.authorizations.start_exploring"), decidim.root_path).html_safe).html_safe %>.
|
37
37
|
</p>
|
38
38
|
<% end %>
|
@@ -1,59 +1,81 @@
|
|
1
1
|
<% add_decidim_page_title(t("admin.index.title", scope: "decidim.verifications.csv_census")) %>
|
2
2
|
|
3
|
-
<div class="
|
4
|
-
<
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
<
|
18
|
-
<
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
3
|
+
<div class="card">
|
4
|
+
<div class="item_show__header item_show__header--with-action-options">
|
5
|
+
<h1 class="item_show__header-title">
|
6
|
+
<%= t("index.title", scope: "decidim.verifications.csv_census.admin") %>
|
7
|
+
<%= link_to t("index.import_csv", scope: "decidim.verifications.csv_census.admin"), new_import_census_logs_path, method: :get, class: "button button__sm button__transparent-secondary" %>
|
8
|
+
<button type="button" data-action="csv_census-record" data-census-dialog="census_drawer" data-census-url="<%= new_record_census_logs_path %>" class="button button__sm button__secondary">
|
9
|
+
<%= t("index.add_new_record_button", scope: "decidim.verifications.csv_census.admin") %>
|
10
|
+
</button>
|
11
|
+
</h1>
|
12
|
+
</div>
|
13
|
+
<% if csv_census_data.any? %>
|
14
|
+
<div class="table-stacked mt-8">
|
15
|
+
<table class="table-list">
|
16
|
+
<thead>
|
17
|
+
<tr>
|
18
|
+
<th><%= t("index.fields.email", scope: "decidim.verifications.csv_census.admin") %></th>
|
19
|
+
<th><%= t("index.fields.created_at", scope: "decidim.verifications.csv_census.admin") %></th>
|
20
|
+
<th><%= t("index.fields.user_authorized", scope: "decidim.verifications.csv_census.admin") %></th>
|
21
|
+
<th><%= t("index.fields.actions", scope: "decidim.verifications.csv_census.admin") %></th>
|
22
|
+
</tr>
|
23
|
+
</thead>
|
24
|
+
<tbody>
|
25
|
+
<% csv_census_data.each do |data| %>
|
26
|
+
<tr>
|
27
|
+
<td data-label="<%= t("index.fields.email", scope: "decidim.verifications.csv_census.admin") %>">
|
28
|
+
<%= data.email %>
|
29
|
+
</td>
|
30
|
+
<td data-label="<%= t("index.fields.created_at", scope: "decidim.verifications.csv_census.admin") %>">
|
31
|
+
<%= l data.created_at, format: :decidim_short %>
|
32
|
+
</td>
|
33
|
+
<td data-label="<%= t("index.fields.user_authorized", scope: "decidim.verifications.csv_census.admin") %>" class="custom-text-align">
|
34
|
+
<% last_login_info = last_login(data) || { icon: nil, text: t(".no_user"), last_sign_in: nil } %>
|
35
|
+
<% if last_login_info[:icon].present? %>
|
36
|
+
<%= icon_with_tooltip(last_login_info[:icon], last_login_info[:text]) %>
|
37
|
+
<% else %>
|
38
|
+
<%= last_login_info[:text] || t(".no_user") %>
|
39
|
+
<% end %>
|
40
|
+
<%= last_login_info[:last_sign_in] %>
|
41
|
+
</td>
|
42
|
+
<td data-label="<%= t("index.fields.actions", scope: "decidim.verifications.csv_census.admin") %>" class="table-list__actions">
|
43
|
+
<button type="button" data-controller="dropdown" data-target="actions-census-log-<%= data.id %>" aria-label="<%= t("decidim.admin.actions.actions_label", resource: data.id) %>">
|
44
|
+
<%= icon "more-fill", class: "text-secondary" %>
|
45
|
+
</button>
|
31
46
|
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
<pre class="code-block"><%= t("decidim.verifications.csv_census.admin.new.example") %></pre>
|
41
|
-
</div>
|
47
|
+
<div class="inline-block relative">
|
48
|
+
<ul id="actions-census-log-<%= data.id %>" class="dropdown dropdown__action" aria-hidden="true">
|
49
|
+
<li class="dropdown__item">
|
50
|
+
<%= link_to "#", class: "dropdown__button", data: { action: "csv_census-record", census_dialog: "census_drawer", census_url: edit_record_census_log_path(data) } do %>
|
51
|
+
<%= icon "pencil-line" %>
|
52
|
+
<%= t("actions.edit", scope: "decidim.verifications.csv_census.admin") %>
|
53
|
+
<% end %>
|
54
|
+
</li>
|
42
55
|
|
43
|
-
|
44
|
-
<%= decidim_form_for @form, url: census_path, multipart: true do |form| %>
|
45
|
-
<%= label_tag :file, t("admin.new.file", scope: "decidim.verifications.csv_census") %>
|
46
|
-
<%= form.file_field :file %>
|
56
|
+
<hr>
|
47
57
|
|
48
|
-
|
49
|
-
|
50
|
-
|
58
|
+
<li class="dropdown__item">
|
59
|
+
<%= link_to census_log_path(data), method: :delete, data: { confirm: t("actions.confirm_destroy", scope: "decidim.verifications.csv_census.admin") }, class: "dropdown__button" do %>
|
60
|
+
<%= icon "delete-bin-line" %>
|
61
|
+
<%= t("actions.destroy", scope: "decidim.verifications.csv_census.admin") %>
|
62
|
+
<% end %>
|
63
|
+
</li>
|
64
|
+
</ul>
|
51
65
|
</div>
|
52
|
-
</
|
53
|
-
|
54
|
-
|
55
|
-
</
|
56
|
-
</
|
66
|
+
</td>
|
67
|
+
</tr>
|
68
|
+
<% end %>
|
69
|
+
</tbody>
|
70
|
+
</table>
|
57
71
|
</div>
|
58
|
-
|
72
|
+
<% else %>
|
73
|
+
<p><%= t(".empty", import_csv: link_to(t("index.import_csv", scope: "decidim.verifications.csv_census.admin"), new_import_census_logs_path, class: " decoration-solid decoration-secondary font-semibold text-secondary").html_safe).html_safe %></p>
|
74
|
+
<% end %>
|
59
75
|
</div>
|
76
|
+
<%= decidim_paginate csv_census_data %>
|
77
|
+
|
78
|
+
<%= render partial: "csv_census_drawer" %>
|
79
|
+
|
80
|
+
<%= append_javascript_pack_tag "decidim_verifications" %>
|
81
|
+
<%= append_stylesheet_pack_tag "decidim_verifications" %>
|
@@ -0,0 +1,27 @@
|
|
1
|
+
<% add_decidim_page_title(t(".title")) %>
|
2
|
+
<div class="item_show__header">
|
3
|
+
<h2 class="item_show__header-title">
|
4
|
+
<%= t(".title") %>
|
5
|
+
</h2>
|
6
|
+
</div>
|
7
|
+
<div class="card-section">
|
8
|
+
<div class="row column font-semibold pb-4"><%= t(".upload_new_census") %></div>
|
9
|
+
<div class="row column">
|
10
|
+
<p><%= t(".info") %></p>
|
11
|
+
<pre class="code-block"><%= t(".example") %></pre>
|
12
|
+
</div>
|
13
|
+
|
14
|
+
<div class="row column">
|
15
|
+
<%= decidim_form_for @form, url: create_import_census_logs_path, multipart: true do |form| %>
|
16
|
+
<div class="font-semibold">
|
17
|
+
<%= form.upload :file, help_i18n_scope: "decidim.admin.forms.file_help.import_csv", button_class: "button button__sm button__transparent-secondary" %>
|
18
|
+
</div>
|
19
|
+
|
20
|
+
<div class="item__edit-sticky">
|
21
|
+
<div class="item__edit-sticky-container">
|
22
|
+
<%= submit_tag t("census.new_import.submit", scope: "decidim.verifications.csv_census.admin"), class: "button button__sm button__secondary" %>
|
23
|
+
</div>
|
24
|
+
</div>
|
25
|
+
<% end %>
|
26
|
+
</div>
|
27
|
+
</div>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<% add_decidim_page_title(t(".title")) %>
|
2
|
+
<div class="item_show__header">
|
3
|
+
<h1 class="item_show__header-title">
|
4
|
+
<%= t(".title") %>
|
5
|
+
</h1>
|
6
|
+
</div>
|
7
|
+
<div>
|
8
|
+
<%= decidim_form_for(@form, url: update_record_census_log_path, remote: true, html: { class: "form-defaults form edit_record form_census_record" }) do |f| %>
|
9
|
+
<%= render partial: "form", object: f %>
|
10
|
+
<div class="flex items-center gap-x-4">
|
11
|
+
<%= f.submit t(".save"), class: "button button__sm button__secondary absolute top-5 right-6" %>
|
12
|
+
</div>
|
13
|
+
<% end %>
|
14
|
+
</div>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
<% add_decidim_page_title(t(".title")) %>
|
2
|
+
<div class="item_show__header">
|
3
|
+
<h1 class="item_show__header-title">
|
4
|
+
<%= t(".title") %>
|
5
|
+
</h1>
|
6
|
+
</div>
|
7
|
+
<div>
|
8
|
+
<%= decidim_form_for(@form, url: create_record_census_logs_path, method: :post, remote: true, html: { class: "form-defaults form new_record form_census_record" }) do |f| %>
|
9
|
+
<%= render partial: "form", object: f %>
|
10
|
+
<div class="flex items-center gap-x-4">
|
11
|
+
<%= f.submit t(".save"), class: "button button__sm button__secondary absolute top-5 right-6" %>
|
12
|
+
</div>
|
13
|
+
<% end %>
|
14
|
+
</div>
|
data/app/views/decidim/verifications/postal_letter/admin/pending_authorizations/index.html.erb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
<% add_decidim_page_title(t(".title")) %>
|
2
|
+
|
2
3
|
<div class="card">
|
3
4
|
|
4
5
|
<div class="item_show__header">
|
@@ -7,7 +8,7 @@
|
|
7
8
|
</h1>
|
8
9
|
</div>
|
9
10
|
|
10
|
-
<div class="table-
|
11
|
+
<div class="table-stacked">
|
11
12
|
<table class="table-list">
|
12
13
|
<thead>
|
13
14
|
<tr>
|
@@ -15,35 +16,50 @@
|
|
15
16
|
<th><%= t(".address") %></th>
|
16
17
|
<th><%= t(".verification_code") %></th>
|
17
18
|
<th><%= t(".letter_sent_at") %></th>
|
18
|
-
<th
|
19
|
+
<th><%= t("decidim.admin.actions.actions") %></th>
|
19
20
|
</tr>
|
20
21
|
</thead>
|
21
22
|
<tbody>
|
22
23
|
<% @pending_authorizations.each do |authorization| %>
|
23
24
|
<tr>
|
24
|
-
<td>
|
25
|
+
<td data-label="<%= t(".username") %>">
|
25
26
|
<%= authorization.user.name %>
|
26
27
|
</td>
|
27
|
-
<td>
|
28
|
+
<td data-label="<%= t(".address") %>">
|
28
29
|
<%= authorization.verification_address %>
|
29
30
|
</td>
|
30
|
-
<td>
|
31
|
+
<td data-label="<%= t(".verification_code") %>">
|
31
32
|
<%= authorization.verification_code %>
|
32
33
|
</td>
|
33
|
-
<td>
|
34
|
+
<td data-label="<%= t(".letter_sent_at") %>">
|
34
35
|
<%= authorization.letter_sent_at %>
|
35
36
|
</td>
|
36
|
-
<td>
|
37
|
-
|
38
|
-
<%= icon "
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
37
|
+
<td class="table-list__actions" data-label="<%= t("decidim.admin.actions.actions") %>">
|
38
|
+
<button type="button" data-controller="dropdown" data-target="actions-authorization-<%= authorization.id %>" aria-label="<%= t("decidim.admin.actions.actions_label", resource: authorization.user.name) %>">
|
39
|
+
<%= icon "more-fill", class: "text-secondary" %>
|
40
|
+
</button>
|
41
|
+
|
42
|
+
<div class="inline-block relative">
|
43
|
+
<ul id="actions-authorization-<%= authorization.id %>" class="dropdown dropdown__action" aria-hidden="true">
|
44
|
+
<li class="dropdown__item">
|
45
|
+
<% if authorization.letter_sent? %>
|
46
|
+
<div class="dropdown__button-disabled">
|
47
|
+
<%= with_tooltip t(".already_sent") do %>
|
48
|
+
<%= icon "checkbox-circle-line", class: "text-gray" %>
|
49
|
+
<span>
|
50
|
+
<%= t(".mark_as_sent") %>
|
51
|
+
</span>
|
52
|
+
<% end %>
|
53
|
+
</div>
|
54
|
+
<% else %>
|
55
|
+
<%= link_to pending_authorization_postage_path(authorization.id), method: :post, class: "dropdown__button" do %>
|
56
|
+
<%= icon "checkbox-circle-line" %>
|
57
|
+
<%= t(".mark_as_sent") %>
|
58
|
+
<% end %>
|
59
|
+
<% end %>
|
60
|
+
</li>
|
61
|
+
</ul>
|
62
|
+
</div>
|
47
63
|
</td>
|
48
64
|
</tr>
|
49
65
|
<% end %>
|
data/config/assets.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
base_path = File.expand_path("..", __dir__)
|
4
4
|
|
5
|
-
Decidim::
|
6
|
-
Decidim::
|
5
|
+
Decidim::Shakapacker.register_path("#{base_path}/app/packs")
|
6
|
+
Decidim::Shakapacker.register_entrypoints(
|
7
7
|
decidim_verifications: "#{base_path}/app/packs/entrypoints/decidim_verifications.js"
|
8
8
|
)
|
data/config/locales/ar.yml
CHANGED
@@ -65,15 +65,10 @@ ar:
|
|
65
65
|
start_exploring: البدء في استكشاف
|
66
66
|
csv_census:
|
67
67
|
admin:
|
68
|
-
destroy:
|
69
|
-
title: احذف جميع بيانات التعداد
|
70
68
|
index:
|
71
|
-
empty: لا توجد بيانات التعداد. استخدم النموذج أدناه لاستيراده باستخدام ملف CSV.
|
72
69
|
title: بيانات التعداد الحالية
|
73
70
|
instructions:
|
74
71
|
body: للقيام بذلك ، يجب عليك إدخال إدارة النظام وإضافة تصاريح csv_census إلى المؤسسة
|
75
|
-
new:
|
76
|
-
file: ".csv ملف مع بيانات رسائل البريد الإلكتروني"
|
77
72
|
authorizations:
|
78
73
|
new:
|
79
74
|
error: لم نتمكن من التحقق من حسابك أو لم تكن في تعداد المنظمة.
|
data/config/locales/bg.yml
CHANGED
@@ -144,23 +144,11 @@ bg:
|
|
144
144
|
start_exploring: започнете да разглеждате
|
145
145
|
csv_census:
|
146
146
|
admin:
|
147
|
-
census:
|
148
|
-
create:
|
149
|
-
success: Успешно бяха импортирани %{count} елемента. (%{errors} грешки).
|
150
|
-
destroy_all:
|
151
|
-
success: Всички данни от преброяването бяха изтрити.
|
152
|
-
destroy:
|
153
|
-
confirm: Изтриване на всички данни от преброяването не може да бъде отменено. Наистина ли искате да продължите?
|
154
|
-
title: Изтриване на всички данни от преброяването
|
155
147
|
index:
|
156
|
-
data: Заредени са общо %{count} записа. Датата на последното качване е на %{due_date}.
|
157
|
-
empty: Няма данни от преброяването. Използвайте формуляра по-долу, за да ги импортирате чрез файл във формат CSV.
|
158
148
|
title: Текущи данни от преброяването
|
159
149
|
instructions:
|
160
150
|
body: За тази цел трябва да влезете в администрацията на системата и да добавите оторизация за csv_census в организацията
|
161
151
|
title: Трябва да активирате преброяването чрез файл във формат CSV за тази организация
|
162
|
-
new:
|
163
|
-
file: "файл във формат .csv с данни за електронните пощи"
|
164
152
|
authorizations:
|
165
153
|
new:
|
166
154
|
error: Не можахме да потвърдим вашия акаунт или не сте в преброяването на организацията.
|
data/config/locales/ca-IT.yml
CHANGED
@@ -4,6 +4,8 @@ ca-IT:
|
|
4
4
|
attributes:
|
5
5
|
authorization:
|
6
6
|
verification_attachment: Arxiu adjunt de la verificació
|
7
|
+
census_data:
|
8
|
+
file: Fitxer
|
7
9
|
config:
|
8
10
|
available_methods: Mètodes disponibles
|
9
11
|
offline: Sense connexió
|
@@ -121,6 +123,12 @@ ca-IT:
|
|
121
123
|
email_subject: Error en intentar verificar-se contra una altra participant
|
122
124
|
notification_title: La participant <a href="%{resource_path}">%{resource_title}</a> ha intentat verificar-se amb les dades d'una altra participant (<a href="%{managed_user_path}">%{managed_user_name}</a>).
|
123
125
|
verifications:
|
126
|
+
admin_log:
|
127
|
+
csv_datum:
|
128
|
+
create: "%{user_name} ha creat un nou registre de dades censals amb correu electrònic: %{resource_email}"
|
129
|
+
delete: "%{user_name} ha eliminado un nou registre de dades censals amb correu electrònic: %{resource_email}"
|
130
|
+
import: "%{user_name} ha importat: %{imported_count} registre(s) censal(s)"
|
131
|
+
update: "%{user_name} ha actualitzat el registre de dades censals amb correu electrònic: %{resource_email}"
|
124
132
|
authorizations:
|
125
133
|
authorization_metadata:
|
126
134
|
info: 'Aquestes són les dades de la verificació actual:'
|
@@ -161,30 +169,62 @@ ca-IT:
|
|
161
169
|
start_exploring: comença a explorar
|
162
170
|
csv_census:
|
163
171
|
admin:
|
172
|
+
actions:
|
173
|
+
confirm_destroy: Segur que vols esborrar aquest registre de dades censals?
|
174
|
+
destroy: Destruir
|
175
|
+
edit: Editar
|
164
176
|
census:
|
165
|
-
|
177
|
+
create_import:
|
166
178
|
error: S'ha produït un error en importar del cens.
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
179
|
+
no_user: No s'ha trobat la usuària
|
180
|
+
success: S'han importat amb èxit %{count} elements. S'estan processant les dades. Actualitza la pàgina en uns minuts per veure els canvis.
|
181
|
+
destroy:
|
182
|
+
success: S'ha eliminat el registre de dades censals.
|
183
|
+
index:
|
184
|
+
empty: No hi ha dades del cens. Utilitza %{import_csv} per importar-lo mitjançant un fitxer CSV.
|
185
|
+
no_sign_in: Mai no ha iniciat sessió
|
186
|
+
no_user: No s'ha trobat cap usuària
|
187
|
+
last_login:
|
188
|
+
no_sign_in: Mai no ha iniciat sessió
|
189
|
+
no_user: Cap usuària
|
190
|
+
new_import:
|
191
|
+
errors:
|
192
|
+
email_exists: L'adreça de correu electrònic %{email} ja existeix a l'organització %{organization}.
|
193
|
+
example: |
|
194
|
+
john.doe@example.org
|
195
|
+
jane.doe@example.org
|
196
|
+
info: 'Ha de ser un fitxer en format CSV amb una sola columna amb l''adreça de correu electrònic:'
|
197
|
+
submit: Puja arxiu
|
198
|
+
title: Importar dades censals
|
199
|
+
upload_new_census: Puja un nou cens
|
200
|
+
census_records:
|
201
|
+
create_record:
|
202
|
+
success: Registre de dades censals afegides amb èxit. S'estan processant les dades. Actualitza la pàgina, en uns minuts, per veure els canvis.
|
203
|
+
edit_record:
|
204
|
+
save: Desar
|
205
|
+
title: Editar el registre censal
|
206
|
+
form:
|
207
|
+
email: Correu electrònic
|
208
|
+
new_record:
|
209
|
+
save: Desar
|
210
|
+
title: Afegir un nou registre censal
|
211
|
+
update_record:
|
212
|
+
invalid: Hi ha hagut un problema en actualitzar el registre de dades del cens.
|
213
|
+
success: S'ha actualitzat correctament el registre de dades censals.
|
173
214
|
index:
|
174
|
-
|
175
|
-
|
215
|
+
add_new_record_button: Afegir nou registre
|
216
|
+
authorized: Usuària actualitzada
|
217
|
+
fields:
|
218
|
+
actions: Accions
|
219
|
+
created_at: Creat el
|
220
|
+
email: Correu electrònic
|
221
|
+
user_authorized: Usuària autoritzada?
|
222
|
+
import_csv: Importar CSV
|
223
|
+
no_authorized: Usuària no actualitzada
|
176
224
|
title: Dades censals actuals
|
177
225
|
instructions:
|
178
226
|
body: Per fer-ho, has d'entrar al panell d'administració i afegir les autoritzacions de csv_census a l'organització
|
179
227
|
title: Necessites activar el cens csv d'aquesta organització
|
180
|
-
new:
|
181
|
-
example: |
|
182
|
-
john.doe@example.org
|
183
|
-
jane.doe@example.org
|
184
|
-
file: "fitxer .csv amb dades de correus electrònics"
|
185
|
-
info: 'Ha de ser un fitxer en format CSV amb una sola columna amb l''adreça de correu electrònic:'
|
186
|
-
submit: Puja arxiu
|
187
|
-
title: Puja un nou cens
|
188
228
|
authorizations:
|
189
229
|
new:
|
190
230
|
error: No hem pogut verificar el teu compte o no estàs al cens de l'organització.
|
@@ -197,6 +237,10 @@ ca-IT:
|
|
197
237
|
user_postal_codes:
|
198
238
|
one: La participació està restringida a participants amb el codi postal %{postal_codes}, i el teu codi postal és %{user_postal_code}.
|
199
239
|
other: 'La participació està restringida a participants amb qualsevol dels codis postals següents: %{postal_codes}. El teu codi postal és %{user_postal_code}.'
|
240
|
+
errors:
|
241
|
+
invalid_emails: 'Les adreces de correu electrònic següents no són vàlides: %{invalid_emails}.'
|
242
|
+
no_emails: El fitxer ha de contenir adreces de correu electrònic
|
243
|
+
wrong_number_columns: "S'esperava una columna %{expected}, però es van trobar %{actual}."
|
200
244
|
id_documents:
|
201
245
|
admin:
|
202
246
|
config:
|
@@ -261,6 +305,7 @@ ca-IT:
|
|
261
305
|
pending_authorizations:
|
262
306
|
index:
|
263
307
|
address: Adreça
|
308
|
+
already_sent: La carta postal ja s'ha enviat i no es pot tornar a marcar com a enviada.
|
264
309
|
letter_sent_at: Carta enviada el
|
265
310
|
mark_as_sent: Marca com a enviada
|
266
311
|
not_yet_sent: Encara no s'ha enviat
|