decidim-forms 0.27.4 → 0.27.6

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a7dd21d56ae75820592770d7c2e26e6a28a35b08826d3aef4e6b796e9bd4bdc6
4
- data.tar.gz: a65698b93fc4e84f85a61df07e28071d851436c5b0907a00b91127d7f4569684
3
+ metadata.gz: fb8af1d2c76776bd4e799949d4723e998f57b4cc32ad3f021b1baff85fbd646b
4
+ data.tar.gz: 65f42cfd48b2b6e175dcba554014b97533a25c7b92eac8e2144d165f5bf86a42
5
5
  SHA512:
6
- metadata.gz: 1989b2607dc0c56d1b6ed5f0f8eb70421935bf1fd7f565128ec282ea677dc920fca3ea460cbbad1e73681add5611b3010e2b7f77afaadcf5d3eff765dc8b56c0
7
- data.tar.gz: '008f83363510243b24a9cb6d4e8f2997e7831d213a024328686bb0ab55ee8af8722f59c85577dfbc489217aa48b4dfa1c12697903b5dd94637e7cf1cd8b03705'
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: Това действие не може да се отмени и Вие не можете да редактирате отговорите си. Сигурни ли сте?
@@ -175,7 +175,7 @@ de:
175
175
  tos_agreement: Mit der Teilnahme stimmen Sie den Nutzungsbedingungen zu
176
176
  step_navigation:
177
177
  show:
178
- are_you_sure: Diese Aktion kann nicht rückgängig gemacht werden und Sie können Ihre Antworten nicht bearbeiten. Bist du sicher?
178
+ are_you_sure: Diese Aktion kann nicht rückgängig gemacht werden und Sie können Ihre Antworten nicht bearbeiten. Sind Sie sich sicher?
179
179
  back: Zurück
180
180
  continue: Weiter
181
181
  submit: einreichen
@@ -7,7 +7,7 @@ eu:
7
7
  choices: Aukerak
8
8
  selected_choices: Hautatutako aukerak
9
9
  question:
10
- max_choices: Gehienezko aukera kopurua
10
+ max_choices: Gehieneko aukera kopurua
11
11
  question_type: Mota
12
12
  questionnaire_question:
13
13
  mandatory: Derrigorrezkoa
@@ -49,13 +49,13 @@ eu:
49
49
  empty: Oraindik ez dago erantzunik
50
50
  export:
51
51
  answer:
52
- title: '#%{number} erantzuna'
52
+ title: '#%{number} erantzun'
53
53
  export_response:
54
54
  title: survey_user_answers_%{token}
55
55
  index:
56
56
  title: "Guztira %{total} erantzun"
57
57
  show:
58
- title: '#%{number} erantzuna'
58
+ title: '#%{number} erantzun'
59
59
  display_condition:
60
60
  answer_option: Erantzuteko aukera
61
61
  condition_question: Galdera
@@ -80,8 +80,8 @@ eu:
80
80
  form:
81
81
  add_question: Gehitu galdera
82
82
  add_separator: Gehitu banatzailea
83
- add_title_and_description: Editatu izenburua eta deskribapena
84
- already_answered_warning: Formularioa erabiltzaile batzuek erantzuten dute, beraz, ezin dira galderak aldatu.
83
+ add_title_and_description: Gehitu izenburua eta deskribapena
84
+ already_answered_warning: Formularioa erabiltzaile batzuek erantzuten dute; beraz, ezin dira galderak aldatu.
85
85
  collapse: Bildu galdera guztiak
86
86
  expand: Zabaldu galdera guztiak
87
87
  preview: Aurreikusi
@@ -111,7 +111,7 @@ eu:
111
111
  separator: Bereizlea
112
112
  up: Gora
113
113
  title_and_description:
114
- collapse: Tolestu
114
+ collapse: Kolapsoa
115
115
  description: Deskribapena
116
116
  down: Behera
117
117
  expand: Zabaldu
@@ -120,7 +120,7 @@ eu:
120
120
  title_and_description: Izenburua eta deskribapena
121
121
  up: Gora
122
122
  update:
123
- invalid: Akatsik egon da galdeketa gordetzean.
123
+ invalid: Arazo bat egon da inprimakia gordetzean.
124
124
  success: Galdetegia zuzen gorde da.
125
125
  admin_log:
126
126
  questionnaire:
@@ -131,8 +131,8 @@ eu:
131
131
  images:
132
132
  dimensions: "%{width} x %{height} px"
133
133
  processors:
134
- resize_and_pad: Irudi hau bigunduko eta birdimentsionatuko da %{dimensions} nehurrira.
135
- resize_to_fit: Irudi hau bigunduko eta birdimentsionatuko da %{dimensions} nehurrira.
134
+ resize_and_pad: Irudi hau bigunduko eta birdimentsionatuko da %{dimensions} neurrira.
135
+ resize_to_fit: Irudi hau bigunduko eta birdimentsionatuko da %{dimensions} neurrira.
136
136
  question_types:
137
137
  files: Fitxategiak
138
138
  long_answer: Erantzun luzea
@@ -147,19 +147,19 @@ eu:
147
147
  download_attachment: Deskargatu eranskina
148
148
  questionnaires:
149
149
  answer:
150
- invalid: Akatsen bat gertatu da galdeketa erantzutean.
150
+ invalid: Akats bat gertatu da galdeketa erantzutean.
151
151
  max_choices_alert: Aukera gehiegi daude hautatuta
152
- success: Formularioak ondo erantzun du.
152
+ success: Formularioa zuzen erantzunda.
153
153
  question:
154
- max_choices: 'Gehienezko aukerak: %{n}'
154
+ max_choices: 'Gehieneko 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 formularioari
158
+ title: Erantzun formularioa
159
159
  current_step: '%{step} urratsa'
160
160
  of_total_steps: '%{total_steps} etik'
161
161
  questionnaire_answered:
162
- body: Galdeketa honi erantzun dio.
162
+ body: Dagoeneko inkesta hau erantzun duzu.
163
163
  title: Dagoeneko erantzunda
164
164
  questionnaire_closed:
165
165
  body: Galdetegia itxita dago eta ezin da erantzun.
@@ -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
@@ -100,6 +100,7 @@ hu:
100
100
  step_navigation:
101
101
  show:
102
102
  are_you_sure: Ez a művelet nem vonható vissza, és nem tudod majd szerkeszteni a válaszokat. Biztos vagy ebben?
103
+ continue: Folytatás
103
104
  submit: Beküldés
104
105
  user_answers_serializer:
105
106
  created_at: Válaszolt
@@ -143,6 +143,8 @@ lt:
143
143
  single_option: Vienas variantas
144
144
  sorting: Rūšiavimas
145
145
  title_and_description: Pavadinimas ir aprašymas
146
+ questionnaire_answer_presenter:
147
+ download_attachment: Parsisiųsti priedą
146
148
  questionnaires:
147
149
  answer:
148
150
  invalid: Atsakant į šią formą iškilo problema.
@@ -80,6 +80,7 @@ pl:
80
80
  form:
81
81
  add_question: Dodaj pytanie
82
82
  add_separator: Dodaj separator
83
+ add_title_and_description: Dodaj tytuł i opis
83
84
  already_answered_warning: Niektórzy użytkownicy już odpowiedzieli na pytania tego formularza, więc nie można modyfikować jego pytań.
84
85
  collapse: Zwiń wszystkie pytania
85
86
  expand: Rozwiń wszystkie pytania
@@ -109,14 +110,29 @@ pl:
109
110
  remove: Usuń
110
111
  separator: Separator
111
112
  up: W górę
113
+ title_and_description:
114
+ collapse: Zwiń
115
+ description: Opis
116
+ down: W dół
117
+ expand: Rozwiń
118
+ remove: Usuń
119
+ title: Tytuł
120
+ title_and_description: Tytuł i opis
121
+ up: W górę
112
122
  update:
113
123
  invalid: Podczas zapisywania formularza wystąpił błąd.
114
124
  success: Formularz został zapisany.
125
+ admin_log:
126
+ questionnaire:
127
+ update: "%{user_name} zaktualizował(a) kwestionariusz %{resource_name}"
115
128
  errors:
116
129
  answer:
117
130
  body: Treść nie może być pusta
118
131
  images:
119
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}.
120
136
  question_types:
121
137
  files: Pliki
122
138
  long_answer: Długa odpowiedź
@@ -127,6 +143,8 @@ pl:
127
143
  single_option: Jedna opcja
128
144
  sorting: Sortowanie
129
145
  title_and_description: Tytuł i opis
146
+ questionnaire_answer_presenter:
147
+ download_attachment: Pobierz załącznik
130
148
  questionnaires:
131
149
  answer:
132
150
  invalid: Podczas wypełniania formularza wystąpiły błędy.
@@ -80,6 +80,7 @@ pt-BR:
80
80
  form:
81
81
  add_question: Adicionar pergunta
82
82
  add_separator: Adicionar separador
83
+ add_title_and_description: Adicionar título e descrição
83
84
  already_answered_warning: O questionário já foi respondido por alguns usuários então você não pode modificar suas perguntas.
84
85
  collapse: Recolher todas as questões
85
86
  expand: Expandir todas as questões
@@ -109,14 +110,29 @@ pt-BR:
109
110
  remove: Remover
110
111
  separator: Separador
111
112
  up: Para Cima
113
+ title_and_description:
114
+ collapse: Recolher
115
+ description: Descrição
116
+ down: Abaixo
117
+ expand: Expandir
118
+ remove: Excluir
119
+ title: Título
120
+ title_and_description: Título e descrição
121
+ up: Acima
112
122
  update:
113
123
  invalid: Houve erros ao salvar o questionário.
114
124
  success: Formulário salvo com sucesso.
125
+ admin_log:
126
+ questionnaire:
127
+ update: "%{user_name} atualizou o questionário %{resource_name}"
115
128
  errors:
116
129
  answer:
117
130
  body: O corpo não pode ficar em branco
118
131
  images:
119
132
  dimensions: "%{width} x %{height} px"
133
+ processors:
134
+ resize_and_pad: Esta imagem será redimensionada e preenchida para %{dimensions}.
135
+ resize_to_fit: Esta imagem será redimensionada para caber %{dimensions}.
120
136
  question_types:
121
137
  files: Arquivos
122
138
  long_answer: Resposta longa
@@ -126,6 +142,9 @@ pt-BR:
126
142
  short_answer: Resposta curta
127
143
  single_option: Opção única
128
144
  sorting: Classificação
145
+ title_and_description: Título e descrição
146
+ questionnaire_answer_presenter:
147
+ download_attachment: Baixar anexo
129
148
  questionnaires:
130
149
  answer:
131
150
  invalid: Houve erros ao responder a pesquisa.
@@ -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 @@
1
+ sq:
@@ -0,0 +1 @@
1
+ th:
@@ -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
 
@@ -32,7 +32,7 @@ module Decidim
32
32
  def hash_for(answer)
33
33
  {
34
34
  answer_translated_attribute_name(:id) => answer&.session_token,
35
- answer_translated_attribute_name(:created_at) => answer&.created_at&.to_s(:db),
35
+ answer_translated_attribute_name(:created_at) => answer&.created_at,
36
36
  answer_translated_attribute_name(:ip_hash) => answer&.ip_hash,
37
37
  answer_translated_attribute_name(:user_status) => answer_translated_attribute_name(answer&.decidim_user_id.present? ? "registered" : "unregistered")
38
38
  }
@@ -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.4"
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.4
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-07-27 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.4
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.4
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.4
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.4
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.4
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.4
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
@@ -254,9 +254,11 @@ files:
254
254
  - config/locales/sk.yml
255
255
  - config/locales/sl.yml
256
256
  - config/locales/so-SO.yml
257
+ - config/locales/sq-AL.yml
257
258
  - config/locales/sr-CS.yml
258
259
  - config/locales/sv.yml
259
260
  - config/locales/sw-KE.yml
261
+ - config/locales/th-TH.yml
260
262
  - config/locales/ti-ER.yml
261
263
  - config/locales/tr-TR.yml
262
264
  - config/locales/uk.yml
@@ -278,6 +280,7 @@ files:
278
280
  - db/migrate/20201110152921_add_salt_to_decidim_forms_questionnaires.rb
279
281
  - db/migrate/20210208094442_add_max_characters_to_decidim_forms_questions.rb
280
282
  - db/migrate/20210616153042_set_position_to_question_matrix_rows.rb
283
+ - decidim-forms.gemspec
281
284
  - lib/decidim/api/answer_option_type.rb
282
285
  - lib/decidim/api/question_type.rb
283
286
  - lib/decidim/api/questionnaire_entity_interface.rb
@@ -305,15 +308,15 @@ homepage: https://github.com/decidim/decidim
305
308
  licenses:
306
309
  - AGPL-3.0
307
310
  metadata: {}
308
- post_install_message:
311
+ post_install_message:
309
312
  rdoc_options: []
310
313
  require_paths:
311
314
  - lib
312
315
  required_ruby_version: !ruby/object:Gem::Requirement
313
316
  requirements:
314
- - - ">="
317
+ - - "~>"
315
318
  - !ruby/object:Gem::Version
316
- version: '3.0'
319
+ version: 3.0.0
317
320
  required_rubygems_version: !ruby/object:Gem::Requirement
318
321
  requirements:
319
322
  - - ">="
@@ -321,7 +324,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
321
324
  version: '0'
322
325
  requirements: []
323
326
  rubygems_version: 3.2.22
324
- signing_key:
327
+ signing_key:
325
328
  specification_version: 4
326
329
  summary: Decidim forms
327
330
  test_files: []
File without changes