decidim-forms 0.25.1 → 0.26.0
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.
- checksums.yaml +4 -4
- data/app/commands/decidim/forms/answer_questionnaire.rb +6 -2
- data/app/forms/decidim/forms/admin/question_form.rb +4 -0
- data/app/models/decidim/forms/answer.rb +1 -0
- data/app/models/decidim/forms/question.rb +7 -1
- data/app/packs/src/decidim/forms/admin/forms.js +2 -0
- data/app/presenters/decidim/forms/admin/questionnaire_answer_presenter.rb +19 -4
- data/app/presenters/decidim/forms/admin/questionnaire_participant_presenter.rb +5 -2
- data/app/queries/decidim/forms/questionnaire_user_answers.rb +4 -1
- data/app/views/decidim/forms/admin/questionnaires/_form.html.erb +12 -0
- data/app/views/decidim/forms/admin/questionnaires/_title_and_description.html.erb +80 -0
- data/app/views/decidim/forms/questionnaires/_answer.html.erb +10 -1
- data/app/views/decidim/forms/questionnaires/answers/_title_and_description.html.erb +1 -0
- data/app/views/decidim/forms/questionnaires/show.html.erb +8 -7
- data/config/locales/ca.yml +11 -0
- data/config/locales/cs.yml +11 -0
- data/config/locales/en.yml +11 -0
- data/config/locales/es-MX.yml +11 -0
- data/config/locales/es-PY.yml +11 -0
- data/config/locales/es.yml +11 -0
- data/config/locales/fi-plain.yml +11 -0
- data/config/locales/fi.yml +11 -0
- data/config/locales/fr-CA.yml +11 -0
- data/config/locales/fr.yml +12 -1
- data/config/locales/gl.yml +11 -0
- data/config/locales/hu.yml +11 -0
- data/config/locales/ja.yml +12 -1
- data/config/locales/lb-LU.yml +103 -0
- data/config/locales/nl.yml +11 -0
- data/config/locales/no.yml +52 -0
- data/config/locales/pt-BR.yml +1 -1
- data/config/locales/ro-RO.yml +69 -58
- data/config/locales/sv.yml +12 -0
- data/config/locales/val-ES.yml +18 -0
- data/lib/decidim/forms/test/factories.rb +12 -0
- data/lib/decidim/forms/test/shared_examples/manage_questionnaire_answers.rb +18 -0
- data/lib/decidim/forms/test/shared_examples/manage_questionnaires/add_questions.rb +36 -5
- data/lib/decidim/forms/test/shared_examples/manage_questionnaires/update_questions.rb +98 -0
- data/lib/decidim/forms/test/shared_examples/manage_questionnaires.rb +8 -0
- data/lib/decidim/forms/user_answers_serializer.rb +7 -1
- data/lib/decidim/forms/version.rb +1 -1
- metadata +15 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: '001966829dd7bb233641ea5fb6134eacfadb93b6e902854ea48ee21287a378af'
|
4
|
+
data.tar.gz: 10229cd3561629c46253977f603129863ac1d6cc87bd0737be5368ec22c6d9f2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d5f1c63e9080a6599abbf681a66b58f937929d3d65401ce0d342c65ba8241b060f0fea8d1af1120296cabc3c287756adfd9310387de91028472ed2eff5893db5
|
7
|
+
data.tar.gz: b01e17fefc02e5d569eca30ac167c8d9d3eecd4edeaca8ed6b259b3aca7c6e73062bc7879da4b038e7c80a65d7237895a82c21d4c4b934041659444769915aa1
|
@@ -20,7 +20,7 @@ module Decidim
|
|
20
20
|
#
|
21
21
|
# Broadcasts :ok if successful, :invalid otherwise.
|
22
22
|
def call
|
23
|
-
return broadcast(:invalid) if @form.invalid?
|
23
|
+
return broadcast(:invalid) if @form.invalid? || user_already_answered?
|
24
24
|
|
25
25
|
answer_questionnaire
|
26
26
|
|
@@ -32,7 +32,7 @@ module Decidim
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
-
attr_reader :form
|
35
|
+
attr_reader :form, :questionnaire, :current_user
|
36
36
|
|
37
37
|
private
|
38
38
|
|
@@ -96,6 +96,10 @@ module Decidim
|
|
96
96
|
raise ActiveRecord::Rollback if @errors
|
97
97
|
end
|
98
98
|
end
|
99
|
+
|
100
|
+
def user_already_answered?
|
101
|
+
questionnaire.answered_by?(current_user || form.context.session_token)
|
102
|
+
end
|
99
103
|
end
|
100
104
|
end
|
101
105
|
end
|
@@ -42,6 +42,10 @@ module Decidim
|
|
42
42
|
question_type == Decidim::Forms::Question::SEPARATOR_TYPE
|
43
43
|
end
|
44
44
|
|
45
|
+
def title_and_description?
|
46
|
+
question_type == Decidim::Forms::Question::TITLE_AND_DESCRIPTION_TYPE
|
47
|
+
end
|
48
|
+
|
45
49
|
def matrix_rows_by_position
|
46
50
|
matrix_rows.sort do |a, b|
|
47
51
|
if a.position && b.position
|
@@ -22,6 +22,7 @@ module Decidim
|
|
22
22
|
validate :question_belongs_to_questionnaire
|
23
23
|
|
24
24
|
scope :not_separator, -> { joins(:question).where.not(decidim_forms_questions: { question_type: Decidim::Forms::Question::SEPARATOR_TYPE }) }
|
25
|
+
scope :not_title_and_description, -> { joins(:question).where.not(decidim_forms_questions: { question_type: Decidim::Forms::Question::TITLE_AND_DESCRIPTION_TYPE }) }
|
25
26
|
|
26
27
|
def self.user_collection(user)
|
27
28
|
where(decidim_user_id: user.id)
|
@@ -8,7 +8,8 @@ module Decidim
|
|
8
8
|
|
9
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
|
+
TITLE_AND_DESCRIPTION_TYPE = "title_and_description"
|
12
|
+
TYPES = (QUESTION_TYPES + [SEPARATOR_TYPE, TITLE_AND_DESCRIPTION_TYPE]).freeze
|
12
13
|
|
13
14
|
translatable_fields :body, :description
|
14
15
|
|
@@ -49,6 +50,7 @@ module Decidim
|
|
49
50
|
validates :question_type, inclusion: { in: TYPES }
|
50
51
|
|
51
52
|
scope :not_separator, -> { where.not(question_type: SEPARATOR_TYPE) }
|
53
|
+
scope :not_title_and_description, -> { where.not(question_type: TITLE_AND_DESCRIPTION_TYPE) }
|
52
54
|
|
53
55
|
scope :with_body, -> { where(question_type: %w(short_answer long_answer)) }
|
54
56
|
scope :with_choices, -> { where.not(question_type: %w(short_answer long_answer)) }
|
@@ -84,6 +86,10 @@ module Decidim
|
|
84
86
|
question_type.to_s == SEPARATOR_TYPE
|
85
87
|
end
|
86
88
|
|
89
|
+
def title_and_description?
|
90
|
+
question_type.to_s == TITLE_AND_DESCRIPTION_TYPE
|
91
|
+
end
|
92
|
+
|
87
93
|
def has_attachments?
|
88
94
|
question_type.to_s == "files"
|
89
95
|
end
|
@@ -375,8 +375,10 @@ export default function createEditableForm() {
|
|
375
375
|
fieldSelector: fieldSelector,
|
376
376
|
addFieldButtonSelector: ".add-question",
|
377
377
|
addSeparatorButtonSelector: ".add-separator",
|
378
|
+
addTitleAndDescriptionButtonSelector: ".add-title-and-description",
|
378
379
|
fieldTemplateSelector: ".decidim-question-template",
|
379
380
|
separatorTemplateSelector: ".decidim-separator-template",
|
381
|
+
TitleAndDescriptionTemplateSelector: ".decidim-title-and-description-template",
|
380
382
|
removeFieldButtonSelector: ".remove-question",
|
381
383
|
moveUpFieldButtonSelector: ".move-up-question",
|
382
384
|
moveDownFieldButtonSelector: ".move-down-question",
|
@@ -21,10 +21,13 @@ module Decidim
|
|
21
21
|
return "-" if answer.choices.empty?
|
22
22
|
|
23
23
|
choices = answer.choices.map do |choice|
|
24
|
-
|
24
|
+
{
|
25
|
+
answer_option_body: choice.try(:answer_option).try(:translated_body),
|
26
|
+
choice_body: body_or_custom_body(choice)
|
27
|
+
}
|
25
28
|
end
|
26
29
|
|
27
|
-
return choices.first if answer.question.question_type == "single_option"
|
30
|
+
return choice(choices.first) if answer.question.question_type == "single_option"
|
28
31
|
|
29
32
|
content_tag(:ul) do
|
30
33
|
safe_join(choices.map { |c| choice(c) })
|
@@ -52,11 +55,23 @@ module Decidim
|
|
52
55
|
# rubocop:enable Style/StringConcatenation
|
53
56
|
end
|
54
57
|
|
55
|
-
def choice(
|
58
|
+
def choice(choice_hash)
|
56
59
|
content_tag :li do
|
57
|
-
|
60
|
+
render_body_for choice_hash
|
58
61
|
end
|
59
62
|
end
|
63
|
+
|
64
|
+
def render_body_for(choice_hash)
|
65
|
+
return choice_hash[:answer_option_body] if choice_hash[:choice_body].blank?
|
66
|
+
|
67
|
+
"#{choice_hash[:answer_option_body]} (#{choice_hash[:choice_body]})"
|
68
|
+
end
|
69
|
+
|
70
|
+
def body_or_custom_body(choice)
|
71
|
+
return choice.custom_body if choice.try(:custom_body).present?
|
72
|
+
|
73
|
+
""
|
74
|
+
end
|
60
75
|
end
|
61
76
|
end
|
62
77
|
end
|
@@ -46,13 +46,16 @@ module Decidim
|
|
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.not_separator.count * 100
|
49
|
+
(with_body + with_choices).to_f / questionnaire.questions.not_separator.not_title_and_description.count * 100
|
50
50
|
end
|
51
51
|
|
52
52
|
private
|
53
53
|
|
54
54
|
def sibilings
|
55
|
-
Answer.not_separator
|
55
|
+
Answer.not_separator
|
56
|
+
.not_title_and_description
|
57
|
+
.where(questionnaire: questionnaire, session_token: participant.session_token)
|
58
|
+
.joins(:question).order("decidim_forms_questions.position ASC")
|
56
59
|
end
|
57
60
|
end
|
58
61
|
end
|
@@ -20,7 +20,10 @@ module Decidim
|
|
20
20
|
|
21
21
|
# Finds and group answers by user for each questionnaire's question.
|
22
22
|
def query
|
23
|
-
answers = Answer.not_separator
|
23
|
+
answers = Answer.not_separator
|
24
|
+
.not_title_and_description
|
25
|
+
.joins(:question)
|
26
|
+
.where(questionnaire: @questionnaire)
|
24
27
|
|
25
28
|
answers.sort_by { |answer| answer.question.position }.group_by { |a| a.user || a.session_token }.values
|
26
29
|
end
|
@@ -65,6 +65,12 @@
|
|
65
65
|
id: tabs_id_for_question(blank_question),
|
66
66
|
editable: questionnaire.questions_editable? %>
|
67
67
|
</script>
|
68
|
+
<script type="text/template" class="decidim-title-and-description-template decidim-template" id="title-and-description-template">
|
69
|
+
<%= render "decidim/forms/admin/questionnaires/title_and_description",
|
70
|
+
form: question_form,
|
71
|
+
id: tabs_id_for_question(blank_question),
|
72
|
+
editable: questionnaire.questions_editable? %>
|
73
|
+
</script>
|
68
74
|
<%= render "decidim/forms/admin/questionnaires/answer_option_template", form: question_form, editable: questionnaire.questions_editable?, template_id: "answer-option-template-dummy" %>
|
69
75
|
<%= render "decidim/forms/admin/questionnaires/display_condition_template", form: question_form, editable: questionnaire.questions_editable?, template_id: "display-condition-template-dummy" %>
|
70
76
|
<%= render "decidim/forms/admin/questionnaires/matrix_row_template", form: question_form, editable: questionnaire.questions_editable?, template_id: "matrix-row-template-dummy" %>
|
@@ -83,6 +89,11 @@
|
|
83
89
|
form: question_form,
|
84
90
|
id: tabs_id_for_question(question),
|
85
91
|
editable: questionnaire.questions_editable? %>
|
92
|
+
<% elsif question.title_and_description? %>
|
93
|
+
<%= render "decidim/forms/admin/questionnaires/title_and_description",
|
94
|
+
form: question_form,
|
95
|
+
id: tabs_id_for_question(question),
|
96
|
+
editable: questionnaire.questions_editable? %>
|
86
97
|
<% else %>
|
87
98
|
<%= render "decidim/forms/admin/questionnaires/question",
|
88
99
|
form: question_form,
|
@@ -102,6 +113,7 @@
|
|
102
113
|
<% if questionnaire.questions_editable? %>
|
103
114
|
<button class="button add-question"><%= t(".add_question") %></button>
|
104
115
|
<button class="button add-separator"><%= t(".add_separator") %></button>
|
116
|
+
<button class="button add-title-and-description"><%= t(".add_title_and_description") %></button>
|
105
117
|
<% end %>
|
106
118
|
</div>
|
107
119
|
|
@@ -0,0 +1,80 @@
|
|
1
|
+
<% question = form.object %>
|
2
|
+
<% is_expanded = question.errors.any? %>
|
3
|
+
|
4
|
+
<div class="card questionnaire-question" id="<%= id %>-field">
|
5
|
+
<div class="card-divider question-divider">
|
6
|
+
<h2 class="card-title">
|
7
|
+
<span>
|
8
|
+
<% if editable %>
|
9
|
+
<%== icon("move") %>
|
10
|
+
<% end %>
|
11
|
+
<%= dynamic_title(translated_attribute(question.body), class: "question-title-statement", max_length: 50, omission: "...", placeholder: t(".title_and_description")) %>
|
12
|
+
</span>
|
13
|
+
|
14
|
+
<button type="button" class="button small secondary button--title question--collapse" data-toggle="<%= id %>-question-card button--collapse-question-<%= id %> button--expand-question-<%= id %>">
|
15
|
+
<span id="button--collapse-question-<%= id %>" data-toggler=".hide" class="icon-collapse <%= "hide" unless is_expanded %>">
|
16
|
+
<%== icon("caret-top", aria_label: t(".collapse"), role: "img") %>
|
17
|
+
</span>
|
18
|
+
|
19
|
+
<span id="button--expand-question-<%= id %>" data-toggler=".hide" class="icon-expand <%= "hide" if is_expanded %>">
|
20
|
+
<%== icon("caret-bottom", aria_label: t(".expand"), role: "img") %>
|
21
|
+
</span>
|
22
|
+
</button>
|
23
|
+
|
24
|
+
<% if editable %>
|
25
|
+
<button class="button small alert hollow move-up-question button--title">
|
26
|
+
<%== "#{icon("arrow-top")} #{t(".up")}" %>
|
27
|
+
</button>
|
28
|
+
|
29
|
+
<button class="button small alert hollow move-down-question button--title">
|
30
|
+
<%== "#{icon("arrow-bottom")} #{t(".down")}" %>
|
31
|
+
</button>
|
32
|
+
|
33
|
+
<button class="button small alert hollow remove-question button--title">
|
34
|
+
<%= t(".remove") %>
|
35
|
+
</button>
|
36
|
+
<% end %>
|
37
|
+
</h2>
|
38
|
+
</div>
|
39
|
+
|
40
|
+
<div class="card-section collapsible <%= "hide" unless is_expanded %>" data-toggler=".hide" id="<%= id %>-question-card">
|
41
|
+
<div class="row column">
|
42
|
+
<%=
|
43
|
+
form.translated(
|
44
|
+
:text_field,
|
45
|
+
:body,
|
46
|
+
tabs_id: id,
|
47
|
+
label: t(".title"),
|
48
|
+
disabled: !editable
|
49
|
+
)
|
50
|
+
%>
|
51
|
+
</div>
|
52
|
+
|
53
|
+
<div class="row column">
|
54
|
+
<%=
|
55
|
+
form.translated(
|
56
|
+
:editor,
|
57
|
+
:description,
|
58
|
+
toolbar: :full,
|
59
|
+
tabs_id: id,
|
60
|
+
label: t(".description"),
|
61
|
+
disabled: !editable
|
62
|
+
)
|
63
|
+
%>
|
64
|
+
</div>
|
65
|
+
|
66
|
+
<%=
|
67
|
+
form.hidden_field(
|
68
|
+
:question_type,
|
69
|
+
value: :title_and_description
|
70
|
+
)
|
71
|
+
%>
|
72
|
+
|
73
|
+
<% if question.persisted? %>
|
74
|
+
<%= form.hidden_field :id, disabled: !editable %>
|
75
|
+
<% end %>
|
76
|
+
|
77
|
+
<%= form.hidden_field :position, value: question.position || 0, disabled: !editable %>
|
78
|
+
<%= form.hidden_field :deleted, disabled: !editable %>
|
79
|
+
</div>
|
80
|
+
</div>
|
@@ -3,6 +3,15 @@
|
|
3
3
|
<% if answer.question.separator? %>
|
4
4
|
<%= 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 } %>
|
5
5
|
<%= answer_form.hidden_field :question_id %>
|
6
|
+
<% elsif answer.question.title_and_description? %>
|
7
|
+
<%= label_tag field_id, translated_attribute(answer.question.body), class: "questionnaire-title_and_description" %>
|
8
|
+
<% if translated_attribute(answer.question.description).present? %>
|
9
|
+
<div class="help-title_and_description ">
|
10
|
+
<%= decidim_sanitize_editor translated_attribute(answer.question.description) %>
|
11
|
+
</div>
|
12
|
+
<% end %>
|
13
|
+
<%= 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 } %>
|
14
|
+
<%= answer_form.hidden_field :question_id %>
|
6
15
|
<% else %>
|
7
16
|
<% case answer.question.question_type %>
|
8
17
|
<% when "single_option", "multiple_option", "sorting" %>
|
@@ -13,7 +22,7 @@
|
|
13
22
|
|
14
23
|
<% if translated_attribute(answer.question.description).present? %>
|
15
24
|
<div class="help-text">
|
16
|
-
<%=
|
25
|
+
<%= decidim_sanitize_editor translated_attribute(answer.question.description) %>
|
17
26
|
</div>
|
18
27
|
<% end %>
|
19
28
|
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= answer_form.hidden_field :body, value: "title-and-description", id: field_id, disabled: disabled %>
|
@@ -11,7 +11,7 @@
|
|
11
11
|
<h3 class="section-heading"><%= translated_attribute questionnaire.title %></h3>
|
12
12
|
<div class="row">
|
13
13
|
<div class="columns large-<%= columns %> medium-centered lead">
|
14
|
-
<%=
|
14
|
+
<%= decidim_sanitize_editor translated_attribute questionnaire.description %>
|
15
15
|
</div>
|
16
16
|
</div>
|
17
17
|
</div>
|
@@ -20,8 +20,8 @@
|
|
20
20
|
<div class="columns large-<%= columns %> medium-centered">
|
21
21
|
<div class="card">
|
22
22
|
<div class="card__content">
|
23
|
-
|
24
|
-
|
23
|
+
<% unless questionnaire_for.try(:component)&.try(:published?) %>
|
24
|
+
<div class="section">
|
25
25
|
<div class="callout warning">
|
26
26
|
<p><%= t(".questionnaire_not_published.body") %></p>
|
27
27
|
</div>
|
@@ -65,14 +65,15 @@
|
|
65
65
|
<div id="step-<%= step_index %>" class="<%= step_index.zero? ? "questionnaire-step" : "questionnaire-step hide" %>" data-toggler=".hide">
|
66
66
|
<% if @form.total_steps > 1 %>
|
67
67
|
<h4 class="section-heading">
|
68
|
-
<%= t(".current_step", step: step_index + 1) %>
|
68
|
+
<%= t(".current_step", step: step_index + 1) %>
|
69
|
+
<span class="answer-questionnaire__steps"><%= t(".of_total_steps", total_steps: @form.total_steps) %></span>
|
69
70
|
</h4>
|
70
71
|
<% end %>
|
71
72
|
|
72
73
|
<% step_answers.each do |answer| %>
|
73
74
|
<div class="row column answer question" data-max-choices="<%= answer.question.max_choices %>" data-conditioned="<%= answer.question.display_conditions.any? %>" data-question-id="<%= answer.question.id %>">
|
74
75
|
<% answer.question.display_conditions.each do |display_condition| %>
|
75
|
-
<%= content_tag :div, nil,
|
76
|
+
<%= content_tag :div, nil, class: "display-condition", data: display_condition.to_html_data %>
|
76
77
|
<% end %>
|
77
78
|
|
78
79
|
<%= fields_for "questionnaire[responses][#{answer_idx}]", answer do |answer_form| %>
|
@@ -86,7 +87,7 @@
|
|
86
87
|
) %>
|
87
88
|
<% end %>
|
88
89
|
</div>
|
89
|
-
<% if !answer.question.separator? %>
|
90
|
+
<% if !(answer.question.separator? || answer.question.title_and_description?) %>
|
90
91
|
<% cleaned_answer_idx += 1 %>
|
91
92
|
<% end %>
|
92
93
|
<% answer_idx += 1 %>
|
@@ -108,7 +109,7 @@
|
|
108
109
|
<div class="row column tos-agreement">
|
109
110
|
<%= form.check_box :tos_agreement, label: t(".tos_agreement"), id: "questionnaire_tos_agreement", disabled: !current_participatory_space.can_participate?(current_user) %>
|
110
111
|
<div class="help-text">
|
111
|
-
<%=
|
112
|
+
<%= decidim_sanitize_editor translated_attribute questionnaire.tos %>
|
112
113
|
</div>
|
113
114
|
</div>
|
114
115
|
<% end %>
|
data/config/locales/ca.yml
CHANGED
@@ -79,6 +79,7 @@ ca:
|
|
79
79
|
form:
|
80
80
|
add_question: Afegeix una pregunta
|
81
81
|
add_separator: Afegir separador
|
82
|
+
add_title_and_description: Afegir títol i descripció
|
82
83
|
already_answered_warning: No pots modificar les preguntes d'aquest formulari perquè ja ha estat contestat per algunes participants.
|
83
84
|
collapse: Redueix totes les preguntes
|
84
85
|
expand: Expandeix totes les preguntes
|
@@ -108,6 +109,15 @@ ca:
|
|
108
109
|
remove: Eliminar
|
109
110
|
separator: Separador
|
110
111
|
up: Pujar
|
112
|
+
title_and_description:
|
113
|
+
collapse: Replegar
|
114
|
+
description: Descripció
|
115
|
+
down: Baixar
|
116
|
+
expand: Expandir
|
117
|
+
remove: Esborrar
|
118
|
+
title: Títol
|
119
|
+
title_and_description: Títol i descripció
|
120
|
+
up: Pujar
|
111
121
|
update:
|
112
122
|
invalid: S'ha produït un error en desar el formulari.
|
113
123
|
success: Formulari desat correctament.
|
@@ -131,6 +141,7 @@ ca:
|
|
131
141
|
short_answer: Resposta curta
|
132
142
|
single_option: Opció única
|
133
143
|
sorting: Ordenació
|
144
|
+
title_and_description: Títol i descripció
|
134
145
|
questionnaires:
|
135
146
|
answer:
|
136
147
|
invalid: S'han produït un error en respondre el formulari.
|
data/config/locales/cs.yml
CHANGED
@@ -79,6 +79,7 @@ cs:
|
|
79
79
|
form:
|
80
80
|
add_question: Přidat otázku
|
81
81
|
add_separator: Přidat oddělovač
|
82
|
+
add_title_and_description: Přidat název a popis
|
82
83
|
already_answered_warning: Formulář je již zodpovězen některými uživateli, takže jeho otázky nemůžete upravovat.
|
83
84
|
collapse: Sbalit všechny otázky
|
84
85
|
expand: Rozbalit všechny otázky
|
@@ -108,6 +109,15 @@ cs:
|
|
108
109
|
remove: Odebrat
|
109
110
|
separator: Oddělovač
|
110
111
|
up: Nahoru
|
112
|
+
title_and_description:
|
113
|
+
collapse: Sbalit
|
114
|
+
description: Popis
|
115
|
+
down: Dolů
|
116
|
+
expand: Rozbalit
|
117
|
+
remove: Odebrat
|
118
|
+
title: Název
|
119
|
+
title_and_description: Název a popis
|
120
|
+
up: Nahoru
|
111
121
|
update:
|
112
122
|
invalid: Při ukládání dotazníku došlo k chybám.
|
113
123
|
success: Formulář byl úspěšně uložen.
|
@@ -131,6 +141,7 @@ cs:
|
|
131
141
|
short_answer: Stručná odpověď
|
132
142
|
single_option: Jedna možnost
|
133
143
|
sorting: Třídění
|
144
|
+
title_and_description: Název a popis
|
134
145
|
questionnaires:
|
135
146
|
answer:
|
136
147
|
invalid: Při odpovědi na dotazník došlo k chybám.
|
data/config/locales/en.yml
CHANGED
@@ -80,6 +80,7 @@ en:
|
|
80
80
|
form:
|
81
81
|
add_question: Add question
|
82
82
|
add_separator: Add separator
|
83
|
+
add_title_and_description: Add title and description
|
83
84
|
already_answered_warning: The form is already answered by some users so you cannot modify its questions.
|
84
85
|
collapse: Collapse all questions
|
85
86
|
expand: Expand all questions
|
@@ -109,6 +110,15 @@ en:
|
|
109
110
|
remove: Remove
|
110
111
|
separator: Separator
|
111
112
|
up: Up
|
113
|
+
title_and_description:
|
114
|
+
collapse: Collapse
|
115
|
+
description: Description
|
116
|
+
down: Down
|
117
|
+
expand: Expand
|
118
|
+
remove: Remove
|
119
|
+
title: Title
|
120
|
+
title_and_description: Title and description
|
121
|
+
up: Up
|
112
122
|
update:
|
113
123
|
invalid: There was a problem saving the form.
|
114
124
|
success: Form successfully saved.
|
@@ -132,6 +142,7 @@ en:
|
|
132
142
|
short_answer: Short answer
|
133
143
|
single_option: Single option
|
134
144
|
sorting: Sorting
|
145
|
+
title_and_description: Title and description
|
135
146
|
questionnaires:
|
136
147
|
answer:
|
137
148
|
invalid: There was a problem answering the form.
|
data/config/locales/es-MX.yml
CHANGED
@@ -79,6 +79,7 @@ es-MX:
|
|
79
79
|
form:
|
80
80
|
add_question: Añadir pregunta
|
81
81
|
add_separator: Añadir separador
|
82
|
+
add_title_and_description: Añadir título y descripción
|
82
83
|
already_answered_warning: Algunos usuarios ya han respondido al cuestionario, por lo que no puedes modificar las preguntas.
|
83
84
|
collapse: Contraer todas las preguntas
|
84
85
|
expand: Expandir todos las preguntas
|
@@ -108,6 +109,15 @@ es-MX:
|
|
108
109
|
remove: Eliminar
|
109
110
|
separator: Separador
|
110
111
|
up: Subir
|
112
|
+
title_and_description:
|
113
|
+
collapse: Contraer
|
114
|
+
description: Descripción
|
115
|
+
down: Bajar
|
116
|
+
expand: Expandir
|
117
|
+
remove: Eliminar
|
118
|
+
title: Título
|
119
|
+
title_and_description: Título y descripción
|
120
|
+
up: Subir
|
111
121
|
update:
|
112
122
|
invalid: Ha habido errores al guardar el cuestionario.
|
113
123
|
success: Formulario guardado correctamente.
|
@@ -131,6 +141,7 @@ es-MX:
|
|
131
141
|
short_answer: Respuesta corta
|
132
142
|
single_option: Opción única
|
133
143
|
sorting: Ordenación
|
144
|
+
title_and_description: Titulo y descripción
|
134
145
|
questionnaires:
|
135
146
|
answer:
|
136
147
|
invalid: Ha habido errores al responder al cuestionario.
|
data/config/locales/es-PY.yml
CHANGED
@@ -79,6 +79,7 @@ es-PY:
|
|
79
79
|
form:
|
80
80
|
add_question: Añadir pregunta
|
81
81
|
add_separator: Añadir separador
|
82
|
+
add_title_and_description: Añadir título y descripción
|
82
83
|
already_answered_warning: Algunos usuarios ya han respondido al cuestionario, por lo que no puedes modificar las preguntas.
|
83
84
|
collapse: Contraer todas las preguntas
|
84
85
|
expand: Expandir todos las preguntas
|
@@ -108,6 +109,15 @@ es-PY:
|
|
108
109
|
remove: Eliminar
|
109
110
|
separator: Separador
|
110
111
|
up: Subir
|
112
|
+
title_and_description:
|
113
|
+
collapse: Contraer
|
114
|
+
description: Descripción
|
115
|
+
down: Bajar
|
116
|
+
expand: Expandir
|
117
|
+
remove: Eliminar
|
118
|
+
title: Título
|
119
|
+
title_and_description: Título y descripción
|
120
|
+
up: Subir
|
111
121
|
update:
|
112
122
|
invalid: Ha habido errores al guardar el cuestionario.
|
113
123
|
success: Formulario guardado correctamente.
|
@@ -131,6 +141,7 @@ es-PY:
|
|
131
141
|
short_answer: Respuesta corta
|
132
142
|
single_option: Opción única
|
133
143
|
sorting: Ordenación
|
144
|
+
title_and_description: Titulo y descripción
|
134
145
|
questionnaires:
|
135
146
|
answer:
|
136
147
|
invalid: Ha habido errores al responder al cuestionario.
|
data/config/locales/es.yml
CHANGED
@@ -79,6 +79,7 @@ es:
|
|
79
79
|
form:
|
80
80
|
add_question: Añadir pregunta
|
81
81
|
add_separator: Añadir separador
|
82
|
+
add_title_and_description: Añadir título y descripción
|
82
83
|
already_answered_warning: Algunas participantes ya han respondido el formulario, por lo que no puedes modificar las preguntas.
|
83
84
|
collapse: Contraer todas las preguntas
|
84
85
|
expand: Expandir todos las preguntas
|
@@ -108,6 +109,15 @@ es:
|
|
108
109
|
remove: Eliminar
|
109
110
|
separator: Separador
|
110
111
|
up: Subir
|
112
|
+
title_and_description:
|
113
|
+
collapse: Contraer
|
114
|
+
description: Descripción
|
115
|
+
down: Bajar
|
116
|
+
expand: Expandir
|
117
|
+
remove: Eliminar
|
118
|
+
title: Título
|
119
|
+
title_and_description: Título y descripción
|
120
|
+
up: Subir
|
111
121
|
update:
|
112
122
|
invalid: Se ha producido un error al guardar el formulario.
|
113
123
|
success: Formulario guardado correctamente.
|
@@ -131,6 +141,7 @@ es:
|
|
131
141
|
short_answer: Respuesta corta
|
132
142
|
single_option: Opción única
|
133
143
|
sorting: Ordenación
|
144
|
+
title_and_description: Titulo y descripción
|
134
145
|
questionnaires:
|
135
146
|
answer:
|
136
147
|
invalid: Se ha producido un error al responder el formulario.
|
data/config/locales/fi-plain.yml
CHANGED
@@ -79,6 +79,7 @@ fi-pl:
|
|
79
79
|
form:
|
80
80
|
add_question: Lisää kysymys
|
81
81
|
add_separator: Lisää erotinviiva
|
82
|
+
add_title_and_description: Lisää otsikko ja kuvaus
|
82
83
|
already_answered_warning: Jotkut käyttäjät ovat jo vastanneet kyselyyn, joten et voi muokata kysymyksiä.
|
83
84
|
collapse: Sulje kaikki kysymykset
|
84
85
|
expand: Avaa kaikki kysymykset
|
@@ -108,6 +109,15 @@ fi-pl:
|
|
108
109
|
remove: Poista
|
109
110
|
separator: Erotin
|
110
111
|
up: Ylös
|
112
|
+
title_and_description:
|
113
|
+
collapse: Pienennä
|
114
|
+
description: Kuvaus
|
115
|
+
down: Alas
|
116
|
+
expand: Laajenna
|
117
|
+
remove: Poista
|
118
|
+
title: Otsikko
|
119
|
+
title_and_description: Otsikko ja kuvaus
|
120
|
+
up: Ylös
|
111
121
|
update:
|
112
122
|
invalid: Kyselylomakkeiden tallentamisessa on tapahtunut virheitä.
|
113
123
|
success: Lomake tallennettu onnistuneesti.
|
@@ -131,6 +141,7 @@ fi-pl:
|
|
131
141
|
short_answer: Lyhyt vastaus
|
132
142
|
single_option: Yksi vaihtoehto
|
133
143
|
sorting: Järjestäminen
|
144
|
+
title_and_description: Otsikko ja kuvaus
|
134
145
|
questionnaires:
|
135
146
|
answer:
|
136
147
|
invalid: Kyselylomakkeeseen vastatessa tapahtui virheitä.
|
data/config/locales/fi.yml
CHANGED
@@ -79,6 +79,7 @@ fi:
|
|
79
79
|
form:
|
80
80
|
add_question: Lisää kysymys
|
81
81
|
add_separator: Lisää erotinviiva
|
82
|
+
add_title_and_description: Lisää otsikko ja kuvaus
|
82
83
|
already_answered_warning: Jotkut käyttäjät ovat jo vastanneet tähän kyselylomakkeeseen, joten et voi enää muokata kysymyksiä.
|
83
84
|
collapse: Sulje kaikki kysymykset
|
84
85
|
expand: Avaa kaikki kysymykset
|
@@ -108,6 +109,15 @@ fi:
|
|
108
109
|
remove: Poista
|
109
110
|
separator: Erotin
|
110
111
|
up: Ylös
|
112
|
+
title_and_description:
|
113
|
+
collapse: Pienennä
|
114
|
+
description: Kuvaus
|
115
|
+
down: Alas
|
116
|
+
expand: Laajenna
|
117
|
+
remove: Poista
|
118
|
+
title: Otsikko
|
119
|
+
title_and_description: Otsikko ja kuvaus
|
120
|
+
up: Ylös
|
111
121
|
update:
|
112
122
|
invalid: Kyselylomakkeen tallentaminen epäonnistui.
|
113
123
|
success: Lomake tallennettu onnistuneesti.
|
@@ -131,6 +141,7 @@ fi:
|
|
131
141
|
short_answer: Lyhyt vastaus
|
132
142
|
single_option: Yksi vaihtoehto
|
133
143
|
sorting: Järjestäminen
|
144
|
+
title_and_description: Otsikko ja kuvaus
|
134
145
|
questionnaires:
|
135
146
|
answer:
|
136
147
|
invalid: Kyselylomakkeeseen vastaaminen epäonnistui.
|