Class: MessagesController

Inherits:
BaseController show all
Defined in:
app/controllers/messages_controller.rb

Instance Method Summary collapse

Methods inherited from BaseController

#advertise, #cache_action?, #css_help, #footer_content, #homepage_features, #plaxo, #rss_site_index, #site_index

Methods included from LocalizedApplication

#get_matching_ui_locale, #get_sorted_langs_from_accept_header, #get_valid_lang_from_accept_header, #set_locale

Methods included from AuthenticatedSystem

#login_by_token, #update_last_seen_at

Instance Method Details

#auto_complete_for_usernameObject



12
13
14
15
# File 'app/controllers/messages_controller.rb', line 12

def auto_complete_for_username
  @users = User.find(:all, :conditions => [ 'LOWER(login) LIKE ?', '%' + (params[:message][:to]) + '%' ])
  render :inline => "<%= auto_complete_result(@users, 'login') %>"
end

#createObject



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'app/controllers/messages_controller.rb', line 39

def create
  messages = []

  if params[:message][:to].blank?
    # If 'to' field is empty, call validations to catch other errors
    @message = Message.new(params[:message])        
    @message.valid?
    render :action => :new and return
  else
    @message = Message.new(params[:message])
    @message.recipient= User.where('lower(login) = ?', params[:message][:to].strip.downcase).first
    @message.sender = @user
    unless @message.valid?
      render :action => :new and return        
    else
      @message.save!
    end
    flash[:notice] = :message_sent.l
    redirect_to user_messages_path(@user) and return
  end
end

#delete_message_threadsObject



74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'app/controllers/messages_controller.rb', line 74

def delete_message_threads
  if request.post?
    if params[:delete]
      params[:delete].each { |id|
        message_thread = MessageThread.find_by_id_and_recipient_id(id, @user.id)
        message_thread.destroy if message_thread
      }
      flash[:notice] = :messages_deleted.l
    end
    redirect_to user_messages_path(@user)
  end

end

#delete_selectedObject



61
62
63
64
65
66
67
68
69
70
71
72
# File 'app/controllers/messages_controller.rb', line 61

def delete_selected
  if request.post?
    if params[:delete]
      params[:delete].each { |id|
        @message = Message.find(:first, :conditions => ["messages.id = ? AND (sender_id = ? OR recipient_id = ?)", id, @user, @user])
        @message.mark_deleted(@user) unless @message.nil?
      }
      flash[:notice] = :messages_deleted.l
    end
    redirect_to user_messages_path(@user)
  end
end

#indexObject



17
18
19
20
21
22
23
# File 'app/controllers/messages_controller.rb', line 17

def index
  if params[:mailbox] == "sent"
    @messages = @user.sent_messages.page(params[:page]).per(20)
  else
    @messages = @user.message_threads_as_recipient.order('updated_at DESC').page(params[:page]).per(20)
  end
end

#newObject



31
32
33
34
35
36
37
# File 'app/controllers/messages_controller.rb', line 31

def new
  if params[:reply_to]
    in_reply_to = Message.find_by_id(params[:reply_to])
    message_thread = MessageThread.for(in_reply_to, current_user)
  end
  @message = Message.new_reply(@user, message_thread, params)    
end

#showObject



25
26
27
28
29
# File 'app/controllers/messages_controller.rb', line 25

def show
  @message = Message.read(params[:id], current_user)
  @message_thread = MessageThread.for(@message, (admin? ? @message.recipient : current_user ))
  @reply = Message.new_reply(@user, @message_thread, params)    
end