decidim-forms 0.23.3 → 0.24.0.rc1
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/assets/javascripts/decidim/forms/forms.js.es6 +4 -4
- data/app/commands/decidim/forms/admin/update_questionnaire.rb +2 -1
- data/app/commands/decidim/forms/answer_questionnaire.rb +43 -1
- data/app/controllers/decidim/forms/admin/concerns/has_questionnaire.rb +10 -2
- data/app/controllers/decidim/forms/concerns/has_questionnaire.rb +10 -4
- data/app/forms/decidim/forms/admin/question_form.rb +2 -0
- data/app/forms/decidim/forms/answer_form.rb +27 -0
- data/app/helpers/decidim/forms/admin/application_helper.rb +1 -6
- data/app/helpers/decidim/forms/admin/concerns/has_questionnaire_answers_url_helper.rb +3 -3
- data/app/jobs/decidim/forms/export_questionnaire_answers_job.rb +1 -1
- data/app/models/decidim/forms/answer.rb +8 -0
- data/app/models/decidim/forms/question.rb +9 -3
- data/app/presenters/decidim/forms/admin/questionnaire_answer_presenter.rb +20 -0
- data/app/presenters/decidim/forms/admin/questionnaire_participant_presenter.rb +4 -4
- data/app/queries/decidim/forms/questionnaire_user_answers.rb +2 -1
- data/app/views/decidim/forms/admin/questionnaires/_form.html.erb +3 -3
- data/app/views/decidim/forms/admin/questionnaires/_question.html.erb +11 -0
- data/app/views/decidim/forms/admin/questionnaires/edit.html.erb +1 -1
- data/app/views/decidim/forms/questionnaires/_answer.html.erb +1 -1
- data/app/views/decidim/forms/questionnaires/answers/_files.html.erb +1 -0
- data/app/views/decidim/forms/questionnaires/answers/_long_answer.html.erb +1 -1
- data/app/views/decidim/forms/questionnaires/answers/_matrix_multiple.html.erb +2 -1
- data/app/views/decidim/forms/questionnaires/answers/_matrix_single.html.erb +2 -1
- data/app/views/decidim/forms/questionnaires/answers/_multiple_option.html.erb +2 -1
- data/app/views/decidim/forms/questionnaires/answers/_short_answer.html.erb +1 -1
- data/app/views/decidim/forms/questionnaires/answers/_single_option.html.erb +2 -1
- data/app/views/decidim/forms/questionnaires/show.html.erb +1 -1
- data/config/initializers/wicked_pdf.rb +2 -0
- data/config/locales/ca.yml +4 -2
- data/config/locales/cs.yml +8 -2
- data/config/locales/de.yml +8 -2
- data/config/locales/el.yml +1 -1
- data/config/locales/en.yml +8 -2
- data/config/locales/es-MX.yml +2 -2
- data/config/locales/es-PY.yml +2 -2
- data/config/locales/es.yml +2 -2
- data/config/locales/fi-plain.yml +8 -2
- data/config/locales/fi.yml +8 -2
- data/config/locales/fr-CA.yml +8 -2
- data/config/locales/fr.yml +8 -2
- data/config/locales/gl.yml +0 -1
- data/config/locales/it.yml +1 -2
- data/config/locales/ja.yml +2 -2
- data/config/locales/lv.yml +1 -1
- data/config/locales/nl.yml +4 -5
- data/config/locales/no.yml +1 -2
- data/config/locales/pl.yml +11 -2
- data/config/locales/pt.yml +1 -2
- data/config/locales/ro-RO.yml +1 -2
- data/config/locales/sv.yml +1 -2
- data/config/locales/tr-TR.yml +2 -2
- data/config/locales/zh-CN.yml +1 -2
- data/db/migrate/20210208094442_add_max_characters_to_decidim_forms_questions.rb +7 -0
- data/lib/decidim/api/answer_option_type.rb +13 -0
- data/lib/decidim/api/question_type.rb +21 -0
- data/lib/decidim/api/questionnaire_entity_interface.rb +5 -5
- data/lib/decidim/api/questionnaire_type.rb +19 -0
- data/lib/decidim/exporters/form_pdf_controller_helper.rb +2 -0
- data/lib/decidim/forms.rb +1 -1
- data/lib/decidim/forms/api.rb +3 -0
- data/lib/decidim/forms/data_portability_user_answers_serializer.rb +7 -1
- data/lib/decidim/forms/test/factories.rb +12 -2
- data/lib/decidim/forms/test/shared_examples/has_questionnaire.rb +38 -5
- data/lib/decidim/forms/test/shared_examples/manage_questionnaires.rb +5 -4
- data/lib/decidim/forms/test/shared_examples/manage_questionnaires/add_display_conditions.rb +7 -3
- data/lib/decidim/forms/test/shared_examples/manage_questionnaires/add_questions.rb +1 -1
- data/lib/decidim/forms/test/shared_examples/manage_questionnaires/update_questions.rb +5 -0
- data/lib/decidim/forms/user_answers_serializer.rb +9 -1
- data/lib/decidim/forms/version.rb +1 -1
- metadata +17 -15
- data/app/types/decidim/forms/answer_option_type.rb +0 -14
- data/app/types/decidim/forms/question_type.rb +0 -23
- data/app/types/decidim/forms/questionnaire_type.rb +0 -22
data/config/locales/fr-CA.yml
CHANGED
@@ -10,10 +10,15 @@ fr-CA:
|
|
10
10
|
question_type: Type
|
11
11
|
questionnaire_question:
|
12
12
|
mandatory: Obligatoire
|
13
|
+
max_characters: Limite de caractères (laisser à 0 si aucune limite)
|
13
14
|
errors:
|
14
15
|
models:
|
15
16
|
answer:
|
16
17
|
attributes:
|
18
|
+
add_documents:
|
19
|
+
needs_to_be_reattached: Doit être téléchargé de nouveau
|
20
|
+
body:
|
21
|
+
too_long: est trop long
|
17
22
|
choices:
|
18
23
|
missing: ne sont pas complets
|
19
24
|
too_many: sont trop nombreux
|
@@ -78,7 +83,7 @@ fr-CA:
|
|
78
83
|
collapse: Réduire toutes les questions
|
79
84
|
expand: Développer toutes les questions
|
80
85
|
preview: Aperçu
|
81
|
-
title: Modifier le
|
86
|
+
title: Modifier le questionnaire pour %{questionnaire_for}
|
82
87
|
unpublished_warning: Le formulaire n'est pas publié. Vous pouvez modifier ses questions, mais cela supprimera les réponses actuelles.
|
83
88
|
matrix_row:
|
84
89
|
matrix_row: Ligne
|
@@ -110,7 +115,7 @@ fr-CA:
|
|
110
115
|
answer:
|
111
116
|
body: Le corps ne peut pas être vide
|
112
117
|
files:
|
113
|
-
|
118
|
+
extension_allowlist: 'Formats acceptés :'
|
114
119
|
images:
|
115
120
|
dimensions: "%{width} x %{height} px"
|
116
121
|
dimensions_info: 'Cette image sera :'
|
@@ -118,6 +123,7 @@ fr-CA:
|
|
118
123
|
resize_and_pad: Redimensionné et ajustée à
|
119
124
|
resize_to_fit: Redimensionnée pour s'adapter
|
120
125
|
question_types:
|
126
|
+
files: Fichiers
|
121
127
|
long_answer: Longue réponse
|
122
128
|
matrix_multiple: Matrice (choix multiples)
|
123
129
|
matrix_single: Matrice (choix unique)
|
data/config/locales/fr.yml
CHANGED
@@ -10,10 +10,15 @@ fr:
|
|
10
10
|
question_type: Type
|
11
11
|
questionnaire_question:
|
12
12
|
mandatory: Obligatoire
|
13
|
+
max_characters: Limite de caractères (laisser à 0 si aucune limite)
|
13
14
|
errors:
|
14
15
|
models:
|
15
16
|
answer:
|
16
17
|
attributes:
|
18
|
+
add_documents:
|
19
|
+
needs_to_be_reattached: Doit être téléchargé de nouveau
|
20
|
+
body:
|
21
|
+
too_long: est trop long
|
17
22
|
choices:
|
18
23
|
missing: ne sont pas complets
|
19
24
|
too_many: sont trop nombreux
|
@@ -78,7 +83,7 @@ fr:
|
|
78
83
|
collapse: Réduire toutes les questions
|
79
84
|
expand: Développer toutes les questions
|
80
85
|
preview: Aperçu
|
81
|
-
title: Modifier le
|
86
|
+
title: Modifier le questionnaire pour %{questionnaire_for}
|
82
87
|
unpublished_warning: Le formulaire n'est pas publié. Vous pouvez modifier ses questions, mais cela supprimera les réponses actuelles.
|
83
88
|
matrix_row:
|
84
89
|
matrix_row: Ligne
|
@@ -110,7 +115,7 @@ fr:
|
|
110
115
|
answer:
|
111
116
|
body: Le corps ne peut pas être vide
|
112
117
|
files:
|
113
|
-
|
118
|
+
extension_allowlist: 'Formats acceptés :'
|
114
119
|
images:
|
115
120
|
dimensions: "%{width} x %{height} px"
|
116
121
|
dimensions_info: 'Cette image sera :'
|
@@ -118,6 +123,7 @@ fr:
|
|
118
123
|
resize_and_pad: Redimensionné et ajustée à
|
119
124
|
resize_to_fit: Redimensionnée pour s'adapter
|
120
125
|
question_types:
|
126
|
+
files: Fichiers
|
121
127
|
long_answer: Longue réponse
|
122
128
|
matrix_multiple: Matrice (choix multiples)
|
123
129
|
matrix_single: Matrice (choix unique)
|
data/config/locales/gl.yml
CHANGED
data/config/locales/it.yml
CHANGED
@@ -78,7 +78,6 @@ it:
|
|
78
78
|
collapse: Comprimi tutte le domande
|
79
79
|
expand: Espandi tutte le domande
|
80
80
|
preview: Anteprima
|
81
|
-
title: Modificare il modulo
|
82
81
|
unpublished_warning: Il modulo non è pubblicato. Puoi modificare le sue domande, ma in questo modo cancellerai le risposte correnti.
|
83
82
|
matrix_row:
|
84
83
|
matrix_row: Riga
|
@@ -110,7 +109,7 @@ it:
|
|
110
109
|
answer:
|
111
110
|
body: Il corpo non può essere vuoto
|
112
111
|
files:
|
113
|
-
|
112
|
+
extension_allowlist: 'Formati accettati:'
|
114
113
|
images:
|
115
114
|
dimensions: "%{width} x %{height} px"
|
116
115
|
dimensions_info: 'Questa immagine sarà:'
|
data/config/locales/ja.yml
CHANGED
@@ -76,7 +76,7 @@ ja:
|
|
76
76
|
collapse: すべての質問を閉じる
|
77
77
|
expand: すべての質問を展開
|
78
78
|
preview: プレビュー
|
79
|
-
title:
|
79
|
+
title: '%{questionnaire_for} のフォームを編集'
|
80
80
|
unpublished_warning: フォームは公開されていません。質問を修正することはできますが、そうすると現在の回答が削除されます。
|
81
81
|
matrix_row:
|
82
82
|
matrix_row: 行
|
@@ -108,7 +108,7 @@ ja:
|
|
108
108
|
answer:
|
109
109
|
body: 本文は空白にできません
|
110
110
|
files:
|
111
|
-
|
111
|
+
extension_allowlist: '承認されたフォーマット:'
|
112
112
|
images:
|
113
113
|
dimensions: "%{width} x %{height} px"
|
114
114
|
dimensions_info: 'この画像は次のようになります:'
|
data/config/locales/lv.yml
CHANGED
data/config/locales/nl.yml
CHANGED
@@ -24,8 +24,8 @@ nl:
|
|
24
24
|
admin:
|
25
25
|
models:
|
26
26
|
components:
|
27
|
-
description:
|
28
|
-
tos:
|
27
|
+
description: Omschrijving
|
28
|
+
tos: Servicevoorwaarden
|
29
29
|
questionnaires:
|
30
30
|
actions:
|
31
31
|
back: Terug naar vragen
|
@@ -74,11 +74,10 @@ nl:
|
|
74
74
|
form:
|
75
75
|
add_question: Vraag toevoegen
|
76
76
|
add_separator: Scheidingsteken toevoegen
|
77
|
-
already_answered_warning:
|
77
|
+
already_answered_warning: De vragenlijst is al door enkele gebruikers beantwoord, dus u kunt de vragen niet wijzigen.
|
78
78
|
collapse: Alle vragen samenvouwen
|
79
79
|
expand: Vouw alle vragen uit
|
80
80
|
preview: Voorvertoning
|
81
|
-
title: Formulier bewerken
|
82
81
|
unpublished_warning: Het formulier is niet gepubliceerd. Je kunt de vragen wijzigen, maar als je dit doet worden de huidige antwoorden verwijderd.
|
83
82
|
matrix_row:
|
84
83
|
matrix_row: Rij
|
@@ -110,7 +109,7 @@ nl:
|
|
110
109
|
answer:
|
111
110
|
body: Lichaam mag niet leeg zijn
|
112
111
|
files:
|
113
|
-
|
112
|
+
extension_allowlist: 'Geaccepteerde formaten:'
|
114
113
|
images:
|
115
114
|
dimensions: "%{width} x %{height} px"
|
116
115
|
dimensions_info: 'Deze afbeelding zal zijn:'
|
data/config/locales/no.yml
CHANGED
@@ -53,7 +53,6 @@
|
|
53
53
|
form:
|
54
54
|
add_question: Legg til spørsmål
|
55
55
|
already_answered_warning: Skjemaet er allerede besvart av noen brukere derfor kan du ikke endre spørsmålene.
|
56
|
-
title: Rediger skjema
|
57
56
|
matrix_row:
|
58
57
|
remove: Fjern
|
59
58
|
statement: Uttalelse
|
@@ -81,7 +80,7 @@
|
|
81
80
|
answer:
|
82
81
|
body: Teksten kan ikke være blank
|
83
82
|
files:
|
84
|
-
|
83
|
+
extension_allowlist: 'Aksepterte formater:'
|
85
84
|
images:
|
86
85
|
dimensions: "%{width} x %{height} px"
|
87
86
|
dimensions_info: 'Dette bildet vil være:'
|
data/config/locales/pl.yml
CHANGED
@@ -3,15 +3,22 @@ pl:
|
|
3
3
|
attributes:
|
4
4
|
answer:
|
5
5
|
body: Odpowiedź
|
6
|
+
choices: Opcje
|
7
|
+
selected_choices: Wybrane opcje
|
6
8
|
question:
|
7
9
|
max_choices: Maksymalna liczba opcji do wyboru
|
8
10
|
question_type: Typ
|
9
11
|
questionnaire_question:
|
10
12
|
mandatory: Obowiązkowy
|
13
|
+
max_characters: Limit znaków (zostaw 0 jeśli nie chcesz ustawiać limitu)
|
11
14
|
errors:
|
12
15
|
models:
|
13
16
|
answer:
|
14
17
|
attributes:
|
18
|
+
add_documents:
|
19
|
+
needs_to_be_reattached: Załącz ponownie
|
20
|
+
body:
|
21
|
+
too_long: jest zbyt długie
|
15
22
|
choices:
|
16
23
|
missing: nie są kompletne
|
17
24
|
too_many: jest zbyt wiele
|
@@ -76,7 +83,7 @@ pl:
|
|
76
83
|
collapse: Zwiń wszystkie pytania
|
77
84
|
expand: Rozwiń wszystkie pytania
|
78
85
|
preview: Podgląd
|
79
|
-
title: Edytuj formularz
|
86
|
+
title: Edytuj formularz dla %{questionnaire_for}
|
80
87
|
unpublished_warning: Formularz nie został jeszcze opublikowany. Możesz zmienić jego pytania, ale to spowoduje usunięcie bieżących odpowiedzi.
|
81
88
|
matrix_row:
|
82
89
|
matrix_row: Wiersz
|
@@ -103,11 +110,12 @@ pl:
|
|
103
110
|
up: W górę
|
104
111
|
update:
|
105
112
|
invalid: Podczas zapisywania formularza wystąpił błąd.
|
113
|
+
success: Formularz został zapisany.
|
106
114
|
errors:
|
107
115
|
answer:
|
108
116
|
body: Treść nie może być pusta
|
109
117
|
files:
|
110
|
-
|
118
|
+
extension_allowlist: 'Dozwolone formaty:'
|
111
119
|
images:
|
112
120
|
dimensions: "%{width} × %{height} px"
|
113
121
|
dimensions_info: 'Rozmiar obrazu będzie wynosił:'
|
@@ -115,6 +123,7 @@ pl:
|
|
115
123
|
resize_and_pad: Zmieniony i dopełniony do
|
116
124
|
resize_to_fit: Dopasowany
|
117
125
|
question_types:
|
126
|
+
files: Pliki
|
118
127
|
long_answer: Długa odpowiedź
|
119
128
|
matrix_multiple: Macierz (wiele opcji)
|
120
129
|
matrix_single: Macierz (jedna opcja)
|
data/config/locales/pt.yml
CHANGED
@@ -76,7 +76,6 @@ pt:
|
|
76
76
|
collapse: Colapsar todas as questões
|
77
77
|
expand: Expandir todas as questões
|
78
78
|
preview: Pré-visualizar
|
79
|
-
title: Editar formulário
|
80
79
|
unpublished_warning: O formulário não está publicado. Pode modificar as suas questões, mas essa ação eliminará as respostas atuais.
|
81
80
|
matrix_row:
|
82
81
|
matrix_row: Linha
|
@@ -107,7 +106,7 @@ pt:
|
|
107
106
|
answer:
|
108
107
|
body: O corpo não pode ficar em branco
|
109
108
|
files:
|
110
|
-
|
109
|
+
extension_allowlist: 'Formatos aceites:'
|
111
110
|
images:
|
112
111
|
dimensions: "%{width} x %{height} px"
|
113
112
|
dimensions_info: 'Esta imagem será:'
|
data/config/locales/ro-RO.yml
CHANGED
@@ -76,7 +76,6 @@ ro:
|
|
76
76
|
collapse: Restrânge toate întrebările
|
77
77
|
expand: Extinde toate întrebările
|
78
78
|
preview: Previzualizare
|
79
|
-
title: Editare formular
|
80
79
|
unpublished_warning: Formularul nu este publicat. Puteți modifica întrebările, dar acest lucru va șterge răspunsurile curente.
|
81
80
|
matrix_row:
|
82
81
|
matrix_row: Rând
|
@@ -107,7 +106,7 @@ ro:
|
|
107
106
|
answer:
|
108
107
|
body: Corpul nu poate fi gol
|
109
108
|
files:
|
110
|
-
|
109
|
+
extension_allowlist: 'Formate acceptate:'
|
111
110
|
images:
|
112
111
|
dimensions: "%{width} x %{height} px"
|
113
112
|
dimensions_info: 'Această imagine va fi:'
|
data/config/locales/sv.yml
CHANGED
@@ -76,7 +76,6 @@ sv:
|
|
76
76
|
collapse: Komprimera alla frågor
|
77
77
|
expand: Expandera alla frågor
|
78
78
|
preview: Förhandsgranska
|
79
|
-
title: Redigera formulär
|
80
79
|
unpublished_warning: Formuläret är inte publicerat. Du kan ändra dess frågor, men det kommer att ta bort aktuella svar.
|
81
80
|
matrix_row:
|
82
81
|
matrix_row: Rad
|
@@ -107,7 +106,7 @@ sv:
|
|
107
106
|
answer:
|
108
107
|
body: Kroppen kan inte vara to
|
109
108
|
files:
|
110
|
-
|
109
|
+
extension_allowlist: 'Godkända format:'
|
111
110
|
images:
|
112
111
|
dimensions: "%{width} x %{height} px"
|
113
112
|
dimensions_info: 'Denna bild kommer att vara:'
|
data/config/locales/tr-TR.yml
CHANGED
@@ -78,7 +78,7 @@ tr:
|
|
78
78
|
collapse: Tüm soruları daraltın
|
79
79
|
expand: Tüm soruları genişletin
|
80
80
|
preview: Önizleme
|
81
|
-
title:
|
81
|
+
title: '%{questionnaire_for} için formu düzenleyin'
|
82
82
|
unpublished_warning: Form yayınlanmadı. Sorularını değiştirebilirsiniz, ancak bunu yapmak mevcut cevapları silecektir.
|
83
83
|
matrix_row:
|
84
84
|
matrix_row: Satır
|
@@ -110,7 +110,7 @@ tr:
|
|
110
110
|
answer:
|
111
111
|
body: Vücut boş olamaz
|
112
112
|
files:
|
113
|
-
|
113
|
+
extension_allowlist: 'Kabul edilen biçimler:'
|
114
114
|
images:
|
115
115
|
dimensions: "%{width} x %{height} px"
|
116
116
|
dimensions_info: 'Bu resim:'
|
data/config/locales/zh-CN.yml
CHANGED
@@ -78,7 +78,6 @@ zh-CN:
|
|
78
78
|
collapse: 收起所有问题
|
79
79
|
expand: 展开所有问题
|
80
80
|
preview: 预览
|
81
|
-
title: 编辑表单
|
82
81
|
unpublished_warning: 表单未发布。您可以修改它的问题,但这样做将删除当前答案。
|
83
82
|
matrix_row:
|
84
83
|
matrix_row: 行
|
@@ -110,7 +109,7 @@ zh-CN:
|
|
110
109
|
answer:
|
111
110
|
body: 主体不能为空
|
112
111
|
files:
|
113
|
-
|
112
|
+
extension_allowlist: '接受的格式:'
|
114
113
|
images:
|
115
114
|
dimensions: "%{width} x %{height} px"
|
116
115
|
dimensions_info: '这张图片将是:'
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Forms
|
5
|
+
class AnswerOptionType < Decidim::Api::Types::BaseObject
|
6
|
+
description "An answer option for a multi-choice question in a questionnaire"
|
7
|
+
|
8
|
+
field :id, GraphQL::Types::ID, "ID of this answer option", null: false
|
9
|
+
field :body, Decidim::Core::TranslatedFieldType, "The text answer response option.", null: false
|
10
|
+
field :free_text, GraphQL::Types::Boolean, "Whether if this answer accepts any free text from the user.", null: false
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Forms
|
5
|
+
class QuestionType < Decidim::Api::Types::BaseObject
|
6
|
+
description "A question in a questionnaire"
|
7
|
+
|
8
|
+
implements Decidim::Core::TimestampsInterface
|
9
|
+
|
10
|
+
field :id, GraphQL::Types::ID, "ID of this question", null: false
|
11
|
+
field :body, Decidim::Core::TranslatedFieldType, "What is being asked in this question.", null: false
|
12
|
+
field :description, Decidim::Core::TranslatedFieldType, "The description of this question.", null: true
|
13
|
+
field :mandatory, GraphQL::Types::Boolean, "Whether if this question is mandatory.", null: false
|
14
|
+
field :position, GraphQL::Types::Int, "Order position of the question in the questionnaire", null: true
|
15
|
+
field :max_choices, GraphQL::Types::Int, "On questions with answer options, maximum number of choices the user has", null: true
|
16
|
+
field :max_characters, GraphQL::Types::Int, "On questions with free text answers, maximum number of characters the answer can have (0 if no limit)", null: false
|
17
|
+
field :question_type, GraphQL::Types::String, "Type of question.", null: true
|
18
|
+
field :answer_options, [AnswerOptionType, { null: true }], "List of answer options in multi-choice questions.", null: false
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -4,15 +4,15 @@ module Decidim
|
|
4
4
|
module Forms
|
5
5
|
# This interface should be implemented by any Type that can be linked to a questionnaire
|
6
6
|
# The only requirement is to have an ID and the Type name be the class.name + Type
|
7
|
-
QuestionnaireEntityInterface
|
8
|
-
|
7
|
+
module QuestionnaireEntityInterface
|
8
|
+
include Decidim::Api::Types::BaseInterface
|
9
9
|
description "An interface that can be used in objects with questionnaires"
|
10
10
|
|
11
|
-
field :id,
|
11
|
+
field :id, GraphQL::Types::ID, "ID of this entity", null: false
|
12
12
|
|
13
|
-
resolve_type
|
13
|
+
def self.resolve_type(obj, _ctx)
|
14
14
|
"#{obj.class.name}Type".constantize
|
15
|
-
|
15
|
+
end
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Decidim
|
4
|
+
module Forms
|
5
|
+
class QuestionnaireType < Decidim::Api::Types::BaseObject
|
6
|
+
description "A questionnaire"
|
7
|
+
|
8
|
+
implements Decidim::Core::TimestampsInterface
|
9
|
+
|
10
|
+
field :id, GraphQL::Types::ID, "ID of this questionnaire", null: false
|
11
|
+
field :title, Decidim::Core::TranslatedFieldType, "The title of this questionnaire.", null: false
|
12
|
+
field :description, Decidim::Core::TranslatedFieldType, "The description of this questionnaire.", null: true
|
13
|
+
field :tos, Decidim::Core::TranslatedFieldType, "The Terms of Service for this questionnaire.", null: true
|
14
|
+
field :for_type, GraphQL::Types::String, "Type of entity using this questionnaire.", method: :questionnaire_for_type, null: true
|
15
|
+
field :for_entity, QuestionnaireEntityInterface, "Entity using this questionnaire.", method: :questionnaire_for, null: true
|
16
|
+
field :questions, [Decidim::Forms::QuestionType, { null: true }], "Questions in this questionnaire.", null: false
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -2,8 +2,10 @@
|
|
2
2
|
|
3
3
|
module Decidim
|
4
4
|
module Exporters
|
5
|
+
# rubocop: disable Rails/ApplicationController
|
5
6
|
# A dummy controller to render views while exporting questionnaires
|
6
7
|
class FormPDFControllerHelper < ActionController::Base
|
8
|
+
# rubocop: enable Rails/ApplicationController
|
7
9
|
helper Decidim::TranslationsHelper
|
8
10
|
helper Decidim::Forms::Admin::QuestionnaireAnswersHelper
|
9
11
|
end
|
data/lib/decidim/forms.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require "decidim/forms/admin"
|
4
|
+
require "decidim/forms/api"
|
4
5
|
require "decidim/forms/engine"
|
5
6
|
require "decidim/forms/admin_engine"
|
6
|
-
require "decidim/forms/api"
|
7
7
|
|
8
8
|
module Decidim
|
9
9
|
# This namespace holds the logic of the `Forms`.
|