From 64d1fb072ab8daf4ef192c8c0e0bdd8bec06a26c Mon Sep 17 00:00:00 2001 From: Lars Gebhardt-Kusche Date: Mon, 19 Jan 2026 00:56:28 +0100 Subject: [PATCH] upload --- public/editor/bridge-core.js | 52 +++++++++++++++++++++++++++++------- 1 file changed, 43 insertions(+), 9 deletions(-) diff --git a/public/editor/bridge-core.js b/public/editor/bridge-core.js index 91f722e..e399370 100644 --- a/public/editor/bridge-core.js +++ b/public/editor/bridge-core.js @@ -941,18 +941,52 @@ eventCounts = {}; try { const parsedState = JSON.parse(jsonPayload); - ed.loadProjectData(parsedState); - applied = true; - log('CONTENT', 'JSON-Projektzustand angewendet.', 'orange'); - const hasComponents = ed.getComponents && ed.getComponents().length > 0; - const hasHtml = (ed.getHtml && ed.getHtml().trim()) ? true : false; - if (!hasComponents && !hasHtml && html) { - log('CONTENT WARN', 'JSON geladen aber leer, wechsle auf HTML-Fallback.', 'orange', 'warn'); - applied = false; + const isArray = Array.isArray(parsedState); + const hasPages = parsedState && Array.isArray(parsedState.pages); + const isLegacy = parsedState && typeof parsedState === 'object' + && !hasPages + && (parsedState.components || parsedState.styles); + if (isArray) { + ed.setComponents(parsedState); + applied = true; + log('CONTENT', 'JSON-Komponenten (Array) angewendet.', 'orange'); + } else if (isLegacy) { + if (parsedState.components) { + ed.setComponents(parsedState.components); + } else { + ed.setComponents(parsedState); + } + if (parsedState.styles) { + ed.setStyle(parsedState.styles); + } + applied = true; + log('CONTENT', 'Legacy JSON (components/styles) angewendet.', 'orange'); + } else if (parsedState && typeof parsedState === 'object' && !hasPages) { + ed.setComponents(parsedState); + applied = true; + log('CONTENT', 'JSON ohne Pages als Komponenten angewendet.', 'orange'); + } else { + ed.loadProjectData(parsedState); + applied = true; + log('CONTENT', 'JSON-Projektzustand angewendet.', 'orange'); + const hasComponents = ed.getComponents && ed.getComponents().length > 0; + const hasHtml = (ed.getHtml && ed.getHtml().trim()) ? true : false; + if (!hasComponents && !hasHtml && html) { + log('CONTENT WARN', 'JSON geladen aber leer, wechsle auf HTML-Fallback.', 'orange', 'warn'); + applied = false; + } } } catch (e) { log('CONTENT ERROR', `JSON loadProjectData Fehler: ${e.message}`, 'red', 'error'); - if (!html) { + try { + const fallback = parsedState && parsedState.components ? parsedState.components : parsedState; + if (fallback) { + ed.setComponents(fallback); + applied = true; + log('CONTENT', 'JSON-Fallback via setComponents angewendet.', 'orange'); + } + } catch {} + if (!applied && !html) { html = jsonPayload; } } finally {