decidim-forms 0.29.7 → 0.30.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 (110) hide show
  1. checksums.yaml +4 -4
  2. data/app/cells/decidim/forms/step_navigation_cell.rb +18 -5
  3. data/app/commands/decidim/forms/admin/update_questionnaire.rb +1 -82
  4. data/app/commands/decidim/forms/admin/update_questions.rb +109 -0
  5. data/app/commands/decidim/forms/answer_questionnaire.rb +10 -3
  6. data/app/controllers/decidim/forms/admin/concerns/has_questionnaire.rb +39 -3
  7. data/app/controllers/decidim/forms/admin/concerns/has_questionnaire_answers.rb +2 -2
  8. data/app/controllers/decidim/forms/concerns/has_questionnaire.rb +12 -4
  9. data/app/forms/decidim/forms/admin/display_condition_form.rb +1 -1
  10. data/app/forms/decidim/forms/admin/questionnaire_form.rb +0 -9
  11. data/app/forms/decidim/forms/admin/questions_form.rb +18 -0
  12. data/app/forms/decidim/forms/answer_choice_form.rb +5 -0
  13. data/app/forms/decidim/forms/answer_form.rb +1 -0
  14. data/app/forms/decidim/forms/questionnaire_form.rb +7 -0
  15. data/app/helpers/decidim/forms/admin/concerns/has_questionnaire_answers_pagination_helper.rb +1 -1
  16. data/app/helpers/decidim/forms/admin/concerns/has_questionnaire_answers_url_helper.rb +5 -5
  17. data/app/jobs/decidim/forms/export_questionnaire_answers_job.rb +5 -1
  18. data/app/models/decidim/forms/answer_choice.rb +0 -2
  19. data/app/models/decidim/forms/answer_option.rb +1 -1
  20. data/app/models/decidim/forms/question.rb +10 -0
  21. data/app/packs/entrypoints/decidim_forms.js +0 -1
  22. data/app/packs/entrypoints/decidim_forms_admin.js +6 -0
  23. data/app/packs/src/decidim/forms/admin/publish_answers_buttons.js +72 -0
  24. data/app/packs/src/decidim/forms/forms.js +4 -25
  25. data/app/presenters/decidim/forms/admin/questionnaire_participant_presenter.rb +1 -1
  26. data/app/presenters/decidim/forms/admin_log/question_presenter.rb +31 -0
  27. data/app/queries/decidim/forms/questionnaire_user_answers.rb +1 -1
  28. data/app/views/decidim/forms/admin/questionnaires/_answer_option_template.html.erb +1 -1
  29. data/app/views/decidim/forms/admin/questionnaires/_display_condition_template.html.erb +1 -1
  30. data/app/views/decidim/forms/admin/questionnaires/_form.html.erb +0 -89
  31. data/app/views/decidim/forms/admin/questionnaires/_matrix_row_template.html.erb +1 -1
  32. data/app/views/decidim/forms/admin/questionnaires/_question.html.erb +3 -3
  33. data/app/views/decidim/forms/admin/questionnaires/_questions_form.html.erb +80 -0
  34. data/app/views/decidim/forms/admin/questionnaires/edit.html.erb +0 -20
  35. data/app/views/decidim/forms/admin/questionnaires/edit_questions.html.erb +47 -0
  36. data/app/views/decidim/forms/questionnaires/_answer.html.erb +1 -1
  37. data/app/views/decidim/forms/questionnaires/_questionnaire.html.erb +8 -1
  38. data/app/views/decidim/forms/questionnaires/answers/_files.html.erb +1 -1
  39. data/app/views/decidim/forms/questionnaires/answers/_long_answer.html.erb +1 -1
  40. data/app/views/decidim/forms/questionnaires/answers/_short_answer.html.erb +1 -1
  41. data/app/views/decidim/forms/questionnaires/answers/_sorting.html.erb +12 -6
  42. data/app/views/decidim/forms/questionnaires/edit.html.erb +47 -0
  43. data/app/views/decidim/forms/questionnaires/show.html.erb +13 -2
  44. data/config/assets.rb +1 -2
  45. data/config/locales/ar.yml +16 -6
  46. data/config/locales/bg.yml +38 -4
  47. data/config/locales/ca.yml +57 -17
  48. data/config/locales/cs.yml +48 -8
  49. data/config/locales/de.yml +55 -15
  50. data/config/locales/el.yml +36 -3
  51. data/config/locales/en.yml +45 -5
  52. data/config/locales/es-MX.yml +59 -19
  53. data/config/locales/es-PY.yml +59 -19
  54. data/config/locales/es.yml +58 -18
  55. data/config/locales/eu.yml +54 -14
  56. data/config/locales/fi-plain.yml +50 -10
  57. data/config/locales/fi.yml +50 -10
  58. data/config/locales/fr-CA.yml +48 -16
  59. data/config/locales/fr.yml +47 -15
  60. data/config/locales/ga-IE.yml +7 -5
  61. data/config/locales/gl.yml +8 -5
  62. data/config/locales/hu.yml +10 -4
  63. data/config/locales/id-ID.yml +7 -7
  64. data/config/locales/it.yml +27 -6
  65. data/config/locales/ja.yml +8 -13
  66. data/config/locales/lb.yml +28 -4
  67. data/config/locales/lt.yml +36 -3
  68. data/config/locales/lv.yml +11 -4
  69. data/config/locales/nl.yml +27 -4
  70. data/config/locales/no.yml +27 -0
  71. data/config/locales/pl.yml +38 -3
  72. data/config/locales/pt-BR.yml +32 -3
  73. data/config/locales/pt.yml +27 -3
  74. data/config/locales/ro-RO.yml +44 -17
  75. data/config/locales/ru.yml +1 -8
  76. data/config/locales/sk.yml +10 -7
  77. data/config/locales/sl.yml +7 -0
  78. data/config/locales/sv.yml +12 -16
  79. data/config/locales/tr-TR.yml +24 -4
  80. data/config/locales/val-ES.yml +2 -0
  81. data/config/locales/zh-CN.yml +23 -3
  82. data/config/locales/zh-TW.yml +35 -2
  83. data/db/migrate/20190315203056_add_session_token_to_decidim_forms_answers.rb +1 -1
  84. data/db/migrate/20241122142230_add_survey_answers_published_at_to_questions.rb +7 -0
  85. data/decidim-forms.gemspec +1 -2
  86. data/lib/decidim/api/answer_option_type.rb +1 -1
  87. data/lib/decidim/api/question_type.rb +4 -4
  88. data/lib/decidim/api/questionnaire_type.rb +4 -4
  89. data/lib/decidim/exporters/form_pdf.rb +114 -11
  90. data/lib/decidim/forms/download_your_data_user_answers_serializer.rb +0 -4
  91. data/lib/decidim/forms/test/factories.rb +2 -2
  92. data/lib/decidim/forms/test/shared_examples/has_questionnaire.rb +46 -7
  93. data/lib/decidim/forms/test/shared_examples/manage_questionnaire_answers.rb +17 -17
  94. data/lib/decidim/forms/test/shared_examples/manage_questionnaires/add_display_conditions.rb +19 -21
  95. data/lib/decidim/forms/test/shared_examples/manage_questionnaires/add_questions.rb +70 -94
  96. data/lib/decidim/forms/test/shared_examples/manage_questionnaires/update_display_conditions.rb +15 -18
  97. data/lib/decidim/forms/test/shared_examples/manage_questionnaires/update_questions.rb +90 -125
  98. data/lib/decidim/forms/test/shared_examples/manage_questionnaires.rb +4 -25
  99. data/lib/decidim/forms/version.rb +1 -1
  100. data/lib/decidim/forms.rb +0 -1
  101. metadata +18 -33
  102. data/app/packs/entrypoints/decidim_questionnaire_answers_pdf.js +0 -1
  103. data/app/packs/entrypoints/decidim_questionnaire_answers_pdf.scss +0 -1
  104. data/app/packs/stylesheets/decidim/forms/questionnaire-answers-pdf.scss +0 -69
  105. data/app/views/decidim/forms/admin/questionnaires/answers/export/_answer.html.erb +0 -31
  106. data/app/views/decidim/forms/admin/questionnaires/answers/export/pdf.html.erb +0 -13
  107. data/app/views/layouts/decidim/forms/admin/questionnaires/questionnaire_answers.html.erb +0 -12
  108. data/config/initializers/wicked_pdf.rb +0 -26
  109. data/config/locales/ca-IT.yml +0 -198
  110. data/lib/decidim/exporters/form_pdf_controller_helper.rb +0 -13
@@ -11,28 +11,29 @@ ro:
11
11
  question_type: Tip
12
12
  questionnaire_question:
13
13
  mandatory: Obligatoriu
14
- max_characters: Limita de caractere (lăsați 0 dacă nu este nicio limită)
14
+ max_characters: Limita de caractere (lăsați la 0 dacă nu este nicio limită)
15
15
  errors:
16
16
  models:
17
17
  answer:
18
18
  attributes:
19
+ add_documents:
20
+ needs_to_be_reattached: Trebuie să fie reatașate
19
21
  body:
20
22
  too_long: este prea lung
21
23
  choices:
22
- too_many: Puteți alege un maxim de %{count}.
23
- questionnaire:
24
- request_invalid: A apărut o eroare la procesarea cererii. Te rugăm să încerci din nou.
24
+ missing: nu sunt completate
25
25
  decidim:
26
26
  forms:
27
27
  admin:
28
28
  models:
29
29
  components:
30
+ allow_editing_answers: Permiteți utilizatorilor înregistrați să modifice propriile răspunsuri la sondaj
30
31
  description: Descriere
31
- tos: Termenii serviciului
32
+ tos: Condiţii de utilizare
32
33
  questionnaires:
33
34
  actions:
34
35
  back: Înapoi la întrebări
35
- show: Afișați răspunsurile
36
+ show: Afișează răspunsurile
36
37
  answer_option:
37
38
  answer_option: Opțiune de răspuns
38
39
  free_text: Text liber
@@ -41,13 +42,18 @@ ro:
41
42
  answers:
42
43
  actions:
43
44
  back: Înapoi la răspunsuri
44
- export: Exportați
45
+ export: Exportă
45
46
  next: Următoarea ›
46
47
  previous: "‹ Anterioara"
47
- show: Afișați răspunsurile
48
+ show: Afişează răspunsurile
48
49
  empty: Niciun răspuns încă
50
+ export:
51
+ answer:
52
+ title: 'Răspuns #%{number}'
49
53
  export_response:
50
54
  title: survey_user_answers_%{token}
55
+ index:
56
+ title: "%{total} răspunsuri în total"
51
57
  show:
52
58
  title: 'Răspuns #%{number}'
53
59
  display_condition:
@@ -56,7 +62,7 @@ ro:
56
62
  condition_type: Condiție
57
63
  condition_types:
58
64
  answered: Răspunse
59
- equal: Egal
65
+ equal: Egal cu
60
66
  match: Include textul
61
67
  not_answered: Fără răspuns
62
68
  not_equal: Nu este egal cu
@@ -70,16 +76,16 @@ ro:
70
76
  select_condition_type: Selectați un tip de condiție
71
77
  edit:
72
78
  save: Salvează
73
- title: Modificați chestionar
79
+ title: Editare chestionar
74
80
  form:
75
81
  add_question: Adaugă întrebare
76
- collapse: Restrângeți toate întrebările
82
+ collapse: Restrânge toate întrebările
77
83
  expand: Extinde toate întrebările
78
84
  preview: Previzualizează
79
- title: Modificați chestionarul pentru %{questionnaire_for}
85
+ title: Actualizați chestionarul pentru %{questionnaire_for}
80
86
  matrix_row:
81
87
  matrix_row: Rând
82
- remove: Eliminați
88
+ remove: Elimină
83
89
  statement: Declarație
84
90
  question:
85
91
  add_answer_option: Adaugă opțiune de răspuns
@@ -101,10 +107,10 @@ ro:
101
107
  separator: Separator
102
108
  up: Mergi în sus
103
109
  title_and_description:
104
- collapse: Restrângeți
110
+ collapse: Restrânge
105
111
  description: Descriere
106
112
  down: Mergi în jos
107
- expand: Extindeți
113
+ expand: Extinde
108
114
  remove: Șterge
109
115
  title: Titlu
110
116
  title_and_description: Titlu și descriere
@@ -115,6 +121,9 @@ ro:
115
121
  admin_log:
116
122
  questionnaire:
117
123
  update: "%{user_name} a actualizat chestionarul %{resource_name}"
124
+ errors:
125
+ answer:
126
+ body: Conținutul nu poate fi gol
118
127
  images:
119
128
  dimensions: "%{width} x %{height} px"
120
129
  processors:
@@ -130,21 +139,30 @@ ro:
130
139
  single_option: Opțiune unică
131
140
  sorting: Sortare
132
141
  title_and_description: Titlu și descriere
142
+ questionnaire_answer_presenter:
143
+ download_attachment: Descărcare atașament
133
144
  questionnaires:
134
145
  answer:
135
146
  invalid: A apărut o problemă la completarea chestionarului.
147
+ max_choices_alert: Există prea multe alegeri selectate
136
148
  success: Chestionarul a fost completat cu succes.
137
149
  question:
138
150
  max_choices: 'Număr maxim de alegeri: %{n}'
139
151
  show:
140
152
  answer_questionnaire:
141
- title: Completați formularul
153
+ already_have_an_account?: Ai deja un cont?
154
+ are_you_new?: Utilizator nou?
155
+ sign_up_description: Creați un cont de participant pentru a participa la sondaj
156
+ title: Completează chestionarul
142
157
  current_step: Pasul %{step}
143
158
  empty: Nicio întrebare configurată pentru acest formular încă.
144
159
  of_total_steps: din %{total_steps}
145
160
  questionnaire_answered:
146
161
  body: Ai completat deja la acest chestionar.
147
162
  title: Un răspuns a fost deja trimis
163
+ questionnaire_answered_edit:
164
+ body: Ați răspuns deja la acest sondaj. %{link}
165
+ edit: Modificați răspunsurile
148
166
  questionnaire_closed:
149
167
  body: Chestionarul este închis și nu mai poate fi completat.
150
168
  title: Formular închis
@@ -159,12 +177,21 @@ ro:
159
177
  tos_agreement: Prin participare accepți Termenii și condițiile sale de utilizare
160
178
  step_navigation:
161
179
  show:
162
- are_you_sure: Această acțiune nu poate fi anulată și nu veți putea să modificați răspunsurile. Sunteți sigur?
180
+ are_you_sure_edit: Veți putea să modificați răspunsurile. Sunteți sigur?
181
+ are_you_sure_edit_guest: Dacă doriți să modificați răspunsurile după ce veți răspunde, atunci trebuie să vă autentificați sau să creați un cont.
182
+ are_you_sure_no_edit: Această acțiune nu poate fi anulată și nu veți putea să vă modificați răspunsurile. Sunteți sigur?
163
183
  back: Înapoi
164
184
  continue: Continuă
185
+ disallowed: Nu aveți permisiunea să vă modificați răspunsurile.
165
186
  submit: Trimite
166
187
  user_answers_serializer:
167
188
  body: Răspuns
189
+ completion: Finalizare
168
190
  created_at: Răspuns completat la
169
191
  id: ID răspuns
192
+ ip_hash: IP Hash
170
193
  question: Întrebare
194
+ registered: Înregistrat
195
+ session_token: Identificator utilizator
196
+ unregistered: Neînregistrat
197
+ user_status: Stadiul utilizatorului
@@ -10,6 +10,7 @@ ru:
10
10
  questionnaires:
11
11
  answer_option:
12
12
  answer_option: Вариант ответа
13
+ free_text: Произвольный текст
13
14
  remove: Удалить
14
15
  edit:
15
16
  save: Сохранить
@@ -24,12 +25,6 @@ ru:
24
25
  question: Вопрос
25
26
  remove: Удалить
26
27
  up: Вверх
27
- separator:
28
- down: Вниз
29
- up: Вверх
30
- title_and_description:
31
- down: Вниз
32
- up: Вверх
33
28
  update:
34
29
  invalid: При попытке сохранить форму произошли ошибки.
35
30
  question_types:
@@ -48,5 +43,3 @@ ru:
48
43
  step_navigation:
49
44
  show:
50
45
  submit: Отправить
51
- user_answers_serializer:
52
- question: Вопрос
@@ -9,6 +9,12 @@ sk:
9
9
  question_type: Typ
10
10
  questionnaire_question:
11
11
  mandatory: Povinné
12
+ errors:
13
+ models:
14
+ answer:
15
+ attributes:
16
+ choices:
17
+ missing: nie je kompletné
12
18
  decidim:
13
19
  forms:
14
20
  admin:
@@ -19,6 +25,7 @@ sk:
19
25
  questionnaires:
20
26
  answer_option:
21
27
  answer_option: Možnosť odpovede
28
+ free_text: Voľný text
22
29
  remove: Odstrániť
23
30
  statement: Prehlásenie
24
31
  edit:
@@ -37,12 +44,6 @@ sk:
37
44
  remove: Odstrániť
38
45
  statement: Prehlásenie
39
46
  up: Hore
40
- separator:
41
- down: Nadol
42
- up: Hore
43
- title_and_description:
44
- down: Nadol
45
- up: Hore
46
47
  update:
47
48
  invalid: Vyskytol sa problém s ukladaním formulára.
48
49
  question_types:
@@ -76,4 +77,6 @@ sk:
76
77
  user_answers_serializer:
77
78
  created_at: Odpovedané na
78
79
  id: ID odpovede
79
- question: Otázka
80
+ registered: Registrovaný
81
+ unregistered: Neregistrovaný
82
+ user_status: Status Užívateľa
@@ -4,3 +4,10 @@ sl:
4
4
  attributes:
5
5
  answer:
6
6
  body: Odgovor
7
+ decidim:
8
+ forms:
9
+ admin:
10
+ questionnaires:
11
+ answers:
12
+ actions:
13
+ export: Izvozi
@@ -40,7 +40,7 @@ sv:
40
40
  answer_option: Svarsalternativ
41
41
  free_text: Fritext
42
42
  remove: Ta bort
43
- statement: Titel
43
+ statement: Påstående
44
44
  answers:
45
45
  actions:
46
46
  back: Tillbaka till svar
@@ -78,12 +78,9 @@ sv:
78
78
  select_condition_type: Välj en typ av villkor
79
79
  edit:
80
80
  save: Spara
81
- title: Redigera frågeformulär
81
+ title: Redigera enkät
82
82
  form:
83
83
  add_question: Lägg till fråga
84
- add_separator: Lägg till avgränsare
85
- add_title_and_description: Lägg till titel och beskrivning
86
- already_answered_warning: Frågeformuläret har redan besvarats av användare och du kan inte längre ändra frågorna.
87
84
  collapse: Dölj alla frågor
88
85
  expand: Visa alla frågor
89
86
  preview: Förhandsgranska
@@ -91,24 +88,24 @@ sv:
91
88
  matrix_row:
92
89
  matrix_row: Rad
93
90
  remove: Ta bort
94
- statement: Titel
91
+ statement: Påstående
95
92
  question:
96
93
  add_answer_option: Lägg till svarsalternativ
97
94
  add_display_condition: Lägg till visningsvillkor
98
95
  add_display_condition_info: Spara formuläret för att konfigurera visningsvillkor
99
96
  add_matrix_row: Lägg till rad
100
- any: Valfritt
97
+ any: Någon
101
98
  collapse: Dölj
102
99
  description: Beskrivning
103
- down: Ner
100
+ down: Ned
104
101
  expand: Visa
105
102
  question: Fråga
106
103
  remove: Ta bort
107
- statement: Titel
104
+ statement: Påstående
108
105
  up: Upp
109
106
  separator:
110
107
  down: Ner
111
- remove: Ta bort
108
+ remove: Radera
112
109
  separator: Avgränsare
113
110
  up: Upp
114
111
  title_and_description:
@@ -116,7 +113,7 @@ sv:
116
113
  description: Beskrivning
117
114
  down: Ner
118
115
  expand: Visa
119
- remove: Ta bort
116
+ remove: Radera
120
117
  title: Titel
121
118
  title_and_description: Titel och beskrivning
122
119
  up: Upp
@@ -149,7 +146,7 @@ sv:
149
146
  questionnaires:
150
147
  answer:
151
148
  invalid: Det gick inte att besvara formuläret.
152
- max_choices_alert: Du har valt för många alternativ
149
+ max_choices_alert: För många alternativ har valts
153
150
  success: Formuläret har besvarats.
154
151
  question:
155
152
  max_choices: 'Högst antal val: %{n}'
@@ -177,19 +174,18 @@ sv:
177
174
  title: JavaScript är inaktiverat
178
175
  questionnaire_not_published:
179
176
  body: Formulär är ännu inte publicerat.
180
- tos_agreement: Genom att fortsätta godkänner du villkoren för anmälan
177
+ tos_agreement: Genom att delta godkänner du användarvillkoren
181
178
  step_navigation:
182
179
  show:
183
- are_you_sure: Efter att du har skickat in anmälan kan du inte ändra i den. Vill du fortsätta?
184
180
  back: Tillbaka
185
181
  continue: Fortsätt
186
- submit: Skicka
182
+ submit: Skicka in
187
183
  user_answers_serializer:
188
184
  body: Svar
189
185
  completion: Slutfört
190
186
  created_at: Besvarad
191
187
  id: Svars-ID
192
- ip_hash: IP-hash
188
+ ip_hash: IP Hash
193
189
  question: Fråga
194
190
  registered: Registrerad
195
191
  session_token: Identifierare för användare
@@ -4,11 +4,19 @@ tr:
4
4
  attributes:
5
5
  answer:
6
6
  body: Cevap
7
+ choices: Seçenekler
8
+ selected_choices: Seçilmiş seçenekler
7
9
  question:
8
10
  max_choices: Maksimum seçenek sayısı
9
11
  question_type: tip
10
12
  questionnaire_question:
11
13
  mandatory: Zorunlu
14
+ errors:
15
+ models:
16
+ answer:
17
+ attributes:
18
+ choices:
19
+ missing: tamamlanmadı
12
20
  decidim:
13
21
  forms:
14
22
  admin:
@@ -22,14 +30,22 @@ tr:
22
30
  show: Yanıtları göster
23
31
  answer_option:
24
32
  answer_option: Cevap seçeneği
33
+ free_text: Ücretsiz Metin
25
34
  remove: Kaldır
26
35
  statement: Beyan
27
36
  answers:
28
37
  actions:
38
+ back: Yanıtlara dön
39
+ export: Dışa aktar
29
40
  show: Cevapları göster
30
41
  empty: Henüz cevap bulunmuyor
42
+ export:
43
+ answer:
44
+ title: '#%{number} yanıt'
31
45
  export_response:
32
46
  title: survey_user_answers _%{token}
47
+ index:
48
+ title: "%{total} toplam yanıt"
33
49
  show:
34
50
  title: '%{number} cevap'
35
51
  display_condition:
@@ -81,10 +97,7 @@ tr:
81
97
  down: Aşağı
82
98
  remove: Kaldır
83
99
  separator: Ayraç
84
- up: yukarı
85
- title_and_description:
86
- down: Aşağı
87
- up: yukarı
100
+ up: Yukarı
88
101
  update:
89
102
  invalid: Formu kaydederken bir sorun oluştu.
90
103
  success: Başarıyla kaydedildi.
@@ -101,6 +114,7 @@ tr:
101
114
  questionnaires:
102
115
  answer:
103
116
  invalid: Formu yanıtlarken bir sorun oluştu.
117
+ max_choices_alert: Çok fazla seçenek seçilmiş
104
118
  success: Form başarıyla cevaplandı.
105
119
  question:
106
120
  max_choices: 'Maksimum seçenek: %{n}'
@@ -132,6 +146,12 @@ tr:
132
146
  submit: Gönder
133
147
  user_answers_serializer:
134
148
  body: Cevap
149
+ completion: Tamamlanma
135
150
  created_at: Yanıtlandı
136
151
  id: Cevap kimliği
152
+ ip_hash: IP Hash
137
153
  question: Soru
154
+ registered: Kayıtlı
155
+ session_token: Kullanıcı tanımlayıcı
156
+ unregistered: Kayıtlı değil
157
+ user_status: Kullanıcı durumu
@@ -7,9 +7,11 @@ val:
7
7
  title_and_description:
8
8
  collapse: Redueix
9
9
  description: Descripció
10
+ down: Baixar
10
11
  expand: Expandeix
11
12
  remove: Elimina
12
13
  title: Títol
13
14
  title_and_description: Títol i descripció
15
+ up: Pujar
14
16
  question_types:
15
17
  title_and_description: Títol i descripció
@@ -4,11 +4,19 @@ zh-CN:
4
4
  attributes:
5
5
  answer:
6
6
  body: 答案
7
+ choices: 选择
8
+ selected_choices: 选定的选择
7
9
  question:
8
10
  max_choices: 选择的最大数量
9
11
  question_type: 类型
10
12
  questionnaire_question:
11
13
  mandatory: Mandatory
14
+ errors:
15
+ models:
16
+ answer:
17
+ attributes:
18
+ choices:
19
+ missing: 不完成
12
20
  decidim:
13
21
  forms:
14
22
  admin:
@@ -22,14 +30,22 @@ zh-CN:
22
30
  show: 显示回复
23
31
  answer_option:
24
32
  answer_option: 答案选项
33
+ free_text: 免费文本
25
34
  remove: 删除
26
35
  statement: 声明
27
36
  answers:
28
37
  actions:
38
+ back: 回到回应
39
+ export: 导出
29
40
  show: 显示答案
30
41
  empty: 尚无答案
42
+ export:
43
+ answer:
44
+ title: '回复 #%{number}'
31
45
  export_response:
32
46
  title: survey_user_answers_%{token}
47
+ index:
48
+ title: "%{total} 个回复总数"
33
49
  show:
34
50
  title: '答案 #%{number}'
35
51
  display_condition:
@@ -81,9 +97,6 @@ zh-CN:
81
97
  remove: 删除
82
98
  separator: 分隔符
83
99
  up: 上移
84
- title_and_description:
85
- down: 向下
86
- up: 上移
87
100
  update:
88
101
  invalid: 保存表单时出错。
89
102
  success: 表单保存成功。
@@ -100,6 +113,7 @@ zh-CN:
100
113
  questionnaires:
101
114
  answer:
102
115
  invalid: 回答表单时出现问题。
116
+ max_choices_alert: 选择了太多选项
103
117
  success: 表单回答成功。
104
118
  question:
105
119
  max_choices: '最大选择数: %{n}'
@@ -130,6 +144,12 @@ zh-CN:
130
144
  submit: 提交
131
145
  user_answers_serializer:
132
146
  body: 答案
147
+ completion: 完成
133
148
  created_at: 回答于
134
149
  id: 答案 ID
150
+ ip_hash: IP哈希
135
151
  question: 问
152
+ registered: 已注册
153
+ session_token: 用户标识符
154
+ unregistered: 未注册
155
+ user_status: 用户状态
@@ -4,6 +4,8 @@ zh-TW:
4
4
  attributes:
5
5
  answer:
6
6
  body: 回答
7
+ choices: 選項
8
+ selected_choices: 已選擇的選項
7
9
  question:
8
10
  max_choices: 選擇的最大數量
9
11
  question_type: 類別
@@ -12,8 +14,14 @@ zh-TW:
12
14
  max_characters: 字元限制(如果不需要限制,請設為0)
13
15
  errors:
14
16
  models:
15
- questionnaire:
16
- request_invalid: 處理請求時發生錯誤。請再試一次。
17
+ answer:
18
+ attributes:
19
+ add_documents:
20
+ needs_to_be_reattached: 需要重新附加
21
+ body:
22
+ too_long: 太長
23
+ choices:
24
+ missing: 尚未完成
17
25
  decidim:
18
26
  forms:
19
27
  admin:
@@ -27,14 +35,24 @@ zh-TW:
27
35
  show: 顯示回應
28
36
  answer_option:
29
37
  answer_option: 答案選項:
38
+ free_text: 免費文字
30
39
  remove: 移除
31
40
  statement: 聲明
32
41
  answers:
33
42
  actions:
43
+ back: 返回回覆
44
+ export: 匯出
45
+ next: 下一個 ›
46
+ previous: "‹ 上一篇"
34
47
  show: 顯示答案
35
48
  empty: 目前尚未回答
49
+ export:
50
+ answer:
51
+ title: '回應 #%{number}'
36
52
  export_response:
37
53
  title: 調查問卷使用者回答_%{token}
54
+ index:
55
+ title: "%{total} 個回應總數"
38
56
  show:
39
57
  title: '回答#%{number}'
40
58
  display_condition:
@@ -102,6 +120,9 @@ zh-TW:
102
120
  admin_log:
103
121
  questionnaire:
104
122
  update: "%{user_name} 更新了 %{resource_name} 問卷模板"
123
+ errors:
124
+ answer:
125
+ body: 內容不能為空
105
126
  images:
106
127
  dimensions: "%{width} x %{height} 像素"
107
128
  processors:
@@ -117,14 +138,20 @@ zh-TW:
117
138
  single_option: 單選
118
139
  sorting: 排序中
119
140
  title_and_description: 標題和描述
141
+ questionnaire_answer_presenter:
142
+ download_attachment: 下載附件
120
143
  questionnaires:
121
144
  answer:
122
145
  invalid: 回答表單時出現問題
146
+ max_choices_alert: 選擇的項目太多了
123
147
  success: 表單已成功回答
124
148
  question:
125
149
  max_choices: '最多選擇數量: %{n}'
126
150
  show:
127
151
  answer_questionnaire:
152
+ already_have_an_account?: 已經有帳號了嗎?
153
+ are_you_new?: 新用戶?
154
+ sign_up_description: 建立參與者帳號以填寫問卷
128
155
  title: 回答表單
129
156
  current_step: 步驟%{step}
130
157
  of_total_steps: 的%{total_steps}
@@ -150,6 +177,12 @@ zh-TW:
150
177
  submit: 提交
151
178
  user_answers_serializer:
152
179
  body: 回答
180
+ completion: 完成
153
181
  created_at: 回答時間
154
182
  id: 回答 ID
183
+ ip_hash: IP Hash
155
184
  question: 問題
185
+ registered: 已註冊
186
+ session_token: 使用者識別碼
187
+ unregistered: 未註冊
188
+ user_status: 用戶狀態
@@ -10,7 +10,7 @@ class AddSessionTokenToDecidimFormsAnswers < ActiveRecord::Migration[5.2]
10
10
  add_index :decidim_forms_answers, :session_token
11
11
 
12
12
  Answer.find_each do |answer|
13
- answer.session_token = Digest::MD5.hexdigest("#{answer.decidim_user_id}-#{Rails.application.secrets.secret_key_base}")
13
+ answer.session_token = Digest::MD5.hexdigest("#{answer.decidim_user_id}-#{Rails.application.secret_key_base}")
14
14
  answer.save!
15
15
  end
16
16
  end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AddSurveyAnswersPublishedAtToQuestions < ActiveRecord::Migration[7.0]
4
+ def change
5
+ add_column :decidim_forms_questions, :survey_answers_published_at, :datetime, index: true
6
+ end
7
+ end
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
19
19
  "homepage_uri" => "https://decidim.org",
20
20
  "source_code_uri" => "https://github.com/decidim/decidim"
21
21
  }
22
- s.required_ruby_version = "~> 3.2.0"
22
+ s.required_ruby_version = "~> 3.3.0"
23
23
 
24
24
  s.name = "decidim-forms"
25
25
  s.summary = "Decidim forms"
@@ -33,7 +33,6 @@ Gem::Specification.new do |s|
33
33
  end
34
34
 
35
35
  s.add_dependency "decidim-core", Decidim::Forms.version
36
- s.add_dependency "wicked_pdf", "~> 2.1"
37
36
 
38
37
  s.add_development_dependency "decidim-admin", Decidim::Forms.version
39
38
  s.add_development_dependency "decidim-dev", Decidim::Forms.version
@@ -5,9 +5,9 @@ module Decidim
5
5
  class AnswerOptionType < Decidim::Api::Types::BaseObject
6
6
  description "An answer option for a multi-choice question in a questionnaire"
7
7
 
8
- field :id, GraphQL::Types::ID, "ID of this answer option", null: false
9
8
  field :body, Decidim::Core::TranslatedFieldType, "The text answer response option.", null: false
10
9
  field :free_text, GraphQL::Types::Boolean, "Whether if this answer accepts any free text from the user.", null: false
10
+ field :id, GraphQL::Types::ID, "ID of this answer option", null: false
11
11
  end
12
12
  end
13
13
  end
@@ -7,15 +7,15 @@ module Decidim
7
7
 
8
8
  implements Decidim::Core::TimestampsInterface
9
9
 
10
- field :id, GraphQL::Types::ID, "ID of this question", null: false
10
+ field :answer_options, [AnswerOptionType, { null: true }], "List of answer options in multi-choice questions.", null: false
11
11
  field :body, Decidim::Core::TranslatedFieldType, "What is being asked in this question.", null: false
12
12
  field :description, Decidim::Core::TranslatedFieldType, "The description of this question.", null: true
13
+ field :id, GraphQL::Types::ID, "ID of this question", null: false
13
14
  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
15
  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
16
+ field :max_choices, GraphQL::Types::Int, "On questions with answer options, maximum number of choices the user has", null: true
17
+ field :position, GraphQL::Types::Int, "Order position of the question in the questionnaire", null: true
17
18
  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
19
  end
20
20
  end
21
21
  end
@@ -7,13 +7,13 @@ module Decidim
7
7
 
8
8
  implements Decidim::Core::TimestampsInterface
9
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
10
  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
11
  field :for_entity, QuestionnaireEntityInterface, "Entity using this questionnaire.", method: :questionnaire_for, null: true
12
+ field :for_type, GraphQL::Types::String, "Type of entity using this questionnaire.", method: :questionnaire_for_type, null: true
13
+ field :id, GraphQL::Types::ID, "ID of this questionnaire", null: false
16
14
  field :questions, [Decidim::Forms::QuestionType, { null: true }], "Questions in this questionnaire.", null: false
15
+ field :title, Decidim::Core::TranslatedFieldType, "The title of this questionnaire.", null: false
16
+ field :tos, Decidim::Core::TranslatedFieldType, "The Terms of Service for this questionnaire.", null: true
17
17
  end
18
18
  end
19
19
  end