Change/edit
This commit is contained in:
@@ -1 +1 @@
|
|||||||
1.2.26
|
1.2.27
|
||||||
@@ -1144,7 +1144,12 @@ export function initEditor() {
|
|||||||
try {
|
try {
|
||||||
const okRefs = await confirmTemplateReferences('Deaktivieren');
|
const okRefs = await confirmTemplateReferences('Deaktivieren');
|
||||||
if (!okRefs) return;
|
if (!okRefs) return;
|
||||||
const res = await apiAction('content_versions.deactivate', { method: 'POST', data: { content_id: current.id } });
|
let res = await apiAction('content_versions.deactivate', { method: 'POST', data: { content_id: current.id } });
|
||||||
|
if (res && res.ok === false && Array.isArray(res.references) && res.references.length) {
|
||||||
|
const ok = confirm('Dieses Template wird in anderen Templates verwendet. Trotzdem deaktivieren?');
|
||||||
|
if (!ok) return;
|
||||||
|
res = await apiAction('content_versions.deactivate', { method: 'POST', data: { content_id: current.id, force: 1 } });
|
||||||
|
}
|
||||||
if (!res?.ok) throw new Error(res?.error || 'Deaktivieren fehlgeschlagen');
|
if (!res?.ok) throw new Error(res?.error || 'Deaktivieren fehlgeschlagen');
|
||||||
await loadVersionsForCurrent({ keepSelection: true, preferredId: currentVersionId });
|
await loadVersionsForCurrent({ keepSelection: true, preferredId: currentVersionId });
|
||||||
toast('Aktive Version deaktiviert', true);
|
toast('Aktive Version deaktiviert', true);
|
||||||
|
|||||||
@@ -260,7 +260,12 @@ async function openTemplateManager(item, section) {
|
|||||||
const ok = await confirmTemplateReferences('Deaktivieren');
|
const ok = await confirmTemplateReferences('Deaktivieren');
|
||||||
if (!ok) return;
|
if (!ok) return;
|
||||||
}
|
}
|
||||||
const res = await apiAction('content_versions.deactivate', { method: 'POST', data: { content_id: item.id } });
|
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 ok = confirm('Dieses Template wird in anderen Templates verwendet. Trotzdem deaktivieren?');
|
||||||
|
if (!ok) return;
|
||||||
|
res = await apiAction('content_versions.deactivate', { method: 'POST', data: { content_id: item.id, force: 1 } });
|
||||||
|
}
|
||||||
toast(res && res.ok ? 'Aktive Version deaktiviert' : 'Deaktivieren fehlgeschlagen', !!(res && res.ok));
|
toast(res && res.ok ? 'Aktive Version deaktiviert' : 'Deaktivieren fehlgeschlagen', !!(res && res.ok));
|
||||||
await loadVersions();
|
await loadVersions();
|
||||||
if (typeof window.loadList === 'function') window.loadList(section);
|
if (typeof window.loadList === 'function') window.loadList(section);
|
||||||
@@ -270,7 +275,12 @@ async function openTemplateManager(item, section) {
|
|||||||
const versionRow = versions.find(v => Number(v.id) === vid);
|
const versionRow = versions.find(v => Number(v.id) === vid);
|
||||||
if (versionRow && Number(versionRow.is_active) === 1) return;
|
if (versionRow && Number(versionRow.is_active) === 1) return;
|
||||||
if (!confirm('Version wirklich löschen?')) return;
|
if (!confirm('Version wirklich löschen?')) return;
|
||||||
const res = await apiAction('content_versions.delete', { method: 'POST', data: { id: vid, content_id: item.id } });
|
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 ok = confirm('Dieses Template wird in anderen Templates verwendet. Trotzdem löschen?');
|
||||||
|
if (!ok) return;
|
||||||
|
res = await apiAction('content_versions.delete', { method: 'POST', data: { id: vid, content_id: item.id, force: 1 } });
|
||||||
|
}
|
||||||
toast(res && res.ok ? 'Version gelöscht' : 'Löschen fehlgeschlagen', !!(res && res.ok));
|
toast(res && res.ok ? 'Version gelöscht' : 'Löschen fehlgeschlagen', !!(res && res.ok));
|
||||||
await loadVersions();
|
await loadVersions();
|
||||||
if (typeof window.loadList === 'function') window.loadList(section);
|
if (typeof window.loadList === 'function') window.loadList(section);
|
||||||
|
|||||||
@@ -1240,6 +1240,7 @@ class ApiKernel
|
|||||||
$versionId = (int)$this->val($this->in, ['id', 'version_id', 'version'], 0);
|
$versionId = (int)$this->val($this->in, ['id', 'version_id', 'version'], 0);
|
||||||
if ($versionId <= 0) $this->fail('version id required', null, 422);
|
if ($versionId <= 0) $this->fail('version id required', null, 422);
|
||||||
$contentId = (int)$this->val($this->in, ['content_id', 'content'], 0);
|
$contentId = (int)$this->val($this->in, ['content_id', 'content'], 0);
|
||||||
|
$force = (int)$this->val($this->in, ['force', 'override'], 0) === 1;
|
||||||
|
|
||||||
$versionsTable = $this->contentVersionsTable();
|
$versionsTable = $this->contentVersionsTable();
|
||||||
$itemsTable = $this->contentItemsTable();
|
$itemsTable = $this->contentItemsTable();
|
||||||
@@ -1323,32 +1324,35 @@ class ApiKernel
|
|||||||
if ($customerId <= 0) $this->fail('Customer context missing', null, 500);
|
if ($customerId <= 0) $this->fail('Customer context missing', null, 500);
|
||||||
$contentId = (int)$this->val($this->in, ['content_id', 'content'], 0);
|
$contentId = (int)$this->val($this->in, ['content_id', 'content'], 0);
|
||||||
if ($contentId <= 0) $this->fail('content_id required', null, 422);
|
if ($contentId <= 0) $this->fail('content_id required', null, 422);
|
||||||
|
$force = (int)$this->val($this->in, ['force', 'override'], 0) === 1;
|
||||||
|
|
||||||
$refsDebug = [];
|
if (!$force) {
|
||||||
$refs = $this->findTemplateReferences($customerId, $contentId, $refsDebug);
|
$refsDebug = [];
|
||||||
if (!empty($refsDebug)) {
|
$refs = $this->findTemplateReferences($customerId, $contentId, $refsDebug);
|
||||||
$this->writeDebugLog('templates_references_debug', $refsDebug);
|
if (!empty($refsDebug)) {
|
||||||
}
|
$this->writeDebugLog('templates_references_debug', $refsDebug);
|
||||||
if (!empty($refs)) {
|
}
|
||||||
debug_log_write('templates_toggle', [
|
if (!empty($refs)) {
|
||||||
'time' => date(DATE_ATOM),
|
debug_log_write('templates_toggle', [
|
||||||
'action' => 'content_versions.deactivate.blocked',
|
'time' => date(DATE_ATOM),
|
||||||
'customer_id' => $customerId,
|
'action' => 'content_versions.deactivate.blocked',
|
||||||
'content_id' => $contentId,
|
'customer_id' => $customerId,
|
||||||
'references' => $refs,
|
'content_id' => $contentId,
|
||||||
'input' => $this->in,
|
'references' => $refs,
|
||||||
], [
|
'input' => $this->in,
|
||||||
'append' => true,
|
], [
|
||||||
'json' => true,
|
'append' => true,
|
||||||
'newline' => true,
|
'json' => true,
|
||||||
]);
|
'newline' => true,
|
||||||
$this->respond([
|
]);
|
||||||
'ok' => false,
|
$this->respond([
|
||||||
'error' => 'Template wird in anderen Templates verwendet',
|
'ok' => false,
|
||||||
'content_id' => $contentId,
|
'error' => 'Template wird in anderen Templates verwendet',
|
||||||
'count' => count($refs),
|
'content_id' => $contentId,
|
||||||
'references' => $refs,
|
'count' => count($refs),
|
||||||
], 409);
|
'references' => $refs,
|
||||||
|
], 409);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$ok = $this->deactivateContentVersion($customerId, $contentId);
|
$ok = $this->deactivateContentVersion($customerId, $contentId);
|
||||||
@@ -1395,6 +1399,37 @@ class ApiKernel
|
|||||||
$this->fail('Active versions cannot be deleted', ['id' => $versionId], 422);
|
$this->fail('Active versions cannot be deleted', ['id' => $versionId], 422);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!$force && $contentId > 0) {
|
||||||
|
$refsDebug = [];
|
||||||
|
$refs = $this->findTemplateReferences($customerId, $contentId, $refsDebug);
|
||||||
|
if (!empty($refsDebug)) {
|
||||||
|
$this->writeDebugLog('templates_references_debug', $refsDebug);
|
||||||
|
}
|
||||||
|
if (!empty($refs)) {
|
||||||
|
debug_log_write('templates_toggle', [
|
||||||
|
'time' => date(DATE_ATOM),
|
||||||
|
'action' => 'content_versions.delete.blocked',
|
||||||
|
'customer_id' => $customerId,
|
||||||
|
'content_id' => $contentId,
|
||||||
|
'version_id' => $versionId,
|
||||||
|
'references' => $refs,
|
||||||
|
'input' => $this->in,
|
||||||
|
], [
|
||||||
|
'append' => true,
|
||||||
|
'json' => true,
|
||||||
|
'newline' => true,
|
||||||
|
]);
|
||||||
|
$this->respond([
|
||||||
|
'ok' => false,
|
||||||
|
'error' => 'Template wird in anderen Templates verwendet',
|
||||||
|
'content_id' => $contentId,
|
||||||
|
'version_id' => $versionId,
|
||||||
|
'count' => count($refs),
|
||||||
|
'references' => $refs,
|
||||||
|
], 409);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
$stmt = $this->pdo->prepare("DELETE FROM `$table` WHERE `id` = :id AND `customer_id` = :cid LIMIT 1");
|
$stmt = $this->pdo->prepare("DELETE FROM `$table` WHERE `id` = :id AND `customer_id` = :cid LIMIT 1");
|
||||||
$stmt->execute([':id' => $versionId, ':cid' => $customerId]);
|
$stmt->execute([':id' => $versionId, ':cid' => $customerId]);
|
||||||
$this->respond(['ok' => true, 'deleted' => true, 'id' => $versionId]);
|
$this->respond(['ok' => true, 'deleted' => true, 'id' => $versionId]);
|
||||||
|
|||||||
Reference in New Issue
Block a user