Compare commits
2 commits
b41a0d0417
...
5fa73da51a
| Author | SHA1 | Date | |
|---|---|---|---|
| 5fa73da51a | |||
| 9993d04ab0 |
13 changed files with 503 additions and 101 deletions
5
db/migrate/20250608223006_add_admin_to_users.rb
Normal file
5
db/migrate/20250608223006_add_admin_to_users.rb
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
class AddAdminToUsers < ActiveRecord::Migration[7.2]
|
||||||
|
def change
|
||||||
|
add_column :users, :admin, :boolean
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
@ -10,7 +10,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema[7.2].define(version: 2025_06_07_233053) do
|
ActiveRecord::Schema[7.2].define(version: 2025_06_08_223006) do
|
||||||
create_table "candidates", force: :cascade do |t|
|
create_table "candidates", force: :cascade do |t|
|
||||||
t.integer "vote_id"
|
t.integer "vote_id"
|
||||||
t.string "name"
|
t.string "name"
|
||||||
|
|
@ -45,6 +45,7 @@ ActiveRecord::Schema[7.2].define(version: 2025_06_07_233053) do
|
||||||
t.datetime "created_at", null: false
|
t.datetime "created_at", null: false
|
||||||
t.datetime "updated_at", null: false
|
t.datetime "updated_at", null: false
|
||||||
t.string "reset"
|
t.string "reset"
|
||||||
|
t.boolean "admin"
|
||||||
end
|
end
|
||||||
|
|
||||||
create_table "votes", force: :cascade do |t|
|
create_table "votes", force: :cascade do |t|
|
||||||
|
|
|
||||||
157
po/ca/vedia.po
157
po/ca/vedia.po
|
|
@ -7,7 +7,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-06-08 15:49-0600\n"
|
"POT-Creation-Date: 2025-06-08 20:44-0600\n"
|
||||||
"PO-Revision-Date: 2025-03-29 20:41-0600\n"
|
"PO-Revision-Date: 2025-03-29 20:41-0600\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
|
@ -41,46 +41,140 @@ msgstr "Bé"
|
||||||
msgid "Very good"
|
msgid "Very good"
|
||||||
msgstr "Molt bé"
|
msgstr "Molt bé"
|
||||||
|
|
||||||
#: ../vedia.rb:118
|
#: ../vedia.rb:119
|
||||||
msgid "Incorrect email or password."
|
msgid "Incorrect email or password."
|
||||||
msgstr "Correu o contrasenya incorrecte."
|
msgstr "Correu o contrasenya incorrecte."
|
||||||
|
|
||||||
#: ../vedia.rb:140
|
#: ../vedia.rb:141
|
||||||
msgid "Reset your password"
|
msgid "Reset your password"
|
||||||
msgstr "Reiniciar contrasenya"
|
msgstr "Reiniciar contrasenya"
|
||||||
|
|
||||||
#: ../views/home.erb:1 ../views/layout.erb:23
|
#: ../views/admin.erb:1 ../views/admin_users.erb:1 ../views/admin_votes.erb:1
|
||||||
msgid "Home"
|
#: ../views/layout.erb:26
|
||||||
msgstr "Inici"
|
msgid "Admin"
|
||||||
|
msgstr "Admin"
|
||||||
|
|
||||||
#: ../views/home.erb:3
|
#: ../views/admin.erb:3
|
||||||
|
msgid "Users"
|
||||||
|
msgstr "Usuàries"
|
||||||
|
|
||||||
|
#: ../views/admin.erb:13 ../views/home.erb:3
|
||||||
msgid "Votes"
|
msgid "Votes"
|
||||||
msgstr "Votacions"
|
msgstr "Votacions"
|
||||||
|
|
||||||
|
#: ../views/admin.erb:21 ../views/home.erb:12 ../views/votes_show_draft.erb:1
|
||||||
|
msgid "(Draft)"
|
||||||
|
msgstr "(Esborrany)"
|
||||||
|
|
||||||
|
#: ../views/admin.erb:23 ../views/home.erb:16
|
||||||
|
msgid "(Open)"
|
||||||
|
msgstr "(Oberta)"
|
||||||
|
|
||||||
|
#: ../views/admin.erb:25 ../views/home.erb:20
|
||||||
|
msgid "(Closed)"
|
||||||
|
msgstr "(Tancada)"
|
||||||
|
|
||||||
|
#: ../views/admin_users.erb:5 ../views/admin_votes.erb:7
|
||||||
|
msgid "Created: %{date}"
|
||||||
|
msgstr "Creada: %{date}"
|
||||||
|
|
||||||
|
#: ../views/admin_users.erb:7 ../views/admin_votes.erb:9
|
||||||
|
msgid "Updated: %{date}"
|
||||||
|
msgstr "Modificada: %{date}"
|
||||||
|
|
||||||
|
#: ../views/admin_users.erb:9
|
||||||
|
msgid "Admin: %{admin}"
|
||||||
|
msgstr "Admin: %{admin}"
|
||||||
|
|
||||||
|
#: ../views/admin_users.erb:9
|
||||||
|
msgid "Yes"
|
||||||
|
msgstr "Sí"
|
||||||
|
|
||||||
|
#: ../views/admin_users.erb:9
|
||||||
|
msgid "No"
|
||||||
|
msgstr "No"
|
||||||
|
|
||||||
|
#: ../views/admin_users.erb:11
|
||||||
|
msgid "Organized votes"
|
||||||
|
msgstr "Votacions organitzades"
|
||||||
|
|
||||||
|
#: ../views/admin_users.erb:19 ../views/admin_users.erb:38
|
||||||
|
#: ../views/admin_votes.erb:27 ../views/admin_votes.erb:46
|
||||||
|
#: ../views/votes_edit.erb:21
|
||||||
|
msgid "Delete"
|
||||||
|
msgstr "Suprimir"
|
||||||
|
|
||||||
|
#: ../views/admin_users.erb:26
|
||||||
|
msgid "No vote organized."
|
||||||
|
msgstr "Cap votació organitzada."
|
||||||
|
|
||||||
|
#: ../views/admin_users.erb:30 ../views/admin_votes.erb:38
|
||||||
|
msgid "Ratings"
|
||||||
|
msgstr "Valoracions"
|
||||||
|
|
||||||
|
#: ../views/admin_users.erb:45 ../views/admin_votes.erb:53
|
||||||
|
msgid "No rating."
|
||||||
|
msgstr "Cap valoració."
|
||||||
|
|
||||||
|
#: ../views/admin_users.erb:52
|
||||||
|
msgid "Delete user"
|
||||||
|
msgstr "Suprimir usuària"
|
||||||
|
|
||||||
|
#: ../views/admin_votes.erb:5
|
||||||
|
msgid "View vote"
|
||||||
|
msgstr "Veure votació"
|
||||||
|
|
||||||
|
#: ../views/admin_votes.erb:11
|
||||||
|
msgid "Secure ID: %{secure_id}"
|
||||||
|
msgstr "ID segura"
|
||||||
|
|
||||||
|
#: ../views/admin_votes.erb:13
|
||||||
|
msgid "Description: %{description}"
|
||||||
|
msgstr "Descripció: %{description}"
|
||||||
|
|
||||||
|
#: ../views/admin_votes.erb:15 ../views/votes_open.erb:3
|
||||||
|
#: ../views/votes_show_closed.erb:4 ../views/votes_show_open.erb:4
|
||||||
|
msgid "Closing date: %{date}"
|
||||||
|
msgstr "Data de tancament: %{date}"
|
||||||
|
|
||||||
|
#: ../views/admin_votes.erb:15
|
||||||
|
msgid "None"
|
||||||
|
msgstr "Cap"
|
||||||
|
|
||||||
|
#: ../views/admin_votes.erb:17
|
||||||
|
msgid "State: %{state}"
|
||||||
|
msgstr "Estat: %{state}"
|
||||||
|
|
||||||
|
#: ../views/admin_votes.erb:19 ../views/votes_edit.erb:39
|
||||||
|
#: ../views/votes_show_closed.erb:79 ../views/votes_show_draft.erb:5
|
||||||
|
#: ../views/votes_show_open.erb:40
|
||||||
|
msgid "Organizers"
|
||||||
|
msgstr "Organitzadores"
|
||||||
|
|
||||||
|
#: ../views/admin_votes.erb:34
|
||||||
|
msgid "No organizer."
|
||||||
|
msgstr "Cap organitzadora."
|
||||||
|
|
||||||
|
#: ../views/admin_votes.erb:60 ../views/votes_edit.erb:68
|
||||||
|
msgid "Delete vote"
|
||||||
|
msgstr "Suprimir la votació"
|
||||||
|
|
||||||
|
#: ../views/home.erb:1 ../views/layout.erb:24
|
||||||
|
msgid "Home"
|
||||||
|
msgstr "Inici"
|
||||||
|
|
||||||
#: ../views/home.erb:11
|
#: ../views/home.erb:11
|
||||||
msgid "(Draft, organized by you)"
|
msgid "(Draft, organized by you)"
|
||||||
msgstr "(Esborrany, organitzada per tu)"
|
msgstr "(Esborrany, organitzada per tu)"
|
||||||
|
|
||||||
#: ../views/home.erb:12 ../views/votes_show_draft.erb:1
|
|
||||||
msgid "(Draft)"
|
|
||||||
msgstr "(Esborrany)"
|
|
||||||
|
|
||||||
#: ../views/home.erb:15
|
#: ../views/home.erb:15
|
||||||
msgid "(Open, organized by you)"
|
msgid "(Open, organized by you)"
|
||||||
msgstr "(Oberta, organitzada per tu)"
|
msgstr "(Oberta, organitzada per tu)"
|
||||||
|
|
||||||
#: ../views/home.erb:16
|
|
||||||
msgid "(Open)"
|
|
||||||
msgstr "(Oberta)"
|
|
||||||
|
|
||||||
#: ../views/home.erb:19
|
#: ../views/home.erb:19
|
||||||
msgid "(Closed, organized by you)"
|
msgid "(Closed, organized by you)"
|
||||||
msgstr "(Tancada, organitzada per tu)"
|
msgstr "(Tancada, organitzada per tu)"
|
||||||
|
|
||||||
#: ../views/home.erb:20
|
|
||||||
msgid "(Closed)"
|
|
||||||
msgstr "(Tancada)"
|
|
||||||
|
|
||||||
#: ../views/home.erb:28 ../views/votes_new.erb:12
|
#: ../views/home.erb:28 ../views/votes_new.erb:12
|
||||||
msgid "Create new vote"
|
msgid "Create new vote"
|
||||||
msgstr "Crear una nova votació"
|
msgstr "Crear una nova votació"
|
||||||
|
|
@ -93,13 +187,13 @@ msgstr "Estàs connectada com a %{email}."
|
||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr "Desconnexió"
|
msgstr "Desconnexió"
|
||||||
|
|
||||||
#: ../views/layout.erb:25 ../views/login.erb:1 ../views/login.erb:16
|
#: ../views/layout.erb:30 ../views/login.erb:1 ../views/login.erb:16
|
||||||
msgid "Login"
|
msgid "Login"
|
||||||
msgstr "Connexió"
|
msgstr "Connexió"
|
||||||
|
|
||||||
#: ../views/login.erb:9 ../views/reset.erb:5 ../views/reset_change.erb:13
|
#: ../views/login.erb:9 ../views/reset.erb:5 ../views/reset_change.erb:13
|
||||||
#: ../views/signup.erb:24 ../views/votes_edit.erb:51
|
#: ../views/signup.erb:24 ../views/votes_edit.erb:51
|
||||||
#: ../views/votes_show_closed.erb:99 ../views/votes_show_open.erb:62
|
#: ../views/votes_show_closed.erb:99 ../views/votes_show_open.erb:66
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Correu"
|
msgstr "Correu"
|
||||||
|
|
||||||
|
|
@ -183,10 +277,6 @@ msgstr "Guardar"
|
||||||
msgid "Candidates"
|
msgid "Candidates"
|
||||||
msgstr "Opcions"
|
msgstr "Opcions"
|
||||||
|
|
||||||
#: ../views/votes_edit.erb:21
|
|
||||||
msgid "Delete"
|
|
||||||
msgstr "Suprimir"
|
|
||||||
|
|
||||||
#: ../views/votes_edit.erb:25 ../views/votes_edit.erb:36
|
#: ../views/votes_edit.erb:25 ../views/votes_edit.erb:36
|
||||||
msgid "Add candidate"
|
msgid "Add candidate"
|
||||||
msgstr "Afegeix una opció"
|
msgstr "Afegeix una opció"
|
||||||
|
|
@ -195,19 +285,14 @@ msgstr "Afegeix una opció"
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr "Nom"
|
msgstr "Nom"
|
||||||
|
|
||||||
#: ../views/votes_edit.erb:39 ../views/votes_show_closed.erb:79
|
|
||||||
#: ../views/votes_show_draft.erb:5 ../views/votes_show_open.erb:38
|
|
||||||
msgid "Organizers"
|
|
||||||
msgstr "Organitzadores"
|
|
||||||
|
|
||||||
#: ../views/votes_edit.erb:47 ../views/votes_edit.erb:54
|
#: ../views/votes_edit.erb:47 ../views/votes_edit.erb:54
|
||||||
#: ../views/votes_show_closed.erb:95 ../views/votes_show_closed.erb:102
|
#: ../views/votes_show_closed.erb:95 ../views/votes_show_closed.erb:102
|
||||||
#: ../views/votes_show_open.erb:58 ../views/votes_show_open.erb:65
|
#: ../views/votes_show_open.erb:62 ../views/votes_show_open.erb:69
|
||||||
msgid "Add organizer"
|
msgid "Add organizer"
|
||||||
msgstr "Afegeix organitzadora"
|
msgstr "Afegeix organitzadora"
|
||||||
|
|
||||||
#: ../views/votes_edit.erb:57 ../views/votes_show_closed.erb:89
|
#: ../views/votes_edit.erb:57 ../views/votes_show_closed.erb:89
|
||||||
#: ../views/votes_show_open.erb:48
|
#: ../views/votes_show_open.erb:52
|
||||||
msgid "Actions for organizers"
|
msgid "Actions for organizers"
|
||||||
msgstr "Accions per les organitzadores"
|
msgstr "Accions per les organitzadores"
|
||||||
|
|
||||||
|
|
@ -220,10 +305,6 @@ msgstr "Obrir la votació als votants"
|
||||||
msgid "Add at least 2 candidates before opening the vote to participants."
|
msgid "Add at least 2 candidates before opening the vote to participants."
|
||||||
msgstr "Afegeix com a mínim 2 opcions abans d'obrir la votació als votants."
|
msgstr "Afegeix com a mínim 2 opcions abans d'obrir la votació als votants."
|
||||||
|
|
||||||
#: ../views/votes_edit.erb:68
|
|
||||||
msgid "Delete vote"
|
|
||||||
msgstr "Suprimir la votació"
|
|
||||||
|
|
||||||
#: ../views/votes_new.erb:1
|
#: ../views/votes_new.erb:1
|
||||||
msgid "New vote"
|
msgid "New vote"
|
||||||
msgstr "Nova votació"
|
msgstr "Nova votació"
|
||||||
|
|
@ -298,10 +379,10 @@ msgstr "Les teves valoracions"
|
||||||
msgid "Participants"
|
msgid "Participants"
|
||||||
msgstr "Votants"
|
msgstr "Votants"
|
||||||
|
|
||||||
#: ../views/votes_show_open.erb:51
|
#: ../views/votes_show_open.erb:55
|
||||||
msgid "Change back to draft vote"
|
msgid "Change back to draft vote"
|
||||||
msgstr "Tornar a l'esborrany de votació"
|
msgstr "Tornar a l'esborrany de votació"
|
||||||
|
|
||||||
#: ../views/votes_show_open.erb:55
|
#: ../views/votes_show_open.erb:59
|
||||||
msgid "Close votes and show results"
|
msgid "Close votes and show results"
|
||||||
msgstr "Tancar la votació i veure els resultats"
|
msgstr "Tancar la votació i veure els resultats"
|
||||||
|
|
|
||||||
157
po/vedia.pot
157
po/vedia.pot
|
|
@ -8,8 +8,8 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2025-06-08 15:49-0600\n"
|
"POT-Creation-Date: 2025-06-08 20:44-0600\n"
|
||||||
"PO-Revision-Date: 2025-06-08 15:49-0600\n"
|
"PO-Revision-Date: 2025-06-08 20:44-0600\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
"Language: \n"
|
"Language: \n"
|
||||||
|
|
@ -42,46 +42,140 @@ msgstr ""
|
||||||
msgid "Very good"
|
msgid "Very good"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../vedia.rb:118
|
#: ../vedia.rb:119
|
||||||
msgid "Incorrect email or password."
|
msgid "Incorrect email or password."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../vedia.rb:140
|
#: ../vedia.rb:141
|
||||||
msgid "Reset your password"
|
msgid "Reset your password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/home.erb:1 ../views/layout.erb:23
|
#: ../views/admin.erb:1 ../views/admin_users.erb:1 ../views/admin_votes.erb:1
|
||||||
msgid "Home"
|
#: ../views/layout.erb:26
|
||||||
|
msgid "Admin"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/home.erb:3
|
#: ../views/admin.erb:3
|
||||||
|
msgid "Users"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../views/admin.erb:13 ../views/home.erb:3
|
||||||
msgid "Votes"
|
msgid "Votes"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../views/admin.erb:21 ../views/home.erb:12 ../views/votes_show_draft.erb:1
|
||||||
|
msgid "(Draft)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../views/admin.erb:23 ../views/home.erb:16
|
||||||
|
msgid "(Open)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../views/admin.erb:25 ../views/home.erb:20
|
||||||
|
msgid "(Closed)"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../views/admin_users.erb:5 ../views/admin_votes.erb:7
|
||||||
|
msgid "Created: %{date}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../views/admin_users.erb:7 ../views/admin_votes.erb:9
|
||||||
|
msgid "Updated: %{date}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../views/admin_users.erb:9
|
||||||
|
msgid "Admin: %{admin}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../views/admin_users.erb:9
|
||||||
|
msgid "Yes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../views/admin_users.erb:9
|
||||||
|
msgid "No"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../views/admin_users.erb:11
|
||||||
|
msgid "Organized votes"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../views/admin_users.erb:19 ../views/admin_users.erb:38
|
||||||
|
#: ../views/admin_votes.erb:27 ../views/admin_votes.erb:46
|
||||||
|
#: ../views/votes_edit.erb:21
|
||||||
|
msgid "Delete"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../views/admin_users.erb:26
|
||||||
|
msgid "No vote organized."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../views/admin_users.erb:30 ../views/admin_votes.erb:38
|
||||||
|
msgid "Ratings"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../views/admin_users.erb:45 ../views/admin_votes.erb:53
|
||||||
|
msgid "No rating."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../views/admin_users.erb:52
|
||||||
|
msgid "Delete user"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../views/admin_votes.erb:5
|
||||||
|
msgid "View vote"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../views/admin_votes.erb:11
|
||||||
|
msgid "Secure ID: %{secure_id}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../views/admin_votes.erb:13
|
||||||
|
msgid "Description: %{description}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../views/admin_votes.erb:15 ../views/votes_open.erb:3
|
||||||
|
#: ../views/votes_show_closed.erb:4 ../views/votes_show_open.erb:4
|
||||||
|
msgid "Closing date: %{date}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../views/admin_votes.erb:15
|
||||||
|
msgid "None"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../views/admin_votes.erb:17
|
||||||
|
msgid "State: %{state}"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../views/admin_votes.erb:19 ../views/votes_edit.erb:39
|
||||||
|
#: ../views/votes_show_closed.erb:79 ../views/votes_show_draft.erb:5
|
||||||
|
#: ../views/votes_show_open.erb:40
|
||||||
|
msgid "Organizers"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../views/admin_votes.erb:34
|
||||||
|
msgid "No organizer."
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../views/admin_votes.erb:60 ../views/votes_edit.erb:68
|
||||||
|
msgid "Delete vote"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../views/home.erb:1 ../views/layout.erb:24
|
||||||
|
msgid "Home"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/home.erb:11
|
#: ../views/home.erb:11
|
||||||
msgid "(Draft, organized by you)"
|
msgid "(Draft, organized by you)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/home.erb:12 ../views/votes_show_draft.erb:1
|
|
||||||
msgid "(Draft)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../views/home.erb:15
|
#: ../views/home.erb:15
|
||||||
msgid "(Open, organized by you)"
|
msgid "(Open, organized by you)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/home.erb:16
|
|
||||||
msgid "(Open)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../views/home.erb:19
|
#: ../views/home.erb:19
|
||||||
msgid "(Closed, organized by you)"
|
msgid "(Closed, organized by you)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/home.erb:20
|
|
||||||
msgid "(Closed)"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../views/home.erb:28 ../views/votes_new.erb:12
|
#: ../views/home.erb:28 ../views/votes_new.erb:12
|
||||||
msgid "Create new vote"
|
msgid "Create new vote"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -94,13 +188,13 @@ msgstr ""
|
||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/layout.erb:25 ../views/login.erb:1 ../views/login.erb:16
|
#: ../views/layout.erb:30 ../views/login.erb:1 ../views/login.erb:16
|
||||||
msgid "Login"
|
msgid "Login"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/login.erb:9 ../views/reset.erb:5 ../views/reset_change.erb:13
|
#: ../views/login.erb:9 ../views/reset.erb:5 ../views/reset_change.erb:13
|
||||||
#: ../views/signup.erb:24 ../views/votes_edit.erb:51
|
#: ../views/signup.erb:24 ../views/votes_edit.erb:51
|
||||||
#: ../views/votes_show_closed.erb:99 ../views/votes_show_open.erb:62
|
#: ../views/votes_show_closed.erb:99 ../views/votes_show_open.erb:66
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
@ -182,10 +276,6 @@ msgstr ""
|
||||||
msgid "Candidates"
|
msgid "Candidates"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/votes_edit.erb:21
|
|
||||||
msgid "Delete"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../views/votes_edit.erb:25 ../views/votes_edit.erb:36
|
#: ../views/votes_edit.erb:25 ../views/votes_edit.erb:36
|
||||||
msgid "Add candidate"
|
msgid "Add candidate"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -194,19 +284,14 @@ msgstr ""
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/votes_edit.erb:39 ../views/votes_show_closed.erb:79
|
|
||||||
#: ../views/votes_show_draft.erb:5 ../views/votes_show_open.erb:38
|
|
||||||
msgid "Organizers"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../views/votes_edit.erb:47 ../views/votes_edit.erb:54
|
#: ../views/votes_edit.erb:47 ../views/votes_edit.erb:54
|
||||||
#: ../views/votes_show_closed.erb:95 ../views/votes_show_closed.erb:102
|
#: ../views/votes_show_closed.erb:95 ../views/votes_show_closed.erb:102
|
||||||
#: ../views/votes_show_open.erb:58 ../views/votes_show_open.erb:65
|
#: ../views/votes_show_open.erb:62 ../views/votes_show_open.erb:69
|
||||||
msgid "Add organizer"
|
msgid "Add organizer"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/votes_edit.erb:57 ../views/votes_show_closed.erb:89
|
#: ../views/votes_edit.erb:57 ../views/votes_show_closed.erb:89
|
||||||
#: ../views/votes_show_open.erb:48
|
#: ../views/votes_show_open.erb:52
|
||||||
msgid "Actions for organizers"
|
msgid "Actions for organizers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
@ -219,10 +304,6 @@ msgstr ""
|
||||||
msgid "Add at least 2 candidates before opening the vote to participants."
|
msgid "Add at least 2 candidates before opening the vote to participants."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/votes_edit.erb:68
|
|
||||||
msgid "Delete vote"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../views/votes_new.erb:1
|
#: ../views/votes_new.erb:1
|
||||||
msgid "New vote"
|
msgid "New vote"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -295,10 +376,10 @@ msgstr ""
|
||||||
msgid "Participants"
|
msgid "Participants"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/votes_show_open.erb:51
|
#: ../views/votes_show_open.erb:55
|
||||||
msgid "Change back to draft vote"
|
msgid "Change back to draft vote"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/votes_show_open.erb:55
|
#: ../views/votes_show_open.erb:59
|
||||||
msgid "Close votes and show results"
|
msgid "Close votes and show results"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
||||||
78
vedia.rb
78
vedia.rb
|
|
@ -91,6 +91,7 @@ post '/signup' do
|
||||||
@user.password = hash_password(params[:password])
|
@user.password = hash_password(params[:password])
|
||||||
end
|
end
|
||||||
if @errors.empty? and @user.valid?
|
if @errors.empty? and @user.valid?
|
||||||
|
@user.admin = true if @user.id == 1
|
||||||
@user.save
|
@user.save
|
||||||
session.clear
|
session.clear
|
||||||
session[:user_id] = @user.id
|
session[:user_id] = @user.id
|
||||||
|
|
@ -192,6 +193,71 @@ post '/logout' do
|
||||||
redirect '/login'
|
redirect '/login'
|
||||||
end
|
end
|
||||||
|
|
||||||
|
get '/admin' do
|
||||||
|
require_admin
|
||||||
|
@users = User.all
|
||||||
|
@votes = Vote.all
|
||||||
|
erb :admin
|
||||||
|
end
|
||||||
|
|
||||||
|
get '/admin/users/:id' do
|
||||||
|
require_admin
|
||||||
|
@user = User.find(params[:id])
|
||||||
|
erb :admin_users
|
||||||
|
end
|
||||||
|
|
||||||
|
get '/admin/users/:id/organizers/:vote/delete' do
|
||||||
|
require_admin
|
||||||
|
rating = Organizer.where(user: params[:id]).where(vote: params[:vote]).each do |organizer|
|
||||||
|
organizer.destroy
|
||||||
|
end
|
||||||
|
redirect "/admin/users/#{params[:id]}"
|
||||||
|
end
|
||||||
|
|
||||||
|
get '/admin/users/:id/ratings/:vote/delete' do
|
||||||
|
require_admin
|
||||||
|
rating = Rating.where(user: params[:id]).where(vote: params[:vote]).each do |rating|
|
||||||
|
rating.destroy
|
||||||
|
end
|
||||||
|
redirect "/admin/users/#{params[:id]}"
|
||||||
|
end
|
||||||
|
|
||||||
|
post '/admin/users/:id/delete' do
|
||||||
|
require_admin
|
||||||
|
@user = User.find(params[:id])
|
||||||
|
@user.destroy
|
||||||
|
redirect '/admin'
|
||||||
|
end
|
||||||
|
|
||||||
|
get '/admin/votes/:id' do
|
||||||
|
require_admin
|
||||||
|
@vote = Vote.find(params[:id])
|
||||||
|
erb :admin_votes
|
||||||
|
end
|
||||||
|
|
||||||
|
get '/admin/votes/:id/organizers/:user/delete' do
|
||||||
|
require_admin
|
||||||
|
rating = Organizer.where(vote: params[:id]).where(user: params[:user]).each do |organizer|
|
||||||
|
organizer.destroy
|
||||||
|
end
|
||||||
|
redirect "/admin/votes/#{params[:id]}"
|
||||||
|
end
|
||||||
|
|
||||||
|
get '/admin/votes/:id/ratings/:user/delete' do
|
||||||
|
require_admin
|
||||||
|
rating = Rating.where(vote: params[:id]).where(user: params[:user]).each do |rating|
|
||||||
|
rating.destroy
|
||||||
|
end
|
||||||
|
redirect "/admin/votes/#{params[:id]}"
|
||||||
|
end
|
||||||
|
|
||||||
|
post '/admin/votes/:id/delete' do
|
||||||
|
require_admin
|
||||||
|
@vote = Vote.find(params[:id])
|
||||||
|
@vote.destroy
|
||||||
|
redirect '/admin'
|
||||||
|
end
|
||||||
|
|
||||||
get '/votes/new' do
|
get '/votes/new' do
|
||||||
require_login
|
require_login
|
||||||
erb :votes_new
|
erb :votes_new
|
||||||
|
|
@ -370,10 +436,18 @@ helpers do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def is_admin
|
||||||
|
current_user and current_user.admin
|
||||||
|
end
|
||||||
|
|
||||||
def require_login
|
def require_login
|
||||||
redirect '/login' unless current_user
|
redirect '/login' unless current_user
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def require_admin
|
||||||
|
redirect '/' unless is_admin
|
||||||
|
end
|
||||||
|
|
||||||
def find_vote
|
def find_vote
|
||||||
@vote = Vote.find_by(secure_id: params[:id])
|
@vote = Vote.find_by(secure_id: params[:id])
|
||||||
end
|
end
|
||||||
|
|
@ -399,6 +473,10 @@ helpers do
|
||||||
end
|
end
|
||||||
|
|
||||||
def format_date(timestamp)
|
def format_date(timestamp)
|
||||||
|
"#{TZInfo::Timezone.get(session[:timezone]).to_local(timestamp).strftime('%F')}"
|
||||||
|
end
|
||||||
|
|
||||||
|
def format_date_and_time(timestamp)
|
||||||
"#{TZInfo::Timezone.get(session[:timezone]).to_local(timestamp).strftime('%F %R')} (#{session[:timezone].gsub('_', ' ')})"
|
"#{TZInfo::Timezone.get(session[:timezone]).to_local(timestamp).strftime('%F %R')} (#{session[:timezone].gsub('_', ' ')})"
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
29
views/admin.erb
Normal file
29
views/admin.erb
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
<h1><%= _("Admin") %></h1>
|
||||||
|
|
||||||
|
<h2><%= _("Users") %></h2>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<% @users.reverse.each do |user| %>
|
||||||
|
<li>
|
||||||
|
<a href="/admin/users/<%= user.id %>"><%= user.email %></a>
|
||||||
|
</li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2><%= _("Votes") %></h2>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<% @votes.reverse.each do |vote| %>
|
||||||
|
<li>
|
||||||
|
<a href="/admin/votes/<%= vote.id %>"><%= vote.title %></a>
|
||||||
|
<% case vote.state
|
||||||
|
when 'draft' %>
|
||||||
|
<%= _("(Draft)") %>
|
||||||
|
<% when 'open' %>
|
||||||
|
<%= _("(Open)") %>
|
||||||
|
<% when 'closed' %>
|
||||||
|
<%= _("(Closed)") %>
|
||||||
|
<% end %>
|
||||||
|
</li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
55
views/admin_users.erb
Normal file
55
views/admin_users.erb
Normal file
|
|
@ -0,0 +1,55 @@
|
||||||
|
<h1><%= _("Admin") %></h1>
|
||||||
|
|
||||||
|
<h2><%= @user.email %></h2>
|
||||||
|
|
||||||
|
<p><%= _("Created: %{date}") % { date: format_date(@user.created_at) } %></p>
|
||||||
|
|
||||||
|
<p><%= _("Updated: %{date}") % { date: format_date(@user.updated_at) } %></p>
|
||||||
|
|
||||||
|
<p><%= _("Admin: %{admin}") % { admin: @user.admin ? _("Yes") : _("No") } %></p>
|
||||||
|
|
||||||
|
<h2><%= _("Organized votes") %></h2>
|
||||||
|
|
||||||
|
<% unless @user.organizers.blank? %>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<% @user.organizers.each do |organizer| %>
|
||||||
|
<li>
|
||||||
|
<%= organizer.user.email %>
|
||||||
|
<a href="/admin/users/<%= @user.id %>/organizers/<%= organizer.vote.id %>/delete"><%= _("Delete") %></a>
|
||||||
|
</li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<% else %>
|
||||||
|
|
||||||
|
<p><%= _("No vote organized.") %></p>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<h2><%= _("Ratings") %></h2>
|
||||||
|
|
||||||
|
<% unless @user.ratings.blank? %>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<% @user.ratings.collect { |rating| rating.vote }.uniq.each do |vote| %>
|
||||||
|
<li>
|
||||||
|
<%= vote.title %>
|
||||||
|
<a href="/admin/users/<%= @user.id %>/ratings/<%= vote.id %>/delete"><%= _("Delete") %></a>
|
||||||
|
</li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<% else %>
|
||||||
|
|
||||||
|
<p><%= _("No rating.") %></p>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<% if @user.ratings.blank? and @user.organizers.blank? %>
|
||||||
|
|
||||||
|
<form action="/admin/users/<%= @user.id %>/delete" method="post">
|
||||||
|
<button type="submit"><%= _("Delete user") %></button>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
63
views/admin_votes.erb
Normal file
63
views/admin_votes.erb
Normal file
|
|
@ -0,0 +1,63 @@
|
||||||
|
<h1><%= _("Admin") %></h1>
|
||||||
|
|
||||||
|
<h2><%= @vote.title %></h2>
|
||||||
|
|
||||||
|
<p><a href="/votes/<%= @vote.secure_id %>"><%= _("View vote") %></a></p>
|
||||||
|
|
||||||
|
<p><%= _("Created: %{date}") % { date: format_date(@vote.created_at) } %></p>
|
||||||
|
|
||||||
|
<p><%= _("Updated: %{date}") % { date: format_date(@vote.updated_at) } %></p>
|
||||||
|
|
||||||
|
<p><%= _("Secure ID: %{secure_id}") % { secure_id: @vote.secure_id } %></p>
|
||||||
|
|
||||||
|
<p><%= _("Description: %{description}") % { description: @vote.description } %></p>
|
||||||
|
|
||||||
|
<p><%= _("Closing date: %{date}") % { date: @vote.expire_on ? format_date_and_time(@vote.expire_on) : _("None") } %></p>
|
||||||
|
|
||||||
|
<p><%= _("State: %{state}") % { state: @vote.state } %></p>
|
||||||
|
|
||||||
|
<h2><%= _("Organizers") %></h2>
|
||||||
|
|
||||||
|
<% unless @vote.organizers.blank? %>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<% @vote.organizers.each do |organizer| %>
|
||||||
|
<li>
|
||||||
|
<%= organizer.user.email %>
|
||||||
|
<a href="/admin/votes/<%= @vote.id %>/organizers/<%= organizer.user.id %>/delete"><%= _("Delete") %></a>
|
||||||
|
</li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<% else %>
|
||||||
|
|
||||||
|
<p><%= _("No organizer.") %></p>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<h2><%= _("Ratings") %></h2>
|
||||||
|
|
||||||
|
<% unless @vote.ratings.blank? %>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<% @vote.ratings.collect { |rating| rating.user }.uniq.each do |user| %>
|
||||||
|
<li>
|
||||||
|
<%= user.email %>
|
||||||
|
<a href="/admin/votes/<%= @vote.id %>/ratings/<%= user.id %>/delete"><%= _("Delete") %></a>
|
||||||
|
</li>
|
||||||
|
<% end %>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<% else %>
|
||||||
|
|
||||||
|
<p><%= _("No rating.") %></p>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
|
||||||
|
<% if @vote.ratings.blank? and @vote.organizers.blank? %>
|
||||||
|
|
||||||
|
<form action="/admin/votes/<%= @vote.id %>/delete" method="post">
|
||||||
|
<button type="submit"><%= _("Delete vote") %></button>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
|
@ -3,25 +3,25 @@
|
||||||
<h2><%= _("Votes") %></h2>
|
<h2><%= _("Votes") %></h2>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<% @votes.reverse.each do |vote| %>
|
<% @votes.reverse.each do |vote| %>
|
||||||
<li>
|
<li>
|
||||||
<a href="/votes/<%= vote.secure_id %>"><%= vote.title %></a>
|
<a href="/votes/<%= vote.secure_id %>"><%= vote.title %></a>
|
||||||
<% case vote.state
|
<% case vote.state
|
||||||
when 'draft' %>
|
when 'draft' %>
|
||||||
<% if vote.users.exists?(current_user.id) %><%= _("(Draft, organized by you)") %>
|
<% if vote.users.exists?(current_user.id) %><%= _("(Draft, organized by you)") %>
|
||||||
<% else %><%= _("(Draft)") %>
|
<% else %><%= _("(Draft)") %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% when 'open' %>
|
<% when 'open' %>
|
||||||
<% if vote.users.exists?(current_user.id) %><%= _("(Open, organized by you)") %>
|
<% if vote.users.exists?(current_user.id) %><%= _("(Open, organized by you)") %>
|
||||||
<% else %><%= _("(Open)") %>
|
<% else %><%= _("(Open)") %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% when 'closed' %>
|
<% when 'closed' %>
|
||||||
<% if vote.users.exists?(current_user.id) %><%= _("(Closed, organized by you)") %>
|
<% if vote.users.exists?(current_user.id) %><%= _("(Closed, organized by you)") %>
|
||||||
<% else %><%= _("(Closed)") %>
|
<% else %><%= _("(Closed)") %>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% end %>
|
<% end %>
|
||||||
</li>
|
</li>
|
||||||
<% end %>
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<form action="/votes/new" method="get">
|
<form action="/votes/new" method="get">
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,12 @@
|
||||||
<body>
|
<body>
|
||||||
<% if current_user %>
|
<% if current_user %>
|
||||||
<p><%= _("Logged in as %{email}.") % { email: current_user.email } %> <a href="/logout"><%= _("Logout") %></a></p>
|
<p><%= _("Logged in as %{email}.") % { email: current_user.email } %> <a href="/logout"><%= _("Logout") %></a></p>
|
||||||
<p><a href="/"><%= _("Home") %></a></p>
|
<p>
|
||||||
|
<a href="/"><%= _("Home") %></a>
|
||||||
|
<% if is_admin %>
|
||||||
|
<a href="/admin"><%= _("Admin") %></a>
|
||||||
|
<% end %>
|
||||||
|
</p>
|
||||||
<% else %>
|
<% else %>
|
||||||
<p><a href="/login"><%= _("Login") %></a></p>
|
<p><a href="/login"><%= _("Login") %></a></p>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
<h1><%= _("Open vote") %></h1>
|
<h1><%= _("Open vote") %></h1>
|
||||||
|
|
||||||
<p><%= _("Closing date: #{format_date(@expire_on)}") %></p>
|
<p><%= _("Closing date: %{date}" % { date: format_date_and_time(@expire_on) }) %></p>
|
||||||
|
|
||||||
<p><%= _("The vote will automatically close on that date and the results will
|
<p><%= _("The vote will automatically close on that date and the results will
|
||||||
be sent to all users by email.") %></p>
|
be sent to all users by email.") %></p>
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
<h1><%= @vote.title %></h1>
|
<h1><%= @vote.title %></h1>
|
||||||
|
|
||||||
<% if @vote.expire_on %>
|
<% if @vote.expire_on %>
|
||||||
<p><%= _("Closing date: #{format_date(@vote.expire_on)}") %></p>
|
<p><%= _("Closing date: %{date}" % { date: format_date_and_time(@vote.expire_on) }) %></p>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<p><%= @vote.description %></p>
|
<p><%= @vote.description %></p>
|
||||||
|
|
||||||
<% if @vote.ratings.length > 0 %>
|
<% unless @vote.ratings.blank? %>
|
||||||
|
|
||||||
<h2><%= _("All ratings") %></h2>
|
<h2><%= _("All ratings") %></h2>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
<h1><%= @vote.title %></h1>
|
<h1><%= @vote.title %></h1>
|
||||||
|
|
||||||
<% if @vote.expire_on %>
|
<% if @vote.expire_on %>
|
||||||
<p><%= _("Closing date: #{format_date(@vote.expire_on)}") %></p>
|
<p><%= _("Closing date: %{date}" % { date: format_date_and_time(@vote.expire_on) }) %></p>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
||||||
<p><%= @vote.description %></p>
|
<p><%= @vote.description %></p>
|
||||||
|
|
@ -35,6 +35,8 @@
|
||||||
<% end %>
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
<% unless @vote.organizers.blank? %>
|
||||||
|
|
||||||
<h2><%= _("Organizers") %></h2>
|
<h2><%= _("Organizers") %></h2>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
|
|
@ -43,6 +45,8 @@
|
||||||
<% end %>
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
<% end %>
|
||||||
|
|
||||||
<% if @vote.users.exists?(current_user.id) and @vote.expire_on.nil? %>
|
<% if @vote.users.exists?(current_user.id) and @vote.expire_on.nil? %>
|
||||||
|
|
||||||
<h3><%= _("Actions for organizers") %></h3>
|
<h3><%= _("Actions for organizers") %></h3>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue