Raise loaded documents to the schema their blocks need, and bring the old browser checks back

The kant-it.de header used the hamburger switch at schema 19, so the server refused its
preview and save; the editor now raises a loaded document to the version its blocks and
properties require. The admin, button and navigation checks select blocks through the
structure tab, find the motion button by id and expect what the site's motion setting says.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
kantarciandClaude Opus 5 committed 2026-09-22 12:21:35 +02:00
1 parent 82a74277cb
commit ace6c50743
7 files changed
+87 -9

No files matched your search

+29
View File
@@ -152,6 +152,35 @@ export function createBlock(type) {
return block;
}
/**
* Hebt ein geladenes Dokument auf die Fassung, die seine Bausteine und Eigenschaften verlangen.
*
* Normalerweise tut das der Editor in dem Moment, in dem jemand etwas einstellt. Ein Dokument,
* das ein Skript geschrieben hat, kann aber eine Eigenschaft tragen, die seine Fassung noch nicht
* kennt - der Kopfbereich von kant-it.de hatte die Hamburger-Umschaltung bei Fassung 19. Die
* Website zeigt so etwas, der Server lehnt Vorschau und Speichern aber ab, und der Bereich war im
* Editor nicht mehr zu bearbeiten. Nur Fassungen, die etwas hinzufügen, werden hier gehoben; die
* Umstellung auf formatierten Text (12, 17) ändert die Bedeutung und bleibt eine bewusste Wahl.
*/
export function repairSchema(document) {
const walk = blocks => {
for (const block of blocks || []) {
upgradeForType(document, block.type);
const props = block.props || {};
if ('caption' in props) upgradeDocument(document, 3);
if ('click' in props || 'lightbox' in props) upgradeDocument(document, 19);
if ('newTab' in props) upgradeDocument(document, 20);
if (Object.values(block.style || {}).some(values => values?.backgroundImage === 'none')) upgradeDocument(document, 20);
if (block.anchor) upgradeDocument(document, 21);
if ('collapse' in props) upgradeDocument(document, 22);
if ('faq' in props) upgradeDocument(document, 23);
walk(block.children);
}
};
walk(document.blocks);
return document;
}
/** Raises the document schema to the version that knows this block type. */
export function upgradeForType(document, type) {
if (type === 'gallery') upgradeDocument(document, 3);