mirror of
https://hub.gitmirror.com/https://github.com/ExamAware/ExamCloudSchedule
synced 2025-04-29 03:36:36 +00:00
166 lines
5.2 KiB
PHP
166 lines
5.2 KiB
PHP
<?php
|
|
require_once '../includes/auth.php';
|
|
checkLogin();
|
|
|
|
$id = $_GET['id'] ?? '';
|
|
$config = ['examName' => '', 'message' => '', 'examInfos' => []];
|
|
|
|
// 保存逻辑
|
|
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|
$id = preg_replace('/[^a-zA-Z0-9]/', '', $_POST['id']);
|
|
|
|
$newConfig = [
|
|
'examName' => $_POST['examName'],
|
|
'message' => $_POST['message'],
|
|
'room' => ' ',
|
|
'examInfos' => []
|
|
];
|
|
|
|
foreach ($_POST['subject'] as $index => $subject) {
|
|
$newConfig['examInfos'][] = [
|
|
'name' => $subject,
|
|
'start' => $_POST['start'][$index],
|
|
'end' => $_POST['end'][$index]
|
|
];
|
|
}
|
|
|
|
file_put_contents("../configs/{$id}.json", json_encode($newConfig, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT));
|
|
header('Location: index.php');
|
|
exit;
|
|
}
|
|
|
|
// 加载现有配置
|
|
if (!empty($id) && file_exists("../configs/{$id}.json")) {
|
|
$config = json_decode(file_get_contents("../configs/{$id}.json"), true);
|
|
}
|
|
?>
|
|
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<title>编辑配置</title>
|
|
<style>
|
|
body {
|
|
font-family: Arial, sans-serif;
|
|
background-color: #f2f2f2;
|
|
margin: 0;
|
|
padding: 20px;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
height: 100vh;
|
|
}
|
|
.container {
|
|
background-color: #fff;
|
|
padding: 20px;
|
|
border-radius: 8px;
|
|
box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
|
|
width: 500px;
|
|
}
|
|
.container h3 {
|
|
margin-top: 0;
|
|
}
|
|
.container div {
|
|
margin-bottom: 15px;
|
|
}
|
|
.container label {
|
|
display: block;
|
|
margin-bottom: 5px;
|
|
}
|
|
.container input[type="text"],
|
|
.container input[type="datetime-local"] {
|
|
width: 100%;
|
|
padding: 8px;
|
|
box-sizing: border-box;
|
|
}
|
|
.container button {
|
|
padding: 10px 15px;
|
|
background-color: #4CAF50;
|
|
color: white;
|
|
border: none;
|
|
border-radius: 4px;
|
|
cursor: pointer;
|
|
}
|
|
.container button:hover {
|
|
background-color: #45a049;
|
|
}
|
|
.subject {
|
|
margin: 10px 0;
|
|
padding: 10px;
|
|
border: 1px solid #ccc;
|
|
border-radius: 4px;
|
|
}
|
|
.subject button {
|
|
background-color: #dc3545;
|
|
margin-top: 10px;
|
|
}
|
|
.subject button:hover {
|
|
background-color: #c82333;
|
|
}
|
|
</style>
|
|
<script>
|
|
function addSubject() {
|
|
const container = document.getElementById('subjects');
|
|
const index = Date.now();
|
|
const html = `
|
|
<div class="subject">
|
|
<div>
|
|
<label>科目名称:</label>
|
|
<input type="text" name="subject[]" required>
|
|
</div>
|
|
<div>
|
|
<label>开始时间:</label>
|
|
<input type="datetime-local" name="start[]" required>
|
|
</div>
|
|
<div>
|
|
<label>结束时间:</label>
|
|
<input type="datetime-local" name="end[]" required>
|
|
</div>
|
|
<button type="button" onclick="this.parentElement.remove()">删除</button>
|
|
</div>`;
|
|
container.insertAdjacentHTML('beforeend', html);
|
|
}
|
|
</script>
|
|
</head>
|
|
<body>
|
|
<div class="container">
|
|
<form method="post">
|
|
<div>
|
|
<label>配置ID:</label>
|
|
<input type="text" name="id" value="<?= htmlspecialchars($id) ?>" required>
|
|
</div>
|
|
<div>
|
|
<label>考试名称:</label>
|
|
<input type="text" name="examName" value="<?= htmlspecialchars($config['examName']) ?>" required>
|
|
</div>
|
|
<div>
|
|
<label>考试提示语:</label>
|
|
<input type="text" name="message" value="<?= htmlspecialchars($config['message']) ?>">
|
|
</div>
|
|
|
|
<h3>考试科目安排</h3>
|
|
<div id="subjects">
|
|
<?php foreach ($config['examInfos'] as $subject): ?>
|
|
<div class="subject">
|
|
<div>
|
|
<label>科目名称:</label>
|
|
<input type="text" name="subject[]" value="<?= htmlspecialchars($subject['name']) ?>" required>
|
|
</div>
|
|
<div>
|
|
<label>开始时间:</label>
|
|
<input type="datetime-local" name="start[]" value="<?= str_replace(' ', 'T', $subject['start']) ?>" required>
|
|
</div>
|
|
<div>
|
|
<label>结束时间:</label>
|
|
<input type="datetime-local" name="end[]" value="<?= str_replace(' ', 'T', $subject['end']) ?>" required>
|
|
</div>
|
|
<button type="button" onclick="this.parentElement.remove()">删除</button>
|
|
</div>
|
|
<?php endforeach; ?>
|
|
</div>
|
|
<button type="button" onclick="addSubject()">添加科目</button>
|
|
<hr>
|
|
<button type="submit">保存配置</button>
|
|
</form>
|
|
</div>
|
|
</body>
|
|
</html>
|