decidim-forms 0.23.0 → 0.24.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/decidim/forms/display_conditions.component.js.es6 +5 -6
- data/app/assets/javascripts/decidim/forms/forms.js.es6 +4 -4
- data/app/commands/decidim/forms/admin/update_questionnaire.rb +2 -1
- data/app/commands/decidim/forms/answer_questionnaire.rb +43 -1
- data/app/controllers/decidim/forms/admin/concerns/has_questionnaire.rb +10 -2
- data/app/controllers/decidim/forms/concerns/has_questionnaire.rb +13 -6
- data/app/forms/decidim/forms/admin/question_form.rb +2 -0
- data/app/forms/decidim/forms/answer_form.rb +28 -1
- data/app/forms/decidim/forms/questionnaire_form.rb +5 -0
- data/app/helpers/decidim/forms/admin/application_helper.rb +1 -6
- data/app/helpers/decidim/forms/admin/concerns/has_questionnaire_answers_url_helper.rb +3 -3
- data/app/helpers/decidim/forms/admin/questionnaire_answers_helper.rb +5 -2
- data/app/jobs/decidim/forms/export_questionnaire_answers_job.rb +1 -1
- data/app/models/decidim/forms/answer.rb +8 -0
- data/app/models/decidim/forms/display_condition.rb +22 -8
- data/app/models/decidim/forms/question.rb +9 -3
- data/app/models/decidim/forms/questionnaire.rb +11 -0
- data/app/presenters/decidim/forms/admin/questionnaire_answer_presenter.rb +20 -0
- data/app/presenters/decidim/forms/admin/questionnaire_participant_presenter.rb +4 -4
- data/app/queries/decidim/forms/questionnaire_user_answers.rb +2 -1
- data/app/views/decidim/forms/admin/questionnaires/_form.html.erb +3 -3
- data/app/views/decidim/forms/admin/questionnaires/_question.html.erb +11 -0
- data/app/views/decidim/forms/admin/questionnaires/edit.html.erb +1 -1
- data/app/views/decidim/forms/questionnaires/_answer.html.erb +1 -1
- data/app/views/decidim/forms/questionnaires/answers/_files.html.erb +1 -0
- data/app/views/decidim/forms/questionnaires/answers/_long_answer.html.erb +1 -1
- data/app/views/decidim/forms/questionnaires/answers/_matrix_multiple.html.erb +2 -1
- data/app/views/decidim/forms/questionnaires/answers/_matrix_single.html.erb +2 -1
- data/app/views/decidim/forms/questionnaires/answers/_multiple_option.html.erb +2 -1
- data/app/views/decidim/forms/questionnaires/answers/_short_answer.html.erb +1 -1
- data/app/views/decidim/forms/questionnaires/answers/_single_option.html.erb +2 -1
- data/app/views/decidim/forms/questionnaires/show.html.erb +1 -1
- data/config/initializers/wicked_pdf.rb +2 -0
- data/config/locales/ca.yml +4 -2
- data/config/locales/cs.yml +10 -4
- data/config/locales/de.yml +10 -2
- data/config/locales/el.yml +1 -1
- data/config/locales/en.yml +8 -2
- data/config/locales/es-MX.yml +2 -2
- data/config/locales/es-PY.yml +2 -2
- data/config/locales/es.yml +2 -2
- data/config/locales/fi-plain.yml +8 -2
- data/config/locales/fi.yml +8 -2
- data/config/locales/fr-CA.yml +8 -2
- data/config/locales/fr.yml +10 -4
- data/config/locales/it.yml +1 -2
- data/config/locales/ja.yml +3 -3
- data/config/locales/lv.yml +1 -1
- data/config/locales/nl.yml +4 -5
- data/config/locales/no.yml +1 -1
- data/config/locales/pl.yml +11 -2
- data/config/locales/pt.yml +1 -2
- data/config/locales/ro-RO.yml +1 -2
- data/config/locales/si-LK.yml +1 -0
- data/config/locales/sv.yml +1 -2
- data/config/locales/sw-KE.yml +1 -0
- data/config/locales/tr-TR.yml +88 -1
- data/config/locales/zh-CN.yml +1 -2
- data/db/migrate/20201110152921_add_salt_to_decidim_forms_questionnaires.rb +16 -0
- data/db/migrate/20210208094442_add_max_characters_to_decidim_forms_questions.rb +7 -0
- data/lib/decidim/api/answer_option_type.rb +13 -0
- data/lib/decidim/api/question_type.rb +21 -0
- data/lib/decidim/api/questionnaire_entity_interface.rb +5 -5
- data/lib/decidim/api/questionnaire_type.rb +19 -0
- data/lib/decidim/exporters/form_pdf_controller_helper.rb +2 -0
- data/lib/decidim/forms.rb +1 -1
- data/lib/decidim/forms/api.rb +3 -0
- data/lib/decidim/forms/data_portability_user_answers_serializer.rb +7 -1
- data/lib/decidim/forms/test/factories.rb +13 -2
- data/lib/decidim/forms/test/shared_examples/has_questionnaire.rb +38 -5
- data/lib/decidim/forms/test/shared_examples/manage_questionnaires.rb +5 -4
- data/lib/decidim/forms/test/shared_examples/manage_questionnaires/add_display_conditions.rb +7 -3
- data/lib/decidim/forms/test/shared_examples/manage_questionnaires/add_questions.rb +1 -1
- data/lib/decidim/forms/test/shared_examples/manage_questionnaires/update_questions.rb +5 -0
- data/lib/decidim/forms/user_answers_serializer.rb +10 -2
- data/lib/decidim/forms/version.rb +1 -1
- metadata +23 -18
- data/app/types/decidim/forms/answer_option_type.rb +0 -14
- data/app/types/decidim/forms/question_type.rb +0 -23
- data/app/types/decidim/forms/questionnaire_type.rb +0 -22
@@ -6,7 +6,7 @@ module Decidim
|
|
6
6
|
class Question < Forms::ApplicationRecord
|
7
7
|
include Decidim::TranslatableResource
|
8
8
|
|
9
|
-
QUESTION_TYPES = %w(short_answer long_answer single_option multiple_option sorting matrix_single matrix_multiple).freeze
|
9
|
+
QUESTION_TYPES = %w(short_answer long_answer single_option multiple_option sorting files matrix_single matrix_multiple).freeze
|
10
10
|
SEPARATOR_TYPE = "separator"
|
11
11
|
TYPES = (QUESTION_TYPES + [SEPARATOR_TYPE]).freeze
|
12
12
|
|
@@ -48,6 +48,8 @@ module Decidim
|
|
48
48
|
|
49
49
|
validates :question_type, inclusion: { in: TYPES }
|
50
50
|
|
51
|
+
scope :not_separator, -> { where.not(question_type: SEPARATOR_TYPE) }
|
52
|
+
|
51
53
|
scope :with_body, -> { where(question_type: %w(short_answer long_answer)) }
|
52
54
|
scope :with_choices, -> { where.not(question_type: %w(short_answer long_answer)) }
|
53
55
|
|
@@ -63,11 +65,11 @@ module Decidim
|
|
63
65
|
end
|
64
66
|
|
65
67
|
def mandatory_body?
|
66
|
-
mandatory? && !multiple_choice?
|
68
|
+
mandatory? && !multiple_choice? && !has_attachments?
|
67
69
|
end
|
68
70
|
|
69
71
|
def mandatory_choices?
|
70
|
-
mandatory? && multiple_choice?
|
72
|
+
mandatory? && multiple_choice? && !has_attachments?
|
71
73
|
end
|
72
74
|
|
73
75
|
def number_of_options
|
@@ -81,6 +83,10 @@ module Decidim
|
|
81
83
|
def separator?
|
82
84
|
question_type.to_s == SEPARATOR_TYPE
|
83
85
|
end
|
86
|
+
|
87
|
+
def has_attachments?
|
88
|
+
question_type.to_s == "files"
|
89
|
+
end
|
84
90
|
end
|
85
91
|
end
|
86
92
|
end
|
@@ -14,6 +14,8 @@ module Decidim
|
|
14
14
|
has_many :questions, -> { order(:position) }, class_name: "Question", foreign_key: "decidim_questionnaire_id", dependent: :destroy
|
15
15
|
has_many :answers, class_name: "Answer", foreign_key: "decidim_questionnaire_id", dependent: :destroy
|
16
16
|
|
17
|
+
after_initialize :set_default_salt
|
18
|
+
|
17
19
|
# Public: returns whether the questionnaire questions can be modified or not.
|
18
20
|
def questions_editable?
|
19
21
|
has_component = questionnaire_for.respond_to? :component
|
@@ -29,6 +31,15 @@ module Decidim
|
|
29
31
|
def pristine?
|
30
32
|
created_at.to_i == updated_at.to_i && questions.empty?
|
31
33
|
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
# salt is used to generate secure hash in anonymous answers
|
38
|
+
def set_default_salt
|
39
|
+
return unless defined?(salt)
|
40
|
+
|
41
|
+
self.salt ||= Tokenizer.random_salt
|
42
|
+
end
|
32
43
|
end
|
33
44
|
end
|
34
45
|
end
|
@@ -17,6 +17,7 @@ module Decidim
|
|
17
17
|
|
18
18
|
def body
|
19
19
|
return answer.body if answer.body.present?
|
20
|
+
return attachments if answer.attachments.any?
|
20
21
|
return "-" if answer.choices.empty?
|
21
22
|
|
22
23
|
choices = answer.choices.map do |choice|
|
@@ -30,8 +31,27 @@ module Decidim
|
|
30
31
|
end
|
31
32
|
end
|
32
33
|
|
34
|
+
def attachments
|
35
|
+
content_tag(:ul) do
|
36
|
+
safe_join(answer.attachments.map { |a| pretty_attachment(a) })
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
33
40
|
private
|
34
41
|
|
42
|
+
def pretty_attachment(attachment)
|
43
|
+
# rubocop:disable Style/StringConcatenation
|
44
|
+
# Interpolating strings that are `html_safe` is problematic with Rails.
|
45
|
+
content_tag :li do
|
46
|
+
link_to(translated_attribute(attachment.title), attachment.url) +
|
47
|
+
" " +
|
48
|
+
content_tag(:small) do
|
49
|
+
"#{attachment.file_type} #{number_to_human_size(attachment.file_size)}"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
# rubocop:enable Style/StringConcatenation
|
53
|
+
end
|
54
|
+
|
35
55
|
def choice(choice_body)
|
36
56
|
content_tag :li do
|
37
57
|
choice_body
|
@@ -36,23 +36,23 @@ module Decidim
|
|
36
36
|
end
|
37
37
|
|
38
38
|
def first_short_answer
|
39
|
-
short = sibilings.where(
|
39
|
+
short = sibilings.where(decidim_forms_questions: { question_type: %w(short_answer) })
|
40
40
|
short.first
|
41
41
|
end
|
42
42
|
|
43
43
|
def completion
|
44
|
-
with_body = sibilings.where(
|
44
|
+
with_body = sibilings.where(decidim_forms_questions: { question_type: %w(short_answer long_answer) })
|
45
45
|
.where.not(body: "").count
|
46
46
|
with_choices = sibilings.where.not("decidim_forms_questions.question_type in (?)", %w(short_answer long_answer))
|
47
47
|
.where("decidim_forms_answers.id IN (SELECT decidim_answer_id FROM decidim_forms_answer_choices)").count
|
48
48
|
|
49
|
-
(with_body + with_choices).to_f / questionnaire.questions.count * 100
|
49
|
+
(with_body + with_choices).to_f / questionnaire.questions.not_separator.count * 100
|
50
50
|
end
|
51
51
|
|
52
52
|
private
|
53
53
|
|
54
54
|
def sibilings
|
55
|
-
Answer.where(session_token: participant.session_token).joins(:question).order("decidim_forms_questions.position ASC")
|
55
|
+
Answer.not_separator.where(questionnaire: questionnaire, session_token: participant.session_token).joins(:question).order("decidim_forms_questions.position ASC")
|
56
56
|
end
|
57
57
|
end
|
58
58
|
end
|
@@ -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
|
-
<%=
|
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") %></
|
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
|
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][#{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 %>
|
@@ -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 %>
|
data/config/locales/ca.yml
CHANGED
@@ -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
|
-
|
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)
|
data/config/locales/cs.yml
CHANGED
@@ -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
|
@@ -74,11 +79,11 @@ cs:
|
|
74
79
|
form:
|
75
80
|
add_question: Přidat otázku
|
76
81
|
add_separator: Přidat oddělovač
|
77
|
-
already_answered_warning:
|
78
|
-
collapse: Sbalit všechny
|
82
|
+
already_answered_warning: Formulář je již zodpovězen některými uživateli, takže jeho otázky nemůžete upravovat.
|
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
|
-
|
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)
|
data/config/locales/de.yml
CHANGED
@@ -3,15 +3,22 @@ de:
|
|
3
3
|
attributes:
|
4
4
|
answer:
|
5
5
|
body: Antworten
|
6
|
+
choices: Auswahl
|
7
|
+
selected_choices: Ausgewählte Auswahl
|
6
8
|
question:
|
7
9
|
max_choices: Maximale Anzahl von Auswahlmöglichkeiten
|
8
10
|
question_type: Art
|
9
11
|
questionnaire_question:
|
10
12
|
mandatory: Verpflichtend
|
13
|
+
max_characters: Maximale Anzahl Zeichen (0 bedeutet kein Limit)
|
11
14
|
errors:
|
12
15
|
models:
|
13
16
|
answer:
|
14
17
|
attributes:
|
18
|
+
add_documents:
|
19
|
+
needs_to_be_reattached: Muss erneut angehängt werden
|
20
|
+
body:
|
21
|
+
too_long: ist zu lang
|
15
22
|
choices:
|
16
23
|
missing: sind nicht vollständig
|
17
24
|
too_many: sind zu viele
|
@@ -76,7 +83,7 @@ de:
|
|
76
83
|
collapse: Alle Fragen einklappen
|
77
84
|
expand: Alle Fragen ausklappen
|
78
85
|
preview: Vorschau
|
79
|
-
title: Formular bearbeiten
|
86
|
+
title: Formular für %{questionnaire_for} bearbeiten
|
80
87
|
unpublished_warning: Das Formular ist nicht öffentlich. Sie können die Fragen ändern, dabei werden allerdings die aktuellen Antworten gelöscht.
|
81
88
|
matrix_row:
|
82
89
|
matrix_row: Zeile
|
@@ -108,7 +115,7 @@ de:
|
|
108
115
|
answer:
|
109
116
|
body: Körper kann nicht leer sein
|
110
117
|
files:
|
111
|
-
|
118
|
+
extension_allowlist: 'Gültige Formate:'
|
112
119
|
images:
|
113
120
|
dimensions: "%{width} x %{height} px"
|
114
121
|
dimensions_info: 'Das Bild wird:'
|
@@ -116,6 +123,7 @@ de:
|
|
116
123
|
resize_and_pad: in der Größe angepasst und gepolstert zu
|
117
124
|
resize_to_fit: in der Größe verändert, damit es passt
|
118
125
|
question_types:
|
126
|
+
files: Dateien
|
119
127
|
long_answer: Lange Antwort
|
120
128
|
matrix_multiple: Matrix (Mehrfachoption)
|
121
129
|
matrix_single: Matrix (Einzelne Option)
|
data/config/locales/el.yml
CHANGED
data/config/locales/en.yml
CHANGED
@@ -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
|
-
|
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)
|