dialog: Menü-Eintrag DIALOG + Übersicht aller Dialoge; Breite an andere Seiten angeglichen
- Menü: FORUM (extern) → DIALOG → /dialog/ - /dialog/ ohne ?thread zeigt Übersicht aller begonnenen Dialoge (GET /api/threads, Titel aus Inhaltsdateien, sortiert nach Aktivität) - .dialog-page füllt jetzt die normale Inhaltsspalte (kein eigenes max-width/ Padding mehr) → gleiche Breite wie andere Seiten - Threads entstehen erst mit der ersten Wortmeldung Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+24
-1
@@ -4,7 +4,30 @@
|
||||
const root = document.getElementById('ob-dialog');
|
||||
if (!root) return;
|
||||
const thread = root.dataset.thread || new URLSearchParams(location.search).get('thread') || '';
|
||||
if (!thread) { root.innerHTML = '<p class="dialog-empty">Kein Thema gewählt.</p>'; return; }
|
||||
if (!thread) { renderOverview(); return; }
|
||||
|
||||
// Übersicht aller begonnenen Dialoge (wenn kein Thema gewählt).
|
||||
function renderOverview() {
|
||||
root.innerHTML = '';
|
||||
const h = document.createElement('h2'); h.className = 'dialog-title'; h.textContent = 'Dialoge';
|
||||
const list = document.createElement('div'); list.className = 'dialog-overview';
|
||||
root.append(h, list);
|
||||
fetch('/api/threads').then((r) => (r.ok ? r.json() : [])).then((rows) => {
|
||||
if (!rows.length) {
|
||||
const e = document.createElement('p'); e.className = 'dialog-empty';
|
||||
e.textContent = 'Noch keine Dialoge begonnen.';
|
||||
list.appendChild(e); return;
|
||||
}
|
||||
rows.forEach((t) => {
|
||||
const a = document.createElement('a'); a.className = 'dialog-overview-item';
|
||||
a.href = '/dialog/?thread=' + encodeURIComponent(t.thread);
|
||||
const ti = document.createElement('span'); ti.className = 'dialog-ov-title'; ti.textContent = t.title;
|
||||
const mt = document.createElement('span'); mt.className = 'dialog-ov-meta';
|
||||
mt.textContent = t.count + (t.count === 1 ? ' Wortmeldung' : ' Wortmeldungen');
|
||||
a.append(ti, mt); list.appendChild(a);
|
||||
});
|
||||
}).catch(() => {});
|
||||
}
|
||||
const TKEY = 'ob_dialog_token', NKEY = 'ob_dialog_name';
|
||||
let token = localStorage.getItem(TKEY);
|
||||
let myName = localStorage.getItem(NKEY);
|
||||
|
||||
Reference in New Issue
Block a user