Compare commits

...
3 Commits
Author SHA1 Message Date
jieer 44812f70e3 Unify compile error details under reinfo 2026-07-23 10:56:33 +08:00
jieer 8420e0529f Tidy submit page toolbar 2026-07-23 10:54:37 +08:00
jieer 99157526a8 Fix reinfo contest resubmit links 2026-07-23 10:54:37 +08:00
6 changed files with 46 additions and 98 deletions
-71
View File
@@ -1,71 +0,0 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>Submit Ace Smoke</title>
<style>
body {
margin: 0;
padding: 24px;
background: #f4f7fb;
font-family: "Segoe UI", sans-serif;
}
#source {
width: 100%;
height: 320px;
border: 1px solid #d4d4d5;
border-radius: 6px;
}
#hide_source {
width: 100%;
height: 140px;
margin-top: 16px;
}
</style>
</head>
<body>
<pre id="source">#include &lt;bits/stdc++.h&gt;
int main() {
return 0;
}
</pre>
<textarea id="hide_source"></textarea>
<script src="../web/ace/ace.js"></script>
<script src="../web/ace/ext-language_tools.js"></script>
<script>
ace.config.set('basePath', '../web/ace');
var sourceElement = document.getElementById('source');
var hiddenSourceElement = document.getElementById('hide_source');
var initialSourceCode = sourceElement ? (sourceElement.textContent || sourceElement.innerText || '') : '';
var editor = ace.edit('source');
editor.setTheme('ace/theme/xcode');
editor.setShowPrintMargin(false);
editor.setBehavioursEnabled(true);
editor.session.setUseWrapMode(true);
editor.session.setTabSize(4);
editor.session.setUseSoftTabs(true);
editor.setOptions({
enableBasicAutocompletion: true,
enableSnippets: true,
enableLiveAutocompletion: true,
fontSize: '18px'
});
editor.setValue(initialSourceCode, -1);
function syncEditorSource() {
if (hiddenSourceElement) {
hiddenSourceElement.value = editor.getValue();
}
}
editor.getSession().on('change', syncEditorSource);
syncEditorSource();
editor.getSession().setMode('ace/mode/c_cpp');
window.smokeEditor = editor;
</script>
</body>
</html>
+24 -11
View File
@@ -53,6 +53,14 @@ $result = pdo_query($sql,$id);
$row = $result[0];
$lang = $row['language'];
$contest_id = intval($row['contest_id']);
$problem_id = intval($row['problem_id']);
$problem_num = intval($row['num']);
$view_resubmit_url = "submitpage.php?id=".$problem_id."&sid=".intval($id);
$view_problem_url = "problem.php?id=".$problem_id;
if($contest_id > 0){
$view_resubmit_url = "submitpage.php?cid=".$contest_id."&pid=".$problem_num."&sid=".intval($id);
$view_problem_url = "problem.php?cid=".$contest_id."&pid=".$problem_num;
}
$isRE = $row['result']==10;
$isAC = $row['result']==4 ;
$mark=$row['pass_rate']*100;
@@ -173,9 +181,10 @@ function parse_diff_blocks($text) {
return $blocks;
}
$is_compile_error = intval($row['result']) == 11;
$view_reinfo = "";
$view_reinfo_raw = ""; // 原始(管理员/有权限者看)
$view_reinfo_summary = ""; // 折叠后(普通用户看)
$view_reinfo_raw = ""; // 原始(管理员/有权限者看)
$view_reinfo_summary = ""; // 折叠后(普通用户看)
$view_reinfo_dedup_count = 0; // 折叠掉的测试点数
$verdict_color_class = "blue"; // semantic ui color: green/red/orange/yellow/grey
$result_icon = "info circle";
@@ -187,8 +196,10 @@ if($ok){
$view_mail_link= "<a href='mail.php?to_user=".htmlentities($row['user_id'],ENT_QUOTES,"UTF-8")."&title=$MSG_SUBMIT $id'>Mail the auther</a>";
}
$sql = "SELECT `error` FROM `runtimeinfo` WHERE `solution_id`=?";
$rt = pdo_query($sql,$id);
$sql = $is_compile_error
? "SELECT `error` FROM `compileinfo` WHERE `solution_id`=?"
: "SELECT `error` FROM `runtimeinfo` WHERE `solution_id`=?";
$rt = pdo_query($sql,$id);
$raw_error = "";
if(isset($rt[0])){
$raw_error = $rt[0]['error'];
@@ -238,8 +249,8 @@ if($ok){
case 10: // RE
$verdict_tip = "程序运行中发生错误(Runtime Error";
break;
case 11: // CE
$verdict_tip = "编译错误(Compile Error)。请查看编译信息";
case 11: // CE
$verdict_tip = "编译错误(Compile Error)。请查看下方编译信息。";
break;
case 13: // TR (test run)
$verdict_tip = "测试运行完成(Test Run";
@@ -250,10 +261,12 @@ if($ok){
// === 阶段 3:原始错误处理(syscall 提示 vs 占位符修复)===
$view_reinfo_raw = $raw_error;
if (trim($raw_error) === "") {
// TLE/MLE/OLE 时 runtimeinfo 通常为空
$view_reinfo_summary = "";
} else {
if (trim($raw_error) === "") {
// TLE/MLE/OLE 时 runtimeinfo 通常为空
$view_reinfo_summary = "";
} elseif ($is_compile_error) {
$view_reinfo_summary = $raw_error;
} else {
// 含 "PASS" 不再显示 "error3" 占位
// 含 "php" 不再显示 "error2" 占位(用 generic 提示)
if (strpos($raw_error, "php") !== false) {
@@ -340,7 +353,7 @@ else{
/////////////////////////Template
if(!isset($_SESSION[$OJ_NAME.'_'.'source_browser']) && $OJ_SHOW_DIFF==false){
if(!$is_compile_error && !isset($_SESSION[$OJ_NAME.'_'.'source_browser']) && $OJ_SHOW_DIFF==false){
$view_errors = $MSG_WARNING_ACCESS_DENIED;
require("template/".$OJ_TEMPLATE."/error.php");
exit(0);
+1 -2
View File
@@ -488,7 +488,7 @@ for ($i=0; $i<$rows_cnt; $i++) {
$view_status[$i][3] = "<span class='hidden' style='display:none' result=".$row['result']."></span>";
if (intval($row['result'])==11 && ((isset($_SESSION[$OJ_NAME.'_'.'user_id']) && $row['user_id']==$_SESSION[$OJ_NAME.'_'.'user_id']) || isset($_SESSION[$OJ_NAME.'_'.'source_browser']))) {
$view_status[$i][3] .= "<a href=ceinfo.php?sid=".$row['solution_id']." class='".$judge_color[$row['result']]."' title='$MSG_Tips'>".$MSG_Compile_Error."</a>";
$view_status[$i][3] .= "<a href=reinfo.php?sid=".$row['solution_id']." class='".$judge_color[$row['result']]."' title='$MSG_Tips'>".$MSG_Compile_Error."</a>";
}
else if ((((intval($row['result'])==8 || intval($row['result'])==7 || intval($row['result'])==5 || intval($row['result'])==6) && ($OJ_SHOW_DIFF || isset($_SESSION[$OJ_NAME.'_'.'source_browser']))) || $row['result']==10 || $row['result']==13) && ((isset($_SESSION[$OJ_NAME.'_'.'user_id']) && $row['user_id']==$_SESSION[$OJ_NAME.'_'.'user_id']) || isset($_SESSION[$OJ_NAME.'_'.'source_browser']))) {
$view_status[$i][3] .= "<a href=reinfo.php?sid=".$row['solution_id']." class='".$judge_color[$row['result']]."' title='$MSG_Tips'>".$judge_result[$row['result']].$mark."</a>";
@@ -625,4 +625,3 @@ if( $need_refresh_remote && isset($OJ_REMOTE_JUDGE)&&$OJ_REMOTE_JUDGE&& (time()-
<?php
}
?>
+3 -3
View File
@@ -95,9 +95,9 @@ function fresh_result(solution_id) {
case 10:
row.cells[4].innerHTML = "<a href=reinfo.php?sid="+solution_id+" class='"+judge_color[ra[0]]+"'>"+judge_result[ra[0]]+" :"+(oj_mark=='percent'?100-ra[4].trim():ra[4].trim())+"%</a>";
break;
case 11:
row.cells[4].innerHTML = "<a href=ceinfo.php?sid="+solution_id+" class='"+judge_color[ra[0]]+"'>"+judge_result[ra[0]]+"</a>";
break;
case 11:
row.cells[4].innerHTML = "<a href=reinfo.php?sid="+solution_id+" class='"+judge_color[ra[0]]+"'>"+judge_result[ra[0]]+"</a>";
break;
default:
// row.cells[4].innerHTML = "<span class='"+judge_color[ra[0]]+"'>"+judge_result[ra[0]]+" AC:"+ra[4].trim()+"%</span>";
}
+2 -2
View File
@@ -358,13 +358,13 @@ i.icon.spinning {
<?php echo isset($MSG_QUICK_ACTIONS) ? $MSG_QUICK_ACTIONS : '快捷操作'; ?>
</div>
<div class="ui buttons">
<a class="ui blue button" href="submitpage.php?id=<?php echo intval($row['problem_id']) ?>">
<a class="ui blue button" href="<?php echo htmlspecialchars($view_resubmit_url, ENT_QUOTES, 'UTF-8') ?>">
<i class="edit icon"></i> <?php echo isset($MSG_RESUBMIT) ? $MSG_RESUBMIT : '重新提交'; ?>
</a>
<a class="ui button" href="showsource.php?id=<?php echo intval($id) ?>">
<i class="code icon"></i> <?php echo isset($MSG_VIEW_SOURCE) ? $MSG_VIEW_SOURCE : '查看我的代码'; ?>
</a>
<a class="ui button" href="problem.php?id=<?php echo intval($row['problem_id']) ?>">
<a class="ui button" href="<?php echo htmlspecialchars($view_problem_url, ENT_QUOTES, 'UTF-8') ?>">
<i class="info circle icon"></i> <?php echo isset($MSG_VIEW_PROBLEM) ? $MSG_VIEW_PROBLEM : '查看题目'; ?>
</a>
+16 -9
View File
@@ -54,6 +54,10 @@
gap: 8px;
}
.submit-toolbar .submit-button-group {
margin-left: auto;
}
.submit-toolbar .field-group > label {
margin: 0;
font-weight: 600;
@@ -371,6 +375,11 @@
.submit-title {
font-size: 1.2em;
}
.submit-toolbar .submit-button-group {
margin-left: 0;
width: 100%;
justify-content: flex-end;
}
#source {
height: 350px;
}
@@ -399,14 +408,6 @@
<script src="<?php echo $OJ_CDN_URL?>include/checksource.js"></script>
<form id="frmSolution" action="submit.php<?php if (isset($_GET['spa'])) echo "?spa" ?>" method="post" onsubmit="do_submit();return false;" enctype="multipart/form-data">
<div class="submit-actions submit-top-actions">
<div class="actions-left">
<button id="Submit" type="button" class="btn btn-primary" onclick="do_submit();">
<i class="paper plane icon"></i> <?php echo $MSG_SUBMIT?>
</button>
</div>
</div>
<div class="submit-toolbar">
<?php if (!isset($_GET['spa']) || $solution_name ) {?>
<div class="field-group">
@@ -443,6 +444,12 @@
<img id="vcode-img" alt="click to change" src="vcode.php" onclick="this.src='vcode.php?'+Math.random()">
</div>
<?php }?>
<div class="field-group submit-button-group">
<button id="Submit" type="button" class="btn btn-primary" onclick="do_submit();">
<i class="paper plane icon"></i> <?php echo $MSG_SUBMIT?>
</button>
</div>
</div>
<?php
@@ -594,7 +601,7 @@ function fresh_result(solution_id)
else tag="a";
{
if(ra[0]==11||ra[0]>15)
tb.innerHTML="<"+tag+" href='ceinfo.php?sid="+solution_id+"' class='badge badge-info' target=_blank>"+judge_result[ra[0]]+"</"+tag+">";
tb.innerHTML="<"+tag+" href='reinfo.php?sid="+solution_id+"' class='badge badge-info' target=_blank>"+judge_result[ra[0]]+"</"+tag+">";
else
tb.innerHTML="<"+tag+" href='reinfo.php?sid="+solution_id+"' class='badge badge-info' target=_blank>"+judge_result[ra[0]]+"AC:"+ra[4]+"</"+tag+">";
}