From 36af846b3e21d49fc56e9c73d9d7a5765aa3eaa0 Mon Sep 17 00:00:00 2001 From: Jan-Niclas Loosen Date: Fri, 16 Oct 2026 17:24:42 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20Divi-Formate=20der=20Presets=20gegen=20?= =?UTF-8?q?5.15.1=20gepr=C3=BCft?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Haiku 5.5 --- .../notes/2026-09-28-etappe-4-divi-formate.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/docs/superpowers/notes/2026-09-28-etappe-4-divi-formate.md b/docs/superpowers/notes/2026-09-28-etappe-4-divi-formate.md index ddf9ee5..fbb1dc4 100644 --- a/docs/superpowers/notes/2026-09-28-etappe-4-divi-formate.md +++ b/docs/superpowers/notes/2026-09-28-etappe-4-divi-formate.md @@ -4,6 +4,20 @@ Stand 2026-09-28. Grundlage: Quelltext von Divi 5.2.1 und echte Daten, die über Pfadangaben relativ zu `wp-content/themes/Divi/`. Abkürzung **B5** = `includes/builder-5/server/`. Minifizierte Builder-Dateien liegen in `includes/builder-5/visual-builder/build/`; dort steht statt einer Zeile ein Suchbegriff. +## Nachtrag Divi 5.15.1 (Etappe 4a, 2026-10-16) + +Geprüft gegen Divi 5.15.1 (installiert, freigegeben): +- `GlobalPreset::save_data()` hat den zweiten Parameter `$skip_external_cache = false`; das Plugin übergibt ihn nicht. Der Parameter wird mit einem internen Flag (`$_skip_external_cache_nested`) verodert und an `ET_Core_PageResource::remove_static_resources()` weitergereicht. +- `GlobalPresetController::sync_permission()` verlangt jetzt **zusätzlich `edit_theme_options`** (5.2.1: nur Visual-Builder-Recht). Die Rechte in Spec §10 entsprechen damit Divi. +- Der Sync nimmt Chunks an (`requestId`, `chunkIndex`, `totalChunks`, Transient `et_global_preset_chunks__`); das Plugin schickt nie Chunks. +- Schrittfolge des Sync (ohne Chunks) unverändert: `prepare_data` → `get_data` → `validate_preset_count` → bei Löschaktionen `get_deleted_preset_ids` + `remove_preset_from_legacy_option` → `save_data`. Das Plugin wiederholt sie in `DesignSystemWriter::savePresets()` (Mirror `preset-sync`); diese Klasse existiert noch nicht (geplant für Etappe 4a). +- Signaturen aus Plan Step 1 bestätigt (`prepare_data`, `validate_preset_count`, `save_data`, `get_deleted_preset_ids`, `remove_preset_from_legacy_option`, `can_current_user_use_visual_builder`); `option_name`, `get_data`, `get_preset_attrs`, `get_preset_attrs_mapping` vorhanden. +- Abweichungen bei der Formatprüfung am lebenden Bestand (Seed-Skript lief erfolgreich, Seite 170): + - Zeilennummern in den Abschnitten 1–8 beziehen sich auf 5.2.1 und stimmen nicht mehr (z. B. `save_data` jetzt `GlobalPreset.php:548`, `sync_permission` jetzt `GlobalPresetController.php:465`). + - Gruppen-Preset-Einträge haben `groupName` und `groupId` (wie in Abschnitt 3), aber kein `renderAttrs` im Seed-Bestand; `renderAttrs` ist optional. + - Das Mapping (`Conversion::get_preset_attrs_mapping("divi/button")`) liefert `attrName`, `preset` und bei Bedarf `subName`. `preset` ist nicht immer eine Liste: gesehen wurden `"meta"`, `"content"` (String) und `["html"]` (Array). +- Keine weiteren Abweichungen zu §3, außer den oben genannten. + ## 0. Grundlagen: wo Divi speichert `et_get_option()`/`et_update_option()` (`epanel/custom_functions.php:211`, `:272`) haben drei Ziele: