From 7ac3e9fa926975ec92de7b35d10d0bbee43d821b Mon Sep 17 00:00:00 2001 From: Toby Zerner Date: Thu, 23 Jul 2015 20:50:41 +0930 Subject: [PATCH] =?UTF-8?q?Make=20mention=20formatter=20work=20in=20live?= =?UTF-8?q?=20preview=20=F0=9F=8E=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/Listeners/AddPostMentionsFormatter.php | 13 ++++++++++--- .../src/Listeners/AddUserMentionsFormatter.php | 12 +++++++++--- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/extensions/mentions/src/Listeners/AddPostMentionsFormatter.php b/extensions/mentions/src/Listeners/AddPostMentionsFormatter.php index 6d842b8e9..df6143601 100755 --- a/extensions/mentions/src/Listeners/AddPostMentionsFormatter.php +++ b/extensions/mentions/src/Listeners/AddPostMentionsFormatter.php @@ -19,11 +19,16 @@ class AddPostMentionsFormatter $tagName = 'POSTMENTION'; $tag = $configurator->tags->add($tagName); + $tag->attributes->add('username'); $tag->attributes->add('number'); $tag->attributes->add('id')->filterChain->append('#uint'); + $tag->attributes['id']->required = false; + $tag->template = ''; - $tag->filterChain->prepend([static::class, 'addId'])->addParameterByName('post'); + $tag->filterChain->prepend([static::class, 'addId']) + ->addParameterByName('post') + ->setJS('function() { return true; }'); $configurator->Preg->match('/\B@(?[a-z0-9_-]+)#(?\d+)/i', $tagName); } @@ -40,8 +45,10 @@ class AddPostMentionsFormatter ->where('number', $tag->getAttribute('number')) ->pluck('id'); - $tag->setAttribute('id', $id); + if ($id) { + $tag->setAttribute('id', $id); - return true; + return true; + } } } diff --git a/extensions/mentions/src/Listeners/AddUserMentionsFormatter.php b/extensions/mentions/src/Listeners/AddUserMentionsFormatter.php index f752f76cc..a72211071 100755 --- a/extensions/mentions/src/Listeners/AddUserMentionsFormatter.php +++ b/extensions/mentions/src/Listeners/AddUserMentionsFormatter.php @@ -30,8 +30,12 @@ class AddUserMentionsFormatter $tag = $configurator->tags->add($tagName); $tag->attributes->add('username'); $tag->attributes->add('id')->filterChain->append('#uint'); + $tag->attributes['id']->required = false; + $tag->template = '@'; - $tag->filterChain->prepend([static::class, 'addId'])->addParameterByName('userRepository'); + $tag->filterChain->prepend([static::class, 'addId']) + ->addParameterByName('userRepository') + ->setJS('function() { return true; }'); $configurator->Preg->match('/\B@(?[a-z0-9_-]+)(?!#)/i', $tagName); } @@ -49,8 +53,10 @@ class AddUserMentionsFormatter public static function addId($tag, UserRepository $users) { - $tag->setAttribute('id', $users->getIdForUsername($tag->getAttribute('username'))); + if ($id = $users->getIdForUsername($tag->getAttribute('username'))) { + $tag->setAttribute('id', $id); - return true; + return true; + } } }