Build and Publish / Build and Publish Docker Image (push) Successful in 1m42s
89 lines
3.9 KiB
HTML
89 lines
3.9 KiB
HTML
{% extends "admin/layout.html" %}
|
||
{% let active_page = "users" %}
|
||
|
||
{% block title %}{{ t.users_title }}{% endblock %}
|
||
|
||
{% block content %}
|
||
<div class="page-head">
|
||
<h1>{{ t.users_title }}</h1>
|
||
</div>
|
||
|
||
{% for user in &users %}
|
||
<div class="item-card">
|
||
<div class="item-card-header">
|
||
<span class="name">{{ user.login }}{% if let Some(dn) = user.display_name.as_deref() %} <span class="muted-detail">— {{ dn }}</span>{% endif %}</span>
|
||
<span class="badge badge-{{ user.status }}">{{ t.client_status(&user.status) }}</span>
|
||
</div>
|
||
<div class="item-card-meta">
|
||
<span>🕐 {{ user.created_at.format("%d.%m.%Y %H:%M") }}</span>
|
||
</div>
|
||
{% if user.status == "active" %}
|
||
<form method="post" action="/admin/users/{{ user.id }}/telegram" class="inline-admin-form">
|
||
<div class="inline-admin-grid">
|
||
<div class="field">
|
||
<label class="label is-small">{{ t.users_telegram_chat_id }}</label>
|
||
<div class="control">
|
||
<input class="input is-small" type="text" name="telegram_chat_id" placeholder="123456789" value="{{ user.telegram_chat_id.as_deref().unwrap_or_default() }}">
|
||
</div>
|
||
</div>
|
||
<div>
|
||
<label class="admin-toggle admin-toggle-compact">
|
||
<input type="checkbox" name="telegram_notifications" value="true" {% if user.telegram_notifications == Some(true) %}checked{% endif %}>
|
||
<span class="admin-toggle-track" aria-hidden="true"><span></span></span>
|
||
<span><strong>{{ t.users_telegram_enabled }}</strong></span>
|
||
</label>
|
||
</div>
|
||
<div>
|
||
<button type="submit" class="button is-small is-info is-outlined">💾</button>
|
||
</div>
|
||
</div>
|
||
</form>
|
||
{% endif %}
|
||
<div class="item-card-actions">
|
||
{% if user.status == "active" %}
|
||
<form method="post" action="/admin/users/{{ user.id }}/archive">
|
||
<button type="submit" class="button is-small is-warning is-outlined btn-sm">{{ t.action_archive }}</button>
|
||
</form>
|
||
{% else %}
|
||
<form method="post" action="/admin/users/{{ user.id }}/activate">
|
||
<button type="submit" class="button is-small is-success is-outlined btn-sm">{{ t.action_activate }}</button>
|
||
</form>
|
||
{% endif %}
|
||
</div>
|
||
</div>
|
||
{% endfor %}
|
||
|
||
<section class="admin-section mt-5">
|
||
<header class="admin-section-head">
|
||
<span class="admin-section-icon" aria-hidden="true">➕</span>
|
||
<div><h2>{{ t.users_add_title }}</h2></div>
|
||
</header>
|
||
<div class="admin-section-body">
|
||
{% if let Some(err) = error.as_ref() %}
|
||
<div class="notification is-danger is-light">{{ err }}</div>
|
||
{% endif %}
|
||
<form method="post" action="/admin/users/add" class="form-grid">
|
||
<div class="field">
|
||
<label class="label is-small">{{ t.users_login }}</label>
|
||
<div class="control"><input class="input" type="text" name="login" required></div>
|
||
</div>
|
||
<div class="field">
|
||
<label class="label is-small">{{ t.users_display_name }}</label>
|
||
<div class="control"><input class="input" type="text" name="display_name"></div>
|
||
</div>
|
||
<div class="field">
|
||
<label class="label is-small">{{ t.users_password }}</label>
|
||
<div class="control"><input class="input" type="password" name="password" required minlength="4"></div>
|
||
</div>
|
||
<div class="field">
|
||
<label class="label is-small">{{ t.users_password_confirm }}</label>
|
||
<div class="control"><input class="input" type="password" name="password_confirm" required minlength="4"></div>
|
||
</div>
|
||
<div class="admin-field-wide">
|
||
<button type="submit" class="button is-primary">{{ t.users_add_button }}</button>
|
||
</div>
|
||
</form>
|
||
</div>
|
||
</section>
|
||
{% endblock %}
|