Defect #44667 ยป 0001-Keep-the-sort-order-of-a-saved-query-in-the-session-.patch
| app/controllers/issues_controller.rb | ||
|---|---|---|
| 552 | 552 |
@next_issue_id = issue_ids[idx + 1] if idx < (issue_ids.size - 1) |
| 553 | 553 |
end |
| 554 | 554 |
query_params = @query.as_params |
| 555 |
query_params[:sort] = @query.sort_criteria.to_param unless @query.new_record? |
|
| 555 | 556 |
if @issue_position |
| 556 | 557 |
query_params = query_params.merge(:page => (@issue_position / per_page_option) + 1, :per_page => per_page_option) |
| 557 | 558 |
end |
| app/helpers/queries_helper.rb | ||
|---|---|---|
| 386 | 386 |
:filters => session[session_key][:filters], |
| 387 | 387 |
:group_by => session[session_key][:group_by], |
| 388 | 388 |
:column_names => session[session_key][:column_names], |
| 389 |
:totalable_names => session[session_key][:totalable_names], |
|
| 390 |
:sort_criteria => session[session_key][:sort] |
|
| 389 |
:totalable_names => session[session_key][:totalable_names] |
|
| 391 | 390 |
) |
| 391 |
@query.sort_criteria = session[session_key][:sort] if session[session_key][:sort].present? |
|
| 392 | 392 |
@query.project = @project |
| 393 | 393 |
end |
| 394 | 394 |
if params[:sort].present? |
| ... | ... | |
| 416 | 416 |
:filters => session_data[:filters], |
| 417 | 417 |
:group_by => session_data[:group_by], |
| 418 | 418 |
:column_names => session_data[:column_names], |
| 419 |
:totalable_names => session_data[:totalable_names], |
|
| 420 |
:sort_criteria => session[session_key][:sort] |
|
| 419 |
:totalable_names => session_data[:totalable_names] |
|
| 421 | 420 |
) |
| 422 | 421 |
end |
| 422 |
@query.sort_criteria = session_data[:sort] if session_data[:sort].present? |
|
| 423 | 423 |
if session_data.has_key?(:project_id) |
| 424 | 424 |
@query.project_id = session_data[:project_id] |
| 425 | 425 |
else |
| test/functional/issues_controller_test.rb | ||
|---|---|---|
| 2725 | 2725 |
end |
| 2726 | 2726 |
end |
| 2727 | 2727 | |
| 2728 |
def test_show_should_display_prev_next_links_with_saved_query_and_sort_in_session |
|
| 2729 |
query = |
|
| 2730 |
IssueQuery.create!( |
|
| 2731 |
:name => 'test', |
|
| 2732 |
:visibility => IssueQuery::VISIBILITY_PUBLIC, |
|
| 2733 |
:user_id => 1, |
|
| 2734 |
:filters => {'status_id' => {:values => ['5'], :operator => '='}},
|
|
| 2735 |
:sort_criteria => [['id', 'asc']] |
|
| 2736 |
) |
|
| 2737 |
# Sort the issues of the saved query by clicking on a column header |
|
| 2738 |
get(:index, :params => {:query_id => query.id, :sort => 'id:desc'})
|
|
| 2739 |
assert_response :success |
|
| 2740 |
assert_equal [['id', 'desc']], session[:issue_query][:sort] |
|
| 2741 | ||
| 2742 |
get(:show, :params => {:id => 11})
|
|
| 2743 |
assert_response :success |
|
| 2744 |
assert_select 'div.next-prev-links' do |
|
| 2745 |
assert_select 'a[href="/issues/12"]', :text => /Previous/ |
|
| 2746 |
assert_select 'a[href="/issues/8"]', :text => /Next/ |
|
| 2747 |
end |
|
| 2748 | ||
| 2749 |
get(:show, :params => {:id => 12})
|
|
| 2750 |
assert_response :success |
|
| 2751 |
assert_select 'div.next-prev-links li.position', :text => '1 of 3' do |
|
| 2752 |
assert_select 'a[href=?]', "/issues?page=1&per_page=25&query_id=#{query.id}&sort=id%3Adesc"
|
|
| 2753 |
end |
|
| 2754 |
end |
|
| 2755 | ||
| 2756 |
def test_index_should_keep_sort_of_saved_query_in_session |
|
| 2757 |
query = |
|
| 2758 |
IssueQuery.create!( |
|
| 2759 |
:name => 'test', |
|
| 2760 |
:visibility => IssueQuery::VISIBILITY_PUBLIC, |
|
| 2761 |
:user_id => 1, |
|
| 2762 |
:sort_criteria => [['id', 'asc']] |
|
| 2763 |
) |
|
| 2764 |
get(:index, :params => {:query_id => query.id, :sort => 'id:desc'})
|
|
| 2765 |
assert_response :success |
|
| 2766 | ||
| 2767 |
# Back to the issue list, e.g. from an issue |
|
| 2768 |
get :index |
|
| 2769 |
assert_response :success |
|
| 2770 |
ids = issues_in_list.map(&:id) |
|
| 2771 |
assert ids.size > 1 |
|
| 2772 |
assert_equal ids.sort.reverse, ids |
|
| 2773 |
end |
|
| 2774 | ||
| 2728 | 2775 |
def test_show_should_display_prev_next_links_with_query_and_sort_on_association |
| 2729 | 2776 |
@request.session[:issue_query] = |
| 2730 | 2777 |
{
|