This commit is contained in:
2026-01-22 00:01:36 +01:00
parent 8a776e1dc3
commit 6c06b850eb

View File

@@ -320,7 +320,10 @@ export function initEditor() {
} }
} }
function renderVersionOptions(items) { function renderVersionOptions(items, opts = {}) {
const keepSelection = !!opts.keepSelection;
const preferredId = opts.preferredId ? String(opts.preferredId) : '';
const selectionToKeep = preferredId || (keepSelection ? String(versionSelect?.value || lastVersionSelection || '') : '');
versionItems = items || []; versionItems = items || [];
versionMap = new Map(); versionMap = new Map();
if (!versionSelect) return ''; if (!versionSelect) return '';
@@ -348,7 +351,12 @@ export function initEditor() {
versionMap.set(String(item.id), item); versionMap.set(String(item.id), item);
if (Number(item.is_active) === 1 && !activeId) activeId = String(item.id); if (Number(item.is_active) === 1 && !activeId) activeId = String(item.id);
}); });
const fallbackId = activeId || (rows[0] ? String(rows[0].id) : ''); let fallbackId = '';
if (selectionToKeep && versionMap.has(selectionToKeep)) {
fallbackId = selectionToKeep;
} else {
fallbackId = activeId || (rows[0] ? String(rows[0].id) : '');
}
if (fallbackId) { if (fallbackId) {
lastVersionSelection = fallbackId; lastVersionSelection = fallbackId;
versionSelect.value = fallbackId; versionSelect.value = fallbackId;
@@ -357,17 +365,17 @@ export function initEditor() {
return lastVersionSelection; return lastVersionSelection;
} }
async function loadVersionsForCurrent() { async function loadVersionsForCurrent(opts = {}) {
if (!current?.id) { if (!current?.id) {
renderVersionOptions([]); renderVersionOptions([], opts);
return ''; return '';
} }
try { try {
const res = await apiAction('content_versions.list', { method: 'GET', data: { content_id: current.id, id: current.id } }); const res = await apiAction('content_versions.list', { method: 'GET', data: { content_id: current.id, id: current.id } });
if (!res?.ok) throw new Error(res?.error || 'Versionen konnten nicht geladen werden'); if (!res?.ok) throw new Error(res?.error || 'Versionen konnten nicht geladen werden');
return renderVersionOptions(Array.isArray(res?.items) ? res.items : []); return renderVersionOptions(Array.isArray(res?.items) ? res.items : [], opts);
} catch { } catch {
renderVersionOptions([]); renderVersionOptions([], opts);
return ''; return '';
} }
} }
@@ -1043,7 +1051,7 @@ export function initEditor() {
try { try {
const res = await apiAction('content_versions.deactivate', { method: 'POST', data: { content_id: current.id } }); const res = await apiAction('content_versions.deactivate', { method: 'POST', data: { content_id: current.id } });
if (!res?.ok) throw new Error(res?.error || 'Deaktivieren fehlgeschlagen'); if (!res?.ok) throw new Error(res?.error || 'Deaktivieren fehlgeschlagen');
await loadVersionsForCurrent(); await loadVersionsForCurrent({ keepSelection: true, preferredId: currentVersionId });
toast('Aktive Version deaktiviert', true); toast('Aktive Version deaktiviert', true);
} catch (e) { } catch (e) {
err(e.message || 'Deaktivieren fehlgeschlagen'); err(e.message || 'Deaktivieren fehlgeschlagen');