0
0
Fork 0
mirror of https://github.com/BookStackApp/BookStack.git synced 2025-05-05 08:40:11 +00:00

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 
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
app/Entities/Tools
tests/Entity

View file

@ -390,7 +390,7 @@ class PageContent
*/ */
protected function fetchSectionOfPage(Page $page, string $sectionId): string protected function fetchSectionOfPage(Page $page, string $sectionId): string
{ {
$topLevelTags = ['table', 'ul', 'ol']; $topLevelTags = ['table', 'ul', 'ol', 'pre'];
$doc = $this->loadDocumentFromHtml($page->html); $doc = $this->loadDocumentFromHtml($page->html);
// Search included content for the id given and blank out if not exists. // 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() public function test_page_includes_do_not_break_tables()
{ {
/** @var Page $page */
$page = Page::query()->first(); $page = Page::query()->first();
/** @var Page $secondPage */
$secondPage = Page::query()->where('id', '!=', $page->id)->first(); $secondPage = Page::query()->where('id', '!=', $page->id)->first();
$content = '<table id="table"><tbody><tr><td>test</td></tr></tbody></table>'; $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->html = "{{@{$secondPage->id}#table}}";
$page->save(); $page->save();
$this->asEditor(); $pageResp = $this->asEditor()->get($page->getUrl());
$pageResp = $this->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); $pageResp->assertSee($content, false);
} }