Files
hustoj/web/template/syzoj/problemset.php
2025-08-01 14:01:36 +08:00

283 lines
12 KiB
PHP

<?php $show_title = "$MSG_PROBLEMS - $OJ_NAME"; ?>
<?php include("template/$OJ_TEMPLATE/header.php"); ?>
<div class="padding">
<div class="ui grid" style="margin-bottom: 10px; ">
<div class="row" style="white-space: nowrap; ">
<div class="seven wide column">
<form action="" method="get">
<div class="ui search" style="width: 160px; height: 28px; margin-top: -5.3px; float:left; margin-right: 10px;">
<div class="ui left icon input" style="width: 100%; ">
<input class="prompt" style="width: 100%; " type="text" placeholder="<?php echo $MSG_TITLE; ?> …"
name="search" value="<?php if (isset($_GET['search']))
echo htmlentities($_GET['search'], ENT_QUOTES, 'UTF-8') ?>">
<i class="search icon"></i>
</div>
<div class="results" style="width: 100%; "></div>
</div>
<!-- 添加难度按钮 -->
<div style="display: inline-block; margin-left: 10px; vertical-align: top;">
<?php for ($i = 1; $i <= 8; $i++): ?>
<button
type="button"
class="ui mini basic button difficulty-btn"
data-difficulty="<?php echo $i; ?>"
style="margin-right: 5px; margin-bottom: 5px;"
>
难度<?php echo $i; ?>
</button>
<?php endfor; ?>
</div>
<?php if (isset($_SESSION[$OJ_NAME . '_' . 'administrator'])): ?>
<div class="ui search" style="width: 120px; height: 28px; margin-top: -5.3px; display: inline-block;">
<div class="ui icon input" style="width: 100%; ">
<input class="prompt" style="width: 100%; " type="text" placeholder="用户ID" name="query_user_id" value="<?php if (isset($_GET['query_user_id']))
echo htmlentities($_GET['query_user_id'], ENT_QUOTES, 'UTF-8') ?>">
<i class="search icon"></i>
</div>
<div class="results" style="width: 100%; "></div>
</div>
<?php endif; ?>
<button type="submit" class="ui mini button" style="display: none;">搜索</button>
</form>
</div>
<div class="nine wide right aligned column">
<div class="ui toggle checkbox" id="show_tag">
<style id="show_tag_style"></style>
<script>
if (localStorage.getItem('show_tag') != '0') {
document.write('<input type="checkbox" checked>');
document.getElementById('show_tag_style').innerHTML = '.show_tag_controled { white-space: nowrap; overflow: hidden; }';
} else {
document.write('<input type="checkbox">');
document.getElementById('show_tag_style').innerHTML = '.show_tag_controled { width: 0; white-space: nowrap; overflow: hidden; }';
}
</script>
<script>
$(function () {
$('#show_tag').checkbox('setting', 'onChange', function () {
let checked = $('#show_tag').checkbox('is checked');
localStorage.setItem('show_tag', checked ? '1' : '0');
if (checked) {
document.getElementById('show_tag_style').innerHTML = '.show_tag_controled { white-space: nowrap; overflow: hidden; }';
} else {
document.getElementById('show_tag_style').innerHTML = '.show_tag_controled { width: 0; white-space: nowrap; overflow: hidden; }';
}
});
});
</script>
<label><?php echo $MSG_SHOW_TAGS; ?></label>
</div>
<div style="margin-left: 10px; display: inline-block; ">
<a style="margin-left: 10px; " href="category.php" class="ui labeled icon mini green button"><i
class="plus icon"></i> <?php echo $MSG_SHOW_ALL_TAGS; ?></a>
</div>
</div>
</div>
</div>
<script>
// 添加难度按钮点击事件
document.querySelectorAll('.difficulty-btn').forEach(button => {
button.addEventListener('click', function() {
const difficulty = this.getAttribute('data-difficulty');
// 创建隐藏表单提交
const form = document.createElement('form');
form.method = 'get';
form.action = '';
// 添加难度参数
const input = document.createElement('input');
input.type = 'hidden';
input.name = 'difficulty';
input.value = difficulty;
form.appendChild(input);
// 保留现有搜索参数
const existingSearch = document.querySelector('input[name="search"]');
if (existingSearch && existingSearch.value) {
const searchInput = document.createElement('input');
searchInput.type = 'hidden';
searchInput.name = 'search';
searchInput.value = existingSearch.value;
form.appendChild(searchInput);
}
// 提交表单
document.body.appendChild(form);
form.submit();
});
});
</script>
<?php if (!isset($_GET['list'])) { ?>
<div style="margin-bottom: 30px; ">
<?php
if (!isset($page))
$page = 1;
$page = intval($page);
$section = 8;
$start = $page > $section ? $page - $section : 1;
$end = $page + $section > $view_total_page ? $view_total_page : $page + $section;
$query_user_id = $_GET['query_user_id'];
function get_query_user_id($query_user_id)
{
if (!isset($query_user_id))
return "";
return "&query_user_id=" . $query_user_id;
}
function get_href($page, $postfix, $query_user_id)
{
return "problemset.php?page=" . $page .
htmlentities($postfix, ENT_QUOTES, 'UTF-8') .
get_query_user_id($query_user_id);
}
?>
<div style="text-align: center; ">
<div class="ui pagination menu" style="box-shadow: none; ">
<a class="<?php if ($page == 1)
echo "disabled "; ?>icon item" href="<?php if ($page <> 1)
echo get_href(1, $postfix, $query_user_id); ?>" id="page_first">
<i class="angle double left icon"></i>
</a>
<a class="<?php if ($page == 1)
echo "disabled "; ?>icon item" href="<?php if ($page <> 1)
echo get_href($page - 1, $postfix, $query_user_id); ?>" id="page_prev">
<i class="angle left icon"></i>
</a>
<?php
for ($i = $start; $i <= $end; $i++) {
echo "<a class=\"" . ($page == $i ? "active " : "") . "item\" href=\"" . get_href($i, $postfix, $query_user_id) . "\">" . $i . "</a>";
}
?>
<a class="<?php if ($page == $view_total_page)
echo "disabled "; ?> icon item" href="<?php if ($page <> $view_total_page)
echo get_href($page + 1, $postfix, $query_user_id); ?>" id="page_next">
<i class="angle right icon"></i>
</a>
<a class="<?php if ($page == $view_total_page)
echo "disabled "; ?> icon item" href="<?php if ($page <> $view_total_page)
echo get_href($view_total_page, $postfix, $query_user_id); ?>" id="page_last">
<i class="angle double right icon"></i>
</a>
</div>
</div>
</div>
<?php } ?>
<table class="ui very basic center aligned table">
<thead>
<tr>
<?php if (isset($_SESSION[$OJ_NAME . '_' . 'user_id'])) { ?>
<th class="one wide"><?php echo $MSG_STATUS ?></th>
<?php } ?>
<th class="one wide"><?php echo $MSG_PROBLEM_ID ?></th>
<th class="left aligned"><?php echo $MSG_TITLE ?></th>
<th class="one wide"><?php echo $MSG_SOVLED . "/" . $MSG_SUBMIT ?></th>
<th class="one wide"><?php echo $MSG_PASS_RATE ?></th>
</tr>
</thead>
<tbody>
<?php
$color = array("blue", "teal", "orange", "pink", "olive", "red", "yellow", "green", "purple");
$tcolor = 0;
$i = 0;
foreach ($result as $row) {
echo "<tr>";
if (isset($_SESSION[$OJ_NAME . '_' . 'user_id'])) {
if (isset($sub_arr[$row['problem_id']])) {
if (isset($acc_arr[$row['problem_id']]))
echo "<td><span class=\"status accepted\"><i class=\"checkmark icon\"></i></span></td>";
else
echo "<td><span class=\"status wrong_answer\"><i class=\"remove icon\"></i></span></td>";
} else {
echo "<td><span class=\"status\"><i class=\"icon\"></i></span></td>";
}
}
echo "<td><b>" . $row['problem_id'] . "</b></td>";
echo "<td class=\"left aligned\">";
echo "<a style=\"vertical-align: middle; \" href=\"problem.php?id=" . $row['problem_id'] . "\">";
echo $row['title'];
echo "</a>";
if ($row['defunct'] == 'Y') {
echo "<a href=admin/problem_df_change.php?id=" . $row['problem_id'] . "&getkey=" . $_SESSION[$OJ_NAME . '_' . 'getkey'] . ">" . ("<span class=\"ui tiny red label\">未公开</span>") . "</a>";
}
echo "<div class=\"show_tag_controled\" style=\"float: right; \">";
//echo "<span class=\"ui header\">";
echo $view_problemset[$i][3];
//echo "</span></div>";
echo "</div>";
echo "</td>";
echo "<td><a href=\"status.php?problem_id=" . $row['problem_id'] . "&jresult=4\">" . $row['accepted'] . "/" . $row['submit'] . "</a></td>";
// echo "<td><a href='status.php?problem_id=".$row['problem_id']."'>".$row['submit']."</a></td>";
if ($row['submit'] == 0) {
echo '<td><div class="progress" style="margin-bottom:-20px; "><div class="progress-bar progress-bar-danger" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" style="width:0%;">0.000%</div></div></td>';
} else {
$percentage = round(100 * $row['accepted'] / $row['submit'], 3);
echo '<td><div class="progress" style="margin-bottom:-20px;"><div class="progress-bar progress-bar-success progress-bar-striped" role="progressbar" aria-valuenow="' . $percentage . '" aria-valuemin="0" aria-valuemax="100" style="width:' . $percentage . '%;">' . $percentage . '%</div></div></td>';
}
echo "</tr>";
$i++;
}
?>
</tbody>
</table><br>
<?php if (!isset($_GET['list'])) { ?>
<div style="margin-bottom: 30px; ">
<div style="text-align: center; ">
<div class="ui pagination menu" style="box-shadow: none; ">
<a class="<?php if ($page == 1)
echo "disabled "; ?>icon item" href="<?php if ($page <> 1)
echo get_href(1, $postfix, $query_user_id); ?>" id="page_first">
<i class="angle double left icon"></i>
</a>
<a class="<?php if ($page == 1)
echo "disabled "; ?>icon item" href="<?php if ($page <> 1)
echo get_href($page - 1, $postfix, $query_user_id); ?>" id="page_prev">
<i class="angle left icon"></i>
</a>
<?php
for ($i = $start; $i <= $end; $i++) {
echo "<a class=\"" . ($page == $i ? "active " : "") . "item\" href=\"" . get_href($i, $postfix, $query_user_id) . "\">" . $i . "</a>";
}
?>
<a class="<?php if ($page == $view_total_page)
echo "disabled "; ?> icon item" href="<?php if ($page <> $view_total_page)
echo get_href($page + 1, $postfix, $query_user_id); ?>" id="page_next">
<i class="angle right icon"></i>
</a>
<a class="<?php if ($page == $view_total_page)
echo "disabled "; ?> icon item" href="<?php if ($page <> $view_total_page)
echo get_href($view_total_page, $postfix, $query_user_id); ?>" id="page_last">
<i class="angle double right icon"></i>
</a>
</div>
</div>
<?php } ?>
<script type="text/javascript" src="include/jquery.tablesorter.js"></script>
</div>
<?php include("template/$OJ_TEMPLATE/footer.php"); ?>