##// END OF EJS Templates
Upgraded to Rails 2.3.4 (#3597)...
Upgraded to Rails 2.3.4 (#3597) * Ran the Rails upgrade * Upgraded to Rails Engines 2.3.2 * Added a plugin to let Engines override application views. * Converted tests to use the new classes: ** ActionController::TestCase for functional ** ActiveSupport::TestCase for units * Converted ActiveRecord::Error message to a string. * ActiveRecord grouping returns an ordered hash which doesn't have #sort! * Updated the I18n storage_units format. * Added some default initializers from a fresh rails app * Changed the order of check_box_tags and hidden_field_tags. The hidden tag needs to appear first in Rails 2.3, otherwise it will override any value in the check_box_tag. * Removed the custom handler for when the cookie store is tampered with. Rails 2.3 removed the TamperedWithCookie exception and instead Rails will not load the data from it when it's been tampered with (e.g. no user login). * Fixed mail layouts, 2.3 has problems with implicit multipart emails that use layouts. Also removed some custom Redmine mailer code. * Fixed a bug that occurred in tests where the "required" span tag would be added to the :field_status translation. This resulted in an email string of: <li>Status<span class="required"> *</span><span class="required"> *</span> Instead of: <li>Status: New</li> git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2887 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r2674:4ba83085072d
r2773:7b0cb6aba871
Show More
messages_controller.rb
128 lines | 4.6 KiB | text/x-ruby | RubyLexer
/ app / controllers / messages_controller.rb
Jean-Philippe Lang
Per project forums added....
r526 # 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
Jean-Philippe Lang
Highlight the current item of the main menu....
r1062 menu_item :boards
Jean-Philippe Lang
Added preview for forum messages....
r1191 before_filter :find_board, :only => [:new, :preview]
before_filter :find_message, :except => [:new, :preview]
Jean-Philippe Lang
Adds permissions to let users edit and/or delete their messages (#854, patch by Markus Knittig with slight changes)....
r2017 before_filter :authorize, :except => [:preview, :edit, :destroy]
Jean-Philippe Lang
Per project forums added....
r526
verify :method => :post, :only => [ :reply, :destroy ], :redirect_to => { :action => :show }
Jean-Philippe Lang
Adds posts quoting functionality (#1825)....
r1771 verify :xhr => true, :only => :quote
Jean-Philippe Lang
Per project forums added....
r526
Jean-Philippe Lang
Adds watch/unwatch functionality at forum topic level (#1912)....
r1876 helper :watchers
Jean-Philippe Lang
Attachments can now be added to wiki pages (original patch by Pavol Murin). Only authorized users can add/delete attachments....
r538 helper :attachments
include AttachmentsHelper
Jean-Philippe Lang
Forums enhancements:...
r913 # Show a topic and its replies
Jean-Philippe Lang
Per project forums added....
r526 def show
Jean-Philippe Lang
Adds permissions to let users edit and/or delete their messages (#854, patch by Markus Knittig with slight changes)....
r2017 @replies = @topic.children.find(:all, :include => [:author, :attachments, {:board => :project}])
Jean-Philippe Lang
Add a user preference to choose how comments/replies are displayed: in chronological or reverse chronological order (#589, #776)....
r1183 @replies.reverse! if User.current.wants_comments_in_reverse_order?
Jean-Philippe Lang
Per project forums added....
r526 @reply = Message.new(:subject => "RE: #{@message.subject}")
render :action => "show", :layout => false if request.xhr?
end
Jean-Philippe Lang
Forums enhancements:...
r913 # Create a new topic
Jean-Philippe Lang
Per project forums added....
r526 def new
@message = Message.new(params[:message])
Jean-Philippe Lang
Anonymous users can now be allowed to create, edit, comment issues, comment news and post messages in the forums....
r906 @message.author = User.current
Jean-Philippe Lang
Forums enhancements:...
r913 @message.board = @board
if params[:message] && User.current.allowed_to?(:edit_messages, @project)
@message.locked = params[:message]['locked']
@message.sticky = params[:message]['sticky']
end
Jean-Philippe Lang
Per project forums added....
r526 if request.post? && @message.save
Eric Davis
Added more plugin hooks:...
r2674 call_hook(:controller_messages_new_after_save, { :params => params, :message => @message})
Jean-Philippe Lang
Added ApplicationController#attach_files as a common method to attach files in all actions....
r977 attach_files(@message, params[:attachments])
Jean-Philippe Lang
Per project forums added....
r526 redirect_to :action => 'show', :id => @message
end
end
Jean-Philippe Lang
Forums enhancements:...
r913 # Reply to a topic
Jean-Philippe Lang
Per project forums added....
r526 def reply
@reply = Message.new(params[:reply])
Jean-Philippe Lang
Anonymous users can now be allowed to create, edit, comment issues, comment news and post messages in the forums....
r906 @reply.author = User.current
Jean-Philippe Lang
Per project forums added....
r526 @reply.board = @board
Jean-Philippe Lang
Forums enhancements:...
r913 @topic.children << @reply
Jean-Philippe Lang
Forums: attachments can now be added to replies....
r910 if !@reply.new_record?
Eric Davis
Added more plugin hooks:...
r2674 call_hook(:controller_messages_reply_after_save, { :params => params, :message => @reply})
Jean-Philippe Lang
Added ApplicationController#attach_files as a common method to attach files in all actions....
r977 attach_files(@reply, params[:attachments])
Jean-Philippe Lang
Forums: attachments can now be added to replies....
r910 end
Jean-Philippe Lang
Forums enhancements:...
r913 redirect_to :action => 'show', :id => @topic
end
# Edit a message
def edit
Jean-Philippe Lang
Adds permissions to let users edit and/or delete their messages (#854, patch by Markus Knittig with slight changes)....
r2017 render_403 and return false unless @message.editable_by?(User.current)
if params[:message]
Jean-Philippe Lang
Forums enhancements:...
r913 @message.locked = params[:message]['locked']
@message.sticky = params[:message]['sticky']
end
if request.post? && @message.update_attributes(params[:message])
Jean-Philippe Lang
Added ApplicationController#attach_files as a common method to attach files in all actions....
r977 attach_files(@message, params[:attachments])
Jean-Philippe Lang
Forums enhancements:...
r913 flash[:notice] = l(:notice_successful_update)
Jean-Philippe Lang
Adds the ability to move threads between project forums (#2452). 'Edit message' permission is required....
r2560 @message.reload
redirect_to :action => 'show', :board_id => @message.board, :id => @message.root
Jean-Philippe Lang
Forums enhancements:...
r913 end
end
# Delete a messages
def destroy
Jean-Philippe Lang
Adds permissions to let users edit and/or delete their messages (#854, patch by Markus Knittig with slight changes)....
r2017 render_403 and return false unless @message.destroyable_by?(User.current)
Jean-Philippe Lang
Forums enhancements:...
r913 @message.destroy
redirect_to @message.parent.nil? ?
{ :controller => 'boards', :action => 'show', :project_id => @project, :id => @board } :
{ :action => 'show', :id => @message.parent }
Jean-Philippe Lang
Per project forums added....
r526 end
Jean-Philippe Lang
Adds posts quoting functionality (#1825)....
r1771 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
Jean-Philippe Lang
Added preview for forum messages....
r1191 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
Jean-Philippe Lang
Per project forums added....
r526 private
Jean-Philippe Lang
Forums enhancements:...
r913 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
Jean-Philippe Lang
Per project forums added....
r526 @board = Board.find(params[:board_id], :include => :project)
@project = @board.project
rescue ActiveRecord::RecordNotFound
render_404
end
end