decidim-forms 0.27.5 → 0.27.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 388157dd4892e7c4fbe9b8c2d4f25e2adb9fd602d29ae30a460530faba1fe293
4
- data.tar.gz: 21d31ca818956b2dfaa47ddc8e366da9832b1adcbb0a700d5f50151f02ee79b4
3
+ metadata.gz: fb8af1d2c76776bd4e799949d4723e998f57b4cc32ad3f021b1baff85fbd646b
4
+ data.tar.gz: 65f42cfd48b2b6e175dcba554014b97533a25c7b92eac8e2144d165f5bf86a42
5
5
  SHA512:
6
- metadata.gz: 94b369be21225795e16a2023d60d335fa713a04075547426eb097af017c57bb05215838a3fb038eccb51ec0e4a8e5494aff7b6fefb309c08c2efae4551940acf
7
- data.tar.gz: 18ce45eb9d52c7e6e822975afa6f6a81642a7115177c61ac6182e7369c33a2a235d10cd862c0b6824fe5af881c7dd6055d7ae1538683466092bdced19ea0f4dc
6
+ metadata.gz: b8a5638134be13bb12df3bc391fe1cff12314030215dde44c52ea87889946efdf7673f602ade25b7e8d87b0f973fc164649a46a97286547d754d469835891e08
7
+ data.tar.gz: 4e1eaebf065003acc37cd0bcb26e5549f6b32202d2edb9d96e748c32a8caf70a7b26eceda53fe447160880d1e4525038ec572b54766a52bae2e26eb20b2b15f7
@@ -1,6 +1,6 @@
1
1
  <li class="questionnaire-question_readonly">
2
2
  <p>
3
- <%= translated_attribute(model.body) %>
3
+ <%= decidim_escape_translated(model.body) %>
4
4
  <br>
5
5
  <em>
6
6
  (<%= t(model.question_type, scope: "decidim.forms.question_types") %>)
@@ -20,7 +20,7 @@ module Decidim
20
20
  helper_method :questionnaire_for, :questionnaire, :blank_question, :blank_answer_option, :blank_matrix_row,
21
21
  :blank_display_condition, :question_types, :display_condition_types, :update_url, :public_url, :answer_options_url, :edit_questionnaire_title
22
22
 
23
- if defined? Decidim::Templates::Admin
23
+ if defined?(Decidim::Templates::Admin::Concerns::Templatable)
24
24
  include Decidim::Templates::Admin::Concerns::Templatable
25
25
  helper Decidim::DatalistSelectHelper
26
26
 
@@ -7,8 +7,19 @@ bg:
7
7
  question:
8
8
  max_choices: Максимален брой възможности
9
9
  question_type: Тип
10
+ errors:
11
+ models:
12
+ questionnaire:
13
+ request_invalid: Възникна грешка при обработката на заявката. Моля, опитайте отново
10
14
  decidim:
11
15
  forms:
16
+ errors:
17
+ answer:
18
+ body: Основният текст не може да бъде празен
19
+ questionnaires:
20
+ show:
21
+ answer_questionnaire:
22
+ anonymous_user_message: <a href="%{sign_in_link}">Влезте в профила си</a> или <a href="%{sign_up_link}">се регистрирайте</a>, за да попълните отговорите си във формуляра.
12
23
  step_navigation:
13
24
  show:
14
25
  are_you_sure: Това действие не може да се отмени и Вие не можете да редактирате отговорите си. Сигурни ли сте?
@@ -0,0 +1 @@
1
+ he:
@@ -30,7 +30,7 @@ hu:
30
30
  answer_option: Válasz opció
31
31
  free_text: Szabadszöveg
32
32
  remove: Eltávolít
33
- statement: Nyilatkozat
33
+ statement: Állítás
34
34
  edit:
35
35
  save: Mentés
36
36
  form:
@@ -41,7 +41,7 @@ hu:
41
41
  expand: Minden kérdés kibontása
42
42
  matrix_row:
43
43
  remove: Eltávolít
44
- statement: Nyilatkozat
44
+ statement: Állítás
45
45
  question:
46
46
  add_answer_option: Válasz opció hozzáadása
47
47
  any: Bármilyen
@@ -51,7 +51,7 @@ hu:
51
51
  expand: Kibontás
52
52
  question: Kérdés
53
53
  remove: Eltávolít
54
- statement: Nyilatkozat
54
+ statement: Állítás
55
55
  up: Fel
56
56
  title_and_description:
57
57
  collapse: Összecsuk
@@ -122,11 +122,17 @@ pl:
122
122
  update:
123
123
  invalid: Podczas zapisywania formularza wystąpił błąd.
124
124
  success: Formularz został zapisany.
125
+ admin_log:
126
+ questionnaire:
127
+ update: "%{user_name} zaktualizował(a) kwestionariusz %{resource_name}"
125
128
  errors:
126
129
  answer:
127
130
  body: Treść nie może być pusta
128
131
  images:
129
132
  dimensions: "%{width} × %{height} px"
133
+ processors:
134
+ resize_and_pad: Rozmiar obrazu zostanie zmieniony i dopasowany do wymiarów %{dimensions}.
135
+ resize_to_fit: Rozmiar obrazu zostanie zmieniony i dopasowany do wymiarów %{dimensions}.
130
136
  question_types:
131
137
  files: Pliki
132
138
  long_answer: Długa odpowiedź
@@ -39,7 +39,7 @@ ro:
39
39
  answer_option:
40
40
  answer_option: Opțiune de răspuns
41
41
  free_text: Text liber
42
- remove: Elimină
42
+ remove: Eliminați
43
43
  statement: Declarație
44
44
  answers:
45
45
  actions:
@@ -53,7 +53,7 @@ ro:
53
53
  export_response:
54
54
  title: survey_user_answers_%{token}
55
55
  index:
56
- title: "%{total} total răspunsuri"
56
+ title: "%{total} răspunsuri în total"
57
57
  show:
58
58
  title: 'Răspuns #%{number}'
59
59
  display_condition:
@@ -71,21 +71,21 @@ ro:
71
71
  mandatory: Această condiție trebuie îndeplinită întotdeauna indiferent de stadiul altor condiții
72
72
  remove: Elimină
73
73
  save_warning: Ține minte să salvezi chestionarul înainte de configurarea condiţiilor de afişare
74
- select_answer_option: Selectează opțiunea de răspuns
74
+ select_answer_option: Selectați opțiunea de răspuns
75
75
  select_condition_question: Selectează o întrebare
76
- select_condition_type: Selectează un tip de condiție
76
+ select_condition_type: Selectați un tip de condiție
77
77
  edit:
78
78
  save: Salvează
79
- title: Editează chestionarul
79
+ title: Editare chestionar
80
80
  form:
81
81
  add_question: Adaugă întrebare
82
82
  add_separator: Adaugă separator
83
- add_title_and_description: Adaugă titlu și descriere
84
- already_answered_warning: Au fost înregistrare deja câteva răspunsuri de la utilizatori pentru acest chestionar. De aceea, nu mai poți modifica întrebările.
83
+ add_title_and_description: Adaugați titlu și descriere
84
+ already_answered_warning: Au fost înregistrare deja câteva răspunsuri de la utilizatori pentru acest chestionar. De aceea, nu mai puteți modifica întrebările.
85
85
  collapse: Restrânge toate întrebările
86
86
  expand: Extinde toate întrebările
87
87
  preview: Previzualizează
88
- title: Editează chestionarul pentru %{questionnaire_for}
88
+ title: Actualizați chestionarul pentru %{questionnaire_for}
89
89
  unpublished_warning: Chestionarul nu este publicat. Poți modifica întrebările, dar această acțiune va duce la stergerea automată a răspunsurilor curente.
90
90
  matrix_row:
91
91
  matrix_row: Rând
@@ -95,14 +95,14 @@ ro:
95
95
  add_answer_option: Adaugă opțiune de răspuns
96
96
  add_display_condition: Adaugă condiție de afișare
97
97
  add_display_condition_info: Salvează formularul pentru a configura condițiile de afișare
98
- add_matrix_row: Adaugă rând
98
+ add_matrix_row: Adaugați rând
99
99
  any: Oricare
100
- collapse: Restrânge
100
+ collapse: Restrângeți
101
101
  description: Descriere
102
102
  down: Mergi în jos
103
- expand: Extinde
103
+ expand: Extindeți
104
104
  question: Întrebare
105
- remove: Elimină
105
+ remove: Eliminați
106
106
  statement: Declarație
107
107
  up: Mergi în sus
108
108
  separator:
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH.push File.expand_path("lib", __dir__)
4
+
5
+ # Maintain your gem's version:
6
+ require "decidim/forms/version"
7
+
8
+ # Describe your gem and declare its dependencies:
9
+ Gem::Specification.new do |s|
10
+ s.version = Decidim::Forms.version
11
+ s.authors = ["Josep Jaume Rey Peroy", "Marc Riera Casals", "Oriol Gual Oliva", "Rubén González Valero"]
12
+ s.email = ["josepjaume@gmail.com", "mrc2407@gmail.com", "oriolgual@gmail.com", "rbngzlv@gmail.com"]
13
+ s.license = "AGPL-3.0"
14
+ s.homepage = "https://github.com/decidim/decidim"
15
+ s.required_ruby_version = "~> 3.0.0"
16
+
17
+ s.name = "decidim-forms"
18
+ s.summary = "Decidim forms"
19
+ s.description = "A forms gem for decidim."
20
+
21
+ s.files = Dir.chdir(__dir__) do
22
+ `git ls-files -z`.split("\x0").select do |f|
23
+ (File.expand_path(f) == __FILE__) ||
24
+ f.start_with?(*%w(app/ config/ db/ lib/ Rakefile README.md))
25
+ end
26
+ end
27
+
28
+ s.add_dependency "decidim-core", Decidim::Forms.version
29
+ s.add_dependency "wicked_pdf", "~> 2.1"
30
+ s.add_dependency "wkhtmltopdf-binary", "~> 0.12"
31
+
32
+ s.add_development_dependency "decidim-admin", Decidim::Forms.version
33
+ s.add_development_dependency "decidim-dev", Decidim::Forms.version
34
+ 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
- title { generate_localized_title }
9
- description do
10
- Decidim::Faker::Localized.wrapped("<p>", "</p>") do
11
- generate_localized_title
12
- end
8
+ transient do
9
+ skip_injection { false }
13
10
  end
14
- tos { generate_localized_title }
15
- questionnaire_for { build(:participatory_process) }
11
+ title { generate_localized_title(:questionnaire_title, skip_injection: skip_injection) }
12
+ description { generate_localized_description(:questionnaire_description, skip_injection: skip_injection) }
13
+ tos { generate_localized_title(:questionnaire_tos, skip_injection: skip_injection) }
14
+ questionnaire_for { build(:participatory_process, skip_injection: skip_injection) }
16
15
  salt { SecureRandom.hex(32) }
17
16
 
18
17
  trait :with_questions do
19
18
  questions do
20
19
  position = 0
21
20
  qs = %w(short_answer long_answer).collect do |text_question_type|
22
- q = build(:questionnaire_question, question_type: text_question_type, position: position)
21
+ q = build(:questionnaire_question, question_type: text_question_type, position: position, skip_injection: skip_injection)
23
22
  position += 1
24
23
  q
25
24
  end
26
- qs << build(:questionnaire_question, :with_answer_options, question_type: :single_option, position: position)
25
+ qs << build(:questionnaire_question, :with_answer_options, question_type: :single_option, position: position, skip_injection: skip_injection)
27
26
  qs
28
27
  end
29
28
  end
30
29
 
31
30
  trait :with_all_questions do
32
- after(:build) do |questionaire, _evaluator|
31
+ after(:build) do |questionaire, evaluator|
33
32
  position = 0
34
33
  %w(short_answer long_answer).collect do |text_question_type|
35
34
  q = create(:questionnaire_question,
36
35
  question_type: text_question_type,
37
36
  position: position,
38
- questionnaire: questionaire)
37
+ questionnaire: questionaire,
38
+ skip_injection: evaluator.skip_injection)
39
39
  position += 1
40
40
  questionaire.questions << q
41
41
  end
@@ -44,7 +44,8 @@ FactoryBot.define do
44
44
  q = create(:questionnaire_question, :with_answer_options,
45
45
  question_type: option_question_type,
46
46
  position: position,
47
- questionnaire: questionaire)
47
+ questionnaire: questionaire,
48
+ skip_injection: evaluator.skip_injection)
48
49
  q.display_conditions.build(
49
50
  condition_question: questionaire.questions[q.position - 1],
50
51
  question: q,
@@ -60,7 +61,8 @@ FactoryBot.define do
60
61
  question_type: matrix_question_type,
61
62
  position: position,
62
63
  body: generate_localized_title,
63
- questionnaire: questionaire)
64
+ questionnaire: questionaire,
65
+ skip_injection: evaluator.skip_injection)
64
66
  q.display_conditions.build(
65
67
  condition_question: questionaire.questions[q.position - 1],
66
68
  question: q,
@@ -82,16 +84,13 @@ FactoryBot.define do
82
84
 
83
85
  factory :questionnaire_question, class: "Decidim::Forms::Question" do
84
86
  transient do
87
+ skip_injection { false }
85
88
  options { [] }
86
89
  rows { [] }
87
90
  end
88
91
 
89
- body { generate_localized_title }
90
- description do
91
- Decidim::Faker::Localized.wrapped("<p>", "</p>") do
92
- generate_localized_title
93
- end
94
- end
92
+ body { generate_localized_title(:questionnaire_question_body, skip_injection: skip_injection) }
93
+ description { generate_localized_description(:questionnaire_question_description, skip_injection: skip_injection) }
95
94
  mandatory { false }
96
95
  position { 0 }
97
96
  question_type { Decidim::Forms::Question::TYPES.first }
@@ -119,13 +118,13 @@ FactoryBot.define do
119
118
 
120
119
  trait :with_answer_options do
121
120
  answer_options do
122
- Array.new(3).collect { build(:answer_option) }
121
+ Array.new(3).collect { build(:answer_option, skip_injection: skip_injection) }
123
122
  end
124
123
  end
125
124
 
126
125
  trait :conditioned do
127
126
  display_conditions do
128
- Array.new(3).collect { build(:display_condition) }
127
+ Array.new(3).collect { build(:display_condition, skip_injection: skip_injection) }
129
128
  end
130
129
  end
131
130
 
@@ -139,22 +138,28 @@ FactoryBot.define do
139
138
  end
140
139
 
141
140
  factory :answer, class: "Decidim::Forms::Answer" do
141
+ transient do
142
+ skip_injection { false }
143
+ end
142
144
  body { "hola" }
143
145
  questionnaire
144
- question { create(:questionnaire_question, questionnaire: questionnaire) }
145
- user { create(:user, organization: questionnaire.questionnaire_for.organization) }
146
+ question { create(:questionnaire_question, questionnaire: questionnaire, skip_injection: skip_injection) }
147
+ user { create(:user, organization: questionnaire.questionnaire_for.organization, skip_injection: skip_injection) }
146
148
  session_token { Digest::MD5.hexdigest(user.id.to_s) }
147
149
 
148
150
  trait :with_attachments do
149
- after(:create) do |answer, _evaluator|
150
- create :attachment, :with_image, attached_to: answer
151
- create :attachment, :with_pdf, attached_to: answer
151
+ after(:create) do |answer, evaluator|
152
+ create :attachment, :with_image, attached_to: answer, skip_injection: evaluator.skip_injection
153
+ create :attachment, :with_pdf, attached_to: answer, skip_injection: evaluator.skip_injection
152
154
  end
153
155
  end
154
156
  end
155
157
 
156
158
  factory :answer_option, class: "Decidim::Forms::AnswerOption" do
157
- question { create(:questionnaire_question) }
159
+ transient do
160
+ skip_injection { false }
161
+ end
162
+ question { create(:questionnaire_question, skip_injection: skip_injection) }
158
163
  body { generate_localized_title }
159
164
  free_text { false }
160
165
 
@@ -168,31 +173,40 @@ FactoryBot.define do
168
173
  end
169
174
 
170
175
  factory :answer_choice, class: "Decidim::Forms::AnswerChoice" do
176
+ transient do
177
+ skip_injection { false }
178
+ end
171
179
  answer
172
- answer_option { create(:answer_option, question: answer.question) }
173
- matrix_row { create(:question_matrix_row, question: answer.question) }
180
+ answer_option { create(:answer_option, question: answer.question, skip_injection: skip_injection) }
181
+ matrix_row { create(:question_matrix_row, question: answer.question, skip_injection: skip_injection) }
174
182
  end
175
183
 
176
184
  factory :question_matrix_row, class: "Decidim::Forms::QuestionMatrixRow" do
177
- question { create(:questionnaire_question) }
185
+ transient do
186
+ skip_injection { false }
187
+ end
188
+ question { create(:questionnaire_question, skip_injection: skip_injection) }
178
189
  body { generate_localized_title }
179
190
  position { 0 }
180
191
  end
181
192
 
182
193
  factory :display_condition, class: "Decidim::Forms::DisplayCondition" do
183
- condition_question { create(:questionnaire_question) }
184
- question { create(:questionnaire_question, position: 1) }
194
+ transient do
195
+ skip_injection { false }
196
+ end
197
+ condition_question { create(:questionnaire_question, skip_injection: skip_injection) }
198
+ question { create(:questionnaire_question, position: 1, skip_injection: skip_injection) }
185
199
  condition_type { :answered }
186
200
  mandatory { true }
187
201
 
188
202
  trait :equal do
189
203
  condition_type { :equal }
190
- answer_option { create(:answer_option, question: condition_question) }
204
+ answer_option { create(:answer_option, question: condition_question, skip_injection: skip_injection) }
191
205
  end
192
206
 
193
207
  trait :match do
194
208
  condition_type { :match }
195
- condition_value { generate_localized_title }
209
+ condition_value { generate_localized_title(:condition_value, skip_injection: skip_injection) }
196
210
  end
197
211
  end
198
212
  end
@@ -8,7 +8,7 @@ shared_examples_for "has questionnaire" do
8
8
  visit questionnaire_public_path
9
9
 
10
10
  expect(page).to have_i18n_content(questionnaire.title, upcase: true)
11
- expect(page).to have_i18n_content(questionnaire.description)
11
+ expect(page).to have_i18n_content(questionnaire.description, strip_tags: true)
12
12
 
13
13
  expect(page).not_to have_css(".form.answer-questionnaire")
14
14
 
@@ -29,7 +29,7 @@ shared_examples_for "has questionnaire" do
29
29
  visit questionnaire_public_path
30
30
 
31
31
  expect(page).to have_i18n_content(questionnaire.title, upcase: true)
32
- expect(page).to have_i18n_content(questionnaire.description)
32
+ expect(page).to have_i18n_content(questionnaire.description, strip_tags: true)
33
33
 
34
34
  fill_in question.body["en"], with: "My first answer"
35
35
 
@@ -4,7 +4,7 @@ module Decidim
4
4
  # This holds the decidim-forms version.
5
5
  module Forms
6
6
  def self.version
7
- "0.27.5"
7
+ "0.27.6"
8
8
  end
9
9
  end
10
10
  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.5
4
+ version: 0.27.6
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-12-20 00:00:00.000000000 Z
14
+ date: 2024-04-30 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.5
22
+ version: 0.27.6
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.5
29
+ version: 0.27.6
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.5
64
+ version: 0.27.6
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.5
71
+ version: 0.27.6
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.5
78
+ version: 0.27.6
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.5
85
+ version: 0.27.6
86
86
  description: A forms gem for decidim.
87
87
  email:
88
88
  - josepjaume@gmail.com
@@ -186,7 +186,6 @@ 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
190
189
  - config/initializers/wicked_pdf.rb
191
190
  - config/locales/am-ET.yml
192
191
  - config/locales/ar-SA.yml
@@ -220,6 +219,7 @@ files:
220
219
  - config/locales/ga-IE.yml
221
220
  - config/locales/gl.yml
222
221
  - config/locales/gn-PY.yml
222
+ - config/locales/he-IL.yml
223
223
  - config/locales/hr-HR.yml
224
224
  - config/locales/hr.yml
225
225
  - config/locales/hu.yml
@@ -280,6 +280,7 @@ files:
280
280
  - db/migrate/20201110152921_add_salt_to_decidim_forms_questionnaires.rb
281
281
  - db/migrate/20210208094442_add_max_characters_to_decidim_forms_questions.rb
282
282
  - db/migrate/20210616153042_set_position_to_question_matrix_rows.rb
283
+ - decidim-forms.gemspec
283
284
  - lib/decidim/api/answer_option_type.rb
284
285
  - lib/decidim/api/question_type.rb
285
286
  - lib/decidim/api/questionnaire_entity_interface.rb
@@ -307,23 +308,23 @@ homepage: https://github.com/decidim/decidim
307
308
  licenses:
308
309
  - AGPL-3.0
309
310
  metadata: {}
310
- post_install_message:
311
+ post_install_message:
311
312
  rdoc_options: []
312
313
  require_paths:
313
314
  - lib
314
315
  required_ruby_version: !ruby/object:Gem::Requirement
315
316
  requirements:
316
- - - ">="
317
+ - - "~>"
317
318
  - !ruby/object:Gem::Version
318
- version: '3.0'
319
+ version: 3.0.0
319
320
  required_rubygems_version: !ruby/object:Gem::Requirement
320
321
  requirements:
321
322
  - - ">="
322
323
  - !ruby/object:Gem::Version
323
324
  version: '0'
324
325
  requirements: []
325
- rubygems_version: 3.4.22
326
- signing_key:
326
+ rubygems_version: 3.2.22
327
+ signing_key:
327
328
  specification_version: 4
328
329
  summary: Decidim forms
329
330
  test_files: []
@@ -1,3 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- # Empty line for playing nice with tpope/vim-rails