|
|
class SiteController < ApplicationController
|
|
|
|
|
|
before_filter :site_admin_authorization, :except => 'login'
|
|
|
|
|
|
def login
|
|
|
# Site administrator login
|
|
|
@countries = Country.find(:all, :include => :sites)
|
|
|
@country_select = @countries.collect { |c| [c.name, c.id] }
|
|
|
|
|
|
@country_select_with_all = [['Any',0]]
|
|
|
@countries.each do |country|
|
|
|
@country_select_with_all << [country.name, country.id]
|
|
|
end
|
|
|
|
|
|
@site_select = []
|
|
|
@countries.each do |country|
|
|
|
country.sites.each do |site|
|
|
|
@site_select << ["#{site.name}, #{country.name}", site.id]
|
|
|
end
|
|
|
end
|
|
|
|
|
|
@default_site = Site.first if !Configuration['contest.multisites']
|
|
|
|
|
|
render :action => 'login', :layout => 'empty'
|
|
|
end
|
|
|
|
|
|
def index
|
|
|
if @site.started
|
|
|
render :action => 'started', :layout => 'empty'
|
|
|
else
|
|
|
render :action => 'prompt', :layout => 'empty'
|
|
|
end
|
|
|
end
|
|
|
|
|
|
def start
|
|
|
@site.started = true
|
|
|
@site.start_time = Time.new.gmtime
|
|
|
@site.save
|
|
|
redirect_to :action => 'index'
|
|
|
end
|
|
|
|
|
|
def logout
|
|
|
reset_session
|
|
|
redirect_to :controller => 'main', :action => 'login'
|
|
|
end
|
|
|
|
|
|
protected
|
|
|
def site_admin_authorization
|
|
|
if session[:site_id]==nil
|
|
|
redirect_to :controller => 'site', :action => 'login' and return
|
|
|
end
|
|
|
begin
|
|
|
@site = Site.find(session[:site_id], :include => :country)
|
|
|
rescue ActiveRecord::RecordNotFound
|
|
|
@site = nil
|
|
|
end
|
|
|
if @site==nil
|
|
|
redirect_to :controller => 'site', :action => 'login' and return
|
|
|
end
|
|
|
end
|
|
|
|
|
|
end
|
|
|
|