##// END OF EJS Templates
scm: git: performance improvements in fetching revisions (#8857, #9472)...
scm: git: performance improvements in fetching revisions (#8857, #9472) Parse a revision for a given branch, just if we haven't parsed it for any branches before. Moved the db check to for existing revisions into a grouped search. Search for many revisions at once: this reduces db load. Revisions are grouped into sets of 100. This is to improve memory consumption. There will be just one query instead of each 100. The above two methods significantly increase parsing speed. Test case was a git repo with 6000+ commits on a master branch, and several other branches originating for master. Speed improved from 1.4h to 18min. Contributed by Gergely Fábián. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@9144 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r9013:286bda14f14d
r9024:999a4ba30d7b
Show More
messages_controller.rb
143 lines | 5.3 KiB | text/x-ruby | RubyLexer
/ app / controllers / messages_controller.rb
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/messages_controller.rb....
r6775 # Redmine - project management software
# Copyright (C) 2006-2011 Jean-Philippe Lang
Jean-Philippe Lang
Per project forums added....
r526 #
# 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.
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/messages_controller.rb....
r6775 #
Jean-Philippe Lang
Per project forums added....
r526 # 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.
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/messages_controller.rb....
r6775 #
Jean-Philippe Lang
Per project forums added....
r526 # 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
Contextual quick search (#3263)....
r2829 default_search_scope :messages
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
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
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/messages_controller.rb....
r6775 include AttachmentsHelper
Jean-Philippe Lang
Attachments can now be added to wiki pages (original patch by Pavol Murin). Only authorized users can add/delete attachments....
r538
Jean-Philippe Lang
Adds pagination to forum messages (#4664)....
r3259 REPLIES_PER_PAGE = 25 unless const_defined?(:REPLIES_PER_PAGE)
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/messages_controller.rb....
r6775
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 pagination to forum messages (#4664)....
r3259 page = params[:page]
# Find the page of the requested reply
if params[:r] && page.nil?
offset = @topic.children.count(:conditions => ["#{Message.table_name}.id < ?", params[:r].to_i])
page = 1 + offset / REPLIES_PER_PAGE
end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/messages_controller.rb....
r6775
Jean-Philippe Lang
Adds pagination to forum messages (#4664)....
r3259 @reply_count = @topic.children.count
@reply_pages = Paginator.new self, @reply_count, REPLIES_PER_PAGE, page
@replies = @topic.children.find(:all, :include => [:author, :attachments, {:board => :project}],
:order => "#{Message.table_name}.created_on ASC",
:limit => @reply_pages.items_per_page,
:offset => @reply_pages.current.offset)
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/messages_controller.rb....
r6775
Jean-Philippe Lang
Per project forums added....
r526 @reply = Message.new(:subject => "RE: #{@message.subject}")
render :action => "show", :layout => false if request.xhr?
end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/messages_controller.rb....
r6775
Jean-Philippe Lang
Forums enhancements:...
r913 # Create a new topic
Jean-Philippe Lang
Per project forums added....
r526 def new
Jean-Philippe Lang
Prevent mass-assignment when adding/updating a forum message (#10390)....
r9013 @message = Message.new
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
Jean-Philippe Lang
Prevent mass-assignment when adding/updating a forum message (#10390)....
r9013 @message.safe_attributes = params[:message]
Jean-Philippe Lang
Preserve uploaded files when creating a forum topic....
r8820 if request.post?
@message.save_attachments(params[:attachments])
if @message.save
call_hook(:controller_messages_new_after_save, { :params => params, :message => @message})
render_attachment_warning_if_needed(@message)
redirect_to :action => 'show', :id => @message
end
Jean-Philippe Lang
Per project forums added....
r526 end
end
Jean-Philippe Lang
Forums enhancements:...
r913 # Reply to a topic
Jean-Philippe Lang
Per project forums added....
r526 def reply
Jean-Philippe Lang
Prevent mass-assignment when adding/updating a forum message (#10390)....
r9013 @reply = Message.new
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
Prevent mass-assignment when adding/updating a forum message (#10390)....
r9013 @reply.safe_attributes = params[:reply]
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})
Eric Davis
Refactor: Moved ApplicationController#attach_files to the Attachment model...
r3409 attachments = Attachment.attach_files(@reply, params[:attachments])
Eric Davis
Refactor: Decouple failed attachments and the flash messages...
r3414 render_attachment_warning_if_needed(@reply)
Jean-Philippe Lang
Forums: attachments can now be added to replies....
r910 end
Jean-Philippe Lang
Adds pagination to forum messages (#4664)....
r3259 redirect_to :action => 'show', :id => @topic, :r => @reply
Jean-Philippe Lang
Forums enhancements:...
r913 end
# Edit a message
def edit
Jean-Philippe Lang
Removes "xxx and return" calls (#4446)....
r3071 (render_403; return false) unless @message.editable_by?(User.current)
Jean-Philippe Lang
Prevent mass-assignment when adding/updating a forum message (#10390)....
r9013 @message.safe_attributes = params[:message]
if request.post? && @message.save
Eric Davis
Refactor: Moved ApplicationController#attach_files to the Attachment model...
r3409 attachments = Attachment.attach_files(@message, params[:attachments])
Eric Davis
Refactor: Decouple failed attachments and the flash messages...
r3414 render_attachment_warning_if_needed(@message)
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
Jean-Philippe Lang
Adds pagination to forum messages (#4664)....
r3259 redirect_to :action => 'show', :board_id => @message.board, :id => @message.root, :r => (@message.parent_id && @message.id)
Jean-Philippe Lang
Forums enhancements:...
r913 end
end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/messages_controller.rb....
r6775
Jean-Philippe Lang
Forums enhancements:...
r913 # Delete a messages
def destroy
Jean-Philippe Lang
Removes "xxx and return" calls (#4446)....
r3071 (render_403; 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 } :
Jean-Philippe Lang
Adds pagination to forum messages (#4664)....
r3259 { :action => 'show', :id => @message.parent, :r => @message }
Jean-Philippe Lang
Per project forums added....
r526 end
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/messages_controller.rb....
r6775
Jean-Philippe Lang
Adds posts quoting functionality (#1825)....
r1771 def quote
user = @message.author
text = @message.content
Jean-Philippe Lang
Fixed: Quoting in forums does not take the subject from the message being quoted (#4215)....
r2921 subject = @message.subject.gsub('"', '\"')
Jean-Philippe Lang
Fixed that "RE:" prefix is added to the subject each time the message is quoted (#4215)....
r2924 subject = "RE: #{subject}" unless subject.starts_with?('RE:')
Jean-Philippe Lang
Adds posts quoting functionality (#1825)....
r1771 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|
Jean-Philippe Lang
Update MessagesController#quote to match the input id changed in r7682 (#9672)....
r7841 page << "$('message_subject').value = \"#{subject}\";"
Jean-Philippe Lang
Adds posts quoting functionality (#1825)....
r1771 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
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/messages_controller.rb....
r6775
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
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/messages_controller.rb....
r6775
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
Toshi MARUYAMA
remove trailing white-spaces from app/controllers/messages_controller.rb....
r6775
Jean-Philippe Lang
Forums enhancements:...
r913 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