Compare commits
No commits in common. "e474a9a8eadad4de283aac1f0c4b23ef3a025cff" and "fa4f77c365d0636f71f8dced4fe282b250f38d44" have entirely different histories.
e474a9a8ea
...
fa4f77c365
14 changed files with 113 additions and 304 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -4,4 +4,3 @@ locale
|
||||||
db/*.sqlite3
|
db/*.sqlite3
|
||||||
db/*.sqlite3-*
|
db/*.sqlite3-*
|
||||||
config/environments/development.rb
|
config/environments/development.rb
|
||||||
vedia.log
|
|
||||||
|
|
|
||||||
11
Rakefile
11
Rakefile
|
|
@ -2,9 +2,9 @@ require_relative 'vedia'
|
||||||
require 'sinatra/activerecord/rake'
|
require 'sinatra/activerecord/rake'
|
||||||
|
|
||||||
desc "Update PO files"
|
desc "Update PO files"
|
||||||
task :update_po do
|
task :updatepo do
|
||||||
require 'gettext/tools/xgettext'
|
require 'gettext/tools/xgettext'
|
||||||
GetText::Tools::XGetText.run(*["vedia.rb"] + Dir.glob("views/*.{rb,erb}") + ["config/environments/defaults.rb"] + ["-o", "po/vedia.pot"])
|
GetText::Tools::XGetText.run(*["vedia.rb"] + Dir.glob("views/*.{rb,erb}") + ["-o", "po/vedia.pot"])
|
||||||
require 'gettext/tools/msgmerge'
|
require 'gettext/tools/msgmerge'
|
||||||
Dir.glob("po/**/vedia.po").collect { |po| /po\/(.+)\/vedia\.po/.match(po)[1] }.each do |locale|
|
Dir.glob("po/**/vedia.po").collect { |po| /po\/(.+)\/vedia\.po/.match(po)[1] }.each do |locale|
|
||||||
GetText::Tools::MsgMerge.run("po/#{locale}/vedia.po", "po/vedia.pot", "-o", "po/#{locale}/vedia.po")
|
GetText::Tools::MsgMerge.run("po/#{locale}/vedia.po", "po/vedia.pot", "-o", "po/#{locale}/vedia.po")
|
||||||
|
|
@ -12,7 +12,7 @@ task :update_po do
|
||||||
end
|
end
|
||||||
|
|
||||||
desc "Build MO files"
|
desc "Build MO files"
|
||||||
task :build_mo do
|
task :buildmo do
|
||||||
require 'gettext/tools/msgfmt'
|
require 'gettext/tools/msgfmt'
|
||||||
Dir.mkdir("locale") unless Dir.exist?("locale")
|
Dir.mkdir("locale") unless Dir.exist?("locale")
|
||||||
Dir.glob("po/**/vedia.po").collect { |po| /po\/(.+)\/vedia\.po/.match(po)[1] }.each do |locale|
|
Dir.glob("po/**/vedia.po").collect { |po| /po\/(.+)\/vedia\.po/.match(po)[1] }.each do |locale|
|
||||||
|
|
@ -20,8 +20,3 @@ task :build_mo do
|
||||||
GetText::Tools::MsgFmt.run("po/#{locale}/vedia.po", "-o", "locale/#{locale}/vedia.mo")
|
GetText::Tools::MsgFmt.run("po/#{locale}/vedia.po", "-o", "locale/#{locale}/vedia.mo")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
desc "Close votes that have expired"
|
|
||||||
task :close_expired_votes do
|
|
||||||
close_expired_votes
|
|
||||||
end
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +0,0 @@
|
||||||
set :admin_email, 'vedia@potager.org'
|
|
||||||
set :values, [ { :id => 1, :label => _("Awful"), :color => '#ff4500' },
|
|
||||||
{ :id => 2, :label => _("Very bad"), :color => '#ffa500' },
|
|
||||||
{ :id => 3, :label => _("Bad"), :color => '#ffff00' },
|
|
||||||
{ :id => 4, :label => _("Mediocre"), :color => '#9acd32' },
|
|
||||||
{ :id => 5, :label => _("Good"), :color => '#228b22' },
|
|
||||||
{ :id => 6, :label => _("Very good"), :color => '#006400' } ]
|
|
||||||
set :expire_after, 7 * 24 * 60 * 60 # 7 days
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
if ENV['RAILS_ENV']
|
|
||||||
set :environment, ENV['RAILS_ENV']
|
|
||||||
end
|
|
||||||
|
|
||||||
set :output, 'vedia.log'
|
|
||||||
|
|
||||||
every 5.minutes do
|
|
||||||
rake "close_expired_votes"
|
|
||||||
end
|
|
||||||
116
po/ca/vedia.po
116
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-07 18:22-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"
|
||||||
|
|
@ -17,39 +17,39 @@ msgstr ""
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
|
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
|
||||||
|
|
||||||
#: ../config/environments/defaults.rb:2
|
#: ../vedia.rb:64
|
||||||
msgid "Awful"
|
msgid "Awful"
|
||||||
msgstr "Molt malament"
|
msgstr "Molt malament"
|
||||||
|
|
||||||
#: ../config/environments/defaults.rb:3
|
#: ../vedia.rb:65
|
||||||
msgid "Very bad"
|
msgid "Very bad"
|
||||||
msgstr "Malament"
|
msgstr "Malament"
|
||||||
|
|
||||||
#: ../config/environments/defaults.rb:4
|
#: ../vedia.rb:66
|
||||||
msgid "Bad"
|
msgid "Bad"
|
||||||
msgstr "Poc bé"
|
msgstr "Poc bé"
|
||||||
|
|
||||||
#: ../config/environments/defaults.rb:5
|
#: ../vedia.rb:67
|
||||||
msgid "Mediocre"
|
msgid "Mediocre"
|
||||||
msgstr "Mig bé"
|
msgstr "Mig bé"
|
||||||
|
|
||||||
#: ../config/environments/defaults.rb:6
|
#: ../vedia.rb:68
|
||||||
msgid "Good"
|
msgid "Good"
|
||||||
msgstr "Bé"
|
msgstr "Bé"
|
||||||
|
|
||||||
#: ../config/environments/defaults.rb:7
|
#: ../vedia.rb:69
|
||||||
msgid "Very good"
|
msgid "Very good"
|
||||||
msgstr "Molt bé"
|
msgstr "Molt bé"
|
||||||
|
|
||||||
#: ../vedia.rb:118
|
#: ../vedia.rb:121
|
||||||
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:139
|
||||||
msgid "Reset your password"
|
msgid "Reset your password"
|
||||||
msgstr "Reiniciar contrasenya"
|
msgstr "Reiniciar contrasenya"
|
||||||
|
|
||||||
#: ../views/home.erb:1 ../views/layout.erb:23
|
#: ../views/home.erb:1 ../views/layout.erb:14
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr "Inici"
|
msgstr "Inici"
|
||||||
|
|
||||||
|
|
@ -85,21 +85,21 @@ msgstr "(Tancada)"
|
||||||
msgid "Create new vote"
|
msgid "Create new vote"
|
||||||
msgstr "Crear una nova votació"
|
msgstr "Crear una nova votació"
|
||||||
|
|
||||||
#: ../views/layout.erb:22
|
#: ../views/layout.erb:13
|
||||||
msgid "Logged in as %{email}."
|
msgid "Logged in as %{email}."
|
||||||
msgstr "Estàs connectada com a %{email}."
|
msgstr "Estàs connectada com a %{email}."
|
||||||
|
|
||||||
#: ../views/layout.erb:22
|
#: ../views/layout.erb:13
|
||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr "Desconnexió"
|
msgstr "Desconnexió"
|
||||||
|
|
||||||
#: ../views/layout.erb:25 ../views/login.erb:1 ../views/login.erb:16
|
#: ../views/layout.erb:16 ../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:85 ../views/votes_show_open.erb:58
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr "Correu"
|
msgstr "Correu"
|
||||||
|
|
||||||
|
|
@ -122,7 +122,7 @@ msgid "Specify a password."
|
||||||
msgstr "Entra una contrasenya."
|
msgstr "Entra una contrasenya."
|
||||||
|
|
||||||
#: ../views/reset_email.erb:1
|
#: ../views/reset_email.erb:1
|
||||||
msgid "Visit this link to reset your password:"
|
msgid "Visit the following link to reset your password:"
|
||||||
msgstr "Visita aquest enllaç per reiniciar la teva contrasenya:"
|
msgstr "Visita aquest enllaç per reiniciar la teva contrasenya:"
|
||||||
|
|
||||||
#: ../views/reset_invalid.erb:3
|
#: ../views/reset_invalid.erb:3
|
||||||
|
|
@ -153,14 +153,6 @@ msgstr "El correu no és una direcció de correu vàlida."
|
||||||
msgid "An account already exists for %{email}."
|
msgid "An account already exists for %{email}."
|
||||||
msgstr "Un compte ja existeix pel correu %{email}."
|
msgstr "Un compte ja existeix pel correu %{email}."
|
||||||
|
|
||||||
#: ../views/votes_close_email.erb:1
|
|
||||||
msgid "Results:"
|
|
||||||
msgstr "Resultats:"
|
|
||||||
|
|
||||||
#: ../views/votes_close_email.erb:5
|
|
||||||
msgid "Visit this link to see the full results:"
|
|
||||||
msgstr "Visita aquest enllaç per veure els resultats complets:"
|
|
||||||
|
|
||||||
#: ../views/votes_edit.erb:1
|
#: ../views/votes_edit.erb:1
|
||||||
msgid "Edit draft vote"
|
msgid "Edit draft vote"
|
||||||
msgstr "Editar un esborrany de votació"
|
msgstr "Editar un esborrany de votació"
|
||||||
|
|
@ -174,12 +166,11 @@ msgstr "Títol"
|
||||||
msgid "Description"
|
msgid "Description"
|
||||||
msgstr "Descripció"
|
msgstr "Descripció"
|
||||||
|
|
||||||
#: ../views/votes_edit.erb:12 ../views/votes_show_open.erb:27
|
#: ../views/votes_edit.erb:12 ../views/votes_show_open.erb:23
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr "Guardar"
|
msgstr "Guardar"
|
||||||
|
|
||||||
#: ../views/votes_edit.erb:15 ../views/votes_open.erb:23
|
#: ../views/votes_edit.erb:15 ../views/votes_show_draft.erb:13
|
||||||
#: ../views/votes_show_draft.erb:13
|
|
||||||
msgid "Candidates"
|
msgid "Candidates"
|
||||||
msgstr "Opcions"
|
msgstr "Opcions"
|
||||||
|
|
||||||
|
|
@ -187,7 +178,7 @@ msgstr "Opcions"
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr "Suprimir"
|
msgstr "Suprimir"
|
||||||
|
|
||||||
#: ../views/votes_edit.erb:25 ../views/votes_edit.erb:36
|
#: ../views/votes_edit.erb:25
|
||||||
msgid "Add candidate"
|
msgid "Add candidate"
|
||||||
msgstr "Afegeix una opció"
|
msgstr "Afegeix una opció"
|
||||||
|
|
||||||
|
|
@ -195,24 +186,27 @@ 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_edit.erb:36 ../views/votes_edit.erb:54
|
||||||
#: ../views/votes_show_draft.erb:5 ../views/votes_show_open.erb:38
|
#: ../views/votes_show_closed.erb:81 ../views/votes_show_closed.erb:88
|
||||||
|
#: ../views/votes_show_open.erb:61
|
||||||
|
msgid "Add"
|
||||||
|
msgstr "Afegir"
|
||||||
|
|
||||||
|
#: ../views/votes_edit.erb:39 ../views/votes_show_closed.erb:65
|
||||||
|
#: ../views/votes_show_draft.erb:5 ../views/votes_show_open.erb:34
|
||||||
msgid "Organizers"
|
msgid "Organizers"
|
||||||
msgstr "Organitzadores"
|
msgstr "Organitzadores"
|
||||||
|
|
||||||
#: ../views/votes_edit.erb:47 ../views/votes_edit.erb:54
|
#: ../views/votes_edit.erb:47 ../views/votes_show_open.erb:54
|
||||||
#: ../views/votes_show_closed.erb:95 ../views/votes_show_closed.erb:102
|
|
||||||
#: ../views/votes_show_open.erb:58 ../views/votes_show_open.erb:65
|
|
||||||
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:75
|
||||||
#: ../views/votes_show_open.erb:48
|
#: ../views/votes_show_open.erb:44
|
||||||
msgid "Actions for organizers"
|
msgid "Actions for organizers"
|
||||||
msgstr "Accions per les organitzadores"
|
msgstr "Accions per les organitzadores"
|
||||||
|
|
||||||
#: ../views/votes_edit.erb:61 ../views/votes_edit.erb:64
|
#: ../views/votes_edit.erb:61 ../views/votes_edit.erb:64
|
||||||
#: ../views/votes_open.erb:12
|
|
||||||
msgid "Open vote to participants"
|
msgid "Open vote to participants"
|
||||||
msgstr "Obrir la votació als votants"
|
msgstr "Obrir la votació als votants"
|
||||||
|
|
||||||
|
|
@ -228,80 +222,54 @@ msgstr "Suprimir la votació"
|
||||||
msgid "New vote"
|
msgid "New vote"
|
||||||
msgstr "Nova votació"
|
msgstr "Nova votació"
|
||||||
|
|
||||||
#: ../views/votes_open.erb:1
|
#: ../views/votes_show_closed.erb:5
|
||||||
msgid "Open vote"
|
|
||||||
msgstr "Obrir la votació"
|
|
||||||
|
|
||||||
#: ../views/votes_open.erb:5
|
|
||||||
msgid ""
|
|
||||||
"The vote will automatically close on that date and the results will\n"
|
|
||||||
"be sent to all users by email."
|
|
||||||
msgstr ""
|
|
||||||
"La votació es tancarà automàticament en aquesta data i els resultats\n"
|
|
||||||
"s'enviaran a tothom per email."
|
|
||||||
|
|
||||||
#: ../views/votes_open.erb:8
|
|
||||||
msgid ""
|
|
||||||
"You won't be able to modify or delete this vote anymore after\n"
|
|
||||||
"opening it."
|
|
||||||
msgstr "Ja no podràs modificar o suprimir aquesta votació desprès d'obrir-la."
|
|
||||||
|
|
||||||
#: ../views/votes_open.erb:16
|
|
||||||
msgid "Cancel"
|
|
||||||
msgstr "Cancel·lar"
|
|
||||||
|
|
||||||
#: ../views/votes_show_closed.erb:11
|
|
||||||
msgid "All ratings"
|
msgid "All ratings"
|
||||||
msgstr "Totes les valoracions"
|
msgstr "Totes les valoracions"
|
||||||
|
|
||||||
#: ../views/votes_show_closed.erb:15
|
#: ../views/votes_show_closed.erb:9
|
||||||
msgid "Participant"
|
msgid "Participant"
|
||||||
msgstr "Votant"
|
msgstr "Votant"
|
||||||
|
|
||||||
#: ../views/votes_show_closed.erb:33 ../views/votes_show_closed.erb:73
|
#: ../views/votes_show_closed.erb:27
|
||||||
msgid "Results"
|
msgid "Results"
|
||||||
msgstr "Resultats"
|
msgstr "Resultats"
|
||||||
|
|
||||||
#: ../views/votes_show_closed.erb:37
|
#: ../views/votes_show_closed.erb:31
|
||||||
msgid "Rank"
|
msgid "Rank"
|
||||||
msgstr "Rang"
|
msgstr "Rang"
|
||||||
|
|
||||||
#: ../views/votes_show_closed.erb:38
|
#: ../views/votes_show_closed.erb:32
|
||||||
msgid "Candidate"
|
msgid "Candidate"
|
||||||
msgstr "Opció"
|
msgstr "Opció"
|
||||||
|
|
||||||
#: ../views/votes_show_closed.erb:39
|
#: ../views/votes_show_closed.erb:33
|
||||||
msgid "Majority Judgment"
|
msgid "Majority Judgment"
|
||||||
msgstr "Judici majoritari"
|
msgstr "Judici majoritari"
|
||||||
|
|
||||||
#: ../views/votes_show_closed.erb:40
|
#: ../views/votes_show_closed.erb:34
|
||||||
msgid "Proponents"
|
msgid "Proponents"
|
||||||
msgstr "Defensores"
|
msgstr "Defensores"
|
||||||
|
|
||||||
#: ../views/votes_show_closed.erb:41
|
#: ../views/votes_show_closed.erb:35
|
||||||
msgid "Opponents"
|
msgid "Opponents"
|
||||||
msgstr "Detractores"
|
msgstr "Detractores"
|
||||||
|
|
||||||
#: ../views/votes_show_closed.erb:75
|
#: ../views/votes_show_closed.erb:78
|
||||||
msgid "No results are available because nobody voted on this vote."
|
|
||||||
msgstr "No hi ha cap resultat perquè ningú va votar en aquesta votació."
|
|
||||||
|
|
||||||
#: ../views/votes_show_closed.erb:92
|
|
||||||
msgid "Reopen voting period"
|
msgid "Reopen voting period"
|
||||||
msgstr "Reobrir el període de votació"
|
msgstr "Reobrir el període de votació"
|
||||||
|
|
||||||
#: ../views/votes_show_open.erb:9
|
#: ../views/votes_show_open.erb:5
|
||||||
msgid "Your ratings"
|
msgid "Your ratings"
|
||||||
msgstr "Les teves valoracions"
|
msgstr "Les teves valoracions"
|
||||||
|
|
||||||
#: ../views/votes_show_open.erb:30
|
#: ../views/votes_show_open.erb:26
|
||||||
msgid "Participants"
|
msgid "Participants"
|
||||||
msgstr "Votants"
|
msgstr "Votants"
|
||||||
|
|
||||||
#: ../views/votes_show_open.erb:51
|
#: ../views/votes_show_open.erb:47
|
||||||
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:51
|
||||||
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"
|
||||||
|
|
|
||||||
116
po/vedia.pot
116
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-07 18:22-0600\n"
|
||||||
"PO-Revision-Date: 2025-06-08 15:49-0600\n"
|
"PO-Revision-Date: 2025-06-07 18:22-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"
|
||||||
|
|
@ -18,39 +18,39 @@ msgstr ""
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
|
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
|
||||||
|
|
||||||
#: ../config/environments/defaults.rb:2
|
#: ../vedia.rb:64
|
||||||
msgid "Awful"
|
msgid "Awful"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../config/environments/defaults.rb:3
|
#: ../vedia.rb:65
|
||||||
msgid "Very bad"
|
msgid "Very bad"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../config/environments/defaults.rb:4
|
#: ../vedia.rb:66
|
||||||
msgid "Bad"
|
msgid "Bad"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../config/environments/defaults.rb:5
|
#: ../vedia.rb:67
|
||||||
msgid "Mediocre"
|
msgid "Mediocre"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../config/environments/defaults.rb:6
|
#: ../vedia.rb:68
|
||||||
msgid "Good"
|
msgid "Good"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../config/environments/defaults.rb:7
|
#: ../vedia.rb:69
|
||||||
msgid "Very good"
|
msgid "Very good"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../vedia.rb:118
|
#: ../vedia.rb:121
|
||||||
msgid "Incorrect email or password."
|
msgid "Incorrect email or password."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../vedia.rb:140
|
#: ../vedia.rb:139
|
||||||
msgid "Reset your password"
|
msgid "Reset your password"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/home.erb:1 ../views/layout.erb:23
|
#: ../views/home.erb:1 ../views/layout.erb:14
|
||||||
msgid "Home"
|
msgid "Home"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
@ -86,21 +86,21 @@ msgstr ""
|
||||||
msgid "Create new vote"
|
msgid "Create new vote"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/layout.erb:22
|
#: ../views/layout.erb:13
|
||||||
msgid "Logged in as %{email}."
|
msgid "Logged in as %{email}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/layout.erb:22
|
#: ../views/layout.erb:13
|
||||||
msgid "Logout"
|
msgid "Logout"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/layout.erb:25 ../views/login.erb:1 ../views/login.erb:16
|
#: ../views/layout.erb:16 ../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:85 ../views/votes_show_open.erb:58
|
||||||
msgid "Email"
|
msgid "Email"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
@ -123,7 +123,7 @@ msgid "Specify a password."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/reset_email.erb:1
|
#: ../views/reset_email.erb:1
|
||||||
msgid "Visit this link to reset your password:"
|
msgid "Visit the following link to reset your password:"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/reset_invalid.erb:3
|
#: ../views/reset_invalid.erb:3
|
||||||
|
|
@ -152,14 +152,6 @@ msgstr ""
|
||||||
msgid "An account already exists for %{email}."
|
msgid "An account already exists for %{email}."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/votes_close_email.erb:1
|
|
||||||
msgid "Results:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../views/votes_close_email.erb:5
|
|
||||||
msgid "Visit this link to see the full results:"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../views/votes_edit.erb:1
|
#: ../views/votes_edit.erb:1
|
||||||
msgid "Edit draft vote"
|
msgid "Edit draft vote"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
@ -173,12 +165,11 @@ msgstr ""
|
||||||
msgid "Description"
|
msgid "Description"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/votes_edit.erb:12 ../views/votes_show_open.erb:27
|
#: ../views/votes_edit.erb:12 ../views/votes_show_open.erb:23
|
||||||
msgid "Save"
|
msgid "Save"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/votes_edit.erb:15 ../views/votes_open.erb:23
|
#: ../views/votes_edit.erb:15 ../views/votes_show_draft.erb:13
|
||||||
#: ../views/votes_show_draft.erb:13
|
|
||||||
msgid "Candidates"
|
msgid "Candidates"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
@ -186,7 +177,7 @@ msgstr ""
|
||||||
msgid "Delete"
|
msgid "Delete"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/votes_edit.erb:25 ../views/votes_edit.erb:36
|
#: ../views/votes_edit.erb:25
|
||||||
msgid "Add candidate"
|
msgid "Add candidate"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
@ -194,24 +185,27 @@ msgstr ""
|
||||||
msgid "Name"
|
msgid "Name"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/votes_edit.erb:39 ../views/votes_show_closed.erb:79
|
#: ../views/votes_edit.erb:36 ../views/votes_edit.erb:54
|
||||||
#: ../views/votes_show_draft.erb:5 ../views/votes_show_open.erb:38
|
#: ../views/votes_show_closed.erb:81 ../views/votes_show_closed.erb:88
|
||||||
|
#: ../views/votes_show_open.erb:61
|
||||||
|
msgid "Add"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: ../views/votes_edit.erb:39 ../views/votes_show_closed.erb:65
|
||||||
|
#: ../views/votes_show_draft.erb:5 ../views/votes_show_open.erb:34
|
||||||
msgid "Organizers"
|
msgid "Organizers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/votes_edit.erb:47 ../views/votes_edit.erb:54
|
#: ../views/votes_edit.erb:47 ../views/votes_show_open.erb:54
|
||||||
#: ../views/votes_show_closed.erb:95 ../views/votes_show_closed.erb:102
|
|
||||||
#: ../views/votes_show_open.erb:58 ../views/votes_show_open.erb:65
|
|
||||||
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:75
|
||||||
#: ../views/votes_show_open.erb:48
|
#: ../views/votes_show_open.erb:44
|
||||||
msgid "Actions for organizers"
|
msgid "Actions for organizers"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/votes_edit.erb:61 ../views/votes_edit.erb:64
|
#: ../views/votes_edit.erb:61 ../views/votes_edit.erb:64
|
||||||
#: ../views/votes_open.erb:12
|
|
||||||
msgid "Open vote to participants"
|
msgid "Open vote to participants"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
|
|
@ -227,78 +221,54 @@ msgstr ""
|
||||||
msgid "New vote"
|
msgid "New vote"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/votes_open.erb:1
|
#: ../views/votes_show_closed.erb:5
|
||||||
msgid "Open vote"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../views/votes_open.erb:5
|
|
||||||
msgid ""
|
|
||||||
"The vote will automatically close on that date and the results will\n"
|
|
||||||
"be sent to all users by email."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../views/votes_open.erb:8
|
|
||||||
msgid ""
|
|
||||||
"You won't be able to modify or delete this vote anymore after\n"
|
|
||||||
"opening it."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../views/votes_open.erb:16
|
|
||||||
msgid "Cancel"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../views/votes_show_closed.erb:11
|
|
||||||
msgid "All ratings"
|
msgid "All ratings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/votes_show_closed.erb:15
|
#: ../views/votes_show_closed.erb:9
|
||||||
msgid "Participant"
|
msgid "Participant"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/votes_show_closed.erb:33 ../views/votes_show_closed.erb:73
|
#: ../views/votes_show_closed.erb:27
|
||||||
msgid "Results"
|
msgid "Results"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/votes_show_closed.erb:37
|
#: ../views/votes_show_closed.erb:31
|
||||||
msgid "Rank"
|
msgid "Rank"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/votes_show_closed.erb:38
|
#: ../views/votes_show_closed.erb:32
|
||||||
msgid "Candidate"
|
msgid "Candidate"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/votes_show_closed.erb:39
|
#: ../views/votes_show_closed.erb:33
|
||||||
msgid "Majority Judgment"
|
msgid "Majority Judgment"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/votes_show_closed.erb:40
|
#: ../views/votes_show_closed.erb:34
|
||||||
msgid "Proponents"
|
msgid "Proponents"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/votes_show_closed.erb:41
|
#: ../views/votes_show_closed.erb:35
|
||||||
msgid "Opponents"
|
msgid "Opponents"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/votes_show_closed.erb:75
|
#: ../views/votes_show_closed.erb:78
|
||||||
msgid "No results are available because nobody voted on this vote."
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../views/votes_show_closed.erb:92
|
|
||||||
msgid "Reopen voting period"
|
msgid "Reopen voting period"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/votes_show_open.erb:9
|
#: ../views/votes_show_open.erb:5
|
||||||
msgid "Your ratings"
|
msgid "Your ratings"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/votes_show_open.erb:30
|
#: ../views/votes_show_open.erb:26
|
||||||
msgid "Participants"
|
msgid "Participants"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../views/votes_show_open.erb:51
|
#: ../views/votes_show_open.erb:47
|
||||||
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:51
|
||||||
msgid "Close votes and show results"
|
msgid "Close votes and show results"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
|
||||||
74
vedia.rb
74
vedia.rb
|
|
@ -5,12 +5,7 @@ require 'gettext'
|
||||||
require 'securerandom'
|
require 'securerandom'
|
||||||
require 'chartkick'
|
require 'chartkick'
|
||||||
require 'mail'
|
require 'mail'
|
||||||
require 'tzinfo'
|
|
||||||
|
|
||||||
include GetText
|
|
||||||
|
|
||||||
require_relative 'mj'
|
require_relative 'mj'
|
||||||
require_relative 'config/environments/defaults.rb'
|
|
||||||
require_relative "config/environments/#{settings.environment}"
|
require_relative "config/environments/#{settings.environment}"
|
||||||
|
|
||||||
class Vote < ActiveRecord::Base
|
class Vote < ActiveRecord::Base
|
||||||
|
|
@ -60,11 +55,19 @@ def verify_password(password, hash)
|
||||||
BCrypt::Password.new(hash) == password
|
BCrypt::Password.new(hash) == password
|
||||||
end
|
end
|
||||||
|
|
||||||
|
include GetText
|
||||||
set_output_charset('UTF-8')
|
set_output_charset('UTF-8')
|
||||||
bindtextdomain('vedia', 'locale')
|
bindtextdomain('vedia', 'locale')
|
||||||
set_locale('ca')
|
set_locale('ca')
|
||||||
|
|
||||||
enable :sessions
|
enable :sessions
|
||||||
|
set :values, [ { :id => 1, :label => _("Awful"), :color => '#ff4500' },
|
||||||
|
{ :id => 2, :label => _("Very bad"), :color => '#ffa500' },
|
||||||
|
{ :id => 3, :label => _("Bad"), :color => '#ffff00' },
|
||||||
|
{ :id => 4, :label => _("Mediocre"), :color => '#9acd32' },
|
||||||
|
{ :id => 5, :label => _("Good"), :color => '#228b22' },
|
||||||
|
{ :id => 6, :label => _("Very good"), :color => '#006400' } ]
|
||||||
|
set :admin_email, 'vedia@potager.org'
|
||||||
MajorityJudgment.values = settings.values
|
MajorityJudgment.values = settings.values
|
||||||
|
|
||||||
get '/' do
|
get '/' do
|
||||||
|
|
@ -120,10 +123,6 @@ post '/login' do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
post '/timezone' do
|
|
||||||
session[:timezone] = JSON.parse(request.body.read)['timezone']
|
|
||||||
end
|
|
||||||
|
|
||||||
get '/reset' do
|
get '/reset' do
|
||||||
erb :reset
|
erb :reset
|
||||||
end
|
end
|
||||||
|
|
@ -131,8 +130,7 @@ end
|
||||||
post '/reset' do
|
post '/reset' do
|
||||||
@user = User.find_by(email: params[:email])
|
@user = User.find_by(email: params[:email])
|
||||||
if @user
|
if @user
|
||||||
@reset = SecureRandom.uuid
|
@user.reset = SecureRandom.uuid
|
||||||
@user.reset = hash_password(@reset)
|
|
||||||
@user.save
|
@user.save
|
||||||
mail = Mail.new
|
mail = Mail.new
|
||||||
mail.from = settings.admin_email
|
mail.from = settings.admin_email
|
||||||
|
|
@ -145,10 +143,7 @@ post '/reset' do
|
||||||
end
|
end
|
||||||
|
|
||||||
get '/reset/:uuid' do
|
get '/reset/:uuid' do
|
||||||
@user = nil
|
@user = User.find_by(reset: params[:uuid])
|
||||||
User.where.not(reset: nil).each do |user|
|
|
||||||
@user = user if verify_password(params[:uuid], user.reset)
|
|
||||||
end
|
|
||||||
if @user
|
if @user
|
||||||
erb :reset_change
|
erb :reset_change
|
||||||
else
|
else
|
||||||
|
|
@ -157,10 +152,7 @@ get '/reset/:uuid' do
|
||||||
end
|
end
|
||||||
|
|
||||||
post '/reset/:uuid' do
|
post '/reset/:uuid' do
|
||||||
@user = nil
|
@user = User.find_by(reset: params[:uuid])
|
||||||
User.where.not(reset: nil).each do |user|
|
|
||||||
@user = user if verify_password(params[:uuid], user.reset)
|
|
||||||
end
|
|
||||||
if @user
|
if @user
|
||||||
@errors = []
|
@errors = []
|
||||||
if params[:password].empty?
|
if params[:password].empty?
|
||||||
|
|
@ -221,6 +213,10 @@ get '/votes/:id' do
|
||||||
erb :votes_show_open
|
erb :votes_show_open
|
||||||
when 'closed'
|
when 'closed'
|
||||||
erb :votes_show_closed
|
erb :votes_show_closed
|
||||||
|
else
|
||||||
|
@vote.state = 'draft'
|
||||||
|
@vote.save
|
||||||
|
erb :votes_edit
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
@ -257,15 +253,6 @@ post '/votes/:id/candidates/:cid/delete' do
|
||||||
redirect '/votes/' + @vote.secure_id
|
redirect '/votes/' + @vote.secure_id
|
||||||
end
|
end
|
||||||
|
|
||||||
get '/votes/:id/open' do
|
|
||||||
require_login
|
|
||||||
find_vote
|
|
||||||
require_organizer
|
|
||||||
require_draft_vote
|
|
||||||
@expire_on = Time.now.utc + settings.expire_after
|
|
||||||
erb :votes_open
|
|
||||||
end
|
|
||||||
|
|
||||||
post '/votes/:id/open' do
|
post '/votes/:id/open' do
|
||||||
require_login
|
require_login
|
||||||
find_vote
|
find_vote
|
||||||
|
|
@ -273,7 +260,6 @@ post '/votes/:id/open' do
|
||||||
require_draft_vote
|
require_draft_vote
|
||||||
if not @vote.candidates.length < 2
|
if not @vote.candidates.length < 2
|
||||||
@vote.state = 'open'
|
@vote.state = 'open'
|
||||||
@vote.expire_on = Time.now.utc + settings.expire_after
|
|
||||||
@vote.save
|
@vote.save
|
||||||
end
|
end
|
||||||
redirect '/votes/' + @vote.secure_id
|
redirect '/votes/' + @vote.secure_id
|
||||||
|
|
@ -284,7 +270,6 @@ post '/votes/:id/draft' do
|
||||||
find_vote
|
find_vote
|
||||||
require_organizer
|
require_organizer
|
||||||
require_open_vote
|
require_open_vote
|
||||||
require_no_expire_on
|
|
||||||
@vote.ratings.each {|r| r.destroy}
|
@vote.ratings.each {|r| r.destroy}
|
||||||
@vote.state = 'draft'
|
@vote.state = 'draft'
|
||||||
@vote.save
|
@vote.save
|
||||||
|
|
@ -296,7 +281,6 @@ post '/votes/:id/close' do
|
||||||
find_vote
|
find_vote
|
||||||
require_organizer
|
require_organizer
|
||||||
require_open_vote
|
require_open_vote
|
||||||
require_no_expire_on
|
|
||||||
@vote.state = 'closed'
|
@vote.state = 'closed'
|
||||||
@vote.save
|
@vote.save
|
||||||
redirect '/votes/' + @vote.secure_id
|
redirect '/votes/' + @vote.secure_id
|
||||||
|
|
@ -307,7 +291,6 @@ post '/votes/:id/reopen' do
|
||||||
find_vote
|
find_vote
|
||||||
require_organizer
|
require_organizer
|
||||||
require_closed_vote
|
require_closed_vote
|
||||||
require_no_expire_on
|
|
||||||
@vote.state = 'open'
|
@vote.state = 'open'
|
||||||
@vote.save
|
@vote.save
|
||||||
redirect '/votes/' + @vote.secure_id
|
redirect '/votes/' + @vote.secure_id
|
||||||
|
|
@ -316,7 +299,6 @@ end
|
||||||
post '/votes/:id/ratings' do
|
post '/votes/:id/ratings' do
|
||||||
require_login
|
require_login
|
||||||
find_vote
|
find_vote
|
||||||
require_open_vote
|
|
||||||
@vote.candidates.each do |candidate|
|
@vote.candidates.each do |candidate|
|
||||||
rating = Rating.find_or_initialize_by(vote: @vote, user: current_user, candidate: candidate)
|
rating = Rating.find_or_initialize_by(vote: @vote, user: current_user, candidate: candidate)
|
||||||
rating.value = params[candidate.id.to_s]
|
rating.value = params[candidate.id.to_s]
|
||||||
|
|
@ -342,24 +324,6 @@ post '/votes/:id/delete' do
|
||||||
redirect '/'
|
redirect '/'
|
||||||
end
|
end
|
||||||
|
|
||||||
def close_expired_votes
|
|
||||||
Vote.where(state: 'open').where("expire_on < :now", { now: Time.now.utc }).each do |vote|
|
|
||||||
puts "#{Time.now.utc} Closing vote \"#{vote.title}\" because it expired on #{vote.expire_on}..."
|
|
||||||
vote.state = 'closed'
|
|
||||||
vote.save
|
|
||||||
User.all.each do |user|
|
|
||||||
puts "#{Time.now.utc} Sending results by email to #{user.email}..."
|
|
||||||
mail = Mail.new
|
|
||||||
mail.from = settings.admin_email
|
|
||||||
mail.to = user.email
|
|
||||||
mail.subject = _("Results of the vote: #{vote.title}")
|
|
||||||
template = ERB.new(File.read("views/votes_close_email.erb"))
|
|
||||||
mail.body = template.result(binding)
|
|
||||||
mail.deliver
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
helpers do
|
helpers do
|
||||||
def current_user
|
def current_user
|
||||||
if session[:user_id]
|
if session[:user_id]
|
||||||
|
|
@ -392,12 +356,4 @@ helpers do
|
||||||
def require_closed_vote
|
def require_closed_vote
|
||||||
redirect '/votes/' + @vote.secure_id unless @vote.state == 'closed'
|
redirect '/votes/' + @vote.secure_id unless @vote.state == 'closed'
|
||||||
end
|
end
|
||||||
|
|
||||||
def require_no_expire_on
|
|
||||||
redirect '/votes/' + @vote.secure_id unless @vote.expire_on.nil?
|
|
||||||
end
|
|
||||||
|
|
||||||
def format_date(timestamp)
|
|
||||||
"#{TZInfo::Timezone.get(session[:timezone]).to_local(timestamp).strftime('%F %R')} (#{session[:timezone].gsub('_', ' ')})"
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -8,15 +8,6 @@
|
||||||
<script src="/Chart.bundle.js"></script>
|
<script src="/Chart.bundle.js"></script>
|
||||||
<link rel="stylesheet" href="/style.css">
|
<link rel="stylesheet" href="/style.css">
|
||||||
</head>
|
</head>
|
||||||
<script>
|
|
||||||
fetch('/timezone', {
|
|
||||||
method: 'post',
|
|
||||||
headers: {
|
|
||||||
'Content-Type': 'application/json'
|
|
||||||
},
|
|
||||||
body: JSON.stringify({ timezone: Intl.DateTimeFormat().resolvedOptions().timeZone })
|
|
||||||
});
|
|
||||||
</script>
|
|
||||||
<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>
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,3 @@
|
||||||
<%= _("Visit this link to reset your password:") %>
|
<%= _("Visit the following link to reset your password:") %>
|
||||||
|
|
||||||
<%= "#{settings.base_url}reset/#{@reset}" %>
|
<%= "#{settings.base_url}reset/#{@user.reset}" %>
|
||||||
|
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
<%= _("Results:") %>
|
|
||||||
<% i = 0 %><% vote.candidates.sort { |a, b| a.mj <=> b.mj }.reverse.each do |candidate| %><% i = i + 1 %>
|
|
||||||
<%= "#{i}. #{candidate.name}" %>
|
|
||||||
<% end %>
|
|
||||||
<%= _("Visit this link to see the full results:") %>
|
|
||||||
|
|
||||||
<%= "#{settings.base_url}votes/#{vote.secure_id}" %>
|
|
||||||
|
|
@ -33,7 +33,7 @@
|
||||||
<label for="description"><%= _("Description") %></label>
|
<label for="description"><%= _("Description") %></label>
|
||||||
<input type="text" name="description">
|
<input type="text" name="description">
|
||||||
</p>
|
</p>
|
||||||
<button type="submit"><%= _("Add candidate") %></button>
|
<button type="submit"><%= _("Add") %></button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<h2><%= _("Organizers") %></h2>
|
<h2><%= _("Organizers") %></h2>
|
||||||
|
|
@ -51,12 +51,12 @@
|
||||||
<label for="email"><%= _("Email") %></label>
|
<label for="email"><%= _("Email") %></label>
|
||||||
<input type="text" name="email">
|
<input type="text" name="email">
|
||||||
</p>
|
</p>
|
||||||
<button type="submit"><%= _("Add organizer") %></button>
|
<button type="submit"><%= _("Add") %></button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<h3><%= _("Actions for organizers") %></h2>
|
<h3><%= _("Actions for organizers") %></h2>
|
||||||
|
|
||||||
<form action="/votes/<%= @vote.secure_id %>/open" method="get">
|
<form action="/votes/<%= @vote.secure_id %>/open" method="post">
|
||||||
<% if @vote.candidates.length < 2 %>
|
<% if @vote.candidates.length < 2 %>
|
||||||
<button type="submit" disabled><%= _("Open vote to participants") %></button>
|
<button type="submit" disabled><%= _("Open vote to participants") %></button>
|
||||||
<p><%= _("Add at least 2 candidates before opening the vote to participants.") %></p>
|
<p><%= _("Add at least 2 candidates before opening the vote to participants.") %></p>
|
||||||
|
|
|
||||||
|
|
@ -1,28 +0,0 @@
|
||||||
<h1><%= _("Open vote") %></h1>
|
|
||||||
|
|
||||||
<p><%= _("Closing date: #{format_date(@expire_on)}") %></p>
|
|
||||||
|
|
||||||
<p><%= _("The vote will automatically close on that date and the results will
|
|
||||||
be sent to all users by email.") %></p>
|
|
||||||
|
|
||||||
<p><%= _("You won't be able to modify or delete this vote anymore after
|
|
||||||
opening it.") %></p>
|
|
||||||
|
|
||||||
<form action="/votes/<%= @vote.secure_id %>/open" method="post">
|
|
||||||
<button type="submit"><%= _("Open vote to participants") %></button>
|
|
||||||
</form>
|
|
||||||
|
|
||||||
<form action="/votes/<%= @vote.secure_id %>" method="get">
|
|
||||||
<button type="submit"><%= _("Cancel") %></button>
|
|
||||||
</form>
|
|
||||||
|
|
||||||
<h2><%= @vote.title %></h2>
|
|
||||||
|
|
||||||
<p><%= @vote.description %></p>
|
|
||||||
|
|
||||||
<h2><%= _("Candidates") %></h2>
|
|
||||||
|
|
||||||
<% @vote.candidates.each do |candidate| %>
|
|
||||||
<h3><%= candidate.name %></h3>
|
|
||||||
<p><%= candidate.description %></p>
|
|
||||||
<% end %>
|
|
||||||
|
|
@ -1,13 +1,7 @@
|
||||||
<h1><%= @vote.title %></h1>
|
<h1><%= @vote.title %></h1>
|
||||||
|
|
||||||
<% if @vote.expire_on %>
|
|
||||||
<p><%= _("Closing date: #{format_date(@vote.expire_on)}") %></p>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<p><%= @vote.description %></p>
|
<p><%= @vote.description %></p>
|
||||||
|
|
||||||
<% if @vote.ratings.length > 0 %>
|
|
||||||
|
|
||||||
<h2><%= _("All ratings") %></h2>
|
<h2><%= _("All ratings") %></h2>
|
||||||
|
|
||||||
<table>
|
<table>
|
||||||
|
|
@ -68,14 +62,6 @@ end
|
||||||
%>
|
%>
|
||||||
<%= bar_chart data, colors: colors, stacked: true, legend: 'bottom' %>
|
<%= bar_chart data, colors: colors, stacked: true, legend: 'bottom' %>
|
||||||
|
|
||||||
<% else %>
|
|
||||||
|
|
||||||
<h2><%= _("Results") %></h2>
|
|
||||||
|
|
||||||
<%= _("No results are available because nobody voted on this vote.") %>
|
|
||||||
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<h2><%= _("Organizers") %></h2>
|
<h2><%= _("Organizers") %></h2>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
|
|
@ -84,7 +70,7 @@ end
|
||||||
<% end %>
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<% if @vote.users.exists?(current_user.id) and @vote.expire_on.nil? %>
|
<% if @vote.users.exists?(current_user.id) %>
|
||||||
|
|
||||||
<h3><%= _("Actions for organizers") %></h3>
|
<h3><%= _("Actions for organizers") %></h3>
|
||||||
|
|
||||||
|
|
@ -92,14 +78,14 @@ end
|
||||||
<button type="submit"><%= _("Reopen voting period") %></button>
|
<button type="submit"><%= _("Reopen voting period") %></button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<h3><%= _("Add organizer") %></h3>
|
<h3><%= _("Add") %></h3>
|
||||||
|
|
||||||
<form action="/votes/<%= @vote.secure_id %>/organizers" method="post">
|
<form action="/votes/<%= @vote.secure_id %>/organizers" method="post">
|
||||||
<p>
|
<p>
|
||||||
<label for="email"><%= _("Email") %></label>
|
<label for="email"><%= _("Email") %></label>
|
||||||
<input type="text" name="email">
|
<input type="text" name="email">
|
||||||
</p>
|
</p>
|
||||||
<button type="submit"><%= _("Add organizer") %></button>
|
<button type="submit"><%= _("Add") %></button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,5 @@
|
||||||
<h1><%= @vote.title %></h1>
|
<h1><%= @vote.title %></h1>
|
||||||
|
|
||||||
<% if @vote.expire_on %>
|
|
||||||
<p><%= _("Closing date: #{format_date(@vote.expire_on)}") %></p>
|
|
||||||
<% end %>
|
|
||||||
|
|
||||||
<p><%= @vote.description %></p>
|
<p><%= @vote.description %></p>
|
||||||
|
|
||||||
<h2><%= _("Your ratings") %></h2>
|
<h2><%= _("Your ratings") %></h2>
|
||||||
|
|
@ -43,7 +39,7 @@
|
||||||
<% end %>
|
<% end %>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<% if @vote.users.exists?(current_user.id) and @vote.expire_on.nil? %>
|
<% if @vote.users.exists?(current_user.id) %>
|
||||||
|
|
||||||
<h3><%= _("Actions for organizers") %></h3>
|
<h3><%= _("Actions for organizers") %></h3>
|
||||||
|
|
||||||
|
|
@ -62,7 +58,7 @@
|
||||||
<label for="email"><%= _("Email") %></label>
|
<label for="email"><%= _("Email") %></label>
|
||||||
<input type="text" name="email">
|
<input type="text" name="email">
|
||||||
</p>
|
</p>
|
||||||
<button type="submit"><%= _("Add organizer") %></button>
|
<button type="submit"><%= _("Add") %></button>
|
||||||
</form>
|
</form>
|
||||||
|
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue