Add admin panel: visit counter, product editor, screenshots upload
This commit is contained in:
@@ -9,58 +9,77 @@
|
||||
<link rel="stylesheet" href="/static/css/admin.css">
|
||||
</head>
|
||||
<body class="admin-body">
|
||||
<header class="admin-header">
|
||||
<div class="container admin-header__inner">
|
||||
<a href="/admin/" class="logo">
|
||||
<span class="logo__icon">◆</span>
|
||||
<span class="logo__text">Shop Admin</span>
|
||||
</a>
|
||||
<div class="admin-header__user">
|
||||
<span>{{.Email}}</span>
|
||||
<form method="POST" action="/admin/logout">
|
||||
<button type="submit" class="btn btn--ghost btn--sm">Выйти</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
{{template "admin_nav" .}}
|
||||
|
||||
<main class="admin-main container">
|
||||
<h1 class="admin-page-title">Панель управления</h1>
|
||||
|
||||
<div class="admin-stats">
|
||||
<div class="admin-stat">
|
||||
<span class="admin-stat__value">{{.ProductCount}}</span>
|
||||
<span class="admin-stat__label">Товаров в каталоге</span>
|
||||
<div class="admin-stat admin-stat--highlight">
|
||||
<span class="admin-stat__value">{{.TotalVisits}}</span>
|
||||
<span class="admin-stat__label">Всего посещений главной</span>
|
||||
</div>
|
||||
<div class="admin-stat admin-stat--highlight">
|
||||
<span class="admin-stat__value">{{.TodayVisits}}</span>
|
||||
<span class="admin-stat__label">Сегодня</span>
|
||||
</div>
|
||||
<div class="admin-stat">
|
||||
<span class="admin-stat__value">{{len .Categories}}</span>
|
||||
<span class="admin-stat__value">{{.ProductCount}}</span>
|
||||
<span class="admin-stat__label">Товаров</span>
|
||||
</div>
|
||||
<div class="admin-stat">
|
||||
<span class="admin-stat__value">{{.CategoryCount}}</span>
|
||||
<span class="admin-stat__label">Категорий</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{if .Categories}}
|
||||
<div class="admin-actions">
|
||||
<a href="/admin/products/new" class="btn btn--primary">+ Добавить товар</a>
|
||||
<a href="/admin/products" class="btn btn--outline">Все товары</a>
|
||||
<a href="/" class="btn btn--ghost" target="_blank">Открыть магазин ↗</a>
|
||||
</div>
|
||||
|
||||
{{if .Products}}
|
||||
<section class="admin-section">
|
||||
<h2 class="admin-section__title">Категории</h2>
|
||||
<h2 class="admin-section__title">Последние товары</h2>
|
||||
<table class="admin-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Фото</th>
|
||||
<th>Название</th>
|
||||
<th>Товаров</th>
|
||||
<th>Категория</th>
|
||||
<th>Цена</th>
|
||||
<th>Статус</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{{range .Categories}}
|
||||
{{range .Products}}
|
||||
<tr>
|
||||
<td>
|
||||
{{if .ImageURL}}
|
||||
<img src="{{.ImageURL}}" alt="" class="admin-thumb">
|
||||
{{else}}
|
||||
<span class="admin-thumb admin-thumb--empty">—</span>
|
||||
{{end}}
|
||||
</td>
|
||||
<td>{{.Name}}</td>
|
||||
<td>{{.Count}}</td>
|
||||
<td>{{.Category}}</td>
|
||||
<td>{{printf "%.0f" .Price}} ₽</td>
|
||||
<td>
|
||||
{{if .IsActive}}
|
||||
<span class="admin-badge admin-badge--ok">Активен</span>
|
||||
{{else}}
|
||||
<span class="admin-badge admin-badge--off">Скрыт</span>
|
||||
{{end}}
|
||||
</td>
|
||||
<td><a href="/admin/products/{{.ID}}/edit" class="link">Изменить</a></td>
|
||||
</tr>
|
||||
{{end}}
|
||||
</tbody>
|
||||
</table>
|
||||
</section>
|
||||
{{end}}
|
||||
|
||||
<p class="admin-hint">Администратор создаётся автоматически из переменных <code>ADMIN_EMAIL</code> и <code>ADMIN_PASSWORD</code> в <code>.env</code>.</p>
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user