From 113bc1bc20be5f6259f94ddb088f84db16963acc Mon Sep 17 00:00:00 2001 From: Kendrick Bollens Date: Thu, 18 Jun 2026 09:16:36 +0200 Subject: [PATCH] web-editor: TinyMCE-Editor, Verwaltung, schnelles Tree-Laden, CI-Design MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - TinyMCE (selbst gehostet) mit Base64-Bildeinbettung statt contenteditable - Kategorie-Tabs Vorlagen/Fußzeilen/Signaturen + Verwaltung (Übersicht, Abteilungen, E-Mail-Zuordnung, Schlagwörter) - /api/tree über rekursive git/trees-API (1 statt ~17 Anfragen) - Plus-Jakarta-Sans-Font, SVG-Icons, farbige Abteilungs-Badges - Platzhalter-Hinweis (nur in Signatur-Vorlage _vorlage.html) - LOCAL- und DEMO-Modus im Server Co-Authored-By: Claude Opus 4.8 (1M context) --- web-editor/public/app.js | 1373 +++++++++++---------------- web-editor/public/fonts/pjs-400.ttf | Bin 0 -> 63336 bytes web-editor/public/fonts/pjs-500.ttf | Bin 0 -> 63404 bytes web-editor/public/fonts/pjs-600.ttf | Bin 0 -> 63412 bytes web-editor/public/fonts/pjs-700.ttf | Bin 0 -> 63336 bytes web-editor/public/fonts/pjs-800.ttf | Bin 0 -> 63372 bytes web-editor/public/index.html | 61 +- web-editor/public/style.css | 404 ++++---- web-editor/server.js | 122 ++- 9 files changed, 857 insertions(+), 1103 deletions(-) create mode 100644 web-editor/public/fonts/pjs-400.ttf create mode 100644 web-editor/public/fonts/pjs-500.ttf create mode 100644 web-editor/public/fonts/pjs-600.ttf create mode 100644 web-editor/public/fonts/pjs-700.ttf create mode 100644 web-editor/public/fonts/pjs-800.ttf diff --git a/web-editor/public/app.js b/web-editor/public/app.js index 3099e4c..4d7b75e 100644 --- a/web-editor/public/app.js +++ b/web-editor/public/app.js @@ -1,147 +1,110 @@ /* HPS Vorlagen & Signaturen — Web-Editor Frontend - * Vanilla JS, keine Abhängigkeiten. Spricht ausschließlich mit dem - * gleichnamigen Express-Backend (same origin) über die /api-Endpunkte. + * Vanilla JS + TinyMCE (selbst gehostet). Spricht ausschließlich mit dem + * Express-Backend (same origin) über die /api-Endpunkte. */ (function () { 'use strict'; - // ── Konstanten (müssen mit dem Backend übereinstimmen) ── + // ── Backend-Konstanten ── const SHARED_FOLDER = '_gemeinsam'; const USER_FOLDER = '_benutzer'; const SIG_FOOTERS = 'signatures/footers'; const SIG_HEADERS = 'signatures/headers'; - // ── Globaler Zustand ── - const state = { - config: null, // /api/config - tree: null, // /api/tree - current: null, // { path, friendly, sha, exists, isNew, category } - dirty: false, - view: 'visual', // 'visual' | 'html' - collapsed: { templates: false, footers: false, headers: false }, - groupsCollapsed: {}, // key -> bool (Vorlagen-Untergruppen) - pendingNetwork: 0, + // ── Icon-Set (Lucide-Stil, currentColor) ── + const ICONS = { + 'file-text': '', + 'panel-bottom': '', + 'pen-line': '', + 'settings': '', + 'globe': '', + 'building': '', + 'at-sign': '', + 'plus': '', + 'refresh': '', + 'reload': '', + 'save': '', + 'trash': '', + 'search': '', + 'dashboard': '', + 'tag': '', + 'link2': '', + 'chevron': '', + 'plug': '', }; + function icon(name, size) { + const s = size || 18; + return '' + (ICONS[name] || '') + ''; + } + function hydrateIcons(root) { + (root || document).querySelectorAll('[data-icon]').forEach((e) => { e.innerHTML = icon(e.dataset.icon); }); + } - // ── DOM-Referenzen ── + // ── Zustand ── + const state = { + config: null, tree: null, + category: 'templates', // templates | footers | headers | admin + adminView: 'overview', // overview | departments | mapping | tags + current: null, dirty: false, + view: 'visual', html: '', + groupsCollapsed: {}, + }; + let ed = null, edReady = false, suppressDirty = false, pendingNetwork = 0; + + // ── DOM ── const $ = (id) => document.getElementById(id); const el = { - statusPill: $('status-pill'), - statusText: $('status-text'), - configBanner: $('config-banner'), - treeTemplates:$('tree-templates'), - treeFooters: $('tree-footers'), - treeHeaders: $('tree-headers'), - emptyState: $('empty-state'), - editorPanel: $('editor-panel'), - fileFriendly: $('file-friendly'), - filePath: $('file-path'), - dirtyBadge: $('dirty-badge'), - btnSave: $('btn-save'), - btnReload: $('btn-reload'), - btnDelete: $('btn-delete'), - btnRefresh: $('btn-refresh-tree'), - treeSearch: $('tree-search'), - btnNewDept: $('btn-new-department'), - btnNewFooter: $('btn-new-footer'), - btnNewHeader: $('btn-new-header'), - tabVisual: $('tab-visual'), - tabHtml: $('tab-html'), - formatToolbar:$('format-toolbar'), - visualEditor: $('visual-editor'), - htmlEditor: $('html-editor'), - visualWrap: $('visual-wrap'), - htmlWrap: $('html-wrap'), - previewFrame: $('preview-frame'), - toastStack: $('toast-stack'), - loading: $('loading-overlay'), - fmtColor: $('fmt-color'), - fmtColorSwatch: $('fmt-color-swatch'), - fmtFontSize: $('fmt-fontsize'), - fmtLink: $('fmt-link'), - fmtImage: $('fmt-image'), - // Modals - confirmBackdrop: $('confirm-backdrop'), - confirmTitle: $('confirm-title'), - confirmMessage: $('confirm-message'), - confirmOk: $('confirm-ok'), - confirmCancel:$('confirm-cancel'), - promptBackdrop: $('prompt-backdrop'), - promptForm: $('prompt-form'), - promptTitle: $('prompt-title'), - promptFields: $('prompt-fields'), - promptOk: $('prompt-ok'), - promptCancel: $('prompt-cancel'), + statusPill: $('status-pill'), statusText: $('status-text'), configBanner: $('config-banner'), + catTabs: document.querySelectorAll('.cat-tab'), + btnRefresh: $('btn-refresh'), btnListAdd: $('btn-list-add'), btnListAddLabel: $('btn-list-add-label'), + treeSearch: $('tree-search'), listBody: $('list-body'), + emptyState: $('empty-state'), editorPanel: $('editor-panel'), adminPanel: $('admin-panel'), + fileFriendly: $('file-friendly'), filePath: $('file-path'), dirtyBadge: $('dirty-badge'), + btnSave: $('btn-save'), btnReload: $('btn-reload'), btnDelete: $('btn-delete'), + tabVisual: $('tab-visual'), tabHtml: $('tab-html'), tabPreview: $('tab-preview'), + paneVisual: $('pane-visual'), paneHtml: $('pane-html'), panePreview: $('pane-preview'), + htmlEditor: $('html-editor'), previewFrame: $('preview-frame'), + toastStack: $('toast-stack'), loading: $('loading-overlay'), + confirmBackdrop: $('confirm-backdrop'), confirmTitle: $('confirm-title'), confirmMessage: $('confirm-message'), + confirmOk: $('confirm-ok'), confirmCancel: $('confirm-cancel'), + promptBackdrop: $('prompt-backdrop'), promptForm: $('prompt-form'), promptTitle: $('prompt-title'), + promptFields: $('prompt-fields'), promptOk: $('prompt-ok'), promptCancel: $('prompt-cancel'), }; - // ──────────────────────────────────────────────────────────── - // Hilfsfunktionen - // ──────────────────────────────────────────────────────────── - - // HTML-escapen für sichere Anzeige in Attributen/Text. - function esc(s) { - return String(s) - .replace(/&/g, '&').replace(//g, '>') - .replace(/"/g, '"').replace(/'/g, '''); - } - - // Dateiname aus Vorlagennamen ableiten (exakt laut Vorgabe), .html ergänzt der Aufrufer. + // ── Helfer ── + function esc(s) { return String(s).replace(/&/g, '&').replace(//g, '>').replace(/"/g, '"').replace(/'/g, '''); } function slugifyName(name) { - return name - .replace(/[äÄ]/g, 'ae').replace(/[öÖ]/g, 'oe').replace(/[üÜ]/g, 'ue').replace(/ß/g, 'ss') - .replace(/[/\\:*?"<>|]/g, '-') - .replace(/^[\s.-]+|[\s.-]+$/g, '') - .trim(); - } - - // Für Signatur-Köpfe: zusätzlich klein + Leerzeichen → '-'. - function slugifyHeaderName(name) { - return slugifyName(name).toLowerCase().replace(/\s+/g, '-'); - } - - // Debounce-Helfer. - function debounce(fn, ms) { - let t; - return function (...args) { clearTimeout(t); t = setTimeout(() => fn.apply(this, args), ms); }; + return name.replace(/[äÄ]/g, 'ae').replace(/[öÖ]/g, 'oe').replace(/[üÜ]/g, 'ue').replace(/ß/g, 'ss') + .replace(/[/\\:*?"<>|]/g, '-').replace(/^[\s.-]+|[\s.-]+$/g, '').trim(); } + function slugifyHeaderName(name) { return slugifyName(name).toLowerCase().replace(/\s+/g, '-'); } // ── Toasts ── function toast(message, type) { const t = document.createElement('div'); t.className = 'toast' + (type ? ' toast-' + type : ''); - const icon = type === 'success' ? '✓' : type === 'error' ? '⚠' : 'ℹ'; - t.innerHTML = '' + icon + ''; + const ic = type === 'success' ? '✓' : type === 'error' ? '⚠' : 'ℹ'; + t.innerHTML = '' + ic + ''; t.querySelector('.toast-msg').textContent = message; el.toastStack.appendChild(t); - setTimeout(() => { - t.classList.add('fade-out'); - t.addEventListener('animationend', () => t.remove(), { once: true }); - }, 4000); + setTimeout(() => { t.classList.add('fade-out'); t.addEventListener('animationend', () => t.remove(), { once: true }); }, 4200); } - // ── Lade-Overlay (zählt verschachtelte Netzwerkaufrufe) ── - function startLoading() { state.pendingNetwork++; el.loading.hidden = false; } - function stopLoading() { state.pendingNetwork = Math.max(0, state.pendingNetwork - 1); if (state.pendingNetwork === 0) el.loading.hidden = true; } - - // ── Zentraler fetch-Wrapper: JSON, Fehler→toast, Overlay ── + // ── Loading + API ── + function startLoading() { pendingNetwork++; el.loading.hidden = false; } + function stopLoading() { pendingNetwork = Math.max(0, pendingNetwork - 1); if (pendingNetwork === 0) el.loading.hidden = true; } async function api(path, options) { startLoading(); try { const res = await fetch(path, options); - let data = null; - const text = await res.text(); + let data = null; const text = await res.text(); if (text) { try { data = JSON.parse(text); } catch (_) { data = { error: text }; } } - if (!res.ok) { - const msg = (data && data.error) ? data.error : ('HTTP ' + res.status + ' ' + res.statusText); - throw new Error(msg); - } + if (!res.ok) throw new Error((data && data.error) ? data.error : ('HTTP ' + res.status + ' ' + res.statusText)); return data || {}; - } finally { - stopLoading(); - } + } finally { stopLoading(); } } - // ── Custom confirm-Modal → Promise ── + // ── Modals ── function confirmModal(message, opts) { opts = opts || {}; el.confirmTitle.textContent = opts.title || 'Bestätigen'; @@ -150,832 +113,614 @@ el.confirmOk.className = 'btn ' + (opts.danger ? 'btn-danger' : 'btn-primary'); el.confirmBackdrop.hidden = false; return new Promise((resolve) => { - function cleanup(result) { + function cleanup(r) { el.confirmBackdrop.hidden = true; - el.confirmOk.removeEventListener('click', onOk); - el.confirmCancel.removeEventListener('click', onCancel); - el.confirmBackdrop.removeEventListener('click', onBackdrop); - resolve(result); + el.confirmOk.removeEventListener('click', onOk); el.confirmCancel.removeEventListener('click', onCancel); el.confirmBackdrop.removeEventListener('click', onBackdrop); + resolve(r); } - const onOk = () => cleanup(true); - const onCancel = () => cleanup(false); + const onOk = () => cleanup(true), onCancel = () => cleanup(false); const onBackdrop = (e) => { if (e.target === el.confirmBackdrop) cleanup(false); }; - el.confirmOk.addEventListener('click', onOk); - el.confirmCancel.addEventListener('click', onCancel); - el.confirmBackdrop.addEventListener('click', onBackdrop); + el.confirmOk.addEventListener('click', onOk); el.confirmCancel.addEventListener('click', onCancel); el.confirmBackdrop.addEventListener('click', onBackdrop); }); } - - // ── Custom prompt-Modal mit beliebigen Feldern → Promise<{}|null> ── - // fields: [{ key, label, type='text', placeholder, value, options:[{value,label}], required, hint }] - // onChange(values, fieldEls) optional für Live-Vorschau. function promptModal(title, fields, onChange) { - el.promptTitle.textContent = title; - el.promptFields.innerHTML = ''; - const inputs = {}; - + el.promptTitle.textContent = title; el.promptFields.innerHTML = ''; const inputs = {}; fields.forEach((f) => { - const wrap = document.createElement('div'); - wrap.className = 'field'; - const label = document.createElement('label'); - label.textContent = f.label; - wrap.appendChild(label); - + const wrap = document.createElement('div'); wrap.className = 'field'; + const label = document.createElement('label'); label.textContent = f.label; wrap.appendChild(label); let input; if (f.type === 'select') { input = document.createElement('select'); - (f.options || []).forEach((o) => { - const opt = document.createElement('option'); - opt.value = o.value; - opt.textContent = o.label; - input.appendChild(opt); - }); + (f.options || []).forEach((o) => { const opt = document.createElement('option'); opt.value = o.value; opt.textContent = o.label; input.appendChild(opt); }); if (f.value != null) input.value = f.value; } else { - input = document.createElement('input'); - input.type = f.type || 'text'; - if (f.placeholder) input.placeholder = f.placeholder; - if (f.value != null) input.value = f.value; + input = document.createElement('input'); input.type = f.type || 'text'; + if (f.placeholder) input.placeholder = f.placeholder; if (f.value != null) input.value = f.value; } - input.dataset.key = f.key; - wrap.appendChild(input); - - if (f.hint || f.live) { - const hint = document.createElement('div'); - hint.className = 'hint'; - if (f.live) hint.dataset.live = f.key; - if (f.hint) hint.textContent = f.hint; - wrap.appendChild(hint); - } - el.promptFields.appendChild(wrap); - inputs[f.key] = input; + input.dataset.key = f.key; wrap.appendChild(input); + if (f.hint || f.live) { const h = document.createElement('div'); h.className = 'hint'; if (f.live) h.dataset.live = f.key; if (f.hint) h.textContent = f.hint; wrap.appendChild(h); } + el.promptFields.appendChild(wrap); inputs[f.key] = input; }); - - const readValues = () => { - const v = {}; - Object.keys(inputs).forEach((k) => { v[k] = inputs[k].value; }); - return v; - }; - + const readValues = () => { const v = {}; Object.keys(inputs).forEach((k) => { v[k] = inputs[k].value; }); return v; }; el.promptBackdrop.hidden = false; - const first = el.promptFields.querySelector('input, select'); - if (first) setTimeout(() => first.focus(), 30); - + const first = el.promptFields.querySelector('input, select'); if (first) setTimeout(() => first.focus(), 30); return new Promise((resolve) => { - function cleanup(result) { + function cleanup(r) { el.promptBackdrop.hidden = true; - el.promptForm.removeEventListener('submit', onSubmit); - el.promptCancel.removeEventListener('click', onCancel); - el.promptBackdrop.removeEventListener('click', onBackdrop); - el.promptForm.removeEventListener('input', onInput); - resolve(result); + el.promptForm.removeEventListener('submit', onSubmit); el.promptCancel.removeEventListener('click', onCancel); + el.promptBackdrop.removeEventListener('click', onBackdrop); el.promptForm.removeEventListener('input', onInput); + resolve(r); } function onSubmit(e) { - e.preventDefault(); - const values = readValues(); - // Pflichtfelder prüfen. - for (const f of fields) { - if (f.required && !String(values[f.key] || '').trim()) { - toast('Bitte „' + f.label + '“ ausfüllen.', 'error'); - inputs[f.key].focus(); - return; - } - } + e.preventDefault(); const values = readValues(); + for (const f of fields) { if (f.required && !String(values[f.key] || '').trim()) { toast('Bitte „' + f.label + '“ ausfüllen.', 'error'); inputs[f.key].focus(); return; } } cleanup(values); } const onCancel = () => cleanup(null); const onBackdrop = (e) => { if (e.target === el.promptBackdrop) cleanup(null); }; const onInput = () => { if (onChange) onChange(readValues(), inputs, el.promptFields); }; - el.promptForm.addEventListener('submit', onSubmit); - el.promptCancel.addEventListener('click', onCancel); - el.promptBackdrop.addEventListener('click', onBackdrop); - el.promptForm.addEventListener('input', onInput); - if (onChange) onChange(readValues(), inputs, el.promptFields); // initial + el.promptForm.addEventListener('submit', onSubmit); el.promptCancel.addEventListener('click', onCancel); + el.promptBackdrop.addEventListener('click', onBackdrop); el.promptForm.addEventListener('input', onInput); + if (onChange) onChange(readValues(), inputs, el.promptFields); }); } - // ──────────────────────────────────────────────────────────── - // Anzeige-Namen (friendly labels) - // ──────────────────────────────────────────────────────────── - - function footerLabel(name) { - if (name === '_default.html') return 'Gemeinsam (alle Abteilungen)'; - return name.replace(/\.html$/i, ''); - } - + // ── Anzeige-Namen ── + function footerLabel(name) { return name === '_default.html' ? 'Gemeinsam (alle Abteilungen)' : name.replace(/\.html$/i, ''); } function headerLabel(name) { if (name === '_vorlage.html') return 'Vorlage (Standard-Kopf)'; - // ..html → "email — slug" - // E-Mail enthält genau ein '@'; alles bis zum ersten '.' NACH dem '@' ist die E-Mail. - const base = name.replace(/\.html$/i, ''); - const at = base.indexOf('@'); - if (at >= 0) { - const firstDotAfterAt = base.indexOf('.', at); - if (firstDotAfterAt > -1 && firstDotAfterAt < base.length - 1) { - const email = base.slice(0, firstDotAfterAt); - const slug = base.slice(firstDotAfterAt + 1); - return email + ' — ' + slug; - } - } - return base; // Fallback + const base = name.replace(/\.html$/i, ''); const at = base.indexOf('@'); + if (at >= 0) { const dot = base.indexOf('.', at); if (dot > -1 && dot < base.length - 1) return base.slice(0, dot) + ' — ' + base.slice(dot + 1); } + return base; } - - function templateLabel(name) { - return name.replace(/\.html$/i, ''); - } - - // Liefert eine friendly-Bezeichnung anhand Kategorie + Dateiname. + function templateLabel(name) { return name.replace(/\.html$/i, ''); } function friendlyFor(category, name) { if (category === 'footer') return 'Fußzeile: ' + footerLabel(name); if (category === 'header') return 'Signatur: ' + headerLabel(name); return templateLabel(name); } - // ──────────────────────────────────────────────────────────── - // Verbindungsstatus - // ──────────────────────────────────────────────────────────── - + // ── Verbindungsstatus ── async function loadConfigAndHealth() { - // Config (best effort, ohne Overlay-Spam → eigener leichter Aufruf) try { - const cfg = await api('/api/config'); - state.config = cfg; - if (!cfg.configured) { - el.configBanner.hidden = false; - setStatus('error', 'Nicht konfiguriert'); - return false; - } + const cfg = await api('/api/config'); state.config = cfg; + if (!cfg.configured) { el.configBanner.hidden = false; setStatus('error', 'Nicht konfiguriert'); return false; } el.configBanner.hidden = true; - } catch (e) { - setStatus('error', 'Nicht verbunden'); - toast('Konfiguration konnte nicht geladen werden: ' + e.message, 'error'); - return false; - } - // Health + } catch (e) { setStatus('error', 'Nicht verbunden'); toast('Konfiguration nicht ladbar: ' + e.message, 'error'); return false; } try { const health = await api('/api/health'); - if (health.ok) { - const c = state.config; - setStatus('ok', 'Verbunden: ' + c.owner + '/' + c.repo + '@' + c.branch); - } else { - setStatus('error', 'Nicht verbunden: ' + (health.error || 'unbekannt')); - } - } catch (e) { - setStatus('error', 'Nicht verbunden: ' + e.message); - toast('Verbindung zum Repository fehlgeschlagen: ' + e.message, 'error'); - return false; - } + if (health.ok) { const c = state.config; setStatus('ok', c.owner + '/' + c.repo + '@' + c.branch); } + else setStatus('error', 'Nicht verbunden: ' + (health.error || 'unbekannt')); + } catch (e) { setStatus('error', 'Nicht verbunden: ' + e.message); toast('Verbindung fehlgeschlagen: ' + e.message, 'error'); return false; } return true; } - function setStatus(kind, text) { el.statusPill.className = 'status-pill status-' + (kind === 'ok' ? 'ok' : kind === 'error' ? 'error' : 'unknown'); - el.statusText.textContent = text; - el.statusPill.title = text; + el.statusText.textContent = text; el.statusPill.title = text; } - // ──────────────────────────────────────────────────────────── - // Baum (Sidebar) laden & rendern - // ──────────────────────────────────────────────────────────── - - async function loadTree() { - try { - state.tree = await api('/api/tree'); - renderTree(); - } catch (e) { - toast('Liste konnte nicht geladen werden: ' + e.message, 'error'); - } + // ── Hauptbereich umschalten ── + function showMain(kind) { + el.emptyState.hidden = kind !== 'empty'; + el.editorPanel.hidden = kind !== 'editor'; + el.adminPanel.hidden = kind !== 'admin'; } - function renderTree() { - renderTemplates(); - renderFooters(); - renderHeaders(); - applySectionCollapse(); - highlightActive(); - // Aktiven Filter nach Neuaufbau erneut anwenden. - if (el.treeSearch && el.treeSearch.value.trim()) applyTreeFilter(); + // ── Kategorie ── + function setCategory(cat) { + state.category = cat; + el.catTabs.forEach((t) => t.classList.toggle('is-active', t.dataset.cat === cat)); + const isAdmin = cat === 'admin'; + el.btnListAdd.style.display = isAdmin ? 'none' : ''; + el.treeSearch.parentElement.style.display = isAdmin ? 'none' : ''; + if (cat === 'templates') el.btnListAddLabel.textContent = 'Abteilung'; + else if (cat === 'footers') el.btnListAddLabel.textContent = 'Fußzeile'; + else if (cat === 'headers') el.btnListAddLabel.textContent = 'Signatur'; + renderList(); + if (isAdmin) setAdminView(state.adminView); + else showMain(state.current ? 'editor' : 'empty'); } - // Live-Filter über alle Dateien (Label + Pfad). Leere Suche = voller Baum. - function applyTreeFilter() { - const q = (el.treeSearch.value || '').trim().toLowerCase(); - if (!q) { renderTree(); return; } // pristinen Baum (inkl. Klappzustand) wiederherstellen + // ── Tree laden ── + async function loadTree() { try { state.tree = await api('/api/tree'); renderList(); } catch (e) { toast('Liste nicht ladbar: ' + e.message, 'error'); } } - document.querySelectorAll('.tree-section').forEach((s) => s.classList.remove('collapsed')); - document.querySelectorAll('.sidebar .group-files').forEach((b) => b.classList.remove('collapsed')); - document.querySelectorAll('.sidebar .group-title').forEach((t) => t.classList.remove('collapsed')); - document.querySelectorAll('.sidebar .add-item, .sidebar .tree-empty').forEach((n) => { n.style.display = 'none'; }); - - document.querySelectorAll('.sidebar .tree-item').forEach((it) => { - const label = (it.querySelector('.ti-label')?.textContent || '').toLowerCase(); - const path = (it.dataset.path || '').toLowerCase(); - it.style.display = (label.includes(q) || path.includes(q)) ? '' : 'none'; - }); - - // Gruppen ohne sichtbaren Treffer ausblenden. - document.querySelectorAll('.sidebar .tree-group').forEach((g) => { - const items = g.querySelectorAll('.tree-item'); - const anyVisible = Array.from(items).some((i) => i.style.display !== 'none'); - g.style.display = (items.length && !anyVisible) ? 'none' : ''; - }); - } - - // Datei-Item-Element bauen. + // ── Listen-Spalte ── function fileItem(file, category) { const div = document.createElement('div'); - div.className = 'tree-item'; - div.dataset.path = file.path; - div.dataset.sha = file.sha || ''; - div.dataset.category = category; - div.dataset.name = file.name; - const label = category === 'footer' ? footerLabel(file.name) - : category === 'header' ? headerLabel(file.name) - : templateLabel(file.name); - const icon = category === 'footer' ? '📜' : category === 'header' ? '✍️' : '📄'; - div.innerHTML = '' + icon + ''; - div.querySelector('.ti-label').textContent = label; - div.title = file.path; + div.className = 'tree-item'; div.dataset.path = file.path; + const label = category === 'footer' ? footerLabel(file.name) : category === 'header' ? headerLabel(file.name) : templateLabel(file.name); + const ic = category === 'footer' ? 'panel-bottom' : category === 'header' ? 'pen-line' : 'file-text'; + div.innerHTML = '' + icon(ic, 16) + ''; + div.querySelector('.ti-label').textContent = label; div.title = file.path; div.addEventListener('click', () => openFile(file.path, { friendly: friendlyFor(category, file.name), sha: file.sha, category, exists: true })); return div; } + // Gedämpfte, aber unterscheidbare Farbpalette für Abteilungs-Badges. + const DEPT_PALETTE = [ + { fg: '#647219', bg: '#eef2da' }, { fg: '#2f7d83', bg: '#dff0f0' }, + { fg: '#b5683f', bg: '#f7e8df' }, { fg: '#6c5a90', bg: '#ece7f3' }, + { fg: '#4a6488', bg: '#e5ecf5' }, { fg: '#9a7d1e', bg: '#f5efd6' }, + { fg: '#a8527a', bg: '#f6e5ee' }, { fg: '#3f7d5a', bg: '#e2f0e8' }, + ]; + // Kürzeste eindeutige Abkürzung je Abteilung (min. 2 Zeichen): + // Rezeption/Restaurant → REZ/RES, Buchhaltung → BU, IT → IT. + function computeAbbrevs(names) { + const clean = (n) => (n.replace(/[^a-z0-9äöüß]/gi, '') || n); + const cleaned = names.map(clean); + const map = {}; + names.forEach((n, i) => { + const cn = cleaned[i]; + const maxLen = Math.min(3, cn.length); // Badge bleibt kurz; Rest unterscheidet die Farbe + let len = Math.min(2, cn.length); + while (len < maxLen) { + const pre = cn.slice(0, len).toLowerCase(); + const collide = cleaned.some((o, j) => j !== i && o.slice(0, len).toLowerCase() === pre); + if (!collide) break; + len++; + } + map[n] = cn.slice(0, len).toUpperCase(); + }); + return map; + } + function deptBadge(name, label) { + const i = Math.abs([...name].reduce((h, c) => ((h << 5) - h + c.charCodeAt(0)) | 0, 0)) % DEPT_PALETTE.length; + return { type: 'initial', value: label || (name.trim()[0] || '?').toUpperCase(), fg: DEPT_PALETTE[i].fg, bg: DEPT_PALETTE[i].bg }; + } + function neutralBadge(iconName) { return { type: 'icon', value: iconName, fg: 'var(--muted)', bg: 'var(--bg)' }; } - // „+ Neue …“-Button. - function addButton(text, onClick) { + function makeGroup(key, title, badge, files, onAdd) { + const group = document.createElement('div'); group.className = 'tree-group'; + const collapsed = !!state.groupsCollapsed[key]; + const head = document.createElement('div'); head.className = 'group-head' + (collapsed ? ' collapsed' : ''); + const badgeInner = badge.type === 'icon' ? icon(badge.value, 15) : esc(badge.value); + const fs = badge.type === 'icon' ? '' : (badge.value.length >= 3 ? ';font-size:9.5px' : badge.value.length === 2 ? ';font-size:11px' : ''); + head.innerHTML = + '' + icon('chevron', 14) + '' + + '' + badgeInner + '' + + '' + + '' + files.length + '' + + (onAdd ? '' : ''); + head.querySelector('.g-label').textContent = title; + const body = document.createElement('div'); body.className = 'group-files' + (collapsed ? ' collapsed' : ''); + if (files.length === 0) { const e = document.createElement('div'); e.className = 'tree-empty'; e.textContent = 'Noch leer'; body.appendChild(e); } + else files.forEach((f) => body.appendChild(fileItem(f, 'template'))); + head.addEventListener('click', (ev) => { + if (ev.target.closest('.g-add')) return; + state.groupsCollapsed[key] = !state.groupsCollapsed[key]; + head.classList.toggle('collapsed'); body.classList.toggle('collapsed'); + }); + if (onAdd) head.querySelector('.g-add').addEventListener('click', (ev) => { ev.stopPropagation(); onAdd(); }); + group.appendChild(head); group.appendChild(body); return group; + } + + function adminNavItem(view, label, iconName) { const b = document.createElement('button'); - b.className = 'add-item'; - b.textContent = text; - b.addEventListener('click', (e) => { e.stopPropagation(); onClick(); }); + b.className = 'nav-item' + (state.adminView === view ? ' is-active' : ''); + b.innerHTML = '' + icon(iconName, 17) + '' + esc(label) + ''; + b.addEventListener('click', () => setAdminView(view)); return b; } - // Eine ein-/ausklappbare Gruppe (für Vorlagen). - function makeGroup(key, title, icon, files, category, onAdd, isSub) { - const group = document.createElement('div'); - group.className = 'tree-group' + (isSub ? ' subgroup' : ''); - - const head = document.createElement('div'); - head.className = 'group-head'; - - const collapsed = !!state.groupsCollapsed[key]; - const toggle = document.createElement('button'); - toggle.className = 'group-title' + (collapsed ? ' collapsed' : ''); - toggle.innerHTML = '' + icon + ''; - toggle.querySelector('.g-label').textContent = title; - head.appendChild(toggle); - group.appendChild(head); - - const body = document.createElement('div'); - body.className = 'group-files' + (collapsed ? ' collapsed' : ''); - if (files.length === 0) { - const empty = document.createElement('div'); - empty.className = 'tree-empty'; - empty.textContent = 'Keine Dateien'; - body.appendChild(empty); - } else { - files.forEach((f) => body.appendChild(fileItem(f, category))); + function renderList() { + const c = el.listBody; c.innerHTML = ''; const t = state.tree; + if (state.category === 'admin') { + const wrap = document.createElement('div'); wrap.className = 'nav-list'; + wrap.appendChild(adminNavItem('overview', 'Übersicht', 'dashboard')); + wrap.appendChild(adminNavItem('departments', 'Abteilungen', 'building')); + wrap.appendChild(adminNavItem('mapping', 'E-Mail-Zuordnung', 'at-sign')); + wrap.appendChild(adminNavItem('tags', 'Schlagwörter', 'tag')); + c.appendChild(wrap); + return; } - if (onAdd) body.appendChild(addButton('+ Neue Vorlage', onAdd)); - group.appendChild(body); - - toggle.addEventListener('click', () => { - state.groupsCollapsed[key] = !state.groupsCollapsed[key]; - toggle.classList.toggle('collapsed'); - body.classList.toggle('collapsed'); - }); - return group; - } - - function renderTemplates() { - const c = el.treeTemplates; - c.innerHTML = ''; - const t = state.tree; if (!t) return; + if (state.category === 'templates') { + c.appendChild(makeGroup('tmpl:' + SHARED_FOLDER, 'Alle Abteilungen', neutralBadge('globe'), t.templates[SHARED_FOLDER] || [], () => newTemplate(SHARED_FOLDER))); + const abbr = computeAbbrevs(t.departments || []); + (t.departments || []).forEach((d) => c.appendChild(makeGroup('tmpl:' + d, d, deptBadge(d, abbr[d]), t.templates[d] || [], () => newTemplate(d)))); + const users = t.users || {}; Object.keys(users).sort((a, b) => a.localeCompare(b, 'de')).forEach((email) => + c.appendChild(makeGroup('tmpl:user:' + email, email, neutralBadge('at-sign'), users[email] || [], () => newTemplate(USER_FOLDER + '/' + email)))); + } else if (state.category === 'footers') { + const footers = t.footers || []; + if (!footers.length) c.appendChild(emptyHint('Keine Fußzeilen')); else footers.forEach((f) => c.appendChild(fileItem(f, 'footer'))); + } else { + const headers = t.headers || []; + if (!headers.length) c.appendChild(emptyHint('Keine Signaturen')); else headers.forEach((f) => c.appendChild(fileItem(f, 'header'))); + } + highlightActive(); + if (el.treeSearch.value.trim()) applyFilter(); + } + function emptyHint(text) { const e = document.createElement('div'); e.className = 'tree-empty'; e.textContent = text; return e; } - // _gemeinsam - c.appendChild(makeGroup( - 'tmpl:' + SHARED_FOLDER, 'Alle Abteilungen (_gemeinsam)', '🌐', - t.templates[SHARED_FOLDER] || [], 'template', - () => newTemplate(SHARED_FOLDER) - )); - - // Abteilungen - (t.departments || []).forEach((dept) => { - c.appendChild(makeGroup( - 'tmpl:' + dept, dept, '🏢', - t.templates[dept] || [], 'template', - () => newTemplate(dept) - )); + function applyFilter() { + const q = el.treeSearch.value.trim().toLowerCase(); + document.querySelectorAll('.list-body .tree-empty').forEach((n) => { n.style.display = q ? 'none' : ''; }); + document.querySelectorAll('.list-body .group-files').forEach((b) => { if (q) b.classList.remove('collapsed'); }); + document.querySelectorAll('.list-body .group-head').forEach((tg) => { if (q) tg.classList.remove('collapsed'); }); + document.querySelectorAll('.list-body .tree-item').forEach((it) => { + const label = (it.querySelector('.ti-label')?.textContent || '').toLowerCase(); + it.style.display = (!q || label.includes(q) || (it.dataset.path || '').toLowerCase().includes(q)) ? '' : 'none'; }); - - // Persönlich → übergeordnete Gruppe mit Untergruppen je Benutzer - const users = t.users || {}; - const userKeys = Object.keys(users).sort((a, b) => a.localeCompare(b, 'de')); - const persGroup = document.createElement('div'); - persGroup.className = 'tree-group'; - const persKey = 'tmpl:__pers'; - const persCollapsed = !!state.groupsCollapsed[persKey]; - const persToggle = document.createElement('button'); - persToggle.className = 'group-title' + (persCollapsed ? ' collapsed' : ''); - persToggle.innerHTML = '👤Persönlich'; - const persHead = document.createElement('div'); - persHead.className = 'group-head'; - persHead.appendChild(persToggle); - persGroup.appendChild(persHead); - const persBody = document.createElement('div'); - persBody.className = 'group-files' + (persCollapsed ? ' collapsed' : ''); - if (userKeys.length === 0) { - const empty = document.createElement('div'); - empty.className = 'tree-empty'; - empty.textContent = 'Keine persönlichen Ordner'; - persBody.appendChild(empty); - } else { - userKeys.forEach((email) => { - // Persönlicher Ordnerpfad: _benutzer/ - persBody.appendChild(makeGroup( - 'tmpl:user:' + email, email, '✉️', - users[email] || [], 'template', - () => newTemplate(USER_FOLDER + '/' + email), - true - )); - }); - } - persGroup.appendChild(persBody); - persToggle.addEventListener('click', () => { - state.groupsCollapsed[persKey] = !state.groupsCollapsed[persKey]; - persToggle.classList.toggle('collapsed'); - persBody.classList.toggle('collapsed'); - }); - c.appendChild(persGroup); - } - - function renderFooters() { - const c = el.treeFooters; - c.innerHTML = ''; - const footers = (state.tree && state.tree.footers) || []; - if (footers.length === 0) { - const empty = document.createElement('div'); - empty.className = 'tree-empty'; - empty.textContent = 'Keine Fußzeilen'; - c.appendChild(empty); - } else { - footers.forEach((f) => c.appendChild(fileItem(f, 'footer'))); - } - c.appendChild(addButton('+ Neue Fußzeile', newFooter)); - } - - function renderHeaders() { - const c = el.treeHeaders; - c.innerHTML = ''; - const headers = (state.tree && state.tree.headers) || []; - if (headers.length === 0) { - const empty = document.createElement('div'); - empty.className = 'tree-empty'; - empty.textContent = 'Keine Signatur-Köpfe'; - c.appendChild(empty); - } else { - headers.forEach((f) => c.appendChild(fileItem(f, 'header'))); - } - c.appendChild(addButton('+ Neue Signatur', newHeader)); - } - - function applySectionCollapse() { - document.querySelectorAll('.tree-section').forEach((sec) => { - const key = sec.dataset.section; - const toggle = sec.querySelector('.section-toggle'); - const collapsed = !!state.collapsed[key]; - sec.classList.toggle('collapsed', collapsed); - toggle.setAttribute('aria-expanded', String(!collapsed)); + document.querySelectorAll('.list-body .tree-group').forEach((g) => { + const items = g.querySelectorAll('.tree-item'); + const any = Array.from(items).some((i) => i.style.display !== 'none'); + g.style.display = (q && items.length && !any) ? 'none' : ''; }); } - function highlightActive() { - document.querySelectorAll('.tree-item').forEach((item) => { - item.classList.toggle('is-active', state.current && item.dataset.path === state.current.path); - }); + document.querySelectorAll('.tree-item').forEach((it) => it.classList.toggle('is-active', state.current && it.dataset.path === state.current.path)); } - // ──────────────────────────────────────────────────────────── - // Datei öffnen / laden - // ──────────────────────────────────────────────────────────── + // ── TinyMCE ── + function ensureEditor() { + if (edReady) return Promise.resolve(); + return tinymce.init({ + target: $('visual-editor'), base_url: '/vendor/tinymce', license_key: 'gpl', + menubar: false, branding: false, statusbar: false, height: '100%', + plugins: 'link image lists table code autolink searchreplace visualblocks', + toolbar: 'undo redo | blocks fontfamily fontsize | bold italic underline forecolor backcolor | alignleft aligncenter alignright | bullist numlist | link image table | removeformat | code', + toolbar_mode: 'wrap', + valid_elements: '*[*]', extended_valid_elements: '*[*]', valid_children: '+body[style]', + verify_html: false, convert_urls: false, + content_style: 'body{font-family:Arial,Helvetica,sans-serif;font-size:14px;color:#1f2a30;line-height:1.6;padding:10px 12px;} img{max-width:100%;height:auto;} table{border-collapse:collapse;}', + paste_data_images: true, automatic_uploads: false, file_picker_types: 'image', + file_picker_callback: function (cb) { + const input = document.createElement('input'); input.type = 'file'; input.accept = 'image/*'; + input.onchange = function () { const file = input.files[0]; if (!file) return; const r = new FileReader(); r.onload = function () { cb(r.result, { title: file.name }); }; r.readAsDataURL(file); }; + input.click(); + }, + setup: function (editor) { + ed = editor; + editor.on('init', function () { edReady = true; }); + editor.on('input ExecCommand Undo Redo SetContent paste', function () { if (!suppressDirty) markDirty(); }); + }, + }).then(() => { edReady = true; }); + } - async function openFile(path, meta) { - // Ungespeicherte Änderungen? - if (state.dirty) { - const ok = await confirmModal('Es gibt ungespeicherte Änderungen. Trotzdem eine andere Datei öffnen? Die Änderungen gehen verloren.', { title: 'Ungespeicherte Änderungen', okLabel: 'Verwerfen', danger: true }); - if (!ok) return; + // ── Platzhalter (nur sinnvoll in der Signatur-Vorlage _vorlage.html) ── + const VORLAGE_PATH = SIG_HEADERS + '/_vorlage.html'; + const PLACEHOLDERS = [ + { t: '{{NAME}}', d: 'Name des Mitarbeiters', s: 'aus dem Feld „Name" in den Plugin-Einstellungen' }, + { t: '{{EMAIL}}', d: 'E-Mail-Adresse', s: 'aus der gewählten Thunderbird-Identität' }, + { t: '{{ABTEILUNG}}', d: 'Abteilung', s: 'automatisch erkannt über die E-Mail-Zuordnung', link: true }, + { t: '{{TELEFON}}', d: '+49 (0) 5191 - 605-0', s: 'fest im Plugin-Code hinterlegt' }, + { t: '{{FAX}}', d: '+49 (0) 5191 - 605-185', s: 'fest im Plugin-Code hinterlegt' }, + ]; + function buildPlaceholderBar() { + const bar = $('ph-bar'), details = $('ph-details'); + bar.innerHTML = + '' + icon('tag', 15) + ' Platzhalter – klick zum Einfügen:' + + '' + PLACEHOLDERS.map((p) => '').join('') + '' + + ''; + details.innerHTML = + '

Dies ist die zentrale Signatur-Vorlage. Klickt ein Mitarbeiter im Thunderbird-Plugin (Tab „Signaturen") auf „Vorlage laden", ersetzt das Plugin diese Platzhalter einmalig durch seine eigenen Daten:

' + + '' + PLACEHOLDERS.map((p) => + '').join('') + '
' + esc(p.t) + '→ ' + (p.link ? '' + esc(p.d) + '' : esc(p.d)) + '' + esc(p.s) + '
' + + '

Telefon & Fax sind fest im Plugin-Code hinterlegt – zum Ändern muss das Plugin angepasst werden, nicht diese Oberfläche. In normalen Vorlagen, Fußzeilen und bereits gespeicherten Signaturen werden Platzhalter nicht ersetzt.

'; + + bar.querySelectorAll('.ph-chip').forEach((b) => b.addEventListener('click', () => insertPlaceholder(b.dataset.token))); + $('ph-more').addEventListener('click', () => { details.hidden = !details.hidden; $('ph-more').classList.toggle('is-open', !details.hidden); }); + const link = $('ph-link'); + if (link) link.addEventListener('click', (e) => { e.preventDefault(); setCategory('admin'); setAdminView('mapping'); }); + } + // Leiste nur in der Signatur-Vorlage zeigen – sonst sind Platzhalter wirkungslos. + function updatePlaceholderBar() { + const show = !!state.current && state.current.path === VORLAGE_PATH; + $('ph-bar').hidden = !show; + if (!show) { $('ph-details').hidden = true; const m = $('ph-more'); if (m) m.classList.remove('is-open'); } + } + function insertPlaceholder(token) { + if (!state.current) return; + if (state.view === 'preview') setView('visual'); + if (state.view === 'visual' && edReady && ed) { ed.insertContent(token); markDirty(); } + else if (state.view === 'html') { + const ta = el.htmlEditor, s = ta.selectionStart, e = ta.selectionEnd; + ta.value = ta.value.slice(0, s) + token + ta.value.slice(e); + ta.selectionStart = ta.selectionEnd = s + token.length; ta.focus(); markDirty(); } + } + + // ── Datei öffnen ── + async function openFile(path, meta) { + if (!(await guardUnsaved())) return; try { const data = await api('/api/file?path=' + encodeURIComponent(path)); - state.current = { - path: data.path, - friendly: meta.friendly, - sha: data.sha, - exists: data.exists, - isNew: false, - category: meta.category, - }; - setEditorContent(data.content || ''); - setDirty(false); - showEditor(); - highlightActive(); - } catch (e) { - toast('Datei konnte nicht geladen werden: ' + e.message, 'error'); - } + state.current = { path: data.path, friendly: meta.friendly, sha: data.sha, exists: data.exists, isNew: false, category: meta.category }; + await showEditor(data.content || ''); setDirty(false); highlightActive(); + } catch (e) { toast('Datei nicht ladbar: ' + e.message, 'error'); } } - - // Neue (noch nicht gespeicherte) Datei direkt im Editor öffnen. - function openNewFile(path, friendly, category) { + async function openNewFile(path, friendly, category) { + if (!(await guardUnsaved())) return; state.current = { path, friendly, sha: null, exists: false, isNew: true, category }; - setEditorContent(''); - setDirty(true); // neu = ungespeichert - showEditor(); - highlightActive(); - el.visualEditor.focus(); - toast('Neue Datei „' + friendly + '“ – jetzt bearbeiten und speichern.', 'success'); + await showEditor(''); setDirty(true); highlightActive(); + toast('Neuer Eintrag „' + friendly + '“ – jetzt bearbeiten und speichern.', 'success'); + } + async function guardUnsaved() { + if (!state.dirty) return true; + return await confirmModal('Es gibt ungespeicherte Änderungen. Trotzdem fortfahren? Die Änderungen gehen verloren.', { title: 'Ungespeicherte Änderungen', okLabel: 'Verwerfen', danger: true }); + } + async function showEditor(html) { + state.html = html; showMain('editor'); + el.fileFriendly.textContent = state.current.friendly; el.filePath.textContent = state.current.path; + updatePlaceholderBar(); + await ensureEditor(); setView('visual', true); + } + function hideEditor() { state.current = null; showMain('empty'); highlightActive(); } + + function syncFromActive() { + if (state.view === 'visual' && edReady && ed) state.html = ed.getContent(); + else if (state.view === 'html') state.html = el.htmlEditor.value; + return state.html; + } + function setView(view, skipSync) { + const html = skipSync ? state.html : syncFromActive(); + state.html = html; state.view = view; + el.paneVisual.hidden = view !== 'visual'; el.paneHtml.hidden = view !== 'html'; el.panePreview.hidden = view !== 'preview'; + el.tabVisual.classList.toggle('is-active', view === 'visual'); + el.tabHtml.classList.toggle('is-active', view === 'html'); + el.tabPreview.classList.toggle('is-active', view === 'preview'); + if (view === 'visual' && edReady && ed) { suppressDirty = true; ed.setContent(html); setTimeout(() => { suppressDirty = false; }, 0); } + else if (view === 'html') el.htmlEditor.value = html; + else if (view === 'preview') renderPreview(html); + } + function renderPreview(html) { + const doc = ''; + el.previewFrame.srcdoc = doc; } - function showEditor() { - el.emptyState.hidden = true; - el.editorPanel.hidden = false; - el.fileFriendly.textContent = state.current.friendly; - el.filePath.textContent = state.current.path; - setView('visual'); - } - - function hideEditor() { - state.current = null; - el.editorPanel.hidden = true; - el.emptyState.hidden = false; - highlightActive(); - } - - // Inhalt in beide Editoren + Vorschau setzen. - function setEditorContent(html) { - el.visualEditor.innerHTML = html; - el.htmlEditor.value = html; - updatePreview(); - } - - // Aktuellen HTML-Inhalt aus dem gerade aktiven View lesen. - function currentHtml() { - return state.view === 'html' ? el.htmlEditor.value : el.visualEditor.innerHTML; - } - - // ──────────────────────────────────────────────────────────── - // Dirty-State - // ──────────────────────────────────────────────────────────── - + // ── Dirty ── function setDirty(d) { - state.dirty = d; - el.dirtyBadge.hidden = !d; - // Speichern aktiv, wenn: keine Datei → aus; neue (ungespeicherte) Datei → immer an; - // bestehende Datei → nur bei ungespeicherten Änderungen. + state.dirty = d; el.dirtyBadge.hidden = !d; if (!state.current) el.btnSave.disabled = true; else if (!state.current.exists) el.btnSave.disabled = false; else el.btnSave.disabled = !d; } + function markDirty() { if (!state.dirty) setDirty(true); } - function markDirty() { - if (!state.dirty) setDirty(true); - } - - // ──────────────────────────────────────────────────────────── - // View-Umschaltung (Visuell ↔ HTML) – synchron halten - // ──────────────────────────────────────────────────────────── - - function setView(view) { - if (view === state.view && el.editorPanel.hidden === false) { - // trotzdem Tabs/Anzeige korrekt setzen - } - if (view === 'html') { - // Visuell → HTML: innerHTML in Textarea schreiben - el.htmlEditor.value = el.visualEditor.innerHTML; - el.visualWrap.hidden = true; - el.htmlWrap.hidden = false; - el.formatToolbar.classList.add('disabled'); - } else { - // HTML → Visuell: Textarea-Wert in contenteditable schreiben - el.visualEditor.innerHTML = el.htmlEditor.value; - el.htmlWrap.hidden = true; - el.visualWrap.hidden = false; - el.formatToolbar.classList.remove('disabled'); - } - state.view = view; - el.tabVisual.classList.toggle('is-active', view === 'visual'); - el.tabHtml.classList.toggle('is-active', view === 'html'); - updatePreview(); - } - - // ──────────────────────────────────────────────────────────── - // Vorschau (sandboxed iframe via srcdoc), debounced - // ──────────────────────────────────────────────────────────── - - const updatePreview = debounce(function () { - const html = currentHtml(); - const doc = '' + - '' + - ''; - el.previewFrame.srcdoc = doc; - }, 250); - - // ──────────────────────────────────────────────────────────── - // Formatierungs-Toolbar (document.execCommand) - // ──────────────────────────────────────────────────────────── - - function exec(cmd, value) { - el.visualEditor.focus(); - try { document.execCommand(cmd, false, value); } catch (e) { /* alte Browser */ } - afterVisualEdit(); - } - - function afterVisualEdit() { - el.htmlEditor.value = el.visualEditor.innerHTML; - markDirty(); - updatePreview(); - } - - function bindToolbar() { - el.formatToolbar.querySelectorAll('.fmt-btn[data-cmd]').forEach((btn) => { - btn.addEventListener('mousedown', (e) => e.preventDefault()); // Auswahl im Editor behalten - btn.addEventListener('click', () => exec(btn.dataset.cmd)); - }); - el.fmtFontSize.addEventListener('change', () => { - if (el.fmtFontSize.value) exec('fontSize', el.fmtFontSize.value); - el.fmtFontSize.value = ''; - }); - el.fmtColor.addEventListener('input', () => { - el.fmtColorSwatch.style.background = el.fmtColor.value; - }); - el.fmtColor.addEventListener('change', () => { - exec('foreColor', el.fmtColor.value); - }); - el.fmtLink.addEventListener('mousedown', (e) => e.preventDefault()); - el.fmtLink.addEventListener('click', async () => { - const res = await promptModal('Link einfügen', [ - { key: 'url', label: 'Adresse (URL)', placeholder: 'https://…', required: true, value: 'https://' }, - ]); - if (res) exec('createLink', res.url.trim()); - }); - el.fmtImage.addEventListener('mousedown', (e) => e.preventDefault()); - el.fmtImage.addEventListener('click', async () => { - const res = await promptModal('Bild einfügen', [ - { key: 'url', label: 'Bild-URL', placeholder: 'https://…/bild.png', required: true, value: 'https://' }, - ]); - if (res) exec('insertImage', res.url.trim()); - }); - } - - // ──────────────────────────────────────────────────────────── - // Speichern / Neu laden / Löschen - // ──────────────────────────────────────────────────────────── - + // ── Speichern / Neu laden / Löschen ── async function saveCurrent() { if (!state.current) return; - // Sicherstellen, dass beide Editoren synchron sind (aus aktivem View lesen). - const content = currentHtml(); - const friendly = state.current.friendly; - const message = friendly + ' bearbeitet (Web-Editor)'; + const content = syncFromActive(); const friendly = state.current.friendly; + const wasNew = state.current.isNew; try { - const res = await api('/api/file', { - method: 'PUT', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ path: state.current.path, content: content, message: message }), - }); - state.current.exists = true; - state.current.isNew = false; - if (res.sha) state.current.sha = res.sha; + const res = await api('/api/file', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ path: state.current.path, content, message: friendly + ' bearbeitet (Web-Editor)' }) }); + state.current.exists = true; state.current.isNew = false; if (res.sha) state.current.sha = res.sha; setDirty(false); - if (res.unchanged) toast('Keine Änderungen – nichts zu speichern.', 'success'); - else toast('„' + friendly + '“ gespeichert.', 'success'); - await loadTree(); // neue Dateien auftauchen lassen / SHAs aktualisieren - highlightActive(); - } catch (e) { - toast('Speichern fehlgeschlagen: ' + e.message, 'error'); - } + toast(res.unchanged ? 'Keine Änderungen – nichts zu speichern.' : '„' + friendly + '“ gespeichert.', 'success'); + // Baum nur neu laden, wenn eine NEUE Datei dazukam (sonst ändert sich die Liste nicht). + if (wasNew) { await loadTree(); highlightActive(); } + } catch (e) { toast('Speichern fehlgeschlagen: ' + e.message, 'error'); } } - async function reloadCurrent() { if (!state.current) return; - if (state.current.isNew) { - toast('Diese Datei wurde noch nicht gespeichert.', 'error'); - return; - } - if (state.dirty) { - const ok = await confirmModal('Ungespeicherte Änderungen verwerfen und Datei neu laden?', { title: 'Neu laden', okLabel: 'Verwerfen', danger: true }); - if (!ok) return; - } + if (state.current.isNew) { toast('Dieser Eintrag wurde noch nicht gespeichert.', 'error'); return; } + if (state.dirty && !(await confirmModal('Ungespeicherte Änderungen verwerfen und neu laden?', { title: 'Neu laden', okLabel: 'Verwerfen', danger: true }))) return; try { const data = await api('/api/file?path=' + encodeURIComponent(state.current.path)); - state.current.sha = data.sha; - state.current.exists = data.exists; - setEditorContent(data.content || ''); - setDirty(false); - setView('visual'); - toast('Datei neu geladen.', 'success'); - } catch (e) { - toast('Neu laden fehlgeschlagen: ' + e.message, 'error'); - } + state.current.sha = data.sha; state.current.exists = data.exists; state.html = data.content || ''; + setView('visual', true); setDirty(false); toast('Neu geladen.', 'success'); + } catch (e) { toast('Neu laden fehlgeschlagen: ' + e.message, 'error'); } } - async function deleteCurrent() { - if (!state.current) return; - const friendly = state.current.friendly; - // Noch nicht gespeicherte Datei → nur lokal verwerfen. - if (state.current.isNew) { - const ok = await confirmModal('Diese neue, noch nicht gespeicherte Datei verwerfen?', { title: 'Verwerfen', okLabel: 'Verwerfen', danger: true }); - if (!ok) return; - setDirty(false); - hideEditor(); - return; - } - const ok = await confirmModal('„' + friendly + '“ wirklich löschen? Dies kann nicht rückgängig gemacht werden.', { title: 'Löschen', okLabel: 'Löschen', danger: true }); - if (!ok) return; + if (!state.current) return; const friendly = state.current.friendly; + if (state.current.isNew) { if (await confirmModal('Diesen neuen, noch nicht gespeicherten Eintrag verwerfen?', { title: 'Verwerfen', okLabel: 'Verwerfen', danger: true })) { setDirty(false); hideEditor(); } return; } + if (!(await confirmModal('„' + friendly + '“ wirklich löschen? Das kann nicht rückgängig gemacht werden.', { title: 'Löschen', okLabel: 'Löschen', danger: true }))) return; try { - await api('/api/file', { - method: 'DELETE', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ path: state.current.path, message: friendly + ' gelöscht (Web-Editor)' }), - }); - toast('„' + friendly + '“ gelöscht.', 'success'); - setDirty(false); - hideEditor(); - await loadTree(); - } catch (e) { - toast('Löschen fehlgeschlagen: ' + e.message, 'error'); - } + await api('/api/file', { method: 'DELETE', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ path: state.current.path, message: friendly + ' gelöscht (Web-Editor)' }) }); + toast('„' + friendly + '“ gelöscht.', 'success'); setDirty(false); hideEditor(); await loadTree(); + } catch (e) { toast('Löschen fehlgeschlagen: ' + e.message, 'error'); } } - // ──────────────────────────────────────────────────────────── - // Neue Dateien anlegen - // ──────────────────────────────────────────────────────────── - - async function newTemplate(folder) { - const res = await promptModal('Neue Vorlage in „' + folder + '“', [ - { key: 'name', label: 'Vorlagenname', placeholder: 'z. B. Angebot Doppelzimmer', required: true, live: true, hint: '' }, - ], (values, inputs, root) => { - const slug = slugifyName(values.name || ''); - const liveHint = root.querySelector('[data-live="name"]'); - if (liveHint) liveHint.innerHTML = slug ? 'Datei: ' + esc(slug) + '.html' : 'Bitte einen Namen eingeben.'; - }); - if (!res) return; - const slug = slugifyName(res.name); - if (!slug) { toast('Ungültiger Name.', 'error'); return; } - const path = folder + '/' + slug + '.html'; - if (await existsInTree(path)) { toast('Eine Vorlage mit diesem Namen existiert bereits.', 'error'); return; } - openNewFile(path, slug, 'template'); - } - - async function newFooter() { - const t = state.tree || {}; - const options = [{ value: '_default', label: 'Gemeinsam (alle Abteilungen)' }] - .concat((t.departments || []).map((d) => ({ value: d, label: d }))); - const res = await promptModal('Neue Fußzeile', [ - { key: 'dept', label: 'Für welche Abteilung?', type: 'select', options: options, required: true }, - ]); - if (!res) return; - const file = (res.dept === '_default' ? '_default' : res.dept) + '.html'; - const path = SIG_FOOTERS + '/' + file; - if (await existsInTree(path)) { toast('Diese Fußzeile existiert bereits.', 'error'); return; } - openNewFile(path, 'Fußzeile: ' + footerLabel(file), 'footer'); - } - - async function newHeader() { - const res = await promptModal('Neue Signatur', [ - { key: 'email', label: 'E-Mail-Adresse', placeholder: 'name@hotel-park-soltau.de', required: true, live: true }, - { key: 'name', label: 'Name', placeholder: 'Max Mustermann', required: true, live: true }, - ], (values, inputs, root) => { - const email = (values.email || '').trim(); - const slug = slugifyHeaderName(values.name || ''); - const liveHint = root.querySelector('[data-live="name"]'); - const file = (email && slug) ? (email + '.' + slug + '.html') : ''; - if (liveHint) liveHint.innerHTML = file ? 'Datei: ' + esc(file) + '' : 'E-Mail und Name eingeben.'; - }); - if (!res) return; - const email = res.email.trim(); - const slug = slugifyHeaderName(res.name); - if (!email || !slug) { toast('E-Mail und Name erforderlich.', 'error'); return; } - const file = email + '.' + slug + '.html'; - const path = SIG_HEADERS + '/' + file; - if (await existsInTree(path)) { toast('Diese Signatur existiert bereits.', 'error'); return; } - openNewFile(path, 'Signatur: ' + headerLabel(file), 'header'); - } - - async function newDepartment() { - const res = await promptModal('Neue Abteilung', [ - { key: 'name', label: 'Abteilungsname', placeholder: 'z. B. Rezeption', required: true, hint: 'Wird als Ordner im Repository angelegt.' }, - ]); - if (!res) return; - const name = res.name.trim(); - if (/[\/\\:*?"<>|]/.test(name)) { toast('Ungültiger Abteilungsname.', 'error'); return; } - try { - const r = await api('/api/departments', { - method: 'POST', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ name: name }), - }); - toast('Abteilung „' + (r.name || name) + '“ angelegt.', 'success'); - await loadTree(); - } catch (e) { - toast('Abteilung anlegen fehlgeschlagen: ' + e.message, 'error'); - } - } - - // Prüfen, ob ein Pfad schon im aktuellen Baum vorkommt. + // ── Neue Einträge ── function existsInTree(path) { - const t = state.tree; - if (!t) return false; - const lists = []; + const t = state.tree; if (!t) return false; const lists = []; Object.keys(t.templates || {}).forEach((k) => lists.push(t.templates[k])); Object.keys(t.users || {}).forEach((k) => lists.push(t.users[k])); lists.push(t.footers || [], t.headers || []); return lists.some((arr) => (arr || []).some((f) => f.path === path)); } + async function newTemplate(folder) { + const res = await promptModal('Neue Vorlage in „' + folder + '“', [{ key: 'name', label: 'Vorlagenname', placeholder: 'z. B. Angebot Doppelzimmer', required: true, live: true }], + (values, inputs, root) => { const slug = slugifyName(values.name || ''); const h = root.querySelector('[data-live="name"]'); if (h) h.innerHTML = slug ? 'Datei: ' + esc(slug) + '.html' : 'Bitte einen Namen eingeben.'; }); + if (!res) return; const slug = slugifyName(res.name); if (!slug) { toast('Ungültiger Name.', 'error'); return; } + const path = folder + '/' + slug + '.html'; if (existsInTree(path)) { toast('Eine Vorlage mit diesem Namen existiert bereits.', 'error'); return; } + openNewFile(path, slug, 'template'); + } + async function newFooter() { + const t = state.tree || {}; + const options = [{ value: '_default', label: 'Gemeinsam (alle Abteilungen)' }].concat((t.departments || []).map((d) => ({ value: d, label: d }))); + const res = await promptModal('Neue Fußzeile', [{ key: 'dept', label: 'Für welche Abteilung?', type: 'select', options, required: true }]); + if (!res) return; const file = (res.dept === '_default' ? '_default' : res.dept) + '.html'; const path = SIG_FOOTERS + '/' + file; + if (existsInTree(path)) { toast('Diese Fußzeile existiert bereits.', 'error'); return; } + openNewFile(path, 'Fußzeile: ' + footerLabel(file), 'footer'); + } + async function newHeader() { + const res = await promptModal('Neue Signatur', [ + { key: 'email', label: 'E-Mail-Adresse', placeholder: 'name@hotel-park-soltau.de', required: true, live: true }, + { key: 'name', label: 'Name', placeholder: 'Max Mustermann', required: true, live: true }, + ], (values, inputs, root) => { const email = (values.email || '').trim(); const slug = slugifyHeaderName(values.name || ''); const h = root.querySelector('[data-live="name"]'); const file = (email && slug) ? (email + '.' + slug + '.html') : ''; if (h) h.innerHTML = file ? 'Datei: ' + esc(file) + '' : 'E-Mail und Name eingeben.'; }); + if (!res) return; const email = res.email.trim(); const slug = slugifyHeaderName(res.name); + if (!email || !slug) { toast('E-Mail und Name erforderlich.', 'error'); return; } + const file = email + '.' + slug + '.html'; const path = SIG_HEADERS + '/' + file; + if (existsInTree(path)) { toast('Diese Signatur existiert bereits.', 'error'); return; } + openNewFile(path, 'Signatur: ' + headerLabel(file), 'header'); + } + async function newDepartment() { + const res = await promptModal('Neue Abteilung', [{ key: 'name', label: 'Abteilungsname', placeholder: 'z. B. Rezeption', required: true, hint: 'Wird als Ordner im Repository angelegt.' }]); + if (!res) return; const name = res.name.trim(); + if (/[\/\\:*?"<>|]/.test(name)) { toast('Ungültiger Abteilungsname.', 'error'); return; } + try { const r = await api('/api/departments', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ name }) }); toast('Abteilung „' + (r.name || name) + '“ angelegt.', 'success'); await loadTree(); if (state.category === 'admin') setAdminView('departments'); } + catch (e) { toast('Abteilung anlegen fehlgeschlagen: ' + e.message, 'error'); } + } + function listAddAction() { if (state.category === 'templates') newDepartment(); else if (state.category === 'footers') newFooter(); else if (state.category === 'headers') newHeader(); } - // ──────────────────────────────────────────────────────────── - // Event-Bindungen - // ──────────────────────────────────────────────────────────── + // ════════════════════════════════════════════════════════════ + // Verwaltung (Admin) + // ════════════════════════════════════════════════════════════ + function setAdminView(view) { + state.adminView = view; + document.querySelectorAll('.nav-item').forEach((n) => {}); + renderList(); // aktualisiert aktive Markierung in der Nav + showMain('admin'); + if (view === 'overview') renderOverview(); + else if (view === 'departments') renderDepartments(); + else if (view === 'mapping') renderMapping(); + else if (view === 'tags') renderTags(); + } + function adminHeader(title, subtitle) { + return '

' + esc(title) + '

' + (subtitle ? '

' + esc(subtitle) + '

' : '') + '
'; + } - function bindEvents() { - // Sektionen ein-/ausklappen - document.querySelectorAll('.section-toggle').forEach((btn) => { - btn.addEventListener('click', () => { - const key = btn.dataset.toggle; - state.collapsed[key] = !state.collapsed[key]; - applySectionCollapse(); - }); + function renderOverview() { + const t = state.tree || {}; const c = state.config || {}; + const tmpl = Object.values(t.templates || {}).reduce((n, a) => n + a.length, 0) + Object.values(t.users || {}).reduce((n, a) => n + a.length, 0); + const cards = [ + { icon: 'file-text', n: tmpl, label: 'Vorlagen' }, + { icon: 'building', n: (t.departments || []).length, label: 'Abteilungen' }, + { icon: 'panel-bottom', n: (t.footers || []).length, label: 'Fußzeilen' }, + { icon: 'pen-line', n: (t.headers || []).length, label: 'Signaturen' }, + ]; + const mode = c.demo ? 'Demo-Modus' : c.local ? 'Lokaler Ordner' : 'Gitea/Forgejo'; + el.adminPanel.innerHTML = + adminHeader('Übersicht', 'Auf einen Blick: was im Repository liegt und wie der Editor verbunden ist.') + + '
' + cards.map((k) => + '
' + icon(k.icon, 22) + '
' + k.n + '
' + k.label + '
').join('') + + '
' + + '
' + icon('plug', 18) + '
Verbindung
' + + '
' + esc(mode) + ' · ' + esc((c.owner || '?') + '/' + (c.repo || '?') + '@' + (c.branch || 'main')) + '
'; + } + + function renderDepartments() { + const t = state.tree || {}; const depts = t.departments || []; + let html = adminHeader('Abteilungen', 'Ordner im Repository. Jede Abteilung kann eigene Vorlagen und eine Fußzeile haben.'); + html += '
'; + html += '
'; + if (!depts.length) html += '
Noch keine Abteilungen.
'; + depts.forEach((d) => { + const count = (t.templates[d] || []).length; + html += '
' + icon('building', 18) + '' + esc(d) + '' + + '' + count + ' Vorlage' + (count === 1 ? '' : 'n') + '' + + '
'; }); + html += '
'; + el.adminPanel.innerHTML = html; + $('adm-dept-add').addEventListener('click', newDepartment); + $('adm-dept-name').addEventListener('keydown', (e) => { if (e.key === 'Enter') { e.preventDefault(); addDeptInline(); } }); + el.adminPanel.querySelectorAll('[data-del]').forEach((b) => b.addEventListener('click', () => deleteDepartment(b.dataset.del))); + } + async function addDeptInline() { + const name = ($('adm-dept-name').value || '').trim(); if (!name) return; + if (/[\/\\:*?"<>|]/.test(name)) { toast('Ungültiger Abteilungsname.', 'error'); return; } + try { await api('/api/departments', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ name }) }); toast('Abteilung „' + name + '“ angelegt.', 'success'); await loadTree(); renderDepartments(); } + catch (e) { toast('Anlegen fehlgeschlagen: ' + e.message, 'error'); } + } + async function deleteDepartment(name) { + const count = ((state.tree && state.tree.templates[name]) || []).length; + const msg = count ? 'Abteilung „' + name + '“ und alle ' + count + ' enthaltenen Vorlagen löschen?' : 'Leere Abteilung „' + name + '“ löschen?'; + if (!(await confirmModal(msg, { title: 'Abteilung löschen', okLabel: 'Löschen', danger: true }))) return; + try { const r = await api('/api/departments', { method: 'DELETE', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ name }) }); toast('Abteilung „' + name + '“ gelöscht (' + (r.deleted || 0) + ' Dateien).', 'success'); await loadTree(); renderDepartments(); } + catch (e) { toast('Löschen fehlgeschlagen: ' + e.message, 'error'); } + } - // Sidebar-Aktionen - el.btnRefresh.addEventListener('click', loadTree); - if (el.treeSearch) el.treeSearch.addEventListener('input', applyTreeFilter); - el.btnNewDept.addEventListener('click', (e) => { e.stopPropagation(); newDepartment(); }); - el.btnNewFooter.addEventListener('click', (e) => { e.stopPropagation(); newFooter(); }); - el.btnNewHeader.addEventListener('click', (e) => { e.stopPropagation(); newHeader(); }); + async function renderMapping() { + el.adminPanel.innerHTML = adminHeader('E-Mail-Zuordnung', 'Welche Absender-Adresse gehört zu welcher Abteilung? (Datei _config/abteilungen.json)') + '
Lädt…
'; + let mapping = {}; + try { const r = await api('/api/abteilungen'); mapping = r.mapping || {}; } catch (e) { toast('Zuordnung nicht ladbar: ' + e.message, 'error'); } + const rows = Object.keys(mapping).map((email) => ({ email, dept: mapping[email] })); + const depts = (state.tree && state.tree.departments) || []; - // Editor-Aktionen + function deptSelect(val) { + return ''; + } + function rowHtml(r) { + return '
' + + deptSelect(r.dept) + '
'; + } + el.adminPanel.innerHTML = adminHeader('E-Mail-Zuordnung', 'Welche Absender-Adresse gehört zu welcher Abteilung? (Datei _config/abteilungen.json)') + + '
E-Mail-AdresseAbteilung
' + + '
' + (rows.length ? rows.map(rowHtml).join('') : '') + '
' + + '
' + + '
'; + + const rowsEl = $('map-rows'); + function bindRow(row) { row.querySelector('.map-del').addEventListener('click', () => row.remove()); } + rowsEl.querySelectorAll('.map-row').forEach(bindRow); + $('map-addrow').addEventListener('click', () => { const div = document.createElement('div'); div.innerHTML = rowHtml({ email: '', dept: '' }); const row = div.firstChild; rowsEl.appendChild(row); bindRow(row); row.querySelector('.map-email').focus(); }); + $('map-save').addEventListener('click', async () => { + const out = {}; + let bad = false; + rowsEl.querySelectorAll('.map-row').forEach((row) => { + const email = row.querySelector('.map-email').value.trim(); const dept = row.querySelector('.dept-sel').value.trim(); + if (!email && !dept) return; if (!email || !dept) { bad = true; return; } + out[email] = dept; + }); + if (bad) { toast('Bitte jede Zeile vollständig ausfüllen (E-Mail + Abteilung) oder leer lassen.', 'error'); return; } + try { await api('/api/abteilungen', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ mapping: out }) }); toast('Zuordnung gespeichert.', 'success'); } + catch (e) { toast('Speichern fehlgeschlagen: ' + e.message, 'error'); } + }); + } + + async function renderTags() { + el.adminPanel.innerHTML = adminHeader('Schlagwörter', 'Farbige Tags für Thunderbird (Datei _config/schlagwoerter.json).') + '
Lädt…
'; + let tags = []; + try { const r = await api('/api/schlagwoerter'); tags = r.tags || []; } catch (e) { toast('Schlagwörter nicht ladbar: ' + e.message, 'error'); } + function rowHtml(t) { + const color = (t && t.color) || '#95a322'; const name = (t && t.name) || ''; + return '
' + + '' + + '' + + '
'; + } + el.adminPanel.innerHTML = adminHeader('Schlagwörter', 'Farbige Tags für Thunderbird (Datei _config/schlagwoerter.json).') + + '
' + (tags.length ? tags.map(rowHtml).join('') : '') + '
' + + '
' + + '
'; + const rowsEl = $('tag-rows'); + function bindRow(row) { + row.querySelector('.tag-del').addEventListener('click', () => row.remove()); + const color = row.querySelector('.tag-color'), sw = row.querySelector('.tag-swatch'); + color.addEventListener('input', () => { sw.style.background = color.value; }); + } + rowsEl.querySelectorAll('.tag-row').forEach(bindRow); + $('tag-addrow').addEventListener('click', () => { const div = document.createElement('div'); div.innerHTML = rowHtml({}); const row = div.firstChild; rowsEl.appendChild(row); bindRow(row); row.querySelector('.tag-name').focus(); }); + $('tag-save').addEventListener('click', async () => { + const out = []; let bad = false; + rowsEl.querySelectorAll('.tag-row').forEach((row) => { const name = row.querySelector('.tag-name').value.trim(); const color = row.querySelector('.tag-color').value; if (!name) { if (row.querySelector('.tag-name').value !== '') bad = true; return; } out.push({ name, color }); }); + try { await api('/api/schlagwoerter', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ tags: out }) }); toast('Schlagwörter gespeichert.', 'success'); } + catch (e) { toast('Speichern fehlgeschlagen: ' + e.message, 'error'); } + }); + } + + // ── Events ── + function bindEvents() { + el.catTabs.forEach((t) => t.addEventListener('click', () => setCategory(t.dataset.cat))); + el.btnRefresh.addEventListener('click', () => { loadTree(); if (state.category === 'admin') setAdminView(state.adminView); }); + el.btnListAdd.addEventListener('click', listAddAction); + el.treeSearch.addEventListener('input', applyFilter); el.btnSave.addEventListener('click', saveCurrent); el.btnReload.addEventListener('click', reloadCurrent); el.btnDelete.addEventListener('click', deleteCurrent); - - // View-Tabs el.tabVisual.addEventListener('click', () => setView('visual')); el.tabHtml.addEventListener('click', () => setView('html')); - - // Visuell editieren - el.visualEditor.addEventListener('input', afterVisualEdit); - // HTML editieren - el.htmlEditor.addEventListener('input', () => { - markDirty(); - updatePreview(); - }); - - // Toolbar - bindToolbar(); - el.fmtColorSwatch.style.background = el.fmtColor.value; - - // Tastenkürzel: Strg/Cmd+S = Speichern + el.tabPreview.addEventListener('click', () => setView('preview')); + el.htmlEditor.addEventListener('input', () => { markDirty(); }); document.addEventListener('keydown', (e) => { - if ((e.ctrlKey || e.metaKey) && (e.key === 's' || e.key === 'S')) { - e.preventDefault(); - if (state.current && !el.btnSave.disabled) saveCurrent(); - } - // Escape schließt offene Modals - if (e.key === 'Escape') { - if (!el.promptBackdrop.hidden) el.promptCancel.click(); - else if (!el.confirmBackdrop.hidden) el.confirmCancel.click(); - } - }); - - // Vor Verlassen warnen, wenn ungespeichert - window.addEventListener('beforeunload', (e) => { - if (state.dirty) { - e.preventDefault(); - e.returnValue = ''; - return ''; - } + if ((e.ctrlKey || e.metaKey) && (e.key === 's' || e.key === 'S')) { e.preventDefault(); if (state.current && !el.btnSave.disabled && !el.editorPanel.hidden) saveCurrent(); } + if (e.key === 'Escape') { if (!el.promptBackdrop.hidden) el.promptCancel.click(); else if (!el.confirmBackdrop.hidden) el.confirmCancel.click(); } }); + window.addEventListener('beforeunload', (e) => { if (state.dirty) { e.preventDefault(); e.returnValue = ''; return ''; } }); } - // ──────────────────────────────────────────────────────────── - // Start - // ──────────────────────────────────────────────────────────── - + // ── Start ── async function init() { - bindEvents(); - setDirty(false); + hydrateIcons(document); + buildPlaceholderBar(); + bindEvents(); setDirty(false); setCategory('templates'); const ok = await loadConfigAndHealth(); - if (ok) { - await loadTree(); - } else if (state.config && !state.config.configured) { - // Banner ist sichtbar; kein Baum-Laden möglich. - } + if (ok) await loadTree(); } - document.addEventListener('DOMContentLoaded', init); })(); diff --git a/web-editor/public/fonts/pjs-400.ttf b/web-editor/public/fonts/pjs-400.ttf new file mode 100644 index 0000000000000000000000000000000000000000..b655eb4a0728afbac9dbd30b4e2bc7e14e4ca3d4 GIT binary patch literal 63336 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

N7r0I!E; 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�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

t<{on}-@#v(-p9 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 literal 0 HcmV?d00001 diff --git a/web-editor/public/fonts/pjs-700.ttf b/web-editor/public/fonts/pjs-700.ttf new file mode 100644 index 0000000000000000000000000000000000000000..91ab25815b53f0c840aa955e3fa96745fdf56062 GIT binary patch literal 63336 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�*(~f1YwV>&0WxzMY1FH$!^x8NCA94M(k}llq__=_@X=lc@;z0 zfuNB=+5{kx1m(893j$$iyXu5J8-fvMn`${sL{`#G-A6FVnSSrY$MT4T^hutM5s98q z@1!vm&nX8+6vV;nnfhLkn&cN-#Q%|~LD_Ff9<*eA!8Qa)q8)57pVRcYzBbtuZ%feX z@^g~9BE1!DA15R%kBU~sCu$e8Il?_oZzW*>oZZ;3)Y2S>8y0X}TK3E%ufqtIRI}9F zP;AtssjP`A?Lw2b@Z-f^M{RCo&H_CSJ?o>Qm&YY?TF(o4sLj_Ht;F*oqZQGR&fc85 zP2vylt?#10NK%)FzQ@-IvqnHJZnHH>r)`uMO>ve+h%q3_B}10ey9J&iRQ z?GgvH9eHWW8t+5L-57aJKvi{2>(<+6<>wO@NkcMS=iQF!0#eJ4D_#J62%W4=?elO@ z#>e7IQq=~1OiEOILYBU6Dds_hyuKzbB|()Wgm)<;D~mGfi1N$9GYxnaL3%)j?3-2x zp{%=HB5v=z9Fs7-JBv;Hw39rOix7UsZIgld4q}1^f72WW(F0)g2!D`%%OeG1YX*Ol L#N+0dF#P>LpN>gH literal 0 HcmV?d00001 diff --git a/web-editor/public/index.html b/web-editor/public/index.html index 3b27b15..bd0ae4e 100644 --- a/web-editor/public/index.html +++ b/web-editor/public/index.html @@ -35,46 +35,43 @@

@@ -117,9 +114,7 @@
- +