Fixed that messages are not sorted by last reply (#12243).
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11424 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
dbf1fed6fb
commit
c17ec1643c
@ -39,16 +39,17 @@ class BoardsController < ApplicationController
|
|||||||
sort_init 'updated_on', 'desc'
|
sort_init 'updated_on', 'desc'
|
||||||
sort_update 'created_on' => "#{Message.table_name}.created_on",
|
sort_update 'created_on' => "#{Message.table_name}.created_on",
|
||||||
'replies' => "#{Message.table_name}.replies_count",
|
'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_count = @board.topics.count
|
||||||
@topic_pages = Paginator.new @topic_count, per_page_option, params['page']
|
@topic_pages = Paginator.new @topic_count, per_page_option, params['page']
|
||||||
@topics = @board.topics.
|
@topics = @board.topics.
|
||||||
reorder("#{Message.table_name}.sticky DESC").
|
reorder("#{Message.table_name}.sticky DESC").
|
||||||
includes(:author, {:last_reply => :author}).
|
includes(:last_reply).
|
||||||
limit(@topic_pages.items_per_page).
|
limit(@topic_pages.items_per_page).
|
||||||
offset(@topic_pages.offset).
|
offset(@topic_pages.offset).
|
||||||
order(sort_clause).
|
order(sort_clause).
|
||||||
|
preload(:author, {:last_reply => :author}).
|
||||||
all
|
all
|
||||||
@message = Message.new(:board => @board)
|
@message = Message.new(:board => @board)
|
||||||
render :action => 'show', :layout => !request.xhr?
|
render :action => 'show', :layout => !request.xhr?
|
||||||
|
@ -69,6 +69,21 @@ class BoardsControllerTest < ActionController::TestCase
|
|||||||
assert topics.first.updated_on < topics.second.updated_on
|
assert topics.first.updated_on < topics.second.updated_on
|
||||||
end
|
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
|
def test_show_with_permission_should_display_the_new_message_form
|
||||||
@request.session[:user_id] = 2
|
@request.session[:user_id] = 2
|
||||||
get :show, :project_id => 1, :id => 1
|
get :show, :project_id => 1, :id => 1
|
||||||
|
Loading…
x
Reference in New Issue
Block a user