create: admin.html, admin.js, help.html, index.html, info.html, info.js, login.html, main.js, style.css, auth.js, package.json, server.js, sqllite.js
This commit is contained in:
committed by
GitVerse
parent
458b1fa927
commit
3fbf7311d8
111
public/help.html
Normal file
111
public/help.html
Normal file
@@ -0,0 +1,111 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>Справка по системе</title>
|
||||
<link rel="stylesheet" href="style.css">
|
||||
<style>
|
||||
.help-container {
|
||||
max-width: 1000px;
|
||||
margin: 2rem auto;
|
||||
padding: 0 1rem;
|
||||
}
|
||||
.card {
|
||||
background: white;
|
||||
border-radius: 1rem;
|
||||
padding: 1.5rem;
|
||||
margin-bottom: 1.5rem;
|
||||
box-shadow: 0 2px 8px rgba(0,0,0,0.05);
|
||||
}
|
||||
.card h2 {
|
||||
margin-top: 0;
|
||||
color: #1e3a8a;
|
||||
}
|
||||
.card a {
|
||||
color: #1e3a8a;
|
||||
text-decoration: none;
|
||||
font-weight: bold;
|
||||
}
|
||||
.card a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
.badge {
|
||||
display: inline-block;
|
||||
background: #e2e8f0;
|
||||
padding: 0.2rem 0.6rem;
|
||||
border-radius: 1rem;
|
||||
font-size: 0.8rem;
|
||||
margin-left: 0.5rem;
|
||||
}
|
||||
.note {
|
||||
background: #fef9c3;
|
||||
padding: 1rem;
|
||||
border-radius: 0.8rem;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
footer {
|
||||
text-align: center;
|
||||
margin-top: 2rem;
|
||||
color: #64748b;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<header>
|
||||
<h1>Справка по системе</h1>
|
||||
<div id="userInfo"></div>
|
||||
<button id="logoutBtn" style="display:none;">Выйти</button>
|
||||
</header>
|
||||
<main class="help-container">
|
||||
<div class="card">
|
||||
<h2>📅 Запись на открытые уроки <span class="badge">доступ всем</span></h2>
|
||||
<p><strong>Ссылка:</strong> <a href="/" target="_blank">/</a> (главная страница)</p>
|
||||
<p>Родители могут просматривать доступные уроки, фильтровать их по классу, учителю или теме, и записываться, указав свои ФИО и телефон. После записи количество свободных мест уменьшается.</p>
|
||||
<p>Уроки, на которых нет свободных мест, не отображаются.</p>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<h2>🔐 Панель администратора <span class="badge">только admin</span></h2>
|
||||
<p><strong>Ссылка:</strong> <a href="/admin" target="_blank">/admin</a></p>
|
||||
<p>Доступна после авторизации с правами администратора (локальный пользователь или группа из <code>Администраторов</code>).</p>
|
||||
<ul>
|
||||
<li>➕ Добавление, редактирование и удаление уроков.</li>
|
||||
<li>📋 Просмотр записей родителей на каждый урок.</li>
|
||||
<li>🔍 Фильтрация уроков по классу, учителю, теме, параллели.</li>
|
||||
<li>📂 Импорт уроков из JSON (структура: массив записей с полями "Класс (параллель)", "Класс (буква)", "Предмет", "Фамилия Учителя", "Имя Учителя", "Отчество Учителя", "Тема Урока").</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="card">
|
||||
<h2>📊 Список записавшихся родителей <span class="badge">admin + Администрация</span></h2>
|
||||
<p><strong>Ссылка:</strong> <a href="/info" target="_blank">/info</a></p>
|
||||
<p>Доступен администраторам и пользователям, входящим в группы, указанные в переменной окружения <code>Администрация</code>.</p>
|
||||
<ul>
|
||||
<li>📋 Таблица со всеми записями родителей (ФИО, телефон, класс, предмет, учитель, тема, дата/время урока, дата регистрации).</li>
|
||||
<li>🔎 Фильтрация по ФИО родителя, классу, предмету, учителю.</li>
|
||||
<li>📎 Выгрузка отфильтрованных данных в CSV (совместим с Excel).</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<footer>
|
||||
Система записи на открытые уроки. При возникновении вопросов обращайтесь к Калугину О.А..
|
||||
</footer>
|
||||
</main>
|
||||
<script>
|
||||
// Проверяем, авторизован ли пользователь, чтобы показать кнопку выхода
|
||||
fetch('/api/me').then(res => res.json()).then(data => {
|
||||
if (data.authenticated) {
|
||||
const userInfo = document.getElementById('userInfo');
|
||||
const logoutBtn = document.getElementById('logoutBtn');
|
||||
userInfo.innerHTML = `👋 ${data.user.full_name} (${data.user.role})`;
|
||||
logoutBtn.style.display = 'inline-block';
|
||||
logoutBtn.onclick = async () => {
|
||||
await fetch('/api/logout', { method: 'POST' });
|
||||
window.location.href = '/';
|
||||
};
|
||||
}
|
||||
});
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user