bifroest/app/templates/admin_notifications.html
2026-10-27 08:34:17 +01:00

44 lines
2.5 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{% extends "base.html" %}
{% block title %}Benachrichtigungen{% endblock %}
{% block content %}
<div class="stack stack-sm">
<h1>Benachrichtigungen</h1>
<p class="text-muted">E-Mails zu Freigaben und Nachrichten an die Webhooks der Workspaces. Der Worker stellt sie zu und versucht es bei Fehlern bis zu fünfmal.</p>
</div>
<div class="aiw-stats">
<div class="card"><div class="card-body stat">
<span class="stat-label">E-Mail</span>
<span class="text-base">{% if mail_ready %}eingerichtet: <code>{{ settings.smtp_host }}:{{ settings.smtp_port }}</code>, Absender <code>{{ settings.smtp_from }}</code>{% else %}nicht eingerichtet (AIW_SMTP_HOST, AIW_SMTP_FROM){% endif %}</span>
</div></div>
<div class="card"><div class="card-body stat">
<span class="stat-label">Links in Nachrichten</span>
<span class="text-base">{% if settings.public_url %}<code>{{ settings.public_url }}</code>{% else %}nur Pfade; AIW_PUBLIC_URL setzen{% endif %}</span>
</div></div>
<div class="card"><div class="card-body stat">
<span class="stat-label">Webhook-Hosts</span>
<span class="text-base"><code>{{ settings.webhook_allowed_hosts or '–' }}</code></span>
</div></div>
</div>
<section class="card"><div class="card-body stack">
<h2 class="text-lg">Letzte 50</h2>
{% set labels = {'pending': 'wartet', 'sent': 'zugestellt', 'failed': 'fehlgeschlagen', 'skipped': 'übersprungen'} %}
{% if items %}
<div class="table-wrap"><table>
<thead><tr><th>Zeit</th><th>Kanal</th><th>Empfänger</th><th>Betreff</th><th>Status</th></tr></thead>
<tbody>
{% for n in items %}
<tr>
<td class="text-sm aiw-nowrap">{{ n.created.strftime('%d.%m.%Y %H:%M') }}</td>
<td class="text-sm">{{ 'E-Mail' if n.channel == 'email' else 'Webhook' }}</td>
<td class="text-sm">{{ names.get(n.user_id, '–') if n.channel == 'email' else 'Workspace ' ~ n.workspace_id }}</td>
<td class="text-sm">{{ n.subject }}</td>
<td><span class="badge {{ 'badge-success' if n.status == 'sent' else 'badge-danger' if n.status == 'failed' else 'badge-default' }}">{{ labels.get(n.status, n.status) }}</span>
{% if n.error %}<p class="text-xs text-muted aiw-break">{{ n.attempts }} Versuch{{ 'e' if n.attempts != 1 }}: {{ n.error }}</p>{% endif %}</td>
</tr>
{% endfor %}
</tbody>
</table></div>
{% else %}<p class="text-muted">Noch keine Benachrichtigungen.</p>{% endif %}
<p class="text-sm text-muted">Eine Test-Mail an dich selbst gibt es im <a href="/profile">Profil</a>.</p>
</div></section>
{% endblock %}