aktive/inaktiv list templates

This commit is contained in:
2026-02-03 03:49:42 +01:00
parent aaddd33e3b
commit d10614dc0a
4 changed files with 163 additions and 35 deletions

View File

@@ -53,10 +53,16 @@ const showConfirmDialog = (() => {
});
};
return async ({ title, text, confirmLabel = 'Bestätigen', cancelLabel = 'Abbrechen' }) => {
return async ({ title, text, html = false, confirmLabel = 'Bestätigen', cancelLabel = 'Abbrechen' }) => {
ensure();
if (titleEl) titleEl.textContent = title || 'Bestätigung';
if (textEl) textEl.textContent = text || '';
if (textEl) {
if (html) {
textEl.innerHTML = text || '';
} else {
textEl.textContent = text || '';
}
}
if (btnOk) btnOk.textContent = confirmLabel;
if (btnCancel) btnCancel.textContent = cancelLabel;
if (!dialog.open) dialog.showModal();
@@ -66,6 +72,19 @@ const showConfirmDialog = (() => {
};
})();
function formatReferencesHtml(refs = []) {
if (!refs.length) return '';
const lines = refs.map(ref => {
const name = esc(ref.name || 'Template');
const id = Number(ref.id || 0);
const versions = Array.isArray(ref.versions) && ref.versions.length
? ` Versionen: ${ref.versions.join(', ')}`
: '';
return `${name} #${id}${versions}`;
});
return lines.join('<br>');
}
function formatVersionDate(value) {
if (!value) return '';
try {
@@ -173,7 +192,8 @@ async function openTemplateManager(item, section) {
const more = refs.length > 6 ? ` und ${refs.length - 6} weitere` : '';
return await showConfirmDialog({
title: 'Template wird verwendet',
text: `Dieses Template wird in ${refs.length} anderen Template(s) verwendet (${preview}${more}). ${actionLabel} trotzdem?`,
html: true,
text: `Dieses Template wird in ${refs.length} anderen Template(s) verwendet (${esc(preview)}${esc(more)}).<br>${formatReferencesHtml(refs)}<br>${esc(actionLabel)} trotzdem?`,
confirmLabel: actionLabel,
});
};
@@ -327,9 +347,11 @@ async function openTemplateManager(item, section) {
}
let res = await apiAction('content_versions.deactivate', { method: 'POST', data: { content_id: item.id } });
if (res && res.ok === false && Array.isArray(res.references) && res.references.length) {
const refs = res.references || [];
const ok = await showConfirmDialog({
title: 'Template wird verwendet',
text: 'Dieses Template wird in anderen Templates verwendet. Trotzdem deaktivieren?',
html: true,
text: `Dieses Template wird in anderen Templates verwendet.<br>${formatReferencesHtml(refs)}<br>Deaktivieren trotzdem?`,
confirmLabel: 'Deaktivieren',
});
if (!ok) return;
@@ -346,9 +368,11 @@ async function openTemplateManager(item, section) {
if (!confirm('Version wirklich löschen?')) return;
let res = await apiAction('content_versions.delete', { method: 'POST', data: { id: vid, content_id: item.id } });
if (res && res.ok === false && Array.isArray(res.references) && res.references.length) {
const refs = res.references || [];
const ok = await showConfirmDialog({
title: 'Template wird verwendet',
text: 'Dieses Template wird in anderen Templates verwendet. Trotzdem löschen?',
html: true,
text: `Dieses Template wird in anderen Templates verwendet.<br>${formatReferencesHtml(refs)}<br>Löschen trotzdem?`,
confirmLabel: 'Löschen',
});
if (!ok) return;