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: