decidim-forms 0.26.7 → 0.27.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/commands/decidim/forms/admin/update_questionnaire.rb +13 -8
- data/app/commands/decidim/forms/answer_questionnaire.rb +1 -1
- data/app/controllers/decidim/forms/admin/concerns/has_questionnaire.rb +2 -2
- data/app/forms/decidim/forms/admin/display_condition_form.rb +3 -3
- data/app/models/decidim/forms/answer.rb +2 -2
- data/app/models/decidim/forms/display_condition.rb +1 -1
- data/app/models/decidim/forms/questionnaire.rb +7 -0
- data/app/packs/src/decidim/forms/admin/forms.js +0 -3
- data/app/presenters/decidim/forms/admin/questionnaire_answer_presenter.rb +13 -8
- data/app/presenters/decidim/forms/admin/questionnaire_participant_presenter.rb +5 -3
- data/app/presenters/decidim/forms/admin_log/questionnaire_presenter.rb +35 -0
- data/app/queries/decidim/forms/questionnaire_participant.rb +1 -1
- data/app/queries/decidim/forms/questionnaire_participants.rb +1 -1
- data/app/queries/decidim/forms/questionnaire_user_answers.rb +1 -1
- data/app/views/decidim/forms/admin/questionnaires/_form.html.erb +1 -1
- data/app/views/decidim/forms/questionnaires/_answer.html.erb +2 -2
- data/app/views/decidim/forms/questionnaires/show.html.erb +5 -3
- data/config/locales/am-ET.yml +1 -0
- data/config/locales/ar.yml +1 -0
- data/config/locales/bg.yml +1 -0
- data/config/locales/ca.yml +7 -6
- data/config/locales/cs.yml +6 -5
- data/config/locales/da.yml +1 -0
- data/config/locales/de.yml +1 -4
- data/config/locales/el.yml +1 -4
- data/config/locales/en.yml +5 -5
- data/config/locales/eo.yml +1 -0
- data/config/locales/es-MX.yml +6 -5
- data/config/locales/es-PY.yml +6 -5
- data/config/locales/es.yml +6 -5
- data/config/locales/et.yml +1 -0
- data/config/locales/eu.yml +21 -39
- data/config/locales/fi-plain.yml +6 -5
- data/config/locales/fi.yml +6 -5
- data/config/locales/fr-CA.yml +3 -5
- data/config/locales/fr.yml +3 -5
- data/config/locales/ga-IE.yml +1 -0
- data/config/locales/gl.yml +5 -0
- data/config/locales/hr.yml +1 -0
- data/config/locales/hu.yml +4 -0
- data/config/locales/id-ID.yml +1 -0
- data/config/locales/is-IS.yml +2 -1
- data/config/locales/it.yml +1 -4
- data/config/locales/ja.yml +6 -5
- data/config/locales/ko.yml +1 -0
- data/config/locales/lb.yml +1 -4
- data/config/locales/lt.yml +1 -188
- data/config/locales/lv.yml +1 -4
- data/config/locales/mt.yml +1 -0
- data/config/locales/nl.yml +1 -4
- data/config/locales/no.yml +1 -4
- data/config/locales/om-ET.yml +1 -0
- data/config/locales/pl.yml +5 -9
- data/config/locales/pt-BR.yml +2 -5
- data/config/locales/pt.yml +1 -4
- data/config/locales/ro-RO.yml +1 -6
- data/config/locales/ru.yml +1 -0
- data/config/locales/si-LK.yml +1 -0
- data/config/locales/sk.yml +1 -0
- data/config/locales/sl.yml +1 -0
- data/config/locales/so-SO.yml +1 -0
- data/config/locales/sr-CS.yml +1 -0
- data/config/locales/sv.yml +1 -4
- data/config/locales/sw-KE.yml +1 -0
- data/config/locales/ti-ER.yml +1 -0
- data/config/locales/tr-TR.yml +1 -4
- data/config/locales/uk.yml +1 -0
- data/config/locales/val-ES.yml +1 -0
- data/config/locales/vi.yml +1 -0
- data/config/locales/zh-CN.yml +1 -4
- data/config/locales/zh-TW.yml +1 -190
- data/lib/decidim/exporters/form_pdf.rb +2 -2
- data/lib/decidim/forms/{data_portability_user_answers_serializer.rb → download_your_data_user_answers_serializer.rb} +2 -2
- data/lib/decidim/forms/test/factories.rb +22 -13
- data/lib/decidim/forms/test/shared_examples/manage_questionnaire_answers.rb +2 -25
- data/lib/decidim/forms/test/shared_examples/manage_questionnaires/update_questions.rb +2 -2
- data/lib/decidim/forms/user_answers_serializer.rb +2 -2
- data/lib/decidim/forms/version.rb +1 -1
- data/lib/decidim/forms.rb +1 -1
- metadata +14 -19
- data/config/locales/fa-IR.yml +0 -1
- data/config/locales/gn-PY.yml +0 -1
- data/config/locales/ka-GE.yml +0 -1
- data/config/locales/kaa.yml +0 -1
- data/config/locales/lo-LA.yml +0 -1
- data/config/locales/oc-FR.yml +0 -1
data/config/locales/pl.yml
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
---
|
1
2
|
pl:
|
2
3
|
activemodel:
|
3
4
|
attributes:
|
@@ -7,10 +8,10 @@ pl:
|
|
7
8
|
selected_choices: Wybrane opcje
|
8
9
|
question:
|
9
10
|
max_choices: Maksymalna liczba opcji do wyboru
|
10
|
-
question_type: Typ
|
11
|
+
question_type: Typ
|
11
12
|
questionnaire_question:
|
12
|
-
mandatory:
|
13
|
-
max_characters: Limit znaków (zostaw 0
|
13
|
+
mandatory: Obowiązkowy
|
14
|
+
max_characters: Limit znaków (zostaw 0 jeśli nie chcesz ustawiać limitu)
|
14
15
|
errors:
|
15
16
|
models:
|
16
17
|
answer:
|
@@ -37,7 +38,7 @@ pl:
|
|
37
38
|
show: Pokaż odpowiedzi
|
38
39
|
answer_option:
|
39
40
|
answer_option: Opcja odpowiedzi
|
40
|
-
free_text:
|
41
|
+
free_text: Dowolny tekst
|
41
42
|
remove: Usuń
|
42
43
|
statement: Komunikat
|
43
44
|
answers:
|
@@ -118,10 +119,6 @@ pl:
|
|
118
119
|
extension_allowlist: 'Dozwolone formaty:'
|
119
120
|
images:
|
120
121
|
dimensions: "%{width} × %{height} px"
|
121
|
-
dimensions_info: 'Rozmiar obrazu będzie wynosił:'
|
122
|
-
processors:
|
123
|
-
resize_and_pad: Zmieniony i dopełniony do
|
124
|
-
resize_to_fit: Dopasowany
|
125
122
|
question_types:
|
126
123
|
files: Pliki
|
127
124
|
long_answer: Długa odpowiedź
|
@@ -131,7 +128,6 @@ pl:
|
|
131
128
|
short_answer: Krótka odpowiedź
|
132
129
|
single_option: Jedna opcja
|
133
130
|
sorting: Sortowanie
|
134
|
-
title_and_description: Tytuł i opis
|
135
131
|
questionnaires:
|
136
132
|
answer:
|
137
133
|
invalid: Podczas wypełniania formularza wystąpiły błędy.
|
data/config/locales/pt-BR.yml
CHANGED
@@ -1,4 +1,5 @@
|
|
1
|
-
|
1
|
+
---
|
2
|
+
pt:
|
2
3
|
activemodel:
|
3
4
|
attributes:
|
4
5
|
answer:
|
@@ -118,10 +119,6 @@ pt-BR:
|
|
118
119
|
extension_allowlist: 'Formatos aceitos:'
|
119
120
|
images:
|
120
121
|
dimensions: "%{width} x %{height} px"
|
121
|
-
dimensions_info: 'Esta imagem será:'
|
122
|
-
processors:
|
123
|
-
resize_and_pad: Redimensionado e acolchoado para
|
124
|
-
resize_to_fit: Redimensionado para caber
|
125
122
|
question_types:
|
126
123
|
files: Arquivos
|
127
124
|
long_answer: Resposta longa
|
data/config/locales/pt.yml
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
---
|
1
2
|
pt:
|
2
3
|
activemodel:
|
3
4
|
attributes:
|
@@ -118,10 +119,6 @@ pt:
|
|
118
119
|
extension_allowlist: 'Formatos aceites:'
|
119
120
|
images:
|
120
121
|
dimensions: "%{width} x %{height} px"
|
121
|
-
dimensions_info: 'Esta imagem será:'
|
122
|
-
processors:
|
123
|
-
resize_and_pad: Redimensionada e ajustada para
|
124
|
-
resize_to_fit: Redimensionada para caber
|
125
122
|
question_types:
|
126
123
|
files: Ficheiros
|
127
124
|
long_answer: Resposta longa
|
data/config/locales/ro-RO.yml
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
---
|
1
2
|
ro:
|
2
3
|
activemodel:
|
3
4
|
attributes:
|
@@ -128,10 +129,6 @@ ro:
|
|
128
129
|
extension_allowlist: 'Formate acceptate:'
|
129
130
|
images:
|
130
131
|
dimensions: "%{width} x %{height} px"
|
131
|
-
dimensions_info: 'Această imagine va fi:'
|
132
|
-
processors:
|
133
|
-
resize_and_pad: Redimensionat și padded la
|
134
|
-
resize_to_fit: Redimensionată pentru a se potrivi
|
135
132
|
question_types:
|
136
133
|
files: Fișiere
|
137
134
|
long_answer: Răspuns lung
|
@@ -142,8 +139,6 @@ ro:
|
|
142
139
|
single_option: Opțiune unică
|
143
140
|
sorting: Sortare
|
144
141
|
title_and_description: Titlu și descriere
|
145
|
-
questionnaire_answer_presenter:
|
146
|
-
download_attachment: Descărcare atașament
|
147
142
|
questionnaires:
|
148
143
|
answer:
|
149
144
|
invalid: A apărut o problemă la completarea chestionarului.
|
data/config/locales/ru.yml
CHANGED
data/config/locales/si-LK.yml
CHANGED
data/config/locales/sk.yml
CHANGED
data/config/locales/sl.yml
CHANGED
data/config/locales/so-SO.yml
CHANGED
data/config/locales/sr-CS.yml
CHANGED
data/config/locales/sv.yml
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
---
|
1
2
|
sv:
|
2
3
|
activemodel:
|
3
4
|
attributes:
|
@@ -128,10 +129,6 @@ sv:
|
|
128
129
|
extension_allowlist: 'Godkända format:'
|
129
130
|
images:
|
130
131
|
dimensions: "%{width} x %{height} px"
|
131
|
-
dimensions_info: 'Denna bild kommer att vara:'
|
132
|
-
processors:
|
133
|
-
resize_and_pad: Anpassad och vadderad till
|
134
|
-
resize_to_fit: Anpassad för att passa
|
135
132
|
question_types:
|
136
133
|
files: Filer
|
137
134
|
long_answer: Långt svar
|
data/config/locales/sw-KE.yml
CHANGED
data/config/locales/ti-ER.yml
CHANGED
data/config/locales/tr-TR.yml
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
---
|
1
2
|
tr:
|
2
3
|
activemodel:
|
3
4
|
attributes:
|
@@ -113,10 +114,6 @@ tr:
|
|
113
114
|
extension_allowlist: 'Kabul edilen biçimler:'
|
114
115
|
images:
|
115
116
|
dimensions: "%{width} x %{height} px"
|
116
|
-
dimensions_info: 'Bu resim:'
|
117
|
-
processors:
|
118
|
-
resize_and_pad: Yeniden boyutlandırıldı ve dolduruldu
|
119
|
-
resize_to_fit: Sığacak şekilde yeniden boyutlandırıldı
|
120
117
|
question_types:
|
121
118
|
long_answer: Uzun cevap
|
122
119
|
matrix_multiple: Matris (Çoklu seçenek)
|
data/config/locales/uk.yml
CHANGED
data/config/locales/val-ES.yml
CHANGED
data/config/locales/vi.yml
CHANGED
data/config/locales/zh-CN.yml
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
---
|
1
2
|
zh-CN:
|
2
3
|
activemodel:
|
3
4
|
attributes:
|
@@ -112,10 +113,6 @@ zh-CN:
|
|
112
113
|
extension_allowlist: '接受的格式:'
|
113
114
|
images:
|
114
115
|
dimensions: "%{width} x %{height} px"
|
115
|
-
dimensions_info: '这张图片将是:'
|
116
|
-
processors:
|
117
|
-
resize_and_pad: 缩放并填充到
|
118
|
-
resize_to_fit: 调整到适合的
|
119
116
|
question_types:
|
120
117
|
long_answer: 长答案
|
121
118
|
matrix_multiple: 矩阵(多选项)
|
data/config/locales/zh-TW.yml
CHANGED
@@ -1,191 +1,2 @@
|
|
1
|
+
---
|
1
2
|
zh-TW:
|
2
|
-
activemodel:
|
3
|
-
attributes:
|
4
|
-
answer:
|
5
|
-
body: 回答
|
6
|
-
choices: 選項
|
7
|
-
selected_choices: 已選擇的選項
|
8
|
-
question:
|
9
|
-
max_choices: 選擇的最大數量
|
10
|
-
question_type: 類別
|
11
|
-
questionnaire_question:
|
12
|
-
mandatory: 必填的
|
13
|
-
max_characters: 字元限制(如果不需要限制,請設為0)
|
14
|
-
errors:
|
15
|
-
models:
|
16
|
-
answer:
|
17
|
-
attributes:
|
18
|
-
add_documents:
|
19
|
-
needs_to_be_reattached: 需要重新附加
|
20
|
-
body:
|
21
|
-
too_long: 太長
|
22
|
-
choices:
|
23
|
-
missing: 尚未完成
|
24
|
-
too_many: 太多了
|
25
|
-
questionnaire:
|
26
|
-
request_invalid: 處理請求時發生錯誤,請再試一次
|
27
|
-
decidim:
|
28
|
-
forms:
|
29
|
-
admin:
|
30
|
-
models:
|
31
|
-
components:
|
32
|
-
description: 說明
|
33
|
-
tos: 服務條款
|
34
|
-
questionnaires:
|
35
|
-
actions:
|
36
|
-
back: 返回問題
|
37
|
-
show: 顯示回應
|
38
|
-
answer_option:
|
39
|
-
answer_option: 答案選項:
|
40
|
-
free_text: 免費文字
|
41
|
-
remove: 移除
|
42
|
-
statement: 聲明
|
43
|
-
answers:
|
44
|
-
actions:
|
45
|
-
back: 返回回覆
|
46
|
-
export: 匯出
|
47
|
-
show: 顯示答案
|
48
|
-
empty: 目前尚未回答
|
49
|
-
export:
|
50
|
-
answer:
|
51
|
-
title: '回應 #%{number}'
|
52
|
-
export_response:
|
53
|
-
title: 調查問卷使用者回答_%{token}
|
54
|
-
index:
|
55
|
-
title: "%{total} 個回應總數"
|
56
|
-
show:
|
57
|
-
title: '回答#%{number}'
|
58
|
-
display_condition:
|
59
|
-
answer_option: 答案選項
|
60
|
-
condition_question: 問題
|
61
|
-
condition_type: 條件
|
62
|
-
condition_types:
|
63
|
-
answered: 已回答
|
64
|
-
equal: 等於
|
65
|
-
match: 包含文字
|
66
|
-
not_answered: 未回答
|
67
|
-
not_equal: 不等於
|
68
|
-
condition_value: 包含文字
|
69
|
-
display_condition: 顯示條件
|
70
|
-
mandatory: 這個條件必須始終滿足,無論其他條件的狀態如何。
|
71
|
-
remove: 移除
|
72
|
-
save_warning: 在配置顯示條件之前,請記得保存表單。
|
73
|
-
select_answer_option: 選擇答案選項
|
74
|
-
select_condition_question: 選取一個問題
|
75
|
-
select_condition_type: 選擇一個條件類型
|
76
|
-
edit:
|
77
|
-
save: 儲存
|
78
|
-
title: 編輯問卷內容
|
79
|
-
form:
|
80
|
-
add_question: 新增問題
|
81
|
-
add_separator: 新增分隔線
|
82
|
-
add_title_and_description: 新增標題與描述
|
83
|
-
already_answered_warning: 已有使用者回答此表單,因此您無法修改問題。
|
84
|
-
collapse: 收起所有問題
|
85
|
-
expand: 展開所有問題
|
86
|
-
preview: 預覽
|
87
|
-
title: 編輯問卷表單%{questionnaire_for}
|
88
|
-
unpublished_warning: 此表單尚未發佈。您可以修改其問題,但這樣做將刪除目前的回答。
|
89
|
-
matrix_row:
|
90
|
-
matrix_row: 列
|
91
|
-
remove: 移除
|
92
|
-
statement: 聲明
|
93
|
-
question:
|
94
|
-
add_answer_option: 新增答案選項
|
95
|
-
add_display_condition: 新增顯示條件
|
96
|
-
add_display_condition_info: 請先儲存表單再設定顯示條件
|
97
|
-
add_matrix_row: 新增列
|
98
|
-
any: 任何
|
99
|
-
collapse: 收回
|
100
|
-
description: 說明
|
101
|
-
down: 向下
|
102
|
-
expand: 展開
|
103
|
-
question: 問題
|
104
|
-
remove: 移除
|
105
|
-
statement: 聲明
|
106
|
-
up: 往上
|
107
|
-
separator:
|
108
|
-
down: 向下
|
109
|
-
remove: 移除
|
110
|
-
separator: 分隔線
|
111
|
-
up: 往上
|
112
|
-
title_and_description:
|
113
|
-
collapse: 收回
|
114
|
-
description: 說明
|
115
|
-
down: 向下
|
116
|
-
expand: 展開
|
117
|
-
remove: 移除
|
118
|
-
title: 標題
|
119
|
-
title_and_description: 標題和描述
|
120
|
-
up: 往上
|
121
|
-
update:
|
122
|
-
invalid: 儲存表單時發生問題。
|
123
|
-
success: 表單已成功儲存。
|
124
|
-
errors:
|
125
|
-
answer:
|
126
|
-
body: 內容不能為空
|
127
|
-
files:
|
128
|
-
extension_allowlist: '可用格式'
|
129
|
-
images:
|
130
|
-
dimensions: "%{width} x %{height} 像素"
|
131
|
-
dimensions_info: '這張圖片會是:'
|
132
|
-
processors:
|
133
|
-
resize_and_pad: 調整大小並填充為
|
134
|
-
resize_to_fit: 重新調整大小以符合
|
135
|
-
question_types:
|
136
|
-
files: 檔案
|
137
|
-
long_answer: 長回答
|
138
|
-
matrix_multiple: 矩陣(多重選項)
|
139
|
-
matrix_single: 矩陣(單一選項)
|
140
|
-
multiple_option: 多選
|
141
|
-
short_answer: 簡答
|
142
|
-
single_option: 單選
|
143
|
-
sorting: 排序中
|
144
|
-
title_and_description: 標題和描述
|
145
|
-
questionnaire_answer_presenter:
|
146
|
-
download_attachment: 下載附件
|
147
|
-
questionnaires:
|
148
|
-
answer:
|
149
|
-
invalid: 回答表單時出現問題
|
150
|
-
max_choices_alert: 選擇的項目太多了
|
151
|
-
success: 表單已成功回答
|
152
|
-
question:
|
153
|
-
max_choices: '最多選擇數量: %{n}'
|
154
|
-
show:
|
155
|
-
answer_questionnaire:
|
156
|
-
anonymous_user_message: <a href="%{sign_in_link}">使用現有帳號登入</a> 或 <a href="%{sign_up_link}">註冊新帳戶</a> 以回答此表單。
|
157
|
-
title: 回答表單
|
158
|
-
current_step: 步驟%{step}
|
159
|
-
of_total_steps: 的%{total_steps}
|
160
|
-
questionnaire_answered:
|
161
|
-
body: 您已經回答過此表格。
|
162
|
-
title: 已經回答
|
163
|
-
questionnaire_closed:
|
164
|
-
body: 該表格已關閉,無法回答。
|
165
|
-
title: 表單已關閉
|
166
|
-
questionnaire_for_private_users:
|
167
|
-
body: 此表單僅適用於私人使用者
|
168
|
-
title: 表單已關閉
|
169
|
-
questionnaire_js_disabled:
|
170
|
-
body: 此表單的某些功能將被禁用。為了改善您的體驗,請在您的瀏覽器中啟用JavaScript。
|
171
|
-
title: JavaScript已停用
|
172
|
-
questionnaire_not_published:
|
173
|
-
body: 此表單尚未發佈。
|
174
|
-
tos_agreement: 透過參與,您同意其服務條款
|
175
|
-
step_navigation:
|
176
|
-
show:
|
177
|
-
are_you_sure: 此操作無法撤消,您將無法編輯您的答案。您確定嗎?
|
178
|
-
back: 返回
|
179
|
-
continue: 繼續
|
180
|
-
submit: 提交
|
181
|
-
user_answers_serializer:
|
182
|
-
body: 回答
|
183
|
-
completion: 完成
|
184
|
-
created_at: 回答時間
|
185
|
-
id: 回答 ID
|
186
|
-
ip_hash: IP Hash
|
187
|
-
question: 問題
|
188
|
-
registered: 已註冊
|
189
|
-
session_token: 使用者識別碼
|
190
|
-
unregistered: 未註冊
|
191
|
-
user_status: 用戶狀態
|
@@ -15,11 +15,11 @@ module Decidim
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def template
|
18
|
-
"decidim/forms/admin/questionnaires/answers/export/pdf
|
18
|
+
"decidim/forms/admin/questionnaires/answers/export/pdf"
|
19
19
|
end
|
20
20
|
|
21
21
|
def layout
|
22
|
-
"decidim/forms/admin/questionnaires/questionnaire_answers
|
22
|
+
"decidim/forms/admin/questionnaires/questionnaire_answers"
|
23
23
|
end
|
24
24
|
|
25
25
|
def locals
|
@@ -2,9 +2,9 @@
|
|
2
2
|
|
3
3
|
module Decidim
|
4
4
|
module Forms
|
5
|
-
class
|
5
|
+
class DownloadYourDataUserAnswersSerializer < Decidim::Exporters::Serializer
|
6
6
|
include Decidim::TranslationsHelper
|
7
|
-
# Serializes an user answer for data
|
7
|
+
# Serializes an user answer for download your data
|
8
8
|
def serialize
|
9
9
|
{
|
10
10
|
id: resource.id,
|
@@ -29,38 +29,47 @@ FactoryBot.define do
|
|
29
29
|
end
|
30
30
|
|
31
31
|
trait :with_all_questions do
|
32
|
-
|
32
|
+
after(:build) do |questionaire, _evaluator|
|
33
33
|
position = 0
|
34
|
-
|
35
|
-
q =
|
34
|
+
%w(short_answer long_answer).collect do |text_question_type|
|
35
|
+
q = create(:questionnaire_question,
|
36
|
+
question_type: text_question_type,
|
37
|
+
position: position,
|
38
|
+
questionnaire: questionaire)
|
36
39
|
position += 1
|
37
|
-
q
|
40
|
+
questionaire.questions << q
|
38
41
|
end
|
39
42
|
|
40
43
|
%w(single_option multiple_option).each do |option_question_type|
|
41
|
-
q =
|
42
|
-
|
43
|
-
|
44
|
+
q = create(:questionnaire_question, :with_answer_options,
|
45
|
+
question_type: option_question_type,
|
46
|
+
position: position,
|
47
|
+
questionnaire: questionaire)
|
44
48
|
q.display_conditions.build(
|
45
|
-
condition_question:
|
49
|
+
condition_question: questionaire.questions[q.position - 1],
|
46
50
|
question: q,
|
47
51
|
condition_type: :answered,
|
48
52
|
mandatory: true
|
49
53
|
)
|
54
|
+
questionaire.questions << q
|
55
|
+
position += 1
|
50
56
|
end
|
51
57
|
|
52
58
|
%w(matrix_single matrix_multiple).collect do |matrix_question_type|
|
53
|
-
q = build(:questionnaire_question, :with_answer_options,
|
54
|
-
|
55
|
-
|
59
|
+
q = build(:questionnaire_question, :with_answer_options,
|
60
|
+
question_type: matrix_question_type,
|
61
|
+
position: position,
|
62
|
+
body: generate_localized_title,
|
63
|
+
questionnaire: questionaire)
|
56
64
|
q.display_conditions.build(
|
57
|
-
condition_question:
|
65
|
+
condition_question: questionaire.questions[q.position - 1],
|
58
66
|
question: q,
|
59
67
|
condition_type: :answered,
|
60
68
|
mandatory: true
|
61
69
|
)
|
70
|
+
questionaire.questions << q
|
71
|
+
position += 1
|
62
72
|
end
|
63
|
-
qs
|
64
73
|
end
|
65
74
|
end
|
66
75
|
|
@@ -10,11 +10,8 @@ shared_examples_for "manage questionnaire answers" do
|
|
10
10
|
let!(:second) do
|
11
11
|
create :questionnaire_question, questionnaire: questionnaire, position: 2, question_type: "single_option"
|
12
12
|
end
|
13
|
-
let!(:third) do
|
14
|
-
create :questionnaire_question, questionnaire: questionnaire, position: 3, question_type: "files"
|
15
|
-
end
|
16
13
|
let(:questions) do
|
17
|
-
[first, second
|
14
|
+
[first, second]
|
18
15
|
end
|
19
16
|
|
20
17
|
context "when there are no answers" do
|
@@ -28,7 +25,6 @@ shared_examples_for "manage questionnaire answers" do
|
|
28
25
|
let!(:answer1) { create :answer, questionnaire: questionnaire, question: first }
|
29
26
|
let!(:answer2) { create :answer, body: "second answer", questionnaire: questionnaire, question: first }
|
30
27
|
let!(:answer3) { create :answer, questionnaire: questionnaire, question: second }
|
31
|
-
let!(:file_answer) { create :answer, :with_attachments, questionnaire: questionnaire, question: third, body: nil, user: answer3.user, session_token: answer3.session_token }
|
32
28
|
|
33
29
|
it "shows the answer admin link" do
|
34
30
|
visit questionnaire_edit_path
|
@@ -49,7 +45,7 @@ shared_examples_for "manage questionnaire answers" do
|
|
49
45
|
end
|
50
46
|
|
51
47
|
it "shows the percentage" do
|
52
|
-
expect(page).to have_content("
|
48
|
+
expect(page).to have_content("50%")
|
53
49
|
end
|
54
50
|
|
55
51
|
it "has a detail link" do
|
@@ -125,25 +121,6 @@ shared_examples_for "manage questionnaire answers" do
|
|
125
121
|
expect(page).not_to have_link("Next ›")
|
126
122
|
expect(page).to have_link("‹ Prev")
|
127
123
|
end
|
128
|
-
|
129
|
-
it "third answer has download link for the attachments" do
|
130
|
-
click_link answer3.session_token, match: :first
|
131
|
-
expect(page).to have_content(translated(file_answer.attachments.first.title))
|
132
|
-
expect(page).to have_content(translated(file_answer.attachments.second.title))
|
133
|
-
end
|
134
|
-
|
135
|
-
context "when the file answer does not have a title for the attachment" do
|
136
|
-
let!(:file_answer) { create :answer, questionnaire: questionnaire, question: third, body: nil, user: answer3.user, session_token: answer3.session_token }
|
137
|
-
|
138
|
-
before do
|
139
|
-
create :attachment, :with_image, attached_to: file_answer, title: {}, description: {}
|
140
|
-
end
|
141
|
-
|
142
|
-
it "third answer has download link for the attachments" do
|
143
|
-
click_link answer3.session_token, match: :first
|
144
|
-
expect(page).to have_content("Download attachment")
|
145
|
-
end
|
146
|
-
end
|
147
124
|
end
|
148
125
|
end
|
149
126
|
end
|
@@ -344,11 +344,11 @@ shared_examples_for "update questions" do
|
|
344
344
|
end
|
345
345
|
|
346
346
|
context "when a questionnaire has multiple existing questions" do
|
347
|
-
let!(:
|
347
|
+
let!(:question1) do
|
348
348
|
create(:questionnaire_question, questionnaire: questionnaire, body: first_body, position: 0)
|
349
349
|
end
|
350
350
|
|
351
|
-
let!(:
|
351
|
+
let!(:question2) do
|
352
352
|
create(:questionnaire_question, questionnaire: questionnaire, body: second_body, position: 1)
|
353
353
|
end
|
354
354
|
|
@@ -79,7 +79,7 @@ module Decidim
|
|
79
79
|
end
|
80
80
|
|
81
81
|
def normalize_matrix_choices(answer, choices)
|
82
|
-
answer.question.matrix_rows.
|
82
|
+
answer.question.matrix_rows.to_h do |matrix_row|
|
83
83
|
row_body = translated_attribute(matrix_row.body)
|
84
84
|
|
85
85
|
row_choices = answer.question.answer_options.map do |answer_option|
|
@@ -88,7 +88,7 @@ module Decidim
|
|
88
88
|
end
|
89
89
|
|
90
90
|
[row_body, row_choices]
|
91
|
-
end
|
91
|
+
end
|
92
92
|
end
|
93
93
|
|
94
94
|
def answer_translated_attribute_name(attribute)
|
data/lib/decidim/forms.rb
CHANGED
@@ -9,7 +9,7 @@ module Decidim
|
|
9
9
|
# This namespace holds the logic of the `Forms`.
|
10
10
|
module Forms
|
11
11
|
autoload :UserAnswersSerializer, "decidim/forms/user_answers_serializer"
|
12
|
-
autoload :
|
12
|
+
autoload :DownloadYourDataUserAnswersSerializer, "decidim/forms/download_your_data_user_answers_serializer"
|
13
13
|
end
|
14
14
|
|
15
15
|
module Exporters
|