Add admin link IDs, tabs for extend/traffic, and pagination
This commit is contained in:
@@ -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>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<div class="panel-wrap">
|
||||
<header class="panel-header">
|
||||
<div>
|
||||
<h1>{{ link.title }}</h1>
|
||||
<h1>#{{ link.id }} · {{ link.title }}</h1>
|
||||
<div class="link-copy-row">
|
||||
<button
|
||||
type="button"
|
||||
|
||||
Reference in New Issue
Block a user