107 Zeilen
4.7 KiB
HTML
107 Zeilen
4.7 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="de">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<title>Lizenzübersicht - Admin Panel</title>
|
||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||
<style>
|
||
.status-aktiv { color: #28a745; }
|
||
.status-ablaufend { color: #ffc107; }
|
||
.status-abgelaufen { color: #dc3545; }
|
||
</style>
|
||
</head>
|
||
<body class="bg-light">
|
||
<nav class="navbar navbar-dark bg-dark">
|
||
<div class="container">
|
||
<span class="navbar-brand">🎛️ Lizenzverwaltung</span>
|
||
<div class="d-flex align-items-center">
|
||
<span class="text-white me-3">Angemeldet als: {{ username }}</span>
|
||
<a href="/logout" class="btn btn-outline-light btn-sm">Abmelden</a>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
<div class="container py-5">
|
||
<div class="d-flex justify-content-between align-items-center mb-4">
|
||
<h2>Lizenzübersicht</h2>
|
||
<div>
|
||
<a href="/" class="btn btn-primary">➕ Neue Lizenz</a>
|
||
<a href="/customers" class="btn btn-secondary">👥 Kunden</a>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="card">
|
||
<div class="card-body">
|
||
<div class="table-responsive">
|
||
<table class="table table-hover">
|
||
<thead>
|
||
<tr>
|
||
<th>ID</th>
|
||
<th>Lizenzschlüssel</th>
|
||
<th>Kunde</th>
|
||
<th>E-Mail</th>
|
||
<th>Typ</th>
|
||
<th>Gültig von</th>
|
||
<th>Gültig bis</th>
|
||
<th>Status</th>
|
||
<th>Aktiv</th>
|
||
<th>Aktionen</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
{% for license in licenses %}
|
||
<tr>
|
||
<td>{{ license[0] }}</td>
|
||
<td><code>{{ license[1] }}</code></td>
|
||
<td>{{ license[2] }}</td>
|
||
<td>{{ license[3] or '-' }}</td>
|
||
<td>
|
||
{% if license[4] == 'full' %}
|
||
<span class="badge bg-success">Vollversion</span>
|
||
{% else %}
|
||
<span class="badge bg-warning">Testversion</span>
|
||
{% endif %}
|
||
</td>
|
||
<td>{{ license[5].strftime('%d.%m.%Y') }}</td>
|
||
<td>{{ license[6].strftime('%d.%m.%Y') }}</td>
|
||
<td>
|
||
{% if license[8] == 'abgelaufen' %}
|
||
<span class="status-abgelaufen">⚠️ Abgelaufen</span>
|
||
{% elif license[8] == 'läuft bald ab' %}
|
||
<span class="status-ablaufend">⏰ Läuft bald ab</span>
|
||
{% else %}
|
||
<span class="status-aktiv">✅ Aktiv</span>
|
||
{% endif %}
|
||
</td>
|
||
<td>
|
||
{% if license[7] %}
|
||
<span class="text-success">✓</span>
|
||
{% else %}
|
||
<span class="text-danger">✗</span>
|
||
{% endif %}
|
||
</td>
|
||
<td>
|
||
<div class="btn-group btn-group-sm" role="group">
|
||
<a href="/license/edit/{{ license[0] }}" class="btn btn-outline-primary">✏️ Bearbeiten</a>
|
||
<form method="post" action="/license/delete/{{ license[0] }}" style="display: inline;" onsubmit="return confirm('Wirklich löschen?');">
|
||
<button type="submit" class="btn btn-outline-danger">🗑️ Löschen</button>
|
||
</form>
|
||
</div>
|
||
</td>
|
||
</tr>
|
||
{% endfor %}
|
||
</tbody>
|
||
</table>
|
||
|
||
{% if not licenses %}
|
||
<div class="text-center py-5">
|
||
<p class="text-muted">Noch keine Lizenzen vorhanden.</p>
|
||
<a href="/" class="btn btn-primary">Erste Lizenz erstellen</a>
|
||
</div>
|
||
{% endif %}
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</body>
|
||
</html> |