Add admin link IDs, tabs for extend/traffic, and pagination

This commit is contained in:
orohi
2026-07-25 01:15:54 +03:00
parent 663e9b1d99
commit 7842ddf1b8
4 changed files with 194 additions and 18 deletions
+44 -6
View File
@@ -37,8 +37,8 @@
<label>
Направление
<select name="link_type" required>
<option value="extend">Продление VPN (дни)</option>
<option value="traffic">Докупка трафика (ГБ)</option>
<option value="extend" {% if tab == "extend" %}selected{% endif %}>Продление VPN (дни)</option>
<option value="traffic" {% if tab == "traffic" %}selected{% endif %}>Докупка трафика (ГБ)</option>
</select>
</label>
<label>
@@ -49,7 +49,7 @@
<label>
Трафик тарифа (ГБ)
<input type="number" name="plan_traffic_gb" min="0" value="100" />
<span class="muted" style="font-size:0.75rem;">Только продление: лимит станет ровно столько (и сбросится счётчик). Пример: тариф 49₽ → 100</span>
<span class="muted" style="font-size:0.75rem;">Только продление: лимит станет ровно столько (и сбросится счётчик)</span>
</label>
<label>
Срок бонус-трафика (дней)
@@ -77,10 +77,27 @@
</div>
</form>
<div class="admin-tabs">
<a class="admin-tab {% if tab == 'extend' %}is-active{% endif %}" href="/admin?type=extend">
Продление <span class="tab-count">{{ counts.extend }}</span>
</a>
<a class="admin-tab {% if tab == 'traffic' %}is-active{% endif %}" href="/admin?type=traffic">
Трафик <span class="tab-count">{{ counts.traffic }}</span>
</a>
<a class="admin-tab {% if tab == 'all' %}is-active{% endif %}" href="/admin?type=all">
Все <span class="tab-count">{{ counts.all }}</span>
</a>
</div>
<p class="muted list-meta">
Показано {{ links|length }} из {{ total }} · страница {{ page }} / {{ total_pages }}
</p>
<div class="table-wrap">
<table>
<thead>
<tr>
<th>ID</th>
<th>Тип</th>
<th>Заголовок</th>
<th>Значение</th>
@@ -93,6 +110,7 @@
<tbody>
{% for link in links %}
<tr>
<td><span class="id-pill">#{{ link.id }}</span></td>
<td>
{% if link.link_type == "extend" %}
<span class="badge badge-extend">Продление</span>
@@ -127,10 +145,10 @@
<td>
<div class="row-actions">
<a class="btn btn-ghost" href="/admin/links/{{ link.id }}">История</a>
<form method="post" action="/admin/links/{{ link.id }}/toggle">
<form method="post" action="/admin/links/{{ link.id }}/toggle?type={{ tab }}&page={{ page }}">
<button class="btn btn-ghost" type="submit">{% if link.is_active %}Выкл{% else %}Вкл{% endif %}</button>
</form>
<form method="post" action="/admin/links/{{ link.id }}/delete" onsubmit="return confirm('Удалить ссылку?')">
<form method="post" action="/admin/links/{{ link.id }}/delete?type={{ tab }}&page={{ page }}" onsubmit="return confirm('Удалить ссылку #{{ link.id }}?')">
<button class="btn btn-danger" type="submit">Удалить</button>
</form>
</div>
@@ -138,12 +156,32 @@
</tr>
{% else %}
<tr>
<td colspan="7" class="muted">Пока нет ссылок — создайте первую выше.</td>
<td colspan="8" class="muted">В этом разделе пока нет ссылок.</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% if total_pages > 1 %}
<nav class="pager">
{% if page > 1 %}
<a class="btn btn-ghost" href="/admin?type={{ tab }}&page={{ page - 1 }}">← Назад</a>
{% endif %}
{% for p in range(1, total_pages + 1) %}
{% if p == page %}
<span class="pager-current">{{ p }}</span>
{% elif p == 1 or p == total_pages or (p >= page - 2 and p <= page + 2) %}
<a class="btn btn-ghost" href="/admin?type={{ tab }}&page={{ p }}">{{ p }}</a>
{% elif p == page - 3 or p == page + 3 %}
<span class="muted"></span>
{% endif %}
{% endfor %}
{% if page < total_pages %}
<a class="btn btn-ghost" href="/admin?type={{ tab }}&page={{ page + 1 }}">Вперёд →</a>
{% endif %}
</nav>
{% endif %}
</div>
<script src="/static/js/admin.js"></script>
</body>