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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/app/cells/decidim/surveys/survey_activity_cell.rb +1 -4
- data/app/controllers/decidim/surveys/admin/surveys_controller.rb +7 -1
- data/app/controllers/decidim/surveys/surveys_controller.rb +3 -1
- data/app/helpers/decidim/surveys/survey_helper.rb +1 -3
- data/app/jobs/decidim/surveys/clean_survey_answers_job.rb +1 -1
- data/app/jobs/decidim/surveys/settings_change_job.rb +2 -2
- data/app/mailers/decidim/surveys/survey_confirmation_mailer.rb +39 -0
- data/app/serializers/decidim/surveys/data_serializer.rb +1 -1
- data/app/views/decidim/surveys/admin/component/_actions.html.erb +17 -16
- data/app/views/decidim/surveys/admin/surveys/edit.html.erb +40 -0
- data/app/views/decidim/surveys/survey_confirmation_mailer/confirmation.html.erb +3 -0
- data/app/views/decidim/surveys/surveys/no_permission.html.erb +1 -1
- data/config/assets.rb +0 -1
- data/config/locales/ar.yml +0 -2
- data/config/locales/bg.yml +0 -7
- data/config/locales/ca.yml +9 -4
- data/config/locales/cs.yml +7 -2
- data/config/locales/de.yml +7 -2
- data/config/locales/el.yml +2 -2
- data/config/locales/en.yml +7 -2
- data/config/locales/es-MX.yml +7 -2
- data/config/locales/es-PY.yml +7 -2
- data/config/locales/es.yml +9 -4
- data/config/locales/eu.yml +7 -2
- data/config/locales/fi-plain.yml +7 -2
- data/config/locales/fi.yml +7 -2
- data/config/locales/fr-CA.yml +5 -2
- data/config/locales/fr.yml +7 -2
- data/config/locales/gl.yml +0 -3
- data/config/locales/hu.yml +0 -3
- data/config/locales/id-ID.yml +0 -2
- data/config/locales/it.yml +0 -3
- data/config/locales/ja.yml +2 -5
- data/config/locales/lb.yml +0 -3
- data/config/locales/lt.yml +2 -2
- data/config/locales/lv.yml +0 -3
- data/config/locales/nl.yml +0 -3
- data/config/locales/no.yml +0 -3
- data/config/locales/pl.yml +1 -8
- data/config/locales/pt-BR.yml +0 -7
- data/config/locales/pt.yml +0 -3
- data/config/locales/ro-RO.yml +2 -2
- data/config/locales/sk.yml +0 -3
- data/config/locales/sv.yml +0 -3
- data/config/locales/tr-TR.yml +0 -3
- data/config/locales/zh-CN.yml +0 -3
- data/config/locales/zh-TW.yml +2 -2
- data/db/migrate/20200609090533_check_legacy_tables.rb +5 -5
- data/lib/decidim/surveys/admin_engine.rb +1 -1
- data/lib/decidim/surveys/component.rb +6 -89
- data/lib/decidim/surveys/engine.rb +20 -1
- data/lib/decidim/surveys/seeds.rb +103 -0
- data/lib/decidim/surveys/test/factories.rb +5 -10
- data/lib/decidim/surveys/version.rb +1 -1
- data/lib/tasks/decidim_surveys_tasks.rake +4 -4
- metadata +38 -32
- data/app/packs/stylesheets/decidim/surveys/_surveys.scss +0 -67
- data/config/locales/he-IL.yml +0 -1
- data/decidim-surveys.gemspec +0 -35
data/config/locales/ja.yml
CHANGED
@@ -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
|
-
|
62
|
+
new_survey: '新しいアンケート:'
|
66
63
|
surveys:
|
67
64
|
answer:
|
68
65
|
invalid: アンケートの回答に問題がありました。
|
69
|
-
spam_detected:
|
66
|
+
spam_detected: フォームでの回答中に問題が発生しました。もしかしたら回答が早すぎたかもしれません。再度お試しいただけますか?
|
70
67
|
success: アンケートは正常に回答しました。
|
data/config/locales/lb.yml
CHANGED
@@ -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.
|
data/config/locales/lt.yml
CHANGED
@@ -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
|
-
|
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 į
|
72
|
+
spam_detected: Atsakant į šią formą iškilo problema. Galbūt paskubėjote? Ar galite pabandyti dar kartą?
|
73
73
|
success: Į apklausos klausimus atsakyta.
|
data/config/locales/lv.yml
CHANGED
@@ -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.
|
data/config/locales/nl.yml
CHANGED
@@ -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.
|
data/config/locales/no.yml
CHANGED
@@ -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.
|
data/config/locales/pl.yml
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
pl:
|
3
3
|
activemodel:
|
4
4
|
models:
|
5
|
-
decidim/surveys/closed_survey_event: Ankieta
|
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.
|
data/config/locales/pt-BR.yml
CHANGED
@@ -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.
|
data/config/locales/pt.yml
CHANGED
@@ -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.
|
data/config/locales/ro-RO.yml
CHANGED
@@ -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
|
-
|
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ă
|
70
|
+
spam_detected: A apărut o problemă la completarea formularului. Poate că ați fost prea rapid(ă), puteți încerca din nou?
|
71
71
|
success: Răspunsul pentru sondaj a fost înregistrat cu succes.
|
data/config/locales/sk.yml
CHANGED
@@ -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á.
|
data/config/locales/sv.yml
CHANGED
@@ -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.
|
data/config/locales/tr-TR.yml
CHANGED
@@ -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ı.
|
data/config/locales/zh-CN.yml
CHANGED
data/config/locales/zh-TW.yml
CHANGED
@@ -59,9 +59,9 @@ zh-TW:
|
|
59
59
|
invalid: 儲存問卷時出現問題。
|
60
60
|
success: 問卷成功儲存
|
61
61
|
last_activity:
|
62
|
-
|
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
|
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
|
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
|
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
|
89
|
-
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 "
|
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 "
|
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 "
|
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 "
|
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
|
-
|
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
|
-
|
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 "
|
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
|
-
|
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
|
12
|
+
participatory_space { create(:participatory_process, :with_steps) }
|
15
13
|
end
|
16
14
|
|
17
15
|
factory :survey, class: "Decidim::Surveys::Survey" do
|
18
|
-
|
19
|
-
|
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
|
@@ -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
|
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
|
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
|
70
|
-
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,
|