diff options
Diffstat (limited to 'web')
-rw-r--r-- | web/common.php | 16 | ||||
-rw-r--r-- | web/data.js | 39 | ||||
-rw-r--r-- | web/data_update.php | 81 | ||||
-rw-r--r-- | web/index.html | 810 | ||||
-rw-r--r-- | web/nor.css | 112 | ||||
-rw-r--r-- | web/nor.js | 111 | ||||
-rw-r--r-- | web/page.css | 6 | ||||
-rw-r--r-- | web/page.js | 91 | ||||
-rw-r--r-- | web/page_problem.css | 164 | ||||
-rw-r--r-- | web/page_problem.js | 525 | ||||
-rw-r--r-- | web/page_square.css | 167 | ||||
-rw-r--r-- | web/page_square.js | 840 | ||||
-rw-r--r-- | web/page_status.css | 110 | ||||
-rw-r--r-- | web/page_status.js | 497 | ||||
-rw-r--r-- | web/page_user.css | 123 | ||||
-rw-r--r-- | web/page_user.js | 305 | ||||
-rw-r--r-- | web/problem_code_submit.php | 66 | ||||
-rw-r--r-- | web/problem_view.php | 41 | ||||
-rw-r--r-- | web/square_list.php | 81 | ||||
-rw-r--r-- | web/square_problem_list.php | 63 | ||||
-rw-r--r-- | web/square_rank_list.php | 115 | ||||
-rw-r--r-- | web/square_scoreboard_list.php | 115 | ||||
-rw-r--r-- | web/square_set.php | 0 | ||||
-rw-r--r-- | web/status_submit_list.php | 147 | ||||
-rw-r--r-- | web/status_viewcode.php | 30 | ||||
-rw-r--r-- | web/user_get.php | 65 | ||||
-rw-r--r-- | web/user_login.php | 32 | ||||
-rw-r--r-- | web/user_register.php | 41 | ||||
-rw-r--r-- | web/user_set.php | 109 | ||||
-rw-r--r-- | web/viewcode.html | 54 |
30 files changed, 0 insertions, 4956 deletions
diff --git a/web/common.php b/web/common.php deleted file mode 100644 index 9fd34f8..0000000 --- a/web/common.php +++ /dev/null @@ -1,16 +0,0 @@ -<?php - -define('DB_NAME','expoj'); -define('DB_USER','expoj'); -define('DB_PASSWORD',''); -define('SEC_SALT','xxxxx'); - -function sec_checkuser($userid,$usersec){ - if($userid == '' || $usersec == '' || strval(intval($userid)) != $userid || hash('sha512',$userid.SEC_SALT) != $usersec){ - return false; - } - - return true; -} - -?> diff --git a/web/data.js b/web/data.js deleted file mode 100644 index 874ce80..0000000 --- a/web/data.js +++ /dev/null @@ -1,39 +0,0 @@ -var data_callback; -var data_paramo; -var data_ajaxupdate; - -function data_init(){ - data_callback = $.Callbacks(); - - data_paramo = new Object(); - data_paramo.laststamp = '_'; - - data_ajaxupdate = null; -} -function data_update(force){ - if(data_ajaxupdate != null){ - data_ajaxupdate.abort(); - } - if(force){ - data_paramo.laststamp = '_'; - } - - data_ajaxupdate = $.post('data_update.php', - {'param':JSON.stringify(data_paramo)}, - function(res){ - var reto; - - if(res == 'Esame'){ - data_update(); - }else if(res[0] != 'E'){ - reto = JSON.parse(res); - data_paramo.laststamp = reto.laststamp; - - data_callback.fire(reto); - - data_ajaxupdate = null; - data_update(false); - } - } - ); -} diff --git a/web/data_update.php b/web/data_update.php deleted file mode 100644 index b7bf9d2..0000000 --- a/web/data_update.php +++ /dev/null @@ -1,81 +0,0 @@ -<?php -require_once('common.php'); -require_once('status_submit_list.php'); -require_once('square_list.php'); -require_once('square_rank_list.php'); -require_once('square_problem_list.php'); -require_once('square_scoreboard_list.php'); -require_once('problem_view.php'); - -set_time_limit(0); - -$paramo = json_decode($_POST['param']); -if($paramo == null){ - exit('Eerror'); -} -$laststamp = $paramo->laststamp; -if($laststamp == null){ - return 'Eerror'; -} - -$sqlc = pg_connect('host=localhost port=5432 dbname='.DB_NAME.' user='.DB_USER.' password='.DB_PASSWORD); - -$retry = 8; -while(true){ - $sqlr = pg_query($sqlc,'SELECT "timestamp",array_to_string("status",\',\') AS status FROM "submit" ORDER BY "timestamp" DESC LIMIT 1;'); - $sqlo = pg_fetch_object($sqlr); - - $nowstamp = $sqlo->timestamp.'_'.$sqlo->status; - pg_free_result($sqlr); - - if($nowstamp != $laststamp){ - break; - } - - if(($retry--) > 0){ - sleep(1); - }else{ - pg_close($sqlc); - exit('Esame'); - } -} - -$ret = array( - 'laststamp' => $nowstamp -); -if($paramo->status_submit_list != null){ - $ret['status_submit_list'] = status_submit_list($sqlc,$paramo->status_submit_list,false); -} -if($paramo->status_submit_userlist != null){ - $ret['status_submit_userlist'] = status_submit_list($sqlc,$paramo->status_submit_userlist,true); -} - -if($paramo->problem_log_submit_acceptlist != null){ - $ret['problem_log_submit_acceptlist'] = status_submit_list($sqlc,$paramo->problem_log_submit_acceptlist,false); -} -if($paramo->problem_log_submit_alllist != null){ - $ret['problem_log_submit_alllist'] = status_submit_list($sqlc,$paramo->problem_log_submit_alllist,false); -} - -if($paramo->square_list != null){ - $ret['square_list'] = square_list($sqlc,$paramo->square_list); -} - -if($paramo->square_rank_list != null){ - $ret['square_rank_list'] = square_rank_list($sqlc,$paramo->square_rank_list); -} -if($paramo->square_problem_list != null){ - $ret['square_problem_list'] = square_problem_list($sqlc,$paramo->square_problem_list); -} -if($paramo->square_scoreboard_list != null){ - $ret['square_scoreboard_list'] = square_scoreboard_list($sqlc,$paramo->square_scoreboard_list); -} - -if($paramo->problem_view != null){ - $ret['problem_view'] = problem_view($sqlc,$paramo->problem_view); -} - -pg_close($sqlc); - -echo json_encode($ret); -?> diff --git a/web/index.html b/web/index.html deleted file mode 100644 index 50f87cb..0000000 --- a/web/index.html +++ /dev/null @@ -1,810 +0,0 @@ -<!DOCTYPE html> -<html> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> -<title>ExpOJ</title> -<style type="text/css"> -body{ - width:100%; - height:100%; - margin:0px 0px; - background-color:#151515; - color:#E9E9E9; - font-family:Tahoma,Geneva; - overflow:hidden; -} -div.index_head{ - width:100%; - height:32px; - background-color:#050505; - z-index:0; -} -div.index_head div.title{ - margin:0px 0px 0px 6px; - font-weight:bold; - font-size:18px; - line-height:32px; - float:left; -} -div.index_head div.tab{ - position:absolute; - top:0px; - left:31%; -} -div.index_head div.content{ - width:auto; - padding:0px 0px 0px 6px; - font-weight:bold; - font-size:18px; - line-height:32px; - position:absolute; - top:0px; - left:19%; -} -div.index_head div.panel{ - width:97px; - height:100%; - font-weight:bold; - font-size:18px; - line-height:32px; - text-align:center; - float:right; - cursor:pointer; -} -div.index_head div.panel_m{ - color:#FFFFFF; -} -div.index_head div.msg{ - height:100%; - padding:0px 6px 0px 6px; - font-weight:bold; - font-size:18px; - line-height:32px; - text-align:center; - float:right; - cursor:pointer; - - //background-color:#FF2400; -} -div.index_head div.msg_m{ - color:#FFFFFF; -} - -div.index_panel_box{ - width:256px; - position:absolute; - top:32px; - left:auto; - right:0px; - z-index:100; - overflow:hidden; -} -div.index_panel{ - width:256px; - height:100%; - background-color:#001E4E; - position:absolute; - top:0px; - left:auto; - right:-256px; - overflow-x:hidden; - overflow-y:auto; -} -div.index_panel div.button{ - height:48px; - padding:0px 0px 0px 32px; - font-weight:normal; - font-size:20px; - line-height:48px; - color:#E9E9E9; - position:relative; - top:0px; - left:50%; - cursor:pointer; -} -div.index_panel div.button_m{ - background-color:rgba(255,255,255,0.1); -} -div.index_panel a.button{ - height:100%; - font-weight:normal; - font-size:20px; - line-height:48px; - color:#E9E9E9; - text-decoration:none; - display:block; -} - -div.index_panel div.square_list{ - margin:0px 0px 32px 0px; -} -div.index_panel div.square_list div.button{ - height:32px; - padding:0px 0px 0px 32px; - position:relative; - top:0px; - left:50%; - cursor:pointer; -} -div.index_panel div.square_list a.button{ - height:100%; - font-weight:normal; - font-size:16px; - line-height:32px; - color:#E9E9E9; - text-decoration:none; - display:block; -} - -div.index_page{ - width:100%; - position:absolute; - top:32px; - left:0px; - z-index:0; - overflow:auto; -} - -div.index_mask{ - width:100%; - height:100%; - position:fixed; - top:0px; - left:0px; - background-color:rgba(0,0,0,0.9); - z-index:1000; -} -</style> - -<script src="http://code.jquery.com/jquery-1.8.2.min.js"></script> -<script src="http://gsgd.co.uk/sandbox/jquery/easing/jquery.easing.1.3.js"></script> -<script type="text/javascript" src="http://codemirror.net/lib/codemirror.js"></script> -<link rel="stylesheet" href="http://codemirror.net/lib/codemirror.css"> -<link rel="stylesheet" href="http://codemirror.net/theme/lesser-dark.css"> -<script type="text/javascript" src="http://codemirror.net/mode/clike/clike.js"></script> - -<link rel="stylesheet" href="nor.css"> -<script type="text/javascript" src="nor.js"></script> -<script type="text/javascript" src="data.js"></script> -<link rel="stylesheet" href="page.css"> -<script type="text/javascript" src="page.js"></script> -<link rel="stylesheet" href="page_status.css"> -<script type="text/javascript" src="page_status.js"></script> -<link rel="stylesheet" href="page_user.css"> -<script type="text/javascript" src="page_user.js"></script> -<link rel="stylesheet" href="page_square.css"> -<script type="text/javascript" src="page_square.js"></script> -<link rel="stylesheet" href="page_problem.css"> -<script type="text/javascript" src="page_problem.js"></script> - -<script type="text/javascript"> -var initurl; - -$(document).ready(function(){ - $('body').on('mouseover',function(e){ - if(e.target == null || - e.target.id == 'index_panel' || - e.target.id == 'index_head_panel' || - $(e.target).parents('#index_panel').length > 0){ - return; - } - - $('#index_head_panel').removeClass('panel_m'); - $('#index_panel').stop().animate({opacity:0},'fast','easeOutQuad', - function(){ - $('#index_panel').css('right','-256px'); - $('#index_panel div.button').css('left','50%'); - } - ); - }); - - $('#index_head_panel').on('mouseover',function(e){ - $(this).addClass('panel_m'); - $('#index_panel').css('opacity','1').stop().animate({right:0},'slow','easeOutExpo'); - - $('#index_panel div.button').stop().animate({left:0},'slow','easeOutQuart'); - }); - - $('#index_panel div.button').hover( - function(e){ - $(this).addClass('button_m'); - }, - function(e){ - $(this).removeClass('button_m'); - } - ); - $('#index_panel a.button').on('click',function(e){ - page_switch($(this.parentNode).attr('page')); - return false; - }); - - $('#index_panel_squarebutton').off('click').on('click',function(e){ - var j_div; - - j_div = $('#index_panel_squarelist'); - if(j_div.is(':visible')){ - j_div.stop().slideUp('slow','easeOutExpo'); - }else{ - j_div.stop().slideDown('slow','easeOutExpo'); - } - }); - - $('#index_head_msg').hover( - function(e){ - $(this).addClass('msg_m'); - }, - function(e){ - $(this).removeClass('msg_m'); - } - ); - - nor_init(); - data_init(); - user_init(); - page_init(); - status_init(); - square_init(); - problem_init(); - - nor_expendheight(); - user_loginchange(); - $(window).resize(function(e){nor_expendheight();}); - $(window).on('popstate',function(e){ - if(location.href == initurl){ - return; - } - initurl = null; - - page_switch(null); - }); - - initurl = location.href; - page_switch(null); -}); -</script> -</head> -<body> -<div class="index_head"> - <div id="index_head_title" class="title"></div> - <div id="index_head_tab" class="tab"> - <div id="index_headtab_status" class="nor_tab" style="display:none;"> - <div tab="allsubmit" class="button"> - <a class="button" href="/expoj/index.html?page=status&tab=allsubmit">All Submit</a> - </div> - <div tab="usersubmit" class="button" style="display:none;"> - <a class="button" href="/expoj/index.html?page=status&tab=usersubmit">User Submit</a> - </div> - </div> - <div id="index_headtab_square" class="nor_tab" style="display:none;"> - <div tab="rank" class="button"> - <a class="button">Rank</a> - </div> - <div tab="problem" class="button"> - <a class="button">Problem</a> - </div> - <div tab="scoreboard" class="button" style="display:none;"> - <a class="button">Scoreboard</a> - </div> - </div> - </div> - <div id="index_head_content" class="content"></div> - <div id="index_head_panel" class="panel">Panel</div> - <div id="index_head_msg" class="msg">[0]</div> -</div> - -<div expendheight=true class="index_panel_box"> -<div id="index_panel" class="index_panel"> - <div page="home" class="button" style="margin:32px 0px 0px 0px;"> - <a class="button" href="/expoj/index.html?page=home">Home</a> - </div> - <div page="status" class="button"> - <a class="button" href="/expoj/index.html?page=status">Status</a> - </div> - <div page="user" class="button" style="display:none;"> - <a class="button">User</a> - </div> - <div id="index_panel_squarebutton" class="button">Square</div> - <div id="index_panel_squarelist" class="square_list" style="display:none;"> - <div page="squaremg" id="index_panel_squaremg" class="button"> - <a class="button" style="font-weight:bold;">Manage Square</a> - </div> - <div class="button ori" style="display:none;"> - <a class="button"></a> - </div> - </div> - - <div page="login" class="button" style="margin:64px 0px 0px 0px;"> - <a class="button" href="/expoj/index.html?page=login">Login</a> - </div> - <div page="register" class="button"> - <a class="button" href="/expoj/index.html?page=register">Register</a> - </div> - <div page="logout" class="button" style="margin:64px 0px 0px 0px; display:none;">Logout</div> -</div> -</div> - -<div expendheight=true class="index_page"> - <div id="page_home" class="page_box"></div> - - <div id="page_status" class="page_box"> - <div id="status_allsubmit" class="status_submit" style="display:none;"> - <div class="submitinfo"> - <div class="head"> - <div class="nor_button" style="margin:0px 6px 0px 0px; float:right; display:none;" onclick="status_viewcode($(this).parents('div.status_submit').data('tabo').submitid);">View Code</div> - </div> - - <table class="info"> - <colgroup> - <col width="80px"> - <col width="auto"> - <col width="64px"> - <col width="64px"> - </colgroup> - <tr> - <td>SubmitID</td> - <td></td> - <td>ProID</td> - <td><a class="link"></a></td> - </tr> - <tr> - <td>Name</td> - <td><a class="link"></a></td> - <td>Score</td> - <td></td> - </tr> - </table> - <table class="list"> - <tr> - <th>No</th> - <th>Result</th> - <th>Score</th> - <th>Time(ms)</th> - <th>Mem(KB)</th> - </tr> - </table> - </div> - - <div class="submitlist"> - <table class="list"> - <tr class="head"> - <th class="id">ID</th> - <th class="proid">ProID</th> - <th class="nickname">Name</th> - <th class="time">Time</th> - <th class="result">Result</th> - <th class="runtime">Runtime</th> - <th class="score">Score</th> - </tr> - <tr class="item ori" style="display:none;"> - <td class="id"></td> - <td class="proid"><a class="link"></a></td> - <td class="nickname"><a class="link"></a></td> - <td class="time"></td> - <td class="result"></td> - <td class="runtime"></td> - <td class="score"></td> - </tr> - </table> - <div class="nor_chpg"></div> - </div> - </div> - - <div id="status_usersubmit" class="status_submit" style="display:none;"> - <div class="submitinfo"> - <div class="head"> - <div class="nor_button" style="margin:0px 6px 0px 0px; float:right; display:none;" onclick="status_viewcode($(this).parents('div.status_submit').data('tabo').submitid);">View Code</div> - </div> - - <table class="info"> - <colgroup> - <col width="80px"> - <col width="auto"> - <col width="64px"> - <col width="64px"> - </colgroup> - <tr> - <td>SubmitID</td> - <td></td> - <td>ProID</td> - <td><a class="link"></a></td> - </tr> - <tr> - <td>Name</td> - <td><a class="link"></a></td> - <td>Score</td> - <td></td> - </tr> - </table> - <table class="list"> - <tr> - <th>No</th> - <th>Result</th> - <th>Score</th> - <th>Time(ms)</th> - <th>Mem(KB)</th> - </tr> - </table> - </div> - - <div class="submitlist"> - <table class="list"> - <tr class="head"> - <th class="id">ID</th> - <th class="proid">ProID</th> - <th class="nickname">Name</th> - <th class="time">Time</th> - <th class="result">Result</th> - <th class="runtime">Runtime</th> - <th class="score">Score</th> - </tr> - <tr class="item ori" style="display:none;"> - <td class="id"></td> - <td class="proid"><a class="link"></a></td> - <td class="nickname"><a class="link"></a></td> - <td class="time"></td> - <td class="result"></td> - <td class="runtime"></td> - <td class="score"></td> - </tr> - </table> - <div class="nor_chpg"></div> - </div> - </div> - </div> - - <div id="page_user" class="page_box"> - <div id="user_info" class="user_info"> - <div class="head"> - <div class="setting" style="display:none;"> - <div class="nor_button" style="margin:0px 6px 0px 0px; float:right;" onclick="user_infoedit(true);">Edit</div> - <div class="nor_button" style="margin:0px 6px 0px 0px; float:right; display:none;" onclick="user_infoedit(false);">Cancel</div> - <div class="nor_button" style="margin:0px 6px 0px 0px; float:right; display:none;" onclick="user_infosubmit();">Apply</div> - </div> - <input type="textbox" readonly=readonly class="name"> - <input type="textbox" readonly=readonly class="aboutme"> - <input type="textbox" class="headimg" style="display:none;"> - <img class="headimg"></img> - </div> - <table class="info"> - <tr> - <td class="info">Accepted</td> - <td class="info"></td> - </tr> - <tr> - <td class="info">Submited</td> - <td class="info"></td> - </tr> - <tr> - <td class="info">Tried</td> - <td class="info"></td> - </tr> - </table> - </div> - <div id="user_data" class="user_data"> - <div class="prolist"></div> - </div> - </div> - - <div id="page_squaremg" class="page_box"> - <div id="squaremg_inside" class="squaremg_square" style="margin:0px 0px 0px 19%;"> - <div class="head">Inside square</div> - <div class="squarelist upcoming"> - <div class="head">Upcoming</div> - <table class="list"> - <tr class="item ori" style="display:none;"> - <td class="name"></td> - <td class="time"></td> - <td class="button"><div class="nor_button" style="display:none;">Remove</div></td> - </tr> - </table> - </div> - <div class="squarelist active"> - <div class="head">Active</div> - <table class="list"> - <tr class="item ori" style="display:none;"> - <td class="name"></td> - <td class="time"></td> - <td class="button"><div class="nor_button" style="display:none;">Remove</div></td> - </tr> - </table> - </div> - <div class="squarelist inactive"> - <div class="head">Inactive</div> - <table class="list"> - <tr class="item ori" style="display:none;"> - <td class="name"></td> - <td class="time"></td> - <td class="button"><div class="nor_button" style="display:none;">Remove</div></td> - </tr> - </table> - </div> - </div> - <div id="squaremg_outside" class="squaremg_square" style="margin:0px 0px 0px 16px;"> - <div class="head">Outside square</div> - <div class="squarelist upcoming"> - <div class="head">Upcoming</div> - <table class="list"> - <tr class="item ori" style="display:none;"> - <td class="name"></td> - <td class="button"><div class="nor_button" style="display:none;">Add</div></td> - </tr> - </table> - </div> - <div class="squarelist active"> - <div class="head">Active</div> - <table class="list"> - <tr class="item ori" style="display:none;"> - <td class="name"></td> - <td class="button"><div class="nor_button" style="display:none;">Add</div></td> - </tr> - </table> - </div> - <div class="squarelist inactive"> - <div class="head">Inactive</div> - <table class="list"> - <tr class="item ori" style="display:none;"> - <td class="name"></td> - <td class="button"><div class="nor_button" style="display:none;">Add</div></td> - </tr> - </table> - </div> - </div> - </div> - - <div id="page_square" class="page_box"> - <div class="square_rank" style="display:none;"> - <table class="list"> - <tr class="head"> - <th class="rank">#</th> - <th class="name">Name</th> - <th class="rate">AC/SU</th> - <th class="score">Score</th> - </tr> - <tr class="item ori" style="display:none;"> - <td class="rank"></td> - <td class="name"><a class="link"></a></td> - <td class="rate"></td> - <td class="score"></td> - </tr> - </table> - <div class="nor_chpg"></div> - </div> - - <div class="square_problem" style="display:none;"> - <table class="list"> - <tr class="head"> - <th class="blank"></th> - <th class="id">ID</th> - <th class="name">Problem Name</th> - <th class="rate">AC/SU</th> - </tr> - <tr class="item ori" style="display:none;"> - <td class="blank"></td> - <td class="id"></td> - <td class="name"><a class="link"></a></td> - <td class="rate"></td> - </tr> - </table> - <div class="nor_chpg"></div> - </div> - - <div class="square_scoreboard" style="display:none;"> - <table class="list"> - <tr class="head"></tr> - </table> - </div> - </div> - - <div id="page_problem" class="page_box"> - <div class="problem_info"> - <div class="head"> - <div class="nor_button" style="margin:0px 6px 0px 0px; float:right;" onclick="problem_codeswitch(true);">Submit</div> - </div> - <table class="info"> - <tr> - <td class="info">ProID</td> - <td class="info"></td> - </tr> - <tr> - <td class="info">AC/SU</td> - <td class="info"><a class="info" onclick="problem_logswitch(true);"></a></td> - </tr> - <tr> - <td class="info">Time(ms)</td> - <td class="info"></td> - </tr> - <tr> - <td class="info">Mem(KB)</td> - <td class="info"></td> - </tr> - </table> - </div> - <div class="problem_view"> - <div class="content"></div> - </div> - </div> - - <div id="page_login" class="page_box"> - <table class="login"> - <tr><td><div id="login_error" class="error"></div></td></tr> - <tr><td> - <div class="head">Username</div> - <input id="login_username" type="textbox" class="input"> - </td></tr> - <tr><td> - <div class="head">Password</div> - <input id="login_password" type="password" class="input"> - </td></tr> - <tr><td> - <div class="nor_button" style="width:auto; float:right;" onclick="user_login_reset();">Cancel</div> - <div class="nor_button" style="width:auto; margin:0px 6px 0px 0px; float:right;" onclick="user_login_submit();">Login</div> - </td></tr> - </table> - </div> - <div id="page_register" class="page_box"> - <table class="register"> - <tr><td><div id="register_error" class="error"></div></td></tr> - <tr><td> - <div class="head">Username</div> - <input id="register_username" type="textbox" class="input"> - </td></tr> - <tr><td> - <div class="head">Password</div> - <input id="register_password" type="password" class="input"> - </td></tr> - <tr><td> - <div class="head">Nickname</div> - <input id="register_nickname" type="textbox" class="input"> - </td></tr> - <tr><td> - <div class="nor_button" style="width:auto; float:right;" onclick="user_register_reset();">Cancel</div> - <div class="nor_button" style="width:auto; margin:0px 6px 0px 0px; float:right;" onclick="user_register_submit();">Register</div> - </td></tr> - </table> - </div> - - <div id="index_mask" class="index_mask" style="display:none;"> - <div id="mask_problem_log" class="mask_problem_log" style="display:none;"> - <div class="nor_mask_head"> - <div class="title"></div> - <div class="nor_tab" style="position:absolute; top:0px; left:31%;"> - <div tab="allsubmit" class="button">All Submit</div> - <div tab="acceptsubmit" class="button button_s">AC Submit</div> - </div> - <div class="button" style="float:right;" onclick="problem_logswitch(false);">Close</div> - </div> - <div expendheight=true class="nor_mask_box"> - <div id="problem_log_acceptsubmit" class="problem_log_submit"> - <div class="submitinfo"> - <div class="head"> - <div class="nor_button" style="margin:0px 6px 0px 0px; float:right; display:none;" onclick="status_viewcode($(this).parents('div.problem_log_submit').data('tabo').submitid);">View Code</div> - </div> - - <table class="info"> - <colgroup> - <col width="80px"> - <col width="auto"> - <col width="64px"> - <col width="64px"> - </colgroup> - <tr> - <td>SubmitID</td> - <td></td> - <td>ProID</td> - <td></td> - </tr> - <tr> - <td>Name</td> - <td><a class="link"></a></td> - <td>Score</td> - <td></td> - </tr> - </table> - <table class="list"> - <tr> - <th>No</th> - <th>Result</th> - <th>Score</th> - <th>Time(ms)</th> - <th>Mem(KB)</th> - </tr> - </table> - </div> - - <div class="submitlist"> - <table class="list"> - <tr class="head"> - <th class="id">ID</th> - <th class="nickname">Name</th> - <th class="time">Time</th> - <th class="runtime">Runtime</th> - <th class="score">Score</th> - </tr> - <tr class="item ori" style="display:none;"> - <td class="id"></td> - <td class="nickname"><a class="link"></a></td> - <td class="time"></td> - <td class="runtime"></td> - <td class="score"></td> - </tr> - </table> - <div class="nor_chpg"></div> - </div> - </div> - - <div id="problem_log_allsubmit" class="problem_log_submit" style="display:none;"> - <div class="submitinfo"> - <div class="head"> - <div class="nor_button" style="margin:0px 6px 0px 0px; float:right; display:none;" onclick="status_viewcode($(this).parents('div.problem_log_submit').data('tabo').submitid);">View Code</div> - </div> - - <table class="info"> - <colgroup> - <col width="80px"> - <col width="auto"> - <col width="64px"> - <col width="64px"> - </colgroup> - <tr> - <td>SubmitID</td> - <td></td> - <td>ProID</td> - <td><a class="link"></a></td> - </tr> - <tr> - <td>Name</td> - <td><a class="link"></a></td> - <td>Score</td> - <td></td> - </tr> - </table> - <table class="list"> - <tr> - <th>No</th> - <th>Result</th> - <th>Score</th> - <th>Time(ms)</th> - <th>Mem(KB)</th> - </tr> - </table> - </div> - - <div class="submitlist"> - <table class="list"> - <tr class="head"> - <th class="id">ID</th> - <th class="nickname">Name</th> - <th class="time">Time</th> - <th class="runtime">Runtime</th> - <th class="score">Score</th> - </tr> - <tr class="item ori" style="display:none;"> - <td class="id"></td> - <td class="nickname"><a class="link"></a></td> - <td class="time"></td> - <td class="runtime"></td> - <td class="score"></td> - </tr> - </table> - <div class="nor_chpg"></div> - </div> - </div> - </div> - </div> - - <div id="mask_problem_code" class="mask_problem_code" style="display:none;"> - <div class="nor_mask_head"> - <div class="title"></div> - <div class="content error"></div> - <div class="button" style="float:right;" onclick="problem_codeswitch(false);">Close</div> - <div class="button" style="margin:0px 6px 0px 0px; float:right;" onclick="problem_code_submit();">Submit</div> - </div> - <div expendheight=true class="nor_mask_box"> - <div class="code"></div> - </div> - </div> - </div> -</div> -</body> -</html> - diff --git a/web/nor.css b/web/nor.css deleted file mode 100644 index e0d2039..0000000 --- a/web/nor.css +++ /dev/null @@ -1,112 +0,0 @@ -div.nor_button{ - height:32px; - padding:0px 6px; - background-color:#393939; - font-size:16px; - font-weight:bold; - text-align:center; - line-height:32px; - color:#E9E9E9; - cursor:pointer; -} -div.nor_button_m{ - background-color:#36454F; -} - -div.nor_tab{ - width:auto; - height:32px; -} -div.nor_tab div.button{ - width:auto; - height:100%; - padding:0px 8px 0px 8px; - font-weight:normal; - font-size:18px; - line-height:32px; - color:#E9E9E9; - float:left; - cursor:pointer; -} -div.nor_tab div.button_m{ - color:#FFFFFF; -} -div.nor_tab div.button_s{ - background-color:#2E8B57; -} -div.nor_tab a.button{ - width:100%; - height:100%; - font-weight:normal; - font-size:18px; - line-height:32px; - color:#E9E9E9; - text-decoration:none; - display:block; -} -div.nor_tab a:hover.button{ - color:#FFFFFF; -} - -div.nor_mask_head{ - width:100%; - height:32px; - background-color:#050505; - position:relative; -} -div.nor_mask_head div.title{ - margin:0px 0px 0px 6px; - font-weight:bold; - font-size:18px; - line-height:32px; - float:left; -} -div.nor_mask_head div.content{ - width:auto; - padding:0px 0px 0px 6px; - font-weight:bold; - font-size:18px; - line-height:32px; - float:left; -} -div.nor_mask_head div.button{ - height:100%; - padding:0px 6px 0px 6px; - font-weight:bold; - font-size:18px; - line-height:32px; - text-align:center; - float:right; - cursor:pointer; -} -div.nor_mask_head div.button_m{ - color:#FFFFFF; -} -div.nor_mask_box{ - width:100%; - position:absolute; - left:0px; - top:32px; - overflow:hidden; -} - -div.nor_chpg{ - margin:0px auto auto; - padding:16px 0px 16px 0px; - font-size:20px; - text-align:center; -} -a.nor_chpg{ - height:100%; - padding:0px 3px 0px 3px; - color:#E9E9E9; - text-decoration:none; - cursor:pointer; - display:inline-block; -} -a.nor_chpg_s{ - background-color:#36454F; -} -a:hover.nor_chpg{ - background-color:#36454F; -} diff --git a/web/nor.js b/web/nor.js deleted file mode 100644 index 8021bf5..0000000 --- a/web/nor.js +++ /dev/null @@ -1,111 +0,0 @@ -var nor_userid; -var nor_usersec; - -function nor_init(){ - $('div.nor_button').hover( - function(e){ - $(this).addClass('nor_button_m'); - }, - function(e){ - $(this).removeClass('nor_button_m'); - } - ); - $('div.nor_tab > div.button').hover( - function(e){ - $(this).addClass('button_m'); - }, - function(e){ - $(this).removeClass('button_m'); - } - ); - $('div.nor_mask_head > div.button').hover( - function(e){ - $(this).addClass('button_m'); - }, - function(e){ - $(this).removeClass('button_m'); - } - ); -} -function nor_scoretolight(sumscore,summaxscore){ - var i; - var part; - var light; - - if(sumscore == null){ - return 0; - } - - if(summaxscore == 0){ - light = 1; - }else{ - ratio = Math.floor(sumscore / summaxscore * 100); - if(ratio == 100){ - light = 4; - }else if(ratio >= 80){ - light = 3; - }else if(ratio >= 60){ - light = 2; - }else{ - light = 1; - } - } - - return light; -} -function nor_expendheight(){ - var i; - var es; - var j_e; - - es = $('[expendheight=true]'); - for(i = 0;i < es.length;i++){ - j_e = $(es[i]); - j_e.css('height',(window.innerHeight - parseInt(j_e.css('top').match(/(.+)px/)[1])) + 'px'); - } -} -function nor_new_chpgbutton(text,click){ - var j_a; - - j_a = $('<a></a>') - j_a.addClass('nor_chpg'); - j_a.on('click',click); - j_a.text(text) - - return j_a; -} - -function nor_getparam(){ - var ret; - var i; - - var part; - var subpart; - - ret = new Object(); - part = location.href.match(/([^?&]+)/g); - for(i = 1;i < part.length;i++){ - part[i] = part[i].replace(/\+/g,' '); - subpart = part[i].split('='); - ret[decodeURIComponent(subpart[0]).replace(/^\s+|\s$/,' ')] = decodeURIComponent(subpart[1]); - } - - return ret; -} -function nor_getcookie(){ - var ret; - var i; - - var part; - var subpart; - - ret = new Object(); - part = document.cookie.split(';'); - for(i = 0;i < part.length;i++){ - part[i] = part[i].replace(/\+/g,' '); - subpart = part[i].split('='); - ret[decodeURIComponent(subpart[0])] = decodeURIComponent(subpart[1]); - } - - return ret; -} diff --git a/web/page.css b/web/page.css deleted file mode 100644 index 1424623..0000000 --- a/web/page.css +++ /dev/null @@ -1,6 +0,0 @@ -div.page_box{ - width:auto; - height:100%; - overflow:auto; - display:none; -} diff --git a/web/page.js b/web/page.js deleted file mode 100644 index 43e0a2a..0000000 --- a/web/page.js +++ /dev/null @@ -1,91 +0,0 @@ -var page_name_select; -var page_name_previous; - -function page_init(){ - page_name_select = 'home'; - page_name_previous = 'home'; -} -function page_switch(page_name){ - var j_bar_button; - var show = function(){ - page_name_previous = page_name_select; - page_name_select = page_name; - - document.title = page_name + '-ExpOJ'; - - if(page_name_previous == 'status'){ - status_pageswitch(false); - }else if(page_name_previous.match(/^square_.+/) != null){ - square_pageswitch(page_name_previous,false); - }else if(page_name_previous.match(/^problem_.+/) != null){ - problem_pageswitch(page_name_previous,false); - }else if(page_name.match(/^user_.+/) != null){ - user_pageswitch(page_name,false); - } - - if(page_name == 'home'){ - $('#index_head_title').text('Experiment OnlineJudge'); - $('#page_home').fadeIn('fast'); - }else if(page_name == 'status'){ - status_pageswitch(true); - }else if(page_name == 'squaremg'){ - squaremg_pageswitch(true); - }else if(page_name.match(/^square_.+/) != null){ - square_pageswitch(page_name,true); - }else if(page_name.match(/^problem_.+/) != null){ - problem_pageswitch(page_name,true); - }else if(page_name.match(/^user_.+/) != null){ - user_pageswitch(page_name,true); - }else if(page_name == 'login'){ - user_login_pageswitch(); - }else if(page_name == 'register'){ - user_register_pageswitch(); - }else{ - page_name = 'home'; - page_name_select = page_name_previous; - window.history.replaceState(page_name,document.title,'/expoj/index.html?page=home'); - - show(); - } - } - - if(page_name == null){ - page_name = nor_getparam().page; - if(page_name == undefined){ - page_name = 'home'; - window.history.replaceState(page_name,document.title,'/expoj/index.html?page=home'); - } - }else{ - if(page_name == page_name_select){ - return -1; - } - window.history.pushState(page_name,document.title,'/expoj/index.html?page=' + page_name); - } - - $('#index_head_tab').find('div.nor_tab').hide(); - $('#index_head_content').empty(); - - if(page_name_select != null){ - $('#page_' + page_name_select).fadeOut('fast',show); - }else{ - show(); - } - - return 0; -} -function page_maskswitch(j_div,on){ - var i; - - var j_mask; - - j_mask = $('#index_mask'); - j_mask.children('div').hide(); - - if(on == true){ - j_div.show(); - j_mask.fadeIn('fast'); - }else{ - j_div.hide(); - j_mask.fadeOut('fast'); - } -} diff --git a/web/page_problem.css b/web/page_problem.css deleted file mode 100644 index afe1a7f..0000000 --- a/web/page_problem.css +++ /dev/null @@ -1,164 +0,0 @@ -div.problem_info{ - width:19%; - height:100%; - background-color:#222222; - font-size:18px; - overflow:auto; - float:left; -} -div.problem_info > div.head{ - width:100%; - height:32px; - margin:6px 0px 0px 0px; -} -div.problem_info > table.info{ - margin:16px auto; -} -div.problem_info td.info{ - padding:2px 3px 2px 3px; -} -div.problem_info a.info{ - cursor:pointer; - text-decoration:underline; -} -div.problem_info a:hover.info{ - color:#FFFFFF; -} -div.problem_view{ - width:81%; - height:100%; - overflow:auto; - float:left; -} -div.problem_view > div.content{ - padding:6px 6px 32px 6px; - font-size:18px; - font-family:Courier New,monospace; -} - -div.mask_problem_log{ - width:86%; - height:100%; - margin:0px auto; - background-color:#151515; -} -div.problem_log_submit{ - width:86%; - height:100%; - margin:0px auto; - overflow:hidden; -} -div.problem_log_submit > div.submitlist{ - width:69%; - height:100%; - margin:0px auto; - float:left; - overflow:auto; -} -div.problem_log_submit > div.submitlist > table.list{ - width:95%; - margin:6px auto 0px auto; - font-size:20px; - text-align:left; - border-spacing:0px; - border-collapse:collapse; -} -div.problem_log_submit > div.submitlist tr.head{ - height:32px; -} -div.problem_log_submit > div.submitlist tr.item{ - height:32px; - cursor:pointer; -} -div.problem_log_submit > div.submitlist tr:hover.item{ - background-color:#36454F; -} -div.problem_log_submit > div.submitlist th.id,div.problem_log_submit > div.submitlist td.id{ - width:64px; -} -div.problem_log_submit > div.submitlist th.nickname,div.problem_log_submit > div.submitlist td.nickname{ - width:auto; -} -div.problem_log_submit > div.submitlist th.time{ - width:224px; -} -div.problem_log_submit > div.submitlist td.time{ - width:192px; - font-weight:normal; - font-size:16px; -} -div.problem_log_submit > div.submitlist th.runtime{ - width:104px; -} -div.problem_log_submit > div.submitlist td.runtime{ - width:104px; - font-weight:normal; - font-size:16px; -} -div.problem_log_submit > div.submitlist th.score,div.problem_log_submit > div.submitlist td.score{ - width:64px; -} -div.problem_log_submit > div.submitlist a.link{ - height:100%; - color:#E9E9E9; - text-decoration:none; - cursor:pointer; -} -div.problem_log_submit > div.submitlist a:hover.link{ - text-decoration:underline; -} - -div.problem_log_submit > div.submitinfo{ - width:31%; - height:100%; - background-color:#222222; - overflow:auto; - float:left; -} -div.problem_log_submit > div.submitinfo > div.head{ - width:100%; - height:32px; - margin:6px 0px 0px 0px; -} -div.problem_log_submit > div.submitinfo > table.info{ - width:95%; - margin:26px 0px 0px auto; - font-size:16px; - text-align:left; - border-spacing:0px; - border-collapse:collapse; -} -div.problem_log_submit > div.submitinfo > table.list{ - width:95%; - margin:32px 0px 0px auto; - font-size:16px; - text-align:left; - border-spacing:0px; - border-collapse:collapse; -} -div.problem_log_submit > div.submitinfo a.link{ - width:100%; - height:100%; - color:#E9E9E9; - text-decoration:none; - display:block; - cursor:pointer; -} -div.problem_log_submit div.submitinfo a:hover.link{ - text-decoration:underline; -} - -div.mask_problem_code{ - width:62%; - height:100%; - margin:0px auto; - background-color:#151515; -} -div.mask_problem_code > div.nor_mask_head > div.error{ - color:#FFA0A0; -} -div.mask_problem_code div.code{ - width:62%; - height:100%; - margin:0px auto; -} diff --git a/web/page_problem.js b/web/page_problem.js deleted file mode 100644 index e805ec8..0000000 --- a/web/page_problem.js +++ /dev/null @@ -1,525 +0,0 @@ -var problem_page; -var problem_pageo; -var problem_log_tab; -var problem_submitcode; - -function problem_init(){ - var j_tab; - var j_div; - - problem_page = $('#page_problem'); - problem_pageo = { - 'proid':null - }; - problem_log_tab = 'acceptsubmit'; - - problem_submitcode = CodeMirror($('#mask_problem_code > div.nor_mask_box > div.code')[0],{ - mode:'text/x-c++src', - theme:'lesser-dark', - lineNumbers:true, - matchBrackets:true, - indentUnit:4 - }); - problem_submitcode.getWrapperElement().style.width = '100%'; - problem_submitcode.getWrapperElement().style.height = '100%'; - problem_submitcode.getScrollerElement().style.width = '100%'; - problem_submitcode.getScrollerElement().style.height = '100%'; - - j_tab = $('#problem_log_acceptsubmit') - j_tab.data('tabo',{ - 'result':0, - 'submitid':2147483647, - 'submitoff':0, - 'submitcount':0, - 'callback':$.Callbacks() - }); - data_callback.add(function(j_tab){return function(res){ - problem_log_submit_callback(j_tab,res); - }}(j_tab)); - - j_tab = $('#problem_log_allsubmit') - j_tab.data('tabo',{ - 'result':-100, - 'submitid':2147483647, - 'submitoff':0, - 'submitcount':0, - 'callback':$.Callbacks() - }); - data_callback.add(function(j_tab){return function(res){ - problem_log_submit_callback(j_tab,res); - }}(j_tab)); - - $('#mask_problem_log > div.nor_mask_head > div.nor_tab > div.button').on('click',function(e){ - problem_log_tabswitch($(this).attr('tab')); - }); - - - data_callback.add(function(res){ - var proid; - var proo; - var tds; - var j_name; - var j_content; - - if((proo = res.problem_view) === undefined){ - return; - } - - if((proid = problem_pageo.proid) == null){ - return; - } - - tds = problem_page.find('div.problem_info > table.info td.info'); - j_name = $('#index_head_content'); - j_content = $(problem_page.find('div.problem_view > div.content')[0]); - - if(data_paramo.problem_view.infoonly == true){ - $($(tds[3]).find('a.info')[0]).text(proo.acceptcount + '/' + proo.submitcount); - }else{ - if(proo == null){ - $(tds[1]).text(proid); - j_name.html('<span style="color:#FFA0A0">Page not found</span>'); - - delete data_paramo.problem_view; - }else{ - $(tds[1]).text(proid); - $($(tds[3]).find('a.info')[0]).text(proo.acceptcount + '/' + proo.submitcount); - $(tds[5]).text(proo.timelimit); - $(tds[7]).text(proo.memlimit); - j_name.text(proo.proname); - j_content.html(problem_textconvert(proo.protext)); - data_paramo.problem_view.infoonly = true; - } - $('#mask_problem_code > div.nor_mask_head > div.title').text('ProID:' + proid); - - problem_page.fadeIn('slow'); - window.history.replaceState('problem',document.title,'/expoj/index.html?page=problem_' + proid); - } - }); -} -function problem_pageswitch(pagename,on){ - var proid; - - if(on){ - proid = pagename.match(/^problem_(.+)/)[1]; - - $('#index_head_title').text('ExpOJ-ProID:' + proid); - - problem_page.attr('id','page_problem_' + proid); - problem_pageo.proid = proid; - - data_paramo.problem_view = { - 'infoonly':false, - 'proid':parseInt(proid) - }; - data_update(true); - }else{ - delete data_paramo.problem_view; - delete data_paramo.problem_log_submit_acceptlist; - delete data_paramo.problem_log_submit_alllist; - - problem_pageo.proid = null; - } -} -function problem_logswitch(on){ - var j_tab; - var tabo; - - if(on){ - problem_log_tab = 'acceptsubmit'; - $('#mask_problem_log > div.nor_mask_head > div.nor_tab > [tab="acceptsubmit"]').addClass('button_s'); - $('#mask_problem_log > div.nor_mask_head > div.nor_tab > [tab="allsubmit"]').removeClass('button_s'); - - $('#mask_problem_log > div.nor_mask_head > div.title').text('ProID:' + problem_pageo.proid); - - j_tab = $('#problem_log_allsubmit'); - j_tab.hide(); - problem_log_submit_update(j_tab); - - j_tab = $('#problem_log_acceptsubmit'); - j_tab.hide(); - tabo = j_tab.data('tabo'); - - tabo.callback.add(function(){ - j_tab.show(); - tabo.callback.remove(arguments.callee); - }); - - problem_log_submit_update(j_tab); - - page_maskswitch($('#mask_problem_log'),true); - }else{ - delete data_paramo.problem_log_submit_acceptlist; - delete data_paramo.problem_log_submit_alllist; - - page_maskswitch($('#mask_problem_log'),false); - } -} -function problem_textconvert(text){ - var ret; - var i; - - ret = ''; - for(i = 0;i < text.length;i++){ - if(text[i] != '\r' && text[i] != '\n'){ - ret += text[i]; - }else if(text[i] == '\n'){ - ret += '<br/>'; - } - } - - return ret; -} - -function problem_log_tabswitch(tabname){ - var j_tab; - var tabo; - var show = function(){ - problem_log_tab = tabname; - - j_tab = $('#problem_log_' + problem_log_tab); - switch(problem_log_tab){ - case 'acceptsubmit': - tabo = j_tab.data('tabo'); - tabo.callback.add(function(){ - j_tab.fadeIn('fast'); - tabo.callback.remove(arguments.callee); - }); - - problem_log_submit_update(j_tab); - break; - case 'allsubmit': - tabo = j_tab.data('tabo'); - tabo.callback.add(function(){ - j_tab.fadeIn('fast'); - tabo.callback.remove(arguments.callee); - }); - - problem_log_submit_update(j_tab); - break; - } - } - - if(problem_log_tab == tabname){ - return -1; - } - - $('#mask_problem_log > div.nor_mask_head > div.nor_tab > [tab="' + problem_log_tab + '"]').removeClass('button_s'); - $('#problem_log_' + problem_log_tab).fadeOut('fast',show); - - $('#mask_problem_log > div.nor_mask_head > div.nor_tab > [tab="' + tabname + '"]').addClass('button_s'); -} - -function problem_log_submit_listadd(e_table,idx,submitid,userid,nickname,time,runtime,score,light){ - var j_tr; - var j_td; - var j_a; - - if((e_table.rows.length - 2) <= idx){ - j_tr = $($(e_table).find('tr.ori')[0]).clone(true); - j_tr.removeClass('ori'); - $(e_table).append(j_tr); - }else{ - j_tr = $(e_table.rows[idx + 2]); - } - - $(j_tr.find('td.id')[0]).text(submitid); - $(j_tr.find('td.time')[0]).text(time.match(/(.*)\./)[1]); - $(j_tr.find('td.runtime')[0]).text(Math.round(parseInt(runtime) / 1000)); - j_td = $(j_tr.find('td.score')[0]); - j_td.text(score); - switch(light){ - case 1: - j_td.css('color','#FF0000'); - break; - case 2: - j_td.css('color','#00FF00'); - break; - case 3: - j_td.css('color','#FFFF00'); - break; - case 4: - j_td.css('color','#FFFFFF'); - break; - } - - j_a = $(j_tr.find('td.nickname > a.link')[0]); - j_a.attr('href','/expoj/index.html?page=user_' + userid); - j_a.text(nickname); - j_a.off('click').on('click',function(e){ - problem_logswitch(false); - page_switch('user_' + userid); - return false; - }); - - j_tr.off('click').on('click',function(e){ - var j_tab; - var tabo; - - if(e.target.tagName == 'A'){ - return; - } - - j_tab = $(this).data('j_tab'); - tabo = j_tab.data('tabo'); - tabo.submitid = $(this).data('submitid'); - problem_log_submit_update(j_tab); - }); - - j_tr.show(); - return j_tr; -} -function problem_log_submit_listchpg(j_tab,submitoff){ - var tabo; - - tabo = j_tab.data('tabo'); - if(submitoff >= 0 && submitoff < tabo.submitcount){ - tabo.submitoff = submitoff; - tabo.laststamp = '_'; - tabo.callback.add(function(){ - tabo.callback.remove(arguments.callee); - }); - problem_log_submit_update(j_tab); - } -} -function problem_log_submit_update(j_tab){ - var tabo; - var paramo; - - tabo = j_tab.data('tabo'); - paramo = { - 'proid':parseInt(problem_pageo.proid), - 'result':parseInt(tabo.result), - 'submitoff':parseInt(tabo.submitoff), - 'submitid':parseInt(tabo.submitid) - }; - if(tabo.result == 0){ - data_paramo.problem_log_submit_acceptlist = paramo; - }else if(tabo.result == -100){ - data_paramo.problem_log_submit_alllist = paramo; - } - - data_update(true); -} -function problem_log_submit_callback(j_tab,res){ - var reto; - var tabo; - var submitlist; - - tabo = j_tab.data('tabo'); - if(tabo.result == 0){ - reto = res.problem_log_submit_acceptlist; - }else if(tabo.result == -100){ - reto = res.problem_log_submit_alllist; - } - if(reto != null){ - tabo.submitcount = reto.submitcount; - submitlist = reto.submitlist; - - if(tabo.result == 0){ - $('#mask_problem_log > div.nor_mask_head > div.nor_tab > [tab="acceptsubmit"]').text('AC Submit [' + tabo.submitcount+ ']'); - }else if(tabo.result == -100){ - $('#mask_problem_log > div.nor_mask_head > div.nor_tab > [tab="allsubmit"]').text('All Submit [' + tabo.submitcount+ ']'); - } - - if(tabo.submitoff != null){ - var i; - var j; - - var e_table; - var j_tr; - var j_div; - var j_a; - var submito; - var offs; - var offe; - - e_table = j_tab.find('div.submitlist > table.list')[0]; - for(i = e_table.rows.length - 1;i > 1;i--){ - $(e_table.rows[i]).hide(); - } - - for(i = 0;i < submitlist.length - 1;i++){ - submito = submitlist[i]; - j_tr = problem_log_submit_listadd( - e_table, - i, - submito.submitid, - submito.userid, - submito.nickname, - submito.timestamp, - submito.sumruntime, - submito.sumscore, - nor_scoretolight(submito.sumscore,submito.summaxscore)); - j_tr.data('j_tab',j_tab); - j_tr.data('submitid',submito.submitid); - } - - j_div = $(j_tab.find('div.nor_chpg')[0]); - j_div.empty(); - - j_a = nor_new_chpgbutton('«',function(){ - problem_log_submit_listchpg(j_tab,0); - }); - j_div.append(j_a); - - j_a = nor_new_chpgbutton('‹',function(){ - problem_log_submit_listchpg(j_tab,(tabo.submitoff - 20)); - }); - j_div.append(j_a); - - offs = Math.max(0,tabo.submitoff - 100); - if((offe = Math.min(tabo.submitcount,offs + 200)) == tabo.submitcount){ - offs = Math.max(0,(offe - offe % 20) - 180); - } - for(i = offs;i < offe;i += 20){ - j_a = nor_new_chpgbutton((i / 20 + 1),function(){ - problem_log_submit_listchpg(j_tab,$(this).data('submitoff')); - }); - j_a.data('submitoff',i); - - if(i == tabo.submitoff){ - j_a.addClass('nor_chpg_s'); - } - - j_div.append(j_a); - } - - j_a = nor_new_chpgbutton('›',function(){ - problem_log_submit_listchpg(j_tab,(tabo.submitoff + 20)); - }); - j_div.append(j_a); - - j_a = nor_new_chpgbutton('»',function(){ - problem_log_submit_listchpg(j_tab,(tabo.submitcount - tabo.submitcount % 20)); - }); - j_div.append(j_a); - } - if(tabo.submitid != null){ - var i; - - var e_table; - var j_tr; - var j_td; - var tds; - var j_a; - var submito; - var partstatus; - var partscore; - var partruntime; - var partpeakmem; - - if(submitlist.length == 0){ - e_table = j_tab.find('div.submitinfo > table.list')[0]; - for(i = e_table.rows.length - 1;i > 0;i--){ - e_table.deleteRow(i); - } - - e_table = j_tab.find('div.submitinfo > table.info')[0]; - tds = $(e_table).find('td'); - $(tds[1]).text(''); - $(tds[3]).text(''); - $(tds[7]).text(''); - j_a = $($(e_table).find('a')[0]); - j_a.attr('href',null); - j_a.text(''); - j_a.off('click'); - }else{ - submito = submitlist[submitlist.length - 1]; - tabo.submitid = submito.submitid; - - partstatus = submito.status.split(','); - partscore = submito.score.split(','); - partruntime = submito.runtime.split(','); - partpeakmem = submito.peakmem.split(','); - - e_table = j_tab.find('div.submitinfo > table.list')[0]; - for(i = e_table.rows.length - 1;i > 0;i--){ - e_table.deleteRow(i); - } - - for(i = 0;i < partstatus.length;i++){ - j_tr = $('<tr></tr>'); - - j_td = $('<td></td>'); - j_td.text(i + 1); - j_tr.append(j_td); - j_td = $('<td></td>'); - j_td.text(status_judgestat[parseInt(partstatus[i])]); - j_tr.append(j_td); - j_td = $('<td></td>'); - j_td.text(partscore[i]); - j_tr.append(j_td); - j_td = $('<td></td>'); - j_td.text(Math.round(parseInt(partruntime[i]) / 1000)); - j_tr.append(j_td); - j_td = $('<td></td>'); - j_td.text(Math.round(parseInt(partpeakmem[i]) / 1024)); - j_tr.append(j_td); - - $(e_table).append(j_tr); - } - - e_table = j_tab.find('div.submitinfo > table.info')[0]; - tds = $(e_table).find('td'); - $(tds[1]).text(submito.submitid); - $(tds[3]).text(submito.proid); - $(tds[7]).text(submito.sumscore); - - j_a = $($(e_table).find('a')[0]); - j_a.attr('href','/expoj/index.html?page=user_' + submito.userid); - j_a.text(submito.nickname); - j_a.off('click').on('click',function(userid){return function(e){ - problem_logswitch(false); - page_switch('user_' + userid); - return false; - }}(submito.userid)); - - if(user_usero != null && submito.userid == user_usero.userid){ - $(j_tab.find('div.submitinfo > div > div.nor_button')[0]).show(); - }else{ - $(j_tab.find('div.submitinfo > div > div.nor_button')[0]).hide(); - } - } - } - - tabo.callback.fire(); - } -} - -function problem_codeswitch(on){ - if(user_usero == null){ - page_switch('login'); - return; - } - - if(on){ - $($('#mask_problem_code > div.nor_mask_head > div.error')[0]).empty(); - - page_maskswitch($('#mask_problem_code'),true); - problem_submitcode.setValue(''); - }else{ - problem_submitcode.setValue(''); - page_maskswitch($('#mask_problem_code'),false); - } -} -function problem_code_submit(){ - $.post('problem_code_submit.php', - {'proid':problem_pageo.proid,'code':problem_submitcode.getValue()}, - function(res){ - var j_div; - - j_div = $($('#mask_problem_code > div.nor_mask_head > div.error')[0]); - if(res[0] != 'E'){ - problem_submitcode.setValue(''); - page_maskswitch($('#mask_problem_code'),false); - }else if(res == 'Euser'){ - page_switch('login'); - }else if(res == 'Ecode'){ - j_div.text('Ccde長度超過64KB'); - }else if(res == 'Elimit'){ - j_div.text('Submit間隔必須大於10s'); - } - } - ); -} diff --git a/web/page_square.css b/web/page_square.css deleted file mode 100644 index 6699a35..0000000 --- a/web/page_square.css +++ /dev/null @@ -1,167 +0,0 @@ -div.square_rank{ - width:100%; -} -div.square_rank > table.list{ - width:62%; - margin:6px auto 0px auto; - font-size:20px; - text-align:left; - border-spacing:0px; - border-collapse:collapse; -} -div.square_rank tr.head{ - height:32px; -} -div.square_rank tr.item{ - height:32px; -} -div.square_rank th.rank,div.square_rank td.rank{ - width:64px; -} -div.square_rank th.name,div.square_rank td.name{ - width:auto; -} -div.square_rank th.rate,div.square_rank td.rate{ - width:128px; -} -div.square_rank th.score,div.square_rank td.score{ - width:64px; -} -div.square_rank a.link{ - width:100%; - height:100%; - text-decoration:none; - color:#E9E9E9; - display:block; -} -div.square_rank a.link:hover{ - text-decoration:underline; -} - -div.square_problem{ - width:100%; -} -div.square_problem > table.list{ - width:62%; - margin:6px auto 0px auto; - font-size:20px; - text-align:left; - border-spacing:0px; - border-collapse:collapse; -} -div.square_problem tr.head{ - height:32px; -} -div.square_problem tr.item{ - height:32px; - border-left:#333333 5px solid; - cursor:pointer; -} -div.square_problem tr:hover.item{ - background-color:#36454F; -} -div.square_problem th.blank,div.square_problem td.blank{ - width:8px; -} -div.square_problem th.id,div.square_problem td.id{ - width:64px; -} -div.square_problem th.name,div.square_problem td.name{ - width:auto; -} -div.square_problem th.rate,div.square_problem td.rate{ - width:128px; -} -div.square_problem a.link{ - width:100%; - height:100%; - text-decoration:none; - color:#E9E9E9; - display:block; -} -div.square_problem a:hover.link{ - text-decoration:underline; -} - -div.square_scoreboard{ - padding:6px 6px; - overflow:auto; -} -div.square_scoreboard > table.list{ - width:100%; - font-size:20px; - text-align:left; - border-spacing:0px; - border-collapse:collapse; -} -div.square_scoreboard tr.head{ - height:32px; -} -div.square_scoreboard tr.item{ - height:32px; -} -div.square_scoreboard th.rank,div.square_scoreboard td.rank{ - width:64px; - border:#333333 1px solid; -} -div.square_scoreboard th.name,div.square_scoreboard td.name{ - width:192px; - border:#333333 1px solid; -} -div.square_scoreboard th.problem,div.square_scoreboard td.problem{ - width:104px; - font-size:16px; - text-align:center; - border:#333333 1px solid; -} -div.square_scoreboard a.link{ - width:100%; - height:100%; - text-decoration:none; - color:#E9E9E9; - display:block; -} -div.square_scoreboard a.link:hover{ - text-decoration:underline; -} - -div.squaremg_square{ - width:31%; - float:left; -} -div.squaremg_square > div.head{ - font-size:32px; - padding:0px 0px 6px 0px; -} -div.squaremg_square > div.squarelist{ - margin:6px 0px 0px 0px; -} -div.squaremg_square > div.squarelist > div.head{ - font-size:24px; - border-bottom:#2E8B57 3px solid; -} -div.squaremg_square > div.squarelist > table.list{ - width:100%; - margin:6px 0px 0px 0px; - text-align:left; - border-spacing:0px; - border-collapse:collapse; -} -div.squaremg_square > div.squarelist tr.item{ - height:36px; -} -div.squaremg_square > div.squarelist tr:hover.item{ - color:#FFFFFF; -} -div.squaremg_square > div.squarelist td.name{ - width:auto; - font-size:16px; -} -div.squaremg_square > div.squarelist td.time{ - width:256px; - font-size:16px; -} -div.squaremg_square > div.squarelist td.button{ - width:96px; -} - diff --git a/web/page_square.js b/web/page_square.js deleted file mode 100644 index 6ce6403..0000000 --- a/web/page_square.js +++ /dev/null @@ -1,840 +0,0 @@ -var square_page; -var square_pageo_list; -var suqare_pageo; -var square_update_callback; - -function square_init(){ - square_page = $('#page_square'); - square_pageo_list = new Array(); - square_pageo = null; - square_update_callback = $.Callbacks(); - - user_logincallback.add(square_update); - - $('#index_headtab_square a.button').on('click',function(e){ - square_tabswitch($(this.parentNode).attr('tab')); - return false; - }); - - $('div.squaremg_square > div.squarelist > table.list tr.item').hover( - function(e){ - $(this).find('div.nor_button').show(); - }, - function(e){ - $(this).find('div.nor_button').hide(); - } - ); - - $('#squaremg_inside > div.squarelist > table.list tr.item div.nor_button').on('click',function(e){ - $.post('user_set.php', - { - 'type':'squareremove', - 'squareid':$(this).parents('tr.item').data('squareid') - }, - function(res){ - square_update(); - } - ); - }); - $('#squaremg_outside > div.squarelist > table.list tr.item div.nor_button').on('click',function(e){ - $.post('user_set.php', - { - 'type':'squareadd', - 'squareid':$(this).parents('tr.item').data('squareid') - }, - function(res){ - square_update(); - } - ); - }); - data_callback.add(square_callback); - data_callback.add(square_rank_callback); - data_callback.add(square_problem_callback); - data_callback.add(square_scoreboard_callback); - - square_update(); -} -function square_update(){ - data_paramo.square_list = new Object(); - data_update(true); -} -function square_callback(res){ - var i; - - var reto; - var inlist; - var outlist; - var squareo; - - var divs; - var j_oributton; - var j_button; - var j_a; - - var e_u_table; - var e_a_table; - var e_i_table; - var uidx; - var aidx; - var iidx; - - if(res.square_list === undefined){ - return; - } - if(res.square_list != null){ - reto = res.square_list; - inlist = reto.inlist; - outlist = reto.outlist; - - j_oributton = $('#index_panel_squarelist > div.ori'); - divs = $('#index_panel_squarelist').children('div.button'); - for(i = 1;i < divs.length;i++){ - $(divs[i]).hide(); - } - for(i = 0;i < inlist.length;i++){ - squareo = inlist[i]; - if(squareo.status != 'active'){ - continue; - } - - if((divs.length - 2) <= i){ - j_button = j_oributton.clone(true); - j_button.removeClass('ori'); - j_oributton.before(j_button); - }else{ - j_button = $(divs[i + 1]); - } - - j_button.attr('page','square_' + squareo.squareid); - j_a = $(j_button.find('a.button')[0]); - j_a.attr('href','/expoj/index.html?page=square_' + squareo.squareid); - j_a.text(squareo.squarename); - - j_button.show(); - - if(squareo.squareid in square_pageo_list){ - square_pageo_list[squareo.squareid].squarename = squareo.squarename; - }else{ - square_pageo_list[squareo.squareid] = { - 'squareid':squareo.squareid, - 'squarename':squareo.squarename, - 'flag':squareo.flag, - 'tab':'problem', - 'tabo_rank':{ - 'rankcount':0, - 'rankoff':0, - 'callback':$.Callbacks() - }, - 'tabo_problem':{ - 'procount':0, - 'prooff':0, - 'callback':$.Callbacks() - }, - 'tabo_scoreboard':{ - 'callback':$.Callbacks() - } - } - } - } - - e_u_table = $('#squaremg_inside > div.upcoming > table.list')[0]; - e_a_table = $('#squaremg_inside > div.active > table.list')[0]; - e_i_table = $('#squaremg_inside > div.inactive > table.list')[0]; - for(i = e_u_table.rows.length - 1;i > 0;i--){ - $(e_u_table.rows[i]).hide(); - } - for(i = e_a_table.rows.length - 1;i > 0;i--){ - $(e_a_table.rows[i]).hide(); - } - for(i = e_i_table.rows.length - 1;i > 0;i--){ - $(e_i_table.rows[i]).hide(); - } - - uidx = 0; - aidx = 0; - iidx = 0; - for(i = 0;i < inlist.length;i++){ - squareo = inlist[i]; - - switch(squareo.status){ - case 'upcoming': - squaremg_square_listadd( - e_u_table, - uidx, - squareo.squareid, - squareo.squarename, - squareo.starttime, - squareo.endtime); - - uidx++; - break; - case 'active': - squaremg_square_listadd( - e_a_table, - aidx, - squareo.squareid, - squareo.squarename, - squareo.starttime, - squareo.endtime); - - aidx++; - break; - case 'inactive': - squaremg_square_listadd( - e_i_table, - iidx, - squareo.squareid, - squareo.squarename, - squareo.starttime, - squareo.endtime); - - iidx++; - break; - } - } - - e_u_table = $('#squaremg_outside > div.upcoming > table.list')[0]; - e_a_table = $('#squaremg_outside > div.active > table.list')[0]; - e_i_table = $('#squaremg_outside > div.inactive > table.list')[0]; - for(i = e_u_table.rows.length - 1;i > 0;i--){ - $(e_u_table.rows[i]).hide(); - } - for(i = e_a_table.rows.length - 1;i > 0;i--){ - $(e_a_table.rows[i]).hide(); - } - for(i = e_i_table.rows.length - 1;i > 0;i--){ - $(e_i_table.rows[i]).hide(); - } - - uidx = 0; - aidx = 0; - iidx = 0; - for(i = 0;i < outlist.length;i++){ - squareo = outlist[i]; - - switch(squareo.status){ - case 'upcoming': - squaremg_square_listadd( - e_u_table, - uidx, - squareo.squareid, - squareo.squarename, - squareo.starttime, - squareo.endtime); - - uidx++; - break; - case 'active': - squaremg_square_listadd( - e_a_table, - aidx, - squareo.squareid, - squareo.squarename, - squareo.starttime, - squareo.endtime); - - aidx++; - break; - case 'inactive': - squaremg_square_listadd( - e_i_table, - iidx, - squareo.squareid, - squareo.squarename, - squareo.starttime, - squareo.endtime); - - iidx++; - break; - } } - - square_update_callback.fire(); - } -} - -function square_pageswitch(pagename,on){ - var squareid; - var param; - var as; - var tabo; - var show = function(){ - squareid = pagename.match(/^square_(.+)/)[1]; - square_pageo = square_pageo_list[squareid]; - - param = nor_getparam(); - if(param.tab != undefined){ - square_pageo.tab = param.tab; - } - - if(square_pageo.tab != 'rank' && square_pageo.tab != 'problem' && square_pageo.tab != 'scoreboard'){ - square_pageo.tab = 'problem'; - } - if(square_pageo.tab == 'scoreboard' && !('1' in square_pageo.flag)){ - square_pageo.tab = 'problem'; - } - - $('#index_head_title').text('ExpOJ-' + square_pageo.squarename); - - square_page.attr('id','page_square_' + square_pageo.squareid); - - as = $('#index_headtab_square > div.button > a.button'); - $(as[0]).attr('href','/expoj/index.html?page=square_' + square_pageo.squareid + '&tab=problem'); - $(as[1]).attr('href','/expoj/index.html?page=square_' + square_pageo.squareid + '&tab=rank'); - $(as[2]).attr('href','/expoj/index.html?page=square_' + square_pageo.squareid + '&tab=scoreboard'); - - if('1' in square_pageo.flag){ - $('#index_headtab_square > [tab="scoreboard"]').show(); - }else{ - $('#index_headtab_square > [tab="scoreboard"]').hide(); - } - - $('#index_headtab_square > div.button').removeClass('button_s'); - $('#index_headtab_square > [tab="' + square_pageo.tab + '"]').addClass('button_s'); - $('#index_headtab_square').show(); - - $(square_page.find('div.square_rank')[0]).hide(); - $(square_page.find('div.square_problem')[0]).hide(); - $(square_page.find('div.square_scoreboard')[0]).hide(); - - switch(square_pageo.tab){ - case 'rank': - tabo = square_pageo.tabo_rank; - if(param.rankoff != undefined){ - tabo.rankoff = param.rankoff; - } - - tabo.callback.add(function(){ - $(square_page.find('div.square_rank')[0]).show(); - window.history.replaceState('square',document.title,square_geturl()); - tabo.callback.remove(arguments.callee); - }); - - square_rank_update(); - break; - case 'problem': - tabo = square_pageo.tabo_problem; - if(param.prooff != undefined){ - tabo.prooff = param.prooff; - } - - tabo.callback.add(function(){ - $(square_page.find('div.square_problem')[0]).show(); - window.history.replaceState('square',document.title,square_geturl()); - tabo.callback.remove(arguments.callee); - }); - - square_problem_update(); - break; - case 'scoreboard': - tabo = square_pageo.tabo_scoreboard; - tabo.callback.add(function(){ - $(square_page.find('div.square_scoreboard')[0]).show(); - window.history.replaceState('square',document.title,square_geturl()); - tabo.callback.remove(arguments.callee); - }); - - square_scoreboard_update(); - break; - } - - square_page.fadeIn('slow'); - } - - if(on){ - square_update_callback.add(function(){ - show(); - square_update_callback.remove(arguments.callee); - }); - square_update(); - }else{ - delete data_paramo.square_rank_list; - delete data_paramo.square_problem_list; - delete data_paramo.square_scoreboard_list; - } -} -function square_tabswitch(tabname){ - var j_tab; - var tabo; - var j_div; - var show = function(){ - square_pageo.tab = tabname; - - j_tab = $(square_page.find('div.square_' + square_pageo.tab)[0]); - switch(square_pageo.tab){ - case 'rank': - tabo = square_pageo.tabo_rank; - tabo.callback.add(function(){ - j_tab.fadeIn('fast'); - window.history.pushState('square',document.title,square_geturl()); - tabo.callback.remove(arguments.callee); - }); - - square_rank_update(); - break; - case 'problem': - tabo = square_pageo.tabo_problem; - tabo.callback.add(function(){ - j_tab.fadeIn('fast'); - window.history.pushState('square',document.title,square_geturl()); - tabo.callback.remove(arguments.callee); - }); - - square_problem_update(); - break; - case 'scoreboard': - tabo = square_pageo.tabo_scoreboard; - tabo.callback.add(function(){ - j_tab.fadeIn('fast'); - window.history.pushState('square',document.title,square_geturl()); - tabo.callback.remove(arguments.callee); - }) - - square_scoreboard_update(); - break; - } - } - - if(square_pageo.tab == tabname){ - return -1; - } - - delete data_paramo.square_rank_list; - delete data_paramo.square_problem_list; - delete data_paramo.square_scoreboard_list; - - $('#index_headtab_square > div.button').removeClass('button_s'); - $(square_page.find('div.square_' + square_pageo.tab)[0]).fadeOut('fast',show); - $('#index_headtab_square > [tab="' + tabname + '"]').addClass('button_s'); -} -function square_geturl(){ - var url; - var pageo; - var j_tab; - var tabo; - - url = '/expoj/index.html?page=square_' + square_pageo.squareid + '&tab=' + square_pageo.tab; - - switch(square_pageo.tab){ - case 'rank': - url = url + '&rankoff=' + square_pageo.tabo_rank.rankoff; - break; - case 'problem': - url = url + '&prooff=' + square_pageo.tabo_problem.prooff; - break; - case 'scoreboard': - break; - } - - return url; -} - -function square_rank_listadd(e_table,rank,userid,nickname,acceptcount,submitcount,score){ - var j_tr; - var j_a; - - j_tr = $($(e_table).find('tr.ori')[0]).clone(true); - j_tr.removeClass('ori'); - $(j_tr.find('td.rank')[0]).text(rank); - j_a = $(j_tr.find('td.name > a.link')[0]); - j_a.attr('href','/expoj/index.html?page=user_' + userid); - j_a.text(nickname); - j_a.off('click').on('click',function(userid){return function(e){ - page_switch('user_' + userid); - return false; - }}(userid)); - $(j_tr.find('td.rate')[0]).text(acceptcount + '/' + submitcount); - $(j_tr.find('td.score')[0]).text(score); - - j_tr.show(); - $(e_table).append(j_tr); -} -function square_rank_chpg(rankoff){ - var tabo; - - tabo = square_pageo.tabo_rank; - if(rankoff >=0 && rankoff < tabo.rankcount){ - tabo.rankoff = rankoff; - tabo.callback.add(function(){ - window.history.pushState('square',document.title,square_geturl()); - tabo.callback.remove(arguments.callee); - }); - - square_rank_update(); - } -} -function square_rank_update(){ - data_paramo.square_rank_list = { - 'squareid':parseInt(square_pageo.squareid), - 'rankoff':parseInt(square_pageo.tabo_rank.rankoff) - } - - data_update(true); -} -function square_rank_callback(res){ - var i; - - var reto; - var ranklist; - var tabo; - var e_table; - var j_div; - var j_a; - - if((reto = res.square_rank_list) === undefined){ - return; - } - - if(reto == null){ - delete data_paramo.square_rank_list; - }else{ - tabo = square_pageo.tabo_rank; - tabo.rankcount = reto.rankcount; - ranklist = reto.ranklist; - - j_tab = $(square_page.find('div.square_rank')[0]); - - e_table = j_tab.find('table.list')[0]; - for(i = e_table.rows.length - 1;i > 1;i--){ - e_table.deleteRow(i); - } - - for(i = 0;i < ranklist.length;i++){ - square_rank_listadd( - e_table, - ranklist[i].rank, - ranklist[i].userid, - ranklist[i].nickname, - ranklist[i].acceptcount, - ranklist[i].submitcount, - ranklist[i].score); - } - - j_div = $(j_tab.find('div.nor_chpg')[0]); - j_div.empty(); - - j_a = nor_new_chpgbutton('«',function(){ - square_rank_chpg(0); - }); - j_div.append(j_a); - - j_a = nor_new_chpgbutton('‹',function(){ - square_rank_chpg(tabo.rankoff - 20); - }); - j_div.append(j_a); - - offs = Math.max(0,tabo.rankoff - 100); - if((offe = Math.min(tabo.rankcount,offs + 200)) == tabo.rankcount){ - offs = Math.max(0,(offe - offe % 20) - 180); - } - for(i = offs;i < offe;i += 20){ - j_a = nor_new_chpgbutton((i / 20 + 1),function(rankoff){return function(){ - square_rank_chpg(rankoff); - }}(i)); - - if(i == tabo.rankoff){ - j_a.addClass('nor_chpg_s'); - } - - j_div.append(j_a); - } - - j_a = nor_new_chpgbutton('›',function(){ - square_rank_chpg(tabo.rankoff + 20); - }); - j_div.append(j_a); - - j_a = nor_new_chpgbutton('»',function(){ - square_rank_chpg(tabo.rankcount - tabo.rankcount % 20); - }); - j_div.append(j_a); - - tabo.callback.fire(); - } -} - -function square_problem_listadd(e_table,idx,proid,proname,acceptcount,submitcount,light){ - var j_tr; - var j_a; - - if((e_table.rows.length - 2) <= idx){ - j_tr = $($(e_table).find('tr.ori')[0]).clone(true); - j_tr.removeClass('ori'); - $(e_table).append(j_tr); - }else{ - j_tr = $(e_table.rows[idx + 2]); - } - - switch(light){ - case 0: - j_tr.css('border-left','#333333 5px solid'); - break; - case 1: - j_tr.css('border-left','#FF0000 5px solid'); - break; - case 2: - j_tr.css('border-left','#00FF00 5px solid'); - break; - case 3: - j_tr.css('border-left','#FFFF00 5px solid'); - break; - case 4: - j_tr.css('border-left','#FFFFFF 5px solid'); - break; - } - - $(j_tr.find('td.id')[0]).text(proid); - $(j_tr.find('td.rate')[0]).text(acceptcount + '/' + submitcount); - j_a = $(j_tr.find('td.name > a.link')[0]); - j_a.attr('href','/expoj/index.html?page=problem_' + proid); - j_a.text(proname); - - j_tr.off('click').on('click',function(e){ - page_switch('problem_' + proid); - return false; - }); - - j_tr.show(); - return j_tr; -} -function square_problem_chpg(prooff){ - var tabo; - - tabo = square_pageo.tabo_problem; - if(prooff >=0 && prooff < tabo.procount){ - tabo.prooff = prooff; - tabo.callback.add(function(){ - window.history.pushState('square',document.title,square_geturl()); - tabo.callback.remove(arguments.callee); - }); - - square_problem_update(); - } -} -function square_problem_update(){ - var tabo; - - tabo = square_pageo.tabo_problem; - data_paramo.square_problem_list = { - 'squareid':parseInt(square_pageo.squareid), - 'prooff':parseInt(tabo.prooff) - }; - - data_update(true); -} -function square_problem_callback(res){ - var i; - var j; - - var reto; - var tabo; - var prolist; - var proo; - var e_table; - var j_tr; - var j_div; - - if((reto = res.square_problem_list) === undefined){ - return; - } - - if(reto == null){ - delete data_paramo.square_problem_list; - }else{ - tabo = square_pageo.tabo_problem; - tabo.procount = reto.procount; - prolist = reto.prolist; - - j_tab = $(square_page.find('div.square_problem')[0]); - - e_table = j_tab.find('table.list')[0]; - for(i = e_table.rows.length - 1;i > 1;i--){ - $(e_table.rows[i]).hide(); - } - - for(i = 0;i < prolist.length;i++){ - proo = prolist[i]; - square_problem_listadd( - e_table, - i, - proo.proid, - proo.proname, - proo.acceptcount, - proo.submitcount, - nor_scoretolight(proo.sumscore,proo.summaxscore)); - } - - j_div = $(j_tab.find('div.nor_chpg')[0]); - j_div.empty(); - - j_a = nor_new_chpgbutton('«',function(){ - square_problem_chpg(0); - }); - j_div.append(j_a); - - j_a = nor_new_chpgbutton('‹',function(){ - square_problem_chpg(tabo.prooff - 20); - }); - j_div.append(j_a); - - offs = Math.max(0,tabo.prooff - 100); - if((offe = Math.min(tabo.procount,offs + 200)) == tabo.procount){ - offs = Math.max(0,(offe - offe % 20) - 180); - } - for(i = offs;i < offe;i += 20){ - j_a = nor_new_chpgbutton((i / 20 + 1),function(prooff){return function(){ - square_problem_chpg(prooff); - }}(i)); - - if(i == tabo.prooff){ - j_a.addClass('nor_chpg_s'); - } - - j_div.append(j_a); - } - - j_a = nor_new_chpgbutton('›',function(){ - square_problem_chpg(tabo.prooff + 20); - }); - j_div.append(j_a); - - j_a = nor_new_chpgbutton('»',function(){ - square_problem_chpg(tabo.procount - tabo.procount % 20); - }); - j_div.append(j_a); - - tabo.callback.fire(); - } -} - -function square_scoreboard_listadd(e_table,rank,userid,nickname,proidlist,prolist){ - var i; - - var proo; - var j_tr; - var j_td; - var j_a; - - j_tr = $('<tr class="item"></tr>'); - j_td = $('<td class="rank"></td>'); - j_td.text(rank); - j_tr.append(j_td); - j_td = $('<td class="name"></td>'); - j_a = $('<a class="link"></a>'); - j_a.attr('href','/expoj/index.html?page=user_' + userid); - j_a.text(nickname); - j_a.off('click').on('click',function(userid){return function(e){ - page_switch('user_' + userid); - return false; - }}(userid)); - j_td.append(j_a); - j_tr.append(j_td); - - for(i = 0;i < proidlist.length;i++){ - j_td = $('<td class="problem"></td>'); - if(proidlist[i] in prolist){ - proo = prolist[proidlist[i]]; - if(proo.accepttime == null){ - j_td.text('-/' + proo.submitcount); - }else{ - j_td.text(Math.round(proo.accepttime / 14400) + '/' + proo.submitcount); - j_td.css('background-color','#222222'); - } - } - j_tr.append(j_td); - } - - $(e_table).append(j_tr); -} -function square_scoreboard_update(){ - data_paramo.square_scoreboard_list = { - 'squareid':parseInt(square_pageo.squareid), - } - - data_update(true); -} -function square_scoreboard_callback(res){ - var i; - - var reto; - var tabo; - var proidlist; - var scoreboardlist; - var scoreboardo; - var e_table; - var j_tr; - var j_th; - var j_a; - - if((reto = res.square_scoreboard_list) === undefined){ - return; - } - - if(reto == null){ - delete data_paramo.square_scoreboard_list; - }else{ - tabo = square_pageo.tabo_scoreboard; - proidlist = reto.proidlist; - scoreboardlist = reto.scoreboardlist; - - j_tab = $(square_page.find('div.square_scoreboard')[0]); - j_tab.css('width',(192 + 64 + proidlist.length * 104) + 'px'); - - e_table = j_tab.find('table.list')[0]; - - j_tr = $(e_table.rows[0]); - j_tr.empty(); - j_tr.append('<th class="rank">#</th>'); - j_tr.append('<th class="name">Name</th>'); - for(i = 0;i < proidlist.length;i++){ - j_th = $('<th class="problem"></th>'); - j_a = $('<a class="link"></a>'); - j_a.attr('href','/expoj/index.html?page=problem_' + proidlist[i]); - j_a.text(proidlist[i]); - j_a.off('click').on('click',function(proid){return function(e){ - page_switch('problem_' + proid); - return false; - }}(proidlist[i])); - j_th.append(j_a); - j_tr.append(j_th); - } - - for(i = e_table.rows.length - 1;i > 0;i--){ - e_table.deleteRow(i); - } - - for(i = 0;i < scoreboardlist.length;i++){ - scoreboardo = scoreboardlist[i]; - square_scoreboard_listadd( - e_table, - scoreboardo.rank, - scoreboardo.userid, - scoreboardo.nickname, - proidlist, - scoreboardo.prolist); - } - - tabo.callback.fire(); - } -} - -function squaremg_pageswitch(on){ - square_update(); - $('#page_squaremg').fadeIn('slow'); -} -function squaremg_square_listadd(e_table,idx,squareid,squarename,starttime,endtime){ - var j_tr; - - if((e_table.rows.length - 1) <= idx){ - j_tr = $($(e_table).find('tr.ori')[0]).clone(true); - j_tr.removeClass('ori'); - $(e_table).append(j_tr); - }else{ - j_tr = $(e_table.rows[idx + 1]); - } - - $(j_tr.find('td.name')).text(squarename); - $(j_tr.find('td.time')).html(starttime.match(/(.*)[\.,\+]/)[1] + '<br/>' + endtime.match(/(.*)[\.,\+]/)[1]); - j_tr.data('squareid',squareid); - - j_tr.show(); -} diff --git a/web/page_status.css b/web/page_status.css deleted file mode 100644 index 95f9401..0000000 --- a/web/page_status.css +++ /dev/null @@ -1,110 +0,0 @@ -div.status_submit{ - width:100%; - height:100%; - overflow:hidden; -} - -div.status_submit > div.submitlist{ - width:69%; - height:100%; - float:left; - overflow:auto; -} -div.status_submit > div.submitlist > table.list{ - width:95%; - margin:6px auto 0px auto; - font-size:20px; - text-align:left; - border-spacing:0px; - border-collapse:collapse; -} -div.status_submit > div.submitlist tr.head{ - height:32px; -} -div.status_submit > div.submitlist tr.item{ - height:32px; - cursor:pointer; -} -div.status_submit > div.submitlist tr:hover.item{ - background-color:#36454F; -} -div.status_submit > div.submitlist th.id,div.status_submit > div.submitlist td.id{ - width:64px; -} -div.status_submit > div.submitlist th.proid,div.status_submit > div.submitlist td.proid{ - width:96px; -} -div.status_submit > div.submitlist th.nickname,div.status_submit > div.submitlist td.nickname{ - width:auto; -} -div.status_submit > div.submitlist th.time{ - width:224px; -} -div.status_submit > div.submitlist td.time{ - width:224px; - font-weight:normal; - font-size:16px; -} -div.status_submit > div.submitlist th.result,div.status_submit > div.submitlist td.result{ - width:80px; -} -div.status_submit > div.submitlist th.runtime{ - width:104px; -} -div.status_submit > div.submitlist td.runtime{ - width:104px; - font-weight:normal; - font-size:16px; -} -div.status_submit > div.submitlist th.score,div.status_submit > div.submitlist td.score{ - width:64px; -} -div.status_submit > div.submitlist a.link{ - height:100%; - color:#E9E9E9; - text-decoration:none; - cursor:pointer; -} -div.status_submit > div.submitlist a:hover.link{ - text-decoration:underline; -} - -div.status_submit > div.submitinfo{ - width:31%; - height:100%; - background-color:#222222; - overflow:auto; - float:left; -} -div.status_submit > div.submitinfo div.head{ - width:100%; - height:32px; - margin:6px 0px 0px 0px; -} -div.status_submit > div.submitinfo table.info{ - width:95%; - margin:26px 0px 0px auto; - font-size:16px; - text-align:left; - border-spacing:0px; - border-collapse:collapse; -} -div.status_submit > div.submitinfo > table.list{ - width:95%; - margin:32px 0px 0px auto; - font-size:16px; - text-align:left; - border-spacing:0px; - border-collapse:collapse; -} -div.status_submit > div.submitinfo a.link{ - width:100%; - height:100%; - color:#E9E9E9; - text-decoration:none; - display:block; - cursor:pointer; -} -div.status_submit > div.submitinfo a:hover.link{ - text-decoration:underline; -} diff --git a/web/page_status.js b/web/page_status.js deleted file mode 100644 index 415f3d2..0000000 --- a/web/page_status.js +++ /dev/null @@ -1,497 +0,0 @@ -var status_judgestat; -var status_tab; - -function status_init(){ - var j_tab; - var j_div; - var as; - - status_judgestat = new Array(); - status_judgestat[0] = 'AC'; - status_judgestat[1] = 'WA'; - status_judgestat[2] = 'TLE'; - status_judgestat[3] = 'MLE'; - status_judgestat[4] = 'RF'; - status_judgestat[5] = 'RE'; - status_judgestat[6] = 'CE'; - status_judgestat[7] = 'ERR'; - status_judgestat[100] = 'WAIT'; - - j_tab = $('#status_allsubmit'); - j_tab.data('tabo',{ - 'useronly':false, - 'submitid':2147483647, - 'submitoff':0, - 'submitcount':0, - 'callback':$.Callbacks() - }); - data_callback.add(function(j_tab){return function(res){ - status_submit_callback(j_tab,res); - }}(j_tab)); - - j_tab = $('#status_usersubmit'); - j_tab.data('tabo',{ - 'useronly':true, - 'submitid':2147483647, - 'submitoff':0, - 'submitcount':0, - 'callback':$.Callbacks() - }); - user_logincallback.add(function(){ - var j_tab; - - j_tab = $('#status_usersubmit'); - if(user_usero != null){ - $('#index_headtab_status > [tab="usersubmit"]').show(); - } - }); - data_callback.add(function(j_tab){return function(res){ - status_submit_callback(j_tab,res); - }}(j_tab)); - status_submit_update(j_tab); - - $('#index_headtab_status > div.button').on('click',function(e){ - status_tabswitch($(this).attr('tab')); - return false; - }); -} -function status_pageswitch(on){ - var param; - var j_tab; - var tabo; - - if(on){ - param = nor_getparam(); - if(param.tab != undefined){ - status_tab = param.tab; - } - if(status_tab != 'usersubmit' && status_tab != 'allsubmit'){ - status_tab = 'allsubmit'; - } - - $('#index_head_title').text('ExpOJ-Status'); - - $('#index_headtab_status > div.button').removeClass('button_s'); - $('#index_headtab_status > [tab="' + status_tab + '"]').addClass('button_s'); - $('#index_headtab_status').show(); - - $('#status_allsubmit').hide(); - $('#status_usersubmit').hide(); - - switch(status_tab){ - case 'allsubmit': - j_tab = $('#status_allsubmit'); - tabo = j_tab.data('tabo'); - - if(param.submitid != undefined){ - tabo.submitid = param.submitid; - } - if(param.submitoff != undefined){ - tabo.submitoff = param.submitoff; - } - - tabo.callback.add(function(){ - j_tab.show(); - window.history.replaceState('status',document.title,status_geturl()); - tabo.callback.remove(arguments.callee); - }); - - status_submit_update(j_tab); - break; - case 'usersubmit': - j_tab = $('#status_usersubmit'); - tabo = j_tab.data('tabo'); - - if(param.submitid != undefined){ - tabo.submitid = param.submitid; - } - if(param.submitoff != undefined){ - tabo.submitoff = param.submitoff; - } - - tabo.callback.add(function(){ - j_tab.show(); - window.history.replaceState('status',document.title,status_geturl()); - tabo.callback.remove(arguments.callee); - }); - - status_submit_update(j_tab); - break; - } - - $('#page_status').fadeIn('slow'); - }else{ - delete data_paramo.status_submit_userlist; - delete data_paramo.status_submit_list; - } -} -function status_tabswitch(tabname){ - var j_tab; - var tabo; - var show = function(){ - status_tab = tabname; - - j_tab = $('#status_' + status_tab); - switch(status_tab){ - case 'allsubmit': - tabo = j_tab.data('tabo') - tabo.callback.add(function(){ - j_tab.fadeIn('fast'); - window.history.pushState('status',document.title,status_geturl()); - tabo.callback.remove(arguments.callee); - }); - - status_submit_update(j_tab); - break; - case 'usersubmit': - tabo = j_tab.data('tabo') - tabo.callback.add(function(){ - j_tab.fadeIn('fast'); - window.history.pushState('status',document.title,status_geturl()); - tabo.callback.remove(arguments.callee); - }); - - status_submit_update(j_tab); - break; - } - } - - if(status_tab == tabname){ - return -1; - } - - delete data_paramo.status_submit_userlist; - delete data_paramo.status_submit_list; - - $('#index_headtab_status > [tab="' + status_tab + '"]').removeClass('button_s'); - $('#status_' + status_tab).fadeOut('fast',show); - - $('#index_headtab_status > [tab="' + tabname + '"]').addClass('button_s'); -} -function status_geturl(){ - var url; - var tabo; - - switch(status_tab){ - case 'allsubmit': - tabo = $('#status_allsubmit').data('tabo'); - if(tabo.submitid == null){ - url = '/expoj/index.html?page=status&tab=allsubmit&submitoff=' + tabo.submitoff; - }else{ - url = '/expoj/index.html?page=status&tab=allsubmit&submitoff=' + tabo.submitoff + '&submitid=' + tabo.submitid; - } - break; - case 'usersubmit': - tabo = $('#status_usersubmit').data('tabo'); - if(tabo.submitid == null){ - url = '/expoj/index.html?page=status&tab=usersubmit&submitoff=' + tabo.submitoff; - }else{ - url = '/expoj/index.html?page=status&tab=usersubmit&submitoff=' + tabo.submitoff + '&submitid=' + tabo.submitid; - } - break; - } - - return url; -} - -function status_submit_listadd(e_table,idx,submitid,proid,userid,nickname,time,result,runtime,score,light){ - var j_tr; - var j_td; - var j_a; - - if((e_table.rows.length - 2) <= idx){ - j_tr = $($(e_table).find('tr.ori')[0]).clone(true); - j_tr.removeClass('ori'); - $(e_table).append(j_tr); - }else{ - j_tr = $(e_table.rows[idx + 2]); - } - - $(j_tr.find('td.id')[0]).text(submitid); - $(j_tr.find('td.time')[0]).text(time.match(/(.*)\./)[1]); - $(j_tr.find('td.result')[0]).text(result); - $(j_tr.find('td.runtime')[0]).text(Math.round(parseInt(runtime) / 1000)); - j_td = $(j_tr.find('td.score')[0]); - j_td.text(score); - switch(light){ - case 1: - j_td.css('color','#FF0000'); - break; - case 2: - j_td.css('color','#00FF00'); - break; - case 3: - j_td.css('color','#FFFF00'); - break; - case 4: - j_td.css('color','#FFFFFF'); - break; - } - - j_a = $(j_tr.find('td.proid > a.link')[0]); - j_a.attr('href','/expoj/index.html?page=problem_' + proid); - j_a.text(proid); - j_a.off('click').on('click',function(e){ - page_switch('problem_' + proid); - return false; - }); - - j_a = $(j_tr.find('td.nickname > a.link')[0]); - j_a.attr('href','/expoj/index.html?page=user_' + userid); - j_a.text(nickname); - j_a.off('click').on('click',function(e){ - page_switch('user_' + userid); - return false; - }); - - j_tr.off('click').on('click',function(e){ - var j_tab; - var tabo; - - if(e.target.tagName == 'A'){ - return; - } - - j_tab = $(this).data('j_tab'); - tabo = j_tab.data('tabo'); - tabo.submitid = $(this).data('submitid'); - - tabo.callback.add(function(){ - window.history.pushState('status',document.title,status_geturl()); - tabo.callback.remove(arguments.callee); - }); - status_submit_update(j_tab); - }); - - j_tr.show(); - return j_tr; -} -function status_submit_listchpg(j_tab,submitoff){ - var tabo; - - tabo = j_tab.data('tabo'); - if(submitoff >= 0 && submitoff < tabo.submitcount){ - tabo.submitoff = submitoff; - tabo.callback.add(function(){ - window.history.pushState('status',document.title,status_geturl()); - tabo.callback.remove(arguments.callee); - }); - status_submit_update(j_tab); - } -} -function status_submit_update(j_tab){ - var tabo; - var paramo; - - tabo = j_tab.data('tabo'); - paramo = { - 'submitoff':parseInt(tabo.submitoff), - 'submitid':parseInt(tabo.submitid) - }; - if(tabo.useronly){ - data_paramo.status_submit_userlist = paramo; - }else{ - data_paramo.status_submit_list = paramo; - } - - data_update(true); -} -function status_submit_callback(j_tab,res){ - var reto; - var j_tab; - var tabo; - var submitlist; - - tabo = j_tab.data('tabo'); - if(tabo.useronly){ - reto = res.status_submit_userlist; - }else{ - reto = res.status_submit_list; - } - if(reto === undefined){ - return; - } - - if(reto == null){ - if(tabo.useronly){ - delete data_paramo.status_submit_userlist; - }else{ - delete data_paramo.status_submit_list; - } - }else{ - tabo.submitcount = reto.submitcount; - submitlist = reto.submitlist; - - if(tabo.submitoff != null){ - var i; - var j; - - var e_table; - var j_tr; - var j_div; - var j_a; - var submito; - var offs; - var offe; - - e_table = j_tab.find('div.submitlist > table.list')[0]; - for(i = e_table.rows.length - 1;i > 1;i--){ - $(e_table.rows[i]).hide(); - } - - for(i = 0;i < submitlist.length - 1;i++){ - submito = submitlist[i]; - j_tr = status_submit_listadd( - e_table, - i, - submito.submitid, - submito.proid, - submito.userid, - submito.nickname, - submito.timestamp, - status_judgestat[submito.result], - submito.sumruntime, - submito.sumscore, - nor_scoretolight(submito.sumscore,submito.summaxscore)); - j_tr.data('j_tab',j_tab); - j_tr.data('submitid',submito.submitid); - } - - j_div = $(j_tab.find('div.nor_chpg')[0]); - j_div.empty(); - - j_a = nor_new_chpgbutton('«',function(){ - status_submit_listchpg(j_tab,0); - }); - j_div.append(j_a); - - j_a = nor_new_chpgbutton('‹',function(){ - status_submit_listchpg(j_tab,(tabo.submitoff - 20)); - }); - j_div.append(j_a); - - offs = Math.max(0,tabo.submitoff - 100); - if((offe = Math.min(tabo.submitcount,offs + 200)) == tabo.submitcount){ - offs = Math.max(0,(offe - offe % 20) - 180); - } - for(i = offs;i < offe;i += 20){ - j_a = nor_new_chpgbutton((i / 20 + 1),function(){ - status_submit_listchpg(j_tab,$(this).data('submitoff')); - }); - j_a.data('submitoff',i); - - if(i == tabo.submitoff){ - j_a.addClass('nor_chpg_s'); - } - - j_div.append(j_a); - } - - j_a = nor_new_chpgbutton('›',function(){ - status_submit_listchpg(j_tab,(tabo.submitoff + 20)); - }); - j_div.append(j_a); - - j_a = nor_new_chpgbutton('»',function(){ - status_submit_listchpg(j_tab,(tabo.submitcount - tabo.submitcount % 20)); - }); - j_div.append(j_a); - } - if(tabo.submitid != null){ - var i; - - var e_table; - var tds; - var as; - var j_tr; - var j_td; - var submito; - var partstatus; - var partscore; - var partruntime; - var partpeakmem; - - if(submitlist.length == 0){ - e_table = j_tab.find('div.submitinfo > table.info')[0]; - - tds = $(e_table).find('td'); - $(tds[1]).text(''); - $(tds[7]).text(''); - - as = $(e_table).find('a'); - $(as[0]).attr('href',''); - $(as[0]).text(''); - $(as[0]).off('click'); - $(as[1]).attr('href',''); - $(as[1]).text(''); - $(as[1]).off('click'); - }else{ - submito = submitlist[submitlist.length - 1]; - tabo.submitid = submito.submitid; - partstatus = submito.status.split(','); - partscore = submito.score.split(','); - partruntime = submito.runtime.split(','); - partpeakmem = submito.peakmem.split(','); - - e_table = j_tab.find('div.submitinfo > table.list')[0]; - for(i = e_table.rows.length - 1;i > 0;i--){ - e_table.deleteRow(i); - } - - for(i = 0;i < partstatus.length;i++){ - j_tr = $('<tr></tr>'); - - j_td = $('<td></td>'); - j_td.text(i + 1); - j_tr.append(j_td); - j_td = $('<td></td>'); - j_td.text(status_judgestat[parseInt(partstatus[i])]); - j_tr.append(j_td); - j_td = $('<td></td>'); - j_td.text(partscore[i]); - j_tr.append(j_td); - j_td = $('<td></td>'); - j_td.text(Math.round(parseInt(partruntime[i]) / 1000)); - j_tr.append(j_td); - j_td = $('<td></td>'); - j_td.text(Math.round(parseInt(partpeakmem[i]) / 1024)); - j_tr.append(j_td); - - $(e_table).append(j_tr); - } - - e_table = j_tab.find('div.submitinfo > table.info')[0]; - - tds = $(e_table).find('td'); - $(tds[1]).text(submito.submitid); - $(tds[7]).text(submito.sumscore); - - as = $(e_table).find('a'); - $(as[0]).attr('href','/expoj/index.html?page=problem_' + submito.proid); - $(as[0]).text(submito.proid); - $(as[0]).off('click').on('click',function(proid){return function(e){ - page_switch('problem_' + proid); - return false; - }}(submito.proid)); - $(as[1]).attr('href','/expoj/index.html?page=user_' + submito.userid); - $(as[1]).text(submito.nickname); - $(as[1]).off('click').on('click',function(userid){return function(e){ - page_switch('user_' + userid); - return false; - }}(submito.userid)); - - if(user_usero != null && submito.userid == user_usero.userid){ - $(j_tab.find('div.submitinfo > div > div.nor_button')[0]).show(); - }else{ - $(j_tab.find('div.submitinfo > div > div.nor_button')[0]).hide(); - } - } - } - - tabo.callback.fire(); - } -} - -function status_viewcode(submitid){ - window.open('/expoj/viewcode.html?submitid=' + submitid); -} diff --git a/web/page_user.css b/web/page_user.css deleted file mode 100644 index 7b2d91c..0000000 --- a/web/page_user.css +++ /dev/null @@ -1,123 +0,0 @@ -div.user_info{ - width:31%; - height:100%; - background-color:#222222; - font-size:18px; - overflow:auto; - float:left; -} -div.user_info div.head{ - margin:6px 0px 6px 0px; -} -div.user_info div.setting{ - float:right; -} -div.user_info div.head input.name{ - width:62%; - height:32px; - margin:0px 0px 6px 6px; - background-color:#222222; - color:#E9E9E9; - font-weight:bold; - font-size:24px; - line-height:32px; - border-width:0px; -} -div.user_info div.head input.aboutme,input.headimg{ - width:95%; - height:24px; - margin:0px 0px 6px 6px; - background-color:#222222; - color:#E9E9E9; - font-weight:normal; - font-size:16px; - line-height:24px; - border-width:0px; -} -div.user_info div.head img.headimg{ - width:100%; - margin:0px 0px 0px 0px; - display:block; -} -div.user_info table.info{ - width:95%; - margin:0px auto 0px 6px; -} -div.user_info table.info td.info{ - font-weight:normal; - font-size:16px; -} - -div.user_data{ - width:69%; - height:100%; - overflow:auto; - float:left; -} -div.user_data div.prolist{ - width:62%; - margin:32px auto 0px auto; -} -div.user_data div.prolist span.item{ - width:64px; - height:32px; - line-height:32px; - display:inline-block; -} -div.user_data div.prolist a.item{ - width:100%; - height:100%; - font-weight:bold; - font-size:16px; - text-align:center; - text-decoration:none; - display:block; -} -div.user_data div.prolist a:hover.item{ - text-decoration:underline; -} - -table.login{ - width:256px; - margin:192px auto; - border-spacing:16px; -} -table.login div.error{ - width:100%; - height:16px; - font-size:16px; - color:#FFA0A0; -} -table.login div.head{ - width:100%; - font-size:16px; -} -table.login input.input{ - width:100%; - padding:0px 0px 0px 0px; - font-size:20px; - background-color:#E9E9E9; - border-width:0px; -} -table.register{ - width:256px; - margin:192px auto; - border-spacing:16px; -} -table.register div.error{ - width:100%; - height:16px; - font-size:16px; - color:#FFA0A0; -} -table.register div.head{ - width:100%; - font-size:16px; -} -table.register input.input{ - width:100%; - padding:0px 0px 0px 0px; - font-size:20px; - background-color:#E9E9E9; - border-width:0px; -} diff --git a/web/page_user.js b/web/page_user.js deleted file mode 100644 index e016a51..0000000 --- a/web/page_user.js +++ /dev/null @@ -1,305 +0,0 @@ -var user_usero; -var user_logincallback; - -function user_init(){ - user_logincallback = $.Callbacks(); - - $('#login_username').on('keypress',function(e){ - if(e.which == 13){ - user_login_submit(); - } - }); - $('#login_password').on('keypress',function(e){ - if(e.which == 13){ - user_login_submit(); - } - }); - - $('#register_username').on('keypress',function(e){ - if(e.which == 13){ - user_register_submit(); - } - }); - $('#register_password').on('keypress',function(e){ - if(e.which == 13){ - user_register_submit(); - } - }); - $('#register_nickname').on('keypress',function(e){ - if(e.which == 13){ - user_register_submit(); - } - }); - - $('#index_panel > [page="logout"]').off('click').on('click',user_logout); -} -function user_loginchange(){ - var cookie; - var j_div; - - cookie = nor_getcookie(); - if(cookie['userid'] != undefined){ - user_update(cookie['userid'],true); - }else{ - user_usero = null; - user_panelswitch(false); - user_logincallback.fire(); - } -} -function user_update(userid,login){ - $.ajax({ - url:'user_get.php', - type:'POST', - data:{'userid':parseInt(userid)}, - async:false, - success:function(res){ - var i; - - var reto; - var usero; - var prolist; - var tds; - - var j_div; - var proo; - var j_span; - var j_a; - var color; - - if(res[0] != 'E'){ - reto = JSON.parse(res); - usero = reto.userinfo; - prolist = reto.prolist; - - $('#user_info > div.head > input.name').val(usero.nickname); - $('#user_info > div.head > input.aboutme').val(usero.aboutme); - $('#user_info > div.head > input.headimg').val(usero.headimg); - $('#user_info > div.head > img.headimg').attr('src',usero.headimg); - - tds = $('#user_info > table.info td.info'); - $(tds[1]).text(usero.acceptcount); - $(tds[3]).text(usero.submitcount); - $(tds[5]).text(usero.trycount); - - j_div = $($('#user_data > div.prolist')[0]); - j_div.empty(); - for(i = 0;i < prolist.length;i++){ - proo = prolist[i]; - - j_span = $('<span class="item"></span'); - j_span.on('click',function(proid){return function(e){ - page_switch('problem_' + proid); - return false; - }}(proo.proid)); - - j_a = $('<a class="item"></a>'); - j_a.attr('href','/expoj/index.html?page=problem_' + proo.proid); - j_a.text(proo.proid); - - switch(nor_scoretolight(parseInt(proo.rate),100)){ - case 0: - color = '#333333'; - case 1: - color = '#FF0000'; - break; - case 2: - color = '#00FF00'; - break; - case 3: - color = '#FFFF00'; - break; - case 4: - color = '#FFFFFF'; - break; - } - j_a.css('color',color); - - j_span.append(j_a); - j_div.append(j_span); - } - - if(login){ - user_usero = usero; - user_panelswitch(true); - user_logincallback.fire(); - } - }else if(login){ - user_usero = null; - user_panelswitch(false); - user_logincallback.fire(); - } - } - }); -} - -function user_panelswitch(on){ - var j_div; - - if(on){ - j_div = $('#index_panel > [page="user"]'); - j_div.attr('page','user_' + user_usero.userid); - $(j_div.find('a.button')[0]).attr('href','/expoj/index.html?page=user_' + user_usero.userid); - j_div.show(); - $('#index_panel > [page="login"]').hide(); - $('#index_panel > [page="register"]').hide(); - $('#index_panel > [page="logout"]').show(); - }else{ - j_div = $('#index_panel > [page^="user"]'); - j_div.attr('page','user'); - $(j_div.find('a.button')[0]).attr('href',null); - j_div.hide(); - $('#index_panel > [page="login"]').show(); - $('#index_panel > [page="register"]').show(); - $('#index_panel > [page="logout"]').hide(); - } -} -function user_pageswitch(pagename,on){ - var userid; - var j_page; - - if(on){ - userid = pagename.match(/^user_(.+)/)[1]; - - $('#index_head_title').text('ExpOJ-UID:' + userid); - - user_update(userid,false); - - if(user_usero != null && userid == user_usero.userid){ - $('#user_info > div.head > div.setting').show(); - }else{ - $('#user_info > div.head > div.setting').hide(); - } - - j_page = $('[id^="page_user"]'); - j_page.attr('id','page_user_' + userid); - j_page.fadeIn('slow'); - }else{ - $('[id^="page_user"]').attr('id','page_user'); - } -} -function user_infoedit(on){ - var divs; - var inputs; - - divs = $('#user_info > div.head > div.setting > div.nor_button'); - inputs = $('#user_info > div.head > input'); - if(on){ - $(divs[0]).hide(); - $(divs[1]).show(); - $(divs[2]).show(); - $('#user_info > div.head > input.headimg').show(); - inputs.attr('readonly',null); - inputs.css('background-color','#333333'); - }else{ - $(divs[0]).show(); - $(divs[1]).hide(); - $(divs[2]).hide(); - $('#user_info > div.head > input.headimg').hide(); - inputs.attr('readonly','readonly'); - inputs.css('background-color','transparent'); - - user_update(user_usero.userid,false); - } -} -function user_infosubmit(){ - var inputs; - inputs = $('#user_info > div.head > input'); - $.post('user_set.php', - { - 'type':'userinfo', - 'nickname':$('#user_info > div.head > input.name').val(), - 'aboutme':$('#user_info > div.head > input.aboutme').val(), - 'headimg':$('#user_info > div.head > input.headimg').val() - }, - function(res){ - user_infoedit(false); - } - ); -} - -function user_login_pageswitch(){ - $('#index_head_title').text('ExpOJ-Login'); - - user_login_reset(); - $('#page_login').fadeIn('fast',function(){ - $('#login_username').focus(); - }); -} -function user_login_reset(){ - $('#login_error').html(''); - $('#login_username').val(''); - $('#login_password').val(''); -} -function user_login_submit(){ - $.post('user_login.php', - {'username':$('#login_username').val(),'password':$('#login_password').val()}, - function(res){ - if(res[0] == 'S'){ - user_login_reset(); - user_loginchange(); - if(page_name_previous == 'login' || page_name_previous == 'register'){ - page_switch('home'); - }else{ - page_switch(page_name_previous); - } - }else if(res == 'Eerror'){ - $('#login_error').html('使用者名稱或密碼錯誤'); - }else{ - $('#login_error').html('Oops'); - } - } - ); -} - -function user_register_pageswitch(){ - $('#index_head_title').text('ExpOJ-Register'); - - user_register_reset(); - $('#page_register').fadeIn('fast',function(){ - $('#register_username').focus(); - }); -} -function user_register_reset(){ - $('#register_error').html(''); - $('#register_username').val(''); - $('#register_password').val(''); - $('#register_nickname').val(''); -} -function user_register_submit(){ - $.post('user_register.php', - {'username':$('#register_username').val(),'password':$('#register_password').val(),'nickname':$('#register_nickname').val()}, - function(res){ - if(res[0] == 'S'){ - user_register_reset(); - user_loginchange(); - if(page_name_previous == 'login' || page_name_previous == 'register'){ - page_switch('home'); - }else{ - page_switch(page_name_previous); - } - }else if(res == 'Eusername'){ - $('#register_error').html('使用者名稱不可為空或有非法字元<br/>最長16 Bytes'); - }else if(res == 'Epassword'){ - $('#register_error').html('<br/>密碼不可為空,最長128 Bytes'); - }else if(res == 'Enickname'){ - $('#register_error').html('暱稱不可為空或有非法字元<br/>最長16 Bytes'); - }else if(res == 'Eexist'){ - $('#register_error').html('使用者名稱已存在'); - }else{ - $('#register_error').html('Oops'); - } - } - ); -} - -function user_logout(){ - var cookie; - var key; - - cookie = nor_getcookie(); - for(key in cookie){ - document.cookie = key + '=;expires=Thu, 01 Jan 1970 00:00:00 GMT'; - } - - location.href = '/expoj/index.html?page=home'; -} diff --git a/web/problem_code_submit.php b/web/problem_code_submit.php deleted file mode 100644 index 2e7459a..0000000 --- a/web/problem_code_submit.php +++ /dev/null @@ -1,66 +0,0 @@ -<?php -require_once('common.php'); - -$userid = $_COOKIE['userid']; -$usersec = $_COOKIE['usersec']; -$proid = $_POST['proid']; -$code = $_POST['code']; - -if(!sec_checkuser($userid,$usersec)){ - exit('Euser'); -} -if($proid == '' || strval(intval($proid)) != $proid){ - exit('Epro'); -} -if(strlen($code) > (64 * 1024)){ - exit('Ecode'); -} - -$sqlc = pg_connect('host=localhost port=5432 dbname='.DB_NAME.' user='.DB_USER.' password='.DB_PASSWORD); - -$userid = pg_escape_string($userid); -$sqlr = pg_query_params($sqlc,'SELECT * FROM "user" WHERE userid=$1 LIMIT 1;', - array($userid)); -if(($usero = pg_fetch_object($sqlr)) == null){ - pg_free_result($sqlr); - pg_close($sqlc); - exit('Euser'); -} -pg_free_result($sqlr); - -$mc = new Memcached(); -$mc->addServer('localhost',11211); -if(!$mc->add('problem_code_submit_limit_'.$userid,true,10)){ - pg_close($sqlc); - exit('Elimit'); -} - -$proid = pg_escape_string($proid); -$sqlr = pg_query_params($sqlc,'SELECT * FROM "problem" WHERE proid=$1 LIMIT 1;', - array($proid)); -if(($proo = pg_fetch_object($sqlr)) == null){ - pg_free_result($sqlr); - pg_close($sqlc); - exit('Epro'); -} -pg_free_result($sqlr); - -$sqlr = pg_query_params($sqlc,'INSERT INTO "submit" ("proid","userid","status","score","maxscore","runtime","peakmem") VALUES($1,$2,$3,$4,$5,$6,$7) RETURNING "submitid";', - array($proid,$userid,'{100}','{0}','{0}','{0}','{0}')); -$submitid = pg_fetch_row($sqlr)[0]; -pg_free_result($sqlr); - -file_put_contents('submit/'.$submitid.'_submit.cpp',$code); - -pg_close($sqlc); - -$sd = socket_create(AF_INET,SOCK_STREAM,0); -socket_connect($sd,'127.0.0.1',2501); - -$data = $submitid.' '.$proid.chr(0); -socket_write($sd,$data,strlen($data)); - -socket_close($sd); - -echo 'S'; -?> diff --git a/web/problem_view.php b/web/problem_view.php deleted file mode 100644 index d53db88..0000000 --- a/web/problem_view.php +++ /dev/null @@ -1,41 +0,0 @@ -<?php -require_once('common.php'); - -function problem_view($sqlc,$paramo){ - $proid = $paramo->proid; - $infoonly = $paramo->infoonly; - - if(gettype($proid) != 'integer' || $proid < 1){ - return null; - } - - $sqlc = pg_connect('host=localhost port=5432 dbname='.DB_NAME.' user='.DB_USER.' password='.DB_PASSWORD); - - $proid = pg_escape_string($proid); - $sqlr = pg_query_params($sqlc,'SELECT * FROM "problem" WHERE proid=$1 LIMIT 1;', - array($proid)); - if(($proo = pg_fetch_object($sqlr)) == null){ - pg_free_result($sqlr); - return null; - } - - if($infoonly){ - $proo = array( - 'acceptcount' => $proo->acceptcount, - 'submitcount' => $proo->submitcount); - }else{ - $setting_info = parse_ini_file('pro/'.$proo->proid.'/'.$proo->proid.'_setting.txt',true); - $proo = array( - 'proid' => $proo->proid, - 'proname' => $proo->proname, - 'timelimit' => $setting_info['JUDGE']['timelimit'], - 'memlimit' => $setting_info['JUDGE']['memlimit'], - 'acceptcount' => $proo->acceptcount, - 'submitcount' => $proo->submitcount, - 'protext' => file_get_contents('pro/'.$proo->proid.'/'.$proo->proid.'_text.txt')); - } - - pg_free_result($sqlr); - return $proo; -} -?> diff --git a/web/square_list.php b/web/square_list.php deleted file mode 100644 index 7ac9188..0000000 --- a/web/square_list.php +++ /dev/null @@ -1,81 +0,0 @@ -<?php -require_once('common.php'); - -function square_list($sqlc,$paramo){ - $userid = $_COOKIE['userid']; - $usersec = $_COOKIE['usersec']; - if(!sec_checkuser($userid,$usersec)){ - return null; - } - - $userid = pg_escape_string($userid); - $sqlr = pg_query_params($sqlc,'SELECT array_to_string("squarelist",\',\') AS "squarelist" FROM "user" WHERE "userid"=$1 LIMIT 1;', - array($userid)); - - if(($sqlo = pg_fetch_object($sqlr)) == null){ - pg_free_result($sqlr); - return null; - } - $squarelist = $sqlo->squarelist; - pg_free_result($sqlr); - - $sqlr = pg_query($sqlc,'SELECT *,array_to_string("flag",\',\') AS "flag","starttime"<=now() AS "start","endtime"<=now() AS "end" FROM "square" WHERE "squareid" IN ('.$squarelist.') ORDER BY "squareid" ASC;'); - $inlist = array(); - while($squareo = pg_fetch_object($sqlr)){ - if($squareo->end == 't'){ - $status = 'inactive'; - }else if($squareo->start == 't'){ - $status = 'active'; - }else{ - $status = 'upcoming'; - } - $flaglist = explode(',',$squareo->flag); - $flag = array(); - for($idx = 0;$idx < count($flaglist);$idx++){ - $flag[$flaglist[$idx]] = true; - } - - $inlist[] = array( - 'squareid' => $squareo->squareid, - 'squarename' => $squareo->squarename, - 'starttime' => $squareo->starttime, - 'endtime' => $squareo->endtime, - 'status' => $status, - 'flag' => $flag - ); - } - pg_free_result($sqlr); - - $sqlr = pg_query($sqlc,'SELECT *,array_to_string("flag",\',\') AS "flag","starttime"<=now() AS "start","endtime"<=now() AS "end" FROM "square" WHERE "squareid" NOT IN ('.$squarelist.') ORDER BY "squareid" ASC;'); - $outlist = array(); - while($squareo = pg_fetch_object($sqlr)){ - if($squareo->end == 't'){ - $status = 'inactive'; - }else if($squareo->start == 't'){ - $status = 'active'; - }else{ - $status = 'upcoming'; - } - $flaglist = explode(',',$squareo->flag); - $flag = array(); - for($idx = 0;$idx < count($flaglist);$idx++){ - $flag[$flaglist[$idx]] = true; - } - - $outlist[] = array( - 'squareid' => $squareo->squareid, - 'squarename' => $squareo->squarename, - 'starttime' => $squareo->starttime, - 'endtime' => $squareo->endtime, - 'status' => $status, - 'flag' => $flag - ); - } - pg_free_result($sqlr); - - return array( - 'inlist' => $inlist, - 'outlist' => $outlist - ); -} -?> diff --git a/web/square_problem_list.php b/web/square_problem_list.php deleted file mode 100644 index 60d4268..0000000 --- a/web/square_problem_list.php +++ /dev/null @@ -1,63 +0,0 @@ -<?php -require_once('common.php'); - -function square_problem_list($sqlc,$paramo){ - $userid = $_COOKIE['userid']; - $usersec = $_COOKIE['usersec']; - $squareid = $paramo->squareid; - $prooff = $paramo->prooff; - - if(!sec_checkuser($userid,$usersec)){ - $userid = null; - } - if(gettype($squareid) != 'integer' || $squareid < 1){ - return null; - } - if(gettype($prooff) != 'integer' || $prooff < 0){ - return null; - } - - $squaireid = pg_escape_string($squareid); - $prooff = pg_escape_string($prooff); - $sqlr = pg_query_params($sqlc,'SELECT * FROM "problem" WHERE $1 = ANY ("squarelist") ORDER BY "proid" LIMIT 20 OFFSET $2;', - array($squareid,$prooff)); - - $prolist = array(); - $proidlist = array(); - while($proo = pg_fetch_object($sqlr)){ - $prolist[] = array( - 'proid' => $proo->proid, - 'proname' => $proo->proname, - 'acceptcount' => $proo->acceptcount, - 'submitcount' => $proo->submitcount, - 'sumscore' => null, - 'summaxscore' => null); - $proidlist[$proo->proid] = count($prolist) - 1; - } - pg_free_result($sqlr); - - $sqlr = pg_query_params($sqlc,'SELECT COUNT(*) FROM "problem" WHERE $1 = ANY ("squarelist");', - array($squareid)); - $procount = pg_fetch_row($sqlr)[0]; - pg_free_result($sqlr); - - if($userid){ - $userid = pg_escape_string($userid); - $sqlr = pg_query_params($sqlc,'SELECT "proid","sumscore","summaxscore" FROM "submit" WHERE "userid"=$1 AND "proid" IN ('.implode(',',array_keys($proidlist)).') ORDER BY "sumscore" DESC;', - array($userid)); - - while($sqlo = pg_fetch_object($sqlr)){ - if($prolist[$proidlist[$sqlo->proid]]['sumscore'] == null){ - $prolist[$proidlist[$sqlo->proid]]['sumscore'] = $sqlo->sumscore; - $prolist[$proidlist[$sqlo->proid]]['summaxscore'] = $sqlo->summaxscore; - } - } - pg_free_result($sqlr); - } - - return array( - 'procount' => $procount, - 'prolist' => $prolist - ); -} -?> diff --git a/web/square_rank_list.php b/web/square_rank_list.php deleted file mode 100644 index 01f3f45..0000000 --- a/web/square_rank_list.php +++ /dev/null @@ -1,115 +0,0 @@ -<?php -require_once('common.php'); - -function ranklist_cmp($a,$b){ - if($a['acceptcount'] == $b['acceptcount']){ - if($a['submitcount'] == $b['submitcount']){ - return $a['userid'] - $b['userid']; - }else{ - return $a['submitcount'] - $b['submitcount']; - } - } - return $b['acceptcount'] - $a['acceptcount']; -} - -function square_rank_list($sqlc,$paramo){ - $squareid = $paramo->squareid; - $rankoff = $paramo->rankoff; - - if(gettype($squareid) != 'integer' || $squareid < 1){ - return null; - } - if(gettype($rankoff) != 'integer' || $rankoff < 0){ - return null; - } - - $squareid = pg_escape_string($squareid); - $sqlr = pg_query_params($sqlc,'SELECT * FROM "square" WHERE "squareid"=$1', - array($squareid)); - - if(($squareo = pg_fetch_object($sqlr)) == null){ - pg_free_result($sqlr); - return null; - } - pg_free_result($sqlr); - - $sqlr = pg_query_params($sqlc,'SELECT "proid" FROM "problem" WHERE $1=ANY("squarelist");', - array($squareid)); - - $proidlist = array(); - while($sqlo = pg_fetch_object($sqlr)){ - $proidlist[] = $sqlo->proid; - } - pg_free_result($sqlr); - - $sqlr = pg_query_params($sqlc,'SELECT "userid","nickname" FROM "user" WHERE $1=ANY("squarelist");', - array($squareid)); - - $useridlist = array(); - while($sqlo = pg_fetch_object($sqlr)){ - $useridlist[$sqlo->userid] = array( - 'nickname' => $sqlo->nickname, - 'acceptcount' => 0, - 'submitcount' => 0, - 'score' => 0); - } - pg_free_result($sqlr); - - $sqlr = pg_query_params($sqlc,'SELECT "userid" FROM "submit" WHERE "proid" IN ('.implode(',',$proidlist).') AND "result"=0 AND "timestamp">=$1 AND "timestamp"<$2 GROUP BY "proid","userid";', - array($squareo->starttime,$squareo->endtime)); - - while($sqlo = pg_fetch_object($sqlr)){ - if(array_key_exists($sqlo->userid,$useridlist)){ - $useridlist[$sqlo->userid]['acceptcount']++; - } - } - pg_free_result($sqlr); - - $sqlr = pg_query_params($sqlc,'SELECT "userid",COUNT("userid") AS "submitcount" FROM "submit" WHERE "proid" IN ('.implode(',',$proidlist).') AND "timestamp">=$1 AND "timestamp"<$2 GROUP BY "userid";', - array($squareo->starttime,$squareo->endtime)); - - while($sqlo = pg_fetch_object($sqlr)){ - if(array_key_exists($sqlo->userid,$useridlist)){ - $useridlist[$sqlo->userid]['submitcount'] += $sqlo->submitcount; - } - } - pg_free_result($sqlr); - - $sqlr = pg_query_params($sqlc,'SELECT "userid",MAX("sumscore") AS "score" FROM "submit" WHERE "proid" IN ('.implode(',',$proidlist).') AND "timestamp">=$1 AND "timestamp"<$2 GROUP BY "proid","userid";', - array($squareo->starttime,$squareo->endtime)); - - while($sqlo = pg_fetch_object($sqlr)){ - if(array_key_exists($sqlo->userid,$useridlist)){ - $useridlist[$sqlo->userid]['score'] += $sqlo->score; - } - } - pg_free_result($sqlr); - - $ranklist = array(); - foreach($useridlist as $key => $value){ - $ranklist[] = array( - 'userid' => $key, - 'nickname' => $value['nickname'], - 'acceptcount' => $value['acceptcount'], - 'submitcount' => $value['submitcount'], - 'score' => $value['score']); - } - usort($ranklist,'ranklist_cmp'); - - $rank = 1; - for($idx = 0;$idx < count($ranklist);$idx++){ - if($idx > 0){ - if($ranklist[$idx]['acceptcount'] != $ranklist[$idx - 1]['acceptcount'] || - $ranklist[$idx]['submitcount'] != $ranklist[$idx - 1]['submitcount']){ - $rank = $idx + 1; - } - } - $ranklist[$idx]['rank'] = $rank; - } - - return array( - 'rankcount' => count($ranklist), - 'ranklist' => array_slice($ranklist,$rankoff,20) - ); -} -?> diff --git a/web/square_scoreboard_list.php b/web/square_scoreboard_list.php deleted file mode 100644 index 6fdbf13..0000000 --- a/web/square_scoreboard_list.php +++ /dev/null @@ -1,115 +0,0 @@ -<?php -require_once('common.php'); - -function scoreboardlist_cmp($a,$b){ - if($a['acceptcount'] == $b['acceptcount']){ - if($a['penalty'] == $b['penalty']){ - return $a['userid'] - $b['userid']; - }else{ - return $a['penalty'] - $b['penalty']; - } - } - return $b['acceptcount'] - $a['acceptcount']; -} - -function square_scoreboard_list($sqlc,$paramo){ - $squareid = $paramo->squareid; - - if(gettype($squareid) != 'integer' || $squareid < 1){ - return null; - } - - $squareid = pg_escape_string($squareid); - $sqlr = pg_query_params($sqlc,'SELECT * FROM "square" WHERE "squareid"=$1', - array($squareid)); - - if(($squareo = pg_fetch_object($sqlr)) == null){ - pg_free_result($sqlr); - return null; - } - pg_free_result($sqlr); - - $sqlr = pg_query_params($sqlc,'SELECT "proid" FROM "problem" WHERE $1=ANY("squarelist") ORDER BY "proid";', - array($squareid)); - - $proidlist = array(); - while($sqlo = pg_fetch_object($sqlr)){ - $proidlist[] = $sqlo->proid; - } - pg_free_result($sqlr); - - $sqlr = pg_query_params($sqlc,'SELECT "userid","nickname" FROM "user" WHERE $1=ANY("squarelist");', - array($squareid)); - - $useridlist = array(); - while($sqlo = pg_fetch_object($sqlr)){ - $useridlist[$sqlo->userid] = array( - 'nickname' => $sqlo->nickname, - 'acceptcount' => 0, - 'penalty' => 0, - 'prolist' => array() - ); - } - pg_free_result($sqlr); - - $sqlr = pg_query_params($sqlc,'SELECT "userid","proid",EXTRACT(EPOCH FROM age("timestamp",$1)) AS "time","result"=0 AS "accept" FROM "submit" WHERE "proid" IN ('.implode(',',$proidlist).') ORDER BY "timestamp";', - array($squareo->starttime)); - - while($sqlo = pg_fetch_object($sqlr)){ - if(!array_key_exists($sqlo->userid,$useridlist)){ - continue; - } - - $userido = &$useridlist[$sqlo->userid]; - if(!array_key_exists($sqlo->proid,$userido['prolist'])){ - $userido['prolist'][$sqlo->proid] = array( - 'accepttime' => null, - 'submitcount' => 0, - 'penalty' => 0 - ); - } - $proo = &$userido['prolist'][$sqlo->proid]; - - if($proo['accepttime'] == null){ - if($sqlo->accept == 't'){ - $proo['accepttime'] = intval($sqlo->time); - $proo['submitcount']++; - $proo['penalty'] = ($userido->submitcount - 1) * 1200 + $proo['accepttime']; - - $userido['acceptcount']++; - $userido['penalty'] += $proo['penalty']; - }else{ - $proo['submitcount']++; - } - } - } - pg_free_result($sqlr); - - $scoreboardlist = array(); - foreach($useridlist as $key => $value){ - $scoreboardlist[] = array( - 'userid' => $key, - 'nickname' => $value['nickname'], - 'acceptcount' => $value['acceptcount'], - 'penalty' => $value['penalty'], - 'prolist' => $value['prolist']); - } - usort($scoreboardlist,'scoreboardlist_cmp'); - - $rank = 1; - for($idx = 0;$idx < count($scoreboardlist);$idx++){ - if($idx > 0){ - if($scoreboardlist[$idx]['acceptcount'] != $scoreboardlist[$idx - 1]['acceptcount'] || - $scoreboardlist[$idx]['penalty'] != $scoreboardlist[$idx - 1]['penalty']){ - $rank = $idx + 1; - } - } - $scoreboardlist[$idx]['rank'] = $rank; - } - - return array( - 'proidlist' => $proidlist, - 'scoreboardlist' => $scoreboardlist - ); -} -?> diff --git a/web/square_set.php b/web/square_set.php deleted file mode 100644 index e69de29..0000000 --- a/web/square_set.php +++ /dev/null diff --git a/web/status_submit_list.php b/web/status_submit_list.php deleted file mode 100644 index 57bf003..0000000 --- a/web/status_submit_list.php +++ /dev/null @@ -1,147 +0,0 @@ -<?php -require_once('common.php'); - -function status_submit_list($sqlc,$paramo,$useronly){ - $submitoff = $paramo->submitoff; - $submitid = $paramo->submitid; - $proid = $paramo->proid; - $result = $paramo->result; - - if($useronly == true){ - $userid = $_COOKIE['userid']; - $usersec = $_COOKIE['usersec']; - if(!sec_checkuser($userid,$usersec)){ - return null; - } - $userid = pg_escape_string($userid); - } - if(gettype($submitoff) != 'integer' || $submitoff < 0){ - $submitoff = -1; - } - if(gettype($submitid) != 'integer' || $submitid < 1){ - $submitid = -1; - } - if(gettype($proid) != 'integer' || $proid < 1){ - $proid = -1; - } - if(gettype($result) != 'integer'){ - $result = -100; - } - if($submitoff == -1 && $submitid == -1){ - return null; - } - - $submitlist = array(); - $useridlist = array(); - - if($submitoff != -1){ - $submitoff = pg_escape_string($submitoff); - $sqlstr = 'SELECT "submitid","proid","userid","timestamp","result","sumscore","summaxscore","sumruntime" FROM "submit" '; - - if($useronly == true){ - $sqlr = pg_query_params($sqlc,$sqlstr.'WHERE "userid"=$1 ORDER BY "submitid" DESC LIMIT 20 OFFSET $2;', - array($userid,$submitoff)); - }else if($proid != -1 && $result != -100){ - $sqlr = pg_query_params($sqlc,$sqlstr.'WHERE "proid"=$1 AND "result"=$2 ORDER BY "sumruntime" ASC LIMIT 20 OFFSET $3;', - array($proid,$result,$submitoff)); - }else if($proid != -1 && $result == -100){ - $sqlr = pg_query_params($sqlc,$sqlstr.'WHERE "proid"=$1 AND "result"<>100 ORDER BY "submitid" DESC LIMIT 20 OFFSET $2;', - array($proid,$submitoff)); - }else{ - $sqlr = pg_query_params($sqlc,$sqlstr.'ORDER BY "submitid" DESC LIMIT 20 OFFSET $1;', - array($submitoff)); - } - - while($submito = pg_fetch_object($sqlr)){ - $submitlist[] = array( - 'submitid' => $submito->submitid, - 'proid' => $submito->proid, - 'userid' => $submito->userid, - 'timestamp' => $submito->timestamp, - 'result' => $submito->result, - 'sumscore' => $submito->sumscore, - 'summaxscore' => $submito->summaxscore, - 'sumruntime' => $submito->sumruntime); - $useridlist[$submito->userid] = ''; - } - pg_free_result($sqlr); - } - - if($submitid != -1){ - $sqlstr = 'SELECT "submitid","proid","userid",array_to_string("status",\',\') AS "status",array_to_string("score",\',\') AS "score",array_to_string("maxscore",\',\') AS "maxscore",array_to_string("runtime",\',\') AS "runtime",array_to_string("peakmem",\',\') AS "peakmem","timestamp","result","sumscore","summaxscore","sumruntime" FROM "submit" '; - - if($submitid != 2147483647){ - $submitid = pg_escape_string($submitid); - $sqlr = pg_query_params($sqlc,$sqlstr.'WHERE "submitid"=$1 LIMIT 1;', - array($submitid)); - }else{ - if($useronly == true){ - $sqlr = pg_query_params($sqlc,$sqlstr.'WHERE "userid"=$1 ORDER BY "submitid" DESC LIMIT 1;', - array($userid)); - }else if($proid != -1 && $result != -100){ - $sqlr = pg_query_params($sqlc,$sqlstr.'WHERE "proid"=$1 AND "result"=$2 ORDER BY "sumruntime" ASC LIMIT 1;', - array($proid,$result)); - }else if($proid != -1 && $result == -100){ - $sqlr = pg_query_params($sqlc,$sqlstr.'WHERE "proid"=$1 AND "result"<>100 ORDER BY "submitid" DESC LIMIT 1;', - array($proid)); - }else{ - $sqlr = pg_query($sqlc,$sqlstr.'ORDER BY "submitid" DESC LIMIT 1;'); - } - } - - while($submito = pg_fetch_object($sqlr)){ - $submitlist[] = array( - 'submitid' => $submito->submitid, - 'proid' => $submito->proid, - 'userid' => $submito->userid, - 'status' => $submito->status, - 'score' => $submito->score, - 'maxscore' => $submito->maxscore, - 'runtime' => $submito->runtime, - 'peakmem' => $submito->peakmem, - 'timestamp' => $submito->timestamp, - 'result' => $submito->result, - 'sumscore' => $submito->sumscore, - 'summaxscore' => $submito->summaxscore, - 'sumruntime' => $submito->sumruntime); - $useridlist[$submito->userid] = ''; - } - pg_free_result($sqlr); - }else{ - $submitlist[] = null; - } - - $sqlr = pg_query($sqlc,'SELECT "userid","nickname" FROM "user" WHERE "userid" IN ('.implode(',',array_keys($useridlist)).');'); - - while($sqlo = pg_fetch_object($sqlr)){ - $useridlist[$sqlo->userid] = $sqlo->nickname; - } - pg_free_result($sqlr); - - for($idx = 0;$idx < count($submitlist);$idx++){ - if($submitlist[$idx] != null){ - $submitlist[$idx]['nickname'] = $useridlist[$submitlist[$idx]['userid']]; - } - } - - if($useronly == true){ - $sqlr = pg_query_params('SELECT COUNT(*) FROM "submit" WHERE "userid"=$1;', - array($userid)); - }else if($proid != -1 && $result != -100){ - $sqlr = pg_query_params('SELECT COUNT(*) FROM "submit" WHERE "proid"=$1 AND "result"=$2;', - array($proid,$result)); - }else if($proid != -1 && $result == -100){ - $sqlr = pg_query_params('SELECT COUNT(*) FROM "submit" WHERE "proid"=$1 AND "result"<>100;', - array($proid)); - }else{ - $sqlr = pg_query('SELECT COUNT(*) FROM "submit";'); - } - $submitcount = pg_fetch_row($sqlr)[0]; - pg_free_result($sqlr); - - return array( - 'submitcount' => $submitcount, - 'submitlist' => $submitlist - ); -} -?> diff --git a/web/status_viewcode.php b/web/status_viewcode.php deleted file mode 100644 index 0bf1fb4..0000000 --- a/web/status_viewcode.php +++ /dev/null @@ -1,30 +0,0 @@ -<?php -require_once('common.php'); - -$userid = $_COOKIE['userid']; -$usersec = $_COOKIE['usersec']; -$submitid = $_POST['submitid']; - -if(!sec_checkuser($userid,$usersec)){ - exit('Eerror'); -} -if($submitid == '' || strval(intval($submitid)) != $submitid){ - exit('Eerror'); -} - -$sqlc = pg_connect('host=localhost port=5432 dbname='.DB_NAME.' user='.DB_USER.' password='.DB_PASSWORD); - -$userid = pg_escape_string($userid); -$submitid = pg_escape_string($submitid); -$sqlr = pg_query_params($sqlc,'SELECT "submitid" FROM "submit" WHERE "userid"=$1 AND "submitid"=$2 LIMIT 1', - array($userid,$submitid)); -if(pg_num_rows($sqlr) == 0){ - pg_free_result($sqlr); - pg_close($sqlc); - exit('Eerror'); -} -pg_free_result($sqlr); -pg_close($sqlc); - -echo json_encode(['code' => file_get_contents('submit/'.$submitid.'_submit.cpp')]); -?> diff --git a/web/user_get.php b/web/user_get.php deleted file mode 100644 index 85b0127..0000000 --- a/web/user_get.php +++ /dev/null @@ -1,65 +0,0 @@ -<?php -require_once('common.php'); - -$userid = intval($_POST['userid']); - -if(gettype($userid) != 'integer' || $userid < 1){ - exit('Eerror'); -} - -$sqlc = pg_connect('host=localhost port=5432 dbname='.DB_NAME.' user='.DB_USER.' password='.DB_PASSWORD); - -$userid = pg_escape_string($userid); -$sqlr = pg_query_params($sqlc,'SELECT * FROM "user" WHERE "userid"=$1 LIMIT 1;', - array($userid)); - -if(($usero = pg_fetch_object($sqlr)) == null){ - pg_free_result($sqlr); - pg_close($sqlc); - exit('Eerror'); -} -pg_free_result($sqlr); - -$sqlr = pg_query_params($sqlc,'SELECT COUNT(DISTINCT "proid") FROM "submit" WHERE "userid"=$1 AND "result"=0;', - array($userid)); -$acceptcount = pg_fetch_row($sqlr)[0]; -pg_free_result($sqlr); - -$sqlr = pg_query_params($sqlc,'SELECT COUNT(DISTINCT "proid") FROM "submit" WHERE "userid"=$1;', - array($userid)); -$trycount = pg_fetch_row($sqlr)[0]; -pg_free_result($sqlr); - -$sqlr = pg_query_params($sqlc,'SELECT COUNT("proid") FROM "submit" WHERE "userid"=$1;', - array($userid)); -$submitcount = pg_fetch_row($sqlr)[0]; -pg_free_result($sqlr); - -$userinfo = array( - 'userid' => $usero->userid, - 'username' => $usero->username, - 'nickname' => $usero->nickname, - 'headimg' => $usero->headimg, - 'aboutme' => $usero->aboutme, - 'acceptcount' => $acceptcount, - 'submitcount' => $submitcount, - 'trycount' => $trycount); - -$sqlr = pg_query_params($sqlc,'SELECT "proid",MAX("sumscore"/"summaxscore") AS "rate" FROM "submit" WHERE "userid"=$1 AND "result"<>100 GROUP BY "proid" ORDER BY "proid";', - array($userid)); - -$prolist = array(); -while($sqlo = pg_fetch_object($sqlr)){ - $prolist[] = array( - 'proid' => $sqlo->proid, - 'rate' => $sqlo->rate * 100); -} -pg_free_result($sqlr); - -pg_close($sqlc); - -echo json_encode(array( - 'userinfo' => $userinfo, - 'prolist' => $prolist -)); -?> diff --git a/web/user_login.php b/web/user_login.php deleted file mode 100644 index 1f455c2..0000000 --- a/web/user_login.php +++ /dev/null @@ -1,32 +0,0 @@ -<?php -require_once('common.php'); - -$username = $_POST['username']; -$password = $_POST['password']; - -if($username == '' || strlen($username) > 16 || $username != pg_escape_string($username)){ - exit('Eerror'); -} -if($password == '' || strlen($password) > 128){ - exit('Eerror'); -} - -$sqlc = pg_connect('host=localhost port=5432 dbname='.DB_NAME.' user='.DB_USER.' password='.DB_PASSWORD); - -$username = pg_escape_string($username); -$password = hash('sha512',$password); -$sqlr = pg_query_params($sqlc,'SELECT "userid" FROM "user" WHERE "username"=$1 AND "password"=$2 LIMIT 1;', - array($username,$password)); -if(($sqlo = pg_fetch_object($sqlr)) == null){ - pg_free_result($sqlr); - pg_close($sqlc); - exit('Eerror'); -} -$userid = $sqlo->userid; -pg_free_result($sqlr); -pg_close($sqlc); - -setcookie('userid',$userid,time() + 31536000); -setcookie('usersec',hash('sha512',$userid.SEC_SALT),time() + 31536000); -echo 'S'; -?> diff --git a/web/user_register.php b/web/user_register.php deleted file mode 100644 index a728e64..0000000 --- a/web/user_register.php +++ /dev/null @@ -1,41 +0,0 @@ -<?php -require_once('common.php'); - -$username = $_POST['username']; -$password = $_POST['password']; -$nickname = $_POST['nickname']; - -if($username == '' || strlen($username) > 16 || $username != pg_escape_string($username)){ - exit('Eusername'); -} -if($password == '' || strlen($password) > 128){ - exit('Epassword'); -} -if($nickname == '' || strlen($nickname) > 16 || $nickname != pg_escape_string($nickname)){ - exit('Enickname'); -} - -$sqlc = pg_connect('host=localhost port=5432 dbname='.DB_NAME.' user='.DB_USER.' password='.DB_PASSWORD); - -$username = pg_escape_string($username); -$sqlr = pg_query_params($sqlc,'SELECT "username" FROM "user" WHERE "username"=$1 LIMIT 1;', - array($username)); -if(pg_num_rows($sqlr) > 0){ - pg_free_result($sqlr); - pg_close($sqlc); - exit('Eexist'); -} -pg_free_result($sqlr); - -$password = hash('sha512',$password); -$sqlr = pg_query_params($sqlc,'INSERT INTO "user" ("username","password","nickname") VALUES($1,$2,$3) RETURNING "userid";', - array($username,$password,$nickname)); -$userid = pg_fetch_row($sqlr)[0]; -pg_free_result($sqlr); - -pg_close($sqlc); - -setcookie('userid',$userid,time() + 31536000); -setcookie('usersec',hash('sha512',$userid.SEC_SALT),time() + 31536000); -echo 'S'; -?> diff --git a/web/user_set.php b/web/user_set.php deleted file mode 100644 index de5ea32..0000000 --- a/web/user_set.php +++ /dev/null @@ -1,109 +0,0 @@ -<?php -require_once('common.php'); - -$userid = $_COOKIE['userid']; -$usersec = $_COOKIE['usersec']; -$type = $_POST['type']; - -if(!sec_checkuser($userid,$usersec)){ - exit('Euser'); -} -$userid = pg_escape_string($userid); - -$sqlc = pg_connect('host=localhost port=5432 dbname='.DB_NAME.' user='.DB_USER.' password='.DB_PASSWORD); - -if($type == 'userinfo'){ - $nickname = $_POST['nickname']; - $aboutme = $_POST['aboutme']; - $headimg = $_POST['headimg']; - - if($nickname == '' || strlen($nickname) > 16 || $nickname != pg_escape_string($nickname)){ - exit('Enickname'); - } - if(strlen($aboutme) > 4096){ - exit('Eaboutme'); - } - if($headimg == '' || strlen($headimg) > 4096){ - exit('Eheadimg'); - } - - $sqlr = pg_query_params($sqlc,'UPDATE "user" SET "nickname"=$1,"aboutme"=$2,"headimg"=$3 WHERE "userid"=$4;', - array($nickname,$aboutme,$headimg,$userid)); - - pg_free_result($sqlr); -}else if($type == 'squareadd'){ - $squareid = $_POST['squareid']; - - if($squareid == '' || strval(intval($squareid)) != $squareid){ - exit('Eerror'); - } - - $squareid = pg_escape_string($squareid); - $sqlr = pg_query_params($sqlc,'SELECT "squareid" FROM "square" WHERE "squareid"=$1 LIMIT 1', - array($squareid)); - - if(pg_num_rows($sqlr) == 0){ - exit('Eerror'); - pg_free_result($sqlr); - } - pg_free_result($sqlr); - - $sqlr = pg_query_params($sqlc,'SELECT array_to_string("squarelist",\',\') AS "squarelist" FROM "user" WHERE "userid"=$1 LIMIT 1;', - array($userid)); - - if(($sqlo = pg_fetch_object($sqlr)) == null){ - pg_free_result($sqlr); - exit('Eerror'); - } - $squarelist = explode(',',$sqlo->squarelist); - pg_free_result($sqlr); - - for($idx = 0;$idx < count($squarelist);$idx++){ - if($squarelist[$idx] == $squareid){ - exit('Eerror'); - } - } - $squarelist[] = $squareid; - - $sqlr = pg_query_params($sqlc,'UPDATE "user" SET "squarelist"=\'{'.implode(',',$squarelist).'}\' WHERE "userid"=$1;', - array($userid)); - - pg_free_result($sqlr); -}else if($type == 'squareremove'){ - $squareid = $_POST['squareid']; - - if($squareid == '' || strval(intval($squareid)) != $squareid){ - exit('Eerror'); - } - if($squareid == '1'){ - exit('Ecant'); - } - - $sqlr = pg_query_params($sqlc,'SELECT array_to_string("squarelist",\',\') AS "squarelist" FROM "user" WHERE "userid"=$1 LIMIT 1;', - array($userid)); - - if(($sqlo = pg_fetch_object($sqlr)) == null){ - pg_free_result($sqlr); - exit('Eerror'); - } - $squarelist = explode(',',$sqlo->squarelist); - pg_free_result($sqlr); - - for($idx = 0;$idx < count($squarelist);$idx++){ - if($squarelist[$idx] == $squareid){ - array_splice($squarelist,$idx,1); - break; - } - } - - $sqlr = pg_query_params($sqlc,'UPDATE "user" SET "squarelist"=\'{'.implode(',',$squarelist).'}\' WHERE "userid"=$1;', - array($userid)); - - pg_free_result($sqlr); -}else{ - exit('Eerror'); -} - -pg_close($sqlc); -echo 'S'; -?> diff --git a/web/viewcode.html b/web/viewcode.html deleted file mode 100644 index bb39f9e..0000000 --- a/web/viewcode.html +++ /dev/null @@ -1,54 +0,0 @@ -<html> -<head> -<script src="https://ajax.googleapis.com/ajax/libs/prototype/1.7.1.0/prototype.js"></script> - -<script type="text/javascript" src="http://codemirror.net/lib/codemirror.js"></script> -<link rel="stylesheet" href="http://codemirror.net/lib/codemirror.css"> -<link rel="stylesheet" href="http://codemirror.net/theme/lesser-dark.css"> -<script type="text/javascript" src="http://codemirror.net/mode/clike/clike.js"></script> - -<script type="text/javascript" src="nor.js"></script> -<link rel=stylesheet type="text/css" href="nor.css"> - -<script type="text/javascript"> -function init(){ - var submitid; - - submitid = nor_getparam().submitid; - - new Ajax.Request('status_viewcode.php',{ - method:'post', - parameters:{'submitid':submitid}, - onSuccess:function(transport){ - var res; - var code; - var e_codemirror; - - res = transport.responseText; - if(res[0] == 'E'){ - code = '錯誤'; - }else{ - code = JSON.parse(res).code; - } - - e_codemirror = CodeMirror(document.body,{ - mode:'text/x-c++src', - theme:'lesser-dark', - lineNumbers:true, - matchBrackets:true, - indentUnit:4, - value:code - }); - - e_codemirror.getWrapperElement().style.width = '100%'; - e_codemirror.getWrapperElement().style.height = '100%'; - e_codemirror.getScrollerElement().style.width = '100%'; - e_codemirror.getScrollerElement().style.height = '100%'; - } - }); -} -</script> -</head> -<body style="width:100%; height:100%; margin:0px 0px;" onload='init();'></body> -</html> - |