From f997d3e0bbd6dd9bbd90c75a1df8903323609512 Mon Sep 17 00:00:00 2001 From: Bajszi <bajuszdn@gmail.com> Date: Mon, 11 Sep 2023 21:27:15 +0200 Subject: [PATCH 1/4] Trimmed name last resort --- app/Users/Models/User.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Users/Models/User.php b/app/Users/Models/User.php index 92701ac13..cbfdbef2d 100644 --- a/app/Users/Models/User.php +++ b/app/Users/Models/User.php @@ -345,7 +345,7 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon return $splitName[0]; } - return ''; + return mb_substr($this->name, 0, $chars) . '..'; } /** From f4deb13301feb6087cb56f22ef52230905821952 Mon Sep 17 00:00:00 2001 From: Bajszi <bajuszdn@gmail.com> Date: Tue, 12 Sep 2023 17:03:57 +0200 Subject: [PATCH 2/4] Truncate with three dots --- app/Users/Models/User.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Users/Models/User.php b/app/Users/Models/User.php index cbfdbef2d..3efbeec70 100644 --- a/app/Users/Models/User.php +++ b/app/Users/Models/User.php @@ -345,7 +345,7 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon return $splitName[0]; } - return mb_substr($this->name, 0, $chars) . '..'; + return mb_substr($this->name, 0, $chars-3) . '…'; } /** From 83028f3fbea8ead701b604d161100923545fcb53 Mon Sep 17 00:00:00 2001 From: Bajszi <bajuszdn@gmail.com> Date: Tue, 12 Sep 2023 21:00:00 +0200 Subject: [PATCH 3/4] Test comment creator name truncation --- tests/Entity/CommentTest.php | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/tests/Entity/CommentTest.php b/tests/Entity/CommentTest.php index 0a71bb6ef..d2ed35136 100644 --- a/tests/Entity/CommentTest.php +++ b/tests/Entity/CommentTest.php @@ -152,4 +152,20 @@ class CommentTest extends TestCase $respHtml = $this->withHtml($this->get($page->getUrl('/edit'))); $respHtml->assertElementContains('.comment-box .content', 'My great comment to see in the editor'); } + + public function test_comment_creator_name_truncated() + { + $longNamedUser = $this->users->admin(); + $longNamedUser->name = 'Wolfeschlegelsteinhausenbergerdorff'; + $longNamedUser->save(); + $this->actingAs($longNamedUser); + + $page = $this->entities->page(); + + $comment = Comment::factory()->make(); + $this->postJson("/comment/$page->id", $comment->getAttributes()); + + $pageResp = $this->get($page->getUrl()); + $pageResp->assertSee('Wolfeschlegel…'); + } } From a452092e40110c5251c9b621593f3fa174680059 Mon Sep 17 00:00:00 2001 From: Dan Brown <ssddanbrown@googlemail.com> Date: Wed, 13 Sep 2023 10:09:33 +0100 Subject: [PATCH 4/4] Reviewed #4533, formatting and tweaks - Updating formatting. - Tweaked truncation to roughly match elipsis char to width used. - Updated testing to use existing helpers, and ran check as admin user to avoid name conflicts. --- app/Users/Models/User.php | 2 +- tests/Entity/CommentTest.php | 14 +++++--------- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/app/Users/Models/User.php b/app/Users/Models/User.php index 3efbeec70..2479521a2 100644 --- a/app/Users/Models/User.php +++ b/app/Users/Models/User.php @@ -345,7 +345,7 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon return $splitName[0]; } - return mb_substr($this->name, 0, $chars-3) . '…'; + return mb_substr($this->name, 0, max($chars - 2, 0)) . '…'; } /** diff --git a/tests/Entity/CommentTest.php b/tests/Entity/CommentTest.php index d2ed35136..23fc68197 100644 --- a/tests/Entity/CommentTest.php +++ b/tests/Entity/CommentTest.php @@ -154,18 +154,14 @@ class CommentTest extends TestCase } public function test_comment_creator_name_truncated() - { - $longNamedUser = $this->users->admin(); - $longNamedUser->name = 'Wolfeschlegelsteinhausenbergerdorff'; - $longNamedUser->save(); - $this->actingAs($longNamedUser); - + { + [$longNamedUser] = $this->users->newUserWithRole(['name' => 'Wolfeschlegelsteinhausenbergerdorff'], ['comment-create-all', 'page-view-all']); $page = $this->entities->page(); $comment = Comment::factory()->make(); - $this->postJson("/comment/$page->id", $comment->getAttributes()); + $this->actingAs($longNamedUser)->postJson("/comment/$page->id", $comment->getAttributes()); - $pageResp = $this->get($page->getUrl()); - $pageResp->assertSee('Wolfeschlegel…'); + $pageResp = $this->asAdmin()->get($page->getUrl()); + $pageResp->assertSee('Wolfeschlegels…'); } }