decidim-forms 0.27.2 → 0.27.4
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/forms/decidim/forms/answer_form.rb +17 -2
- data/app/forms/decidim/forms/questionnaire_form.rb +4 -0
- data/app/models/decidim/forms/question.rb +4 -0
- data/app/views/decidim/forms/admin/questionnaires/_form.html.erb +1 -1
- data/app/views/decidim/forms/admin/questionnaires/edit.html.erb +2 -0
- data/app/views/decidim/forms/questionnaires/_answer.html.erb +2 -2
- data/app/views/decidim/forms/questionnaires/show.html.erb +1 -1
- data/config/environment.rb +0 -0
- data/config/locales/de.yml +2 -0
- data/config/locales/el.yml +79 -0
- data/config/locales/es.yml +1 -1
- data/config/locales/eu.yml +11 -11
- data/config/locales/fa-IR.yml +1 -0
- data/config/locales/kaa.yml +8 -0
- data/config/locales/zh-TW.yml +191 -0
- data/lib/decidim/forms/test/shared_examples/has_questionnaire.rb +2 -1
- data/lib/decidim/forms/user_answers_serializer.rb +6 -6
- 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: a7dd21d56ae75820592770d7c2e26e6a28a35b08826d3aef4e6b796e9bd4bdc6
|
4
|
+
data.tar.gz: a65698b93fc4e84f85a61df07e28071d851436c5b0907a00b91127d7f4569684
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1989b2607dc0c56d1b6ed5f0f8eb70421935bf1fd7f565128ec282ea677dc920fca3ea460cbbad1e73681add5611b3010e2b7f77afaadcf5d3eff765dc8b56c0
|
7
|
+
data.tar.gz: '008f83363510243b24a9cb6d4e8f2997e7831d213a024328686bb0ab55ee8af8722f59c85577dfbc489217aa48b4dfa1c12697903b5dd94637e7cf1cd8b03705'
|
@@ -18,7 +18,7 @@ module Decidim
|
|
18
18
|
validates :selected_choices, presence: true, if: :mandatory_choices?
|
19
19
|
|
20
20
|
validate :max_choices, if: -> { question.max_choices }
|
21
|
-
validate :all_choices, if: -> { question.
|
21
|
+
validate :all_choices, if: -> { question.sorting? && question.mandatory? }
|
22
22
|
validate :min_choices, if: -> { question.matrix? && question.mandatory? }
|
23
23
|
validate :documents_present, if: -> { question.question_type == "files" && question.mandatory? }
|
24
24
|
validate :max_characters, if: -> { question.max_characters.positive? }
|
@@ -59,7 +59,22 @@ module Decidim
|
|
59
59
|
end
|
60
60
|
|
61
61
|
def display_conditions_fulfilled?
|
62
|
-
question.display_conditions.
|
62
|
+
return optional_conditions_fulfilled? unless question.display_conditions.where(mandatory: true).any?
|
63
|
+
|
64
|
+
mandatory_conditions_fulfilled?
|
65
|
+
end
|
66
|
+
|
67
|
+
def mandatory_conditions_fulfilled?
|
68
|
+
question.display_conditions.where(mandatory: true).all? do |condition|
|
69
|
+
answer = context.responses&.find { |r| r.question_id&.to_i == condition.condition_question.id }
|
70
|
+
condition.fulfilled?(answer)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def optional_conditions_fulfilled?
|
75
|
+
return true unless question.display_conditions.where(mandatory: false).any?
|
76
|
+
|
77
|
+
question.display_conditions.where(mandatory: false).any? do |condition|
|
63
78
|
answer = context.responses&.find { |r| r.question_id&.to_i == condition.condition_question.id }
|
64
79
|
condition.fulfilled?(answer)
|
65
80
|
end
|
@@ -4,6 +4,8 @@ module Decidim
|
|
4
4
|
module Forms
|
5
5
|
# This class holds a Form to answer a questionnaire from Decidim's public page.
|
6
6
|
class QuestionnaireForm < Decidim::Form
|
7
|
+
include ActiveModel::Validations::Callbacks
|
8
|
+
|
7
9
|
# as questionnaire uses "answers" for the database relationships is
|
8
10
|
# important not to use the same word here to avoid querying all the entries, resulting in a high performance penalty
|
9
11
|
attribute :responses, Array[AnswerForm]
|
@@ -12,6 +14,8 @@ module Decidim
|
|
12
14
|
|
13
15
|
attribute :tos_agreement, Boolean
|
14
16
|
|
17
|
+
before_validation :before_validation
|
18
|
+
|
15
19
|
validates :tos_agreement, allow_nil: false, acceptance: true
|
16
20
|
validate :session_token_in_context
|
17
21
|
|
@@ -31,7 +31,7 @@
|
|
31
31
|
<%= form.translated :editor, :description, toolbar: :full, lines: 30, label: t("models.components.description", scope: "decidim.forms.admin") %>
|
32
32
|
</div>
|
33
33
|
<div class="row column">
|
34
|
-
<%= form.translated :editor, :tos, toolbar: :
|
34
|
+
<%= form.translated :editor, :tos, toolbar: :content, lines: 10, label: t("models.components.tos", scope: "decidim.forms.admin") %>
|
35
35
|
</div>
|
36
36
|
</div>
|
37
37
|
</div>
|
@@ -1,3 +1,5 @@
|
|
1
|
+
<% add_decidim_page_title(t("decidim.forms.admin.questionnaires.edit.title")) %>
|
2
|
+
|
1
3
|
<% if templates_defined? && choose_template? %>
|
2
4
|
<%= render partial: "decidim/templates/admin/questionnaire_templates/choose", locals: { target: questionnaire, form_title: t("decidim.forms.admin.questionnaires.edit.title") } %>
|
3
5
|
<% else %>
|
@@ -7,7 +7,7 @@
|
|
7
7
|
<%= label_tag field_id, translated_attribute(answer.question.body), class: "questionnaire-title_and_description" %>
|
8
8
|
<% if translated_attribute(answer.question.description).present? %>
|
9
9
|
<div class="help-title_and_description ">
|
10
|
-
<%=
|
10
|
+
<%= decidim_sanitize_editor_admin translated_attribute(answer.question.description) %>
|
11
11
|
</div>
|
12
12
|
<% end %>
|
13
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 } %>
|
@@ -22,7 +22,7 @@
|
|
22
22
|
|
23
23
|
<% if translated_attribute(answer.question.description).present? %>
|
24
24
|
<div class="help-text">
|
25
|
-
<%=
|
25
|
+
<%= decidim_sanitize_editor_admin translated_attribute(answer.question.description) %>
|
26
26
|
</div>
|
27
27
|
<% end %>
|
28
28
|
|
@@ -11,7 +11,7 @@
|
|
11
11
|
<h2 class="section-heading"><%= translated_attribute questionnaire.title %></h2>
|
12
12
|
<div class="row">
|
13
13
|
<div class="columns large-<%= columns %> medium-centered lead">
|
14
|
-
<%=
|
14
|
+
<%= decidim_sanitize_editor_admin translated_attribute questionnaire.description %>
|
15
15
|
</div>
|
16
16
|
</div>
|
17
17
|
</div>
|
File without changes
|
data/config/locales/de.yml
CHANGED
@@ -143,6 +143,8 @@ de:
|
|
143
143
|
single_option: Einzelne Option
|
144
144
|
sorting: Sortierung
|
145
145
|
title_and_description: Titel und Beschreibung
|
146
|
+
questionnaire_answer_presenter:
|
147
|
+
download_attachment: Anhang herunterladen
|
146
148
|
questionnaires:
|
147
149
|
answer:
|
148
150
|
invalid: Bei der Beantwortung des Fragebogens sind Fehler aufgetreten.
|
data/config/locales/el.yml
CHANGED
@@ -4,15 +4,22 @@ el:
|
|
4
4
|
attributes:
|
5
5
|
answer:
|
6
6
|
body: Απάντηση
|
7
|
+
choices: Επιλογές
|
8
|
+
selected_choices: Επιλεγμένες επιλογές
|
7
9
|
question:
|
8
10
|
max_choices: Μέγιστος αριθμός επιλογών
|
9
11
|
question_type: Τύπος
|
10
12
|
questionnaire_question:
|
11
13
|
mandatory: Υποχρεωτικό
|
14
|
+
max_characters: Όριο χαρακτήρων (αφήστε στο 0 αν δεν υπάρχει όριο)
|
12
15
|
errors:
|
13
16
|
models:
|
14
17
|
answer:
|
15
18
|
attributes:
|
19
|
+
add_documents:
|
20
|
+
needs_to_be_reattached: Πρέπει να επισυναφθεί ξανά
|
21
|
+
body:
|
22
|
+
too_long: είναι πολύ μεγάλο
|
16
23
|
choices:
|
17
24
|
missing: δεν έχουν ολοκληρωθεί
|
18
25
|
too_many: είναι πάρα πολλά
|
@@ -26,26 +33,68 @@ el:
|
|
26
33
|
description: Περιγραφή
|
27
34
|
tos: Όροι χρήσης υπηρεσίας
|
28
35
|
questionnaires:
|
36
|
+
actions:
|
37
|
+
back: Επιστροφή στις ερωτήσεις
|
38
|
+
show: Εμφάνιση απαντήσεων
|
29
39
|
answer_option:
|
30
40
|
answer_option: Επιλογή απάντησης
|
31
41
|
free_text: Ελεύθερο κείμενο
|
32
42
|
remove: Κατάργηση
|
33
43
|
statement: Δήλωση
|
44
|
+
answers:
|
45
|
+
actions:
|
46
|
+
back: Επιστροφή στις απαντήσεις
|
47
|
+
export: Εξαγωγή
|
48
|
+
show: Εμφάνιση απαντήσεων
|
49
|
+
empty: Δεν υπάρχουν απαντήσεις ακόμη
|
50
|
+
export:
|
51
|
+
answer:
|
52
|
+
title: 'Απάντηση #%{number}'
|
53
|
+
export_response:
|
54
|
+
title: survey_user_answers_%{token}
|
55
|
+
index:
|
56
|
+
title: "%{total} συνολικές απαντήσεις"
|
57
|
+
show:
|
58
|
+
title: 'Απάντηση #%{number}'
|
59
|
+
display_condition:
|
60
|
+
answer_option: Επιλογή απάντησης
|
61
|
+
condition_question: Ερώτηση
|
62
|
+
condition_type: Συνθήκη
|
63
|
+
condition_types:
|
64
|
+
answered: Απαντήθηκε
|
65
|
+
equal: Ίσο
|
66
|
+
match: Περιλαμβάνει κείμενο
|
67
|
+
not_answered: Δεν απαντήθηκε
|
68
|
+
not_equal: Όχι ίσο
|
69
|
+
condition_value: Περιλαμβανόμενο κείμενο
|
70
|
+
display_condition: Συνθήκη εμφάνισης
|
71
|
+
mandatory: Αυτή η συνθήκη πρέπει να ικανοποιείται πάντα ανεξάρτητα από την κατάσταση άλλων συνθηκών
|
72
|
+
remove: Αφαίρεση
|
73
|
+
save_warning: Θυμηθείτε να αποθηκεύσετε τη φόρμα πριν διαμορφώσετε τις συνθήκες εμφάνισης
|
74
|
+
select_answer_option: Επιλέξτε επιλογή απάντησης
|
75
|
+
select_condition_question: Επιλέξτε μια ερώτηση
|
76
|
+
select_condition_type: Επιλέξτε έναν τύπο συνθήκης
|
34
77
|
edit:
|
35
78
|
save: Αποθήκευση
|
36
79
|
title: Επεξεργασία ερωτηματολογίου
|
37
80
|
form:
|
38
81
|
add_question: Προσθήκη ερώτησης
|
39
82
|
add_separator: Προσθήκη διαχωριστικού
|
83
|
+
add_title_and_description: Προσθήκη τίτλου και περιγραφής
|
40
84
|
already_answered_warning: Η φόρμα έχει ήδη απαντηθεί από ορισμένους χρήστες, επομένως δεν μπορείτε να τροποποιήσετε τις ερωτήσεις της.
|
41
85
|
collapse: Σύμπτυξη όλων των ερωτήσεων
|
42
86
|
expand: Ανάπτυξη όλων των ερωτήσεων
|
87
|
+
preview: Προεπισκόπηση
|
88
|
+
title: Επεξεργασία φόρμας για %{questionnaire_for}
|
89
|
+
unpublished_warning: Η φόρμα δεν έχει δημοσιευτεί. Μπορείτε να τροποποιήσετε τις ερωτήσεις της, αλλά με αυτόν τον τρόπο θα διαγράψετε τις τρέχουσες απαντήσεις.
|
43
90
|
matrix_row:
|
44
91
|
matrix_row: Γραμμή
|
45
92
|
remove: Κατάργηση
|
46
93
|
statement: Δήλωση
|
47
94
|
question:
|
48
95
|
add_answer_option: Προσθήκη επιλογής απάντησης
|
96
|
+
add_display_condition: Προσθήκη συνθήκης εμφάνισης
|
97
|
+
add_display_condition_info: Αποθηκεύστε τη φόρμα για να ρυθμίσετε τις συνθήκες εμφάνισης
|
49
98
|
add_matrix_row: Προσθήκη γραμμής
|
50
99
|
any: Οποιαδήποτε
|
51
100
|
collapse: Σύμπτυξη
|
@@ -61,14 +110,31 @@ el:
|
|
61
110
|
remove: Κατάργηση
|
62
111
|
separator: Διαχωριστικό
|
63
112
|
up: Επάνω
|
113
|
+
title_and_description:
|
114
|
+
collapse: Σύμπτυξη
|
115
|
+
description: Περιγραφή
|
116
|
+
down: Κάτω
|
117
|
+
expand: Ανάπτυξη
|
118
|
+
remove: Αφαίρεση
|
119
|
+
title: Τίτλος
|
120
|
+
title_and_description: Τίτλος και περιγραφή
|
121
|
+
up: Πάνω
|
64
122
|
update:
|
65
123
|
invalid: Υπήρξε ένα πρόβλημα κατά την αποθήκευση της φόρμας.
|
124
|
+
success: Η φόρμα αποθηκεύτηκε επιτυχώς.
|
125
|
+
admin_log:
|
126
|
+
questionnaire:
|
127
|
+
update: "Ο/Η %{user_name} ενημέρωσε το %{resource_name} ερωτηματολόγιο"
|
66
128
|
errors:
|
67
129
|
answer:
|
68
130
|
body: Το σώμα δεν μπορεί να είναι κενό
|
69
131
|
images:
|
70
132
|
dimensions: "Π %{width} x Υ %{height} px"
|
133
|
+
processors:
|
134
|
+
resize_and_pad: Αυτή η εικόνα θα αλλάξει μέγεθος σε %{dimensions}.
|
135
|
+
resize_to_fit: Αυτή η εικόνα θα αλλάξει μέγεθος για να χωρέσει σε %{dimensions}.
|
71
136
|
question_types:
|
137
|
+
files: Αρχεία
|
72
138
|
long_answer: Μεγάλη απάντηση
|
73
139
|
matrix_multiple: Πίνακας (πολλαπλή επιλογή)
|
74
140
|
matrix_single: Πίνακας (μία επιλογή)
|
@@ -76,6 +142,9 @@ el:
|
|
76
142
|
short_answer: Σύντομη απάντηση
|
77
143
|
single_option: Μία επιλογή
|
78
144
|
sorting: Ταξινόμηση
|
145
|
+
title_and_description: Τίτλος και περιγραφή
|
146
|
+
questionnaire_answer_presenter:
|
147
|
+
download_attachment: Λήψη συνημμένου
|
79
148
|
questionnaires:
|
80
149
|
answer:
|
81
150
|
invalid: Υπήρξε ένα πρόβλημα κατά την απάντηση της φόρμας.
|
@@ -98,6 +167,11 @@ el:
|
|
98
167
|
questionnaire_for_private_users:
|
99
168
|
body: Η φόρμα είναι διαθέσιμη μόνο για ιδιωτικούς χρήστες
|
100
169
|
title: Η φόρμα έκλεισε
|
170
|
+
questionnaire_js_disabled:
|
171
|
+
body: Ορισμένες από τις δυνατότητες αυτής της φόρμας θα απενεργοποιηθούν. Για να βελτιώσετε την εμπειρία σας, ενεργοποιήστε την JavaScript στο πρόγραμμα περιήγησης.
|
172
|
+
title: Η JavaScript είναι απενεργοποιημένη
|
173
|
+
questionnaire_not_published:
|
174
|
+
body: Αυτή η φόρμα δεν έχει δημοσιευτεί ακόμη.
|
101
175
|
tos_agreement: Με τη συμμετοχή σας, αποδέχεστε τους Όρους παροχής υπηρεσίας
|
102
176
|
step_navigation:
|
103
177
|
show:
|
@@ -106,8 +180,13 @@ el:
|
|
106
180
|
continue: Συνέχεια
|
107
181
|
submit: Υποβολή
|
108
182
|
user_answers_serializer:
|
183
|
+
body: Απάντηση
|
184
|
+
completion: Ολοκλήρωση
|
109
185
|
created_at: Απαντήθηκε στις
|
110
186
|
id: Αναγνωριστικό απάντησης
|
187
|
+
ip_hash: IP Hash
|
188
|
+
question: Ερώτηση
|
111
189
|
registered: Έχει εγγραφεί
|
190
|
+
session_token: Αναγνωριστικό χρήστη
|
112
191
|
unregistered: Δεν έχει εγγραφεί
|
113
192
|
user_status: Κατάσταση χρήστη
|
data/config/locales/es.yml
CHANGED
@@ -73,7 +73,7 @@ es:
|
|
73
73
|
save_warning: Recuerda guardar el formulario antes de configurar las condiciones de visualización
|
74
74
|
select_answer_option: Seleccionar opción de respuesta
|
75
75
|
select_condition_question: Seleccionar una pregunta
|
76
|
-
select_condition_type:
|
76
|
+
select_condition_type: Selecciona un tipo de condición
|
77
77
|
edit:
|
78
78
|
save: Guardar
|
79
79
|
title: Editar el cuestionario
|
data/config/locales/eu.yml
CHANGED
@@ -98,18 +98,18 @@ eu:
|
|
98
98
|
add_matrix_row: Gehitu errenkada
|
99
99
|
any: Edozein
|
100
100
|
collapse: Bildu
|
101
|
-
description:
|
102
|
-
down:
|
101
|
+
description: Deskribapena
|
102
|
+
down: Behera
|
103
103
|
expand: Zabaldu
|
104
104
|
question: Galdera
|
105
105
|
remove: Kendu
|
106
|
-
statement:
|
107
|
-
up:
|
106
|
+
statement: Adierazpena
|
107
|
+
up: Gora
|
108
108
|
separator:
|
109
|
-
down:
|
109
|
+
down: Behera
|
110
110
|
remove: Kendu
|
111
111
|
separator: Bereizlea
|
112
|
-
up:
|
112
|
+
up: Gora
|
113
113
|
title_and_description:
|
114
114
|
collapse: Tolestu
|
115
115
|
description: Deskribapena
|
@@ -124,7 +124,7 @@ eu:
|
|
124
124
|
success: Galdetegia zuzen gorde da.
|
125
125
|
admin_log:
|
126
126
|
questionnaire:
|
127
|
-
update: "%{user_name}
|
127
|
+
update: "%{user_name} erabiltzaileak %{resource_name} galdetegia eguneratu du"
|
128
128
|
errors:
|
129
129
|
answer:
|
130
130
|
body: Testua ezin da hutsik egon
|
@@ -141,21 +141,21 @@ eu:
|
|
141
141
|
multiple_option: Hainbat aukera
|
142
142
|
short_answer: Erantzun laburra
|
143
143
|
single_option: Aukera bakarra
|
144
|
-
sorting:
|
144
|
+
sorting: Sailkaketa
|
145
145
|
title_and_description: Izenburua eta deskribapena
|
146
146
|
questionnaire_answer_presenter:
|
147
147
|
download_attachment: Deskargatu eranskina
|
148
148
|
questionnaires:
|
149
149
|
answer:
|
150
|
-
invalid:
|
150
|
+
invalid: Akatsen bat gertatu da galdeketa erantzutean.
|
151
151
|
max_choices_alert: Aukera gehiegi daude hautatuta
|
152
|
-
success:
|
152
|
+
success: Formularioak ondo erantzun du.
|
153
153
|
question:
|
154
154
|
max_choices: 'Gehienezko aukerak: %{n}'
|
155
155
|
show:
|
156
156
|
answer_questionnaire:
|
157
157
|
anonymous_user_message: <a href="%{sign_in_link}">Hasi saioa zure kontuarekin</a> edo <a href="%{sign_up_link}">saioa hasi</a> galdetegiari erantzuteko.
|
158
|
-
title: Erantzun
|
158
|
+
title: Erantzun formularioari
|
159
159
|
current_step: '%{step} urratsa'
|
160
160
|
of_total_steps: '%{total_steps} etik'
|
161
161
|
questionnaire_answered:
|
@@ -0,0 +1 @@
|
|
1
|
+
fa:
|
data/config/locales/zh-TW.yml
CHANGED
@@ -1 +1,192 @@
|
|
1
|
+
---
|
1
2
|
zh-TW:
|
3
|
+
activemodel:
|
4
|
+
attributes:
|
5
|
+
answer:
|
6
|
+
body: 回答
|
7
|
+
choices: 選項
|
8
|
+
selected_choices: 已選擇的選項
|
9
|
+
question:
|
10
|
+
max_choices: 選擇的最大數量
|
11
|
+
question_type: 類別
|
12
|
+
questionnaire_question:
|
13
|
+
mandatory: 必填的
|
14
|
+
max_characters: 字元限制(如果不需要限制,請設為0)
|
15
|
+
errors:
|
16
|
+
models:
|
17
|
+
answer:
|
18
|
+
attributes:
|
19
|
+
add_documents:
|
20
|
+
needs_to_be_reattached: 需要重新附加
|
21
|
+
body:
|
22
|
+
too_long: 太長
|
23
|
+
choices:
|
24
|
+
missing: 尚未完成
|
25
|
+
too_many: 太多了
|
26
|
+
questionnaire:
|
27
|
+
request_invalid: 處理請求時發生錯誤,請再試一次
|
28
|
+
decidim:
|
29
|
+
forms:
|
30
|
+
admin:
|
31
|
+
models:
|
32
|
+
components:
|
33
|
+
description: 說明
|
34
|
+
tos: 服務條款
|
35
|
+
questionnaires:
|
36
|
+
actions:
|
37
|
+
back: 返回問題
|
38
|
+
show: 顯示回應
|
39
|
+
answer_option:
|
40
|
+
answer_option: 答案選項:
|
41
|
+
free_text: 免費文字
|
42
|
+
remove: 移除
|
43
|
+
statement: 聲明
|
44
|
+
answers:
|
45
|
+
actions:
|
46
|
+
back: 返回回覆
|
47
|
+
export: 匯出
|
48
|
+
show: 顯示答案
|
49
|
+
empty: 目前尚未回答
|
50
|
+
export:
|
51
|
+
answer:
|
52
|
+
title: '回應 #%{number}'
|
53
|
+
export_response:
|
54
|
+
title: 調查問卷使用者回答_%{token}
|
55
|
+
index:
|
56
|
+
title: "%{total} 個回應總數"
|
57
|
+
show:
|
58
|
+
title: '回答#%{number}'
|
59
|
+
display_condition:
|
60
|
+
answer_option: 答案選項
|
61
|
+
condition_question: 問題
|
62
|
+
condition_type: 條件
|
63
|
+
condition_types:
|
64
|
+
answered: 已回答
|
65
|
+
equal: 等於
|
66
|
+
match: 包含文字
|
67
|
+
not_answered: 未回答
|
68
|
+
not_equal: 不等於
|
69
|
+
condition_value: 包含文字
|
70
|
+
display_condition: 顯示條件
|
71
|
+
mandatory: 這個條件必須始終滿足,無論其他條件的狀態如何。
|
72
|
+
remove: 移除
|
73
|
+
save_warning: 在配置顯示條件之前,請記得保存表單。
|
74
|
+
select_answer_option: 選擇答案選項
|
75
|
+
select_condition_question: 選取一個問題
|
76
|
+
select_condition_type: 選擇一個條件類型
|
77
|
+
edit:
|
78
|
+
save: 儲存
|
79
|
+
title: 編輯問卷內容
|
80
|
+
form:
|
81
|
+
add_question: 新增問題
|
82
|
+
add_separator: 新增分隔線
|
83
|
+
add_title_and_description: 新增標題與描述
|
84
|
+
already_answered_warning: 已有使用者回答此表單,因此您無法修改問題。
|
85
|
+
collapse: 收起所有問題
|
86
|
+
expand: 展開所有問題
|
87
|
+
preview: 預覽
|
88
|
+
title: 編輯問卷表單%{questionnaire_for}
|
89
|
+
unpublished_warning: 此表單尚未發佈。您可以修改其問題,但這樣做將刪除目前的回答。
|
90
|
+
matrix_row:
|
91
|
+
matrix_row: 列
|
92
|
+
remove: 移除
|
93
|
+
statement: 聲明
|
94
|
+
question:
|
95
|
+
add_answer_option: 新增答案選項
|
96
|
+
add_display_condition: 新增顯示條件
|
97
|
+
add_display_condition_info: 請先儲存表單再設定顯示條件
|
98
|
+
add_matrix_row: 新增列
|
99
|
+
any: 任何
|
100
|
+
collapse: 收回
|
101
|
+
description: 說明
|
102
|
+
down: 向下
|
103
|
+
expand: 展開
|
104
|
+
question: 問題
|
105
|
+
remove: 移除
|
106
|
+
statement: 聲明
|
107
|
+
up: 往上
|
108
|
+
separator:
|
109
|
+
down: 向下
|
110
|
+
remove: 移除
|
111
|
+
separator: 分隔線
|
112
|
+
up: 往上
|
113
|
+
title_and_description:
|
114
|
+
collapse: 收回
|
115
|
+
description: 說明
|
116
|
+
down: 向下
|
117
|
+
expand: 展開
|
118
|
+
remove: 移除
|
119
|
+
title: 標題
|
120
|
+
title_and_description: 標題和描述
|
121
|
+
up: 往上
|
122
|
+
update:
|
123
|
+
invalid: 儲存表單時發生問題。
|
124
|
+
success: 表單已成功儲存。
|
125
|
+
admin_log:
|
126
|
+
questionnaire:
|
127
|
+
update: "%{user_name} 更新了 %{resource_name} 問卷模板"
|
128
|
+
errors:
|
129
|
+
answer:
|
130
|
+
body: 內容不能為空
|
131
|
+
images:
|
132
|
+
dimensions: "%{width} x %{height} 像素"
|
133
|
+
processors:
|
134
|
+
resize_and_pad: 圖片將被調整大小並填充至 %{dimensions}。
|
135
|
+
resize_to_fit: 此圖片將被調整大小以符合 %{dimensions}。
|
136
|
+
question_types:
|
137
|
+
files: 檔案
|
138
|
+
long_answer: 長回答
|
139
|
+
matrix_multiple: 矩陣(多重選項)
|
140
|
+
matrix_single: 矩陣(單一選項)
|
141
|
+
multiple_option: 多選
|
142
|
+
short_answer: 簡答
|
143
|
+
single_option: 單選
|
144
|
+
sorting: 排序中
|
145
|
+
title_and_description: 標題和描述
|
146
|
+
questionnaire_answer_presenter:
|
147
|
+
download_attachment: 下載附件
|
148
|
+
questionnaires:
|
149
|
+
answer:
|
150
|
+
invalid: 回答表單時出現問題
|
151
|
+
max_choices_alert: 選擇的項目太多了
|
152
|
+
success: 表單已成功回答
|
153
|
+
question:
|
154
|
+
max_choices: '最多選擇數量: %{n}'
|
155
|
+
show:
|
156
|
+
answer_questionnaire:
|
157
|
+
anonymous_user_message: <a href="%{sign_in_link}">使用現有帳號登入</a> 或 <a href="%{sign_up_link}">註冊新帳戶</a> 以回答此表單。
|
158
|
+
title: 回答表單
|
159
|
+
current_step: 步驟%{step}
|
160
|
+
of_total_steps: 的%{total_steps}
|
161
|
+
questionnaire_answered:
|
162
|
+
body: 您已經回答過此表格。
|
163
|
+
title: 已經回答
|
164
|
+
questionnaire_closed:
|
165
|
+
body: 該表格已關閉,無法回答。
|
166
|
+
title: 表單已關閉
|
167
|
+
questionnaire_for_private_users:
|
168
|
+
body: 此表單僅適用於私人使用者
|
169
|
+
title: 表單已關閉
|
170
|
+
questionnaire_js_disabled:
|
171
|
+
body: 此表單的某些功能將被禁用。為了改善您的體驗,請在您的瀏覽器中啟用JavaScript。
|
172
|
+
title: JavaScript已停用
|
173
|
+
questionnaire_not_published:
|
174
|
+
body: 此表單尚未發佈。
|
175
|
+
tos_agreement: 透過參與,您同意其服務條款
|
176
|
+
step_navigation:
|
177
|
+
show:
|
178
|
+
are_you_sure: 此操作無法撤消,您將無法編輯您的答案。您確定嗎?
|
179
|
+
back: 返回
|
180
|
+
continue: 繼續
|
181
|
+
submit: 提交
|
182
|
+
user_answers_serializer:
|
183
|
+
body: 回答
|
184
|
+
completion: 完成
|
185
|
+
created_at: 回答時間
|
186
|
+
id: 回答 ID
|
187
|
+
ip_hash: IP Hash
|
188
|
+
question: 問題
|
189
|
+
registered: 已註冊
|
190
|
+
session_token: 使用者識別碼
|
191
|
+
unregistered: 未註冊
|
192
|
+
user_status: 用戶狀態
|
@@ -538,12 +538,13 @@ shared_examples_for "has questionnaire" do
|
|
538
538
|
end
|
539
539
|
end
|
540
540
|
|
541
|
-
context "when question type is sorting" do
|
541
|
+
context "when question type is sorting and mandatory" do
|
542
542
|
let!(:question) do
|
543
543
|
create(
|
544
544
|
:questionnaire_question,
|
545
545
|
questionnaire: questionnaire,
|
546
546
|
question_type: "sorting",
|
547
|
+
mandatory: true,
|
547
548
|
options: [
|
548
549
|
{ "body" => { "en" => "chocolate" } },
|
549
550
|
{ "body" => { "en" => "like" } },
|
@@ -39,19 +39,19 @@ module Decidim
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def questions_hash
|
42
|
-
|
42
|
+
questionnaire_id = @answers.first&.decidim_questionnaire_id
|
43
|
+
return {} unless questionnaire_id
|
43
44
|
|
44
|
-
|
45
|
+
questions = Decidim::Forms::Question.where(decidim_questionnaire_id: questionnaire_id)
|
46
|
+
return {} if questions.none?
|
47
|
+
|
48
|
+
questions.each.inject({}) do |serialized, question|
|
45
49
|
serialized.update(
|
46
50
|
translated_question_key(question.position, question.body) => ""
|
47
51
|
)
|
48
52
|
end
|
49
53
|
end
|
50
54
|
|
51
|
-
def questionnaire
|
52
|
-
@answers.first&.questionnaire
|
53
|
-
end
|
54
|
-
|
55
55
|
def translated_question_key(idx, body)
|
56
56
|
"#{idx + 1}. #{translated_attribute(body)}"
|
57
57
|
end
|
metadata
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: decidim-forms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.27.
|
4
|
+
version: 0.27.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Josep Jaume Rey Peroy
|
8
8
|
- Marc Riera Casals
|
9
9
|
- Oriol Gual Oliva
|
10
10
|
- Rubén González Valero
|
11
|
-
autorequire:
|
11
|
+
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2023-
|
14
|
+
date: 2023-07-27 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: decidim-core
|
@@ -19,14 +19,14 @@ dependencies:
|
|
19
19
|
requirements:
|
20
20
|
- - '='
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: 0.27.
|
22
|
+
version: 0.27.4
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
27
|
- - '='
|
28
28
|
- !ruby/object:Gem::Version
|
29
|
-
version: 0.27.
|
29
|
+
version: 0.27.4
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: wicked_pdf
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
@@ -61,28 +61,28 @@ dependencies:
|
|
61
61
|
requirements:
|
62
62
|
- - '='
|
63
63
|
- !ruby/object:Gem::Version
|
64
|
-
version: 0.27.
|
64
|
+
version: 0.27.4
|
65
65
|
type: :development
|
66
66
|
prerelease: false
|
67
67
|
version_requirements: !ruby/object:Gem::Requirement
|
68
68
|
requirements:
|
69
69
|
- - '='
|
70
70
|
- !ruby/object:Gem::Version
|
71
|
-
version: 0.27.
|
71
|
+
version: 0.27.4
|
72
72
|
- !ruby/object:Gem::Dependency
|
73
73
|
name: decidim-dev
|
74
74
|
requirement: !ruby/object:Gem::Requirement
|
75
75
|
requirements:
|
76
76
|
- - '='
|
77
77
|
- !ruby/object:Gem::Version
|
78
|
-
version: 0.27.
|
78
|
+
version: 0.27.4
|
79
79
|
type: :development
|
80
80
|
prerelease: false
|
81
81
|
version_requirements: !ruby/object:Gem::Requirement
|
82
82
|
requirements:
|
83
83
|
- - '='
|
84
84
|
- !ruby/object:Gem::Version
|
85
|
-
version: 0.27.
|
85
|
+
version: 0.27.4
|
86
86
|
description: A forms gem for decidim.
|
87
87
|
email:
|
88
88
|
- josepjaume@gmail.com
|
@@ -186,6 +186,7 @@ files:
|
|
186
186
|
- app/views/decidim/forms/questionnaires/show.html.erb
|
187
187
|
- app/views/layouts/decidim/forms/admin/questionnaires/questionnaire_answers.html.erb
|
188
188
|
- config/assets.rb
|
189
|
+
- config/environment.rb
|
189
190
|
- config/initializers/wicked_pdf.rb
|
190
191
|
- config/locales/am-ET.yml
|
191
192
|
- config/locales/ar-SA.yml
|
@@ -209,6 +210,7 @@ files:
|
|
209
210
|
- config/locales/et-EE.yml
|
210
211
|
- config/locales/et.yml
|
211
212
|
- config/locales/eu.yml
|
213
|
+
- config/locales/fa-IR.yml
|
212
214
|
- config/locales/fi-pl.yml
|
213
215
|
- config/locales/fi-plain.yml
|
214
216
|
- config/locales/fi.yml
|
@@ -227,6 +229,7 @@ files:
|
|
227
229
|
- config/locales/it.yml
|
228
230
|
- config/locales/ja.yml
|
229
231
|
- config/locales/ka-GE.yml
|
232
|
+
- config/locales/kaa.yml
|
230
233
|
- config/locales/ko-KR.yml
|
231
234
|
- config/locales/ko.yml
|
232
235
|
- config/locales/lb-LU.yml
|
@@ -302,7 +305,7 @@ homepage: https://github.com/decidim/decidim
|
|
302
305
|
licenses:
|
303
306
|
- AGPL-3.0
|
304
307
|
metadata: {}
|
305
|
-
post_install_message:
|
308
|
+
post_install_message:
|
306
309
|
rdoc_options: []
|
307
310
|
require_paths:
|
308
311
|
- lib
|
@@ -317,8 +320,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
317
320
|
- !ruby/object:Gem::Version
|
318
321
|
version: '0'
|
319
322
|
requirements: []
|
320
|
-
rubygems_version: 3.
|
321
|
-
signing_key:
|
323
|
+
rubygems_version: 3.2.22
|
324
|
+
signing_key:
|
322
325
|
specification_version: 4
|
323
326
|
summary: Decidim forms
|
324
327
|
test_files: []
|