Browse Source

Fix mentions of users with "@" in their username not working (#37138).



git-svn-id: https://svn.redmine.org/redmine/trunk@21660 e93f8b46-1217-0410-a6f0-8f06a7374b81
tags/5.1.0
Marius Balteanu 1 year ago
parent
commit
1b300f138f
2 changed files with 19 additions and 9 deletions
  1. 10
    9
      lib/redmine/acts/mentionable.rb
  2. 9
    0
      test/unit/lib/redmine/acts/mentionable_test.rb

+ 10
- 9
lib/redmine/acts/mentionable.rb View File

@@ -90,19 +90,20 @@ module Redmine
content = content.gsub(%r{(~~~|```)(.*?)(~~~|```)}m, '')
end

users = content.scan(MENTION_PATTERN).flatten
content.scan(MENTION_PATTERN).flatten
end

MENTION_PATTERN = /
(?:^|\W) # beginning of string or non-word char
@((?>[a-z0-9][a-z0-9-]*)) # @username
(?!\/) # without a trailing slash
(?:^|\W)
@([A-Za-z0-9_\-@\.]*?)
(?=
\.+[ \t\W]| # dots followed by space or non-word character
\.+$| # dots at end of line
[^0-9a-zA-Z_.]| # non-word character except dot
$ # end of line
)
(?=[[:punct:]][^A-Za-z0-9_\/])|
,|
\.+$|
\s|
\]|
<|
$)
/ix
end
end

+ 9
- 0
test/unit/lib/redmine/acts/mentionable_test.rb View File

@@ -34,6 +34,15 @@ class Redmine::Acts::MentionableTest < ActiveSupport::TestCase
assert_equal [User.find(3)], issue.mentioned_users
end

def test_mentioned_users_with_user_mention_having_mail_as_login
user = User.generate!(login: "foo@example.net")
User.add_to_project(user, Project.find(1), Role.find(1))

issue = Issue.generate!(project_id: 1, description: '@dlopper and @foo@example.net')

assert_equal [User.find(3), user], issue.mentioned_users
end

def test_mentioned_users_with_multiple_mentions
issue = Issue.generate!(project_id: 1, description: 'Hello @dlopper, @jsmith.')


Loading…
Cancel
Save