decidim-elections 0.22.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (104) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +31 -0
  3. data/Rakefile +3 -0
  4. data/app/assets/config/decidim_elections_manifest.js +0 -0
  5. data/app/assets/images/decidim/elections/icon.svg +1 -0
  6. data/app/commands/decidim/elections/admin/create_answer.rb +71 -0
  7. data/app/commands/decidim/elections/admin/create_election.rb +48 -0
  8. data/app/commands/decidim/elections/admin/create_question.rb +52 -0
  9. data/app/commands/decidim/elections/admin/destroy_answer.rb +50 -0
  10. data/app/commands/decidim/elections/admin/destroy_election.rb +46 -0
  11. data/app/commands/decidim/elections/admin/destroy_question.rb +46 -0
  12. data/app/commands/decidim/elections/admin/update_answer.rb +73 -0
  13. data/app/commands/decidim/elections/admin/update_election.rb +48 -0
  14. data/app/commands/decidim/elections/admin/update_question.rb +52 -0
  15. data/app/controllers/decidim/elections/admin/answers_controller.rb +92 -0
  16. data/app/controllers/decidim/elections/admin/application_controller.rb +15 -0
  17. data/app/controllers/decidim/elections/admin/elections_controller.rb +82 -0
  18. data/app/controllers/decidim/elections/admin/questions_controller.rb +86 -0
  19. data/app/controllers/decidim/elections/application_controller.rb +13 -0
  20. data/app/controllers/decidim/elections/elections_controller.rb +9 -0
  21. data/app/forms/decidim/elections/admin/answer_form.rb +53 -0
  22. data/app/forms/decidim/elections/admin/election_form.rb +24 -0
  23. data/app/forms/decidim/elections/admin/question_form.rb +26 -0
  24. data/app/helpers/decidim/elections/application_helper.rb +10 -0
  25. data/app/models/decidim/elections/answer.rb +26 -0
  26. data/app/models/decidim/elections/application_record.rb +10 -0
  27. data/app/models/decidim/elections/election.rb +22 -0
  28. data/app/models/decidim/elections/question.rb +20 -0
  29. data/app/permissions/decidim/elections/admin/permissions.rb +42 -0
  30. data/app/permissions/decidim/elections/permissions.rb +16 -0
  31. data/app/types/decidim/elections/election_answer_type.rb +24 -0
  32. data/app/types/decidim/elections/election_question_type.rb +25 -0
  33. data/app/types/decidim/elections/election_type.rb +26 -0
  34. data/app/types/decidim/elections/elections_type.rb +32 -0
  35. data/app/views/decidim/elections/admin/answers/_form.html.erb +25 -0
  36. data/app/views/decidim/elections/admin/answers/edit.html.erb +7 -0
  37. data/app/views/decidim/elections/admin/answers/index.html.erb +46 -0
  38. data/app/views/decidim/elections/admin/answers/new.html.erb +7 -0
  39. data/app/views/decidim/elections/admin/answers/proposals_picker.html.erb +1 -0
  40. data/app/views/decidim/elections/admin/elections/_form.html.erb +28 -0
  41. data/app/views/decidim/elections/admin/elections/edit.html.erb +7 -0
  42. data/app/views/decidim/elections/admin/elections/index.html.erb +54 -0
  43. data/app/views/decidim/elections/admin/elections/new.html.erb +7 -0
  44. data/app/views/decidim/elections/admin/questions/_form.html.erb +27 -0
  45. data/app/views/decidim/elections/admin/questions/edit.html.erb +7 -0
  46. data/app/views/decidim/elections/admin/questions/index.html.erb +53 -0
  47. data/app/views/decidim/elections/admin/questions/new.html.erb +7 -0
  48. data/app/views/decidim/elections/elections/index.html.erb +1 -0
  49. data/app/views/decidim/elections/elections/show.html.erb +0 -0
  50. data/config/i18n-tasks.yml +10 -0
  51. data/config/locales/ar.yml +1 -0
  52. data/config/locales/bg-BG.yml +7 -0
  53. data/config/locales/ca.yml +132 -0
  54. data/config/locales/cs.yml +138 -0
  55. data/config/locales/da-DK.yml +1 -0
  56. data/config/locales/de.yml +132 -0
  57. data/config/locales/el.yml +132 -0
  58. data/config/locales/en.yml +133 -0
  59. data/config/locales/eo-UY.yml +1 -0
  60. data/config/locales/es-MX.yml +132 -0
  61. data/config/locales/es-PY.yml +132 -0
  62. data/config/locales/es.yml +132 -0
  63. data/config/locales/et-EE.yml +1 -0
  64. data/config/locales/eu.yml +1 -0
  65. data/config/locales/fi-plain.yml +132 -0
  66. data/config/locales/fi.yml +132 -0
  67. data/config/locales/fr-CA.yml +132 -0
  68. data/config/locales/fr.yml +132 -0
  69. data/config/locales/ga-IE.yml +1 -0
  70. data/config/locales/gl.yml +1 -0
  71. data/config/locales/hr-HR.yml +1 -0
  72. data/config/locales/hu.yml +1 -0
  73. data/config/locales/id-ID.yml +1 -0
  74. data/config/locales/is-IS.yml +1 -0
  75. data/config/locales/it.yml +132 -0
  76. data/config/locales/ja-JP.yml +129 -0
  77. data/config/locales/lt-LT.yml +1 -0
  78. data/config/locales/lv-LV.yml +135 -0
  79. data/config/locales/mt-MT.yml +1 -0
  80. data/config/locales/nl.yml +132 -0
  81. data/config/locales/no.yml +9 -0
  82. data/config/locales/pl.yml +138 -0
  83. data/config/locales/pt-BR.yml +1 -0
  84. data/config/locales/pt.yml +132 -0
  85. data/config/locales/ro-RO.yml +135 -0
  86. data/config/locales/ru.yml +1 -0
  87. data/config/locales/sk.yml +1 -0
  88. data/config/locales/sl.yml +5 -0
  89. data/config/locales/sr-CS.yml +1 -0
  90. data/config/locales/sv.yml +132 -0
  91. data/config/locales/tr-TR.yml +1 -0
  92. data/config/locales/uk.yml +1 -0
  93. data/db/migrate/20200430083618_create_decidim_elections_elections.rb +15 -0
  94. data/db/migrate/20200518082327_create_decidim_elections_questions.rb +14 -0
  95. data/db/migrate/20200518084144_create_decidim_elections_answers.rb +12 -0
  96. data/lib/decidim/elections.rb +13 -0
  97. data/lib/decidim/elections/admin.rb +10 -0
  98. data/lib/decidim/elections/admin_engine.rb +29 -0
  99. data/lib/decidim/elections/component.rb +123 -0
  100. data/lib/decidim/elections/engine.rb +23 -0
  101. data/lib/decidim/elections/seeds/city.jpeg +0 -0
  102. data/lib/decidim/elections/test/factories.rb +52 -0
  103. data/lib/decidim/elections/version.rb +10 -0
  104. metadata +201 -0
@@ -0,0 +1,7 @@
1
+ <%= decidim_form_for(@form, html: { class: "form new_election" }) do |f| %>
2
+ <%= render partial: "form", object: f, locals: { title: t(".title") } %>
3
+
4
+ <div class="button--double form-general-submit">
5
+ <%= f.submit t(".create") %>
6
+ </div>
7
+ <% end %>
@@ -0,0 +1,27 @@
1
+ <div class="card">
2
+ <div class="card-divider">
3
+ <h2 class="card-title"><%= title %></h2>
4
+ </div>
5
+
6
+ <div class="card-section">
7
+ <div class="row column">
8
+ <%= form.translated :text_field, :title, autofocus: true %>
9
+ </div>
10
+
11
+ <div class="row column">
12
+ <%= form.translated :editor, :description %>
13
+ </div>
14
+
15
+ <div class="row column">
16
+ <%= form.number_field :max_selections, step: 1, min: 0 %>
17
+ </div>
18
+
19
+ <div class="row column">
20
+ <%= form.number_field :weight %>
21
+ </div>
22
+
23
+ <div class="row column">
24
+ <%= form.check_box :random_answers_order %>
25
+ </div>
26
+ </div>
27
+ </div>
@@ -0,0 +1,7 @@
1
+ <%= decidim_form_for([election, @form], html: { class: "form edit_question" }) do |f| %>
2
+ <%= render partial: "form", object: f, locals: { title: t(".title") } %>
3
+
4
+ <div class="button--double form-general-submit">
5
+ <%= f.submit t(".update") %>
6
+ </div>
7
+ <% end %>
@@ -0,0 +1,53 @@
1
+ <div class="card">
2
+ <div class="card-divider">
3
+ <h2 class="card-title">
4
+ <%= link_to translated_attribute(election.title), elections_path %> &gt;
5
+ <%= t(".title") %>
6
+
7
+ <%= link_to t("actions.new", scope: "decidim.elections", name: t("models.question.name", scope: "decidim.elections.admin")), new_election_question_path(election), class: "button tiny button--title" if allowed_to? :create, :question, election: election %>
8
+ </h2>
9
+ </div>
10
+
11
+ <div class="card-section">
12
+ <div class="table-scroll">
13
+ <table class="table-list">
14
+ <thead>
15
+ <tr>
16
+ <th><%= t("models.question.fields.title", scope: "decidim.elections") %></th>
17
+ <th><%= t("models.question.fields.answers", scope: "decidim.elections") %></th>
18
+ <th><%= t("models.question.fields.max_selections", scope: "decidim.elections") %></th>
19
+ <th class="actions"><%= t("actions.title", scope: "decidim.elections") %></th>
20
+ </tr>
21
+ </thead>
22
+ <tbody>
23
+ <% questions.each do |question| %>
24
+ <tr data-id="<%= question.id %>">
25
+ <td>
26
+ <%= link_to translated_attribute(question.title), election_question_answers_path(election, question) %>
27
+ </td>
28
+ <td>
29
+ <%= question.answers.count %>
30
+ </td>
31
+ <td>
32
+ <% if question.max_selections.zero? %>
33
+ -
34
+ <% else %>
35
+ <%= question.max_selections %>
36
+ <% end %>
37
+ </td>
38
+ <td class="table-list__actions">
39
+ <% if allowed_to? :update, :question, election: election, question: question %>
40
+ <%= icon_link_to "pencil", edit_election_question_path(election, question), t("actions.edit", scope: "decidim.elections"), class: "action-icon--edit" %>
41
+ <% end %>
42
+
43
+ <% if allowed_to? :delete, :question, election: election, question: question %>
44
+ <%= icon_link_to "circle-x", election_question_path(election, question), t("actions.destroy", scope: "decidim.elections"), method: :delete, class: "action-icon--remove", data: { confirm: t("actions.confirm_destroy", scope: "decidim.elections") } %>
45
+ <% end %>
46
+ </td>
47
+ </tr>
48
+ <% end %>
49
+ </tbody>
50
+ </table>
51
+ </div>
52
+ </div>
53
+ </div>
@@ -0,0 +1,7 @@
1
+ <%= decidim_form_for([election, @form], html: { class: "form new_question" }) do |f| %>
2
+ <%= render partial: "form", object: f, locals: { title: t(".title") } %>
3
+
4
+ <div class="button--double form-general-submit">
5
+ <%= f.submit t(".create") %>
6
+ </div>
7
+ <% end %>
@@ -0,0 +1 @@
1
+ <%= render partial: "decidim/shared/component_announcement" %>
@@ -0,0 +1,10 @@
1
+ ---
2
+
3
+ base_locale: en
4
+ locales: [en]
5
+
6
+ ignore_unused:
7
+ - "decidim.components.elections.name"
8
+
9
+ ignore_missing:
10
+ - decidim.participatory_processes.scopes.global
@@ -0,0 +1 @@
1
+ ar:
@@ -0,0 +1,7 @@
1
+ bg:
2
+ activemodel:
3
+ attributes:
4
+ answer:
5
+ description: Описание
6
+ image: Изображение
7
+ proposals: Свързани предложения
@@ -0,0 +1,132 @@
1
+ ca:
2
+ activemodel:
3
+ attributes:
4
+ answer:
5
+ description: Descripció
6
+ image: Imatge
7
+ proposals: Propostes relacionades
8
+ title: Títol
9
+ election:
10
+ description: Descripció
11
+ end_time: La votació finalitza el
12
+ start_time: La votació comença el
13
+ subtitle: Subtítol
14
+ title: Títol
15
+ question:
16
+ description: Descripció
17
+ max_selections: Número màxim d'opcions
18
+ title: Títol
19
+ errors:
20
+ models:
21
+ answer:
22
+ attributes:
23
+ attachment:
24
+ needs_to_be_reattached: És necessari tornar a adjuntar l'arxiu
25
+ activerecord:
26
+ models:
27
+ decidim/elections/answer:
28
+ one: Resposta
29
+ other: Respostes
30
+ decidim/elections/election:
31
+ one: Votació
32
+ other: Votacions
33
+ decidim/elections/question:
34
+ one: Pregunta
35
+ other: Preguntes
36
+ decidim:
37
+ components:
38
+ elections:
39
+ name: Votacions
40
+ settings:
41
+ global:
42
+ announcement: Avís
43
+ step:
44
+ announcement: Avís
45
+ elections:
46
+ actions:
47
+ confirm_destroy: N'estàs segura?
48
+ destroy: Destruir
49
+ edit: Editar
50
+ new: Nova %{name}
51
+ preview: Previsualitzar
52
+ title: Accions
53
+ admin:
54
+ answers:
55
+ create:
56
+ invalid: Hi ha hagut un problema en crear aquesta resposta
57
+ success: Resposta creada amb èxit
58
+ destroy:
59
+ invalid: Hi ha hagut un problema en borrar aquesta resposta
60
+ success: Resposta creada amb èxit
61
+ edit:
62
+ title: Editar les respostes
63
+ update: Actualitzar resposta
64
+ index:
65
+ title: Respostes
66
+ new:
67
+ create: Crear resposta
68
+ title: Nova resposta
69
+ update:
70
+ invalid: Hi ha hagut un problema en crear aquesta resposta
71
+ success: Resposta actualitzada amb èxit
72
+ elections:
73
+ create:
74
+ invalid: S'ha produït un error en crear aquesta votació
75
+ success: S'ha creat la votació correctament
76
+ destroy:
77
+ invalid: S'ha produït un error en crear aquesta votació
78
+ success: S'ha eliminat la votació correctament
79
+ edit:
80
+ title: Editar la votació
81
+ update: Actualitzar la votació
82
+ index:
83
+ title: Votacions
84
+ new:
85
+ create: Crear una votació
86
+ title: Nova votació
87
+ update:
88
+ invalid: S'ha produït un error en actualitzar aquesta votació
89
+ success: S'ha actualitzat la votació correctament
90
+ models:
91
+ answer:
92
+ name: Resposta
93
+ election:
94
+ name: Votació
95
+ question:
96
+ name: Pregunta
97
+ questions:
98
+ create:
99
+ invalid: S'ha produït un error en crear aquesta pregunta
100
+ success: S'ha creat la pregunta correctament
101
+ destroy:
102
+ invalid: S'ha produït un error en esborrar aquesta votació
103
+ success: S'ha eliminat la pregunta correctament
104
+ edit:
105
+ title: Editar pregunta
106
+ update: Actualitzar la pregunta
107
+ index:
108
+ title: Preguntes
109
+ new:
110
+ create: Crear una pregunta
111
+ title: Nova pregunta
112
+ update:
113
+ invalid: S'ha produït un error en actualitzar aquesta pregunta
114
+ success: La pregunta s'ha actualitzat correctament
115
+ models:
116
+ answer:
117
+ fields:
118
+ proposals: Propostes
119
+ title: Títol
120
+ election:
121
+ fields:
122
+ end_time: Finalitza el
123
+ start_time: Comença el
124
+ title: Títol
125
+ question:
126
+ fields:
127
+ answers: Respostes
128
+ max_selections: Número màxim d'elements a seleccionar
129
+ title: Títol
130
+ participatory_processes:
131
+ statistics:
132
+ elections_count: Votacions
@@ -0,0 +1,138 @@
1
+ cs:
2
+ activemodel:
3
+ attributes:
4
+ answer:
5
+ description: Popis
6
+ image: Obrázek
7
+ proposals: Související návrhy
8
+ title: Název
9
+ election:
10
+ description: Popis
11
+ end_time: Hlasování končí v
12
+ start_time: Hlasování začíná v
13
+ subtitle: Podtitulek
14
+ title: Název
15
+ question:
16
+ description: Popis
17
+ max_selections: Maximální počet výběrů
18
+ title: Název
19
+ errors:
20
+ models:
21
+ answer:
22
+ attributes:
23
+ attachment:
24
+ needs_to_be_reattached: Potřebuje být znovu připojen
25
+ activerecord:
26
+ models:
27
+ decidim/elections/answer:
28
+ one: Odpověď
29
+ few: Odpovědí
30
+ many: Odpovědí
31
+ other: Odpovědi
32
+ decidim/elections/election:
33
+ one: Volby
34
+ few: Voleb
35
+ many: Voleb
36
+ other: Volby
37
+ decidim/elections/question:
38
+ one: Otázka
39
+ few: Otázek
40
+ many: Otázek
41
+ other: Otázek
42
+ decidim:
43
+ components:
44
+ elections:
45
+ name: Volby
46
+ settings:
47
+ global:
48
+ announcement: Oznámení
49
+ step:
50
+ announcement: Oznámení
51
+ elections:
52
+ actions:
53
+ confirm_destroy: Jste si jisti?
54
+ destroy: Zničit
55
+ edit: Upravit
56
+ new: Nový %{name}
57
+ preview: Náhled
58
+ title: Akce
59
+ admin:
60
+ answers:
61
+ create:
62
+ invalid: Při vytváření této odpovědi došlo k chybě
63
+ success: Odpověď byla úspěšně vytvořena
64
+ destroy:
65
+ invalid: Při odstraňování této odpovědi došlo k potížím
66
+ success: Odpověď byla úspěšně odstraněna
67
+ edit:
68
+ title: Upravit odpověď
69
+ update: Aktualizovat odpověď
70
+ index:
71
+ title: Odpovědi
72
+ new:
73
+ create: Vytvořit odpověď
74
+ title: Nová odpověď
75
+ update:
76
+ invalid: Při aktualizaci této odpovědi došlo k chybě
77
+ success: Odpověď byla úspěšně aktualizována
78
+ elections:
79
+ create:
80
+ invalid: Při vytváření těchto voleb došlo k chybě
81
+ success: Volba byla úspěšně vytvořena
82
+ destroy:
83
+ invalid: Při mazání této volby došlo k chybě
84
+ success: Volba byla úspěšně odstraněna
85
+ edit:
86
+ title: Upravit volbu
87
+ update: Aktualizovat volby
88
+ index:
89
+ title: Volby
90
+ new:
91
+ create: Vytvořit volbu
92
+ title: Nové volby
93
+ update:
94
+ invalid: Při aktualizaci těchto voleb došlo k chybě
95
+ success: Volba byla úspěšně aktualizována
96
+ models:
97
+ answer:
98
+ name: Odpověď
99
+ election:
100
+ name: Volby
101
+ question:
102
+ name: Otázka
103
+ questions:
104
+ create:
105
+ invalid: Při vytváření této otázky došlo k chybě
106
+ success: Otázka byla úspěšně vytvořena
107
+ destroy:
108
+ invalid: Při odstraňování této otázky došlo k chybě
109
+ success: Otázka byla úspěšně odstraněna
110
+ edit:
111
+ title: Upravit otázku
112
+ update: Aktualizovat otázku
113
+ index:
114
+ title: Otázky
115
+ new:
116
+ create: Vytvořit otázku
117
+ title: Nová otázka
118
+ update:
119
+ invalid: Při aktualizaci této otázky došlo k chybě
120
+ success: Otázka byla úspěšně aktualizována
121
+ models:
122
+ answer:
123
+ fields:
124
+ proposals: Návrhy
125
+ title: Název
126
+ election:
127
+ fields:
128
+ end_time: Končí v
129
+ start_time: Začíná v
130
+ title: Název
131
+ question:
132
+ fields:
133
+ answers: Odpovědi
134
+ max_selections: Max. výběr
135
+ title: Název
136
+ participatory_processes:
137
+ statistics:
138
+ elections_count: Volby
@@ -0,0 +1 @@
1
+ da:
@@ -0,0 +1,132 @@
1
+ de:
2
+ activemodel:
3
+ attributes:
4
+ answer:
5
+ description: Beschreibung
6
+ image: Bild
7
+ proposals: Ähnliche Vorschläge
8
+ title: Titel
9
+ election:
10
+ description: Beschreibung
11
+ end_time: Die Abstimmung endet um
12
+ start_time: Die Abstimmung beginnt um
13
+ subtitle: Untertitel
14
+ title: Titel
15
+ question:
16
+ description: Beschreibung
17
+ max_selections: Maximale Anzahl von Auswahlen
18
+ title: Titel
19
+ errors:
20
+ models:
21
+ answer:
22
+ attributes:
23
+ attachment:
24
+ needs_to_be_reattached: Muss erneut angehängt werden
25
+ activerecord:
26
+ models:
27
+ decidim/elections/answer:
28
+ one: Antwort
29
+ other: Antworten
30
+ decidim/elections/election:
31
+ one: Wahl
32
+ other: Wahlen
33
+ decidim/elections/question:
34
+ one: Frage
35
+ other: Fragen
36
+ decidim:
37
+ components:
38
+ elections:
39
+ name: Wahlen
40
+ settings:
41
+ global:
42
+ announcement: Ankündigung
43
+ step:
44
+ announcement: Ankündigung
45
+ elections:
46
+ actions:
47
+ confirm_destroy: Sind Sie sicher?
48
+ destroy: Löschen
49
+ edit: Bearbeiten
50
+ new: Neue(r/s) %{name}
51
+ preview: Vorschau
52
+ title: Aktionen
53
+ admin:
54
+ answers:
55
+ create:
56
+ invalid: Beim Erstellen dieser Antwort ist ein Fehler aufgetreten
57
+ success: Antwort wurde erfolgreich erstellt
58
+ destroy:
59
+ invalid: Beim Löschen dieser Antwort ist ein Fehler aufgetreten
60
+ success: Antwort wurde erfolgreich gelöscht
61
+ edit:
62
+ title: Antwort bearbeiten
63
+ update: Antwort aktualisieren
64
+ index:
65
+ title: Antworten
66
+ new:
67
+ create: Antwort erstellen
68
+ title: Neue Antwort
69
+ update:
70
+ invalid: Beim Aktualisieren dieser Antwort ist ein Fehler aufgetreten
71
+ success: Antwort wurde erfolgreich aktualisiert
72
+ elections:
73
+ create:
74
+ invalid: Beim Erstellen dieser Wahl ist ein Fehler aufgetreten
75
+ success: Wahl wurde erfolgreich erstellt
76
+ destroy:
77
+ invalid: Beim Löschen dieser Wahl ist ein Fehler aufgetreten
78
+ success: Wahl wurde erfolgreich gelöscht
79
+ edit:
80
+ title: Wahl bearbeiten
81
+ update: Wahl aktualisieren
82
+ index:
83
+ title: Wahlen
84
+ new:
85
+ create: Wahl erstellen
86
+ title: Neue Wahl
87
+ update:
88
+ invalid: Beim Aktualisieren dieser Wahl ist ein Fehler aufgetreten
89
+ success: Wahl wurde erfolgreich aktualisiert
90
+ models:
91
+ answer:
92
+ name: Antwort
93
+ election:
94
+ name: Wahl
95
+ question:
96
+ name: Frage
97
+ questions:
98
+ create:
99
+ invalid: Beim Erstellen dieser Frage ist ein Fehler aufgetreten
100
+ success: Frage wurde erfolgreich erstellt
101
+ destroy:
102
+ invalid: Beim Löschen dieser Frage ist ein Fehler aufgetreten
103
+ success: Frage wurde erfolgreich gelöscht
104
+ edit:
105
+ title: Frage bearbeiten
106
+ update: Frage aktualisieren
107
+ index:
108
+ title: Fragen
109
+ new:
110
+ create: Frage erstellen
111
+ title: Neue Frage
112
+ update:
113
+ invalid: Beim Aktualisieren dieser Frage ist ein Fehler aufgetreten
114
+ success: Frage wurde erfolgreich aktualisiert
115
+ models:
116
+ answer:
117
+ fields:
118
+ proposals: Vorschläge
119
+ title: Titel
120
+ election:
121
+ fields:
122
+ end_time: Endet um
123
+ start_time: Beginnt um
124
+ title: Titel
125
+ question:
126
+ fields:
127
+ answers: Antworten
128
+ max_selections: Maximale Auswahl
129
+ title: Titel
130
+ participatory_processes:
131
+ statistics:
132
+ elections_count: Wahlen