git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11424 e93f8b46-1217-0410-a6f0-8f06a7374b81tags/2.3.0
@@ -39,16 +39,17 @@ class BoardsController < ApplicationController | |||
sort_init 'updated_on', 'desc' | |||
sort_update 'created_on' => "#{Message.table_name}.created_on", | |||
'replies' => "#{Message.table_name}.replies_count", | |||
'updated_on' => "#{Message.table_name}.updated_on" | |||
'updated_on' => "COALESCE(last_replies_messages.created_on, #{Message.table_name}.created_on)" | |||
@topic_count = @board.topics.count | |||
@topic_pages = Paginator.new @topic_count, per_page_option, params['page'] | |||
@topics = @board.topics. | |||
reorder("#{Message.table_name}.sticky DESC"). | |||
includes(:author, {:last_reply => :author}). | |||
includes(:last_reply). | |||
limit(@topic_pages.items_per_page). | |||
offset(@topic_pages.offset). | |||
order(sort_clause). | |||
preload(:author, {:last_reply => :author}). | |||
all | |||
@message = Message.new(:board => @board) | |||
render :action => 'show', :layout => !request.xhr? |
@@ -69,6 +69,21 @@ class BoardsControllerTest < ActionController::TestCase | |||
assert topics.first.updated_on < topics.second.updated_on | |||
end | |||
def test_show_should_display_message_with_last_reply_first | |||
Message.update_all(:sticky => 0) | |||
# Reply to an old topic | |||
old_topic = Message.where(:board_id => 1, :parent_id => nil).order('created_on ASC').first | |||
reply = Message.new(:board_id => 1, :subject => 'New reply', :content => 'New reply', :author_id => 2) | |||
old_topic.children << reply | |||
get :show, :project_id => 1, :id => 1 | |||
assert_response :success | |||
topics = assigns(:topics) | |||
assert_not_nil topics | |||
assert_equal old_topic, topics.first | |||
end | |||
def test_show_with_permission_should_display_the_new_message_form | |||
@request.session[:user_id] = 2 | |||
get :show, :project_id => 1, :id => 1 |