foodsoft/app/controllers/messages_controller.rb

77 lines
2.4 KiB
Ruby

class MessagesController < ApplicationController
# Renders the "inbox" action.
def index
@messages = Message.public.paginate :page => params[:page], :per_page => 20, :order => 'created_at DESC'
end
# Creates a new message object.
def new
@message = Message.new
end
# Creates a new message.
def create
@message = @current_user.send_messages.new(params[:message])
if @message.save
#FIXME: Send Mails wit ID instead of using message.state ...
call_rake :send_emails
flash[:notice] = "Nachricht ist gespeichert und wird versendet."
redirect_to messages_path
else
render :action => 'new'
end
end
# Shows a single message.
def show
@message = Message.find(params[:id])
end
# Replys to the message specified through :id.
def reply
message = Message.find(params[:id])
@message = Message.new(:recipient => message.sender, :subject => "Re: #{message.subject}")
@message.body = "#{message.sender.nick} schrieb am #{I18n.l(message.created_at.to_date)} um #{I18n.l(message.created_at, :format => :time)}:\n"
message.body.each_line{|l| @message.body += "> #{l}"}
render :action => 'new'
end
# Shows new-message form with the recipient user specified through :id.
def user
if (recipient = User.find(params[:id]))
@message = Message.new(:recipient => recipient)
render :action => 'new'
else
flash[:error] = 'Unbekannte_r EmpfängerIn.'
redirect_to :action=> 'index'
end
end
# Shows new-message form with the recipient user specified through :id.
def group
group = Group.find(params[:id], :include => :memberships)
if (group && !group.memberships.empty?)
@message = Message.new(:group_id => group.id)
render :action => 'new'
else
flash[:error] = 'Empfängergruppe ist unbekannt oder hat keine Mitglieder.'
redirect_to :action=> 'index'
end
end
# Auto-complete for recipient user list.
def auto_complete_for_message_recipients_nicks
@users = User.find(:all,
:conditions => ['LOWER(nick) LIKE ?', '%' + params[:message][:recipients_nicks].downcase + '%'],
:order => :nick, :limit => 8)
render :partial => '/shared/auto_complete_users'
end
# Returns list of all users as auto-completion hint.
def user_list
@users = User.find(:all, :order => :nick)
render :partial => '/shared/auto_complete_users'
end
end