decidim-demographics 0.31.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 (107) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +26 -0
  3. data/Rakefile +3 -0
  4. data/app/commands/decidim/demographics/admin/update_demographics_settings.rb +44 -0
  5. data/app/commands/decidim/demographics/delete_demographic_data.rb +24 -0
  6. data/app/controllers/decidim/demographics/admin/application_controller.rb +42 -0
  7. data/app/controllers/decidim/demographics/admin/publish_responses_controller.rb +24 -0
  8. data/app/controllers/decidim/demographics/admin/questions_controller.rb +33 -0
  9. data/app/controllers/decidim/demographics/admin/responses_controller.rb +36 -0
  10. data/app/controllers/decidim/demographics/admin/settings_controller.rb +33 -0
  11. data/app/controllers/decidim/demographics/application_controller.rb +17 -0
  12. data/app/controllers/decidim/demographics/demographics_controller.rb +70 -0
  13. data/app/forms/decidim/demographics/admin/demographics_settings_form.rb +11 -0
  14. data/app/helpers/decidim/demographics/publish_responses_helper.rb +104 -0
  15. data/app/models/decidim/demographics/application_record.rb +10 -0
  16. data/app/models/decidim/demographics/demographic.rb +9 -0
  17. data/app/packs/entrypoints/decidim_demographics.js +1 -0
  18. data/app/packs/stylesheets/decidim/demographics/demographics.scss +37 -0
  19. data/app/permissions/decidim/demographics/admin/permissions.rb +22 -0
  20. data/app/permissions/decidim/demographics/permissions.rb +23 -0
  21. data/app/views/decidim/demographics/admin/demographics/_tabs_menu.html.erb +15 -0
  22. data/app/views/decidim/demographics/admin/publish_responses/index.html.erb +36 -0
  23. data/app/views/decidim/demographics/admin/questions/_questions_form.html.erb +74 -0
  24. data/app/views/decidim/demographics/admin/questions/edit.html.erb +13 -0
  25. data/app/views/decidim/demographics/admin/responses/index.html.erb +98 -0
  26. data/app/views/decidim/demographics/admin/settings/show.html.erb +23 -0
  27. data/app/views/decidim/demographics/demographics/_questionnaire.html.erb +88 -0
  28. data/app/views/decidim/demographics/demographics/_response.html.erb +41 -0
  29. data/app/views/decidim/demographics/demographics/responses/_single_option.html.erb +19 -0
  30. data/app/views/decidim/demographics/demographics/show.html.erb +25 -0
  31. data/config/assets.rb +8 -0
  32. data/config/locales/am-ET.yml +1 -0
  33. data/config/locales/ar.yml +1 -0
  34. data/config/locales/bg.yml +1 -0
  35. data/config/locales/bn-BD.yml +1 -0
  36. data/config/locales/bs-BA.yml +1 -0
  37. data/config/locales/ca-IT.yml +79 -0
  38. data/config/locales/ca.yml +79 -0
  39. data/config/locales/cs.yml +55 -0
  40. data/config/locales/da.yml +1 -0
  41. data/config/locales/de.yml +79 -0
  42. data/config/locales/el.yml +1 -0
  43. data/config/locales/en.yml +79 -0
  44. data/config/locales/eo.yml +1 -0
  45. data/config/locales/es-MX.yml +79 -0
  46. data/config/locales/es-PY.yml +79 -0
  47. data/config/locales/es.yml +79 -0
  48. data/config/locales/et.yml +1 -0
  49. data/config/locales/eu.yml +79 -0
  50. data/config/locales/fa-IR.yml +1 -0
  51. data/config/locales/fi-plain.yml +79 -0
  52. data/config/locales/fi.yml +79 -0
  53. data/config/locales/fr-CA.yml +79 -0
  54. data/config/locales/fr.yml +79 -0
  55. data/config/locales/ga-IE.yml +1 -0
  56. data/config/locales/gl.yml +1 -0
  57. data/config/locales/gn-PY.yml +1 -0
  58. data/config/locales/he-IL.yml +1 -0
  59. data/config/locales/hr.yml +1 -0
  60. data/config/locales/hu.yml +1 -0
  61. data/config/locales/id-ID.yml +1 -0
  62. data/config/locales/is-IS.yml +1 -0
  63. data/config/locales/it.yml +1 -0
  64. data/config/locales/ja.yml +79 -0
  65. data/config/locales/ka-GE.yml +1 -0
  66. data/config/locales/kaa.yml +1 -0
  67. data/config/locales/ko.yml +1 -0
  68. data/config/locales/lb.yml +1 -0
  69. data/config/locales/lo-LA.yml +1 -0
  70. data/config/locales/lt.yml +1 -0
  71. data/config/locales/lv.yml +1 -0
  72. data/config/locales/mt.yml +1 -0
  73. data/config/locales/nl.yml +1 -0
  74. data/config/locales/no.yml +8 -0
  75. data/config/locales/oc-FR.yml +1 -0
  76. data/config/locales/om-ET.yml +1 -0
  77. data/config/locales/pl.yml +1 -0
  78. data/config/locales/pt-BR.yml +1 -0
  79. data/config/locales/pt.yml +1 -0
  80. data/config/locales/ro-RO.yml +1 -0
  81. data/config/locales/ru.yml +1 -0
  82. data/config/locales/si-LK.yml +1 -0
  83. data/config/locales/sk.yml +1 -0
  84. data/config/locales/sl.yml +1 -0
  85. data/config/locales/so-SO.yml +1 -0
  86. data/config/locales/sq-AL.yml +1 -0
  87. data/config/locales/sr-CS.yml +1 -0
  88. data/config/locales/sv.yml +79 -0
  89. data/config/locales/sw-KE.yml +1 -0
  90. data/config/locales/th-TH.yml +1 -0
  91. data/config/locales/ti-ER.yml +1 -0
  92. data/config/locales/tr-TR.yml +1 -0
  93. data/config/locales/uk.yml +1 -0
  94. data/config/locales/val-ES.yml +1 -0
  95. data/config/locales/vi.yml +1 -0
  96. data/config/locales/zh-CN.yml +1 -0
  97. data/config/locales/zh-TW.yml +1 -0
  98. data/db/migrate/20250305200253_create_decidim_demographics_demographics.rb +12 -0
  99. data/decidim-demographics.gemspec +37 -0
  100. data/lib/decidim/demographics/admin.rb +10 -0
  101. data/lib/decidim/demographics/admin_engine.rb +83 -0
  102. data/lib/decidim/demographics/engine.rb +41 -0
  103. data/lib/decidim/demographics/test/factories.rb +16 -0
  104. data/lib/decidim/demographics/version.rb +10 -0
  105. data/lib/decidim/demographics.rb +52 -0
  106. data/lib/tasks/decidim_demographics.rake +14 -0
  107. metadata +195 -0
@@ -0,0 +1,79 @@
1
+ ---
2
+ fr-CA:
3
+ decidim:
4
+ demographics:
5
+ actions:
6
+ title: Actions
7
+ admin:
8
+ demographics:
9
+ tabs_menu:
10
+ title: Démographiques
11
+ demographics_menu:
12
+ questions: Questions
13
+ responses: Réponses
14
+ settings: Paramètres
15
+ publish_responses:
16
+ index:
17
+ description: Description
18
+ title: Afficher les réponses
19
+ questions:
20
+ edit:
21
+ save: Enregistrer
22
+ title: Questions
23
+ questions_form:
24
+ add_question: Ajouter une question
25
+ collapse: Réduire toutes les questions
26
+ expand: Développer toutes les questions
27
+ responses:
28
+ index:
29
+ publish_responses: Afficher les réponses
30
+ title: "%{total} réponses au total"
31
+ settings:
32
+ show:
33
+ collect_data: Activer la collecte de données démographiques
34
+ collect_data_help: Activer ce paramètre permettra aux utilisateurs de faire don de leurs données à la plate-forme.
35
+ save: Enregistrer
36
+ title: Paramètres
37
+ update:
38
+ invalid: Une erreur s'est produite lors de l'enregistrement des données démographiques
39
+ success: Données démographiques enregistrées avec succès
40
+ title: Démographiques
41
+ demographics:
42
+ questionnaire:
43
+ delete_my_data: Supprimer les données
44
+ modal_close: Annuler
45
+ modal_ok: Ok
46
+ modal_question: Toutes vos données démographiques seront supprimées.
47
+ modal_title: Supprimer les données
48
+ submit: Enregistrer les données
49
+ terms_of_service: conditions d'utilisation
50
+ tos_agreement: En participant vous acceptez l' %{link}.
51
+ show:
52
+ page_title: Don de données démographiques
53
+ destroy:
54
+ error: Une erreur s'est produite lors de la suppression des données que vous avez fournies
55
+ success: Les données que vous avez fournies ont été supprimées avec succès
56
+ name: Don de données démographiques
57
+ questions:
58
+ age:
59
+ options:
60
+ - 15 à 29 ans
61
+ - 30 à 44 ans
62
+ - 45 à 64 ans
63
+ - 65 ans et plus
64
+ question: Quel est votre age ?
65
+ gender:
66
+ options:
67
+ - Homme
68
+ - Femme
69
+ - Non-binaire
70
+ - Mon genre n'est pas répertorié
71
+ - Je préfère ne pas le dire
72
+ question: Parmi les énoncés suivants, lequel décrit le mieux votre genre ?
73
+ postal:
74
+ question: Quel est le code postal de votre lieu de résidence ?
75
+ layouts:
76
+ decidim:
77
+ shared:
78
+ layout_center:
79
+ alert: En fournissant ces informations, vous contribuez à l'analyse statistique qui aide à améliorer l'indicateur de qualité. Vos données seront agrégées et utilisées uniquement à des fins de recherche.
@@ -0,0 +1,79 @@
1
+ ---
2
+ fr:
3
+ decidim:
4
+ demographics:
5
+ actions:
6
+ title: Actions
7
+ admin:
8
+ demographics:
9
+ tabs_menu:
10
+ title: Démographiques
11
+ demographics_menu:
12
+ questions: Questions
13
+ responses: Réponses
14
+ settings: Paramètres
15
+ publish_responses:
16
+ index:
17
+ description: Description
18
+ title: Afficher les réponses
19
+ questions:
20
+ edit:
21
+ save: Enregistrer
22
+ title: Questions
23
+ questions_form:
24
+ add_question: Ajouter une question
25
+ collapse: Réduire toutes les questions
26
+ expand: Développer toutes les questions
27
+ responses:
28
+ index:
29
+ publish_responses: Afficher les réponses
30
+ title: "%{total} réponses au total"
31
+ settings:
32
+ show:
33
+ collect_data: Activer la collecte de données démographiques
34
+ collect_data_help: Activer ce paramètre permettra aux utilisateurs de faire don de leurs données à la plate-forme.
35
+ save: Enregistrer
36
+ title: Paramètres
37
+ update:
38
+ invalid: Une erreur s'est produite lors de l'enregistrement des données démographiques
39
+ success: Données démographiques enregistrées avec succès
40
+ title: Démographiques
41
+ demographics:
42
+ questionnaire:
43
+ delete_my_data: Supprimer les données
44
+ modal_close: Annuler
45
+ modal_ok: Ok
46
+ modal_question: Toutes vos données démographiques seront supprimées.
47
+ modal_title: Supprimer les données
48
+ submit: Enregistrer les données
49
+ terms_of_service: conditions d'utilisation
50
+ tos_agreement: En participant vous acceptez l' %{link}.
51
+ show:
52
+ page_title: Don de données démographiques
53
+ destroy:
54
+ error: Une erreur s'est produite lors de la suppression des données que vous avez fournies
55
+ success: Les données que vous avez fournies ont été supprimées avec succès
56
+ name: Don de données démographiques
57
+ questions:
58
+ age:
59
+ options:
60
+ - 15 à 29 ans
61
+ - 30 à 44 ans
62
+ - 45 à 64 ans
63
+ - 65 ans et plus
64
+ question: Quel est votre age ?
65
+ gender:
66
+ options:
67
+ - Homme
68
+ - Femme
69
+ - Non-binaire
70
+ - Mon genre n'est pas répertorié
71
+ - Je préfère ne pas le dire
72
+ question: Parmi les énoncés suivants, lequel décrit le mieux votre genre ?
73
+ postal:
74
+ question: Quel est le code postal de votre lieu de résidence ?
75
+ layouts:
76
+ decidim:
77
+ shared:
78
+ layout_center:
79
+ alert: En fournissant ces informations, vous contribuez à l'analyse statistique qui aide à améliorer l'indicateur de qualité. Vos données seront agrégées et utilisées uniquement à des fins de recherche.
@@ -0,0 +1 @@
1
+ ga:
@@ -0,0 +1 @@
1
+ gl:
@@ -0,0 +1 @@
1
+ gn:
@@ -0,0 +1 @@
1
+ he:
@@ -0,0 +1 @@
1
+ hr:
@@ -0,0 +1 @@
1
+ hu:
@@ -0,0 +1 @@
1
+ id:
@@ -0,0 +1 @@
1
+ is-IS:
@@ -0,0 +1 @@
1
+ it:
@@ -0,0 +1,79 @@
1
+ ---
2
+ ja:
3
+ decidim:
4
+ demographics:
5
+ actions:
6
+ title: アクション
7
+ admin:
8
+ demographics:
9
+ tabs_menu:
10
+ title: デモグラフィック
11
+ demographics_menu:
12
+ questions: 質問
13
+ responses: 回答
14
+ settings: 設定
15
+ publish_responses:
16
+ index:
17
+ description: 説明
18
+ title: 回答を表示
19
+ questions:
20
+ edit:
21
+ save: 保存
22
+ title: 質問
23
+ questions_form:
24
+ add_question: 質問を追加
25
+ collapse: すべての質問を折りたたむ
26
+ expand: すべての質問を展開
27
+ responses:
28
+ index:
29
+ publish_responses: 回答を表示
30
+ title: "回答数 %{total} 件"
31
+ settings:
32
+ show:
33
+ collect_data: デモグラフィックデータ収集を有効にする
34
+ collect_data_help: この設定を有効にすると、ユーザーはデータをプラットフォームに提供できます。
35
+ save: 保存
36
+ title: 設定
37
+ update:
38
+ invalid: デモグラフィックデータの保存中にエラーが発生しました
39
+ success: デモグラフィックデータを保存しました
40
+ title: デモグラフィック
41
+ demographics:
42
+ questionnaire:
43
+ delete_my_data: データを削除
44
+ modal_close: キャンセル
45
+ modal_ok: OK
46
+ modal_question: すべてのデモグラフィックデータが削除されます。
47
+ modal_title: データを削除
48
+ submit: データを保存
49
+ terms_of_service: 利用規約
50
+ tos_agreement: 参加いただくことで、%{link} に同意したものとみなされます。
51
+ show:
52
+ page_title: デモグラフィックデータの提供
53
+ destroy:
54
+ error: 提供されたデータの削除中にエラーが発生しました
55
+ success: 提供されたデータを削除しました
56
+ name: デモグラフィックデータの提供
57
+ questions:
58
+ age:
59
+ options:
60
+ - 15歳から29歳
61
+ - 30歳から44歳
62
+ - 45歳から64歳
63
+ - 65歳以上
64
+ question: あなたの年齢
65
+ gender:
66
+ options:
67
+ - 男性
68
+ - 女性
69
+ - その他
70
+ - 私の性別はリストにありません
71
+ - 回答を希望しない
72
+ question: あなたの性別を最もよく表しているのは次のうちどれですか?
73
+ postal:
74
+ question: 自宅の郵便番号は何ですか?
75
+ layouts:
76
+ decidim:
77
+ shared:
78
+ layout_center:
79
+ alert: この情報を提供することで、品質指標の改善に役立つ統計分析に貢献いただけます。提供していただいたデータは集計され、研究目的のみに使用されます。
@@ -0,0 +1 @@
1
+ ka:
@@ -0,0 +1 @@
1
+ kaa:
@@ -0,0 +1 @@
1
+ ko:
@@ -0,0 +1 @@
1
+ lb:
@@ -0,0 +1 @@
1
+ lo:
@@ -0,0 +1 @@
1
+ lt:
@@ -0,0 +1 @@
1
+ lv:
@@ -0,0 +1 @@
1
+ mt:
@@ -0,0 +1 @@
1
+ nl:
@@ -0,0 +1,8 @@
1
+ ---
2
+ "no":
3
+ decidim:
4
+ demographics:
5
+ admin:
6
+ demographics:
7
+ tabs_menu:
8
+ title: Demografi
@@ -0,0 +1 @@
1
+ oc:
@@ -0,0 +1 @@
1
+ om:
@@ -0,0 +1 @@
1
+ pl:
@@ -0,0 +1 @@
1
+ pt-BR:
@@ -0,0 +1 @@
1
+ pt:
@@ -0,0 +1 @@
1
+ ro:
@@ -0,0 +1 @@
1
+ ru:
@@ -0,0 +1 @@
1
+ si:
@@ -0,0 +1 @@
1
+ sk:
@@ -0,0 +1 @@
1
+ sl:
@@ -0,0 +1 @@
1
+ so:
@@ -0,0 +1 @@
1
+ sq:
@@ -0,0 +1 @@
1
+ sr:
@@ -0,0 +1,79 @@
1
+ ---
2
+ sv:
3
+ decidim:
4
+ demographics:
5
+ actions:
6
+ title: Handlingar
7
+ admin:
8
+ demographics:
9
+ tabs_menu:
10
+ title: Demografi
11
+ demographics_menu:
12
+ questions: Frågor
13
+ responses: Svar
14
+ settings: Inställningar
15
+ publish_responses:
16
+ index:
17
+ description: Beskrivning
18
+ title: Visa svar
19
+ questions:
20
+ edit:
21
+ save: Spara
22
+ title: Frågor
23
+ questions_form:
24
+ add_question: Lägg till fråga
25
+ collapse: Dölj alla frågor
26
+ expand: Visa alla frågor
27
+ responses:
28
+ index:
29
+ publish_responses: Visa svar
30
+ title: "%{total} svar totalt"
31
+ settings:
32
+ show:
33
+ collect_data: Aktivera demografisk datainsamling
34
+ collect_data_help: Aktivering av denna inställning gör det möjligt för användare att donera sina data till plattformen.
35
+ save: Spara
36
+ title: Inställningar
37
+ update:
38
+ invalid: Det gick inte att spara demografiska data
39
+ success: Demografiska data har sparats
40
+ title: Demografi
41
+ demographics:
42
+ questionnaire:
43
+ delete_my_data: Ta bort data
44
+ modal_close: Avbryt
45
+ modal_ok: Ok
46
+ modal_question: Alla dina demografiska data kommer att tas bort.
47
+ modal_title: Radera data
48
+ submit: Spara data
49
+ terms_of_service: användarvillkor
50
+ tos_agreement: Genom att delta accepterar du %{link}.
51
+ show:
52
+ page_title: Demografisk data donation
53
+ destroy:
54
+ error: Det gick inte att ta bort dina donerade data
55
+ success: Dina donerade data har tagits bort
56
+ name: Demografisk data donation
57
+ questions:
58
+ age:
59
+ options:
60
+ - 15 till 29 år
61
+ - 30 till 44 år
62
+ - 45 till 64 år
63
+ - 65 år eller äldre
64
+ question: Hur gammal är du?
65
+ gender:
66
+ options:
67
+ - Man
68
+ - Kvinna
69
+ - Icke-binär
70
+ - Mitt kön är inte listat
71
+ - Föredra att inte svara
72
+ question: Vilket av följande beskriver dig bäst?
73
+ postal:
74
+ question: Vad är ditt hempostnummer?
75
+ layouts:
76
+ decidim:
77
+ shared:
78
+ layout_center:
79
+ alert: Genom att tillhandahålla denna information bidrar du till statistisk analys som kan förbättra deltagandekvaliteten. Dina data kommer att aggregeras och endast användas för forskningsändamål.
@@ -0,0 +1 @@
1
+ sw:
@@ -0,0 +1 @@
1
+ th:
@@ -0,0 +1 @@
1
+ ti:
@@ -0,0 +1 @@
1
+ tr:
@@ -0,0 +1 @@
1
+ uk:
@@ -0,0 +1 @@
1
+ val:
@@ -0,0 +1 @@
1
+ vi:
@@ -0,0 +1 @@
1
+ zh-CN:
@@ -0,0 +1 @@
1
+ zh-TW:
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ class CreateDecidimDemographicsDemographics < ActiveRecord::Migration[5.2]
4
+ def change
5
+ create_table :decidim_demographics_demographics do |t|
6
+ t.belongs_to :decidim_organization, index: { name: :decidim_demographics_demographics_on_organization_id }, foreign_key: true, null: false
7
+ t.boolean :collect_data, null: false, default: false
8
+
9
+ t.timestamps
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,37 @@
1
+ # frozen_string_literal: true
2
+
3
+ $LOAD_PATH.push File.expand_path("lib", __dir__)
4
+
5
+ require "decidim/demographics/version"
6
+
7
+ Gem::Specification.new do |s|
8
+ s.version = Decidim::Demographics.version
9
+ s.authors = ["Alexandru-Emil Lupu"]
10
+ s.email = ["contact@alecslupu.ro"]
11
+ s.license = "AGPL-3.0-or-later"
12
+ s.homepage = "https://decidim.org"
13
+ s.metadata = {
14
+ "bug_tracker_uri" => "https://github.com/decidim/decidim/issues",
15
+ "documentation_uri" => "https://docs.decidim.org/",
16
+ "funding_uri" => "https://opencollective.com/decidim",
17
+ "homepage_uri" => "https://decidim.org",
18
+ "source_code_uri" => "https://github.com/decidim/decidim"
19
+ }
20
+ s.required_ruby_version = "~> 3.3.0"
21
+
22
+ s.name = "decidim-demographics"
23
+ s.summary = "A decidim demographics module"
24
+ s.description = "Module that collects demographic data about participants."
25
+
26
+ s.files = Dir.chdir(__dir__) do
27
+ `git ls-files -z`.split("\x0").select do |f|
28
+ (File.expand_path(f) == __FILE__) ||
29
+ f.start_with?(*%w(app/ config/ db/ lib/ Rakefile README.md))
30
+ end
31
+ end
32
+
33
+ s.add_dependency "decidim-core", Decidim::Demographics.version
34
+ s.add_dependency "decidim-forms", Decidim::Demographics.version
35
+
36
+ s.add_development_dependency "decidim-dev", Decidim::Demographics.version
37
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Demographics
5
+ # This module contains all the domain logic associated to Decidim's Demographics
6
+ # component admin panel.
7
+ module Admin
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,83 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Demographics
5
+ # This is the engine that runs on the admin interface of `decidim-demographics`.
6
+ # It handles rendering the admin interface for demographics
7
+ class AdminEngine < ::Rails::Engine
8
+ isolate_namespace Decidim::Demographics::Admin
9
+
10
+ paths["db/migrate"] = nil
11
+ paths["lib/tasks"] = nil
12
+
13
+ routes do
14
+ resources :demographics, only: [:index] do
15
+ collection do
16
+ resource :settings, only: [:show, :update]
17
+
18
+ resource :questions, only: [:edit_questions, :update_questions] do
19
+ collection do
20
+ get :edit_questions
21
+ patch :update_questions
22
+ end
23
+ end
24
+
25
+ resources :responses, only: [:index, :show] do
26
+ member do
27
+ get :export_response
28
+ end
29
+ end
30
+ resources :publish_responses, only: [:index]
31
+ end
32
+ end
33
+ end
34
+
35
+ initializer "decidim_admin_demographics.register_admin" do
36
+ Decidim::Admin::Engine.routes do
37
+ mount Decidim::Demographics::AdminEngine => "/", :as => :decidim_admin_demographics
38
+ end
39
+ end
40
+
41
+ initializer "decidim_admin_demographics.user_menu" do
42
+ Decidim.menu :admin_insights_menu do |menu|
43
+ menu.add_item :demographics,
44
+ I18n.t("title", scope: "decidim.demographics.admin"),
45
+ decidim_admin_demographics.settings_path,
46
+ position: 1.8,
47
+ icon_name: "team-line",
48
+ if: allowed_to?(:update, :organization, organization: current_organization),
49
+ active:
50
+ is_active_link?(decidim_admin_demographics.settings_path) ||
51
+ is_active_link?(decidim_admin_demographics.responses_path) ||
52
+ is_active_link?(decidim_admin_demographics.publish_responses_path) ||
53
+ is_active_link?(decidim_admin_demographics.edit_questions_questions_path)
54
+ end
55
+ end
56
+
57
+ initializer "decidim_admin_demographics.menu" do
58
+ Decidim.menu :admin_demographics_menu do |menu|
59
+ menu.add_item :demographics_settings_edit,
60
+ I18n.t("settings", scope: "decidim.demographics.admin.demographics_menu"),
61
+ decidim_admin_demographics.settings_path,
62
+ icon_name: "settings-4-line"
63
+
64
+ menu.add_item :demographics_questions_edit,
65
+ I18n.t("questions", scope: "decidim.demographics.admin.demographics_menu"),
66
+ decidim_admin_demographics.edit_questions_questions_path,
67
+ icon_name: "question-answer-line"
68
+
69
+ menu.add_item :demographics_responses_view,
70
+ I18n.t("responses", scope: "decidim.demographics.admin.demographics_menu"),
71
+ decidim_admin_demographics.responses_path,
72
+ icon_name: "draft-line",
73
+ active: is_active_link?(decidim_admin_demographics.responses_path) ||
74
+ is_active_link?(decidim_admin_demographics.publish_responses_path)
75
+ end
76
+ end
77
+
78
+ def load_seed
79
+ nil
80
+ end
81
+ end
82
+ end
83
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Decidim
4
+ module Demographics
5
+ # This is the engine that runs on the public interface of `decidim-demographics`.
6
+ # It handles the interaction between participant and own demographic data
7
+ class Engine < ::Rails::Engine
8
+ isolate_namespace Decidim::Demographics
9
+
10
+ routes do
11
+ resource :demographics, only: [:show, :respond, :destroy] do
12
+ collection do
13
+ post :respond
14
+ end
15
+ end
16
+ end
17
+
18
+ initializer "decidim_demographics.register_admin" do
19
+ Decidim::Core::Engine.routes do
20
+ mount Decidim::Demographics::Engine => "/", :as => :demographics_engine
21
+ end
22
+ end
23
+
24
+ initializer "decidim_demographics.user_menu" do
25
+ Decidim.menu :user_menu do |menu|
26
+ menu.add_item :demographics,
27
+ t("name", scope: "decidim.demographics"),
28
+ demographics_engine.demographics_path,
29
+ position: 1.0,
30
+ active: is_active_link?(demographics_engine.demographics_path)
31
+
32
+ menu.move :demographics, after: :download_your_data
33
+ end
34
+ end
35
+
36
+ initializer "decidim_demographics.shakapacker.assets_path" do
37
+ Decidim.register_assets_path File.expand_path("app/packs", root)
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "decidim/components/namer"
4
+ require "decidim/faker/localized"
5
+ require "decidim/core/test/factories"
6
+ require "decidim/participatory_processes/test/factories"
7
+
8
+ FactoryBot.define do
9
+ factory :demographic, class: "Decidim::Demographics::Demographic" do
10
+ transient do
11
+ skip_injection { false }
12
+ end
13
+
14
+ organization
15
+ end
16
+ end