Fix link generation when user mention is followed by a punctuation mark

This commit is contained in:
Frederic Guillot 2016-11-30 18:26:40 -05:00
parent 8588a8bda9
commit 700e226ba8
No known key found for this signature in database
GPG Key ID: 92D77191BA7FBC99
3 changed files with 10 additions and 1 deletions

View File

@ -10,6 +10,10 @@ Breaking changes:
* Rename command line tool `./kanboard` to `./cli`
Bug fixes:
* Fix link generation when user mention is followed by a punctuation mark
Version 1.0.34
--------------

View File

@ -86,7 +86,7 @@ class Markdown extends Parsedown
*/
protected function inlineUserLink(array $Excerpt)
{
if (! $this->isPublicLink && preg_match('/^@([^\s]+)/', $Excerpt['text'], $matches)) {
if (! $this->isPublicLink && preg_match('/^@([^\s,!.:?]+)/', $Excerpt['text'], $matches)) {
$user_id = $this->container['userModel']->getIdByUsername($matches[1]);
if (! empty($user_id)) {

View File

@ -48,6 +48,11 @@ class TextHelperTest extends Base
{
$h = new TextHelper($this->container);
$this->assertEquals('<p>Text <a href="?controller=UserViewController&amp;action=profile&amp;user_id=1" class="user-mention-link">@admin</a> @notfound</p>', $h->markdown('Text @admin @notfound'));
$this->assertEquals('<p>Text <a href="?controller=UserViewController&amp;action=profile&amp;user_id=1" class="user-mention-link">@admin</a>,</p>', $h->markdown('Text @admin,'));
$this->assertEquals('<p>Text <a href="?controller=UserViewController&amp;action=profile&amp;user_id=1" class="user-mention-link">@admin</a>!</p>', $h->markdown('Text @admin!'));
$this->assertEquals('<p>Text <a href="?controller=UserViewController&amp;action=profile&amp;user_id=1" class="user-mention-link">@admin</a>? </p>', $h->markdown('Text @admin? '));
$this->assertEquals('<p>Text <a href="?controller=UserViewController&amp;action=profile&amp;user_id=1" class="user-mention-link">@admin</a>.</p>', $h->markdown('Text @admin.'));
$this->assertEquals('<p>Text <a href="?controller=UserViewController&amp;action=profile&amp;user_id=1" class="user-mention-link">@admin</a>: test</p>', $h->markdown('Text @admin: test'));
$this->assertEquals('<p>Text @admin @notfound</p>', $h->markdown('Text @admin @notfound', true));
}