Warnung deaktivierung Template
This commit is contained in:
@@ -1060,6 +1060,16 @@ export function initEditor() {
|
||||
}
|
||||
}
|
||||
|
||||
async function confirmTemplateReferences(actionLabel) {
|
||||
if (!current?.section?.is_template || !current?.id) return true;
|
||||
const res = await apiAction('templates.references', { method: 'GET', data: { template_id: current.id } }).catch(() => ({}));
|
||||
const refs = Array.isArray(res?.references) ? res.references : [];
|
||||
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?`);
|
||||
}
|
||||
|
||||
// Buttons
|
||||
btnSave && (btnSave.onclick = save);
|
||||
btnClear && (btnClear.onclick = clearEditor);
|
||||
@@ -1086,6 +1096,8 @@ export function initEditor() {
|
||||
if (!current?.id) return;
|
||||
if (!currentVersionMeta || Number(currentVersionMeta.is_active) !== 1) return;
|
||||
try {
|
||||
const okRefs = await confirmTemplateReferences('Deaktivieren');
|
||||
if (!okRefs) return;
|
||||
const res = await apiAction('content_versions.deactivate', { method: 'POST', data: { content_id: current.id } });
|
||||
if (!res?.ok) throw new Error(res?.error || 'Deaktivieren fehlgeschlagen');
|
||||
await loadVersionsForCurrent({ keepSelection: true, preferredId: currentVersionId });
|
||||
|
||||
@@ -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