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.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -5
  3. data/app/commands/decidim/verifications/csv_census/admin/create_census_data.rb +5 -4
  4. data/app/commands/decidim/verifications/csv_census/admin/create_census_record.rb +23 -0
  5. data/app/commands/decidim/verifications/csv_census/admin/update_census_record.rb +15 -0
  6. data/app/controllers/concerns/decidim/verifications/admin/filterable.rb +26 -0
  7. data/app/controllers/decidim/verifications/authorizations_controller.rb +1 -2
  8. data/app/controllers/decidim/verifications/csv_census/admin/census_controller.rb +58 -14
  9. data/app/controllers/decidim/verifications/csv_census/admin/census_records_controller.rb +63 -0
  10. data/app/controllers/decidim/verifications/id_documents/admin/config_controller.rb +1 -1
  11. data/app/controllers/decidim/verifications/id_documents/admin/confirmations_controller.rb +1 -1
  12. data/app/controllers/decidim/verifications/id_documents/admin/offline_confirmations_controller.rb +1 -1
  13. data/app/controllers/decidim/verifications/id_documents/authorizations_controller.rb +2 -2
  14. data/app/controllers/decidim/verifications/postal_letter/authorizations_controller.rb +2 -2
  15. data/app/controllers/decidim/verifications/sms/authorizations_controller.rb +2 -2
  16. data/app/forms/decidim/verifications/csv_census/admin/census_data_form.rb +29 -3
  17. data/app/forms/decidim/verifications/csv_census/admin/census_form.rb +29 -0
  18. data/app/forms/decidim/verifications/sms/mobile_phone_form.rb +2 -2
  19. data/app/jobs/decidim/verifications/csv_census/process_census_data_job.rb +49 -0
  20. data/app/models/decidim/verifications/csv_census/data.rb +13 -1
  21. data/app/models/decidim/verifications/csv_datum.rb +21 -0
  22. data/app/packs/entrypoints/decidim_verifications.js +3 -0
  23. data/app/packs/src/csv_census.js +47 -0
  24. data/app/presenters/decidim/verifications/admin_log/csv_datum_presenter.rb +45 -0
  25. data/app/services/decidim/authorization_handler.rb +1 -1
  26. data/app/views/decidim/verifications/authorizations/new.html.erb +1 -1
  27. data/app/views/decidim/verifications/authorizations/onboarding_pending.html.erb +1 -1
  28. data/app/views/decidim/verifications/csv_census/admin/census/_csv_census_drawer.html.erb +5 -0
  29. data/app/views/decidim/verifications/csv_census/admin/census/index.html.erb +73 -51
  30. data/app/views/decidim/verifications/csv_census/admin/census/new_import.html.erb +27 -0
  31. data/app/views/decidim/verifications/csv_census/admin/census_records/_form.html.erb +9 -0
  32. data/app/views/decidim/verifications/csv_census/admin/census_records/edit_record.html.erb +14 -0
  33. data/app/views/decidim/verifications/csv_census/admin/census_records/new_record.html.erb +14 -0
  34. data/app/views/decidim/verifications/postal_letter/admin/pending_authorizations/index.html.erb +33 -17
  35. data/config/assets.rb +2 -2
  36. data/config/locales/ar.yml +0 -5
  37. data/config/locales/bg.yml +0 -12
  38. data/config/locales/ca-IT.yml +62 -17
  39. data/config/locales/ca.yml +62 -17
  40. data/config/locales/cs.yml +42 -16
  41. data/config/locales/de.yml +61 -17
  42. data/config/locales/el.yml +0 -5
  43. data/config/locales/en.yml +62 -17
  44. data/config/locales/es-MX.yml +62 -17
  45. data/config/locales/es-PY.yml +62 -17
  46. data/config/locales/es.yml +62 -17
  47. data/config/locales/eu.yml +74 -29
  48. data/config/locales/fi-plain.yml +63 -11
  49. data/config/locales/fi.yml +63 -11
  50. data/config/locales/fr-CA.yml +5 -12
  51. data/config/locales/fr.yml +5 -12
  52. data/config/locales/gl.yml +0 -5
  53. data/config/locales/hu.yml +0 -12
  54. data/config/locales/id-ID.yml +0 -5
  55. data/config/locales/it.yml +0 -5
  56. data/config/locales/ja.yml +62 -17
  57. data/config/locales/lt.yml +0 -12
  58. data/config/locales/lv.yml +0 -5
  59. data/config/locales/nl.yml +0 -5
  60. data/config/locales/no.yml +0 -5
  61. data/config/locales/pl.yml +0 -12
  62. data/config/locales/pt-BR.yml +0 -5
  63. data/config/locales/pt.yml +0 -5
  64. data/config/locales/ro-RO.yml +40 -8
  65. data/config/locales/sk.yml +0 -5
  66. data/config/locales/sv.yml +61 -17
  67. data/config/locales/tr-TR.yml +0 -5
  68. data/config/locales/zh-CN.yml +0 -5
  69. data/config/locales/zh-TW.yml +0 -12
  70. data/lib/decidim/verifications/csv_census/admin_engine.rb +10 -2
  71. data/lib/decidim/verifications/engine.rb +1 -1
  72. data/lib/decidim/verifications/version.rb +1 -1
  73. data/lib/decidim/verifications/workflows.rb +3 -58
  74. data/lib/decidim/verifications.rb +1 -1
  75. data/lib/tasks/revoke.rake +16 -0
  76. metadata +22 -10
  77. data/app/jobs/decidim/verifications/csv_census/remove_duplicates_job.rb +0 -30
  78. 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"), cta_button_path).html_safe).html_safe %>.
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"), cta_button_path).html_safe).html_safe %>.
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 %>
@@ -0,0 +1,5 @@
1
+ <%= decidim_drawer id: "census_drawer" do %>
2
+ <div id="csv-census-actions" class="spinner-container">
3
+
4
+ </div>
5
+ <% 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="item_show__header">
4
- <h1 class="item_show__header-title">
5
- <%= t("admin.index.title", scope: "decidim.verifications.csv_census") %>
6
- </h1>
7
- </div>
8
-
9
- <div class="item__edit item__edit-1col">
10
- <div class="item__edit-form">
11
- <div class="form__wrapper">
12
- <div class="card">
13
- <div class="card-divider"></div>
14
- <div class="card-section">
15
-
16
- <% if @status.count > 0 %>
17
- <div class="row column">
18
- <p><%= t("decidim.verifications.csv_census.admin.index.data", count: @status.count,
19
- due_date: l(@status.last_import_at, format: :long)) %>
20
- </p>
21
- <%= link_to t("decidim.verifications.csv_census.admin.destroy.title"),
22
- destroy_all_census_path,
23
- method: :delete,
24
- class: "button button__sm button__secondary alert",
25
- data: { confirm: t("decidim.verifications.csv_census.admin.destroy.confirm") } %>
26
- </div>
27
- <% else %>
28
- <p class="row column"><%= t("admin.index.empty", scope: "decidim.verifications.csv_census") %></p>
29
- <% end %>
30
- </div>
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
- <div class="card-divider">
33
- <h2 class="card-title">
34
- <%= t("admin.new.title", scope: "decidim.verifications.csv_census") %>
35
- </h2>
36
- </div>
37
- <div class="card-section">
38
- <div class="row column">
39
- <p><%= t("decidim.verifications.csv_census.admin.new.info") %></p>
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
- <div class="row column">
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
- <div class="item__edit-sticky">
49
- <div class="item__edit-sticky-container">
50
- <%= submit_tag t("admin.new.submit", scope: "decidim.verifications.csv_census"), class: "button button__sm button__secondary" %>
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
- </div>
53
- <% end %>
54
- </div>
55
- </div>
56
- </div>
66
+ </td>
67
+ </tr>
68
+ <% end %>
69
+ </tbody>
70
+ </table>
57
71
  </div>
58
- </div>
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,9 @@
1
+ <div class="form__wrapper pt-0">
2
+ <div class="card">
3
+ <div class="card-section">
4
+ <div id="custom-input" class="row column">
5
+ <%= form.email_field :email, autofocus: true, placeholder: t(".email") %>
6
+ </div>
7
+ </div>
8
+ </div>
9
+ </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>
@@ -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-scroll">
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></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
- <% if authorization.letter_sent? %>
38
- <%= icon "checkbox-circle-line",
39
- class: "action-icon action-icon--disabled" %>
40
- <% else %>
41
- <%= icon_link_to "checkbox-circle-line",
42
- pending_authorization_postage_path(authorization.id),
43
- t(".mark_as_sent"),
44
- method: :post,
45
- class: "action-icon--verify" %>
46
- <% end %>
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::Webpacker.register_path("#{base_path}/app/packs")
6
- Decidim::Webpacker.register_entrypoints(
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
  )
@@ -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: لم نتمكن من التحقق من حسابك أو لم تكن في تعداد المنظمة.
@@ -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: Не можахме да потвърдим вашия акаунт или не сте в преброяването на организацията.
@@ -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
- create:
177
+ create_import:
166
178
  error: S'ha produït un error en importar del cens.
167
- success: S'han importat correctament %{count} elements (%{errors} errors).
168
- destroy_all:
169
- success: S'han eliminat totes les dades del cens.
170
- destroy:
171
- confirm: L'eliminació del cens no es pot desfer. Segur que vols continuar?
172
- title: Eliminar totes les dades del cens
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
- data: Hi ha %{count} registres carregats en total. La darrera data de pujada va ser el dia %{due_date}.
175
- empty: No hi ha dades del cens. Utilitza el formulari següent per importar-lo mitjançant un fitxer CSV.
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