decidim-forms 0.23.6 → 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.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/decidim/forms/forms.js.es6 +4 -4
  3. data/app/commands/decidim/forms/admin/update_questionnaire.rb +2 -1
  4. data/app/commands/decidim/forms/answer_questionnaire.rb +43 -1
  5. data/app/controllers/decidim/forms/admin/concerns/has_questionnaire.rb +10 -2
  6. data/app/controllers/decidim/forms/concerns/has_questionnaire.rb +10 -4
  7. data/app/forms/decidim/forms/admin/question_form.rb +2 -0
  8. data/app/forms/decidim/forms/answer_form.rb +27 -0
  9. data/app/helpers/decidim/forms/admin/application_helper.rb +1 -6
  10. data/app/helpers/decidim/forms/admin/concerns/has_questionnaire_answers_url_helper.rb +3 -3
  11. data/app/jobs/decidim/forms/export_questionnaire_answers_job.rb +1 -1
  12. data/app/models/decidim/forms/answer.rb +8 -0
  13. data/app/models/decidim/forms/question.rb +9 -3
  14. data/app/presenters/decidim/forms/admin/questionnaire_answer_presenter.rb +20 -0
  15. data/app/presenters/decidim/forms/admin/questionnaire_participant_presenter.rb +4 -4
  16. data/app/queries/decidim/forms/questionnaire_user_answers.rb +2 -1
  17. data/app/views/decidim/forms/admin/questionnaires/_form.html.erb +3 -3
  18. data/app/views/decidim/forms/admin/questionnaires/_question.html.erb +11 -0
  19. data/app/views/decidim/forms/admin/questionnaires/edit.html.erb +1 -1
  20. data/app/views/decidim/forms/questionnaires/_answer.html.erb +1 -1
  21. data/app/views/decidim/forms/questionnaires/answers/_files.html.erb +1 -0
  22. data/app/views/decidim/forms/questionnaires/answers/_long_answer.html.erb +1 -1
  23. data/app/views/decidim/forms/questionnaires/answers/_matrix_multiple.html.erb +2 -1
  24. data/app/views/decidim/forms/questionnaires/answers/_matrix_single.html.erb +2 -1
  25. data/app/views/decidim/forms/questionnaires/answers/_multiple_option.html.erb +2 -1
  26. data/app/views/decidim/forms/questionnaires/answers/_short_answer.html.erb +1 -1
  27. data/app/views/decidim/forms/questionnaires/answers/_single_option.html.erb +2 -1
  28. data/app/views/decidim/forms/questionnaires/show.html.erb +1 -1
  29. data/config/initializers/wicked_pdf.rb +2 -0
  30. data/config/locales/ca.yml +4 -2
  31. data/config/locales/cs.yml +8 -2
  32. data/config/locales/de.yml +8 -2
  33. data/config/locales/el.yml +1 -1
  34. data/config/locales/en.yml +8 -2
  35. data/config/locales/es-MX.yml +2 -2
  36. data/config/locales/es-PY.yml +2 -2
  37. data/config/locales/es.yml +2 -2
  38. data/config/locales/fi-plain.yml +8 -2
  39. data/config/locales/fi.yml +8 -2
  40. data/config/locales/fr-CA.yml +8 -2
  41. data/config/locales/fr.yml +8 -2
  42. data/config/locales/gl.yml +0 -3
  43. data/config/locales/it.yml +1 -2
  44. data/config/locales/ja.yml +2 -2
  45. data/config/locales/lv.yml +1 -1
  46. data/config/locales/nl.yml +4 -5
  47. data/config/locales/no.yml +1 -2
  48. data/config/locales/pl.yml +8 -2
  49. data/config/locales/pt.yml +1 -2
  50. data/config/locales/ro-RO.yml +1 -7
  51. data/config/locales/sv.yml +1 -4
  52. data/config/locales/tr-TR.yml +2 -2
  53. data/config/locales/zh-CN.yml +1 -2
  54. data/db/migrate/20210208094442_add_max_characters_to_decidim_forms_questions.rb +7 -0
  55. data/lib/decidim/api/answer_option_type.rb +13 -0
  56. data/lib/decidim/api/question_type.rb +21 -0
  57. data/lib/decidim/api/questionnaire_entity_interface.rb +5 -5
  58. data/lib/decidim/api/questionnaire_type.rb +19 -0
  59. data/lib/decidim/exporters/form_pdf_controller_helper.rb +2 -0
  60. data/lib/decidim/forms/api.rb +3 -0
  61. data/lib/decidim/forms/data_portability_user_answers_serializer.rb +7 -1
  62. data/lib/decidim/forms/test/factories.rb +12 -2
  63. data/lib/decidim/forms/test/shared_examples/has_questionnaire.rb +38 -5
  64. data/lib/decidim/forms/test/shared_examples/manage_questionnaires/add_display_conditions.rb +7 -3
  65. data/lib/decidim/forms/test/shared_examples/manage_questionnaires/add_questions.rb +1 -1
  66. data/lib/decidim/forms/test/shared_examples/manage_questionnaires/update_questions.rb +5 -0
  67. data/lib/decidim/forms/test/shared_examples/manage_questionnaires.rb +5 -4
  68. data/lib/decidim/forms/user_answers_serializer.rb +9 -1
  69. data/lib/decidim/forms/version.rb +1 -1
  70. data/lib/decidim/forms.rb +1 -1
  71. metadata +17 -15
  72. data/app/types/decidim/forms/answer_option_type.rb +0 -14
  73. data/app/types/decidim/forms/question_type.rb +0 -23
  74. data/app/types/decidim/forms/questionnaire_type.rb +0 -22
@@ -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 formulaire
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
- extension_whitelist: 'Formats acceptés :'
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)
@@ -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 formulaire
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
- extension_whitelist: 'Formats acceptés :'
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)
@@ -33,7 +33,6 @@ gl:
33
33
  form:
34
34
  add_question: Engadir pregunta
35
35
  already_answered_warning: Algúns usuarios xa responderon o cuestionario para que non poida modificar as súas preguntas.
36
- title: Editar formulario
37
36
  matrix_row:
38
37
  remove: Quitar
39
38
  statement: Declaración
@@ -51,8 +50,6 @@ gl:
51
50
  errors:
52
51
  answer:
53
52
  body: O corpo non pode estar en branco
54
- files:
55
- extension_whitelist: 'Formatos aceptados:'
56
53
  question_types:
57
54
  long_answer: Resposta longa
58
55
  multiple_option: Múltipla opción
@@ -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
- extension_whitelist: 'Formati accettati:'
112
+ extension_allowlist: 'Formati accettati:'
114
113
  images:
115
114
  dimensions: "%{width} x %{height} px"
116
115
  dimensions_info: 'Questa immagine sarà:'
@@ -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
- extension_whitelist: '承認されたフォーマット:'
111
+ extension_allowlist: '承認されたフォーマット:'
112
112
  images:
113
113
  dimensions: "%{width} x %{height} px"
114
114
  dimensions_info: 'この画像は次のようになります:'
@@ -66,7 +66,7 @@ lv:
66
66
  answer:
67
67
  body: Pamatteksts nevar būt tukšs
68
68
  files:
69
- extension_whitelist: 'Pieņemtie formāti:'
69
+ extension_allowlist: 'Pieņemtie formāti:'
70
70
  images:
71
71
  dimensions: "%{width} x %{height} pikseļi"
72
72
  dimensions_info: 'Attēlam būs:'
@@ -24,8 +24,8 @@ nl:
24
24
  admin:
25
25
  models:
26
26
  components:
27
- description: Beschrijving
28
- tos: Gebruiksvoorwaarden
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: Het formulier is al door sommige gebruikers beantwoord, dus u kunt de vragen niet wijzigen.
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
- extension_whitelist: 'Geaccepteerde formaten:'
112
+ extension_allowlist: 'Geaccepteerde formaten:'
114
113
  images:
115
114
  dimensions: "%{width} x %{height} px"
116
115
  dimensions_info: 'Deze afbeelding zal zijn:'
@@ -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
- extension_whitelist: 'Aksepterte formater:'
83
+ extension_allowlist: 'Aksepterte formater:'
85
84
  images:
86
85
  dimensions: "%{width} x %{height} px"
87
86
  dimensions_info: 'Dette bildet vil være:'
@@ -10,10 +10,15 @@ pl:
10
10
  question_type: Typ
11
11
  questionnaire_question:
12
12
  mandatory: Obowiązkowy
13
+ max_characters: Limit znaków (zostaw 0 jeśli nie chcesz ustawiać limitu)
13
14
  errors:
14
15
  models:
15
16
  answer:
16
17
  attributes:
18
+ add_documents:
19
+ needs_to_be_reattached: Załącz ponownie
20
+ body:
21
+ too_long: jest zbyt długie
17
22
  choices:
18
23
  missing: nie są kompletne
19
24
  too_many: jest zbyt wiele
@@ -78,7 +83,7 @@ pl:
78
83
  collapse: Zwiń wszystkie pytania
79
84
  expand: Rozwiń wszystkie pytania
80
85
  preview: Podgląd
81
- title: Edytuj formularz
86
+ title: Edytuj formularz dla %{questionnaire_for}
82
87
  unpublished_warning: Formularz nie został jeszcze opublikowany. Możesz zmienić jego pytania, ale to spowoduje usunięcie bieżących odpowiedzi.
83
88
  matrix_row:
84
89
  matrix_row: Wiersz
@@ -110,7 +115,7 @@ pl:
110
115
  answer:
111
116
  body: Treść nie może być pusta
112
117
  files:
113
- extension_whitelist: 'Dozwolone formaty:'
118
+ extension_allowlist: 'Dozwolone formaty:'
114
119
  images:
115
120
  dimensions: "%{width} × %{height} px"
116
121
  dimensions_info: 'Rozmiar obrazu będzie wynosił:'
@@ -118,6 +123,7 @@ pl:
118
123
  resize_and_pad: Zmieniony i dopełniony do
119
124
  resize_to_fit: Dopasowany
120
125
  question_types:
126
+ files: Pliki
121
127
  long_answer: Długa odpowiedź
122
128
  matrix_multiple: Macierz (wiele opcji)
123
129
  matrix_single: Macierz (jedna opcja)
@@ -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
- extension_whitelist: 'Formatos aceites:'
109
+ extension_allowlist: 'Formatos aceites:'
111
110
  images:
112
111
  dimensions: "%{width} x %{height} px"
113
112
  dimensions_info: 'Esta imagem será:'
@@ -3,8 +3,6 @@ ro:
3
3
  attributes:
4
4
  answer:
5
5
  body: Răspuns
6
- choices: Opțiuni
7
- selected_choices: Alegeri selectate
8
6
  question:
9
7
  max_choices: Numărul maxim de opțiuni
10
8
  question_type: Tip
@@ -78,7 +76,6 @@ ro:
78
76
  collapse: Restrânge toate întrebările
79
77
  expand: Extinde toate întrebările
80
78
  preview: Previzualizare
81
- title: Editare formular
82
79
  unpublished_warning: Formularul nu este publicat. Puteți modifica întrebările, dar acest lucru va șterge răspunsurile curente.
83
80
  matrix_row:
84
81
  matrix_row: Rând
@@ -105,12 +102,11 @@ ro:
105
102
  up: Sus
106
103
  update:
107
104
  invalid: A apărut o eroare la salvarea formularului.
108
- success: Formular salvat cu succes.
109
105
  errors:
110
106
  answer:
111
107
  body: Corpul nu poate fi gol
112
108
  files:
113
- extension_whitelist: 'Formate acceptate:'
109
+ extension_allowlist: 'Formate acceptate:'
114
110
  images:
115
111
  dimensions: "%{width} x %{height} px"
116
112
  dimensions_info: 'Această imagine va fi:'
@@ -155,10 +151,8 @@ ro:
155
151
  tos_agreement: Prin participare acceptați termenii și condițiile sale de utilizare
156
152
  step_navigation:
157
153
  show:
158
- are_you_sure: Această acțiune nu poate fi anulată și nu veți putea să vă editați răspunsurile. Sunteți sigur?
159
154
  back: Înapoi
160
155
  continue: Continuă
161
- submit: Trimiteți
162
156
  user_answers_serializer:
163
157
  body: Răspuns
164
158
  completion: Finalizare
@@ -3,8 +3,6 @@ sv:
3
3
  attributes:
4
4
  answer:
5
5
  body: Svar
6
- choices: Val
7
- selected_choices: Utvalda val
8
6
  question:
9
7
  max_choices: Högst antal val
10
8
  question_type: Typ
@@ -78,7 +76,6 @@ sv:
78
76
  collapse: Komprimera alla frågor
79
77
  expand: Expandera alla frågor
80
78
  preview: Förhandsgranska
81
- title: Redigera formulär
82
79
  unpublished_warning: Formuläret är inte publicerat. Du kan ändra dess frågor, men det kommer att ta bort aktuella svar.
83
80
  matrix_row:
84
81
  matrix_row: Rad
@@ -109,7 +106,7 @@ sv:
109
106
  answer:
110
107
  body: Kroppen kan inte vara to
111
108
  files:
112
- extension_whitelist: 'Godkända format:'
109
+ extension_allowlist: 'Godkända format:'
113
110
  images:
114
111
  dimensions: "%{width} x %{height} px"
115
112
  dimensions_info: 'Denna bild kommer att vara:'
@@ -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: Formu düzenle
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
- extension_whitelist: 'Kabul edilen biçimler:'
113
+ extension_allowlist: 'Kabul edilen biçimler:'
114
114
  images:
115
115
  dimensions: "%{width} x %{height} px"
116
116
  dimensions_info: 'Bu resim:'
@@ -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
- extension_whitelist: '接受的格式:'
112
+ extension_allowlist: '接受的格式:'
114
113
  images:
115
114
  dimensions: "%{width} x %{height} px"
116
115
  dimensions_info: '这张图片将是:'
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddMaxCharactersToDecidimFormsQuestions < ActiveRecord::Migration[5.2]
4
+ def change
5
+ add_column :decidim_forms_questions, :max_characters, :integer, default: 0
6
+ end
7
+ end
@@ -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 = GraphQL::InterfaceType.define do
8
- name "QuestionnaireEntityInterface"
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, !types.ID, "ID of this entity"
11
+ field :id, GraphQL::Types::ID, "ID of this entity", null: false
12
12
 
13
- resolve_type ->(obj, _ctx) {
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