feat: lit/divi-colors-set und lit/divi-variables-set in der Divi-Integration; je ein geteilter Farben- und Variablen-Adapter
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5.5
parent
88a939787d
commit
0893b7e184
@@ -125,7 +125,7 @@ Einzelne Module bekommen Presets mit `lit-divi-insert`, `lit-divi-update` und `l
|
||||
Standardaussehen. Ein **Standard-Preset** wird nicht „entkoppelt“, weil Divi es ohne Verweis anwendet; detach
|
||||
entfernt dort nur ausdrückliche Verweise und sagt das in `warnings`. Zum Beenden der Standardwirkung das Preset
|
||||
löschen (`lit/divi-presets-delete`) oder mit `make_default: false` den Standard aufheben.
|
||||
- Variablen: `variable` wird noch nicht unterstützt (`unsupported`; Variablen folgen mit Etappe 4c).
|
||||
- Variablen: `variable` (Name oder ID) ersetzt jeden ganzen Verweis auf die Variable durch ihren aktuellen Wert, auch in Presets; danach lässt sie sich mit `lit/divi-variables-set` archivieren (löschen kann Divi sie nicht).
|
||||
- Meldet die Antwort `hidden_count` größer als 0, können Seiten, die dieses Konto nicht lesen darf, noch Verweise
|
||||
enthalten; dann nennt sie den Hinweis auf `lit/divi-presets-delete` nicht.
|
||||
- Danach `lit/divi-presets-delete` aufrufen (Probelauf, `confirm`, `design_rev`); es meldet kein `in_use` mehr,
|
||||
|
||||
@@ -16,6 +16,7 @@ use LIT\MCP\Integrations\Divi\BlockTree\Parser;
|
||||
use LIT\MCP\Integrations\Divi\Design\ColorRestorePlanner;
|
||||
use LIT\MCP\Integrations\Divi\Design\DesignSystemReader;
|
||||
use LIT\MCP\Integrations\Divi\Design\DesignSystemWriter;
|
||||
use LIT\MCP\Integrations\Divi\Design\DiviColorsSetAbility;
|
||||
use LIT\MCP\Integrations\Divi\Design\DiviDesignSystemAbility;
|
||||
use LIT\MCP\Integrations\Divi\Design\DesignChange;
|
||||
use LIT\MCP\Integrations\Divi\Design\DesignRights;
|
||||
@@ -28,6 +29,7 @@ use LIT\MCP\Integrations\Divi\Design\GlobalVariablesAdapter;
|
||||
use LIT\MCP\Integrations\Divi\Design\DiviPresetsAssignAbility;
|
||||
use LIT\MCP\Integrations\Divi\Design\DiviPresetsDeleteAbility;
|
||||
use LIT\MCP\Integrations\Divi\Design\DiviPresetsSetAbility;
|
||||
use LIT\MCP\Integrations\Divi\Design\DiviVariablesSetAbility;
|
||||
use LIT\MCP\Integrations\Divi\Design\PageRewriter;
|
||||
use LIT\MCP\Integrations\Divi\Design\PresetAssignment;
|
||||
use LIT\MCP\Integrations\Divi\Design\PresetComposer;
|
||||
@@ -91,6 +93,10 @@ final class DiviIntegration implements Integration, Bootable
|
||||
private ThemeBuilderAccess $themeBuilderAccess;
|
||||
private DesignSystemWriter $designWriter;
|
||||
|
||||
private GlobalColorsAdapter $colorsAdapter;
|
||||
|
||||
private GlobalVariablesAdapter $variablesAdapter;
|
||||
|
||||
/** @var (Closure(): bool)|null Whether lit/divi-insert is enabled (ruling P9, E9, audit M2); null = always. */
|
||||
private ?Closure $diviWritable;
|
||||
|
||||
@@ -114,6 +120,8 @@ final class DiviIntegration implements Integration, Bootable
|
||||
$this->modules = new DiviModules();
|
||||
$this->design = new DesignSystemReader();
|
||||
$this->designWriter = new DesignSystemWriter();
|
||||
$this->colorsAdapter = new GlobalColorsAdapter();
|
||||
$this->variablesAdapter = new GlobalVariablesAdapter();
|
||||
$this->diviWritable = $this->gate(static fn (ToolAvailability $t): bool => $t->allows('lit/divi-insert'));
|
||||
$this->libraryInsertable = $this->gate(
|
||||
static fn (ToolAvailability $t): bool => $t->allows('lit/library-insert')
|
||||
@@ -270,8 +278,8 @@ final class DiviIntegration implements Integration, Bootable
|
||||
$this->designChange(),
|
||||
new SnapshotStore(),
|
||||
new PresetRestorePlanner($this->designWriter, DesignRights::unfilteredHtml()),
|
||||
new ColorRestorePlanner($this->designWriter, new GlobalColorsAdapter()),
|
||||
new VariableRestorePlanner($this->designWriter, new GlobalVariablesAdapter())
|
||||
new ColorRestorePlanner($this->designWriter, $this->colorsAdapter),
|
||||
new VariableRestorePlanner($this->designWriter, $this->variablesAdapter)
|
||||
),
|
||||
new DiviPresetsAssignAbility(
|
||||
$this->designWriter,
|
||||
@@ -280,12 +288,24 @@ final class DiviIntegration implements Integration, Bootable
|
||||
),
|
||||
new DiviDesignDetachAbility(
|
||||
$this->designWriter,
|
||||
new GlobalVariablesAdapter(),
|
||||
$this->variablesAdapter,
|
||||
$this->designChange(),
|
||||
$this->globalUsages(),
|
||||
$this->pageRewriter($loader),
|
||||
DesignRights::unfilteredHtml()
|
||||
),
|
||||
new DiviColorsSetAbility(
|
||||
$this->designWriter,
|
||||
$this->colorsAdapter,
|
||||
$this->designChange(),
|
||||
$this->globalUsages()
|
||||
),
|
||||
new DiviVariablesSetAbility(
|
||||
$this->designWriter,
|
||||
$this->variablesAdapter,
|
||||
$this->designChange(),
|
||||
$this->globalUsages()
|
||||
),
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
@@ -57,6 +57,8 @@ final class DiviIntegrationTest extends TestCase
|
||||
'lit/divi-design-restore',
|
||||
'lit/divi-presets-assign',
|
||||
'lit/divi-design-detach',
|
||||
'lit/divi-colors-set',
|
||||
'lit/divi-variables-set',
|
||||
];
|
||||
|
||||
public function testProvidesTheDiviAbilitiesOnlyWithDivi5(): void
|
||||
|
||||
@@ -65,6 +65,8 @@ final class DiviToolFeaturesTest extends TestCase
|
||||
'page-read', 'page-write', 'catalog', 'design-read', 'preset-write', 'library-read', 'library-write',
|
||||
'tb-write', 'roles',
|
||||
],
|
||||
'lit/divi-colors-set' => ['design-read', 'color-write'],
|
||||
'lit/divi-variables-set' => ['design-read', 'variable-write'],
|
||||
// Library (divi-library)
|
||||
'lit/library-list' => ['library-read', 'roles'],
|
||||
'lit/library-find-similar' => ['page-read', 'catalog', 'roles'],
|
||||
@@ -348,6 +350,7 @@ final class DiviToolFeaturesTest extends TestCase
|
||||
'lit/divi-node-copy' => 'page-write', 'lit/library-insert' => 'page-write',
|
||||
'lit/library-make-global' => 'library-write', 'lit/library-save' => 'library-write',
|
||||
'lit/divi-presets-set' => 'preset-write', 'lit/divi-presets-delete' => 'preset-write',
|
||||
'lit/divi-colors-set' => 'color-write', 'lit/divi-variables-set' => 'variable-write',
|
||||
'lit/divi-design-restore' => 'preset-write', 'lit/divi-design-detach' => 'preset-write',
|
||||
'lit/divi-presets-assign' => 'page-write', 'lit/tb-assign' => 'tb-write', 'lit/tb-activate' => 'tb-write',
|
||||
'lit/tb-create-template' => 'tb-write',
|
||||
|
||||
Reference in New Issue
Block a user