decidim-surveys 0.27.6 → 0.28.0.rc4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +1 -1
  3. data/app/cells/decidim/surveys/survey_activity_cell.rb +1 -4
  4. data/app/controllers/decidim/surveys/admin/surveys_controller.rb +7 -1
  5. data/app/controllers/decidim/surveys/surveys_controller.rb +3 -1
  6. data/app/helpers/decidim/surveys/survey_helper.rb +1 -3
  7. data/app/jobs/decidim/surveys/clean_survey_answers_job.rb +1 -1
  8. data/app/jobs/decidim/surveys/settings_change_job.rb +2 -2
  9. data/app/mailers/decidim/surveys/survey_confirmation_mailer.rb +39 -0
  10. data/app/serializers/decidim/surveys/data_serializer.rb +1 -1
  11. data/app/views/decidim/surveys/admin/component/_actions.html.erb +17 -16
  12. data/app/views/decidim/surveys/admin/surveys/edit.html.erb +40 -0
  13. data/app/views/decidim/surveys/survey_confirmation_mailer/confirmation.html.erb +3 -0
  14. data/app/views/decidim/surveys/surveys/no_permission.html.erb +1 -1
  15. data/config/assets.rb +0 -1
  16. data/config/locales/ar.yml +0 -2
  17. data/config/locales/bg.yml +0 -7
  18. data/config/locales/ca.yml +9 -4
  19. data/config/locales/cs.yml +7 -2
  20. data/config/locales/de.yml +7 -2
  21. data/config/locales/el.yml +2 -2
  22. data/config/locales/en.yml +7 -2
  23. data/config/locales/es-MX.yml +7 -2
  24. data/config/locales/es-PY.yml +7 -2
  25. data/config/locales/es.yml +9 -4
  26. data/config/locales/eu.yml +7 -2
  27. data/config/locales/fi-plain.yml +7 -2
  28. data/config/locales/fi.yml +7 -2
  29. data/config/locales/fr-CA.yml +5 -2
  30. data/config/locales/fr.yml +7 -2
  31. data/config/locales/gl.yml +0 -3
  32. data/config/locales/hu.yml +0 -3
  33. data/config/locales/id-ID.yml +0 -2
  34. data/config/locales/it.yml +0 -3
  35. data/config/locales/ja.yml +2 -5
  36. data/config/locales/lb.yml +0 -3
  37. data/config/locales/lt.yml +2 -2
  38. data/config/locales/lv.yml +0 -3
  39. data/config/locales/nl.yml +0 -3
  40. data/config/locales/no.yml +0 -3
  41. data/config/locales/pl.yml +1 -8
  42. data/config/locales/pt-BR.yml +0 -7
  43. data/config/locales/pt.yml +0 -3
  44. data/config/locales/ro-RO.yml +2 -2
  45. data/config/locales/sk.yml +0 -3
  46. data/config/locales/sv.yml +0 -3
  47. data/config/locales/tr-TR.yml +0 -3
  48. data/config/locales/zh-CN.yml +0 -3
  49. data/config/locales/zh-TW.yml +2 -2
  50. data/db/migrate/20200609090533_check_legacy_tables.rb +5 -5
  51. data/lib/decidim/surveys/admin_engine.rb +1 -1
  52. data/lib/decidim/surveys/component.rb +6 -89
  53. data/lib/decidim/surveys/engine.rb +20 -1
  54. data/lib/decidim/surveys/seeds.rb +103 -0
  55. data/lib/decidim/surveys/test/factories.rb +5 -10
  56. data/lib/decidim/surveys/version.rb +1 -1
  57. data/lib/tasks/decidim_surveys_tasks.rake +4 -4
  58. metadata +38 -32
  59. data/app/packs/stylesheets/decidim/surveys/_surveys.scss +0 -67
  60. data/config/locales/he-IL.yml +0 -1
  61. data/decidim-surveys.gemspec +0 -35
@@ -52,9 +52,6 @@ ja:
52
52
  answers_count: 回答
53
53
  surveys:
54
54
  admin:
55
- component:
56
- actions:
57
- answers_alert: コンポーネントを公開すると、すべての結果が削除されます。
58
55
  exports:
59
56
  survey_user_answers: アンケート参加者の回答
60
57
  surveys:
@@ -62,9 +59,9 @@ ja:
62
59
  invalid: 調査の保存中に問題が発生しました。
63
60
  success: アンケートを保存しました。
64
61
  last_activity:
65
- new_survey_at_html: "<span>新しい調査 %{link}</span>"
62
+ new_survey: '新しいアンケート:'
66
63
  surveys:
67
64
  answer:
68
65
  invalid: アンケートの回答に問題がありました。
69
- spam_detected: フォームに応答する際に問題が発生しました。もう一度試してみてください。
66
+ spam_detected: フォームでの回答中に問題が発生しました。もしかしたら回答が早すぎたかもしれません。再度お試しいただけますか?
70
67
  success: アンケートは正常に回答しました。
@@ -59,10 +59,7 @@ lb:
59
59
  update:
60
60
  invalid: Beim Speichern der Umfrage sind Fehler aufgetreten.
61
61
  success: Umfrage wurde erfolgreich gespeichert.
62
- last_activity:
63
- new_survey_at_html: "<span>Neue Umfrage bei %{link}</span>"
64
62
  surveys:
65
63
  answer:
66
64
  invalid: Bei der Beantwortung der Umfrage sind Fehler aufgetreten.
67
- spam_detected: Bei der Beantwortung des Fragebogens sind Fehler aufgetreten. Möglicherweise waren Sie zu schnell. Versuchen Sie es vielleicht erneut.
68
65
  success: Umfrage erfolgreich beantwortet.
@@ -65,9 +65,9 @@ lt:
65
65
  invalid: Išsaugant šią apklausą iškilo problema.
66
66
  success: Apklausa išsaugota.
67
67
  last_activity:
68
- new_survey_at_html: "<span>Nauja apklausa %{link}</span>"
68
+ new_survey: 'Nauja apklausa:'
69
69
  surveys:
70
70
  answer:
71
71
  invalid: Atsakant į šios apklausos klausimus iškilo problema.
72
- spam_detected: Atsakant į šios formos klausimus iškilo problema. Galbūt paskubėjote? Ar galite pabandyti dar kartą?
72
+ spam_detected: Atsakant į šią formą iškilo problema. Galbūt paskubėjote? Ar galite pabandyti dar kartą?
73
73
  success: Į apklausos klausimus atsakyta.
@@ -52,10 +52,7 @@ lv:
52
52
  update:
53
53
  invalid: Saglabājot aptauju, radās problēma.
54
54
  success: Aptauja ir veiksmīgi saglabāta
55
- last_activity:
56
- new_survey_at_html: "<span>Jauna aptauja %{link}</span>"
57
55
  surveys:
58
56
  answer:
59
57
  invalid: Atbildot uz aptauju, radās problēma.
60
- spam_detected: Atbildot uz aptaujas jautājumiem, radās problēma. Varbūt jūs esat rīkojies pārāk ātri, vai varat mēģināt vēlreiz?
61
58
  success: Uz aptaujas jautājumiem ir veiksmīgi atbildēts.
@@ -59,10 +59,7 @@ nl:
59
59
  update:
60
60
  invalid: Er is een probleem opgetreden bij het opslaan van de enquête.
61
61
  success: Enquête succesvol opgeslagen.
62
- last_activity:
63
- new_survey_at_html: "<span>Nieuwe enquête op %{link}</span>"
64
62
  surveys:
65
63
  answer:
66
64
  invalid: Er is een fout opgetreden bij het opslaan van de pagina.
67
- spam_detected: Er was een probleem bij het beantwoorden van het formulier. Misschien bent u te snel geweest, kunt u het opnieuw proberen?
68
65
  success: Enquête met succes beantwoord.
@@ -59,10 +59,7 @@
59
59
  update:
60
60
  invalid: Det oppstod et problem med å lagre undersøkelsen.
61
61
  success: Undersøkelsen ble lagret.
62
- last_activity:
63
- new_survey_at_html: "<span>Ny undersøkelse på %{link}</span>"
64
62
  surveys:
65
63
  answer:
66
64
  invalid: Det oppstod et problem med å svare på undersøkelsen.
67
- spam_detected: Det oppstod et problem med å svare på skjemaet. Kanskje du har vært for rask, kan du prøve igjen?
68
65
  success: Undersøkelsen ble besvart.
@@ -2,7 +2,7 @@
2
2
  pl:
3
3
  activemodel:
4
4
  models:
5
- decidim/surveys/closed_survey_event: Ankieta zakończona
5
+ decidim/surveys/closed_survey_event: Ankieta zamknięta
6
6
  decidim/surveys/opened_survey_event: Rozpoczęto ankietę
7
7
  activerecord:
8
8
  models:
@@ -35,7 +35,6 @@ pl:
35
35
  step:
36
36
  allow_answers: Pozwól na wypełnianie
37
37
  allow_unregistered: Pozwól niezarejestrowanym użytkownikom wypełnić ankietę
38
- allow_unregistered_help: Jeśli to ustawienie jest w użyciu, logowanie nie jest wymagane aby odpowiedzieć na ankietę. Może to prowadzić do słabych lub nierzetelnych danych i będzie bardziej podatne na zautomatyzowane ataki. Należy zachować ostrożność! Pamiętaj, że uczestnik może odpowiedzieć na to samo badanie wielokrotnie, korzystając z różnych przeglądarek lub funkcji "prywatne przeglądanie" swojej przeglądarki internetowej.
39
38
  announcement: Ogłoszenie
40
39
  events:
41
40
  surveys:
@@ -58,19 +57,13 @@ pl:
58
57
  answers_count: Odpowiedzi
59
58
  surveys:
60
59
  admin:
61
- component:
62
- actions:
63
- answers_alert: Po opublikowaniu komponentu wszystkie wyniki zostaną usunięte.
64
60
  exports:
65
61
  survey_user_answers: Odpowiedzi użytkowników na pytania z ankiety
66
62
  surveys:
67
63
  update:
68
64
  invalid: Podczas zapisywania ankiety wystąpił błąd.
69
65
  success: Ankieta została zapisana pomyślnie.
70
- last_activity:
71
- new_survey_at_html: "<span>Nowa ankieta %{link}</span>"
72
66
  surveys:
73
67
  answer:
74
68
  invalid: Podczas wypełniania ankiety wystąpił błąd.
75
- spam_detected: Wystąpił błąd podczas wypełniania formularza. Być może zostało to zrobione zbyt szybko, czy możesz spróbować ponownie?
76
69
  success: Twoja ankieta została wypełniona.
@@ -31,7 +31,6 @@ pt-BR:
31
31
  step:
32
32
  allow_answers: Permitir respostas
33
33
  allow_unregistered: Permitir que usuários não registrados respondam à pesquisa
34
- allow_unregistered_help: Se ativo, nenhum login será necessário para responder a pesquisa. Isso pode levar a dados ruins ou não confiáveis e será mais vulnerável a ataques automatizados. Usar com cuidado! Lembre-se de que um usuário pode responder à mesma pesquisa várias vezes, usando navegadores diferentes ou a função "navegação privada" de seu navegador.
35
34
  announcement: Anúncio
36
35
  events:
37
36
  surveys:
@@ -54,19 +53,13 @@ pt-BR:
54
53
  answers_count: Respostas
55
54
  surveys:
56
55
  admin:
57
- component:
58
- actions:
59
- answers_alert: Se você publicar o componente, todos os resultados serão removidos.
60
56
  exports:
61
57
  survey_user_answers: Avalie as respostas dos usuários
62
58
  surveys:
63
59
  update:
64
60
  invalid: Houve erros ao salvar a pesquisa.
65
61
  success: Pesquisa salva com sucesso.
66
- last_activity:
67
- new_survey_at_html: "<span>Nova pesquisa em %{link}</span>"
68
62
  surveys:
69
63
  answer:
70
64
  invalid: Houve erros ao responder a pesquisa.
71
- spam_detected: Houve algum problema ao responder ao formulário. Talvez você tenha sido rápido demais, pode tentar novamente?
72
65
  success: Pesquisa respondida com sucesso.
@@ -59,10 +59,7 @@ pt:
59
59
  update:
60
60
  invalid: Ocorreu um problema ao guardar o inquérito.
61
61
  success: Inquérito guardado corretamente.
62
- last_activity:
63
- new_survey_at_html: "<span>Novo inquérito em %{link}</span>"
64
62
  surveys:
65
63
  answer:
66
64
  invalid: Ocorreu um problema ao responder ao inquérito.
67
- spam_detected: Ocorreu um problema ao responder ao formulário. Talvez tenha sido demasiado rápido, pode tentar novamente?
68
65
  success: Inquérito respondido corretamente.
@@ -63,9 +63,9 @@ ro:
63
63
  invalid: A apărut o eroare la salvarea sondajului.
64
64
  success: Sondajul a fost salvat cu succes.
65
65
  last_activity:
66
- new_survey_at_html: "<span>Sondaj nou la %{link}</span>"
66
+ new_survey: 'Sondaj nou:'
67
67
  surveys:
68
68
  answer:
69
69
  invalid: A apărut o problemă în timpul răspunsului pentru sondaj.
70
- spam_detected: A apărut o problemă în timpul răspunsului pentru sondaj. Poate ai fost prea rapid, poţi încerca din nou?
70
+ spam_detected: A apărut o problemă la completarea formularului. Poate ați fost prea rapid(ă), puteți încerca din nou?
71
71
  success: Răspunsul pentru sondaj a fost înregistrat cu succes.
@@ -54,10 +54,7 @@ sk:
54
54
  update:
55
55
  invalid: Vyskytol sa problém s ukladaním prieskumu.
56
56
  success: Prieskum úspešne uložený.
57
- last_activity:
58
- new_survey_at_html: "<span>Nový prieskum na %{link}</span>"
59
57
  surveys:
60
58
  answer:
61
59
  invalid: Vyskytol sa problém s odpovedaním na prieskum.
62
- spam_detected: Vyskytol sa problém s odpovedaním na formulár. Možno ste boli príliš rýchli, skúste prosíme znovu.
63
60
  success: Odpoveď úspešne zaznamenaná.
@@ -60,10 +60,7 @@ sv:
60
60
  update:
61
61
  invalid: Det gick inte att spara enkäten.
62
62
  success: Enkäten har sparats.
63
- last_activity:
64
- new_survey_at_html: "<span>Ny enkät på %{link}</span>"
65
63
  surveys:
66
64
  answer:
67
65
  invalid: Det gick inte att besvara enkäten.
68
- spam_detected: Det gick inte att svara på formuläret. Du hade kanske för bråttom, kan du försöka igen?
69
66
  success: Enkäten har besvarats.
@@ -57,10 +57,7 @@ tr:
57
57
  update:
58
58
  invalid: Anketi kaydederken bir sorun oluştu.
59
59
  success: Anket başarıyla kaydedildi.
60
- last_activity:
61
- new_survey_at_html: "<span> %{link}</span> linkinde yeni anket"
62
60
  surveys:
63
61
  answer:
64
62
  invalid: Anketi cevaplarken bir sorun oluştu.
65
- spam_detected: Formu yanıtlarken bir sorun oluştu. Belki çok hızlı davrandın, tekrar deneyebilir misin?
66
63
  success: Anket başarıyla cevaplandı.
@@ -51,10 +51,7 @@ zh-CN:
51
51
  update:
52
52
  invalid: 保存调查时出现问题。
53
53
  success: 调查保存成功。
54
- last_activity:
55
- new_survey_at_html: "<span>在 %{link}上的新调查</span>"
56
54
  surveys:
57
55
  answer:
58
56
  invalid: 回答调查时出现问题。
59
- spam_detected: 回答表单时出现问题。可能你太快了,你可以再试一次吗?
60
57
  success: 调查回答成功。
@@ -59,9 +59,9 @@ zh-TW:
59
59
  invalid: 儲存問卷時出現問題。
60
60
  success: 問卷成功儲存
61
61
  last_activity:
62
- new_survey_at_html: "<span>在 %{link} 上有新的調查</span>"
62
+ new_survey: '新問卷調查'
63
63
  surveys:
64
64
  answer:
65
65
  invalid: 回答問卷時出現問題。
66
- spam_detected: 填寫表單時發生問題。也許您填寫得太快了,可以再試一次嗎?
66
+ spam_detected: 回答表單時出現問題。也許您回答太快了,可以再試一次嗎?
67
67
  success: 問卷回答成功。
@@ -28,7 +28,7 @@ class CheckLegacyTables < ActiveRecord::Migration[5.2]
28
28
  puts "Migrate or backup your data and then remove the following raise statement to continue with the migrations (that will remove surveys legacy tables)"
29
29
  puts "For migrating your data you can do that with the command:"
30
30
  puts "bundle exec rake decidim_surveys:migrate_data_to_decidim_forms"
31
- raise "ERROR: there's the risk to loose legacy information from old surveys!"
31
+ raise "ERROR: there is the risk to loose legacy information from old surveys!"
32
32
  end
33
33
  end
34
34
  end
@@ -61,7 +61,7 @@ class CheckLegacyTables < ActiveRecord::Migration[5.2]
61
61
  puts "Migrating question #{survey_question.id}..."
62
62
 
63
63
  question = ::Decidim::Forms::Question.create!(
64
- questionnaire: questionnaire,
64
+ questionnaire:,
65
65
  position: survey_question.position,
66
66
  question_type: survey_question.question_type,
67
67
  mandatory: survey_question.mandatory,
@@ -77,7 +77,7 @@ class CheckLegacyTables < ActiveRecord::Migration[5.2]
77
77
 
78
78
  AnswerOption.where(decidim_survey_question_id: survey_question.id).find_each do |survey_answer_option|
79
79
  answer_option_mapping[survey_answer_option.id] = ::Decidim::Forms::AnswerOption.create!(
80
- question: question,
80
+ question:,
81
81
  body: survey_answer_option.body,
82
82
  free_text: survey_answer_option.free_text
83
83
  )
@@ -85,8 +85,8 @@ class CheckLegacyTables < ActiveRecord::Migration[5.2]
85
85
 
86
86
  Answer.where(decidim_survey_id: survey.id, decidim_survey_question_id: survey_question.id).find_each do |survey_answer|
87
87
  answer = ::Decidim::Forms::Answer.new(
88
- questionnaire: questionnaire,
89
- question: question,
88
+ questionnaire:,
89
+ question:,
90
90
  decidim_user_id: survey_answer.decidim_user_id,
91
91
  body: survey_answer.body,
92
92
  created_at: survey_answer.created_at,
@@ -18,7 +18,7 @@ module Decidim
18
18
  root to: "surveys#edit"
19
19
  end
20
20
 
21
- initializer "decidim.notifications.components" do
21
+ initializer "decidim_surveys_admin.notifications.components" do
22
22
  config.to_prepare do
23
23
  Decidim::EventsManager.subscribe(/^decidim\.events\.components/) do |event_name, data|
24
24
  CleanSurveyAnswersJob.perform_later(event_name, data)
@@ -1,11 +1,10 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require "decidim/components/namer"
4
-
5
3
  Decidim.register_component(:surveys) do |component|
6
4
  component.engine = Decidim::Surveys::Engine
7
5
  component.admin_engine = Decidim::Surveys::AdminEngine
8
6
  component.icon = "media/images/decidim_surveys.svg"
7
+ component.icon_key = "survey-line"
9
8
  component.stylesheet = "decidim/surveys/surveys"
10
9
  component.permissions_class_name = "Decidim::Surveys::Permissions"
11
10
  component.serializes_specific_data = true
@@ -15,13 +14,13 @@ Decidim.register_component(:surveys) do |component|
15
14
 
16
15
  component.on(:copy) do |context|
17
16
  Decidim::Surveys::CreateSurvey.call(context[:new_component]) do
18
- on(:invalid) { raise "Can't create survey" }
17
+ on(:invalid) { raise "Cannot create survey" }
19
18
  end
20
19
  end
21
20
 
22
21
  component.on(:create) do |instance|
23
22
  Decidim::Surveys::CreateSurvey.call(instance) do
24
- on(:invalid) { raise "Can't create survey" }
23
+ on(:invalid) { raise "Cannot create survey" }
25
24
  end
26
25
  end
27
26
 
@@ -33,7 +32,7 @@ Decidim.register_component(:surveys) do |component|
33
32
  survey = Decidim::Surveys::Survey.find_by(decidim_component_id: instance.id)
34
33
  survey_answers_for_component = Decidim::Forms::Answer.where(questionnaire: survey.questionnaire)
35
34
 
36
- raise "Can't destroy this component when there are survey answers" if survey_answers_for_component.any?
35
+ raise "Cannot destroy this component when there are survey answers" if survey_answers_for_component.any?
37
36
  end
38
37
 
39
38
  component.register_resource(:survey) do |resource|
@@ -85,90 +84,8 @@ Decidim.register_component(:surveys) do |component|
85
84
  end
86
85
 
87
86
  component.seeds do |participatory_space|
88
- admin_user = Decidim::User.find_by(
89
- organization: participatory_space.organization,
90
- email: "admin@example.org"
91
- )
92
-
93
- params = {
94
- name: Decidim::Components::Namer.new(participatory_space.organization.available_locales, :surveys).i18n_name,
95
- manifest_name: :surveys,
96
- published_at: Time.current,
97
- participatory_space: participatory_space
98
- }
99
-
100
- component = Decidim.traceability.perform_action!(
101
- "publish",
102
- Decidim::Component,
103
- admin_user,
104
- visibility: "all"
105
- ) do
106
- Decidim::Component.create!(params)
107
- end
108
-
109
- questionnaire = Decidim::Forms::Questionnaire.new(
110
- title: Decidim::Faker::Localized.paragraph,
111
- description: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
112
- Decidim::Faker::Localized.paragraph(sentence_count: 3)
113
- end,
114
- tos: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
115
- Decidim::Faker::Localized.paragraph(sentence_count: 2)
116
- end
117
- )
118
-
119
- params = {
120
- component: component,
121
- questionnaire: questionnaire
122
- }
123
-
124
- Decidim.traceability.create!(
125
- Decidim::Surveys::Survey,
126
- admin_user,
127
- params,
128
- visibility: "all"
129
- )
130
-
131
- %w(short_answer long_answer).each_with_index do |text_question_type, index|
132
- Decidim::Forms::Question.create!(
133
- questionnaire: questionnaire,
134
- body: Decidim::Faker::Localized.paragraph,
135
- question_type: text_question_type,
136
- position: index
137
- )
138
- end
87
+ require "decidim/surveys/seeds"
139
88
 
140
- %w(single_option multiple_option).each_with_index do |multiple_choice_question_type, index|
141
- question = Decidim::Forms::Question.create!(
142
- questionnaire: questionnaire,
143
- body: Decidim::Faker::Localized.paragraph,
144
- question_type: multiple_choice_question_type,
145
- position: index + 2
146
- )
147
-
148
- 3.times do
149
- question.answer_options.create!(body: Decidim::Faker::Localized.sentence)
150
- end
151
-
152
- question.display_conditions.create!(
153
- condition_question: questionnaire.questions.find_by(position: question.position - 2),
154
- question: question,
155
- condition_type: :answered,
156
- mandatory: true
157
- )
158
- end
159
-
160
- %w(matrix_single matrix_multiple).each_with_index do |matrix_question_type, index|
161
- question = Decidim::Forms::Question.create!(
162
- questionnaire: questionnaire,
163
- body: Decidim::Faker::Localized.paragraph,
164
- question_type: matrix_question_type,
165
- position: index
166
- )
167
-
168
- 3.times do |position|
169
- question.answer_options.create!(body: Decidim::Faker::Localized.sentence)
170
- question.matrix_rows.create!(body: Decidim::Faker::Localized.sentence, position: position)
171
- end
172
- end
89
+ Decidim::Surveys::Seeds.new(participatory_space:).call
173
90
  end
174
91
  end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require "decidim/core"
4
+ require "decidim/templates"
4
5
 
5
6
  module Decidim
6
7
  module Surveys
@@ -17,7 +18,7 @@ module Decidim
17
18
  root to: "surveys#show"
18
19
  end
19
20
 
20
- initializer "decidim_changes" do
21
+ initializer "decidim_surveys.settings_changes" do
21
22
  config.to_prepare do
22
23
  Decidim::SettingsChange.subscribe "surveys" do |changes|
23
24
  Decidim::Surveys::SettingsChangeJob.perform_later(
@@ -49,6 +50,24 @@ module Decidim
49
50
  initializer "decidim_surveys.webpacker.assets_path" do
50
51
  Decidim.register_assets_path File.expand_path("app/packs", root)
51
52
  end
53
+
54
+ initializer "decidim_surveys.answers_email" do
55
+ config.to_prepare do
56
+ ActiveSupport::Notifications.subscribe("decidim.forms.answer_questionnaire:after") do |_event_name, data|
57
+ extra_data = data[:extra]
58
+ if data[:resource].questionnaire_for.instance_of?(::Decidim::Surveys::Survey)
59
+ component = data[:resource].questionnaire_for.component
60
+
61
+ answers = Decidim::Forms::QuestionnaireUserAnswers.for(data[:resource])
62
+ user_answers = answers.select { |a| a.first.session_token == extra_data[:session_token] }
63
+
64
+ if component.manifest_name == "surveys" && user_answers.present?
65
+ Decidim::Surveys::SurveyConfirmationMailer.confirmation(extra_data[:event_author], extra_data[:questionnaire], user_answers).deliver_later
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
52
71
  end
53
72
  end
54
73
  end
@@ -0,0 +1,103 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "decidim/components/namer"
4
+
5
+ module Decidim
6
+ module Surveys
7
+ class Seeds
8
+ attr_reader :participatory_space
9
+
10
+ def initialize(participatory_space:)
11
+ @participatory_space = participatory_space
12
+ end
13
+
14
+ def call
15
+ admin_user = Decidim::User.find_by(
16
+ organization: participatory_space.organization,
17
+ email: "admin@example.org"
18
+ )
19
+
20
+ params = {
21
+ name: Decidim::Components::Namer.new(participatory_space.organization.available_locales, :surveys).i18n_name,
22
+ manifest_name: :surveys,
23
+ published_at: Time.current,
24
+ participatory_space:
25
+ }
26
+
27
+ component = Decidim.traceability.perform_action!(
28
+ "publish",
29
+ Decidim::Component,
30
+ admin_user,
31
+ visibility: "all"
32
+ ) do
33
+ Decidim::Component.create!(params)
34
+ end
35
+
36
+ questionnaire = Decidim::Forms::Questionnaire.new(
37
+ title: Decidim::Faker::Localized.paragraph,
38
+ description: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
39
+ Decidim::Faker::Localized.paragraph(sentence_count: 3)
40
+ end,
41
+ tos: Decidim::Faker::Localized.wrapped("<p>", "</p>") do
42
+ Decidim::Faker::Localized.paragraph(sentence_count: 2)
43
+ end
44
+ )
45
+
46
+ params = {
47
+ component:,
48
+ questionnaire:
49
+ }
50
+
51
+ Decidim.traceability.create!(
52
+ Decidim::Surveys::Survey,
53
+ admin_user,
54
+ params,
55
+ visibility: "all"
56
+ )
57
+
58
+ %w(short_answer long_answer).each_with_index do |text_question_type, index|
59
+ Decidim::Forms::Question.create!(
60
+ questionnaire:,
61
+ body: Decidim::Faker::Localized.paragraph,
62
+ question_type: text_question_type,
63
+ position: index
64
+ )
65
+ end
66
+
67
+ %w(single_option multiple_option).each_with_index do |multiple_choice_question_type, index|
68
+ question = Decidim::Forms::Question.create!(
69
+ questionnaire:,
70
+ body: Decidim::Faker::Localized.paragraph,
71
+ question_type: multiple_choice_question_type,
72
+ position: index + 2
73
+ )
74
+
75
+ 3.times do
76
+ question.answer_options.create!(body: Decidim::Faker::Localized.sentence)
77
+ end
78
+
79
+ question.display_conditions.create!(
80
+ condition_question: questionnaire.questions.find_by(position: question.position - 2),
81
+ question:,
82
+ condition_type: :answered,
83
+ mandatory: true
84
+ )
85
+ end
86
+
87
+ %w(matrix_single matrix_multiple).each_with_index do |matrix_question_type, index|
88
+ question = Decidim::Forms::Question.create!(
89
+ questionnaire:,
90
+ body: Decidim::Faker::Localized.paragraph,
91
+ question_type: matrix_question_type,
92
+ position: index
93
+ )
94
+
95
+ 3.times do |position|
96
+ question.answer_options.create!(body: Decidim::Faker::Localized.sentence)
97
+ question.matrix_rows.create!(body: Decidim::Faker::Localized.sentence, position:)
98
+ end
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end
@@ -1,24 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "decidim/components/namer"
3
4
  require "decidim/core/test/factories"
4
5
  require "decidim/forms/test/factories"
5
6
  require "decidim/participatory_processes/test/factories"
6
7
 
7
8
  FactoryBot.define do
8
9
  factory :surveys_component, parent: :component do
9
- transient do
10
- skip_injection { false }
11
- end
12
- name { generate_component_name(participatory_space.organization.available_locales, :surveys, skip_injection: skip_injection) }
10
+ name { Decidim::Components::Namer.new(participatory_space.organization.available_locales, :surveys).i18n_name }
13
11
  manifest_name { :surveys }
14
- participatory_space { create(:participatory_process, :with_steps, skip_injection: skip_injection) }
12
+ participatory_space { create(:participatory_process, :with_steps) }
15
13
  end
16
14
 
17
15
  factory :survey, class: "Decidim::Surveys::Survey" do
18
- transient do
19
- skip_injection { false }
20
- end
21
- questionnaire { build(:questionnaire, :with_questions, skip_injection: skip_injection) }
22
- component { build(:surveys_component, skip_injection: skip_injection) }
16
+ questionnaire { build(:questionnaire, :with_questions) }
17
+ component { build(:surveys_component) }
23
18
  end
24
19
  end
@@ -4,7 +4,7 @@ module Decidim
4
4
  # This holds the decidim-surveys version.
5
5
  module Surveys
6
6
  def self.version
7
- "0.27.6"
7
+ "0.28.0.rc4"
8
8
  end
9
9
  end
10
10
  end
@@ -42,7 +42,7 @@ namespace :decidim_surveys do
42
42
  puts "Migrating question #{survey_question.id}..."
43
43
 
44
44
  question = Decidim::Forms::Question.create!(
45
- questionnaire: questionnaire,
45
+ questionnaire:,
46
46
  position: survey_question.position,
47
47
  question_type: survey_question.question_type,
48
48
  mandatory: survey_question.mandatory,
@@ -58,7 +58,7 @@ namespace :decidim_surveys do
58
58
 
59
59
  AnswerOption.where(decidim_survey_question_id: survey_question.id).find_each do |survey_answer_option|
60
60
  answer_option_mapping[survey_answer_option.id] = Decidim::Forms::AnswerOption.create!(
61
- question: question,
61
+ question:,
62
62
  body: survey_answer_option.body,
63
63
  free_text: survey_answer_option.free_text
64
64
  )
@@ -66,8 +66,8 @@ namespace :decidim_surveys do
66
66
 
67
67
  Answer.where(decidim_survey_id: survey.id, decidim_survey_question_id: survey_question.id).find_each do |survey_answer|
68
68
  answer = Decidim::Forms::Answer.new(
69
- questionnaire: questionnaire,
70
- question: question,
69
+ questionnaire:,
70
+ question:,
71
71
  decidim_user_id: survey_answer.decidim_user_id,
72
72
  body: survey_answer.body,
73
73
  created_at: survey_answer.created_at,