initial commit
[emacs-init.git] / nxhtml / tests / in / jcl-080802-messages_controller.rb
1 class MessagesController < BaseController
2
3   before_filter :enable_chat
4   skip_before_filter :verify_authenticity_token
5
6   # GET /messages
7   # GET /messages.xml
8   def index
9     @messages = ChatMessage.to_user(current_user).last_week.all
10     
11     respond_to do |format|
12       format.html # index.html.erb
13       format.xml  { render :xml => @messages }
14     end
15   end
16
17   # GET /messages/1
18   # GET /messages/1.xml
19   def show
20     @message = ChatMessage.find(params[:id])
21
22     respond_to do |format|
23       format.html # show.html.erb
24       format.xml  { render :xml => @message }
25     end
26   end
27
28   # POST /messages
29   # POST /messages.xml
30   def create
31     @message = ChatMessage.new(:receiver_id => params[:receiver_id],
32                                :message => params[:messageText],
33                                :sender => current_user)
34
35     if @message.save
36       send_message
37     end
38
39     render :nothing => true
40
41   end
42
43   protected
44
45   def send_message
46     formatted_message = render_to_string(:partial => "message_for_chat", :object => @message)
47     shooter_action_for_receiver = render_to_string :update do |page|
48       page.call "showMessage", @message.sender.to_param, formatted_message
49     end
50     shooter_action_for_sender = render_to_string :update do |page|
51       page.call "showMessage", @message.receiver.to_param, formatted_message
52       page.call "messageTextBox.reset"
53     end
54     Meteor.shoot 'futura-chat', shooter_action_for_sender, [@message.sender.login]
55     Meteor.shoot 'futura-chat', shooter_action_for_receiver, [@message.receiver.login]
56   end
57 end