style: Remove team management functionality and associated templates for a cleaner codebase

This commit is contained in:
2026-05-11 23:15:14 +02:00
parent daec91fcf7
commit 5ad33fc2a2
4 changed files with 1 additions and 540 deletions
-180
View File
@@ -1,180 +0,0 @@
{% extends "base.html" %}
{% block title %}Admin | Team Cards{% endblock %}
{% block content %}
<section class="panel">
<h1>Team Cards verwalten</h1>
<p>Beliebig viele Teammitglieder können hinzugefügt und sortiert werden. Jedes Mitglied hat Name, Rolle, Arbeit, Kurztext und ein Foto.</p>
</section>
<section class="card add-card">
<h2>Neues Teammitglied hinzufügen</h2>
<form method="post" enctype="multipart/form-data" class="form-grid">
<input type="hidden" name="action" value="create">
<label>Name</label>
<input name="name" maxlength="120" required>
<label>Rolle</label>
<input name="role" maxlength="120" required>
<label>Arbeit</label>
<input name="work" maxlength="220" required>
<label>Kurzbeschreibung</label>
<textarea name="bio" rows="3" maxlength="500"></textarea>
<label>Reihenfolge (1-999)</label>
<input type="number" name="sort_order" min="1" max="999" value="100" required>
<label>Foto (JPG, JPEG, PNG, WEBP)</label>
<input type="file" name="photo" accept=".jpg,.jpeg,.png,.webp" required>
<div class="row">
<button type="submit" class="btn primary">Hinzufügen</button>
</div>
</form>
</section>
<section class="card-grid">
{% for member in team_members %}
<article class="card">
<h2>{{ member.name }}</h2>
<form method="post" enctype="multipart/form-data" class="form-grid">
<input type="hidden" name="action" value="update">
<input type="hidden" name="member_id" value="{{ member.id }}">
<label>Name</label>
<input name="name" value="{{ member.name }}" maxlength="120" required>
<label>Rolle</label>
<input name="role" value="{{ member.role }}" maxlength="120" required>
<label>Arbeit</label>
<input name="work" value="{{ member.work }}" maxlength="220" required>
<label>Kurzbeschreibung</label>
<textarea name="bio" rows="3" maxlength="500">{{ member.bio }}</textarea>
<label>Reihenfolge (1-999)</label>
<input type="number" name="sort_order" min="1" max="999" value="{{ member.sort_order or 100 }}" required>
<label>Foto (JPG, JPEG, PNG, WEBP)</label>
<input type="file" name="photo" accept=".jpg,.jpeg,.png,.webp">
{% if member.photo %}
<img class="preview" src="{{ url_for('static', filename=member.photo) }}" alt="Teamfoto {{ member.name }}">
{% endif %}
<div class="row">
<button type="submit" class="btn primary">Speichern</button>
</div>
</form>
<form method="post" class="delete-form" onsubmit="return confirm('Mitglied wirklich entfernen?');">
<input type="hidden" name="action" value="delete">
<input type="hidden" name="member_id" value="{{ member.id }}">
<button type="submit" class="btn danger">Entfernen</button>
</form>
</article>
{% else %}
<article class="card">
<h2>Noch keine Teammitglieder</h2>
<p>Über das Formular oben kann jetzt das erste Teammitglied erstellt werden.</p>
</article>
{% endfor %}
</section>
<style>
.panel {
margin-bottom: 1rem;
}
.card-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(290px, 1fr));
gap: 1rem;
}
.card {
background: #fff;
border: 1px solid #d8e1e8;
border-radius: 14px;
padding: 1rem;
box-shadow: 0 10px 24px rgba(20, 40, 55, 0.05);
}
.add-card {
margin-bottom: 1rem;
}
.card h2 {
margin: 0 0 0.7rem;
color: #113d59;
font-size: 1.2rem;
}
.form-grid {
display: grid;
gap: 0.45rem;
}
label {
font-size: 0.86rem;
font-weight: 700;
color: #4b677c;
}
input,
textarea {
border: 1px solid #bdd0dd;
border-radius: 9px;
padding: 0.5rem 0.6rem;
font: inherit;
width: 100%;
}
textarea {
resize: vertical;
}
.preview {
margin-top: 0.4rem;
width: 100%;
max-height: 200px;
object-fit: cover;
border: 1px solid #d0d9de;
border-radius: 10px;
}
.row {
margin-top: 0.4rem;
display: flex;
gap: 0.45rem;
}
.btn {
border: none;
border-radius: 999px;
padding: 0.5rem 0.85rem;
font-weight: 700;
cursor: pointer;
}
.btn.primary {
color: #fff;
background: linear-gradient(120deg, #0b5b89 0%, #0b4262 100%);
}
.btn.danger {
color: #842f2f;
background: #fff4f4;
border: 1px solid #e7b9b9;
}
.delete-form {
margin-top: 0.8rem;
}
</style>
{% endblock %}
+1 -4
View File
@@ -518,12 +518,11 @@
<div class="nav-links" id="mainNav" aria-label="Main Navigation" aria-hidden="true">
<a href="{{ url_for('default') }}">Start</a>
<a href="{{ url_for('dienstleistungen') }}">Für Schulen</a>
<a href="{{ url_for('team') }}">Team</a>
<a href="{{ url_for('preise') }}">Preise</a>
<a href="{{ url_for('kontakt') }}">Kontakt</a>
{% if session.get('is_admin') %}
<a class="nav-user-link" href="{{ url_for('admin_invoices') }}">Rechnungsverwaltung</a>
<a class="nav-user-link" href="{{ url_for('admin_blog') }}">Blog verwalten</a>
<a class="nav-user-link" href="{{ url_for('admin_team') }}">Team Cards</a>
<a class="nav-user-link" href="{{ url_for('admin_chats') }}">Admin-Chat</a>
<a class="nav-user-link" href="{{ url_for('admin_tickets') }}">Support-Center</a>
<a class="nav-user-link" href="{{ url_for('admin_system_tools') }}">System-Tools</a>
@@ -550,7 +549,6 @@
<a href="{{ url_for('admin_tickets') }}">Support-Center</a>
<a href="{{ url_for('admin_system_tools') }}">System-Tools</a>
<a href="{{ url_for('admin_blog') }}">Blog verwalten</a>
<a href="{{ url_for('admin_team') }}">Team Cards</a>
<a href="{{ url_for('admin_instances') }}">Schul-Instanzen</a>
</div>
</details>
@@ -597,7 +595,6 @@
<ul class="footer-links">
<li><a href="{{ url_for('default') }}">Start</a></li>
<li><a href="{{ url_for('dienstleistungen') }}">Leistungsübersicht</a></li>
<li><a href="{{ url_for('team') }}">Team</a></li>
<li><a href="{{ url_for('blog') }}">Neuigkeiten</a></li>
<li><a href="{{ url_for('preise') }}">Preise</a></li>
</ul>
-171
View File
@@ -1,171 +0,0 @@
{% extends "base.html" %}
{% block title %}Team | Invario{% endblock %}
{% block content %}
<section class="page-hero">
<h1>Unser Team für Schulen</h1>
<p>Unsere Ansprechpartner mit klaren Verantwortungen.</p>
</section>
<section class="team-grid" aria-label="Team Cards">
{% if team_members and team_members|length > 0 %}
{% for member in team_members %}
<article class="member-card">
{% if member and member.photo %}
<img class="member-photo" src="{{ url_for('static', filename=member.photo) }}" alt="Teamfoto {{ member.name }}">
{% endif %}
<div class="member-content">
<p class="member-slot">Teammitglied</p>
<h2>{{ member.name }}</h2>
<p class="member-role">{{ member.role }}</p>
<p><strong>Arbeit:</strong> {{ member.work }}</p>
{% if member.bio %}
<p>{{ member.bio }}</p>
{% endif %}
</div>
</article>
{% endfor %}
{% endif %}
</section>
{% if not team_members or team_members|length == 0 %}
<p>Derzeit sind keine Teammitglieder eingetragen. </p>
{% endif %}
<section class="values">
<h2>Arbeitsprinzipien</h2>
<p>Direkte Kommunikation, saubere Einführung und verbindliche Betreuung im laufenden Betrieb.</p>
</section>
<style>
.page-hero {
margin-bottom: 2rem;
}
.team-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 0.75rem;
margin-bottom: 2rem;
}
.member-card {
background: #ffffff;
border: 1px solid #d8dfd7;
border-radius: 16px;
overflow: hidden;
box-shadow: 0 12px 24px rgba(25, 45, 41, 0.06);
display: grid;
grid-template-rows: auto 1fr;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
.member-card:hover {
box-shadow: 0 20px 32px rgba(25, 45, 41, 0.12);
transform: translateY(-4px);
border-color: #c0ccc8;
}
.member-photo {
width: 100%;
aspect-ratio: 3 / 4;
object-fit: cover;
object-position: center 20%;
background: linear-gradient(135deg, #eef2ee 0%, #e0e8e4 100%);
display: block;
}
.member-content {
padding: 0.75rem;
display: grid;
gap: 0.3rem;
}
.member-slot {
margin: 0;
color: #5f7479;
font-size: 0.85rem;
font-weight: 700;
letter-spacing: 0.04em;
text-transform: uppercase;
}
.member-content h2 {
margin: 0;
color: #264f56;
font-size: 1.4rem;
line-height: 1.1;
margin-top: 0.1rem;
}
.member-role {
margin: 0;
color: #3b6168;
font-weight: 600;
font-size: 1rem;
}
.member-content p:last-child {
margin: 0.25rem 0 0 0;
color: #505550;
font-size: 1rem;
line-height: 1.3;
}
.values {
margin-top: 3rem;
background: #ffffff;
border: 1px solid #d8dfd7;
border-radius: 14px;
padding: 2rem;
}
.values h2 {
color: #265057;
margin-bottom: 0.75rem;
font-size: clamp(1.25rem, 2vw, 1.5rem);
}
.values p {
color: #505550;
line-height: 1.6;
}
@media (max-width: 900px) {
.team-grid {
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 1.5rem;
}
.member-photo {
height: 240px;
}
}
@media (max-width: 600px) {
.team-grid {
grid-template-columns: 1fr;
gap: 1.5rem;
}
.member-card {
border-radius: 12px;
}
.member-content {
padding: 1.25rem;
}
.member-photo {
height: 200px;
}
.values {
padding: 1.5rem;
margin-top: 2rem;
}
}
</style>
{% endblock %}