87 lines
4.5 KiB
HTML
87 lines
4.5 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="ru">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width,initial-scale=1">
|
|
<title>Темы модулей — Админ-панель</title>
|
|
<link rel="stylesheet" href="admin.css">
|
|
</head>
|
|
<body data-page="modules">
|
|
<div class="layout">
|
|
<div class="sidebar" id="sidebar"></div>
|
|
<div class="main">
|
|
<div class="page-head">
|
|
<h2>Темы модулей</h2>
|
|
<p class="page-sub">Ученик выбирает тему модуля при заполнении формы</p>
|
|
</div>
|
|
|
|
<div class="actions-row" style="margin-bottom:16px">
|
|
<button class="btn-primary" id="addModuleBtn" type="button">
|
|
<span style="font-size:1.2rem">+</span> Добавить модуль
|
|
</button>
|
|
<button class="btn-primary ghost" id="batchModuleBtn" type="button">
|
|
Пакетное добавление
|
|
</button>
|
|
<input type="text" id="moduleSearch" class="search-input" placeholder="Поиск по названию..." style="flex:1;min-width:200px;max-width:340px;padding:10px 14px;font-size:.9rem">
|
|
</div>
|
|
|
|
<div class="list" id="moduleList"><div class="empty">Загрузка…</div></div>
|
|
<div class="pager" id="pager"></div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="modal-overlay" id="moduleModal">
|
|
<div class="edit-modal" style="max-width:480px">
|
|
<h3 id="moduleModalTitle">Создать модуль</h3>
|
|
<form id="moduleForm" class="settings-stack" style="gap:12px">
|
|
<input type="hidden" id="moduleId">
|
|
<div class="settings-field">
|
|
<label>Название <span style="color:#ef4444">*</span></label>
|
|
<input type="text" name="name" class="settings-input" required placeholder="Например: Основы Python" autocomplete="off">
|
|
</div>
|
|
<div class="settings-field">
|
|
<label>Количество занятий</label>
|
|
<input type="number" name="lessons_count" id="moduleLessons" class="settings-input" min="0" max="10000" step="1" value="0">
|
|
</div>
|
|
<div class="card-foot" style="justify-content:flex-end;gap:8px">
|
|
<button type="button" class="btn-primary ghost" id="moduleCancelBtn">Отмена</button>
|
|
<button type="submit" class="btn-primary" id="moduleSubmitBtn">Создать</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="modal-overlay" id="batchModuleModal">
|
|
<div class="edit-modal" style="max-width:520px">
|
|
<h3>Пакетное добавление модулей</h3>
|
|
<form id="batchModuleForm" class="settings-stack" style="gap:12px">
|
|
<div class="settings-field">
|
|
<label>Модули — каждый с новой строки <span style="color:#ef4444">*</span></label>
|
|
<textarea id="batchModuleText" class="settings-input" style="min-height:160px;font-family:monospace" required
|
|
placeholder="Основы Python | 10 Введение в базы данных | 8 Разработка интерфейсов 12"></textarea>
|
|
<span class="hint">Название может состоять из нескольких слов. Количество занятий отделяйте символом <b>|</b>, <b>;</b>, <b>=</b> или табуляцией; если не указать разделитель — последнее число в строке считается количеством занятий. Количество занятий обязательно для каждой строки.</span>
|
|
</div>
|
|
<div class="card-foot" style="justify-content:flex-end;gap:8px">
|
|
<button type="button" class="btn-primary ghost" id="batchModuleCancelBtn">Отмена</button>
|
|
<button type="submit" class="btn-primary" id="batchModuleSubmitBtn">Добавить</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="toast" id="toast"></div>
|
|
<script src="vendor/lucide.min.js"></script>
|
|
<script src="admin.js"></script>
|
|
<script src="js/modules.js"></script>
|
|
<style>
|
|
.page-sub{color:var(--muted);font-size:.85rem;margin:0}
|
|
.module-item{display:flex;justify-content:space-between;align-items:center;gap:12px}
|
|
.module-info{min-width:0;display:flex;flex-direction:column;gap:4px}
|
|
.module-name{font-weight:600;font-size:.95rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
|
|
.module-meta{font-size:.78rem;color:var(--muted)}
|
|
#batchModuleModal .hint{font-size:.78rem;color:var(--muted);line-height:1.5;display:block}
|
|
#batchModuleModal .hint b{color:var(--text)}
|
|
@media (max-width:640px){.module-item{flex-direction:column;align-items:flex-start}}
|
|
</style>
|
|
</body>
|
|
</html> |