modified: web/blueprints/auth.py
modified: web/blueprints/group_admin.py modified: web/blueprints/panel.py modified: web/blueprints/site_admin.py modified: web/templates/admin/base.html modified: web/templates/admin/dashboard.html modified: web/templates/admin/group_edit.html modified: web/templates/admin/group_members.html modified: web/templates/admin/groups.html modified: web/templates/admin/user_edit.html modified: web/templates/admin/users.html modified: web/templates/auth/admin_login.html modified: web/templates/auth/login.html modified: web/templates/base.html modified: web/templates/group_admin/base.html modified: web/templates/group_admin/dashboard.html modified: web/templates/group_admin/database.html modified: web/templates/group_admin/member_edit.html modified: web/templates/group_admin/members.html modified: web/templates/panel/no_db.html
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="de" data-bs-theme="dark">
|
||||
<html lang="en" data-bs-theme="dark">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
@@ -16,8 +16,8 @@
|
||||
</a>
|
||||
<div class="d-flex align-items-center gap-3">
|
||||
<a href="{{ url_for('site_admin.dashboard') }}" class="nav-link text-white {{ 'fw-bold' if request.endpoint == 'site_admin.dashboard' }}">Dashboard</a>
|
||||
<a href="{{ url_for('site_admin.groups') }}" class="nav-link text-white {{ 'fw-bold' if request.endpoint == 'site_admin.groups' }}">Gruppen</a>
|
||||
<a href="{{ url_for('site_admin.users') }}" class="nav-link text-white {{ 'fw-bold' if request.endpoint == 'site_admin.users' }}">Benutzer</a>
|
||||
<a href="{{ url_for('site_admin.groups') }}" class="nav-link text-white {{ 'fw-bold' if request.endpoint == 'site_admin.groups' }}">Groups</a>
|
||||
<a href="{{ url_for('site_admin.users') }}" class="nav-link text-white {{ 'fw-bold' if request.endpoint == 'site_admin.users' }}">Users</a>
|
||||
<a href="{{ url_for('auth.logout') }}" class="btn btn-outline-light btn-sm">
|
||||
<i class="bi bi-box-arrow-right"></i> Logout
|
||||
</a>
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<div class="card border-0 bg-secondary bg-opacity-25">
|
||||
<div class="card-body text-center">
|
||||
<div class="fs-2 fw-bold text-danger">{{ stats.group_count }}</div>
|
||||
<div class="text-muted">Gruppen</div>
|
||||
<div class="text-muted">Groups</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -16,7 +16,7 @@
|
||||
<div class="card border-0 bg-secondary bg-opacity-25">
|
||||
<div class="card-body text-center">
|
||||
<div class="fs-2 fw-bold text-warning">{{ stats.user_count }}</div>
|
||||
<div class="text-muted">Benutzer</div>
|
||||
<div class="text-muted">Users</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -24,7 +24,7 @@
|
||||
<div class="card border-0 bg-secondary bg-opacity-25">
|
||||
<div class="card-body text-center">
|
||||
<div class="fs-2 fw-bold text-success">{{ stats.db_configured }}</div>
|
||||
<div class="text-muted">DBs konfiguriert</div>
|
||||
<div class="text-muted">DBs configured</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -42,14 +42,14 @@
|
||||
<div class="col-md-6">
|
||||
<div class="card border-secondary">
|
||||
<div class="card-header d-flex justify-content-between align-items-center">
|
||||
<span><i class="bi bi-collection-fill me-2"></i>Gruppen</span>
|
||||
<span><i class="bi bi-collection-fill me-2"></i>Groups</span>
|
||||
<a href="{{ url_for('site_admin.group_new') }}" class="btn btn-sm btn-success">
|
||||
<i class="bi bi-plus-lg"></i> Neu
|
||||
<i class="bi bi-plus-lg"></i> New
|
||||
</a>
|
||||
</div>
|
||||
<div class="card-body p-0">
|
||||
<table class="table table-hover mb-0">
|
||||
<thead><tr><th>Name</th><th>Mitglieder</th><th>DB</th><th></th></tr></thead>
|
||||
<thead><tr><th>Name</th><th>Members</th><th>DB</th><th></th></tr></thead>
|
||||
<tbody>
|
||||
{% for g in groups %}
|
||||
<tr>
|
||||
@@ -57,28 +57,28 @@
|
||||
<td>{{ g.member_count }}</td>
|
||||
<td>
|
||||
{% if g.has_db %}
|
||||
<span class="badge bg-success">Konfiguriert</span>
|
||||
<span class="badge bg-success">Configured</span>
|
||||
{% else %}
|
||||
<span class="badge bg-secondary">Keine</span>
|
||||
<span class="badge bg-secondary">None</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="text-end">
|
||||
<a href="{{ url_for('site_admin.view_group', group_id=g.id) }}" class="btn btn-sm btn-outline-info" title="Browse">
|
||||
<i class="bi bi-eye"></i>
|
||||
</a>
|
||||
<a href="{{ url_for('site_admin.group_edit', group_id=g.id) }}" class="btn btn-sm btn-outline-secondary" title="Bearbeiten">
|
||||
<a href="{{ url_for('site_admin.group_edit', group_id=g.id) }}" class="btn btn-sm btn-outline-secondary" title="Edit">
|
||||
<i class="bi bi-pencil"></i>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% else %}
|
||||
<tr><td colspan="4" class="text-muted text-center py-3">Keine Gruppen vorhanden</td></tr>
|
||||
<tr><td colspan="4" class="text-muted text-center py-3">No groups yet</td></tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="card-footer text-end">
|
||||
<a href="{{ url_for('site_admin.groups') }}" class="text-muted small">Alle Gruppen →</a>
|
||||
<a href="{{ url_for('site_admin.groups') }}" class="text-muted small">All groups →</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -86,14 +86,14 @@
|
||||
<div class="col-md-6">
|
||||
<div class="card border-secondary">
|
||||
<div class="card-header d-flex justify-content-between align-items-center">
|
||||
<span><i class="bi bi-people-fill me-2"></i>Benutzer</span>
|
||||
<span><i class="bi bi-people-fill me-2"></i>Users</span>
|
||||
<a href="{{ url_for('site_admin.user_new') }}" class="btn btn-sm btn-success">
|
||||
<i class="bi bi-plus-lg"></i> Neu
|
||||
<i class="bi bi-plus-lg"></i> New
|
||||
</a>
|
||||
</div>
|
||||
<div class="card-body p-0">
|
||||
<table class="table table-hover mb-0">
|
||||
<thead><tr><th>Benutzer</th><th>Gruppen</th><th>Admin</th><th></th></tr></thead>
|
||||
<thead><tr><th>User</th><th>Groups</th><th>Admin</th><th></th></tr></thead>
|
||||
<tbody>
|
||||
{% for u in users %}
|
||||
<tr>
|
||||
@@ -101,19 +101,19 @@
|
||||
<td>{{ u.group_count }}</td>
|
||||
<td>{% if u.is_site_admin %}<span class="badge bg-danger"><i class="bi bi-shield-fill"></i></span>{% endif %}</td>
|
||||
<td class="text-end">
|
||||
<a href="{{ url_for('site_admin.user_edit', user_id=u.id) }}" class="btn btn-sm btn-outline-secondary" title="Bearbeiten">
|
||||
<a href="{{ url_for('site_admin.user_edit', user_id=u.id) }}" class="btn btn-sm btn-outline-secondary" title="Edit">
|
||||
<i class="bi bi-pencil"></i>
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
{% else %}
|
||||
<tr><td colspan="4" class="text-muted text-center py-3">Keine Benutzer vorhanden</td></tr>
|
||||
<tr><td colspan="4" class="text-muted text-center py-3">No users yet</td></tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
<div class="card-footer text-end">
|
||||
<a href="{{ url_for('site_admin.users') }}" class="text-muted small">Alle Benutzer →</a>
|
||||
<a href="{{ url_for('site_admin.users') }}" class="text-muted small">All users →</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{% extends "admin/base.html" %}
|
||||
{% block title %}{{ 'Gruppe bearbeiten' if group else 'Neue Gruppe' }}{% endblock %}
|
||||
{% block title %}{{ 'Edit Group' if group else 'New Group' }}{% endblock %}
|
||||
{% block content %}
|
||||
<div class="d-flex align-items-center gap-2 mb-4">
|
||||
<a href="{{ url_for('site_admin.groups') }}" class="btn btn-sm btn-outline-secondary">
|
||||
<i class="bi bi-arrow-left"></i>
|
||||
</a>
|
||||
<h2 class="mb-0">{{ 'Gruppe bearbeiten' if group else 'Neue Gruppe erstellen' }}</h2>
|
||||
<h2 class="mb-0">{{ 'Edit Group' if group else 'Create New Group' }}</h2>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
@@ -14,19 +14,19 @@
|
||||
<div class="card-body">
|
||||
<form method="post">
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Gruppenname *</label>
|
||||
<label class="form-label">Group Name *</label>
|
||||
<input type="text" name="name" class="form-control" required
|
||||
value="{{ group.name if group else request.form.get('name', '') }}">
|
||||
</div>
|
||||
<div class="mb-4">
|
||||
<label class="form-label">Beschreibung</label>
|
||||
<label class="form-label">Description</label>
|
||||
<textarea name="description" class="form-control" rows="3">{{ group.description if group else request.form.get('description', '') }}</textarea>
|
||||
</div>
|
||||
<div class="d-flex gap-2">
|
||||
<button type="submit" class="btn btn-success">
|
||||
<i class="bi bi-check-lg me-1"></i>{{ 'Speichern' if group else 'Erstellen' }}
|
||||
<i class="bi bi-check-lg me-1"></i>{{ 'Save' if group else 'Create' }}
|
||||
</button>
|
||||
<a href="{{ url_for('site_admin.groups') }}" class="btn btn-outline-secondary">Abbrechen</a>
|
||||
<a href="{{ url_for('site_admin.groups') }}" class="btn btn-outline-secondary">Cancel</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@@ -1,21 +1,21 @@
|
||||
{% extends "admin/base.html" %}
|
||||
{% block title %}Mitglieder – {{ group.name }}{% endblock %}
|
||||
{% block title %}Members – {{ group.name }}{% endblock %}
|
||||
{% block content %}
|
||||
<div class="d-flex align-items-center gap-2 mb-4">
|
||||
<a href="{{ url_for('site_admin.groups') }}" class="btn btn-sm btn-outline-secondary">
|
||||
<i class="bi bi-arrow-left"></i>
|
||||
</a>
|
||||
<h2 class="mb-0">Mitglieder: <span class="text-success">{{ group.name }}</span></h2>
|
||||
<h2 class="mb-0">Members: <span class="text-success">{{ group.name }}</span></h2>
|
||||
</div>
|
||||
|
||||
<div class="row g-3">
|
||||
<!-- Aktuelle Mitglieder -->
|
||||
<div class="col-md-7">
|
||||
<div class="card border-secondary">
|
||||
<div class="card-header"><i class="bi bi-people-fill me-2"></i>Aktuelle Mitglieder ({{ members|length }})</div>
|
||||
<div class="card-header"><i class="bi bi-people-fill me-2"></i>Current Members ({{ members|length }})</div>
|
||||
<div class="card-body p-0">
|
||||
<table class="table table-hover mb-0">
|
||||
<thead><tr><th>Benutzer</th><th>Rolle</th><th class="text-end">Aktionen</th></tr></thead>
|
||||
<thead><tr><th>User</th><th>Role</th><th class="text-end">Actions</th></tr></thead>
|
||||
<tbody>
|
||||
{% for m in members %}
|
||||
<tr>
|
||||
@@ -29,20 +29,20 @@
|
||||
</td>
|
||||
<td class="text-end">
|
||||
<form method="post" action="{{ url_for('site_admin.group_member_toggle_role', group_id=group.id, user_id=m.id) }}" class="d-inline">
|
||||
<button type="submit" class="btn btn-sm btn-outline-warning" title="Rolle wechseln">
|
||||
<button type="submit" class="btn btn-sm btn-outline-warning" title="Toggle role">
|
||||
<i class="bi bi-arrow-left-right"></i>
|
||||
</button>
|
||||
</form>
|
||||
<form method="post" action="{{ url_for('site_admin.group_member_remove', group_id=group.id, user_id=m.id) }}" class="d-inline"
|
||||
onsubmit="return confirm('{{ m.username }} aus Gruppe entfernen?')">
|
||||
<button type="submit" class="btn btn-sm btn-outline-danger" title="Entfernen">
|
||||
onsubmit="return confirm('Remove {{ m.username }} from group?')">
|
||||
<button type="submit" class="btn btn-sm btn-outline-danger" title="Remove">
|
||||
<i class="bi bi-person-dash"></i>
|
||||
</button>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
{% else %}
|
||||
<tr><td colspan="3" class="text-muted text-center py-3">Keine Mitglieder</td></tr>
|
||||
<tr><td colspan="3" class="text-muted text-center py-3">No members</td></tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -53,12 +53,12 @@
|
||||
<!-- Benutzer hinzufügen -->
|
||||
<div class="col-md-5">
|
||||
<div class="card border-secondary">
|
||||
<div class="card-header"><i class="bi bi-person-plus-fill me-2"></i>Benutzer hinzufügen</div>
|
||||
<div class="card-header"><i class="bi bi-person-plus-fill me-2"></i>Add User</div>
|
||||
<div class="card-body">
|
||||
{% if non_members %}
|
||||
<form method="post" action="{{ url_for('site_admin.group_member_add', group_id=group.id) }}">
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Benutzer auswählen</label>
|
||||
<label class="form-label">Select User</label>
|
||||
<select name="user_id" class="form-select">
|
||||
{% for u in non_members %}
|
||||
<option value="{{ u.id }}">{{ u.username }}</option>
|
||||
@@ -66,18 +66,18 @@
|
||||
</select>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Rolle</label>
|
||||
<label class="form-label">Role</label>
|
||||
<select name="role" class="form-select">
|
||||
<option value="member">Member</option>
|
||||
<option value="admin">Admin</option>
|
||||
</select>
|
||||
</div>
|
||||
<button type="submit" class="btn btn-success w-100">
|
||||
<i class="bi bi-person-plus-fill me-1"></i>Hinzufügen
|
||||
<i class="bi bi-person-plus-fill me-1"></i>Add
|
||||
</button>
|
||||
</form>
|
||||
{% else %}
|
||||
<p class="text-muted text-center py-3">Alle Benutzer sind bereits Mitglied.</p>
|
||||
<p class="text-muted text-center py-3">All users are already members.</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
{% extends "admin/base.html" %}
|
||||
{% block title %}Gruppen{% endblock %}
|
||||
{% block title %}Groups{% endblock %}
|
||||
{% block content %}
|
||||
<div class="d-flex justify-content-between align-items-center mb-4">
|
||||
<h2><i class="bi bi-collection-fill me-2"></i>Gruppen</h2>
|
||||
<h2><i class="bi bi-collection-fill me-2"></i>Groups</h2>
|
||||
<a href="{{ url_for('site_admin.group_new') }}" class="btn btn-success">
|
||||
<i class="bi bi-plus-lg me-1"></i>Neue Gruppe
|
||||
<i class="bi bi-plus-lg me-1"></i>New Group
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
<table class="table table-hover mb-0">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>ID</th><th>Name</th><th>Beschreibung</th><th>Mitglieder</th><th>DB</th><th>Erstellt</th><th class="text-end">Aktionen</th>
|
||||
<th>ID</th><th>Name</th><th>Description</th><th>Members</th><th>DB</th><th>Created</th><th class="text-end">Actions</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@@ -25,32 +25,32 @@
|
||||
<td>{{ g.member_count }}</td>
|
||||
<td>
|
||||
{% if g.has_db %}
|
||||
<span class="badge bg-success"><i class="bi bi-database-fill-check me-1"></i>Konfiguriert</span>
|
||||
<span class="badge bg-success"><i class="bi bi-database-fill-check me-1"></i>Configured</span>
|
||||
{% else %}
|
||||
<span class="badge bg-secondary">Keine DB</span>
|
||||
<span class="badge bg-secondary">No DB</span>
|
||||
{% endif %}
|
||||
</td>
|
||||
<td class="text-muted small">{{ g.created_at | fmt_dt }}</td>
|
||||
<td class="text-end">
|
||||
<a href="{{ url_for('site_admin.view_group', group_id=g.id) }}" class="btn btn-sm btn-outline-info" title="Daten browsen">
|
||||
<a href="{{ url_for('site_admin.view_group', group_id=g.id) }}" class="btn btn-sm btn-outline-info" title="Browse data">
|
||||
<i class="bi bi-eye"></i>
|
||||
</a>
|
||||
<a href="{{ url_for('site_admin.group_members', group_id=g.id) }}" class="btn btn-sm btn-outline-secondary" title="Mitglieder">
|
||||
<a href="{{ url_for('site_admin.group_members', group_id=g.id) }}" class="btn btn-sm btn-outline-secondary" title="Members">
|
||||
<i class="bi bi-people-fill"></i>
|
||||
</a>
|
||||
<a href="{{ url_for('site_admin.group_edit', group_id=g.id) }}" class="btn btn-sm btn-outline-warning" title="Bearbeiten">
|
||||
<a href="{{ url_for('site_admin.group_edit', group_id=g.id) }}" class="btn btn-sm btn-outline-warning" title="Edit">
|
||||
<i class="bi bi-pencil"></i>
|
||||
</a>
|
||||
<form method="post" action="{{ url_for('site_admin.group_delete', group_id=g.id) }}" class="d-inline"
|
||||
onsubmit="return confirm('Gruppe {{ g.name }} löschen?')">
|
||||
<button type="submit" class="btn btn-sm btn-outline-danger" title="Löschen">
|
||||
onsubmit="return confirm('Delete group {{ g.name }}?')">
|
||||
<button type="submit" class="btn btn-sm btn-outline-danger" title="Delete">
|
||||
<i class="bi bi-trash3"></i>
|
||||
</button>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
{% else %}
|
||||
<tr><td colspan="7" class="text-muted text-center py-4">Noch keine Gruppen vorhanden.</td></tr>
|
||||
<tr><td colspan="7" class="text-muted text-center py-4">No groups yet.</td></tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
{% extends "admin/base.html" %}
|
||||
{% block title %}{{ 'Benutzer bearbeiten' if user else 'Neuer Benutzer' }}{% endblock %}
|
||||
{% block title %}{{ 'Edit User' if user else 'New User' }}{% endblock %}
|
||||
{% block content %}
|
||||
<div class="d-flex align-items-center gap-2 mb-4">
|
||||
<a href="{{ url_for('site_admin.users') }}" class="btn btn-sm btn-outline-secondary">
|
||||
<i class="bi bi-arrow-left"></i>
|
||||
</a>
|
||||
<h2 class="mb-0">{{ 'Benutzer bearbeiten: ' ~ user.username if user else 'Neuer Benutzer' }}</h2>
|
||||
<h2 class="mb-0">{{ 'Edit User: ' ~ user.username if user else 'New User' }}</h2>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
@@ -14,16 +14,16 @@
|
||||
<div class="card-body">
|
||||
<form method="post">
|
||||
<div class="mb-3">
|
||||
<label class="form-label">Benutzername *</label>
|
||||
<label class="form-label">Username *</label>
|
||||
<input type="text" name="username" class="form-control" required
|
||||
value="{{ user.username if user else request.form.get('username', '') }}">
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label">{{ 'Neues Passwort (leer lassen = unverändert)' if user else 'Passwort *' }}</label>
|
||||
<label class="form-label">{{ 'New Password (leave blank = unchanged)' if user else 'Password *' }}</label>
|
||||
<input type="password" name="password" class="form-control"
|
||||
{{ '' if user else 'required' }}>
|
||||
{% if not user %}
|
||||
<div class="form-text">Mindestens 8 Zeichen empfohlen.</div>
|
||||
<div class="form-text">Minimum 8 characters recommended.</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="mb-4">
|
||||
@@ -32,15 +32,15 @@
|
||||
value="1" {{ 'checked' if user and user.is_site_admin }}>
|
||||
<label class="form-check-label" for="is_site_admin">
|
||||
<span class="text-danger fw-semibold"><i class="bi bi-shield-fill me-1"></i>Site Admin</span>
|
||||
<small class="text-muted d-block">Voller Zugriff auf alle Gruppen und Einstellungen</small>
|
||||
<small class="text-muted d-block">Full access to all groups and settings</small>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
<div class="d-flex gap-2">
|
||||
<button type="submit" class="btn btn-success">
|
||||
<i class="bi bi-check-lg me-1"></i>{{ 'Speichern' if user else 'Erstellen' }}
|
||||
<i class="bi bi-check-lg me-1"></i>{{ 'Save' if user else 'Create' }}
|
||||
</button>
|
||||
<a href="{{ url_for('site_admin.users') }}" class="btn btn-outline-secondary">Abbrechen</a>
|
||||
<a href="{{ url_for('site_admin.users') }}" class="btn btn-outline-secondary">Cancel</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
{% extends "admin/base.html" %}
|
||||
{% block title %}Benutzer{% endblock %}
|
||||
{% block title %}Users{% endblock %}
|
||||
{% block content %}
|
||||
<div class="d-flex justify-content-between align-items-center mb-4">
|
||||
<h2><i class="bi bi-people-fill me-2"></i>Benutzer</h2>
|
||||
<h2><i class="bi bi-people-fill me-2"></i>Users</h2>
|
||||
<a href="{{ url_for('site_admin.user_new') }}" class="btn btn-success">
|
||||
<i class="bi bi-person-plus-fill me-1"></i>Neuer Benutzer
|
||||
<i class="bi bi-person-plus-fill me-1"></i>New User
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
<div class="card-body p-0">
|
||||
<table class="table table-hover mb-0">
|
||||
<thead>
|
||||
<tr><th>Benutzer</th><th>Gruppen</th><th>Site Admin</th><th>Erstellt</th><th class="text-end">Aktionen</th></tr>
|
||||
<tr><th>User</th><th>Groups</th><th>Site Admin</th><th>Created</th><th class="text-end">Actions</th></tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for u in users %}
|
||||
@@ -23,7 +23,7 @@
|
||||
<span class="badge bg-secondary me-1">{{ g.name }}
|
||||
{% if g.role == 'admin' %}<i class="bi bi-star-fill ms-1 text-warning"></i>{% endif %}
|
||||
</span>
|
||||
{% else %}<span class="text-muted small">Keine</span>{% endfor %}
|
||||
{% else %}<span class="text-muted small">None</span>{% endfor %}
|
||||
</td>
|
||||
<td>
|
||||
{% if u.is_site_admin %}
|
||||
@@ -32,19 +32,19 @@
|
||||
</td>
|
||||
<td class="text-muted small">{{ u.created_at | fmt_dt }}</td>
|
||||
<td class="text-end">
|
||||
<a href="{{ url_for('site_admin.user_edit', user_id=u.id) }}" class="btn btn-sm btn-outline-warning" title="Bearbeiten">
|
||||
<a href="{{ url_for('site_admin.user_edit', user_id=u.id) }}" class="btn btn-sm btn-outline-warning" title="Edit">
|
||||
<i class="bi bi-pencil"></i>
|
||||
</a>
|
||||
<form method="post" action="{{ url_for('site_admin.user_delete', user_id=u.id) }}" class="d-inline"
|
||||
onsubmit="return confirm('Benutzer {{ u.username }} löschen?')">
|
||||
<button type="submit" class="btn btn-sm btn-outline-danger" title="Löschen">
|
||||
onsubmit="return confirm('Delete user {{ u.username }}?')">
|
||||
<button type="submit" class="btn btn-sm btn-outline-danger" title="Delete">
|
||||
<i class="bi bi-trash3"></i>
|
||||
</button>
|
||||
</form>
|
||||
</td>
|
||||
</tr>
|
||||
{% else %}
|
||||
<tr><td colspan="5" class="text-muted text-center py-4">Keine Benutzer vorhanden.</td></tr>
|
||||
<tr><td colspan="5" class="text-muted text-center py-4">No users yet.</td></tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
Reference in New Issue
Block a user