This commit is contained in:
Jeremy Kirsch 2026-05-18 20:14:12 +02:00
parent d4f1228dd6
commit 55828216fd

View File

@ -1973,7 +1973,7 @@
</nav>
<div class="panel active" id="vtab-cards">
<div class="filter-row" id="ev-filter">
<div class="filter-label-sm">Evidence Filter — einmal: gefunden &nbsp;·&nbsp; zweimal: ausgeschlossen</div>
<div class="filter-label-sm">Evidence Filter — Single click: found &nbsp;·&nbsp; double click: excluded</div>
</div>
<div class="ghost-grid" id="ghost-grid"></div>
</div>
@ -2081,11 +2081,10 @@
Credits &amp; Partner</div>
<div
style="font-family:'Share Tech Mono',monospace;font-size:9px;letter-spacing:3px;color:var(--muted);text-transform:uppercase;margin-top:5px;">
Danksagungen · Partner · Community</div>
Thanks · Partner · Community</div>
</div>
<div id="credits-admin-btn" style="display:none;">
<button class="btn-accent" id="btn-add-credit" onclick="openCreditForm(null)">+ Eintrag
hinzufügen</button>
<button class="btn-accent" id="btn-add-credit" onclick="openCreditForm(null)">+ Add Entry</button>
</div>
</div>
<div id="credits-partners-section">
@ -2222,17 +2221,17 @@
</select>
</div>
<div class="form-group"><label class="form-label">Sanity Note</label><input type="text" class="form-input"
id="ef-ss" placeholder="z.B. Target's individual sanity"></div>
id="ef-ss" placeholder="e.g. Target's individual sanity"></div>
</div>
<div class="form-group"><label class="form-label">Evidence (genau 3 auswählen)</label>
<div class="form-group"><label class="form-label">Evidence (select up to 3)</label>
<div class="ev-checks" id="ef-evs"></div>
</div>
<div class="form-row full">
<div class="form-group"><label class="form-label">Kurz-Tip (Ghost Card)</label><textarea
<div class="form-group"><label class="form-label">Short-Tip (Ghost Card)</label><textarea
class="form-textarea" id="ef-tip" rows="2"></textarea></div>
</div>
<div class="form-row full">
<div class="form-group"><label class="form-label">Beschreibung (Wiki)</label><textarea class="form-textarea"
<div class="form-group"><label class="form-label">Description (Wiki)</label><textarea class="form-textarea"
id="ef-desc" rows="3"></textarea></div>
</div>
<div class="form-group">
@ -2690,23 +2689,23 @@
const ul = document.getElementById('user-sub-list');
try {
const subs = await api('GET', '/api/submissions/mine');
if (!subs.length) { ul.innerHTML = '<div class="empty-state">📭 Du hast noch nichts eingereicht.</div>'; return; }
if (!subs.length) { ul.innerHTML = '<div class="empty-state">📭 You haven\'t submitted anything yet.</div>'; return; }
ul.innerHTML = '';
subs.forEach(sub => {
const tl = sub.type === 'tip' ? '💡 Tip' : sub.type === 'edit' ? '✏️ Korrektur' : '🆕 Neuer Geist';
const tl = sub.type === 'tip' ? '💡 Tip' : sub.type === 'edit' ? '✏️ Correction' : '🆕 New Ghost';
const sc = sub.status === 'approved' ? 'ssa' : sub.status === 'rejected' ? 'ssr' : 'ssp';
const sl = sub.status === 'approved' ? '✓ Angenommen' : sub.status === 'rejected' ? '✕ Abgelehnt' : '⏳ Ausstehend';
const sl = sub.status === 'approved' ? '✓ Approved' : sub.status === 'rejected' ? '✕ Rejected' : '⏳ Waiting for approval...';
const d = document.createElement('div'); d.className = 'usi';
d.innerHTML = `<div class="usi-meta"><span style="font-family:'Cinzel',serif;font-size:13px;color:var(--accent2)">${escH(sub.ghost_name || 'Allgemein')}</span><span style="font-family:'Share Tech Mono',monospace;font-size:9px;color:var(--muted2)">${tl}</span><span class="usi-st ${sc}">${sl}</span><span class="sub-time">${fmtTime(sub.created_at)}</span></div><div style="font-size:13.5px;color:var(--muted2);line-height:1.55;font-style:italic">${escH(sub.content)}</div>${sub.admin_note ? `<div style="font-size:12px;color:var(--accent2);margin-top:6px">Admin: ${escH(sub.admin_note)}</div>` : ''}`;
d.innerHTML = `<div class="usi-meta"><span style="font-family:'Cinzel',serif;font-size:13px;color:var(--accent2)">${escH(sub.ghost_name || 'General')}</span><span style="font-family:'Share Tech Mono',monospace;font-size:9px;color:var(--muted2)">${tl}</span><span class="usi-st ${sc}">${sl}</span><span class="sub-time">${fmtTime(sub.created_at)}</span></div><div style="font-size:13.5px;color:var(--muted2);line-height:1.55;font-style:italic">${escH(sub.content)}</div>${sub.admin_note ? `<div style="font-size:12px;color:var(--accent2);margin-top:6px">Admin: ${escH(sub.admin_note)}</div>` : ''}`;
ul.appendChild(d);
});
const approved = subs.filter(s => s.status === 'approved').length;
const ub = document.getElementById('badge-user'); ub.textContent = approved; ub.classList.toggle('show', approved > 0);
} catch { ul.innerHTML = '<div class="empty-state">Fehler beim Laden.</div>'; }
} catch { ul.innerHTML = '<div class="empty-state">Error while loading.</div>'; }
}
/* ── EXPORT ── */
function exportGhosts() { const b = new Blob([JSON.stringify({ ghosts }, null, 2)], { type: 'application/json' }); const a = document.createElement('a'); a.href = URL.createObjectURL(b); a.download = 'blair-ghosts.json'; a.click(); toast("Exportiert ↓", "info"); }
function exportGhosts() { const b = new Blob([JSON.stringify({ ghosts }, null, 2)], { type: 'application/json' }); const a = document.createElement('a'); a.href = URL.createObjectURL(b); a.download = 'blair-ghosts.json'; a.click(); toast("Exported ↓", "info"); }
/* ── MODAL / CONFIRM / TOAST ── */
function openModal(id) { document.getElementById(id).classList.add('open'); document.body.style.overflow = 'hidden'; }