Files
mindflux/src/main/resources/templates/admin/techtacular.html
T
AliceDarkest 9022961762 Volle Mindflux-App ins Deploy-Repo übernehmen
Ersetzt das Hello-World-Gerüst durch die vollständige Anwendung
(com.example.mindflux: 64 Klassen, Thymeleaf-Templates, Static-Assets,
Flyway V1–V6). Deploy-Infrastruktur (.gitea, Dockerfile) bleibt erhalten.

- pom: volle Abhängigkeiten (Security, Thymeleaf, JPA, Flyway), Spring Boot 3.4.4 / Java 17
- docker-compose: SPRING_DATASOURCE_* unverändert; App lauscht auf 8080
  (nginx -> mindflux:8080); Uploads-Volume; Admin-Passwörter via Gitea-Secrets
- Workflow: Deploy-Step injiziert MINDFLUX_ADMIN*_PASSWORD aus Secrets
- .dockerignore ergänzt; Hello-World (com.mindflux) und Test-Datei 'main' entfernt

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-26 14:51:30 +02:00

97 lines
4.1 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.
<!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>TechTacular-Verwaltung – Admin</title>
<link rel="stylesheet" href="/css/theme.css">
<script src="/js/theme.js"></script>
<style>
.ttadmin { max-width: 1000px; margin: 0 auto; padding: 0 1rem; width: 100%; }
.ttadmin .new-cat { margin-bottom: 1.6rem; }
.ttadmin .cat {
display: flex; align-items: center; flex-wrap: wrap; gap: 0.6rem;
justify-content: space-between;
background: var(--surface);
border: 1px solid var(--border);
border-left: 4px solid var(--accent);
border-radius: 12px; padding: 0.9rem 1.1rem; margin-bottom: 0.7rem;
box-shadow: var(--g-soft);
}
.ttadmin .cat.inactive { border-left-color: var(--danger); opacity: 0.7; }
.ttadmin .cat h2 { color: var(--heading); margin: 0; font-size: 1.1rem; }
.ttadmin .slug { color: var(--accent); font-size: 0.78rem; font-family: monospace; }
.ttadmin .count { color: var(--muted); font-size: 0.85rem; }
.ttadmin .badge { font-size: 0.68rem; text-transform: uppercase; padding: 0.14rem 0.45rem; border-radius: 7px; border: 1px solid var(--border-accent); }
.ttadmin .badge.on { background: var(--glow-w); color: var(--accent); }
.ttadmin .badge.off { background: rgba(255,95,107,.12); color: var(--danger); border-color: var(--danger); }
.ttadmin .actions { display: flex; gap: 0.45rem; flex-wrap: wrap; align-items: center; }
.ttadmin form.inline { display: flex; gap: 0.5rem; flex-wrap: wrap; align-items: center; }
.ttadmin .empty { color: var(--muted); }
</style>
</head>
<body>
<div class="mf-theme-float"><button class="mf-theme"></button></div>
<div class="mf-container" style="max-width:1040px">
<div class="mf-page-head">
<a th:href="@{/admin}" class="mf-back">⟵ Zurück zum Admin-Dashboard</a>
</div>
<header style="margin-bottom:1.4rem">
<div class="mf-eyebrow">TechTacular</div>
<h1 style="color:var(--heading); font-size:1.75rem; font-weight:800; margin-top:.35rem">🎯 TechTacular-Verwaltung</h1>
</header>
<main class="ttadmin">
<div class="mf-panel accent new-cat">
<h4>Neue Kategorie anlegen</h4>
<form class="inline" th:action="@{/admin/techtacular/categories}" method="post">
<input class="mf-input" style="width:auto; min-width:240px" type="text" name="title" placeholder="z. B. Datenbanken" required>
<button type="submit" class="mf-btn">➕ Kategorie anlegen</button>
</form>
</div>
<div class="cat" th:each="cat : ${categories}" th:classappend="${cat.active} ? '' : 'inactive'">
<div>
<h2 th:text="${cat.title}">Kategorie</h2>
<span class="slug" th:text="'/' + ${cat.slug}">/slug</span>
<span class="badge on" th:if="${cat.active}">aktiv</span>
<span class="badge off" th:unless="${cat.active}">inaktiv</span>
<span class="count" th:text="'· ' + ${cat.questionCount} + ' Fragen'">· 0 Fragen</span>
</div>
<div class="actions">
<a class="mf-btn" th:href="@{'/admin/techtacular/categories/' + ${cat.id}}">Fragen verwalten</a>
<form th:action="@{'/admin/techtacular/categories/' + ${cat.id} + '/toggle'}" method="post">
<button type="submit" class="mf-btn outline" th:text="${cat.active} ? 'Deaktivieren' : 'Aktivieren'">Toggle</button>
</form>
<form th:action="@{'/admin/techtacular/categories/' + ${cat.id} + '/delete'}" method="post"
onsubmit="return confirm('Kategorie inkl. aller Fragen löschen?');">
<button type="submit" class="mf-btn danger">Löschen</button>
</form>
</div>
</div>
<p th:if="${categories.isEmpty()}" class="empty">Noch keine Kategorien. Lege oben die erste an.</p>
</main>
</div>
<footer class="mf-footer">
<a href="#">Support</a>
<a href="#">Feedback</a>
<a href="#">Nutzungsbedingungen</a>
<a href="#">Richtlinien</a>
<a href="#">Datenschutz</a>
<a href="#">Impressum</a>
</footer>
</body>
</html>