decidim-forms 0.23.6 → 0.24.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 (74) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/decidim/forms/forms.js.es6 +4 -4
  3. data/app/commands/decidim/forms/admin/update_questionnaire.rb +2 -1
  4. data/app/commands/decidim/forms/answer_questionnaire.rb +43 -1
  5. data/app/controllers/decidim/forms/admin/concerns/has_questionnaire.rb +10 -2
  6. data/app/controllers/decidim/forms/concerns/has_questionnaire.rb +10 -4
  7. data/app/forms/decidim/forms/admin/question_form.rb +2 -0
  8. data/app/forms/decidim/forms/answer_form.rb +27 -0
  9. data/app/helpers/decidim/forms/admin/application_helper.rb +1 -6
  10. data/app/helpers/decidim/forms/admin/concerns/has_questionnaire_answers_url_helper.rb +3 -3
  11. data/app/jobs/decidim/forms/export_questionnaire_answers_job.rb +1 -1
  12. data/app/models/decidim/forms/answer.rb +8 -0
  13. data/app/models/decidim/forms/question.rb +9 -3
  14. data/app/presenters/decidim/forms/admin/questionnaire_answer_presenter.rb +20 -0
  15. data/app/presenters/decidim/forms/admin/questionnaire_participant_presenter.rb +4 -4
  16. data/app/queries/decidim/forms/questionnaire_user_answers.rb +2 -1
  17. data/app/views/decidim/forms/admin/questionnaires/_form.html.erb +3 -3
  18. data/app/views/decidim/forms/admin/questionnaires/_question.html.erb +11 -0
  19. data/app/views/decidim/forms/admin/questionnaires/edit.html.erb +1 -1
  20. data/app/views/decidim/forms/questionnaires/_answer.html.erb +1 -1
  21. data/app/views/decidim/forms/questionnaires/answers/_files.html.erb +1 -0
  22. data/app/views/decidim/forms/questionnaires/answers/_long_answer.html.erb +1 -1
  23. data/app/views/decidim/forms/questionnaires/answers/_matrix_multiple.html.erb +2 -1
  24. data/app/views/decidim/forms/questionnaires/answers/_matrix_single.html.erb +2 -1
  25. data/app/views/decidim/forms/questionnaires/answers/_multiple_option.html.erb +2 -1
  26. data/app/views/decidim/forms/questionnaires/answers/_short_answer.html.erb +1 -1
  27. data/app/views/decidim/forms/questionnaires/answers/_single_option.html.erb +2 -1
  28. data/app/views/decidim/forms/questionnaires/show.html.erb +1 -1
  29. data/config/initializers/wicked_pdf.rb +2 -0
  30. data/config/locales/ca.yml +4 -2
  31. data/config/locales/cs.yml +8 -2
  32. data/config/locales/de.yml +8 -2
  33. data/config/locales/el.yml +1 -1
  34. data/config/locales/en.yml +8 -2
  35. data/config/locales/es-MX.yml +2 -2
  36. data/config/locales/es-PY.yml +2 -2
  37. data/config/locales/es.yml +2 -2
  38. data/config/locales/fi-plain.yml +8 -2
  39. data/config/locales/fi.yml +8 -2
  40. data/config/locales/fr-CA.yml +8 -2
  41. data/config/locales/fr.yml +8 -2
  42. data/config/locales/gl.yml +0 -3
  43. data/config/locales/it.yml +1 -2
  44. data/config/locales/ja.yml +2 -2
  45. data/config/locales/lv.yml +1 -1
  46. data/config/locales/nl.yml +4 -5
  47. data/config/locales/no.yml +1 -2
  48. data/config/locales/pl.yml +8 -2
  49. data/config/locales/pt.yml +1 -2
  50. data/config/locales/ro-RO.yml +1 -7
  51. data/config/locales/sv.yml +1 -4
  52. data/config/locales/tr-TR.yml +2 -2
  53. data/config/locales/zh-CN.yml +1 -2
  54. data/db/migrate/20210208094442_add_max_characters_to_decidim_forms_questions.rb +7 -0
  55. data/lib/decidim/api/answer_option_type.rb +13 -0
  56. data/lib/decidim/api/question_type.rb +21 -0
  57. data/lib/decidim/api/questionnaire_entity_interface.rb +5 -5
  58. data/lib/decidim/api/questionnaire_type.rb +19 -0
  59. data/lib/decidim/exporters/form_pdf_controller_helper.rb +2 -0
  60. data/lib/decidim/forms/api.rb +3 -0
  61. data/lib/decidim/forms/data_portability_user_answers_serializer.rb +7 -1
  62. data/lib/decidim/forms/test/factories.rb +12 -2
  63. data/lib/decidim/forms/test/shared_examples/has_questionnaire.rb +38 -5
  64. data/lib/decidim/forms/test/shared_examples/manage_questionnaires/add_display_conditions.rb +7 -3
  65. data/lib/decidim/forms/test/shared_examples/manage_questionnaires/add_questions.rb +1 -1
  66. data/lib/decidim/forms/test/shared_examples/manage_questionnaires/update_questions.rb +5 -0
  67. data/lib/decidim/forms/test/shared_examples/manage_questionnaires.rb +5 -4
  68. data/lib/decidim/forms/user_answers_serializer.rb +9 -1
  69. data/lib/decidim/forms/version.rb +1 -1
  70. data/lib/decidim/forms.rb +1 -1
  71. metadata +17 -15
  72. data/app/types/decidim/forms/answer_option_type.rb +0 -14
  73. data/app/types/decidim/forms/question_type.rb +0 -23
  74. data/app/types/decidim/forms/questionnaire_type.rb +0 -22
@@ -20,7 +20,8 @@ module Decidim
20
20
 
21
21
  # Finds and group answers by user for each questionnaire's question.
22
22
  def query
23
- answers = Answer.where(questionnaire: @questionnaire)
23
+ answers = Answer.not_separator.joins(:question).where(questionnaire: @questionnaire)
24
+
24
25
  answers.sort_by { |answer| answer.question.position }.group_by { |a| a.user || a.session_token }.values
25
26
  end
26
27
  end
@@ -1,7 +1,7 @@
1
1
  <div class="card">
2
2
  <div class="card-divider">
3
3
  <h2 class="card-title">
4
- <%= t(".title") %>
4
+ <%= edit_questionnaire_title %>
5
5
  <% unless template? questionnaire.questionnaire_for %>
6
6
  <% if allowed_to? :preview, :questionnaire %>
7
7
  <div class="button--title">
@@ -10,7 +10,7 @@
10
10
  <% end %>
11
11
  <% if questionnaire.answers.any? %>
12
12
  <div class="button--title">
13
- <%= export_dropdown if allowed_to? :export_answers, :questionnaire %>
13
+ <%= export_dropdown(current_component, questionnaire.id) if allowed_to? :export_answers, :questionnaire %>
14
14
  </div>
15
15
  <div class="button--title">
16
16
  <% if allowed_to? :show, :questionnaire_answers %>
@@ -18,7 +18,7 @@
18
18
  <% end %>
19
19
  </div>
20
20
  <% else %>
21
- <button class="button tiny button--title" disabled><%= t("empty", scope: "decidim.forms.admin.questionnaires.answers") %></a>
21
+ <button class="button tiny button--title" disabled><%= t("empty", scope: "decidim.forms.admin.questionnaires.answers") %></button>
22
22
  <% end %>
23
23
  <% end %>
24
24
  </h2>
@@ -73,6 +73,17 @@
73
73
  %>
74
74
  </div>
75
75
 
76
+ <div class="row column">
77
+ <%=
78
+ form.number_field(
79
+ :max_characters,
80
+ disabled: !editable,
81
+ min: 0,
82
+ label: t("activemodel.attributes.questionnaire_question.max_characters")
83
+ )
84
+ %>
85
+ </div>
86
+
76
87
  <div class="row column">
77
88
  <%=
78
89
  form.select(
@@ -2,7 +2,7 @@
2
2
  <%= render partial: "decidim/templates/admin/questionnaire_templates/choose", locals: { target: questionnaire, form_title: t("decidim.forms.admin.questionnaires.edit.title") } %>
3
3
  <% else %>
4
4
  <%= decidim_form_for(@form, url: update_url, method: :put, html: { class: "form edit_questionnaire" }) do |form| %>
5
- <%= render partial: "decidim/forms/admin/questionnaires/form", object: form, locals: { title: title_for_questionnaire } %>
5
+ <%= render partial: "decidim/forms/admin/questionnaires/form", object: form %>
6
6
 
7
7
  <div class="button--double form-general-submit">
8
8
  <%= form.submit t(".save"), class: "button" %>
@@ -17,7 +17,7 @@
17
17
  </div>
18
18
  <% end %>
19
19
 
20
- <%= render partial: "decidim/forms/questionnaires/answers/#{answer.question.question_type}", locals: { answer: answer, answer_form: answer_form, answer_idx: answer_idx, field_id: field_id, disabled: disabled } %>
20
+ <%= render partial: "decidim/forms/questionnaires/answers/#{answer.question.question_type}", locals: { answer: answer, answer_form: answer_form, answer_idx: answer_idx, field_id: field_id, disabled: disabled, maxlength: (answer.question.max_characters if answer.question.max_characters.positive?) } %>
21
21
 
22
22
  <%= answer_form.hidden_field :question_id %>
23
23
 
@@ -0,0 +1 @@
1
+ <%= answer_form.file_field :add_documents, label: false, multiple: true, id: field_id, disabled: disabled %>
@@ -1 +1 @@
1
- <%= answer_form.text_area :body, label: false, id: field_id, rows: 10, disabled: disabled %>
1
+ <%= answer_form.text_area :body, label: false, id: field_id, rows: 10, disabled: disabled, maxlength: maxlength %>
@@ -32,7 +32,8 @@
32
32
  <%= text_field_tag "questionnaire[responses][#{answer_idx}][choices][][custom_body]",
33
33
  choice.try(:custom_body),
34
34
  id: "#{choice_id}_custom_body",
35
- disabled: true %>
35
+ disabled: true,
36
+ maxlength: maxlength %>
36
37
  <% end %>
37
38
  </div>
38
39
  </td>
@@ -32,7 +32,8 @@
32
32
  <%= text_field_tag "questionnaire[responses][#{answer_idx}][choices][#{row_idx}][custom_body]",
33
33
  choice.try(:custom_body),
34
34
  id: "#{choice_id}_custom_body",
35
- disabled: true %>
35
+ disabled: true,
36
+ maxlength: maxlength %>
36
37
  <% end %>
37
38
  </div>
38
39
  </td>
@@ -16,7 +16,8 @@
16
16
  <% if answer_option.free_text %>
17
17
  <%= text_field_tag "questionnaire[responses][#{answer_idx}][choices][#{idx}][custom_body]",
18
18
  choice.try(:custom_body),
19
- disabled: true %>
19
+ disabled: true,
20
+ maxlength: maxlength %>
20
21
  <% end %>
21
22
  </div>
22
23
  <% end %>
@@ -1 +1 @@
1
- <%= answer_form.text_field :body, label: false, id: field_id, disabled: disabled %>
1
+ <%= answer_form.text_field :body, label: false, id: field_id, disabled: disabled, maxlength: maxlength %>
@@ -23,7 +23,8 @@
23
23
  <%= text_field_tag "questionnaire[responses][#{answer_idx}][choices][][custom_body]",
24
24
  choice.try(:custom_body),
25
25
  id: "#{choice_id}_custom_body",
26
- disabled: true %>
26
+ disabled: true,
27
+ maxlength: maxlength %>
27
28
  <% end %>
28
29
  </div>
29
30
  <% end %>
@@ -56,7 +56,7 @@
56
56
  </div>
57
57
  <% end %>
58
58
 
59
- <%= decidim_form_for(@form, url: update_url, method: :post, html: { class: "form answer-questionnaire" }, data: { "safe-path" => form_path }) do |form| %>
59
+ <%= decidim_form_for(@form, url: update_url, method: :post, html: { multipart: true, class: "form answer-questionnaire" }, data: { "safe-path" => form_path }) do |form| %>
60
60
  <%= form_required_explanation %>
61
61
  <%= invisible_captcha %>
62
62
  <% answer_idx = 0 %>
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "wicked_pdf"
2
4
 
3
5
  # frozen_string_literal: true
@@ -14,6 +14,8 @@ ca:
14
14
  models:
15
15
  answer:
16
16
  attributes:
17
+ add_documents:
18
+ needs_to_be_reattached: Ha de ser adjuntat de nou
17
19
  choices:
18
20
  missing: no estan complets
19
21
  too_many: en són masses
@@ -78,7 +80,6 @@ ca:
78
80
  collapse: Redueix totes les preguntes
79
81
  expand: Expandeix totes les preguntes
80
82
  preview: Previsualitzar
81
- title: Editar el formulari
82
83
  unpublished_warning: El formulari no està publicat. Pots modificar les preguntes, però al fer-ho s'esborraran les respostes actuals.
83
84
  matrix_row:
84
85
  matrix_row: Fila
@@ -110,7 +111,7 @@ ca:
110
111
  answer:
111
112
  body: El camp no pot estar en blanc
112
113
  files:
113
- extension_whitelist: 'Formats d''arxiu acceptats:'
114
+ extension_allowlist: 'Formats d''arxiu acceptats:'
114
115
  images:
115
116
  dimensions: "%{width} x %{height} px"
116
117
  dimensions_info: 'Aquesta imatge medirà:'
@@ -118,6 +119,7 @@ ca:
118
119
  resize_and_pad: Redimensionat i ajustat a
119
120
  resize_to_fit: Redimensionada per ajustar-la
120
121
  question_types:
122
+ files: Fitxers
121
123
  long_answer: Resposta llarga
122
124
  matrix_multiple: Matriu (opció multiple)
123
125
  matrix_single: Matriu (opció única)
@@ -10,10 +10,15 @@ cs:
10
10
  question_type: Typ
11
11
  questionnaire_question:
12
12
  mandatory: Povinné
13
+ max_characters: Limit znaků (ponechte na 0, pokud není limit)
13
14
  errors:
14
15
  models:
15
16
  answer:
16
17
  attributes:
18
+ add_documents:
19
+ needs_to_be_reattached: Potřebuje být znovu připojen
20
+ body:
21
+ too_long: je příliš dlouhý
17
22
  choices:
18
23
  missing: nejsou úplné
19
24
  too_many: jsou příliš mnoho
@@ -78,7 +83,7 @@ cs:
78
83
  collapse: Sbalit všechny otázky
79
84
  expand: Rozbalit všechny otázky
80
85
  preview: Náhled
81
- title: Upravit formulář
86
+ title: Upravit formulář pro %{questionnaire_for}
82
87
  unpublished_warning: Formulář není zveřejněn. Můžete změnit jeho otázky, ale tím odstraníte aktuální odpovědi.
83
88
  matrix_row:
84
89
  matrix_row: Řádek
@@ -110,7 +115,7 @@ cs:
110
115
  answer:
111
116
  body: Tělo nemůže být prázdné
112
117
  files:
113
- extension_whitelist: 'Akceptované formáty:'
118
+ extension_allowlist: 'Akceptované formáty:'
114
119
  images:
115
120
  dimensions: "%{width} x %{height} px"
116
121
  dimensions_info: 'Tento obrázek bude:'
@@ -118,6 +123,7 @@ cs:
118
123
  resize_and_pad: Zmenšeno a odsazeno k
119
124
  resize_to_fit: Upravena velikost na vyplnění
120
125
  question_types:
126
+ files: Soubory
121
127
  long_answer: Dlouhá odpověď
122
128
  matrix_multiple: Matice (Více možností)
123
129
  matrix_single: Matice (Jedna možnost)
@@ -10,10 +10,15 @@ de:
10
10
  question_type: Art
11
11
  questionnaire_question:
12
12
  mandatory: Verpflichtend
13
+ max_characters: Maximale Anzahl Zeichen (0 bedeutet kein Limit)
13
14
  errors:
14
15
  models:
15
16
  answer:
16
17
  attributes:
18
+ add_documents:
19
+ needs_to_be_reattached: Muss erneut angehängt werden
20
+ body:
21
+ too_long: ist zu lang
17
22
  choices:
18
23
  missing: sind nicht vollständig
19
24
  too_many: sind zu viele
@@ -78,7 +83,7 @@ de:
78
83
  collapse: Alle Fragen einklappen
79
84
  expand: Alle Fragen ausklappen
80
85
  preview: Vorschau
81
- title: Formular bearbeiten
86
+ title: Formular für %{questionnaire_for} bearbeiten
82
87
  unpublished_warning: Das Formular ist nicht öffentlich. Sie können die Fragen ändern, dabei werden allerdings die aktuellen Antworten gelöscht.
83
88
  matrix_row:
84
89
  matrix_row: Zeile
@@ -110,7 +115,7 @@ de:
110
115
  answer:
111
116
  body: Körper kann nicht leer sein
112
117
  files:
113
- extension_whitelist: 'Gültige Formate:'
118
+ extension_allowlist: 'Gültige Formate:'
114
119
  images:
115
120
  dimensions: "%{width} x %{height} px"
116
121
  dimensions_info: 'Das Bild wird:'
@@ -118,6 +123,7 @@ de:
118
123
  resize_and_pad: in der Größe angepasst und gepolstert zu
119
124
  resize_to_fit: in der Größe verändert, damit es passt
120
125
  question_types:
126
+ files: Dateien
121
127
  long_answer: Lange Antwort
122
128
  matrix_multiple: Matrix (Mehrfachoption)
123
129
  matrix_single: Matrix (Einzelne Option)
@@ -66,7 +66,7 @@ el:
66
66
  answer:
67
67
  body: Το σώμα δεν μπορεί να είναι κενό
68
68
  files:
69
- extension_whitelist: 'Αποδεκτές μορφές:'
69
+ extension_allowlist: 'Αποδεκτές μορφές:'
70
70
  images:
71
71
  dimensions: "Π %{width} x Υ %{height} px"
72
72
  dimensions_info: 'Για αυτήν την εικόνα θα:'
@@ -11,10 +11,15 @@ en:
11
11
  question_type: Type
12
12
  questionnaire_question:
13
13
  mandatory: Mandatory
14
+ max_characters: Character limit (leave to 0 if no limit)
14
15
  errors:
15
16
  models:
16
17
  answer:
17
18
  attributes:
19
+ add_documents:
20
+ needs_to_be_reattached: Needs to be reattached
21
+ body:
22
+ too_long: is too long
18
23
  choices:
19
24
  missing: are not complete
20
25
  too_many: are too many
@@ -79,7 +84,7 @@ en:
79
84
  collapse: Collapse all questions
80
85
  expand: Expand all questions
81
86
  preview: Preview
82
- title: Edit form
87
+ title: Edit form for %{questionnaire_for}
83
88
  unpublished_warning: The form is not published. You may modify its questions, but doing so will delete current answers.
84
89
  matrix_row:
85
90
  matrix_row: Row
@@ -111,7 +116,7 @@ en:
111
116
  answer:
112
117
  body: Body can't be blank
113
118
  files:
114
- extension_whitelist: 'Accepted formats:'
119
+ extension_allowlist: 'Accepted formats:'
115
120
  images:
116
121
  dimensions: "%{width} x %{height} px"
117
122
  dimensions_info: 'This image will be:'
@@ -119,6 +124,7 @@ en:
119
124
  resize_and_pad: Resized and padded to
120
125
  resize_to_fit: Resized to fit
121
126
  question_types:
127
+ files: Files
122
128
  long_answer: Long answer
123
129
  matrix_multiple: Matrix (Multiple option)
124
130
  matrix_single: Matrix (Single option)
@@ -78,7 +78,7 @@ es-MX:
78
78
  collapse: Contraer todas las preguntas
79
79
  expand: Expandir todos las preguntas
80
80
  preview: Previsualizar
81
- title: Editar el formulario
81
+ title: Editar formulario para %{questionnaire_for}
82
82
  unpublished_warning: El formulario no está publicado. Puedes modificar sus preguntas, pero al hacerlo eliminará las respuestas actuales.
83
83
  matrix_row:
84
84
  matrix_row: Fila
@@ -110,7 +110,7 @@ es-MX:
110
110
  answer:
111
111
  body: El campo no puede estar en blanco
112
112
  files:
113
- extension_whitelist: 'Formatos de archivo aceptados:'
113
+ extension_allowlist: 'Formatos de archivo aceptados:'
114
114
  images:
115
115
  dimensions: "%{width} x %{height} px"
116
116
  dimensions_info: 'Esta imagen medirá:'
@@ -78,7 +78,7 @@ es-PY:
78
78
  collapse: Contraer todas las preguntas
79
79
  expand: Expandir todos las preguntas
80
80
  preview: Previsualizar
81
- title: Editar el formulario
81
+ title: Editar formulario para %{questionnaire_for}
82
82
  unpublished_warning: El formulario no está publicado. Puedes modificar sus preguntas, pero al hacerlo eliminará las respuestas actuales.
83
83
  matrix_row:
84
84
  matrix_row: Fila
@@ -110,7 +110,7 @@ es-PY:
110
110
  answer:
111
111
  body: El campo no puede estar en blanco
112
112
  files:
113
- extension_whitelist: 'Formatos de archivo aceptados:'
113
+ extension_allowlist: 'Formatos de archivo aceptados:'
114
114
  images:
115
115
  dimensions: "%{width} x %{height} px"
116
116
  dimensions_info: 'Esta imagen medirá:'
@@ -78,7 +78,7 @@ es:
78
78
  collapse: Contraer todas las preguntas
79
79
  expand: Expandir todos las preguntas
80
80
  preview: Previsualizar
81
- title: Editar el formulario
81
+ title: Editar formulario para %{questionnaire_for}
82
82
  unpublished_warning: El formulario no está publicado. Puedes modificar sus preguntas, pero al hacerlo eliminará las respuestas actuales.
83
83
  matrix_row:
84
84
  matrix_row: Fila
@@ -110,7 +110,7 @@ es:
110
110
  answer:
111
111
  body: El campo no puede estar en blanco
112
112
  files:
113
- extension_whitelist: 'Formatos de archivo aceptados:'
113
+ extension_allowlist: 'Formatos de archivo aceptados:'
114
114
  images:
115
115
  dimensions: "%{width} x %{height} px"
116
116
  dimensions_info: 'Esta imagen medirá:'
@@ -10,10 +10,15 @@ fi-pl:
10
10
  question_type: Tyyppi
11
11
  questionnaire_question:
12
12
  mandatory: Pakollinen
13
+ max_characters: Merkkimäärärajoitus (jätä arvoksi 0, jos merkkimäärää ei ole rajoitettu)
13
14
  errors:
14
15
  models:
15
16
  answer:
16
17
  attributes:
18
+ add_documents:
19
+ needs_to_be_reattached: Liitettävä uudelleen
20
+ body:
21
+ too_long: liian pitkä
17
22
  choices:
18
23
  missing: ovat puutteellisia
19
24
  too_many: liian monta
@@ -78,7 +83,7 @@ fi-pl:
78
83
  collapse: Sulje kaikki kysymykset
79
84
  expand: Avaa kaikki kysymykset
80
85
  preview: Esikatsele
81
- title: Muokkaa lomaketta
86
+ title: Muokkaa lomaketta kyselylle %{questionnaire_for}
82
87
  unpublished_warning: Lomaketta ei ole julkaistu. Voit muokata sen kysymyksiä, mutta muokkaaminen poistaa nykyiset vastaukset.
83
88
  matrix_row:
84
89
  matrix_row: Rivi
@@ -110,7 +115,7 @@ fi-pl:
110
115
  answer:
111
116
  body: Runkoteksti ei voi olla tyhjä
112
117
  files:
113
- extension_whitelist: 'Sallitut tiedostopäätteet:'
118
+ extension_allowlist: 'Sallitut tiedostopäätteet:'
114
119
  images:
115
120
  dimensions: "%{width} x %{height} pikseliä"
116
121
  dimensions_info: 'Tämän kuvan koko tulee olemaan:'
@@ -118,6 +123,7 @@ fi-pl:
118
123
  resize_and_pad: Muutetaan kokoon ja täytetään
119
124
  resize_to_fit: Muutetaan mahtumaan kokoon
120
125
  question_types:
126
+ files: Tiedostot
121
127
  long_answer: Pitkä vastaus
122
128
  matrix_multiple: Matriisi (useat valinnat)
123
129
  matrix_single: Matriisi (yksi valinta)
@@ -10,10 +10,15 @@ fi:
10
10
  question_type: Tyyppi
11
11
  questionnaire_question:
12
12
  mandatory: Pakollinen
13
+ max_characters: Merkkimäärärajoitus (jätä arvoksi 0, jos merkkimäärää ei ole rajoitettu)
13
14
  errors:
14
15
  models:
15
16
  answer:
16
17
  attributes:
18
+ add_documents:
19
+ needs_to_be_reattached: Liitettävä uudelleen
20
+ body:
21
+ too_long: liian pitkä
17
22
  choices:
18
23
  missing: ovat puutteellisia
19
24
  too_many: liian monta
@@ -78,7 +83,7 @@ fi:
78
83
  collapse: Sulje kaikki kysymykset
79
84
  expand: Avaa kaikki kysymykset
80
85
  preview: Esikatsele
81
- title: Muokkaa lomaketta
86
+ title: Muokkaa lomaketta kyselylle %{questionnaire_for}
82
87
  unpublished_warning: Lomaketta ei ole julkaistu. Voit muokata sen kysymyksiä, mutta muokkaaminen poistaa nykyiset vastaukset.
83
88
  matrix_row:
84
89
  matrix_row: Rivi
@@ -110,7 +115,7 @@ fi:
110
115
  answer:
111
116
  body: Runkoteksti ei voi olla tyhjä
112
117
  files:
113
- extension_whitelist: 'Sallitut tiedostopäätteet:'
118
+ extension_allowlist: 'Sallitut tiedostopäätteet:'
114
119
  images:
115
120
  dimensions: "%{width} x %{height} pikseliä"
116
121
  dimensions_info: 'Tämän kuvan koko tulee olemaan:'
@@ -118,6 +123,7 @@ fi:
118
123
  resize_and_pad: Muutetaan kokoon ja täytetään
119
124
  resize_to_fit: Muutetaan mahtumaan kokoon
120
125
  question_types:
126
+ files: Tiedostot
121
127
  long_answer: Pitkä vastaus
122
128
  matrix_multiple: Matriisi (useat valinnat)
123
129
  matrix_single: Matriisi (yksi valinta)