##// END OF EJS Templates
r18596@gaspard (orig r1860): nbc | 2008-09-14 21:03:46 +0200...
r18596@gaspard (orig r1860): nbc | 2008-09-14 21:03:46 +0200 bugfix r18597@gaspard (orig r1861): winterheart | 2008-09-15 17:14:34 +0200 #1902, translation for zh-tw r18598@gaspard (orig r1862): winterheart | 2008-09-15 17:16:53 +0200 #1907, translation for zh r18599@gaspard (orig r1863): winterheart | 2008-09-15 17:19:51 +0200 fixed #1905, patch for Hungarian language r18600@gaspard (orig r1864): winterheart | 2008-09-15 17:22:53 +0200 Minor typo, fixed #1897, thank Denis Tomashenko for reporting. r18601@gaspard (orig r1865): winterheart | 2008-09-15 18:07:30 +0200 Catalan translation (#1822), thanks to Joan Duran for contribuition. Some strings has wrong quoting, I fixed that. r18602@gaspard (orig r1866): nbc | 2008-09-15 21:37:43 +0200 * reposman can create git repository with "--scm git" option * light refactoring r18603@gaspard (orig r1867): jplang | 2008-09-16 23:54:53 +0200 Use RDoc.usage r18604@gaspard (orig r1868): jplang | 2008-09-16 23:56:02 +0200 mailhandler: fixes exit status and adds an explicit message if response code is 403. r18605@gaspard (orig r1869): winterheart | 2008-09-17 17:31:35 +0200 Patch #1909, updates for ru.yml r18606@gaspard (orig r1870): jplang | 2008-09-17 18:39:23 +0200 Render the commit changes list as a tree (#1896). r18607@gaspard (orig r1871): jplang | 2008-09-17 18:48:04 +0200 Fixed: http links containing parentheses fail to reder correctly (#1591). Patch by Paul Rivier. r18608@gaspard (orig r1872): jplang | 2008-09-17 19:18:05 +0200 Removes unused image references in stylesheets (#1914). r18609@gaspard (orig r1873): jplang | 2008-09-17 19:23:08 +0200 Fixed custom query sidebar links broken by r1797 (#1899). git-svn-id: http://redmine.rubyforge.org/svn/branches/nbc@1874 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r1771:bfd0fb067ac3
r1872:54433282d3e7
Show More
messages_controller.rb
123 lines | 4.1 KiB | text/x-ruby | RubyLexer
# redMine - project management software
# Copyright (C) 2006-2007 Jean-Philippe Lang
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
class MessagesController < ApplicationController
menu_item :boards
before_filter :find_board, :only => [:new, :preview]
before_filter :find_message, :except => [:new, :preview]
before_filter :authorize, :except => :preview
verify :method => :post, :only => [ :reply, :destroy ], :redirect_to => { :action => :show }
verify :xhr => true, :only => :quote
helper :attachments
include AttachmentsHelper
# Show a topic and its replies
def show
@replies = @topic.children
@replies.reverse! if User.current.wants_comments_in_reverse_order?
@reply = Message.new(:subject => "RE: #{@message.subject}")
render :action => "show", :layout => false if request.xhr?
end
# Create a new topic
def new
@message = Message.new(params[:message])
@message.author = User.current
@message.board = @board
if params[:message] && User.current.allowed_to?(:edit_messages, @project)
@message.locked = params[:message]['locked']
@message.sticky = params[:message]['sticky']
end
if request.post? && @message.save
attach_files(@message, params[:attachments])
redirect_to :action => 'show', :id => @message
end
end
# Reply to a topic
def reply
@reply = Message.new(params[:reply])
@reply.author = User.current
@reply.board = @board
@topic.children << @reply
if !@reply.new_record?
attach_files(@reply, params[:attachments])
end
redirect_to :action => 'show', :id => @topic
end
# Edit a message
def edit
if params[:message] && User.current.allowed_to?(:edit_messages, @project)
@message.locked = params[:message]['locked']
@message.sticky = params[:message]['sticky']
end
if request.post? && @message.update_attributes(params[:message])
attach_files(@message, params[:attachments])
flash[:notice] = l(:notice_successful_update)
redirect_to :action => 'show', :id => @topic
end
end
# Delete a messages
def destroy
@message.destroy
redirect_to @message.parent.nil? ?
{ :controller => 'boards', :action => 'show', :project_id => @project, :id => @board } :
{ :action => 'show', :id => @message.parent }
end
def quote
user = @message.author
text = @message.content
content = "#{ll(Setting.default_language, :text_user_wrote, user)}\\n> "
content << text.to_s.strip.gsub(%r{<pre>((.|\s)*?)</pre>}m, '[...]').gsub('"', '\"').gsub(/(\r?\n|\r\n?)/, "\\n> ") + "\\n\\n"
render(:update) { |page|
page.<< "$('message_content').value = \"#{content}\";"
page.show 'reply'
page << "Form.Element.focus('message_content');"
page << "Element.scrollTo('reply');"
page << "$('message_content').scrollTop = $('message_content').scrollHeight - $('message_content').clientHeight;"
}
end
def preview
message = @board.messages.find_by_id(params[:id])
@attachements = message.attachments if message
@text = (params[:message] || params[:reply])[:content]
render :partial => 'common/preview'
end
private
def find_message
find_board
@message = @board.messages.find(params[:id], :include => :parent)
@topic = @message.root
rescue ActiveRecord::RecordNotFound
render_404
end
def find_board
@board = Board.find(params[:board_id], :include => :project)
@project = @board.project
rescue ActiveRecord::RecordNotFound
render_404
end
end