<?php requireLib('bootstrap5'); requirePHPLib('form'); Auth::check() || redirectToLogin(); UOJProblem::init(UOJRequest::get('id')) || UOJResponse::page404(); UOJProblem::cur()->userCanManage(Auth::user()) || UOJResponse::page403(); $managers_form = newAddDelCmdForm( 'managers', 'validateUserAndStoreByUsername', function ($type, $username, &$vdata) { $user = $vdata['user'][$username]; if ($type == '+') { DB::insert([ "insert into problems_permissions", "(problem_id, username)", "values", DB::tuple([UOJProblem::info('id'), $user['username']]) ]); } else if ($type == '-') { DB::delete([ "delete from problems_permissions", "where", [ "problem_id" => UOJProblem::info('id'), "username" => $user['username'] ] ]); } } ); $managers_form->runAtServer(); if (isSuperUser(Auth::user())) { $update_uploader_form = new UOJBs4Form('update_uploader'); $update_uploader_form->addInput( 'new_uploader_username', 'text', '用户名', UOJProblem::info('uploader') ?: 'root', function ($username, &$vdata) { if (!UOJUser::query($username)) { return '用户不存在'; } $vdata['username'] = $username; return ''; }, null ); $update_uploader_form->submit_button_config['align'] = 'compressed'; $update_uploader_form->submit_button_config['text'] = '修改上传者'; $update_uploader_form->submit_button_config['class_str'] = 'mt-2 btn btn-warning'; $update_uploader_form->handle = function (&$vdata) { DB::update([ "update problems", "set", ["uploader" => $vdata['username']], "where", ["id" => UOJProblem::info('id')] ]); }; $update_uploader_form->runAtServer(); } ?> <?php echoUOJPageHeader('管理者 - ' . HTML::stripTags(UOJProblem::info('title'))) ?> <div class="row"> <!-- left col --> <div class="col-lg-9"> <h1> <?= UOJProblem::cur()->getTitle() ?> 管理 </h1> <ul class="nav nav-pills my-3" role="tablist"> <li class="nav-item"> <a class="nav-link" href="/problem/<?= UOJProblem::info('id') ?>/manage/statement" role="tab"> 题面 </a> </li> <li class="nav-item"> <a class="nav-link active" href="/problem/<?= UOJProblem::info('id') ?>/manage/managers" role="tab"> 管理者 </a> </li> <li class="nav-item"> <a class="nav-link" href="/problem/<?= UOJProblem::info('id') ?>/manage/data" role="tab"> 数据 </a> </li> </ul> <div class="card card-default"> <div class="card-body"> <table class="table"> <thead> <tr> <th>#</th> <th>用户名</th> </tr> </thead> <tbody> <?php $row_id = 0; $res = DB::selectAll([ "select username from problems_permissions", "where", ["problem_id" => UOJProblem::info('id')] ]); foreach ($res as $row) { $row_id++; echo '<tr>', '<td>', $row_id, '</td>', '<td>', UOJUser::getLink($row['username']), '</td>', '</tr>'; } ?> </tbody> </table> <p class="text-center">命令格式:命令一行一个,+mike表示把mike加入管理者,-mike表示把mike从管理者中移除</p> <?php $managers_form->printHTML(); ?> <?php if (isset($update_uploader_form)) : ?> <hr> <?php $update_uploader_form->printHTML(); ?> <?php endif ?> </div> </div> <!-- end left col --> </div> <!-- right col --> <aside class="col-lg-3 mt-3 mt-lg-0"> <div class="card card-default mb-2"> <ul class="nav nav-pills nav-fill flex-column" role="tablist"> <li class="nav-item text-start"> <a href="/problem/<?= UOJProblem::info('id') ?>" class="nav-link" role="tab"> <i class="bi bi-journal-text"></i> <?= UOJLocale::get('problems::statement') ?> </a> </li> <li class="nav-item text-start"> <a href="/problem/<?= UOJProblem::info('id') ?>#submit" class="nav-link" role="tab"> <i class="bi bi-upload"></i> <?= UOJLocale::get('problems::submit') ?> </a> </li> <li class="nav-item text-start"> <a href="/problem/<?= UOJProblem::info('id') ?>/solutions" class="nav-link" role="tab"> <i class="bi bi-journal-bookmark"></i> <?= UOJLocale::get('problems::solutions') ?> </a> </li> <li class="nav-item text-start"> <a class="nav-link" href="/submissions?problem_id=<?= UOJProblem::info('id') ?>"> <i class="bi bi-list-ul"></i> <?= UOJLocale::get('submissions') ?> </a> </li> <li class="nav-item text-start"> <a class="nav-link" href="/problem/<?= UOJProblem::info('id') ?>/statistics"> <i class="bi bi-graph-up"></i> <?= UOJLocale::get('problems::statistics') ?> </a> </li> <li class="nav-item text-start"> <a class="nav-link active" href="#" role="tab"> <i class="bi bi-sliders"></i> <?= UOJLocale::get('problems::manage') ?> </a> </li> </ul> </div> </aside> <!-- end right col --> </div> <?php echoUOJPageFooter() ?>