decidim-forms 0.23.6 → 0.24.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
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)