S2OJ/web/app/views/page-header.php

341 lines
13 KiB
PHP
Raw Normal View History

2016-07-18 16:39:37 +00:00
<?php
2022-09-23 13:00:17 +00:00
if (!isset($REQUIRE_LIB['bootstrap5'])) {
$new_user_msg_num = DB::selectCount("select count(*) from user_msg where receiver = '".Auth::id()."' and read_time is null");
$new_system_msg_num = DB::selectCount("select count(*) from user_system_msg where receiver = '".Auth::id()."' and read_time is null");
$new_msg_tot = $new_user_msg_num + $new_system_msg_num;
if ($new_user_msg_num == 0) {
$new_user_msg_num_html = '';
} else {
$new_user_msg_num_html = '<span class="badge badge-pill badge-secondary">'.$new_user_msg_num.'</span>';
}
if ($new_system_msg_num == 0) {
$new_system_msg_num_html = '';
} else {
$new_system_msg_num_html = '<span class="badge badge-pill badge-secondary">'.$new_system_msg_num.'</span>';
}
if ($new_msg_tot == 0) {
$new_msg_tot_html = '';
} else {
$new_msg_tot_html = '<sup><span class="badge badge-pill badge-secondary">'.$new_msg_tot.'</span></sup>';
}
2016-07-18 16:39:37 +00:00
}
2022-09-23 13:00:17 +00:00
2016-07-18 16:39:37 +00:00
if (!isset($PageMainTitle)) {
$PageMainTitle = UOJConfig::$data['profile']['oj-name'];
2016-07-18 16:39:37 +00:00
}
if (!isset($PageMainTitleOnSmall)) {
$PageMainTitleOnSmall = UOJConfig::$data['profile']['oj-name-short'];
2016-07-18 16:39:37 +00:00
}
if (!isset($ShowPageHeader)) {
$ShowPageHeader = true;
}
2022-09-18 04:58:35 +00:00
?>
2016-07-18 16:39:37 +00:00
<!DOCTYPE html>
<html lang="<?= UOJLocale::locale() ?>">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<?php if (isset($_GET['locale'])): ?>
<meta name="robots" content="noindex, nofollow" />
<?php endif ?>
<title><?= isset($PageTitle) ? $PageTitle : UOJConfig::$data['profile']['oj-name-short'] ?> - <?= $PageMainTitle ?></title>
2016-07-18 16:39:37 +00:00
<script type="text/javascript">uojHome = ''; // '<?= HTML::url('/') ?>'</script>
2016-07-18 16:39:37 +00:00
2022-09-23 12:59:22 +00:00
<?php if (isset($REQUIRE_LIB['bootstrap5'])): ?>
<!-- Bootstrap 5 (CSS) -->
<?= HTML::css_link('/css/bootstrap5.min.css?v=5.2.1') ?>
<!-- Bootstrap Icons -->
<?= HTML::css_link('/css/bootstrap-icons.min.css?v=2022.9.23') ?>
<?php else: ?>
2016-07-18 16:39:37 +00:00
<!-- Bootstrap core CSS -->
<?= HTML::css_link('/css/bootstrap.min.css?v=2019.5.31') ?>
<!-- Bootstrap Glyphicons CSS-->
<?= HTML::css_link('/css/bootstrap-glyphicons.min.css?v=2019.5.31') ?>
2022-09-23 12:59:22 +00:00
<?php endif ?>
2016-07-18 16:39:37 +00:00
2022-09-23 12:59:22 +00:00
<?php if (isset($REQUIRE_LIB['bootstrap5'])): ?>
2022-09-24 00:39:28 +00:00
<?= HTML::css_link('/css/uoj-bs5.css?v=' . UOJConfig::$data['profile']['s2oj-version']) ?>
2022-09-23 12:59:22 +00:00
<?php else: ?>
2016-07-18 16:39:37 +00:00
<!-- Custom styles for this template -->
2022-09-21 06:56:29 +00:00
<?= HTML::css_link('/css/uoj-theme.css?v=' . UOJConfig::$data['profile']['s2oj-version']) ?>
2022-09-23 12:59:22 +00:00
<?php endif ?>
2016-07-18 16:39:37 +00:00
<!-- jQuery (necessary for Bootstrap\'s JavaScript plugins) -->
<?= HTML::js_src('/js/jquery.min.js') ?>
<!-- jQuery autosize -->
<?= HTML::js_src('/js/jquery.autosize.min.js') ?>
<script type="text/javascript">
$(document).ready(function() {
$('textarea').autosize();
});
</script>
<!-- jQuery cookie -->
<?= HTML::js_src('/js/jquery.cookie.min.js') ?>
<!-- jQuery modal -->
<?= HTML::js_src('/js/jquery.modal.js') ?>
<?php if (isset($REQUIRE_LIB['tagcanvas'])): ?>
<!-- jQuery tag canvas -->
2016-07-18 16:39:37 +00:00
<?= HTML::js_src('/js/jquery.tagcanvas.min.js') ?>
<?php endif ?>
2022-09-23 12:59:22 +00:00
<?php if (isset($REQUIRE_LIB['bootstrap5'])): ?>
<?= HTML::js_src('/js/bootstrap5.bundle.min.js?v=2022.9.23') ?>
<?php else: ?>
2016-07-18 16:39:37 +00:00
<!-- Include all compiled plugins (below), or include individual files as needed -->
<?= HTML::js_src('/js/popper.min.js?v=2019.5.31') ?>
<?= HTML::js_src('/js/bootstrap.min.js?v=2019.5.31') ?>
2022-09-23 12:59:22 +00:00
<?php endif ?>
2022-09-24 02:18:55 +00:00
<script>var isBootstrap5Page = Boolean(<?= isset($REQUIRE_LIB['bootstrap5']) ? 'true' : 'false' ?>);</script>
2016-07-18 16:39:37 +00:00
<!-- Color converter -->
<?= HTML::js_src('/js/color-converter.min.js') ?>
2022-09-18 13:38:57 +00:00
<!-- DOM Santizer -->
<?= HTML::js_src('/js/purify.min.js') ?>
2016-07-18 16:39:37 +00:00
<!-- uoj -->
2022-09-21 06:56:29 +00:00
<?= HTML::js_src('/js/uoj.js?v=' . UOJConfig::$data['profile']['s2oj-version']) ?>
<!-- readmore -->
<?= HTML::js_src('/js/readmore/readmore.min.js') ?>
2016-07-18 16:39:37 +00:00
<!-- LAB -->
<?= HTML::js_src('/js/LAB.min.js') ?>
<!-- favicon -->
<link rel="shortcut icon" href="<?= HTML::url('/images/favicon.ico') ?>" />
2016-07-18 16:39:37 +00:00
<?php if (isset($REQUIRE_LIB['blog-editor'])): ?>
<!-- UOJ blog editor -->
<?php $REQUIRE_LIB['jquery.hotkeys'] = '' ?>
<?php $REQUIRE_LIB['switch'] = '' ?>
<?= HTML::css_link('/js/codemirror/lib/codemirror.css') ?>
<?= HTML::css_link('/css/blog-editor.css') ?>
<?= HTML::js_src('/js/marked.js?v=2016.10.19') ?>
<?= HTML::js_src('/js/blog-editor/blog-editor.js?v=' . UOJConfig::$data['profile']['s2oj-version']) ?>
2016-07-18 16:39:37 +00:00
<?= HTML::js_src('/js/codemirror/lib/codemirror.js') ?>
<?= HTML::js_src('/js/codemirror/addon/mode/overlay.js') ?>
<?= HTML::js_src('/js/codemirror/addon/selection/active-line.js') ?>
<?= HTML::js_src('/js/codemirror/mode/xml/xml.js') ?>
<?= HTML::js_src('/js/codemirror/mode/gfm/gfm.js') ?>
<?= HTML::js_src('/js/codemirror/mode/markdown/markdown.js') ?>
<?= HTML::js_src('/js/codemirror/mode/javascript/javascript.js') ?>
<?= HTML::js_src('/js/codemirror/mode/css/css.js') ?>
<?= HTML::js_src('/js/codemirror/mode/htmlmixed/htmlmixed.js') ?>
<?= HTML::js_src('/js/codemirror/mode/clike/clike.js') ?>
<?= HTML::js_src('/js/codemirror/mode/pascal/pascal.js') ?>
<?php endif ?>
<?php if (isset($REQUIRE_LIB['slide-editor'])): ?>
<!-- UOJ slide editor -->
<?= HTML::css_link('/js/codemirror/lib/codemirror.css') ?>
<?= HTML::css_link('/css/slide-editor.css') ?>
<?= HTML::js_src('/js/slide-editor/slide-editor.js') ?>
<?= HTML::js_src('/js/codemirror/lib/codemirror.js') ?>
<?= HTML::js_src('/js/codemirror/addon/mode/overlay.js') ?>
<?= HTML::js_src('/js/codemirror/addon/selection/active-line.js') ?>
<?php endif ?>
<?php if (isset($REQUIRE_LIB['md5'])): ?>
<!-- MD5 -->
<?= HTML::js_src('/js/md5.min.js') ?>
<?php endif ?>
<?php if (isset($REQUIRE_LIB['dialog'])): ?>
<!-- Bootstrap dialog -->
<?= HTML::css_link('/css/bootstrap-dialog.min.css') ?>
<?= HTML::js_src('/js/bootstrap-dialog.min.js') ?>
<?php endif ?>
<?php if (isset($REQUIRE_LIB['switch'])): ?>
<!-- Bootstrap switch -->
<?= HTML::css_link('/css/bootstrap-switch.min.css') ?>
<?= HTML::js_src('/js/bootstrap-switch.min.js') ?>
<?php endif ?>
<?php if (isset($REQUIRE_LIB['mathjax'])): ?>
<!-- MathJax -->
2022-04-22 03:04:37 +00:00
<script>
MathJax = {
tex: {
inlineMath: [['$', '$'], ['\\(', '\\)']],
processEscapes: true
}
};
2016-07-18 16:39:37 +00:00
</script>
2022-09-20 02:24:04 +00:00
<script id="MathJax-script" src="<?= HTML::url('/lib/MathJax/tex-mml-chtml.js') ?>"></script>
2016-07-18 16:39:37 +00:00
<?php endif ?>
<?php if (isset($REQUIRE_LIB['jquery.form'])): ?>
<!-- jquery form -->
<?= HTML::js_src('/js/jquery.form.min.js') ?>
<?php endif ?>
<?php if (isset($REQUIRE_LIB['jquery.hotkeys'])): ?>
<!-- jquery hotkeys -->
<?= HTML::js_src('/js/jquery.hotkeys.js') ?>
<?php endif ?>
<?php if (isset($REQUIRE_LIB['jquery.query'])): ?>
<!-- ckeditor -->
<?= HTML::js_src('/js/jquery.query-object.js') ?>
<?php endif ?>
2016-07-18 16:39:37 +00:00
<?php if (isset($REQUIRE_LIB['colorhelpers'])): ?>
<!-- colorhelpers -->
<?= HTML::js_src('/js/jquery.colorhelpers.min.js') ?>
<?php endif ?>
<?php if (isset($REQUIRE_LIB['morris'])): ?>
<!-- morris -->
<?= HTML::js_src('/js/morris.min.js') ?>
<?= HTML::css_link('/css/morris.css') ?>
<?php $REQUIRE_LIB['raphael'] = "" ?>
<?php endif ?>
<?php if (isset($REQUIRE_LIB['raphael'])): ?>
<!-- raphael -->
<?= HTML::js_src('/js/raphael.min.js') ?>
<?php endif ?>
<?php if (isset($REQUIRE_LIB['shjs'])): ?>
<!-- shjs -->
<?= HTML::css_link('/css/sh_typical.min.css') ?>
<?= HTML::js_src('/js/sh_main.min.js') ?>
<script type="text/javascript">$(document).ready(function(){sh_highlightDocument()})</script>
<?php endif ?>
2022-09-24 13:19:48 +00:00
<?php if (isset($REQUIRE_LIB['hljs'])): ?>
<?= HTML::css_link('/css/highlightjs.github.min.css') ?>
<?= HTML::js_src('/js/highlightjs.min.js') ?>
<script>$(document).ready(function() { hljs.highlightAll(); });</script>
<?php endif ?>
2016-07-18 16:39:37 +00:00
<?php if (isset($REQUIRE_LIB['ckeditor'])): ?>
<!-- ckeditor -->
<?= HTML::js_src('/js/ckeditor/ckeditor.js') ?>
<?php endif ?>
2022-03-25 05:16:37 +00:00
<?php if (isset($REQUIRE_LIB['github_contribution_graph'])): ?>
<!-- github contribution graph -->
<?= HTML::css_link('/css/github_contribution_graph.css') ?>
<?= HTML::js_src('/js/jquery.github_contribution_graph.js') ?>
<?php endif ?>
2022-09-28 07:39:39 +00:00
<?php if (isset($REQUIRE_LIB['calendar_heatmap'])): ?>
<!-- jquery-calendar-heatmap -->
<?= HTML::css_link('/css/jquery.calendar_heatmap.min.css') ?>
<?= HTML::js_src('/js/jquery.calendar_heatmap.min.js') ?>
<?php endif ?>
2016-07-18 16:39:37 +00:00
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
<script type="text/javascript">
before_window_unload_message = null;
$(window).on('beforeunload', function() {
if (before_window_unload_message !== null) {
return before_window_unload_message;
}
});
</script>
</head>
2022-09-23 13:00:17 +00:00
<?php if (isset($REQUIRE_LIB['bootstrap5'])): ?>
2022-09-23 22:58:20 +00:00
<body class="d-flex flex-column min-vh-100 bg-light">
2022-09-23 13:00:17 +00:00
<?php else: ?>
<body>
<?php endif ?>
<?php if (!isset($REQUIRE_LIB['bootstrap5'])): ?>
2016-07-18 16:39:37 +00:00
<div class="container theme-showcase" role="main">
2022-09-23 13:00:17 +00:00
<?php endif ?>
<?php if ($ShowPageHeader): ?>
<?php if (!isset($REQUIRE_LIB['bootstrap5'])): ?>
2016-07-18 16:39:37 +00:00
<div>
<ul class="nav nav-pills float-right" role="tablist">
2016-07-18 16:39:37 +00:00
<?php if (Auth::check()): ?>
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" data-toggle="dropdown">
2022-03-17 03:02:44 +00:00
<span class="uoj-username" data-link="0"><?= Auth::id() ?></span> <?= $new_msg_tot_html ?>
2016-07-18 16:39:37 +00:00
</a>
<ul class="dropdown-menu" role="menu">
<li role="presentation"><a class="dropdown-item" href="<?= HTML::url('/user/profile/' . Auth::id()) ?>"><?= UOJLocale::get('my profile') ?></a></li>
<li role="presentation"><a class="dropdown-item" href="<?= HTML::url('/user/msg') ?>"><?= UOJLocale::get('private message') ?>&nbsp;&nbsp;<?= $new_user_msg_num_html ?></a></li>
<li role="presentation"><a class="dropdown-item" href="<?= HTML::url('/user/system-msg') ?>"><?= UOJLocale::get('system message') ?>&nbsp;&nbsp;<?= $new_system_msg_num_html ?></a></li>
2016-07-18 16:39:37 +00:00
<?php if (isSuperUser(Auth::user())): ?>
<li role="presentation"><a class="dropdown-item" href="<?= HTML::url('/super-manage') ?>"><?= UOJLocale::get('system manage') ?></a></li>
2016-07-18 16:39:37 +00:00
<?php endif ?>
</ul>
</li>
<li class="nav-item" role="presentation"><a class="nav-link" href="<?= HTML::url('/logout?_token='.crsf_token()) ?>"><?= UOJLocale::get('logout') ?></a></li>
2016-07-18 16:39:37 +00:00
<?php else: ?>
<li class="nav-item" role="presentation"><a class="nav-link" href="<?= HTML::url('/login') ?>"><?= UOJLocale::get('login') ?></a></li>
<?php if (!DB::selectCount("SELECT COUNT(*) FROM user_info")): ?>
<li class="nav-item" role="presentation"><a class="nav-link" href="<?= HTML::url('/register') ?>"><?= UOJLocale::get('register') ?></a></li>
<?php endif ?>
2016-07-18 16:39:37 +00:00
<?php endif ?>
</ul>
2022-03-17 04:50:19 +00:00
<h1 class="d-none d-sm-block" style="position: relative; top: 4px; width: 15em">
<a href="<?= HTML::url('/') ?>">
<img src="<?= HTML::url('/images/logo_small.png') ?>" alt="Logo" class="img-rounded" style="width: 39px; height: 39px; position: relative; top: -4px; margin-right: 8px;" />
</a>
2022-03-19 04:56:20 +00:00
<span style="position: absolute; font-size: 13px; letter-spacing: 10px; left: 48px;">石家庄二中</span>
2022-03-17 04:50:19 +00:00
<span class="d" style="position: absolute; font-size: 26px; top: 11px;">在线评测系统</span>
</h1>
<h1 class="d-block d-sm-none"><?= $PageMainTitleOnSmall ?></h1>
2016-07-18 16:39:37 +00:00
</div>
<?php endif ?>
2022-09-23 13:00:17 +00:00
<?php uojIncludeView($PageNav, array('REQUIRE_LIB' => $REQUIRE_LIB)) ?>
2022-09-23 13:36:14 +00:00
<?php if (!isset($REQUIRE_LIB['bootstrap5'])): ?>
<?php if (Auth::check()): ?>
<?php $groups = queryGroupsOfUser(Auth::id()); ?>
<?php if (count($groups)): ?>
<div class="card card-default mb-2" id="group-user-announcements">
<div class="card-header">
小组公告
</div>
<ul class="list-group list-group-flush">
<?php foreach ($groups as $group): ?>
<?php
$group_detail = DB::selectFirst("select * from groups where id = {$group['id']}");
2022-09-23 13:54:44 +00:00
$group_announcement = $group_detail['announcement'];
2022-09-23 13:36:14 +00:00
?>
<li class="list-group-item">
<a href="<?= HTML::url('/group/'.$group['id']) ?>">
<b><?= $group['title'] ?></b>
</a>
<?php if ($group_announcement): ?>
<div id="announcement-content-<?= $group['id'] ?>"></div>
<script>(function(){
$('#announcement-content-<?= $group['id'] ?>')
2022-09-28 23:41:45 +00:00
.html(DOMPurify.sanitize(decodeURIComponent("<?= rawurlencode($group_announcement) ?>"), <?= DOM_SANITIZE_CONFIG ?>));
2022-09-23 13:36:14 +00:00
})();</script>
<?php else: ?>
<div>(暂无公告)</div>
<?php endif ?>
</li>
<?php endforeach ?>
</ul>
</div>
<?php endif ?>
<?php endif ?>
<?php endif ?>
2022-09-23 13:00:17 +00:00
<?php endif ?>
2016-07-18 16:39:37 +00:00
2022-09-23 13:00:17 +00:00
<?php if (isset($REQUIRE_LIB['bootstrap5'])): ?>
<div class="uoj-content container flex-fill">
<?php else: ?>
2016-07-18 16:39:37 +00:00
<div class="uoj-content">
2022-09-23 13:00:17 +00:00
<?php endif ?>