decidim-verifications 0.18.0 → 0.19.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/commands/decidim/verifications/confirm_user_authorization.rb +2 -0
- data/app/controllers/decidim/verifications/authorizations_controller.rb +3 -3
- data/app/controllers/decidim/verifications/csv_census/admin/census_controller.rb +4 -18
- data/app/controllers/decidim/verifications/id_documents/authorizations_controller.rb +3 -0
- data/app/controllers/decidim/verifications/postal_letter/admin/postages_controller.rb +1 -1
- data/app/controllers/decidim/verifications/sms/authorizations_controller.rb +3 -3
- data/app/forms/decidim/verifications/sms/mobile_phone_form.rb +2 -0
- data/app/models/decidim/verifications/csv_census/data.rb +3 -3
- data/app/models/decidim/verifications/csv_datum.rb +2 -0
- data/app/views/decidim/verifications/authorizations/new.html.erb +1 -3
- data/app/views/decidim/verifications/csv_census/admin/census/index.html.erb +6 -0
- data/app/views/decidim/verifications/sms/authorizations/edit.html.erb +1 -1
- data/app/views/decidim/verifications/sms/authorizations/new.html.erb +1 -1
- data/config/locales/ar.yml +0 -1
- data/config/locales/ca.yml +1 -1
- data/config/locales/cs.yml +1 -1
- data/config/locales/de.yml +0 -1
- data/config/locales/en.yml +1 -1
- data/config/locales/es-MX.yml +1 -1
- data/config/locales/es-PY.yml +1 -1
- data/config/locales/es.yml +1 -1
- data/config/locales/eu.yml +0 -1
- data/config/locales/fi-plain.yml +1 -1
- data/config/locales/fi.yml +1 -1
- data/config/locales/fr.yml +1 -1
- data/config/locales/gl.yml +0 -1
- data/config/locales/hu.yml +5 -5
- data/config/locales/id-ID.yml +0 -1
- data/config/locales/it.yml +1 -2
- data/config/locales/nl.yml +2 -2
- data/config/locales/no.yml +4 -0
- data/config/locales/pl.yml +0 -1
- data/config/locales/pt-BR.yml +0 -1
- data/config/locales/pt.yml +0 -1
- data/config/locales/sv.yml +93 -94
- data/config/locales/tr-TR.yml +0 -1
- data/lib/decidim/verifications/version.rb +1 -1
- metadata +10 -11
- data/app/permissions/decidim/verifications/csv_census/admin/permissions.rb +0 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2031448fe03c504353397420e98549ea5f90c353591ac4b7846f3f119e3413df
|
4
|
+
data.tar.gz: 5d27d011a65c64c4cc2c8b5c2a6e5b75bbaaccca6a4af0f9998e76d7d23661a2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ce6e22177bebe2537209cb415a70127fb53aff4a85822d271f5296c4893ff8fa7ae33da902b5b1abcf0a7c3de2ec48c2cb7d5532dca346ae88086b84c6e5fda0
|
7
|
+
data.tar.gz: 8dd934602ce6e073edc198e964207dec7ea3d6d052dea2a78f145ff6a13c0d5c25779e3b4b3abaa8e9c3adc440da99d57c05d4597a5465adf6688c8e288ec418
|
@@ -36,7 +36,7 @@ module Decidim
|
|
36
36
|
AuthorizeUser.call(handler) do
|
37
37
|
on(:ok) do
|
38
38
|
flash[:notice] = t("authorizations.create.success", scope: "decidim.verifications")
|
39
|
-
redirect_to
|
39
|
+
redirect_to redirect_url || authorizations_path
|
40
40
|
end
|
41
41
|
|
42
42
|
on(:invalid) do
|
@@ -88,9 +88,9 @@ module Decidim
|
|
88
88
|
end
|
89
89
|
|
90
90
|
def store_current_location
|
91
|
-
return if
|
91
|
+
return if redirect_url.blank? || !request.format.html?
|
92
92
|
|
93
|
-
store_location_for(:user,
|
93
|
+
store_location_for(:user, redirect_url)
|
94
94
|
end
|
95
95
|
end
|
96
96
|
end
|
@@ -5,26 +5,19 @@ module Decidim
|
|
5
5
|
module CsvCensus
|
6
6
|
module Admin
|
7
7
|
class CensusController < Decidim::Admin::ApplicationController
|
8
|
-
include NeedsPermission
|
9
|
-
|
10
8
|
layout "decidim/admin/users"
|
11
9
|
|
12
10
|
before_action :show_instructions,
|
13
11
|
unless: :csv_census_active?
|
14
12
|
|
15
|
-
register_permissions(::Decidim::Verifications::CsvCensus::Admin::CensusController,
|
16
|
-
::Decidim::Verifications::CsvCensus::Admin::Permissions,
|
17
|
-
::Decidim::Admin::Permissions,
|
18
|
-
::Decidim::Permissions)
|
19
|
-
|
20
13
|
def index
|
21
|
-
enforce_permission_to :index,
|
14
|
+
enforce_permission_to :index, :authorization
|
22
15
|
@form = form(CensusDataForm).instance
|
23
16
|
@status = Status.new(current_organization)
|
24
17
|
end
|
25
18
|
|
26
19
|
def create
|
27
|
-
enforce_permission_to :create,
|
20
|
+
enforce_permission_to :create, :authorization
|
28
21
|
@form = form(CensusDataForm).from_params(params)
|
29
22
|
CreateCensusData.call(@form, current_organization) do
|
30
23
|
on(:ok) do
|
@@ -39,7 +32,7 @@ module Decidim
|
|
39
32
|
end
|
40
33
|
|
41
34
|
def destroy_all
|
42
|
-
enforce_permission_to :destroy,
|
35
|
+
enforce_permission_to :destroy, :authorization
|
43
36
|
CsvDatum.clear(current_organization)
|
44
37
|
|
45
38
|
redirect_to census_path, notice: t(".success")
|
@@ -48,20 +41,13 @@ module Decidim
|
|
48
41
|
private
|
49
42
|
|
50
43
|
def show_instructions
|
44
|
+
enforce_permission_to :index, :authorization
|
51
45
|
render :instructions
|
52
46
|
end
|
53
47
|
|
54
48
|
def csv_census_active?
|
55
49
|
current_organization.available_authorizations.include?("csv_census")
|
56
50
|
end
|
57
|
-
|
58
|
-
def permission_class_chain
|
59
|
-
::Decidim.permissions_registry.chain_for(::Decidim::Verifications::CsvCensus::Admin::CensusController)
|
60
|
-
end
|
61
|
-
|
62
|
-
def permission_scope
|
63
|
-
:admin
|
64
|
-
end
|
65
51
|
end
|
66
52
|
end
|
67
53
|
end
|
@@ -13,11 +13,13 @@ module Decidim
|
|
13
13
|
|
14
14
|
def choose
|
15
15
|
return redirect_to action: :new, using: verification_type if available_methods.count == 1
|
16
|
+
|
16
17
|
render :choose
|
17
18
|
end
|
18
19
|
|
19
20
|
def new
|
20
21
|
raise ActionController::RoutingError, "Method not available" unless available_methods.include?(verification_type)
|
22
|
+
|
21
23
|
enforce_permission_to :create, :authorization, authorization: @authorization
|
22
24
|
|
23
25
|
@form = UploadForm.from_params(id_document_upload: { verification_type: verification_type })
|
@@ -92,6 +94,7 @@ module Decidim
|
|
92
94
|
|
93
95
|
def authorization_verification_type
|
94
96
|
return unless @authorization
|
97
|
+
|
95
98
|
@authorization.verification_metadata["verification_type"]
|
96
99
|
end
|
97
100
|
|
@@ -24,7 +24,7 @@ module Decidim
|
|
24
24
|
end
|
25
25
|
|
26
26
|
on(:invalid) do
|
27
|
-
render json: { error: I18n.t("postages.create.error", scope: "decidim.verifications.postal_letter.admin") }, status:
|
27
|
+
render json: { error: I18n.t("postages.create.error", scope: "decidim.verifications.postal_letter.admin") }, status: :unprocessable_entity
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
@@ -21,7 +21,7 @@ module Decidim
|
|
21
21
|
on(:ok) do
|
22
22
|
flash[:notice] = t("authorizations.create.success", scope: "decidim.verifications.sms")
|
23
23
|
authorization_method = Decidim::Verifications::Adapter.from_element(authorization.name)
|
24
|
-
redirect_to authorization_method.resume_authorization_path(redirect_url:
|
24
|
+
redirect_to authorization_method.resume_authorization_path(redirect_url: redirect_url)
|
25
25
|
end
|
26
26
|
on(:invalid) do
|
27
27
|
flash.now[:alert] = t("authorizations.create.error", scope: "decidim.verifications.sms")
|
@@ -45,8 +45,8 @@ module Decidim
|
|
45
45
|
on(:ok) do
|
46
46
|
flash[:notice] = t("authorizations.update.success", scope: "decidim.verifications.sms")
|
47
47
|
|
48
|
-
if
|
49
|
-
redirect_to
|
48
|
+
if redirect_url
|
49
|
+
redirect_to redirect_url
|
50
50
|
else
|
51
51
|
redirect_to decidim_verifications.authorizations_path
|
52
52
|
end
|
@@ -25,6 +25,7 @@ module Decidim
|
|
25
25
|
# When there's a phone number, sanitize it allowing only numbers and +.
|
26
26
|
def mobile_phone_number
|
27
27
|
return unless super
|
28
|
+
|
28
29
|
super.gsub(/[^\+0-9]/, "")
|
29
30
|
end
|
30
31
|
|
@@ -43,6 +44,7 @@ module Decidim
|
|
43
44
|
return @verification_code if defined?(@verification_code)
|
44
45
|
|
45
46
|
return unless sms_gateway.new(mobile_phone_number, generated_code).deliver_code
|
47
|
+
|
46
48
|
@verification_code = generated_code
|
47
49
|
end
|
48
50
|
|
@@ -20,7 +20,7 @@ module Decidim
|
|
20
20
|
@values = []
|
21
21
|
@errors = []
|
22
22
|
|
23
|
-
CSV.foreach(@file
|
23
|
+
CSV.foreach(@file) do |row|
|
24
24
|
process_row(row)
|
25
25
|
end
|
26
26
|
end
|
@@ -28,8 +28,8 @@ module Decidim
|
|
28
28
|
private
|
29
29
|
|
30
30
|
def process_row(row)
|
31
|
-
user_mail = row
|
32
|
-
if user_mail.present?
|
31
|
+
user_mail = row.first
|
32
|
+
if user_mail.present? && user_mail.match?(Devise.email_regexp)
|
33
33
|
values << user_mail
|
34
34
|
else
|
35
35
|
errors << row
|
@@ -10,9 +10,7 @@
|
|
10
10
|
<div class="columns large-6 medium-centered">
|
11
11
|
<div class="card">
|
12
12
|
<div class="card__content">
|
13
|
-
<%= authorization_form_for(handler, url: authorizations_path(redirect_url:
|
14
|
-
<%= form.error_for(:base) %>
|
15
|
-
|
13
|
+
<%= authorization_form_for(handler, url: authorizations_path(redirect_url: redirect_url)) do |form| %>
|
16
14
|
<% if lookup_context.exists?(handler.to_partial_path, [], true) %>
|
17
15
|
<%= render partial: handler.to_partial_path, locals: { handler: handler, form: form } %>
|
18
16
|
<% else %>
|
@@ -28,6 +28,12 @@
|
|
28
28
|
</div>
|
29
29
|
<div class="card-section">
|
30
30
|
<p><%= t("decidim.verifications.csv_census.admin.new.info") %></p>
|
31
|
+
<pre class="code-block">
|
32
|
+
user@example.org
|
33
|
+
user2@example.org
|
34
|
+
...
|
35
|
+
...
|
36
|
+
</pre>
|
31
37
|
<%= form_tag census_path, multipart: true, class: "form" do %>
|
32
38
|
<%= label_tag :name, t("admin.new.file", scope: "decidim.verifications.csv_census") %>
|
33
39
|
<%= file_field_tag :file %>
|
@@ -10,7 +10,7 @@
|
|
10
10
|
<div class="columns large-6 medium-centered">
|
11
11
|
<div class="card">
|
12
12
|
<div class="card__content">
|
13
|
-
<%= decidim_form_for(@form, url: authorization_path(redirect_url:
|
13
|
+
<%= decidim_form_for(@form, url: authorization_path(redirect_url: redirect_url), method: :put) do |form| %>
|
14
14
|
<div class="field">
|
15
15
|
<%= form.text_field :verification_code %>
|
16
16
|
</div>
|
@@ -10,7 +10,7 @@
|
|
10
10
|
<div class="columns large-6 medium-centered">
|
11
11
|
<div class="card">
|
12
12
|
<div class="card__content">
|
13
|
-
<%= decidim_form_for(@form, url: authorization_path(redirect_url:
|
13
|
+
<%= decidim_form_for(@form, url: authorization_path(redirect_url: redirect_url)) do |form| %>
|
14
14
|
<div class="field">
|
15
15
|
<%= form.text_field :mobile_phone_number %>
|
16
16
|
</div>
|
data/config/locales/ar.yml
CHANGED
@@ -104,7 +104,6 @@ ar:
|
|
104
104
|
title: تحتاج إلى تنشيط التعداد CSV لهذه المنظمة
|
105
105
|
new:
|
106
106
|
file: ".csv ملف مع بيانات رسائل البريد الإلكتروني"
|
107
|
-
info: 'يجب أن يكون ملفًا بتنسيق CSV مع عمود واحد: البريد الإلكتروني'
|
108
107
|
submit: رفع ملف
|
109
108
|
title: تحميل إحصاء جديد
|
110
109
|
authorizations:
|
data/config/locales/ca.yml
CHANGED
@@ -104,7 +104,7 @@ ca:
|
|
104
104
|
title: Necessites activar el cens csv d'aquesta organització
|
105
105
|
new:
|
106
106
|
file: "fitxer .csv amb dades de correus electrònics"
|
107
|
-
info: 'Ha de ser un
|
107
|
+
info: 'Ha de ser un document en format CSV amb una única columna indicant les adreces electròniques:'
|
108
108
|
submit: Puja un document
|
109
109
|
title: Puja un nou cens
|
110
110
|
authorizations:
|
data/config/locales/cs.yml
CHANGED
@@ -104,7 +104,7 @@ cs:
|
|
104
104
|
title: Pro tuto organizaci musíte aktivovat csv sčítání
|
105
105
|
new:
|
106
106
|
file: ".csv soubor s daty e-mailů"
|
107
|
-
info: '
|
107
|
+
info: 'Must být souborem ve formátu CSV s pouze jedním sloupcem s e-mailovou adresou:'
|
108
108
|
submit: Nahrát soubor
|
109
109
|
title: Nahrajte nové sčítání
|
110
110
|
authorizations:
|
data/config/locales/de.yml
CHANGED
@@ -104,7 +104,6 @@ de:
|
|
104
104
|
title: Sie müssen die csv-Zählung für diese Organisation aktivieren
|
105
105
|
new:
|
106
106
|
file: "CSV-Datei mit E-Mail-Daten"
|
107
|
-
info: 'Muss eine Datei im CSV-Format mit einer Spalte sein: E-Mail'
|
108
107
|
submit: Datei hochladen
|
109
108
|
title: Laden Sie eine neue Volkszählung hoch
|
110
109
|
authorizations:
|
data/config/locales/en.yml
CHANGED
@@ -105,7 +105,7 @@ en:
|
|
105
105
|
title: You need to activate the csv census for this organization
|
106
106
|
new:
|
107
107
|
file: ".csv file with emails data"
|
108
|
-
info: 'Must be a file
|
108
|
+
info: 'Must be a file in CSV format with only one column with the email address:'
|
109
109
|
submit: Upload file
|
110
110
|
title: Upload a new census
|
111
111
|
authorizations:
|
data/config/locales/es-MX.yml
CHANGED
@@ -104,7 +104,7 @@ es-MX:
|
|
104
104
|
title: Necesitas activar el censo csv para esta organización.
|
105
105
|
new:
|
106
106
|
file: "archivo .csv con datos de correos electrónicos"
|
107
|
-
info: 'Debe ser un archivo
|
107
|
+
info: 'Debe ser un archivo en formato CSV con sólo una columna con la dirección de correo electrónico:'
|
108
108
|
submit: Subir archivo
|
109
109
|
title: Subir un nuevo censo
|
110
110
|
authorizations:
|
data/config/locales/es-PY.yml
CHANGED
@@ -104,7 +104,7 @@ es-PY:
|
|
104
104
|
title: Necesitas activar el censo csv para esta organización.
|
105
105
|
new:
|
106
106
|
file: "archivo .csv con datos de correos electrónicos"
|
107
|
-
info: 'Debe ser un archivo
|
107
|
+
info: 'Debe ser un archivo en formato CSV con sólo una columna con la dirección de correo electrónico:'
|
108
108
|
submit: Subir archivo
|
109
109
|
title: Subir un nuevo censo
|
110
110
|
authorizations:
|
data/config/locales/es.yml
CHANGED
@@ -104,7 +104,7 @@ es:
|
|
104
104
|
title: Necesitas activar el censo csv para esta organización.
|
105
105
|
new:
|
106
106
|
file: "archivo .csv con datos de correos electrónicos"
|
107
|
-
info: 'Debe ser un archivo
|
107
|
+
info: 'Debe ser un archivo en formato CSV con sólo una columna con la dirección de correo electrónico:'
|
108
108
|
submit: Subir archivo
|
109
109
|
title: Subir un nuevo censo
|
110
110
|
authorizations:
|
data/config/locales/eu.yml
CHANGED
@@ -104,7 +104,6 @@ eu:
|
|
104
104
|
title: Erakunde honetarako Csv errolda aktibatu behar duzu
|
105
105
|
new:
|
106
106
|
file: ".csv fitxategia helbide elektronikoen datuekin"
|
107
|
-
info: 'Fitxategi bat CSV formatuarekin izan behar da zutabe batekin: posta elektronikoa'
|
108
107
|
submit: Kargatu fitxategia
|
109
108
|
title: Kargatu zentsu berri bat
|
110
109
|
authorizations:
|
data/config/locales/fi-plain.yml
CHANGED
@@ -104,7 +104,7 @@ fi-pl:
|
|
104
104
|
title: Sinun on aktivoitava CSV-rekisteritiedot tälle organisaatiolle
|
105
105
|
new:
|
106
106
|
file: "sähköpostiosoitteet sisältävä .csv-tiedosto"
|
107
|
-
info: 'On oltava CSV-
|
107
|
+
info: 'On oltava CSV-tiedosto, jossa on vain yksi sarake sähköpostiosoitteille:'
|
108
108
|
submit: Lataa tiedosto
|
109
109
|
title: Lataa uusi rekisteri
|
110
110
|
authorizations:
|
data/config/locales/fi.yml
CHANGED
@@ -104,7 +104,7 @@ fi:
|
|
104
104
|
title: Sinun on aktivoitava CSV-rekisteritiedot tälle organisaatiolle
|
105
105
|
new:
|
106
106
|
file: "sähköpostiosoitteet sisältävä .csv-tiedosto"
|
107
|
-
info: 'On oltava CSV-
|
107
|
+
info: 'On oltava CSV-tiedosto, jossa on vain yksi sarake sähköpostiosoitteille:'
|
108
108
|
submit: Lataa tiedosto
|
109
109
|
title: Lataa uusi rekisteri
|
110
110
|
authorizations:
|
data/config/locales/fr.yml
CHANGED
@@ -104,7 +104,7 @@ fr:
|
|
104
104
|
title: Vous devez activer le recensement CSV pour cette organisation
|
105
105
|
new:
|
106
106
|
file: "Fichier .csv avec données de courrier électronique"
|
107
|
-
info: 'Doit être un fichier au format CSV avec une colonne
|
107
|
+
info: 'Doit être un fichier au format CSV avec une seule colonne avec l''adresse e-mail :'
|
108
108
|
submit: Téléverser un fichier
|
109
109
|
title: Télécharger un nouveau recensement
|
110
110
|
authorizations:
|
data/config/locales/gl.yml
CHANGED
@@ -104,7 +104,6 @@ gl:
|
|
104
104
|
title: Debe activar o censo de csv para esta organización
|
105
105
|
new:
|
106
106
|
file: "Ficheiro .csv con datos de correo electrónico"
|
107
|
-
info: 'Debe ser un ficheiro con formato CSV cunha columna: correo electrónico'
|
108
107
|
submit: Cargar ficheiro
|
109
108
|
title: Suba un novo censo
|
110
109
|
authorizations:
|
data/config/locales/hu.yml
CHANGED
@@ -31,13 +31,13 @@ hu:
|
|
31
31
|
organization:
|
32
32
|
update_id_documents_config: "%{user_name} frissítette az azonosító dokumentumok ellenőrzési konfigurációját"
|
33
33
|
user:
|
34
|
-
grant_id_documents_offline_verification: "%{user_name}
|
34
|
+
grant_id_documents_offline_verification: "%{user_name} hitelesítve %{resource_name} egy offline azonosító dokumentum ellenőrzésével"
|
35
35
|
authorization_handlers:
|
36
36
|
admin:
|
37
37
|
csv_census:
|
38
38
|
help:
|
39
|
-
- Az adminisztrátorok CSV-t töltenek
|
40
|
-
- Csak azok a résztvevők kaphatnak igazolást,
|
39
|
+
- Az adminisztrátorok CSV-t töltenek fel az elfogadott résztvevők emailcímeivel
|
40
|
+
- Csak azok a résztvevők kaphatnak igazolást, akiknek az emailje megtalálható a CSV-fájlban
|
41
41
|
id_documents:
|
42
42
|
help:
|
43
43
|
- A felhasználók kitölthetik az adatlapjukat és feltölthetik dokumentumaikat.
|
@@ -46,7 +46,7 @@ hu:
|
|
46
46
|
- Ha nem láthatók tisztán az információk vagy nem tudod ellenőrizni, akkor elutasíthatod és visszaküldheted javításra a kérelmet.
|
47
47
|
postal_letter:
|
48
48
|
help:
|
49
|
-
-
|
49
|
+
- Felhasználók a lakcímükre kérik az ellenőrző kódot.
|
50
50
|
- A kódot tartalmazó levelet a lakcímükre küldöd el.
|
51
51
|
- Levél elküldöttként megjelölve.
|
52
52
|
- Miután a levelet megjelölted elküldöttként, a felhasználó a kód segítségével ellenőrizhető lesz.
|
@@ -104,7 +104,7 @@ hu:
|
|
104
104
|
title: Ennek a szervezetnek aktiválnia kell a csv népszámlálást
|
105
105
|
new:
|
106
106
|
file: ".csv fájl e-mail adatokkal"
|
107
|
-
info: 'CSV formátumú
|
107
|
+
info: 'CSV formátumú fájl lehet csak egy oszloppal, amely az email címeket tartalmazza:'
|
108
108
|
submit: Fájl feltöltés
|
109
109
|
title: Töltsön fel egy új népszámlálást
|
110
110
|
authorizations:
|
data/config/locales/id-ID.yml
CHANGED
@@ -104,7 +104,6 @@ id:
|
|
104
104
|
title: Anda perlu mengaktifkan sensus csv untuk organisasi ini
|
105
105
|
new:
|
106
106
|
file: "File .csv dengan data email"
|
107
|
-
info: 'Harus berupa file dengan format CSV dengan satu kolom: email'
|
108
107
|
submit: Unggah data
|
109
108
|
title: Unggah sensus baru
|
110
109
|
authorizations:
|
data/config/locales/it.yml
CHANGED
@@ -104,7 +104,6 @@ it:
|
|
104
104
|
title: È necessario attivare il censimento CSV per questa organizzazione
|
105
105
|
new:
|
106
106
|
file: "file .csv con dati di posta elettronica"
|
107
|
-
info: 'Deve essere un file con formato CSV con una colonna: email'
|
108
107
|
submit: Caricare un file
|
109
108
|
title: Carica un nuovo censimento
|
110
109
|
authorizations:
|
@@ -184,7 +183,7 @@ it:
|
|
184
183
|
mark_as_sent: Marca come inviato
|
185
184
|
not_yet_sent: Non ancora inviato
|
186
185
|
title: Verifiche in corso
|
187
|
-
username:
|
186
|
+
username: Nickname
|
188
187
|
verification_code: Codice di verifica
|
189
188
|
postages:
|
190
189
|
create:
|
data/config/locales/nl.yml
CHANGED
@@ -54,7 +54,7 @@ nl:
|
|
54
54
|
explanation: Wordt geverifieerd aan de hand van de volkstelling van de organisatie
|
55
55
|
name: De volkstelling van de organisatie
|
56
56
|
direct: direct
|
57
|
-
help:
|
57
|
+
help: Help
|
58
58
|
id_documents:
|
59
59
|
explanation: Upload uw identiteitsdocumenten zodat we uw identiteit kunnen controleren
|
60
60
|
name: Identiteitsdocumenten
|
@@ -104,7 +104,7 @@ nl:
|
|
104
104
|
title: U moet de csv-telling voor deze organisatie activeren
|
105
105
|
new:
|
106
106
|
file: ".csv-bestand met e-mailgegevens"
|
107
|
-
info: 'Moet een bestand zijn
|
107
|
+
info: 'Moet een bestand zijn in CSV formaat met slechts één kolom met het e-mailadres:'
|
108
108
|
submit: Upload bestand
|
109
109
|
title: Upload een nieuwe telling
|
110
110
|
authorizations:
|
data/config/locales/pl.yml
CHANGED
@@ -104,7 +104,6 @@ pl:
|
|
104
104
|
title: Musisz aktywować spis csv dla tej organizacji
|
105
105
|
new:
|
106
106
|
file: "Plik .csv z danymi e-maili"
|
107
|
-
info: 'Musi to być plik w formacie CSV z jedną kolumną: e-mail'
|
108
107
|
submit: Przesyłanie pliku
|
109
108
|
title: Prześlij nowy spis ludności
|
110
109
|
authorizations:
|
data/config/locales/pt-BR.yml
CHANGED
@@ -104,7 +104,6 @@ pt-BR:
|
|
104
104
|
title: Você precisa ativar o censo csv para esta organização
|
105
105
|
new:
|
106
106
|
file: "arquivo .csv com dados de e-mails"
|
107
|
-
info: 'Deve ser um arquivo com formato CSV com uma coluna: email'
|
108
107
|
submit: Subir arquivo
|
109
108
|
title: Carregar um novo censo
|
110
109
|
authorizations:
|
data/config/locales/pt.yml
CHANGED
@@ -104,7 +104,6 @@ pt:
|
|
104
104
|
title: Você precisa ativar o censo csv para esta organização
|
105
105
|
new:
|
106
106
|
file: "arquivo .csv com dados de e-mails"
|
107
|
-
info: 'Deve ser um arquivo com formato CSV com uma coluna: email'
|
108
107
|
submit: Subir arquivo
|
109
108
|
title: Carregar um novo censo
|
110
109
|
authorizations:
|
data/config/locales/sv.yml
CHANGED
@@ -3,19 +3,19 @@ sv:
|
|
3
3
|
attributes:
|
4
4
|
config:
|
5
5
|
available_methods: Tillgängliga metoder
|
6
|
-
offline:
|
7
|
-
offline_explanation:
|
6
|
+
offline: Offline
|
7
|
+
offline_explanation: Anvisningar för verifiering offline
|
8
8
|
online: Uppkopplad
|
9
9
|
id_document_information:
|
10
|
-
document_number:
|
11
|
-
document_type: Typ av
|
10
|
+
document_number: ID-nummer (med bokstav)
|
11
|
+
document_type: Typ av ID-handling
|
12
12
|
id_document_upload:
|
13
|
-
document_number:
|
14
|
-
document_type: Typ av
|
15
|
-
user:
|
16
|
-
verification_attachment:
|
13
|
+
document_number: ID-nummer (med bokstav)
|
14
|
+
document_type: Typ av ID-handling
|
15
|
+
user: Deltagare
|
16
|
+
verification_attachment: Inläst kopia av ID-handlingen
|
17
17
|
offline_confirmation:
|
18
|
-
email:
|
18
|
+
email: Deltagarens e-post
|
19
19
|
postal_letter_address:
|
20
20
|
full_address: Fullständig adress
|
21
21
|
postal_letter_confirmation:
|
@@ -29,149 +29,148 @@ sv:
|
|
29
29
|
authorization_workflows: Verifieringar
|
30
30
|
admin_log:
|
31
31
|
organization:
|
32
|
-
update_id_documents_config: "%{user_name} uppdaterade konfiguration av identitetshandlingar"
|
32
|
+
update_id_documents_config: "%{user_name} uppdaterade konfiguration för verifikation av identitetshandlingar"
|
33
33
|
user:
|
34
|
-
grant_id_documents_offline_verification: "%{user_name}
|
34
|
+
grant_id_documents_offline_verification: "%{user_name} verifierade %{resource_name} hjälp av offlineverifiering av identitetshandlingar"
|
35
35
|
authorization_handlers:
|
36
36
|
admin:
|
37
37
|
csv_census:
|
38
38
|
help:
|
39
|
-
-
|
40
|
-
- Endast deltagare med
|
39
|
+
- Administratörer kan skicka in CSV-fil med e-postadresserna till de godkända deltagarna
|
40
|
+
- Endast deltagare med en e-postadress i CSV-filen kan verifieras
|
41
41
|
id_documents:
|
42
42
|
help:
|
43
|
-
- Användare fyller i sin identitetsinformation och
|
44
|
-
- Du fyller i informationen som
|
45
|
-
- Informationen ska
|
46
|
-
- Om
|
43
|
+
- Användare fyller i sin identitetsinformation och skickar in en kopia av sin ID-handling.
|
44
|
+
- Du fyller i informationen som visas i den inskickade bilden.
|
45
|
+
- Informationen ska stämma överens med vad användaren fyllde i.
|
46
|
+
- Om informationen inte visas tydligt, eller om du inte kan verifiera den, kan du avvisa förfrågan och användaren kommer att kunna åtgärda den.
|
47
47
|
postal_letter:
|
48
48
|
help:
|
49
|
-
-
|
50
|
-
-
|
49
|
+
- Deltagare begär en verifieringskod som ska skickas till deras adress.
|
50
|
+
- Skicka brevet med verifieringskoden till deras adress.
|
51
51
|
- Du markerar brevet som skickat.
|
52
|
-
- När du
|
52
|
+
- När du markerat brevet som skickat kommer användaren att kunna föra in koden och bli verifierad.
|
53
53
|
csv_census:
|
54
|
-
explanation:
|
55
|
-
name: Organisationens
|
54
|
+
explanation: Bli verifierad med hjälp av organisationens medlemslista
|
55
|
+
name: Organisationens medlemslista
|
56
56
|
direct: Direkt
|
57
57
|
help: Hjälp
|
58
58
|
id_documents:
|
59
|
-
explanation:
|
59
|
+
explanation: Skicka in dina identitetshandlingar så att vi kan kontrollera din identitet
|
60
60
|
name: Identitetsdokument
|
61
|
-
multistep:
|
61
|
+
multistep: Flera steg
|
62
62
|
name: Namn
|
63
63
|
postal_letter:
|
64
|
-
explanation: Vi skickar dig ett brev med en kod som du måste ange så vi kan verifiera din adress
|
65
|
-
name: Kod
|
64
|
+
explanation: Vi skickar dig ett brev med en kod som du måste ange så att vi kan verifiera din adress
|
65
|
+
name: Kod via fysiskt brev
|
66
66
|
verifications:
|
67
67
|
authorizations:
|
68
68
|
create:
|
69
|
-
error:
|
70
|
-
success: Du har
|
71
|
-
unconfirmed: Du måste bekräfta din e-post för att auktorisera dig själv.
|
69
|
+
error: Det gick inte att skapa auktoriseringen.
|
70
|
+
success: Du har auktoriserats.
|
71
|
+
unconfirmed: Du måste bekräfta din e-post för att kunna auktorisera dig själv.
|
72
72
|
first_login:
|
73
73
|
actions:
|
74
|
-
another_dummy_authorization_handler: Verifiera
|
75
|
-
csv_census: Verifiera mot organisationens
|
76
|
-
dummy_authorization_handler: Verifiera
|
77
|
-
dummy_authorization_workflow: Verifiera
|
78
|
-
id_documents:
|
79
|
-
postal_letter:
|
74
|
+
another_dummy_authorization_handler: Verifiera med hjälp av ett annat auktoriseringsverktyg
|
75
|
+
csv_census: Verifiera mot organisationens medlemslista
|
76
|
+
dummy_authorization_handler: Verifiera via exempelbehörighetshanteraren
|
77
|
+
dummy_authorization_workflow: Verifiera med exemplet på arbetsflöde för auktorisering
|
78
|
+
id_documents: Verifiera dig genom att skicka in din identitetshandling
|
79
|
+
postal_letter: Verifiera dig genom att ta emot en verifieringskod via fysiskt brev
|
80
80
|
title: Verifiera din identitet
|
81
81
|
verify_with_these_options: 'Det här är de tillgängliga alternativen för att verifiera din identitet:'
|
82
82
|
new:
|
83
83
|
authorize: Skicka
|
84
84
|
authorize_with: Verifiera med %{authorizer}
|
85
|
-
skip_verification: Du kan hoppa över
|
85
|
+
skip_verification: Du kan hoppa över detta just nu och %{link}
|
86
86
|
start_exploring: börja utforska
|
87
87
|
csv_census:
|
88
88
|
admin:
|
89
89
|
census:
|
90
90
|
create:
|
91
|
-
error: Det gick inte att importera
|
91
|
+
error: Det gick inte att importera folkbokföringen.
|
92
92
|
success: Har importerat %{count} objekt (%{errors} fel)
|
93
93
|
destroy_all:
|
94
|
-
success: Alla
|
94
|
+
success: Alla medlemsuppgifeter har raderats
|
95
95
|
destroy:
|
96
|
-
confirm:
|
97
|
-
title: Radera alla
|
96
|
+
confirm: Raderingen av samtliga medlemsuppgifter kan inte ångras. Vill du fortsätta?
|
97
|
+
title: Radera alla medlemsuppgifter
|
98
98
|
index:
|
99
|
-
data: Det finns totalt %{count} poster
|
100
|
-
empty: Det finns inga
|
101
|
-
title:
|
99
|
+
data: Det finns totalt %{count} inlästa poster. Datum för senaste uppdatering var %{due_date}
|
100
|
+
empty: Det finns inga medlemsuppgifter. Importera dem som en CSV-fil med formuläret nedan.
|
101
|
+
title: Aktuella medlemsuppgifter
|
102
102
|
instructions:
|
103
|
-
body: För att göra detta måste du
|
104
|
-
title: Du måste aktivera
|
103
|
+
body: För att göra detta måste du öppna systemadministrationen och lägga till godkännande via csv_census till organisationen
|
104
|
+
title: Du måste aktivera medlemsuppgifter via CSV för organisationen
|
105
105
|
new:
|
106
|
-
file: ".csv-fil med e-
|
107
|
-
|
108
|
-
|
109
|
-
title: Ladda upp en ny folkräkning
|
106
|
+
file: ".csv-fil med e-postadresser"
|
107
|
+
submit: Skicka in fil
|
108
|
+
title: Skicka in nya medlemsuppgifter
|
110
109
|
authorizations:
|
111
110
|
new:
|
112
|
-
error: Vi kunde inte verifiera ditt konto eller du
|
111
|
+
error: Vi kunde inte verifiera ditt konto, eller så finns du inte i organisationens medlemsuppgifter.
|
113
112
|
success: Ditt konto har verifierats.
|
114
113
|
dummy_authorization:
|
115
114
|
extra_explanation:
|
116
|
-
one: Deltagande är begränsat till
|
117
|
-
other: 'Deltagande är begränsat till
|
115
|
+
one: Deltagande är begränsat till deltagare med postnummer %{postal_codes}.
|
116
|
+
other: 'Deltagande är begränsat till deltagare med något av följande postnummer: %{postal_codes}.'
|
118
117
|
id_documents:
|
119
118
|
admin:
|
120
119
|
config:
|
121
120
|
edit:
|
122
|
-
title:
|
123
|
-
update:
|
121
|
+
title: Identitetshandlingens konfiguration
|
122
|
+
update: Uppdatera
|
124
123
|
update:
|
125
|
-
error: Det
|
124
|
+
error: Det gick inte att uppdatera konfigurationen.
|
126
125
|
success: Konfigurationen har uppdaterats
|
127
126
|
confirmations:
|
128
127
|
create:
|
129
|
-
error: Verifieringen
|
128
|
+
error: Verifieringen stämmer inte. Försök igen eller avvisa verifieringen så att användaren kan rätta den
|
130
129
|
success: Användaren har verifierats
|
131
130
|
new:
|
132
|
-
introduce_user_data:
|
131
|
+
introduce_user_data: För in uppgifterna från bilden
|
133
132
|
reject: Avvisa
|
134
133
|
verify: Verifiera
|
135
134
|
offline_confirmations:
|
136
135
|
create:
|
137
|
-
error: Verifieringen
|
138
|
-
success:
|
136
|
+
error: Verifieringen stämmer inte. Försök igen eller be deltagaren att rätta den
|
137
|
+
success: Deltagaren har verifierats
|
139
138
|
new:
|
140
|
-
cancel:
|
141
|
-
introduce_user_data:
|
142
|
-
verify:
|
139
|
+
cancel: Avbryt
|
140
|
+
introduce_user_data: Mata in deltagarens e-postadress samt identitetsuppgifter
|
141
|
+
verify: Verifiera
|
143
142
|
pending_authorizations:
|
144
143
|
index:
|
145
|
-
config:
|
146
|
-
offline_verification: Offline
|
147
|
-
title:
|
144
|
+
config: Konfiguration
|
145
|
+
offline_verification: Offline-verifiering
|
146
|
+
title: Väntande online-verifieringar
|
148
147
|
verification_number: 'Verifiering #%{n}'
|
149
148
|
rejections:
|
150
149
|
create:
|
151
|
-
success: Verifieringen avvisades. Användaren kommer att uppmanas att
|
150
|
+
success: Verifieringen avvisades. Användaren kommer att uppmanas att rätta sina handlingar
|
152
151
|
authorizations:
|
153
152
|
choose:
|
154
153
|
choose_a_type: 'Var god välj hur du vill verifieras:'
|
155
|
-
offline:
|
156
|
-
online:
|
157
|
-
title: Verifiera dig själv med
|
154
|
+
offline: Offline
|
155
|
+
online: Online
|
156
|
+
title: Verifiera dig själv med din identitetshandling
|
158
157
|
create:
|
159
|
-
error: Det gick inte att
|
160
|
-
success: Dokumentet har
|
158
|
+
error: Det gick inte att skicka in ID-handlingen
|
159
|
+
success: Dokumentet har skickats in
|
161
160
|
edit:
|
162
|
-
being_reviewed: Vi granskar dina
|
163
|
-
offline: Använd offline
|
164
|
-
online: Använd online
|
165
|
-
rejection_clarity: Se till att informationen syns tydligt i
|
166
|
-
rejection_correctness: Se till att
|
167
|
-
rejection_notice: Det
|
161
|
+
being_reviewed: Vi granskar dina handlingar. Du kommer att verifieras inom kort
|
162
|
+
offline: Använd offline-verifiering
|
163
|
+
online: Använd online-verifiering
|
164
|
+
rejection_clarity: Se till att informationen syns tydligt i bilden som du skickade in
|
165
|
+
rejection_correctness: Se till att den angivna informationen är korrekt
|
166
|
+
rejection_notice: Det gick inte att verifiera dig. Försök igen
|
168
167
|
send: Begär verifiering igen
|
169
168
|
new:
|
170
169
|
send: Begär verifiering
|
171
|
-
title:
|
170
|
+
title: Skicka in din identitetshandling
|
172
171
|
update:
|
173
|
-
error:
|
174
|
-
success: Dokumentet
|
172
|
+
error: Det gick inte att skicka in ID-handlingen igen
|
173
|
+
success: Dokumentet har skickats in igen
|
175
174
|
dni: ID-kort
|
176
175
|
nie: Personnummer
|
177
176
|
passport: Pass
|
@@ -180,49 +179,49 @@ sv:
|
|
180
179
|
pending_authorizations:
|
181
180
|
index:
|
182
181
|
address: Adress
|
183
|
-
letter_sent_at: Brev skickat
|
182
|
+
letter_sent_at: Brev skickat
|
184
183
|
mark_as_sent: Markera som skickat
|
185
184
|
not_yet_sent: inte skickat än
|
186
|
-
title: Pågående
|
185
|
+
title: Pågående verifieringar
|
187
186
|
username: Användarnamn
|
188
187
|
verification_code: Verifieringskod
|
189
188
|
postages:
|
190
189
|
create:
|
191
|
-
error:
|
190
|
+
error: Det gick inte att markera brevet som skickat
|
192
191
|
success: Brevet har markerats som skickat
|
193
192
|
authorizations:
|
194
193
|
create:
|
195
|
-
error: Det
|
194
|
+
error: Det var ett problem med din förfrågan
|
196
195
|
success: Tack! Vi skickar en verifieringskod till din adress
|
197
196
|
edit:
|
198
197
|
send: Bekräfta
|
199
|
-
title:
|
200
|
-
waiting_for_letter: Vi skickar snart ett brev
|
198
|
+
title: Ange verifieringskoden som du fick
|
199
|
+
waiting_for_letter: Vi skickar snart ett brev med din verifieringskod till din adress
|
201
200
|
new:
|
202
201
|
send: Skicka mig ett brev
|
203
202
|
title: Begär din verifieringskod
|
204
203
|
update:
|
205
|
-
error: Din verifieringskod stämmer inte överens med vår.
|
204
|
+
error: Din verifieringskod stämmer inte överens med vår. Kontrollera brevet som vi skickade till dig igen
|
206
205
|
success: Grattis. Du har blivit verifierad
|
207
206
|
sms:
|
208
207
|
authorizations:
|
209
208
|
create:
|
210
|
-
error:
|
209
|
+
error: Det var ett problem med din förfrågan
|
211
210
|
success: Tack! Vi har skickat ett SMS till din telefon.
|
212
211
|
destroy:
|
213
|
-
success: Verifieringskoden
|
212
|
+
success: Verifieringskoden har återställts. Ange ditt telefonnummer igen.
|
214
213
|
edit:
|
215
214
|
confirm_destroy: Är du säker på att du vill återställa verifieringskoden?
|
216
|
-
destroy:
|
217
|
-
resend: Fick inte verifieringskoden?
|
215
|
+
destroy: Nollställ verifieringskod
|
216
|
+
resend: Fick du inte verifieringskoden?
|
218
217
|
send: Bekräfta
|
219
|
-
title:
|
218
|
+
title: Ange verifieringskoden som du fick
|
220
219
|
new:
|
221
220
|
send: Skicka mig ett SMS
|
222
221
|
title: Begär din verifieringskod
|
223
222
|
update:
|
224
|
-
error:
|
223
|
+
error: Verifieringskoden stämmer inte. Kontrollera det SMS som vi skickade till dig igen.
|
225
224
|
success: Grattis. Du har blivit verifierad.
|
226
225
|
errors:
|
227
226
|
messages:
|
228
|
-
uppercase_only_letters_numbers:
|
227
|
+
uppercase_only_letters_numbers: får endast innehålla stora bokstäver och/eller siffror
|
data/config/locales/tr-TR.yml
CHANGED
@@ -104,7 +104,6 @@ tr:
|
|
104
104
|
title: Bu kuruluş için csv sayımını etkinleştirmeniz gerekir
|
105
105
|
new:
|
106
106
|
file: "e-posta verileri içeren .csv dosyası"
|
107
|
-
info: 'Tek sütunlu CSV biçiminde bir dosya olmalı: e-posta'
|
108
107
|
submit: Dosya yükleme
|
109
108
|
title: Yeni bir nüfus sayımı yükleyin
|
110
109
|
authorizations:
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: decidim-verifications
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.19.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Rodriguez
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-10-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: decidim-core
|
@@ -16,42 +16,42 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.19.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
26
|
+
version: 0.19.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: decidim-admin
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.
|
33
|
+
version: 0.19.0
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 0.
|
40
|
+
version: 0.19.0
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: decidim-dev
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - '='
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: 0.
|
47
|
+
version: 0.19.0
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - '='
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: 0.
|
54
|
+
version: 0.19.0
|
55
55
|
description: Several verification methods for your decidim instance
|
56
56
|
email:
|
57
57
|
- deivid.rodriguez@riseup.net
|
@@ -100,7 +100,6 @@ files:
|
|
100
100
|
- app/models/decidim/verifications/csv_census/data.rb
|
101
101
|
- app/models/decidim/verifications/csv_census/status.rb
|
102
102
|
- app/models/decidim/verifications/csv_datum.rb
|
103
|
-
- app/permissions/decidim/verifications/csv_census/admin/permissions.rb
|
104
103
|
- app/presenters/decidim/verifications/id_documents/authorization_presenter.rb
|
105
104
|
- app/presenters/decidim/verifications/postal_letter/authorization_presenter.rb
|
106
105
|
- app/queries/decidim/verifications/authorizations.rb
|
@@ -147,6 +146,7 @@ files:
|
|
147
146
|
- config/locales/id-ID.yml
|
148
147
|
- config/locales/it.yml
|
149
148
|
- config/locales/nl.yml
|
149
|
+
- config/locales/no.yml
|
150
150
|
- config/locales/pl.yml
|
151
151
|
- config/locales/pt-BR.yml
|
152
152
|
- config/locales/pt.yml
|
@@ -202,8 +202,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
202
202
|
- !ruby/object:Gem::Version
|
203
203
|
version: '0'
|
204
204
|
requirements: []
|
205
|
-
|
206
|
-
rubygems_version: 2.7.6
|
205
|
+
rubygems_version: 3.0.3
|
207
206
|
signing_key:
|
208
207
|
specification_version: 4
|
209
208
|
summary: Decidim verifications module
|
@@ -1,19 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Decidim
|
4
|
-
module Verifications
|
5
|
-
module CsvCensus
|
6
|
-
module Admin
|
7
|
-
class Permissions < Decidim::DefaultPermissions
|
8
|
-
def permissions
|
9
|
-
return permission_action if permission_action.scope != :admin
|
10
|
-
if user.organization.available_authorizations.include?("csv_census")
|
11
|
-
allow! if permission_action.subject == Decidim::Verifications::CsvDatum
|
12
|
-
permission_action
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|