release: v1.2.0 — каталог, email заказа, SEO, админ CSV

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
shop
2026-05-17 14:58:11 +03:00
parent e81bd79607
commit 980b31df06
20 changed files with 553 additions and 18 deletions
+16 -2
View File
@@ -1,11 +1,25 @@
<%- include('../partials/layout-start') %>
<% const statusLabels = { pending: 'Ожидает', paid: 'Оплачен', shipped: 'Отправлен', cancelled: 'Отменён' }; %>
<div class="admin-header">
<h1>Заказы</h1>
<%- include('../partials/admin-nav', { adminNav: 'orders' }) %>
<div class="admin-header__actions">
<a href="/admin/orders/export.csv" class="btn btn--ghost btn--sm">Экспорт CSV</a>
<%- include('../partials/admin-nav', { adminNav: 'orders' }) %>
</div>
</div>
<% const statusLabels = { pending: 'Ожидает', paid: 'Оплачен', shipped: 'Отправлен', cancelled: 'Отменён' }; %>
<form class="catalog-toolbar" method="get" action="/admin/orders">
<label class="catalog-toolbar__field">
<span class="catalog-toolbar__label">Статус</span>
<select name="status" class="input input--sm" onchange="this.form.submit()">
<option value="">Все</option>
<% ['pending','paid','shipped','cancelled'].forEach(s => { %>
<option value="<%= s %>" <%= statusFilter === s ? 'selected' : '' %>><%= statusLabels[s] %></option>
<% }) %>
</select>
</label>
</form>
<table class="cart-table">
<thead>