fix: library IDs stay hidden without library access (ruling P13)
Outline, node-get, write outlines, the render summary and replace-text's opaque-node match name no library ID unless the library group is visible and the user has divi_library; read-only still names them. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -183,4 +183,27 @@ final class OutlineTest extends TestCase
|
||||
{
|
||||
return (string) file_get_contents(dirname(__DIR__, 4) . '/Fixtures/divi/' . $name);
|
||||
}
|
||||
|
||||
/** Ruling P13: without library access the outline says "global", but not which entry. */
|
||||
public function testGlobalIdsCanBeHidden(): void
|
||||
{
|
||||
$content = DiviFixtures::markup('stage3/page--globale-instanzen.html');
|
||||
$outline = new Outline([], false);
|
||||
$rows = $outline->rows(NodeIndex::build((new Parser())->parse($content)));
|
||||
|
||||
$byId = array_column($rows, null, 'id');
|
||||
self::assertNull($byId['g0']['global_id']);
|
||||
self::assertSame('section', $byId['g0']['type']);
|
||||
self::assertStringNotContainsString('1058', $outline->text($rows));
|
||||
self::assertStringNotContainsString('1059', $outline->text($rows));
|
||||
self::assertStringNotContainsString('[global', $outline->text($rows));
|
||||
self::assertStringContainsString('g0 section "Global Abschnitt" (nur lesbar)', $outline->text($rows));
|
||||
self::assertStringNotContainsString('1058', (string) json_encode($rows));
|
||||
self::assertStringNotContainsString('1059', (string) json_encode($rows));
|
||||
$summary = $outline->summary(NodeIndex::build((new Parser())->parse($content)));
|
||||
self::assertStringNotContainsString('1058', (string) $summary['text']);
|
||||
|
||||
$shown = new Outline();
|
||||
self::assertStringContainsString('[global 1058]', $shown->text($shown->rows(NodeIndex::build((new Parser())->parse($content)))));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user