summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrederic Guillot <fred@kanboard.net>2016-11-30 18:26:40 -0500
committerFrederic Guillot <fred@kanboard.net>2016-11-30 18:26:40 -0500
commit700e226ba8508641fc559d1d2ddd1fd00a1eb79c (patch)
treeec8bfbf02442f66f67ca29e70586833de4921bb8
parent8588a8bda9d76eb1f98c8dca80d72ed9e016c7dc (diff)
Fix link generation when user mention is followed by a punctuation mark
-rw-r--r--ChangeLog4
-rw-r--r--app/Core/Markdown.php2
-rw-r--r--tests/units/Helper/TextHelperTest.php5
3 files changed, 10 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 50baa140..9d79a974 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
--------------
diff --git a/app/Core/Markdown.php b/app/Core/Markdown.php
index b5abe5ed..b83a3ced 100644
--- a/app/Core/Markdown.php
+++ b/app/Core/Markdown.php
@@ -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)) {
diff --git a/tests/units/Helper/TextHelperTest.php b/tests/units/Helper/TextHelperTest.php
index c9447abb..9b1aa94f 100644
--- a/tests/units/Helper/TextHelperTest.php
+++ b/tests/units/Helper/TextHelperTest.php
@@ -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));
}