Warnung deaktivierung Template
This commit is contained in:
@@ -88,6 +88,21 @@ async function openTemplateManager(item, section) {
|
||||
let versions = [];
|
||||
let activeId = 0;
|
||||
|
||||
const fetchTemplateReferences = async () => {
|
||||
if (!section?.is_template) return [];
|
||||
const res = await apiAction('templates.references', { method: 'GET', data: { template_id: item.id } }).catch(() => ({}));
|
||||
return Array.isArray(res?.references) ? res.references : [];
|
||||
};
|
||||
|
||||
const confirmTemplateReferences = async (actionLabel) => {
|
||||
if (!section?.is_template) return true;
|
||||
const refs = await fetchTemplateReferences();
|
||||
if (!refs.length) return true;
|
||||
const preview = refs.slice(0, 6).map(r => `${r.name || 'Template'} #${r.id}`).join(', ');
|
||||
const more = refs.length > 6 ? ` und ${refs.length - 6} weitere` : '';
|
||||
return confirm(`Dieses Template wird in ${refs.length} anderen Template(s) verwendet (${preview}${more}). ${actionLabel} trotzdem?`);
|
||||
};
|
||||
|
||||
const updateDeleteState = () => {
|
||||
const hasActive = !!activeId;
|
||||
if (btnDelete) btnDelete.disabled = hasActive;
|
||||
@@ -176,6 +191,10 @@ async function openTemplateManager(item, section) {
|
||||
|
||||
const onDeleteItem = async () => {
|
||||
if (activeId) return;
|
||||
if (section?.is_template) {
|
||||
const ok = await confirmTemplateReferences('Löschen');
|
||||
if (!ok) return;
|
||||
}
|
||||
if (!delDlg || !delForm) {
|
||||
const res = await apiAction('content.delete', { method: 'POST', data: { id: item.id, section_id: section.id } });
|
||||
toast(res && res.ok ? 'Gelöscht' : 'Löschen fehlgeschlagen', !!(res && res.ok), { duration: 3000 });
|
||||
@@ -193,6 +212,10 @@ async function openTemplateManager(item, section) {
|
||||
if (delCancel) delCancel.onclick = () => { delDlg.close(); cleanupDelete(); };
|
||||
delForm.onsubmit = async (ev) => {
|
||||
ev.preventDefault();
|
||||
if (section?.is_template) {
|
||||
const ok = await confirmTemplateReferences('Löschen');
|
||||
if (!ok) return;
|
||||
}
|
||||
const res = await apiAction('content.delete', { method: 'POST', data: { id: item.id, section_id: section.id } });
|
||||
delDlg.close();
|
||||
cleanupDelete();
|
||||
@@ -223,6 +246,10 @@ async function openTemplateManager(item, section) {
|
||||
return;
|
||||
}
|
||||
if (target.dataset.versionDeactivate !== undefined) {
|
||||
if (section?.is_template) {
|
||||
const ok = await confirmTemplateReferences('Deaktivieren');
|
||||
if (!ok) return;
|
||||
}
|
||||
const res = await apiAction('content_versions.deactivate', { method: 'POST', data: { content_id: item.id } });
|
||||
toast(res && res.ok ? 'Aktive Version deaktiviert' : 'Deaktivieren fehlgeschlagen', !!(res && res.ok));
|
||||
await loadVersions();
|
||||
|
||||
Reference in New Issue
Block a user