427 lines
16 KiB
PHP
427 lines
16 KiB
PHP
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<?php $page_title = "提交: $id"; ?>
|
|
<?php include('_includes/head.php') ?>
|
|
<style>
|
|
#source {
|
|
width: 90%;
|
|
height: 600px;
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<body class="mdui-drawer-body-left mdui-theme-primary-indigo mdui-theme-accent-indigo mdui-appbar-with-toolbar">
|
|
<?php include('_includes/header.php'); ?>
|
|
<?php include('_includes/sidebar.php'); ?>
|
|
<div class="mdui-container">
|
|
<div class="mdui-card">
|
|
<center>
|
|
<script src="include/checksource.js"></script>
|
|
<div class="mdui-card-primary">
|
|
<div class="mdui-card-primary-title">提交代码</div>
|
|
<div class="mdui-card-primary-subtitle">题目编号:<?php echo isset($id) ? $id : chr($pid+ord('A')) + "(Contest " + $cid + ")" ; ?></div>
|
|
</div>
|
|
<div class="mdui-card-content">
|
|
<form id="frmSolution" action="submit.php" method="post" onsubmit='do_submit()'>
|
|
<?php if (isset($id)){?>
|
|
<input id="problem_id" type="hidden" value="<?php echo $id; ?>" name="id">
|
|
<?php } else { ?>
|
|
<input id="cid" type="hidden" value="<?php echo $cid?>" name="cid">
|
|
<input id="pid" type="hidden" value="<?php echo $pid?>" name="pid">
|
|
<?php }?>
|
|
|
|
<span id="language_span">语言:
|
|
<select id="language" class="mdui-select"
|
|
name="language" onChange="reloadtemplate($(this).val());">
|
|
<?php
|
|
$lang_count=count($language_ext);
|
|
|
|
if(isset($_GET['langmask']))
|
|
$langmask=$_GET['langmask'];
|
|
else
|
|
$langmask=$OJ_LANGMASK;
|
|
|
|
$lang=(~((int)$langmask))&((1<<($lang_count))-1);
|
|
|
|
if(isset($_COOKIE['lastlang'])) $lastlang=$_COOKIE['lastlang'];
|
|
else $lastlang=0;
|
|
|
|
for($i=0;$i<$lang_count;$i++){
|
|
if($lang&(1<<$i))
|
|
echo"<option value=$i ".( $lastlang==$i?"selected":"").">".$language_name[$i]."</option>";
|
|
}
|
|
?>
|
|
</select>
|
|
</span>
|
|
|
|
<?php if($OJ_ACE_EDITOR) { ?>
|
|
<pre style="width: 90%; height: 600; font-size: 13pt;" cols=180 rows=20
|
|
id="source"><?php echo htmlentities($view_src,ENT_QUOTES,"UTF-8")?></pre>
|
|
<input type=hidden id="hide_source" name="source" value="" />
|
|
<?php } else { ?>
|
|
<textarea style="width:80%; height:600" cols=180 rows=20 id="source"
|
|
name="source"><?php echo htmlentities($view_src,ENT_QUOTES,"UTF-8")?></textarea>
|
|
<?php }?>
|
|
|
|
<?php if (isset($OJ_TEST_RUN) && $OJ_TEST_RUN){?>
|
|
<div class="mdui-row-sm-1 mdui-row-md-2 mdui-m-a-2" style="width: 80%; text-align: left;">
|
|
<div class="mdui-col mdui-textfield mdui-textfield-floating-label">
|
|
<label class="mdui-textfield-label">输入</label>
|
|
<textarea id="input_text" name="input_text" class="mdui-textfield-input"><?php echo $view_sample_input?></textarea>
|
|
</div>
|
|
<div class="mdui-col mdui-textfield mdui-textfield-floating-label">
|
|
<label class="mdui-textfield-label">输出</label>
|
|
<textarea id="out" name="out" class="mdui-textfield-input" disabled>SHOULD BE:<?php echo $view_sample_output?></textarea>
|
|
</div>
|
|
</div>
|
|
<?php } ?>
|
|
|
|
<?php if($OJ_VCODE) {?>
|
|
<div>
|
|
<div class="mdui-textfield mdui-textfield-floating-label" style="max-width: 200px; text-align: left; display: inline-block;">
|
|
<label class="mdui-textfield-label">验证码</label>
|
|
<input id="vcode-input" class="mdui-textfield-input" name="vcode" type="text" autocomplete=off required>
|
|
<div class="mdui-textfield-error">请输入验证码</div>
|
|
</div>
|
|
<img id="vcode" alt="click to change" class="mdui-m-b-4 mdui-m-x-3" onclick="this.src='vcode.php?'+Math.random()">
|
|
</div>
|
|
<?php } ?>
|
|
|
|
<div class="mdui-card-actions">
|
|
<div class="mdui-float-right" style="display: inline-block;">
|
|
<?php if (isset($OJ_ENCODE_SUBMIT) && $OJ_ENCODE_SUBMIT) {?>
|
|
<input type="hidden" id="encoded_submit_mark" name="reverse2" value="reverse">
|
|
<button type="button" class="mdui-btn mdui-ripple mdui-color-teal-500" onclick="encoded_submit();">提交</button>
|
|
<?php } else { ?>
|
|
<button type="button" class="mdui-btn mdui-ripple mdui-color-teal-500" onclick="do_submit();">提交</button>
|
|
<?php } ?>
|
|
</div>
|
|
<?php if (isset($OJ_TEST_RUN)&&$OJ_TEST_RUN){?>
|
|
<div class="mdui-float-left" style="display: inline-block;">
|
|
<button id="TestRun" class="mdui-btn mdui-ripple mdui-color-deep-purple" type="button"
|
|
onclick="do_test_run()">自测调试</button>
|
|
<div id="spinner" class="mdui-spinner" style="display: none; margin-bottom: -10px;"></div>
|
|
<span id="result"></span>
|
|
</div>
|
|
<?php }?>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</center>
|
|
</div>
|
|
</div>
|
|
<script>
|
|
var sid = 0;
|
|
var i = 0;
|
|
var using_blockly = false;
|
|
var judge_result = [<?php
|
|
foreach($judge_result as $result){
|
|
echo "'$result',";
|
|
}?> ''];
|
|
|
|
function print_result(solution_id) {
|
|
sid = solution_id;
|
|
$.ajax({
|
|
url: 'status-ajax.php?tr=1&solution_id='+solution_id,
|
|
method: 'GET',
|
|
success: function(data) {
|
|
$('#out').html(data);
|
|
}
|
|
});
|
|
}
|
|
|
|
function fresh_result(solution_id) {
|
|
var tb = window.document.getElementById('result');
|
|
if (solution_id == undefined) {
|
|
tb.innerHTML = "Vcode Error!";
|
|
if ($("#vcode") != null) {
|
|
$("#vcode").attr('src', 'vcode.php?'+Math.random());
|
|
}
|
|
return;
|
|
}
|
|
sid = solution_id;
|
|
$.ajax({
|
|
method: 'GET',
|
|
url: "status-ajax.php?solution_id=" + solution_id,
|
|
success: function(data) {
|
|
let ra = data.split(",");
|
|
var tag = "span";
|
|
|
|
if (ra[0] < 4) {
|
|
$('#spinner').show();
|
|
window.setTimeout("fresh_result(" + solution_id + ")", 2000);
|
|
} else {
|
|
if (ra[0] == 11) {
|
|
tb.innerHTML = `<a href="ceinfo.php?sid=${solution_id}" target="_blank">${judge_result[ra[0]]}</a>`;
|
|
} else {
|
|
tb.innerHTML = `<a href="reinfo.php?sid=${solution_id}" target="_blank">${judge_result[ra[0]]}</a>`;
|
|
}
|
|
|
|
tb.innerHTML += " " + "Memory:" + ra[1];
|
|
tb.innerHTML += " " + "Time:" + ra[2];
|
|
|
|
window.setTimeout("print_result(" + solution_id + ")", 2000);
|
|
count = 1;
|
|
$('#spinner').hide();
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
function getSID() {
|
|
var ofrm1 = document.getElementById("testRun").document;
|
|
var ret = "0";
|
|
if (ofrm1 == undefined) {
|
|
ofrm1 = document.getElementById("testRun").contentWindow.document;
|
|
var ff = ofrm1;
|
|
ret = ff.innerHTML;
|
|
} else {
|
|
var ie = document.frames["frame1"].document;
|
|
ret = ie.innerText;
|
|
}
|
|
return ret + "";
|
|
}
|
|
|
|
var count = 0;
|
|
|
|
function encoded_submit() {
|
|
<?php if($OJ_VCODE) { ?>
|
|
if (!$('#vcode-input').val()) {
|
|
mdui.alert('请输入验证码!');
|
|
return;
|
|
}
|
|
<?php } ?>
|
|
|
|
var mark = "<?php echo isset($id)?'problem_id':'cid';?>";
|
|
var problem_id = document.getElementById(mark);
|
|
|
|
if (typeof(editor) != "undefined") {
|
|
$("#hide_source").val(editor.getValue());
|
|
}
|
|
if (mark == 'problem_id') {
|
|
problem_id.value = '<?php if(isset($id)) echo $id?>';
|
|
}
|
|
else {
|
|
problem_id.value = '<?php if(isset($cid))echo $cid?>';
|
|
}
|
|
|
|
document.getElementById("frmSolution").target = "_self";
|
|
document.getElementById("encoded_submit_mark").name = "encoded_submit";
|
|
var source = $("#source").val();
|
|
|
|
if (typeof(editor) != "undefined") {
|
|
source = editor.getValue();
|
|
$("#hide_source").val(encode64(utf16to8(source)));
|
|
} else {
|
|
$("#source").val(encode64(utf16to8(source)));
|
|
}
|
|
document.getElementById("frmSolution").submit();
|
|
}
|
|
|
|
function do_submit() {
|
|
<?php if($OJ_VCODE) { ?>
|
|
if (!$('#vcode-input').val()) {
|
|
mdui.alert('请输入验证码!');
|
|
return;
|
|
}
|
|
<?php } ?>
|
|
|
|
<?php if($OJ_LONG_LOGIN && isset($_COOKIE[$OJ_NAME."_user"]) && isset($_COOKIE[$OJ_NAME."_check"])) { ?>
|
|
let xhr = new XMLHttpRequest();
|
|
xhr.open('GET', 'login.php', true);
|
|
xhr.send();
|
|
<?php } ?>
|
|
|
|
if (using_blockly) {
|
|
translate();
|
|
}
|
|
|
|
if (typeof(editor) != "undefined") {
|
|
$("#hide_source").val(editor.getValue());
|
|
}
|
|
|
|
var mark = "<?php echo isset($id)?'problem_id':'cid';?>";
|
|
var problem_id = document.getElementById(mark);
|
|
|
|
if (mark == 'problem_id')
|
|
problem_id.value = '<?php if (isset($id))echo $id?>';
|
|
else
|
|
problem_id.value = '<?php if (isset($cid))echo $cid?>';
|
|
|
|
document.getElementById("frmSolution").target = "_self";
|
|
document.getElementById("frmSolution").submit();
|
|
}
|
|
|
|
var handler_interval;
|
|
|
|
function do_test_run() {
|
|
<?php if($OJ_VCODE) { ?>
|
|
if (!$('#vcode-input').val()) {
|
|
mdui.alert('请输入验证码!');
|
|
return;
|
|
}
|
|
<?php } ?>
|
|
|
|
if (handler_interval) {
|
|
window.clearInterval(handler_interval);
|
|
}
|
|
|
|
var tb = window.document.getElementById('result');
|
|
var source = $("#source").val();
|
|
|
|
if (typeof(editor) != "undefined") {
|
|
source = editor.getValue();
|
|
$("#hide_source").val(source);
|
|
}
|
|
|
|
if (source.length < 5) {
|
|
mdui.alert("这么短的代码能行吗?");
|
|
return;
|
|
}
|
|
|
|
if (tb != null) {
|
|
$('#spinner').show();
|
|
}
|
|
|
|
var mark = "<?php echo isset($id) ? 'problem_id' : 'cid'; ?>";
|
|
var problem_id = document.getElementById(mark);
|
|
problem_id.value = -problem_id.value;
|
|
document.getElementById("frmSolution").target = "testRun";
|
|
$.ajax({
|
|
method: 'POST',
|
|
url: 'submit.php?ajax',
|
|
data: $("#frmSolution").serialize(),
|
|
success: function(data) {
|
|
fresh_result(data);
|
|
}
|
|
})
|
|
$("#Submit").attr('disabled', 'disabled');
|
|
$("#TestRun").attr('disabled', 'disabled');
|
|
problem_id.value = -problem_id.value;
|
|
count = 20;
|
|
handler_interval = window.setTimeout("resume();", 1000);
|
|
}
|
|
|
|
function resume() {
|
|
count--;
|
|
var s = $("#Submit");
|
|
var t = $("#TestRun");
|
|
if (count < 0) {
|
|
s.removeAttr('disabled');
|
|
if (t != null) {
|
|
t.removeAttr('disabled');
|
|
}
|
|
|
|
s.val("提交");
|
|
|
|
if (t != null) {
|
|
t.val("自测调试");
|
|
}
|
|
|
|
if (handler_interval) {
|
|
window.clearInterval(handler_interval);
|
|
}
|
|
|
|
if ($("#vcode") != null) {
|
|
$("#vcode").attr('src', 'vcode.php?'+Math.random());
|
|
}
|
|
} else {
|
|
s.val("提交 (" + count + ")");
|
|
|
|
if (t != null) {
|
|
t.val("自测调试 (" + count + ")");
|
|
}
|
|
|
|
window.setTimeout("resume();", 1000);
|
|
}
|
|
}
|
|
|
|
function switchLang(lang) {
|
|
var langnames = new Array("c_cpp", "c_cpp", "pascal", "java", "ruby", "sh", "python", "php", "perl", "csharp",
|
|
"objectivec", "vbscript", "scheme", "c_cpp", "c_cpp", "lua", "javascript", "golang");
|
|
editor.getSession().setMode("ace/mode/" + langnames[lang]);
|
|
}
|
|
|
|
function reloadtemplate(lang) {
|
|
console.log("lang=" + lang);
|
|
document.cookie = "lastlang=" + lang;
|
|
//alert(document.cookie);
|
|
var url = window.location.href;
|
|
var i = url.indexOf("sid=");
|
|
if (i != -1) url = url.substring(0, i - 1);
|
|
|
|
<?php if (isset($OJ_APPENDCODE)&&$OJ_APPENDCODE){?>
|
|
if (confirm("<?php echo $MSG_LOAD_TEMPLATE_CONFIRM?>"))
|
|
document.location.href = url;
|
|
<?php }?>
|
|
switchLang(lang);
|
|
}
|
|
|
|
|
|
function openBlockly() {
|
|
$("#frame_source").hide();
|
|
$("#TestRun").hide();
|
|
$("#language")[0].scrollIntoView();
|
|
$("#language").val(6).hide();
|
|
$("#language_span").hide();
|
|
$("#EditAreaArroundInfos_source").hide();
|
|
$('#blockly').html(
|
|
'<iframe name=\'frmBlockly\' width=90% height=580 src=\'blockly/demos/code/index.html\'></iframe>');
|
|
$("#blockly_loader").hide();
|
|
$("#transrun").show();
|
|
$("#Submit").prop('disabled', true);
|
|
using_blockly = true;
|
|
}
|
|
|
|
function translate() {
|
|
var blockly = $(window.frames['frmBlockly'].document);
|
|
var tb = blockly.find('td[id=tab_python]');
|
|
var python = blockly.find('pre[id=content_python]');
|
|
tb.click();
|
|
blockly.find('td[id=tab_blocks]').click();
|
|
if (typeof(editor) != "undefined") editor.setValue(python.text());
|
|
else $("#source").val(python.text());
|
|
$("#language").val(6);
|
|
}
|
|
|
|
function loadFromBlockly() {
|
|
translate();
|
|
do_test_run();
|
|
$("#frame_source").hide();
|
|
// $("#Submit").prop('disabled', false);
|
|
}
|
|
</script>
|
|
|
|
<script language="Javascript" type="text/javascript" src="include/base64.js"></script>
|
|
|
|
<?php if($OJ_ACE_EDITOR){ ?>
|
|
<script src="include/vditor-adapter.js"></script>
|
|
<script>
|
|
var editor = HustOJVditor.createDeferredCodeEditor({
|
|
container: "source",
|
|
hiddenField: "hide_source",
|
|
theme: "ace/theme/chrome",
|
|
fontSize: 20
|
|
});
|
|
switchLang(<?php echo isset($lastlang) ? $lastlang : 0 ; ?>);
|
|
editor.setOptions({
|
|
enableBasicAutocompletion: true,
|
|
enableSnippets: true,
|
|
enableLiveAutocompletion: false,
|
|
fontFamily: "Consolas",
|
|
fontSize: "20px"
|
|
});
|
|
</script>
|
|
<?php }?>
|
|
|
|
<?php if ($OJ_VCODE) { ?>
|
|
<script>
|
|
document.addEventListener('DOMContentLoaded', (event) => { $("#vcode").attr("src", "vcode.php?" + Math.random()); });
|
|
</script>
|
|
<?php } ?>
|
|
</body>
|
|
|
|
</html>
|