76 lines
2.4 KiB
Ruby
76 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
|