nextcloud-install/admin-ui/public/index.html
2026-06-24 09:23:58 +03:00

130 lines
4.4 KiB
HTML

<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Nextcloud — управление пользователями</title>
<link rel="stylesheet" href="/styles.css" />
</head>
<body>
<div id="app">
<!-- Экран входа -->
<section id="login-screen" class="card login-card">
<h1>Nextcloud Admin</h1>
<p class="muted">Войдите учётной записью администратора</p>
<form id="login-form">
<label>Логин<input type="text" id="login-user" autocomplete="username" required /></label>
<label>Пароль<input type="password" id="login-pass" autocomplete="current-password" required /></label>
<button type="submit">Войти</button>
<p id="login-error" class="error hidden"></p>
</form>
</section>
<!-- Основной экран -->
<section id="main-screen" class="hidden">
<header class="topbar">
<div>
<h1>Пользователи</h1>
<p class="muted" id="server-info"></p>
</div>
<div class="topbar-actions">
<button id="btn-refresh" class="secondary">Обновить</button>
<button id="btn-create">+ Пользователь</button>
<button id="btn-logout" class="secondary">Выход</button>
</div>
</header>
<div id="global-error" class="banner error hidden"></div>
<div id="global-ok" class="banner ok hidden"></div>
<div class="card table-wrap">
<table>
<thead>
<tr>
<th>Логин</th>
<th>Имя</th>
<th>Email</th>
<th>Квота</th>
<th>Использовано</th>
<th>Группы</th>
<th>Статус</th>
<th></th>
</tr>
</thead>
<tbody id="users-body">
<tr><td colspan="8" class="muted center">Загрузка…</td></tr>
</tbody>
</table>
</div>
</section>
</div>
<!-- Модал: создать / редактировать -->
<dialog id="user-dialog">
<form id="user-form" method="dialog">
<h2 id="dialog-title">Новый пользователь</h2>
<input type="hidden" id="edit-userid" />
<label id="field-userid-wrap">
Логин
<input type="text" id="field-userid" pattern="[a-zA-Z0-9._@-]+" required />
</label>
<label>
Пароль
<input type="password" id="field-password" />
<span class="hint" id="password-hint">Обязателен для нового пользователя</span>
</label>
<label>
Отображаемое имя
<input type="text" id="field-displayname" />
</label>
<label>
Email
<input type="email" id="field-email" />
</label>
<label>
Квота (место)
<select id="field-quota">
<option value="default">По умолчанию</option>
<option value="none">Без лимита</option>
<option value="1GB">1 GB</option>
<option value="2GB">2 GB</option>
<option value="5GB">5 GB</option>
<option value="10GB">10 GB</option>
<option value="50GB">50 GB</option>
<option value="100GB">100 GB</option>
<option value="custom">Своё значение…</option>
</select>
</label>
<label id="custom-quota-wrap" class="hidden">
Своя квота (например 25GB)
<input type="text" id="field-quota-custom" placeholder="25 GB" />
</label>
<label>
Группы (права)
<select id="field-groups" multiple size="5"></select>
<span class="hint">Ctrl+клик для нескольких групп. Группа <code>admin</code> — права администратора.</span>
</label>
<label class="checkbox" id="field-enabled-wrap">
<input type="checkbox" id="field-enabled" checked />
Аккаунт активен
</label>
<div class="dialog-actions">
<button type="button" class="secondary" id="btn-cancel">Отмена</button>
<button type="submit" id="btn-save">Сохранить</button>
</div>
</form>
</dialog>
<script src="/app.js"></script>
</body>
</html>