-
Notifications
You must be signed in to change notification settings - Fork 5
/
chat_users_controller.rb
52 lines (42 loc) · 1.44 KB
/
chat_users_controller.rb
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
47
48
49
50
51
52
class ChatUsersController < ApplicationController
def idle
current_user.away!
render :juggernaut do |page|
page.go_away User.current
end
render :nothing => true
end
def offline
current_user.offline!
render :juggernaut do |page|
page.go_offline User.current
end
render :nothing => true
end
# Called when a user comes back online, or logs in
def online
current_user.online!
render :juggernaut do |page|
page.go_online User.current
end
render :nothing => true
end
private
def update_user_list
@user = ChatUser.find(params[:user_id])
@channels = params[:channels].collect{|channel| channel.to_i } if params[:channels]
yield
Thread.new do
users = ChatUser.find(Juggernaut.show_users_for_channels(@channels).collect{ |user| user["id"] })
render :juggernaut => {:type => :send_to_channels, :channels => @channels } do |page|
page.replace_html 'user_list', users.collect{ |user| "<li>"+ link_to_remote(user.login, :url => "/messages/new_private_message/#{user.id}")+"</li>" }.join
end
end
end
def update_chat_room(action)
render :juggernaut => {:type => :send_to_channels, :channels => @channels } do |page|
page.insert_html :bottom, 'chat_room', "<p style='color:green;font-size:20px;'>#{@user.login} has #{action} the room</p>"
page.call :scrollChatPanel, 'chat_room'
end
end
end