frankenbot/templates/team.html
pdyde 0e02611c87 feat: Add Team-Members management page
- New /team route to view all team members
- Add/activate/deactivate team members via UI
- Display name, role, email, responsibilities, telegram_id
- Integrated into main navigation
- Self-learning system info displayed
2026-02-21 14:20:07 +01:00

158 lines
4.9 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 %}Team-Members{% endblock %}
{% block content %}
<div class="row mb-4">
<div class="col">
<h1 class="mb-3">
<span style="font-size: 2rem;">👥</span> Team-Members
</h1>
<p class="text-muted">
Verwalte die registrierten Team-Mitglieder des Diversity-Ball Wien 2026.
Das Self-Learning System lernt automatisch neue Absender kennen.
</p>
</div>
</div>
{% if team_members %}
<div class="row">
{% for member in team_members %}
<div class="col-md-6 col-lg-4 mb-4">
<div class="card h-100">
<div class="card-body">
<div class="d-flex justify-content-between align-items-start mb-3">
<h5 class="card-title mb-0">{{ member.name }}</h5>
{% if member.active %}
<span class="badge bg-success">Aktiv</span>
{% else %}
<span class="badge bg-secondary">Inaktiv</span>
{% endif %}
</div>
<h6 class="text-muted mb-3">{{ member.role }}</h6>
<div class="mb-3">
<small class="text-muted d-block mb-1">Email:</small>
<a href="mailto:{{ member.email }}" class="text-decoration-none">
{{ member.email }}
</a>
</div>
<div class="mb-3">
<small class="text-muted d-block mb-1">Aufgaben:</small>
<p class="small mb-0" style="white-space: pre-line;">{{ member.responsibilities }}</p>
</div>
{% if member.telegram_id %}
<div class="mb-2">
<small class="text-muted">📱 Telegram: {{ member.telegram_id }}</small>
</div>
{% endif %}
<div class="text-muted small">
<small>Erstellt: {{ member.created_at }}</small>
</div>
</div>
<div class="card-footer bg-transparent border-top-0">
<div class="d-flex gap-2">
<button class="btn btn-sm btn-outline-primary" onclick="editMember({{ member.id }})">
✏️ Bearbeiten
</button>
{% if member.active %}
<button class="btn btn-sm btn-outline-warning" onclick="deactivateMember({{ member.id }})">
🚫 Deaktivieren
</button>
{% else %}
<button class="btn btn-sm btn-outline-success" onclick="activateMember({{ member.id }})">
✅ Aktivieren
</button>
{% endif %}
</div>
</div>
</div>
</div>
{% endfor %}
</div>
{% else %}
<div class="alert alert-info">
<strong> Keine Team-Members gefunden</strong><br>
Das Self-Learning System wird automatisch Team-Members hinzufügen, wenn neue Absender Emails senden.
</div>
{% endif %}
<div class="row mt-4">
<div class="col">
<div class="card">
<div class="card-body">
<h5 class="card-title mb-3"> Neues Team-Mitglied hinzufügen</h5>
<form method="POST" action="/team/add">
<div class="row g-3">
<div class="col-md-6">
<label class="form-label">Name</label>
<input type="text" class="form-control" name="name" required>
</div>
<div class="col-md-6">
<label class="form-label">Email</label>
<input type="email" class="form-control" name="email" required>
</div>
<div class="col-md-6">
<label class="form-label">Rolle</label>
<input type="text" class="form-control" name="role" required>
</div>
<div class="col-md-6">
<label class="form-label">Telegram Chat ID (optional)</label>
<input type="text" class="form-control" name="telegram_chat_id" placeholder="z.B. 123456789">
</div>
<div class="col-12">
<label class="form-label">Aufgaben / Verantwortlichkeiten</label>
<textarea class="form-control" name="responsibilities" rows="3" required></textarea>
</div>
<div class="col-12">
<button type="submit" class="btn btn-primary">
Team-Member hinzufügen
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<script>
function editMember(id) {
alert('Edit-Funktion in Entwicklung - Member ID: ' + id);
}
function deactivateMember(id) {
if (confirm('Team-Member wirklich deaktivieren?')) {
fetch(`/team/${id}/deactivate`, { method: 'POST' })
.then(response => response.json())
.then(data => {
if (data.success) {
location.reload();
} else {
alert('Fehler: ' + data.error);
}
});
}
}
function activateMember(id) {
if (confirm('Team-Member wieder aktivieren?')) {
fetch(`/team/${id}/activate`, { method: 'POST' })
.then(response => response.json())
.then(data => {
if (data.success) {
location.reload();
} else {
alert('Fehler: ' + data.error);
}
});
}
}
</script>
{% endblock %}