decidim-forms 0.27.6 → 0.28.0.rc4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/app/cells/decidim/forms/answer_readonly/show.erb +1 -1
- data/app/cells/decidim/forms/matrix_readonly/show.erb +1 -1
- data/app/cells/decidim/forms/question_readonly/show.erb +8 -8
- data/app/cells/decidim/forms/question_readonly/title_and_description.erb +8 -0
- data/app/cells/decidim/forms/question_readonly_cell.rb +7 -0
- data/app/cells/decidim/forms/step_navigation/show.erb +13 -26
- data/app/cells/decidim/forms/step_navigation_cell.rb +7 -0
- data/app/commands/decidim/forms/answer_questionnaire.rb +31 -11
- data/app/controllers/decidim/forms/admin/concerns/has_questionnaire.rb +4 -4
- data/app/controllers/decidim/forms/admin/concerns/has_questionnaire_answers.rb +1 -1
- data/app/controllers/decidim/forms/concerns/has_questionnaire.rb +3 -3
- data/app/forms/decidim/forms/answer_form.rb +7 -3
- data/app/forms/decidim/forms/questionnaire_form.rb +1 -1
- data/app/helpers/decidim/forms/admin/application_helper.rb +1 -1
- data/app/helpers/decidim/forms/admin/concerns/has_questionnaire_answers_url_helper.rb +2 -2
- data/app/models/decidim/forms/answer.rb +1 -1
- data/app/models/decidim/forms/display_condition.rb +2 -2
- data/app/models/decidim/forms/question.rb +0 -4
- data/app/models/decidim/forms/questionnaire.rb +1 -1
- data/app/packs/entrypoints/decidim_forms.js +4 -0
- data/app/packs/src/decidim/forms/admin/collapsible_questions.js +12 -6
- data/app/packs/src/decidim/forms/admin/forms.js +7 -7
- data/app/packs/src/decidim/forms/display_conditions.component.js +3 -3
- data/app/packs/src/decidim/forms/forms.js +15 -9
- data/app/packs/src/decidim/forms/option_attached_inputs.component.js +1 -1
- data/app/packs/stylesheets/decidim/forms/forms.scss +82 -52
- data/app/packs/stylesheets/decidim/forms/questionnaire-answers-pdf.scss +13 -13
- data/app/presenters/decidim/forms/admin/questionnaire_participant_presenter.rb +2 -2
- data/app/presenters/decidim/forms/admin_log/questionnaire_presenter.rb +2 -2
- data/app/presenters/decidim/forms/answer_option_presenter.rb +1 -1
- data/app/queries/decidim/forms/questionnaire_participants.rb +1 -1
- data/app/views/decidim/forms/admin/questionnaires/_answer_option.html.erb +1 -1
- data/app/views/decidim/forms/admin/questionnaires/_answer_option_template.html.erb +1 -1
- data/app/views/decidim/forms/admin/questionnaires/_display_condition.html.erb +2 -2
- data/app/views/decidim/forms/admin/questionnaires/_display_condition_template.html.erb +1 -1
- data/app/views/decidim/forms/admin/questionnaires/_form.html.erb +52 -74
- data/app/views/decidim/forms/admin/questionnaires/_matrix_row.html.erb +1 -1
- data/app/views/decidim/forms/admin/questionnaires/_matrix_row_template.html.erb +1 -1
- data/app/views/decidim/forms/admin/questionnaires/_question.html.erb +147 -135
- data/app/views/decidim/forms/admin/questionnaires/_separator.html.erb +15 -13
- data/app/views/decidim/forms/admin/questionnaires/_title_and_description.html.erb +69 -63
- data/app/views/decidim/forms/admin/questionnaires/answers/export/_answer.html.erb +4 -4
- data/app/views/decidim/forms/admin/questionnaires/answers/export/pdf.html.erb +1 -1
- data/app/views/decidim/forms/admin/questionnaires/answers/index.html.erb +41 -45
- data/app/views/decidim/forms/admin/questionnaires/answers/show.html.erb +13 -18
- data/app/views/decidim/forms/admin/questionnaires/edit.html.erb +33 -6
- data/app/views/decidim/forms/questionnaires/_answer.html.erb +31 -27
- data/app/views/decidim/forms/questionnaires/_questionnaire.html.erb +78 -0
- data/app/views/decidim/forms/questionnaires/_questionnaire_readonly.html.erb +11 -0
- data/app/views/decidim/forms/questionnaires/answers/_files.html.erb +1 -1
- data/app/views/decidim/forms/questionnaires/answers/_long_answer.html.erb +3 -1
- data/app/views/decidim/forms/questionnaires/answers/_matrix_multiple.html.erb +44 -41
- data/app/views/decidim/forms/questionnaires/answers/_matrix_single.html.erb +44 -41
- data/app/views/decidim/forms/questionnaires/answers/_multiple_option.html.erb +7 -6
- data/app/views/decidim/forms/questionnaires/answers/_separator.html.erb +1 -1
- data/app/views/decidim/forms/questionnaires/answers/_short_answer.html.erb +3 -1
- data/app/views/decidim/forms/questionnaires/answers/_single_option.html.erb +13 -12
- data/app/views/decidim/forms/questionnaires/answers/_sorting.html.erb +9 -12
- data/app/views/decidim/forms/questionnaires/answers/_title_and_description.html.erb +1 -1
- data/app/views/decidim/forms/questionnaires/show.html.erb +35 -144
- data/config/initializers/wicked_pdf.rb +1 -1
- data/config/locales/ar.yml +0 -6
- data/config/locales/bg.yml +0 -11
- data/config/locales/ca.yml +7 -2
- data/config/locales/cs.yml +8 -3
- data/config/locales/de.yml +9 -4
- data/config/locales/el.yml +7 -2
- data/config/locales/en.yml +8 -3
- data/config/locales/es-MX.yml +7 -2
- data/config/locales/es-PY.yml +7 -2
- data/config/locales/es.yml +7 -2
- data/config/locales/eu.yml +8 -3
- data/config/locales/fi-plain.yml +7 -2
- data/config/locales/fi.yml +7 -2
- data/config/locales/fr-CA.yml +8 -3
- data/config/locales/fr.yml +8 -3
- data/config/locales/gl.yml +0 -4
- data/config/locales/hu.yml +3 -9
- data/config/locales/id-ID.yml +0 -4
- data/config/locales/it.yml +0 -6
- data/config/locales/ja.yml +6 -1
- data/config/locales/lb.yml +0 -6
- data/config/locales/lt.yml +7 -2
- data/config/locales/lv.yml +0 -6
- data/config/locales/nl.yml +0 -6
- data/config/locales/no.yml +0 -6
- data/config/locales/pl.yml +6 -8
- data/config/locales/pt-BR.yml +0 -25
- data/config/locales/pt.yml +0 -6
- data/config/locales/ro-RO.yml +19 -14
- data/config/locales/ru.yml +0 -3
- data/config/locales/sk.yml +0 -6
- data/config/locales/sv.yml +3 -6
- data/config/locales/tr-TR.yml +0 -6
- data/config/locales/zh-CN.yml +0 -6
- data/config/locales/zh-TW.yml +7 -2
- data/lib/decidim/forms/engine.rb +8 -0
- data/lib/decidim/forms/test/factories.rb +37 -51
- data/lib/decidim/forms/test/shared_examples/has_questionnaire.rb +129 -239
- data/lib/decidim/forms/test/shared_examples/manage_questionnaire_answers.rb +18 -18
- data/lib/decidim/forms/test/shared_examples/manage_questionnaires/add_display_conditions.rb +14 -14
- data/lib/decidim/forms/test/shared_examples/manage_questionnaires/add_questions.rb +60 -78
- data/lib/decidim/forms/test/shared_examples/manage_questionnaires/update_display_conditions.rb +6 -6
- data/lib/decidim/forms/test/shared_examples/manage_questionnaires/update_questions.rb +25 -25
- data/lib/decidim/forms/test/shared_examples/manage_questionnaires.rb +9 -9
- data/lib/decidim/forms/user_answers_serializer.rb +1 -1
- data/lib/decidim/forms/version.rb +1 -1
- metadata +26 -21
- data/app/packs/src/decidim/forms/autosortable_checkboxes.component.js +0 -83
- data/config/locales/he-IL.yml +0 -1
- data/decidim-forms.gemspec +0 -34
data/config/locales/tr-TR.yml
CHANGED
@@ -18,8 +18,6 @@ tr:
|
|
18
18
|
choices:
|
19
19
|
missing: tamamlanmadı
|
20
20
|
too_many: çok fazla
|
21
|
-
questionnaire:
|
22
|
-
request_invalid: İsteği işlerken bir hata oluştu. Lütfen tekrar deneyin
|
23
21
|
decidim:
|
24
22
|
forms:
|
25
23
|
admin:
|
@@ -107,9 +105,6 @@ tr:
|
|
107
105
|
update:
|
108
106
|
invalid: Formu kaydederken bir sorun oluştu.
|
109
107
|
success: Başarıyla kaydedildi.
|
110
|
-
errors:
|
111
|
-
answer:
|
112
|
-
body: Vücut boş olamaz
|
113
108
|
images:
|
114
109
|
dimensions: "%{width} x %{height} px"
|
115
110
|
question_types:
|
@@ -129,7 +124,6 @@ tr:
|
|
129
124
|
max_choices: 'Maksimum seçenek: %{n}'
|
130
125
|
show:
|
131
126
|
answer_questionnaire:
|
132
|
-
anonymous_user_message: <a href="%{sign_in_link}">Formu yanıtlamak için</a> veya <a href="%{sign_up_link}">hesabınızla giriş yapın</a>.
|
133
127
|
title: Formu cevapla
|
134
128
|
current_step: '%{step} adım'
|
135
129
|
of_total_steps: '%{total_steps}'
|
data/config/locales/zh-CN.yml
CHANGED
@@ -18,8 +18,6 @@ zh-CN:
|
|
18
18
|
choices:
|
19
19
|
missing: 不完成
|
20
20
|
too_many: 太多了
|
21
|
-
questionnaire:
|
22
|
-
request_invalid: 处理请求时出错。请再试一次
|
23
21
|
decidim:
|
24
22
|
forms:
|
25
23
|
admin:
|
@@ -106,9 +104,6 @@ zh-CN:
|
|
106
104
|
update:
|
107
105
|
invalid: 保存表单时出错。
|
108
106
|
success: 表单保存成功。
|
109
|
-
errors:
|
110
|
-
answer:
|
111
|
-
body: 主体不能为空
|
112
107
|
images:
|
113
108
|
dimensions: "%{width} x %{height} px"
|
114
109
|
question_types:
|
@@ -128,7 +123,6 @@ zh-CN:
|
|
128
123
|
max_choices: '最大选择数: %{n}'
|
129
124
|
show:
|
130
125
|
answer_questionnaire:
|
131
|
-
anonymous_user_message: <a href="%{sign_in_link}">使用您的帐户</a> 或 <a href="%{sign_up_link}">注册</a> 以回答表单。
|
132
126
|
title: 回答表单
|
133
127
|
current_step: 步骤 %{step}
|
134
128
|
of_total_steps: '%{total_steps}'
|
data/config/locales/zh-TW.yml
CHANGED
@@ -24,7 +24,7 @@ zh-TW:
|
|
24
24
|
missing: 尚未完成
|
25
25
|
too_many: 太多了
|
26
26
|
questionnaire:
|
27
|
-
request_invalid:
|
27
|
+
request_invalid: 處理請求時發生錯誤。請再試一次。
|
28
28
|
decidim:
|
29
29
|
forms:
|
30
30
|
admin:
|
@@ -45,6 +45,8 @@ zh-TW:
|
|
45
45
|
actions:
|
46
46
|
back: 返回回覆
|
47
47
|
export: 匯出
|
48
|
+
next: 下一個 ›
|
49
|
+
previous: "‹ 上一篇"
|
48
50
|
show: 顯示答案
|
49
51
|
empty: 目前尚未回答
|
50
52
|
export:
|
@@ -154,7 +156,10 @@ zh-TW:
|
|
154
156
|
max_choices: '最多選擇數量: %{n}'
|
155
157
|
show:
|
156
158
|
answer_questionnaire:
|
157
|
-
|
159
|
+
already_have_an_account?: 已經有帳號了嗎?
|
160
|
+
are_you_new?: 新用戶?
|
161
|
+
sign_in_description: 登入以填寫問卷
|
162
|
+
sign_up_description: 建立參與者帳號以填寫問卷
|
158
163
|
title: 回答表單
|
159
164
|
current_step: 步驟%{step}
|
160
165
|
of_total_steps: 的%{total_steps}
|
data/lib/decidim/forms/engine.rb
CHANGED
@@ -15,6 +15,14 @@ module Decidim
|
|
15
15
|
initializer "decidim_forms.webpacker.assets_path" do
|
16
16
|
Decidim.register_assets_path File.expand_path("app/packs", root)
|
17
17
|
end
|
18
|
+
|
19
|
+
initializer "decidim_forms.authorization_transfer" do
|
20
|
+
config.to_prepare do
|
21
|
+
Decidim::AuthorizationTransfer.register(:forms) do |transfer|
|
22
|
+
transfer.move_records(Decidim::Forms::Answer, :decidim_user_id)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
18
26
|
end
|
19
27
|
end
|
20
28
|
end
|
@@ -5,37 +5,37 @@ require "decidim/participatory_processes/test/factories"
|
|
5
5
|
|
6
6
|
FactoryBot.define do
|
7
7
|
factory :questionnaire, class: "Decidim::Forms::Questionnaire" do
|
8
|
-
|
9
|
-
|
8
|
+
title { generate_localized_title }
|
9
|
+
description do
|
10
|
+
Decidim::Faker::Localized.wrapped("<p>", "</p>") do
|
11
|
+
generate_localized_title
|
12
|
+
end
|
10
13
|
end
|
11
|
-
|
12
|
-
|
13
|
-
tos { generate_localized_title(:questionnaire_tos, skip_injection: skip_injection) }
|
14
|
-
questionnaire_for { build(:participatory_process, skip_injection: skip_injection) }
|
14
|
+
tos { generate_localized_title }
|
15
|
+
questionnaire_for { build(:participatory_process) }
|
15
16
|
salt { SecureRandom.hex(32) }
|
16
17
|
|
17
18
|
trait :with_questions do
|
18
19
|
questions do
|
19
20
|
position = 0
|
20
21
|
qs = %w(short_answer long_answer).collect do |text_question_type|
|
21
|
-
q = build(:questionnaire_question, question_type: text_question_type, position:
|
22
|
+
q = build(:questionnaire_question, question_type: text_question_type, position:)
|
22
23
|
position += 1
|
23
24
|
q
|
24
25
|
end
|
25
|
-
qs << build(:questionnaire_question, :with_answer_options, question_type: :single_option, position:
|
26
|
+
qs << build(:questionnaire_question, :with_answer_options, question_type: :single_option, position:)
|
26
27
|
qs
|
27
28
|
end
|
28
29
|
end
|
29
30
|
|
30
31
|
trait :with_all_questions do
|
31
|
-
after(:build) do |questionaire,
|
32
|
+
after(:build) do |questionaire, _evaluator|
|
32
33
|
position = 0
|
33
34
|
%w(short_answer long_answer).collect do |text_question_type|
|
34
35
|
q = create(:questionnaire_question,
|
35
36
|
question_type: text_question_type,
|
36
|
-
position
|
37
|
-
questionnaire: questionaire
|
38
|
-
skip_injection: evaluator.skip_injection)
|
37
|
+
position:,
|
38
|
+
questionnaire: questionaire)
|
39
39
|
position += 1
|
40
40
|
questionaire.questions << q
|
41
41
|
end
|
@@ -43,9 +43,8 @@ FactoryBot.define do
|
|
43
43
|
%w(single_option multiple_option).each do |option_question_type|
|
44
44
|
q = create(:questionnaire_question, :with_answer_options,
|
45
45
|
question_type: option_question_type,
|
46
|
-
position
|
47
|
-
questionnaire: questionaire
|
48
|
-
skip_injection: evaluator.skip_injection)
|
46
|
+
position:,
|
47
|
+
questionnaire: questionaire)
|
49
48
|
q.display_conditions.build(
|
50
49
|
condition_question: questionaire.questions[q.position - 1],
|
51
50
|
question: q,
|
@@ -59,10 +58,9 @@ FactoryBot.define do
|
|
59
58
|
%w(matrix_single matrix_multiple).collect do |matrix_question_type|
|
60
59
|
q = build(:questionnaire_question, :with_answer_options,
|
61
60
|
question_type: matrix_question_type,
|
62
|
-
position
|
61
|
+
position:,
|
63
62
|
body: generate_localized_title,
|
64
|
-
questionnaire: questionaire
|
65
|
-
skip_injection: evaluator.skip_injection)
|
63
|
+
questionnaire: questionaire)
|
66
64
|
q.display_conditions.build(
|
67
65
|
condition_question: questionaire.questions[q.position - 1],
|
68
66
|
question: q,
|
@@ -84,13 +82,16 @@ FactoryBot.define do
|
|
84
82
|
|
85
83
|
factory :questionnaire_question, class: "Decidim::Forms::Question" do
|
86
84
|
transient do
|
87
|
-
skip_injection { false }
|
88
85
|
options { [] }
|
89
86
|
rows { [] }
|
90
87
|
end
|
91
88
|
|
92
|
-
body { generate_localized_title
|
93
|
-
description
|
89
|
+
body { generate_localized_title }
|
90
|
+
description do
|
91
|
+
Decidim::Faker::Localized.wrapped("<p>", "</p>") do
|
92
|
+
generate_localized_title
|
93
|
+
end
|
94
|
+
end
|
94
95
|
mandatory { false }
|
95
96
|
position { 0 }
|
96
97
|
question_type { Decidim::Forms::Question::TYPES.first }
|
@@ -118,13 +119,13 @@ FactoryBot.define do
|
|
118
119
|
|
119
120
|
trait :with_answer_options do
|
120
121
|
answer_options do
|
121
|
-
Array.new(3).collect { build(:answer_option
|
122
|
+
Array.new(3).collect { build(:answer_option) }
|
122
123
|
end
|
123
124
|
end
|
124
125
|
|
125
126
|
trait :conditioned do
|
126
127
|
display_conditions do
|
127
|
-
Array.new(3).collect { build(:display_condition
|
128
|
+
Array.new(3).collect { build(:display_condition) }
|
128
129
|
end
|
129
130
|
end
|
130
131
|
|
@@ -138,28 +139,22 @@ FactoryBot.define do
|
|
138
139
|
end
|
139
140
|
|
140
141
|
factory :answer, class: "Decidim::Forms::Answer" do
|
141
|
-
transient do
|
142
|
-
skip_injection { false }
|
143
|
-
end
|
144
142
|
body { "hola" }
|
145
143
|
questionnaire
|
146
|
-
question { create(:questionnaire_question, questionnaire:
|
147
|
-
user { create(:user, organization: questionnaire.questionnaire_for.organization
|
144
|
+
question { create(:questionnaire_question, questionnaire:) }
|
145
|
+
user { create(:user, organization: questionnaire.questionnaire_for.organization) }
|
148
146
|
session_token { Digest::MD5.hexdigest(user.id.to_s) }
|
149
147
|
|
150
148
|
trait :with_attachments do
|
151
|
-
after(:create) do |answer,
|
152
|
-
create :attachment, :with_image, attached_to: answer
|
153
|
-
create :attachment, :with_pdf, attached_to: answer
|
149
|
+
after(:create) do |answer, _evaluator|
|
150
|
+
create :attachment, :with_image, attached_to: answer
|
151
|
+
create :attachment, :with_pdf, attached_to: answer
|
154
152
|
end
|
155
153
|
end
|
156
154
|
end
|
157
155
|
|
158
156
|
factory :answer_option, class: "Decidim::Forms::AnswerOption" do
|
159
|
-
|
160
|
-
skip_injection { false }
|
161
|
-
end
|
162
|
-
question { create(:questionnaire_question, skip_injection: skip_injection) }
|
157
|
+
question { create(:questionnaire_question) }
|
163
158
|
body { generate_localized_title }
|
164
159
|
free_text { false }
|
165
160
|
|
@@ -173,40 +168,31 @@ FactoryBot.define do
|
|
173
168
|
end
|
174
169
|
|
175
170
|
factory :answer_choice, class: "Decidim::Forms::AnswerChoice" do
|
176
|
-
transient do
|
177
|
-
skip_injection { false }
|
178
|
-
end
|
179
171
|
answer
|
180
|
-
answer_option { create(:answer_option, question: answer.question
|
181
|
-
matrix_row { create(:question_matrix_row, question: answer.question
|
172
|
+
answer_option { create(:answer_option, question: answer.question) }
|
173
|
+
matrix_row { create(:question_matrix_row, question: answer.question) }
|
182
174
|
end
|
183
175
|
|
184
176
|
factory :question_matrix_row, class: "Decidim::Forms::QuestionMatrixRow" do
|
185
|
-
|
186
|
-
skip_injection { false }
|
187
|
-
end
|
188
|
-
question { create(:questionnaire_question, skip_injection: skip_injection) }
|
177
|
+
question { create(:questionnaire_question) }
|
189
178
|
body { generate_localized_title }
|
190
179
|
position { 0 }
|
191
180
|
end
|
192
181
|
|
193
182
|
factory :display_condition, class: "Decidim::Forms::DisplayCondition" do
|
194
|
-
|
195
|
-
|
196
|
-
end
|
197
|
-
condition_question { create(:questionnaire_question, skip_injection: skip_injection) }
|
198
|
-
question { create(:questionnaire_question, position: 1, skip_injection: skip_injection) }
|
183
|
+
condition_question { create(:questionnaire_question) }
|
184
|
+
question { create(:questionnaire_question, position: 1) }
|
199
185
|
condition_type { :answered }
|
200
186
|
mandatory { true }
|
201
187
|
|
202
188
|
trait :equal do
|
203
189
|
condition_type { :equal }
|
204
|
-
answer_option { create(:answer_option, question: condition_question
|
190
|
+
answer_option { create(:answer_option, question: condition_question) }
|
205
191
|
end
|
206
192
|
|
207
193
|
trait :match do
|
208
194
|
condition_type { :match }
|
209
|
-
condition_value { generate_localized_title
|
195
|
+
condition_value { generate_localized_title }
|
210
196
|
end
|
211
197
|
end
|
212
198
|
end
|