summaryrefslogtreecommitdiffstats
path: root/emacs.d/nxhtml/tests/in/jcl-080802-messages_controller.rb
blob: 6fb05555c5fc594112aeab39a97a246417753cbc (plain)
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
53
54
55
56
57
class MessagesController < BaseController

  before_filter :enable_chat
  skip_before_filter :verify_authenticity_token

  # GET /messages
  # GET /messages.xml
  def index
    @messages = ChatMessage.to_user(current_user).last_week.all
    
    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @messages }
    end
  end

  # GET /messages/1
  # GET /messages/1.xml
  def show
    @message = ChatMessage.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @message }
    end
  end

  # POST /messages
  # POST /messages.xml
  def create
    @message = ChatMessage.new(:receiver_id => params[:receiver_id],
                               :message => params[:messageText],
                               :sender => current_user)

    if @message.save
      send_message
    end

    render :nothing => true

  end

  protected

  def send_message
    formatted_message = render_to_string(:partial => "message_for_chat", :object => @message)
    shooter_action_for_receiver = render_to_string :update do |page|
      page.call "showMessage", @message.sender.to_param, formatted_message
    end
    shooter_action_for_sender = render_to_string :update do |page|
      page.call "showMessage", @message.receiver.to_param, formatted_message
      page.call "messageTextBox.reset"
    end
    Meteor.shoot 'futura-chat', shooter_action_for_sender, [@message.sender.login]
    Meteor.shoot 'futura-chat', shooter_action_for_receiver, [@message.receiver.login]
  end
end