From e29d03ae769db2bc1fe02520862c26d04cc5ea91 Mon Sep 17 00:00:00 2001 From: Dan Brown <ssddanbrown@googlemail.com> Date: Mon, 15 Nov 2021 00:48:05 +0000 Subject: [PATCH] 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 <code> 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 --- app/Entities/Tools/PageContent.php | 2 +- tests/Entity/PageContentTest.php | 23 +++++++++++++++++++++-- 2 files changed, 22 insertions(+), 3 deletions(-) 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 = '<table id="table"><tbody><tr><td>test</td></tr></tbody></table>'; @@ -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 = '<pre id="bkmrk-code"><code>var cat = null;</code></pre>'; + $secondPage->html = $content; + $secondPage->save(); + + $page->html = "{{@{$secondPage->id}#bkmrk-code}}"; + $page->save(); + + $pageResp = $this->asEditor()->get($page->getUrl()); $pageResp->assertSee($content, false); }