fix: divi-node-get rev + short type, divi-outline id validation
- lit/divi-node-get now also returns the post-level rev (Rev::ofPost, same
optimistic lock lit-content-update needs) next to tree_rev, and reports a
node's type as the short name ("button"), matching lit-divi-outline instead
of the namespaced "divi/button". description() notes that $variable(...)$
values shown are re-validated when written, never taken over unchecked.
- lit/divi-outline validates its optional `id` input against the same
path-ID pattern lit-divi-node-get uses (a malformed id is now a validation
error, not a "not found"), and its outputSchema's per-node `required` list
now includes info/presets/children, which are always present.
- NodeSummary::label() (the admin label shown in outlines and node-get)
whitespace-normalizes and bounds its result via Text::shorten(), like every
other summary string, instead of returning a raw, unbounded value.
- docs/superpowers/notes/.../etappe-2a-abnahme.md corrected: only a global
module is "nur lesbar" - a specialty section is a normal, editable
divi/section block; the outline just marks it "[specialty]".
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -55,6 +55,17 @@ final class DiviReadAbilitiesTest extends TestCase
|
||||
self::assertStringContainsString('tree_rev', $missing->get_error_message());
|
||||
}
|
||||
|
||||
public function testOutlineValidatesTheSubtreeId(): void
|
||||
{
|
||||
DiviPageLoaderTest::givenPost(DiviPageLoaderTest::fixture('synthetic-basic.html'));
|
||||
$ability = new DiviOutlineAbility(new DiviPageLoader(DiviPageLoaderTest::schema()), $this->design());
|
||||
|
||||
self::assertSame(
|
||||
'lit_validation_failed',
|
||||
$ability->execute(['post_id' => 7, 'id' => 'hero'])->get_error_code()
|
||||
);
|
||||
}
|
||||
|
||||
public function testOutlineHintsForEmptyAndReadOnlyContent(): void
|
||||
{
|
||||
DiviPageLoaderTest::givenPost('');
|
||||
@@ -73,8 +84,9 @@ final class DiviReadAbilitiesTest extends TestCase
|
||||
|
||||
$heading = $ability->execute(['post_id' => 7, 'id' => 's0.r0.c1.m0']);
|
||||
|
||||
self::assertSame('divi/heading', $heading['type']);
|
||||
self::assertSame('heading', $heading['type']);
|
||||
self::assertSame('s0.r0.c1', $heading['parent']);
|
||||
self::assertSame(12, strlen($heading['rev']));
|
||||
self::assertSame(
|
||||
['desktop' => ['value' => ['headingLevel' => 'h1', 'color' => '#1a1a1a']], 'phone' => ['value' => ['size' => '28px']]],
|
||||
$heading['attrs']['title.decoration.font.font']
|
||||
|
||||
Reference in New Issue
Block a user