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
This commit is contained in:
Dan Brown 2021-11-15 00:48:05 +00:00
parent 85154fff69
commit e29d03ae76
No known key found for this signature in database
GPG Key ID: 46D9F943C24A2EF9
2 changed files with 22 additions and 3 deletions

View File

@ -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.

View File

@ -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);
}