34b050503d
- Rechtsseiten: Impressum-Platzhalter + echte Nutzungsbedingungen/AGB, Datenschutz (DSGVO) und Richtlinien; LegalController/ImpressumController, Footer app-weit verlinkt, Seiten als permitAll freigegeben. - FinalFlux: 28 Themen / ~742 Fragen überarbeitet (plausible Distraktoren statt Dummy-Antworten, echte Erklärungen) + echte Lehrtexte je Seite; Netzwerktopologien mit Inline-SVG-Diagrammen (Stern/Bus/Ring/Mesh/Baum). - Login/Registrierung als kombiniertes Dual-Panel (Slide-Overlay + Neon-Hover- Button), ausgelagert nach auth.css; Register-Duplikat -> /?registerError. - Konto löschen repariert: @Transactional + Löschen von Spielständen, Achievements und Profilbild-Datei (DSGVO Art. 17). Impressum-Zurück-Link login-abhängig. - App-weiter Farb-Relaunch auf "Back to the Future"-Palette: Feuer-Amber primär + Flux-Blau sekundär, warmer Glow; Dark/Light bleiben. Spiele-Feedback ohne Grün: richtig = Blau + Haken, falsch = Rot + Kreuz (neue Tokens --success/--danger/--secondary). Legacy-Cyan in style.css auf Variablen. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
84 lines
3.0 KiB
HTML
84 lines
3.0 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="de" data-theme="dark"
|
|
xmlns:th="http://www.thymeleaf.org"
|
|
xmlns:sec="https://www.thymeleaf.org/thymeleaf-extras-springsecurity6">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<title>Mindflux Admin Dashboard</title>
|
|
<link rel="stylesheet" href="/css/theme.css">
|
|
<script src="/js/theme.js"></script>
|
|
<style>
|
|
.admin-actions { display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:1rem; margin-top:1.1rem; }
|
|
.admin-card {
|
|
display:flex; align-items:center; gap:.6rem;
|
|
background:var(--surface-2); border:1px solid var(--border-accent); border-radius:13px;
|
|
padding:1.1rem 1.2rem; color:var(--heading); text-decoration:none; font-weight:700;
|
|
box-shadow:var(--g-soft); transition:transform .16s ease, box-shadow .25s ease, background-color .2s;
|
|
}
|
|
.admin-card:hover { transform:translateY(-3px); background:var(--surface); box-shadow:0 0 18px var(--glow-s); }
|
|
.admin-footer { margin-top:2rem; text-align:center; color:var(--muted); font-size:.85rem; }
|
|
.admin-footer a { color:var(--accent); text-decoration:none; }
|
|
.admin-footer a:hover { text-decoration:underline; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
|
|
<div class="mf-theme-float"><button class="mf-theme"></button></div>
|
|
|
|
<div class="mf-container">
|
|
|
|
<div class="mf-page-head">
|
|
<a th:href="@{/dashboard}" class="mf-back">⟵ Zurück zum Benutzer-Dashboard</a>
|
|
</div>
|
|
|
|
<header style="margin-bottom:1.4rem">
|
|
<div class="mf-eyebrow">Control Center</div>
|
|
<h1 style="color:var(--heading); font-size:1.85rem; font-weight:800; margin-top:.35rem">✨ Admin-Dashboard ✨</h1>
|
|
<p style="color:var(--muted); margin-top:.4rem">Hier steuerst du das System wie Doc den DeLorean!</p>
|
|
</header>
|
|
|
|
<main>
|
|
|
|
<div class="mf-panel accent">
|
|
<h4>Admin Aktionen</h4>
|
|
<div class="admin-actions">
|
|
<a th:href="@{/admin/users}" class="admin-card">👤 Benutzer verwalten</a>
|
|
<a th:href="@{/admin/mindmatch}" class="admin-card">🧩 MindMatch-Decks verwalten</a>
|
|
<a th:href="@{/admin/techtacular}" class="admin-card">🎯 TechTacular-Fragen verwalten</a>
|
|
</div>
|
|
<p style="margin-top:1.1rem; color:var(--muted);">
|
|
Hier entsteht noch Großes... ✨ Bleib dran!
|
|
</p>
|
|
</div>
|
|
|
|
</main>
|
|
|
|
<footer class="mf-footer">
|
|
<a href="#">Support</a>
|
|
<a href="#">Feedback</a>
|
|
<a href="/nutzungsbedingungen">Nutzungsbedingungen</a>
|
|
<a href="/richtlinien">Richtlinien</a>
|
|
<a href="/datenschutz">Datenschutz</a>
|
|
<a href="/impressum">Impressum</a>
|
|
</footer>
|
|
|
|
</div>
|
|
|
|
<script>
|
|
window.addEventListener('DOMContentLoaded', () => {
|
|
const successMessage = document.getElementById('successMessage');
|
|
if (successMessage) {
|
|
setTimeout(() => {
|
|
successMessage.style.opacity = '0';
|
|
setTimeout(() => {
|
|
successMessage.style.display = 'none';
|
|
}, 1500);
|
|
}, 3000);
|
|
}
|
|
});
|
|
</script>
|
|
|
|
</body>
|
|
</html>
|