From: Dan Brown Date: Mon, 15 Nov 2021 00:48:05 +0000 (+0000) Subject: Updated page includes to be top-level for code blocks X-Git-Tag: v21.11~1^2~7 X-Git-Url: http://source.bookstackapp.com/bookstack/commitdiff_plain/e29d03ae769db2bc1fe02520862c26d04cc5ea91 Updated page includes to be top-level for code blocks This change means that code blocks are now included still wrapped in their pre tags, as we do for tables and lists. Previously the inner content would be included which would lead to a generally bad/broken presentation. Hopefully should not be a breaking change as section include tags for code was tricky to get to, and it was in a semi-broken state. For #2406 --- diff --git a/app/Entities/Tools/PageContent.php b/app/Entities/Tools/PageContent.php index 52a10ae87..45bfe8fa1 100644 --- a/app/Entities/Tools/PageContent.php +++ b/app/Entities/Tools/PageContent.php @@ -390,7 +390,7 @@ class PageContent */ protected function fetchSectionOfPage(Page $page, string $sectionId): string { - $topLevelTags = ['table', 'ul', 'ol']; + $topLevelTags = ['table', 'ul', 'ol', 'pre']; $doc = $this->loadDocumentFromHtml($page->html); // Search included content for the id given and blank out if not exists. diff --git a/tests/Entity/PageContentTest.php b/tests/Entity/PageContentTest.php index 0b99c63c3..4dace533b 100644 --- a/tests/Entity/PageContentTest.php +++ b/tests/Entity/PageContentTest.php @@ -62,7 +62,9 @@ class PageContentTest extends TestCase public function test_page_includes_do_not_break_tables() { + /** @var Page $page */ $page = Page::query()->first(); + /** @var Page $secondPage */ $secondPage = Page::query()->where('id', '!=', $page->id)->first(); $content = '
test
'; @@ -72,8 +74,25 @@ class PageContentTest extends TestCase $page->html = "{{@{$secondPage->id}#table}}"; $page->save(); - $this->asEditor(); - $pageResp = $this->get($page->getUrl()); + $pageResp = $this->asEditor()->get($page->getUrl()); + $pageResp->assertSee($content, false); + } + + public function test_page_includes_do_not_break_code() + { + /** @var Page $page */ + $page = Page::query()->first(); + /** @var Page $secondPage */ + $secondPage = Page::query()->where('id', '!=', $page->id)->first(); + + $content = '
var cat = null;
'; + $secondPage->html = $content; + $secondPage->save(); + + $page->html = "{{@{$secondPage->id}#bkmrk-code}}"; + $page->save(); + + $pageResp = $this->asEditor()->get($page->getUrl()); $pageResp->assertSee($content, false); }