decidim-forms 0.23.6 → 0.24.0.rc1

Sign up to get free protection for your applications and to get access to all the features.
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