/
chatbox.js.coffee
46 lines (35 loc) · 1.23 KB
/
chatbox.js.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
class Kandan.Views.Chatbox extends Backbone.View
template: JST['chatbox']
tagName: 'div'
className: 'chatbox'
events:
"keypress .chat-input": 'postMessageOnEnter'
"click .post" : 'postMessage'
postMessageOnEnter: (event)->
if event.keyCode == 13
@postMessage(event)
event.preventDefault()
postMessage: (event)->
$chatbox = $(event.target).parent().find(".chat-input")
chatInput = $chatbox.val()
return false if chatInput.trim().length==0
activity = new Kandan.Models.Activity({
'content': chatInput,
'action': 'message',
'channel_id': @channel.get('id')
})
$chatbox.val("")
Kandan.Helpers.Channels.addActivity(
_.extend(activity.toJSON(), {cid: activity.cid, user: Kandan.Data.Users.currentUser()}, created_at: new Date()),
Kandan.Helpers.Activities.ACTIVE_STATE,
true
)
activity.save({},{success: (model, response)->
$("#activity-c#{model.cid}").attr("id", "activity-#{model.get('id')}")
$scrollbox = $(event.target).parent().find(".paginated-activities")
$scrollbox.prop("scrollTop", $scrollbox.prop('scrollHeight'))
})
render: ()->
@channel = @options.channel
$(@el).html(@template())
@