- DB-Migration: UNIQUE(date) → UNIQUE(date, post_time) — alte DBs werden automatisch beim Start migriert (database.py init_db) - api_save: gibt article_id zurück für nachgelagerte Operationen - confirmPlan(): speichert auf selectedDate, verschiebt dann ggf. per reschedule auf Zieldatum — fixes "Kein Artikel für diesen Tag vorhanden" - Alle Source-Dateien (app.py, database.py, templates, ...) hinzugefügt - arakava-news: cursor-memory-system Artikel + SVG-Diagramm hinzugefügt Made-with: Cursor
96 lines
4.2 KiB
HTML
96 lines
4.2 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="de">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<title>Einstellungen — FünfVorAcht</title>
|
||
<link rel="stylesheet" href="/static/tailwind.min.css">
|
||
<style>
|
||
body { background: #0f172a; color: #e2e8f0; }
|
||
.card { background: #1e293b; border: 1px solid #334155; border-radius: 12px; }
|
||
input, select { background: #0f172a; border: 1px solid #334155; color: #e2e8f0; border-radius: 8px; }
|
||
input:focus, select:focus { outline: none; border-color: #3b82f6; }
|
||
</style>
|
||
</head>
|
||
<body class="min-h-screen">
|
||
<nav class="bg-slate-900 border-b border-slate-700 px-6 py-4 flex items-center justify-between">
|
||
<div class="flex items-center gap-4">
|
||
<div class="flex items-center gap-1 bg-slate-800 border border-slate-700 rounded-lg p-1">
|
||
<span class="flex items-center gap-1.5 bg-slate-700 text-white text-xs font-semibold px-3 py-1.5 rounded-md">🕗 FünfVorAcht</span>
|
||
<a href="https://redakteur.orbitalo.net" target="_blank"
|
||
class="flex items-center gap-1.5 text-slate-500 hover:text-slate-200 hover:bg-slate-700 text-xs font-medium px-3 py-1.5 rounded-md transition">📝 Redakteur</a>
|
||
</div>
|
||
</div>
|
||
<div class="flex gap-4 text-sm">
|
||
<a href="/" class="text-slate-400 hover:text-white">Studio</a>
|
||
<a href="/history" class="text-slate-400 hover:text-white">History</a>
|
||
<a href="/prompts" class="text-slate-400 hover:text-white">Prompts</a>
|
||
<a href="/settings" class="text-blue-400 font-semibold">Einstellungen</a>
|
||
<a href="/hilfe" class="text-slate-400 hover:text-white">❓ Hilfe</a>
|
||
</div>
|
||
</nav>
|
||
|
||
<div class="max-w-2xl mx-auto px-6 py-8 space-y-6">
|
||
<h1 class="text-2xl font-bold text-white">⚙️ Einstellungen</h1>
|
||
|
||
<!-- Kanal -->
|
||
<div class="card p-6">
|
||
<h2 class="text-white font-semibold mb-4">📢 Telegram Kanal</h2>
|
||
<form method="POST" action="/settings/channel" class="space-y-4">
|
||
<div>
|
||
<label class="text-xs text-slate-400 block mb-1">Kanal-ID oder @username</label>
|
||
<input type="text" name="telegram_id" value="{{ channel.telegram_id or '' }}"
|
||
class="w-full px-3 py-2 text-sm" placeholder="@meinkanal oder -1001234567890">
|
||
</div>
|
||
<div>
|
||
<label class="text-xs text-slate-400 block mb-1">Posting-Uhrzeit (HH:MM)</label>
|
||
<input type="text" name="post_time" value="{{ channel.post_time or '19:55' }}"
|
||
class="w-full px-3 py-2 text-sm" placeholder="19:55">
|
||
</div>
|
||
<button type="submit"
|
||
class="bg-blue-600 hover:bg-blue-500 text-white px-4 py-2 rounded-lg text-sm transition">
|
||
💾 Speichern
|
||
</button>
|
||
</form>
|
||
</div>
|
||
|
||
<!-- Quellen-Favoriten -->
|
||
<div class="card p-6">
|
||
<h2 class="text-white font-semibold mb-4">📌 Quellen-Favoriten</h2>
|
||
{% if favorites %}
|
||
<div class="space-y-2 mb-4">
|
||
{% for f in favorites %}
|
||
<div class="flex items-center justify-between py-2 border-b border-slate-700">
|
||
<div>
|
||
<span class="text-sm text-white">{{ f.label }}</span>
|
||
<span class="text-xs text-slate-400 ml-2">{{ f.url[:50] }}{% if f.url|length > 50 %}…{% endif %}</span>
|
||
</div>
|
||
<span class="text-xs text-slate-500">{{ f.used_count }}×</span>
|
||
</div>
|
||
{% endfor %}
|
||
</div>
|
||
{% endif %}
|
||
<form method="POST" action="/settings/favorite/add" class="flex gap-2">
|
||
<input type="text" name="label" placeholder="Name" class="px-3 py-2 text-sm w-32">
|
||
<input type="text" name="url" placeholder="https://…" class="px-3 py-2 text-sm flex-1">
|
||
<button type="submit"
|
||
class="bg-slate-600 hover:bg-slate-500 text-white px-3 py-2 rounded-lg text-sm transition">
|
||
+ Hinzufügen
|
||
</button>
|
||
</form>
|
||
</div>
|
||
|
||
<!-- Tags -->
|
||
<div class="card p-6">
|
||
<h2 class="text-white font-semibold mb-3">🏷️ Themen-Tags</h2>
|
||
<div class="flex flex-wrap gap-2">
|
||
{% for tag in tags %}
|
||
<span class="bg-slate-700 text-slate-300 text-xs px-3 py-1 rounded-full">#{{ tag.name }}</span>
|
||
{% endfor %}
|
||
</div>
|
||
<div class="text-xs text-slate-500 mt-3">Tags werden im Bot beim Generieren automatisch aus dem Prompt übernommen.</div>
|
||
</div>
|
||
|
||
</div>
|
||
</body>
|
||
</html>
|