✨ feat: 优化管理员菜单样式和交互逻辑
This commit is contained in:
@@ -11,11 +11,106 @@
|
||||
<head>
|
||||
<title><?php echo $MSG_ADMIN?></title>
|
||||
<link rel="stylesheet" href="<?php echo $OJ_CDN_URL.$path_fix."template/$OJ_TEMPLATE/"?>bootstrap-theme.min.css">
|
||||
<style>
|
||||
.admin-menu {
|
||||
margin-top: 0.5rem;
|
||||
}
|
||||
|
||||
.admin-menu .btn-group {
|
||||
display: block;
|
||||
margin-bottom: 0.4rem;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.admin-menu .dropdown-toggle {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.admin-menu .dropdown-menu {
|
||||
display: none;
|
||||
position: static;
|
||||
float: none;
|
||||
min-width: 0;
|
||||
width: 100%;
|
||||
margin-top: 0.25rem;
|
||||
padding: 0.2rem 0;
|
||||
border: 0;
|
||||
box-shadow: none;
|
||||
background: transparent;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.admin-menu .dropdown-menu.show {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.admin-menu .dropdown-item {
|
||||
display: block;
|
||||
margin: 0.15rem 0;
|
||||
padding: 0.25rem 0.5rem;
|
||||
border-radius: 4px;
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.admin-menu .dropdown-item:hover,
|
||||
.admin-menu .dropdown-item:focus {
|
||||
background: rgba(0, 0, 0, 0.04);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.admin-menu .caret {
|
||||
display: inline-block;
|
||||
margin-left: 0.35rem;
|
||||
width: 0;
|
||||
height: 0;
|
||||
vertical-align: middle;
|
||||
border-top: 0.35em solid currentColor;
|
||||
border-right: 0.3em solid transparent;
|
||||
border-left: 0.3em solid transparent;
|
||||
transition: transform 0.15s ease;
|
||||
}
|
||||
|
||||
.admin-menu .dropdown-toggle[aria-expanded="true"] .caret {
|
||||
transform: rotate(180deg);
|
||||
}
|
||||
</style>
|
||||
<!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
|
||||
<script src="<?php echo $OJ_CDN_URL.$path_fix."template/$OJ_TEMPLATE/"?>jquery.min.js"></script>
|
||||
<script>
|
||||
document.addEventListener('DOMContentLoaded', function () {
|
||||
var toggles = document.querySelectorAll('.admin-menu-toggle');
|
||||
|
||||
<!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
|
||||
<script src="<?php echo $OJ_CDN_URL.$path_fix."template/$OJ_TEMPLATE/"?>bootstrap.min.js"></script>
|
||||
function closeMenus(exceptToggle) {
|
||||
toggles.forEach(function (toggle) {
|
||||
var menu = toggle.parentElement.querySelector('.dropdown-menu');
|
||||
var isCurrent = toggle === exceptToggle;
|
||||
toggle.setAttribute('aria-expanded', isCurrent ? 'true' : 'false');
|
||||
if (menu) {
|
||||
menu.classList.toggle('show', isCurrent);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
toggles.forEach(function (toggle) {
|
||||
toggle.addEventListener('click', function (event) {
|
||||
event.preventDefault();
|
||||
var expanded = toggle.getAttribute('aria-expanded') === 'true';
|
||||
if (expanded) {
|
||||
closeMenus(null);
|
||||
} else {
|
||||
closeMenus(toggle);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
document.addEventListener('click', function (event) {
|
||||
if (!event.target.closest('.admin-menu')) {
|
||||
closeMenus(null);
|
||||
}
|
||||
});
|
||||
});
|
||||
</script>
|
||||
|
||||
</head>
|
||||
|
||||
@@ -26,11 +121,11 @@
|
||||
|
||||
<a class='btn btn-sm' href="../status.php" target="_top" title="<?php echo $MSG_HELP_SEEOJ?>"><b><?php echo $MSG_SEEOJ?></b></a><br>
|
||||
|
||||
<div>
|
||||
<div class="admin-menu">
|
||||
<div class="btn-group-vertical" role="menu">
|
||||
|
||||
<div class="btn-group" role="menu">
|
||||
<button type="button" class="btn btn-secondary dropdown-toggle btn-sm" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<button type="button" class="btn btn-secondary dropdown-toggle btn-sm admin-menu-toggle" aria-haspopup="true" aria-expanded="false">
|
||||
<?php echo $MSG_NEWS."-".$MSG_ADMIN ?> <span class="caret"></span>
|
||||
</button>
|
||||
<div class="dropdown-menu">
|
||||
@@ -44,7 +139,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="btn-group" role="menu">
|
||||
<button type="button" class="btn btn-secondary dropdown-toggle btn-sm" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<button type="button" class="btn btn-secondary dropdown-toggle btn-sm admin-menu-toggle" aria-haspopup="true" aria-expanded="false">
|
||||
<?php echo $MSG_USER."-".$MSG_ADMIN ?> <span class="caret"></span>
|
||||
</button>
|
||||
<div class="dropdown-menu">
|
||||
@@ -67,7 +162,7 @@
|
||||
</div>
|
||||
|
||||
<div class="btn-group" role="menu">
|
||||
<button type="button" class="btn btn-secondary dropdown-toggle btn-sm" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<button type="button" class="btn btn-secondary dropdown-toggle btn-sm admin-menu-toggle" aria-haspopup="true" aria-expanded="false">
|
||||
<?php echo $MSG_PROBLEM."-".$MSG_ADMIN ?> <span class="caret"></span>
|
||||
</button>
|
||||
<div class="dropdown-menu">
|
||||
@@ -84,7 +179,7 @@
|
||||
|
||||
|
||||
<div class="btn-group" role="menu">
|
||||
<button type="button" class="btn btn-secondary dropdown-toggle btn-sm" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<button type="button" class="btn btn-secondary dropdown-toggle btn-sm admin-menu-toggle" aria-haspopup="true" aria-expanded="false">
|
||||
<?php echo $MSG_CONTEST."-".$MSG_ADMIN ?> <span class="caret"></span>
|
||||
</button>
|
||||
<div class="dropdown-menu">
|
||||
@@ -101,7 +196,7 @@
|
||||
|
||||
<?php if (isset($_SESSION[$OJ_NAME.'_'.'administrator'])){?>
|
||||
<div class="btn-group" role="menu">
|
||||
<button type="button" class="btn btn-secondary dropdown-toggle btn-sm" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<button type="button" class="btn btn-secondary dropdown-toggle btn-sm admin-menu-toggle" aria-haspopup="true" aria-expanded="false">
|
||||
<?php echo $MSG_SYSTEM."-".$MSG_ADMIN ?> <span class="caret"></span>
|
||||
</button>
|
||||
<div class="dropdown-menu">
|
||||
|
||||
Reference in New Issue
Block a user