asdsad
This commit is contained in:
@@ -67,7 +67,6 @@ async function openTemplateManager(item, section) {
|
||||
const apiWarn = document.getElementById('manage_tpl_api_warn');
|
||||
const badge = document.getElementById('manage_tpl_badge');
|
||||
const versionsWrap = document.getElementById('manage_tpl_versions');
|
||||
const previewFrame = document.getElementById('manage_tpl_preview');
|
||||
const btnClose = document.getElementById('manageTemplateClose');
|
||||
const btnSave = document.getElementById('manageTemplateSave');
|
||||
const btnDelete = document.getElementById('manageTemplateDelete');
|
||||
@@ -86,11 +85,6 @@ async function openTemplateManager(item, section) {
|
||||
let versions = [];
|
||||
let activeId = 0;
|
||||
|
||||
const renderPreview = (html) => {
|
||||
if (!previewFrame) return;
|
||||
previewFrame.srcdoc = '<!doctype html><html><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"></head><body>' + (html || '<em>(leer)</em>') + '</body></html>';
|
||||
};
|
||||
|
||||
const updateDeleteState = () => {
|
||||
const hasActive = !!activeId;
|
||||
if (btnDelete) btnDelete.disabled = hasActive;
|
||||
@@ -121,13 +115,13 @@ async function openTemplateManager(item, section) {
|
||||
versionsWrap.innerHTML = versions.map(v => {
|
||||
const isActive = Number(v.is_active) === 1;
|
||||
const label = `${isActive ? '✓ ' : ''}#${v.version_no} – ${formatVersionDate(v.created_at)}` + (isActive ? ' (aktiv)' : '');
|
||||
const deleteBtn = isActive ? '' : `<button class=\"btn btn-danger\" data-version-delete=\"${v.id}\">Löschen</button>`;
|
||||
return `<div class=\"flex items-center gap-2 border rounded-lg px-3 py-2\" data-version-row=\"${v.id}\">
|
||||
<div class=\"text-xs text-slate-600\">${label}</div>
|
||||
<div class=\"ms-auto flex gap-2\">
|
||||
<button class=\"btn\" data-version-preview=\"${v.id}\">Vorschau</button>
|
||||
<button class=\"btn\" data-version-edit=\"${v.id}\">Bearbeiten</button>
|
||||
${isActive ? `<button class=\"btn\" data-version-deactivate=\"${v.id}\">Deaktivieren</button>` : `<button class=\"btn\" data-version-activate=\"${v.id}\">Aktivieren</button>`}
|
||||
<button class=\"btn btn-danger\" data-version-delete=\"${v.id}\" ${isActive ? 'disabled' : ''}>Löschen</button>
|
||||
${deleteBtn}
|
||||
</div>
|
||||
</div>`;
|
||||
}).join('');
|
||||
@@ -179,15 +173,9 @@ async function openTemplateManager(item, section) {
|
||||
const onVersionsClick = async (ev) => {
|
||||
const target = ev.target;
|
||||
if (!target || !target.dataset) return;
|
||||
const vid = Number(target.dataset.versionPreview || target.dataset.versionEdit || target.dataset.versionActivate || target.dataset.versionDeactivate || target.dataset.versionDelete || 0);
|
||||
const vid = Number(target.dataset.versionEdit || target.dataset.versionActivate || target.dataset.versionDeactivate || target.dataset.versionDelete || 0);
|
||||
if (!vid) return;
|
||||
|
||||
if (target.dataset.versionPreview !== undefined) {
|
||||
const res = await apiAction('content_versions.get', { method: 'GET', data: { id: vid, content_id: item.id } }).catch(() => ({}));
|
||||
const html = res?.item?.html || res?.item?.content || res?.html || res?.content || '';
|
||||
renderPreview(html);
|
||||
return;
|
||||
}
|
||||
if (target.dataset.versionEdit !== undefined) {
|
||||
dlg && dlg.close();
|
||||
const versionItem = { ...item, version_id: vid };
|
||||
@@ -224,13 +212,6 @@ async function openTemplateManager(item, section) {
|
||||
versionsWrap && versionsWrap.addEventListener('click', onVersionsClick);
|
||||
|
||||
await loadVersions();
|
||||
if (activeId) {
|
||||
const res = await apiAction('content_versions.get', { method: 'GET', data: { id: activeId, content_id: item.id } }).catch(() => ({}));
|
||||
const html = res?.item?.html || res?.item?.content || res?.html || res?.content || '';
|
||||
renderPreview(html);
|
||||
} else {
|
||||
renderPreview('');
|
||||
}
|
||||
|
||||
dlg && dlg.addEventListener('close', cleanup, { once: true });
|
||||
dlg && dlg.showModal();
|
||||
@@ -388,15 +369,13 @@ export async function loadList(section) {
|
||||
const editTplBtn = isTemplate ? `<button class='btn' data-edit='${item.id}'>Verwaltung</button>` : '';
|
||||
const testBtn = isTemplate ? `<button class='btn' data-test='${item.id}' data-name='${name}'>Testversand</button>` : '';
|
||||
const prevBtn = `<button class='btn' data-preview='${item.id}'>Vorschau</button>`;
|
||||
const delBtn = `<button class='btn btn-danger' data-del='${item.id}' data-name='${name}'>Löschen</button>`;
|
||||
|
||||
return `<div class='p-3 flex items-center gap-3'>
|
||||
${nameCell}
|
||||
<div class='text-xs text-gray-500'>#${item.id}</div>
|
||||
<div class='ms-auto flex gap-2 items-center'>
|
||||
${openBtn}
|
||||
${versionSelect}
|
||||
${[editTplBtn, testBtn, prevBtn, delBtn].filter(Boolean).join('')}
|
||||
${[editTplBtn, testBtn, prevBtn].filter(Boolean).join('')}
|
||||
</div>
|
||||
</div>`;
|
||||
}).join('');
|
||||
@@ -495,32 +474,7 @@ export async function loadList(section) {
|
||||
}
|
||||
}));
|
||||
|
||||
const delDlg = document.getElementById('deleteDialog');
|
||||
const delText = document.getElementById('deleteText');
|
||||
const delForm = document.getElementById('deleteForm');
|
||||
const delCancel = document.getElementById('deleteCancel');
|
||||
let pending = null;
|
||||
|
||||
delCancel && (delCancel.onclick = () => { pending = null; delDlg.close(); });
|
||||
|
||||
scope.querySelectorAll('[data-del]').forEach(btn => btn.addEventListener('click', () => {
|
||||
const id = Number(btn.dataset.del || 0);
|
||||
const nm = btn.dataset.name || '';
|
||||
pending = { id, name: nm };
|
||||
if (delText) {
|
||||
delText.innerHTML = `Soll <strong>${nm || '(ohne Name)'} #${id}</strong> wirklich gelöscht werden?`;
|
||||
}
|
||||
delDlg.showModal();
|
||||
}));
|
||||
|
||||
delForm && (delForm.onsubmit = async (ev) => {
|
||||
ev.preventDefault();
|
||||
if (!pending) return delDlg.close();
|
||||
const res = await apiAction('content.delete', { method: 'POST', data: { id: pending.id, section_id: section.id } });
|
||||
delDlg.close();
|
||||
toast(res && res.ok ? 'Gelöscht' : 'Löschen fehlgeschlagen', !!(res && res.ok), { duration: 3000 });
|
||||
loadList(section);
|
||||
});
|
||||
// delete handling removed from overview
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -172,7 +172,7 @@ require __DIR__ . '/../partials/structure/layout_start.php';
|
||||
<button type="button" id="manageTemplateSave" class="btn">Speichern</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mt-4 grid grid-cols-1 lg:grid-cols-2 gap-4">
|
||||
<div class="mt-4">
|
||||
<div class="space-y-3">
|
||||
<label class="block">
|
||||
<span class="text-sm text-slate-600">Name</span>
|
||||
@@ -193,13 +193,6 @@ require __DIR__ . '/../partials/structure/layout_start.php';
|
||||
<span id="manage_tpl_delete_hint" class="text-xs text-slate-500"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="space-y-2">
|
||||
<div class="text-sm font-semibold">Vorschau (gewählte Version)</div>
|
||||
<div class="rounded-lg border bg-slate-50 p-2">
|
||||
<iframe id="manage_tpl_preview" class="w-full h-[360px] bg-white rounded-md"></iframe>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</dialog>
|
||||
|
||||
Reference in New Issue
Block a user