Skip to content

Commit 99365b6

Browse files
author
Tony Guntharp
committed
Merge pull request #91 from gabceb/master
Added mentions
2 parents 52b233c + fa1af63 commit 99365b6

File tree

10 files changed

+795
-9
lines changed

10 files changed

+795
-9
lines changed

app/assets/javascripts/application.js

+2-1
Original file line numberDiff line numberDiff line change
@@ -19,4 +19,5 @@
1919
//= require lib/backbone
2020
//= require backbone/kandan
2121
//= require_tree .
22-
22+
//= require lib/jquery.atwho
23+
//= require lib/jquery.caret

app/assets/javascripts/backbone/kandan.js.coffee.erb

+3-1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ window.Kandan =
2828
registerPlugins: ->
2929
plugins = [
3030
"UserList"
31+
,"Mentions"
3132
,"Notifications"
3233
,"MusicPlayer"
3334
,"YouTubeEmbed"
@@ -119,7 +120,8 @@ window.Kandan =
119120
Kandan.initTabs()
120121
Kandan.Widgets.initAll()
121122
Kandan.Helpers.Channels.scrollToLatestMessage()
122-
123+
Kandan.Plugins.Mentions.initUsersMentions(Kandan.Helpers.ActiveUsers.all())
124+
return
123125

124126
setCurrentUser: ()->
125127
template = JST['current_user']
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# The mentions plugin takes care of highlighting the @useranme and passing the users to the atwho plugin.
2+
# The show_activities addMessage method is the responsible of changing the look of a message body when a user is mentioned
3+
class Kandan.Plugins.Mentions
4+
@options:
5+
regex: /@\S*/g
6+
7+
template: _.template '''<span class="mention"><%= mention %></span>'''
8+
9+
@init: ()->
10+
Kandan.Data.ActiveUsers.registerCallback "change", (data)=>
11+
@initUsersMentions(data.extra.active_users)
12+
13+
Kandan.Modifiers.register @options.regex, (message, state) =>
14+
for mention in message.content.match(@options.regex)
15+
replacement = @options.template({mention: mention})
16+
message.content = message.content.replace(mention, replacement)
17+
18+
return Kandan.Helpers.Activities.buildFromMessageTemplate(message)
19+
20+
@initUsersMentions: (activeUsers)->
21+
users = _.map activeUsers, (user)->
22+
user.username
23+
24+
$(".chat-input").atwho("@", {data: users});
25+
return

app/assets/javascripts/backbone/views/show_activity.js.coffee

+9-2
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,16 @@ class Kandan.Views.ShowActivity extends Backbone.View
1616
@compiledTemplate = Kandan.Helpers.Activities.buildFromMessageTemplate activity
1717

1818
$(@el).data("activity-id", activity.id)
19-
if activity.action == "message" && activity.user.id == Kandan.Helpers.Users.currentUser().id
20-
$(@el).addClass("current_user")
19+
if activity.action == "message"
2120

21+
user_mention_regex = new RegExp("@#{Kandan.Helpers.Users.currentUser().username}\\b")
22+
all_mention_regex = new RegExp("@all")
23+
24+
if activity.user.id == Kandan.Helpers.Users.currentUser().id
25+
$(@el).addClass("current_user")
26+
27+
if user_mention_regex.test(@compiledTemplate) || all_mention_regex.test(@compiledTemplate)
28+
$(@el).addClass("mentioned_user")
2229

2330
if activity.id == undefined
2431
$(@el).attr("id", "activity-c#{activity.cid}")

0 commit comments

Comments
 (0)