82 lines
3.6 KiB
HTML
82 lines
3.6 KiB
HTML
{{define "page_admin_renewal"}}
|
|
{{template "admin_shell_open" dict "Active" .Active "Admin" .Admin "Title" "Коды продления"}}
|
|
{{template "admin_flash" .}}
|
|
|
|
<div class="card">
|
|
<div class="card-header"><h2><i class="fa-solid fa-plus"></i> Новый код</h2></div>
|
|
<form method="post" action="{{appURL "admin/renewal"}}" class="form-row-2">
|
|
{{template "admin_csrf_field"}}
|
|
<input type="hidden" name="action" value="create">
|
|
<div>
|
|
<label class="form-label">Код (пусто = сгенерировать)</label>
|
|
<input class="form-control mono" name="code" placeholder="ABCD1234" maxlength="32">
|
|
</div>
|
|
<div>
|
|
<label class="form-label">Дней продления</label>
|
|
<input class="form-control" type="number" name="add_days" value="30" min="1" max="3650">
|
|
</div>
|
|
<div>
|
|
<label class="form-label">Лимит активаций</label>
|
|
<input class="form-control" type="number" name="max_uses" value="1" min="1" max="100000">
|
|
</div>
|
|
<div>
|
|
<label class="form-label">Назначение</label>
|
|
<select class="form-select" name="code_target">
|
|
<option value="guest">Гостевая ссылка</option>
|
|
<option value="member">Личный кабинет</option>
|
|
</select>
|
|
</div>
|
|
<div>
|
|
<label class="form-label">ID гостевой ссылки (необязательно)</label>
|
|
<input class="form-control" type="number" name="share_link_id" min="1">
|
|
</div>
|
|
<div>
|
|
<label class="form-label">Срок действия кода (необязательно)</label>
|
|
<input class="form-control" type="date" name="code_expires_at">
|
|
</div>
|
|
<div>
|
|
<label class="form-label">Заметка</label>
|
|
<input class="form-control" name="note" maxlength="255">
|
|
</div>
|
|
<div class="d-flex align-items-end">
|
|
<button type="submit" class="btn btn-primary w-100"><i class="fa-solid fa-plus"></i> Создать</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<div class="card-header"><h2><i class="fa-solid fa-list"></i> Список кодов ({{len .Codes}})</h2></div>
|
|
{{if not .Codes}}
|
|
<p class="hint">Кодов пока нет.</p>
|
|
{{else}}
|
|
<div class="tbl-wrap">
|
|
<table class="table table-sm mb-0">
|
|
<thead><tr><th>Код</th><th>Дней</th><th>Активаций</th><th>Назначение</th><th>Ссылка</th><th>Срок кода</th><th>Заметка</th><th></th></tr></thead>
|
|
<tbody>
|
|
{{range .Codes}}
|
|
<tr>
|
|
<td class="mono">{{.Code}}</td>
|
|
<td>{{.AddDays}}</td>
|
|
<td>{{.UseCount}} / {{.MaxUses}}</td>
|
|
<td>{{if eq2 .CodeTarget "member"}}<span class="badge badge-info">кабинет</span>{{else}}<span class="badge badge-ok">гость</span>{{end}}</td>
|
|
<td>{{if .ShareLinkID}}#{{.ShareLinkID}}{{else}}—{{end}}</td>
|
|
<td class="sl-muted">{{if .CodeExpiresAt}}{{.CodeExpiresAt.Format "2006-01-02"}}{{else}}—{{end}}</td>
|
|
<td>{{if .Note}}{{.Note}}{{else}}—{{end}}</td>
|
|
<td>
|
|
<form method="post" action="{{appURL "admin/renewal"}}" onsubmit="return confirm('Удалить код {{.Code}}?');">
|
|
{{template "admin_csrf_field"}}
|
|
<input type="hidden" name="action" value="delete">
|
|
<input type="hidden" name="code_id" value="{{.ID}}">
|
|
<button type="submit" class="btn btn-sm btn-danger"><i class="fa-solid fa-trash"></i></button>
|
|
</form>
|
|
</td>
|
|
</tr>
|
|
{{end}}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
{{end}}
|
|
</div>
|
|
{{template "admin_shell_close" .}}
|
|
{{end}}
|