feat: extract templates to web/ folder, add PL-test server, auto-propagate, health scoring, admin dashboard redesign
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="ru">
|
||||
<head>
|
||||
<meta charset="UTF-8"><meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<title>Управление · {%title%}</title>
|
||||
<link rel="stylesheet" href="/web/css/admin.css">
|
||||
</head>
|
||||
<body>
|
||||
<div class="admin-bg"></div>
|
||||
<div class="admin-wrap">
|
||||
<header class="admin-header">
|
||||
<div class="header-left">
|
||||
<h1>👥 Пользователи</h1>
|
||||
<span class="header-count">{%user_count%}</span>
|
||||
</div>
|
||||
<div class="header-right">
|
||||
<a href="/admin/dashboard" class="nav-link">📊 Дашборд</a>
|
||||
<button class="btn btn-primary" onclick="openModal()">+ Добавить</button>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="table-wrap">
|
||||
<table class="tbl">
|
||||
<thead>
|
||||
<tr><th>ID</th><th>Username</th><th>Sub ID</th><th>Тариф</th><th>Дней</th><th>Оплачено</th><th>Трафик</th><th>Статус</th><th>Создан</th><th></th></tr>
|
||||
</thead>
|
||||
<tbody>{%users_rows%}</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal" id="userModal">
|
||||
<div class="modal-overlay" onclick="closeModal()"></div>
|
||||
<div class="modal-card">
|
||||
<div class="modal-h">
|
||||
<h2>Новый пользователь</h2>
|
||||
<button class="modal-x" onclick="closeModal()">×</button>
|
||||
</div>
|
||||
<form id="userForm">
|
||||
<div class="fg">
|
||||
<label for="nu">Username</label>
|
||||
<input id="nu" type="text" name="username" required autocomplete="off">
|
||||
</div>
|
||||
<div class="fg">
|
||||
<label for="nt">Лимит трафика (GB, 0 = ∞)</label>
|
||||
<input id="nt" type="number" name="traffic_limit_gb" value="0" min="0">
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary btn-full">Создать</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="modal" id="editModal">
|
||||
<div class="modal-overlay" onclick="closeEditModal()"></div>
|
||||
<div class="modal-card">
|
||||
<div class="modal-h">
|
||||
<h2>Редактировать</h2>
|
||||
<button class="modal-x" onclick="closeEditModal()">×</button>
|
||||
</div>
|
||||
<form id="editForm">
|
||||
<input type="hidden" name="id" id="editId">
|
||||
<div class="fg">
|
||||
<label for="et">Тариф</label>
|
||||
<select id="et" name="tier">
|
||||
{%tier_options%}
|
||||
</select>
|
||||
</div>
|
||||
<div class="fg">
|
||||
<label for="ed">Дней осталось</label>
|
||||
<input id="ed" type="number" name="tariff_days_remaining">
|
||||
</div>
|
||||
<div class="fg">
|
||||
<label for="etr">Лимит трафика (GB, 0 = ∞)</label>
|
||||
<input id="etr" type="number" name="traffic_limit_gb">
|
||||
</div>
|
||||
<div class="fg-check">
|
||||
<label><input type="checkbox" name="is_active" id="editActive"> Активен</label>
|
||||
</div>
|
||||
<button type="button" class="btn btn-primary btn-full" onclick="submitEditForm()">Сохранить</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script src="/web/js/admin.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
Reference in New Issue
Block a user