diff --git a/app/Entities/Tools/PageContent.php b/app/Entities/Tools/PageContent.php index dbb62021c..b1c750adb 100644 --- a/app/Entities/Tools/PageContent.php +++ b/app/Entities/Tools/PageContent.php @@ -239,6 +239,9 @@ class PageContent $html .= $doc->saveHTML($childNode); } + // Perform required string-level tweaks + $html = str_replace(' ', ' ', $html); + return $html; } diff --git a/resources/js/wysiwyg/config.js b/resources/js/wysiwyg/config.js index 259645148..692c5bce6 100644 --- a/resources/js/wysiwyg/config.js +++ b/resources/js/wysiwyg/config.js @@ -243,6 +243,7 @@ export function build(options) { remove_script_host: false, document_base_url: window.baseUrl('/'), end_container_on_empty_block: true, + remove_trailing_brs: false, statusbar: false, menubar: false, paste_data_images: false, diff --git a/resources/sass/_pages.scss b/resources/sass/_pages.scss index af5bea0f1..8103ca20d 100755 --- a/resources/sass/_pages.scss +++ b/resources/sass/_pages.scss @@ -164,6 +164,10 @@ body.tox-fullscreen, body.markdown-fullscreen { clear: both; } + p:empty { + min-height: 1.6em; + } + &.page-revision { pre code { white-space: pre-wrap; diff --git a/tests/Entity/PageContentTest.php b/tests/Entity/PageContentTest.php index 20cde049a..b9680d23f 100644 --- a/tests/Entity/PageContentTest.php +++ b/tests/Entity/PageContentTest.php @@ -692,35 +692,43 @@ class PageContentTest extends TestCase public function test_base64_images_within_markdown_blanked_if_not_supported_extension_for_extract() { - $this->asEditor(); $page = Page::query()->first(); - $this->put($page->getUrl(), [ + $this->asEditor()->put($page->getUrl(), [ 'name' => $page->name, 'summary' => '', 'markdown' => 'test ![test](data:image/jiff;base64,' . $this->base64Jpeg . ')', ]); - $page->refresh(); - $this->assertStringContainsString('html); + $this->assertStringContainsString('refresh()->html); } public function test_nested_headers_gets_assigned_an_id() { - $this->asEditor(); $page = Page::query()->first(); $content = '
Simple Test
'; - $this->put($page->getUrl(), [ + $this->asEditor()->put($page->getUrl(), [ 'name' => $page->name, 'html' => $content, - 'summary' => '', ]); - $updatedPage = Page::query()->where('id', '=', $page->id)->first(); - // The top level node will get assign the bkmrk-simple-test id because the system will // take the node value of h5 // So the h5 should get the bkmrk-simple-test-1 id - $this->assertStringContainsString('
Simple Test
', $updatedPage->html); + $this->assertStringContainsString('
Simple Test
', $page->refresh()->html); + } + + public function test_non_breaking_spaces_are_preserved() + { + /** @var Page $page */ + $page = Page::query()->first(); + + $content = '

 

'; + $this->asEditor()->put($page->getUrl(), [ + 'name' => $page->name, + 'html' => $content, + ]); + + $this->assertStringContainsString('

 

', $page->refresh()->html); } }