From 229a99ba24d7676f5608bcb662bbe047d4a3bf42 Mon Sep 17 00:00:00 2001 From: Dan Brown Date: Fri, 20 Feb 2026 14:22:54 +0000 Subject: [PATCH] Descriptions: Improved empty field handling, reduces whitespace For #5724 --- app/Entities/Tools/EntityHtmlDescription.php | 5 +++++ .../form/description-html-input.blade.php | 2 +- tests/Entity/BookTest.php | 21 +++++++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) diff --git a/app/Entities/Tools/EntityHtmlDescription.php b/app/Entities/Tools/EntityHtmlDescription.php index b14deb257..795aaf4aa 100644 --- a/app/Entities/Tools/EntityHtmlDescription.php +++ b/app/Entities/Tools/EntityHtmlDescription.php @@ -50,6 +50,11 @@ class EntityHtmlDescription return $html; } + $isEmpty = empty(trim(strip_tags($html))); + if ($isEmpty) { + return '

'; + } + return HtmlContentFilter::removeActiveContentFromHtmlString($html); } diff --git a/resources/views/form/description-html-input.blade.php b/resources/views/form/description-html-input.blade.php index 983d2fb83..4b0a74df1 100644 --- a/resources/views/form/description-html-input.blade.php +++ b/resources/views/form/description-html-input.blade.php @@ -1,7 +1,7 @@ + @if($errors->has('description_html')) class="text-neg" @endif>@if(isset($model) || old('description_html')){{ old('description_html') ?? $model->descriptionInfo()->getHtml() }}@else{{ '

' }}@endif @if($errors->has('description_html'))
{{ $errors->first('description_html') }}
@endif \ No newline at end of file diff --git a/tests/Entity/BookTest.php b/tests/Entity/BookTest.php index 5f0aabc38..6082c59de 100644 --- a/tests/Entity/BookTest.php +++ b/tests/Entity/BookTest.php @@ -278,4 +278,25 @@ class BookTest extends TestCase $resp = $this->asEditor()->get($book->getUrl()); $resp->assertSee("

My great
\ndescription
\n
\nwith newlines

", false); } + + public function test_description_with_only_br_tags_results_in_empty_p_tag_used_on_show() + { + $descriptions = [ + '


', + '





', + '









', + ]; + $book = $this->entities->book(); + $this->asEditor(); + + foreach ($descriptions as $descriptionTestCase) { + $book->description_html = $descriptionTestCase; + $book->save(); + + $resp = $this->get($book->getUrl()); + $html = $this->withHtml($resp); + $descriptionHtml = $html->getInnerHtml('.book-content > div.text-muted:first-child'); + $this->assertEquals('

', $descriptionHtml); + } + } }