From 8b998ec05ba92082beb8265f5403bc0ec945a0ed Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sat, 4 Oct 2014 09:36:35 +0000 Subject: [PATCH] Adds css classes to get sort order on the issue list (#17993). git-svn-id: http://svn.redmine.org/redmine/trunk@13425 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- app/helpers/sort_helper.rb | 12 ++++++++++++ app/views/issues/_list.html.erb | 2 +- test/functional/issues_controller_test.rb | 3 +++ test/unit/helpers/sort_helper_test.rb | 22 ++++++++++++++++++++++ 4 files changed, 38 insertions(+), 1 deletion(-) diff --git a/app/helpers/sort_helper.rb b/app/helpers/sort_helper.rb index 13beed3c2..cbdc41883 100644 --- a/app/helpers/sort_helper.rb +++ b/app/helpers/sort_helper.rb @@ -239,5 +239,17 @@ module SortHelper options[:title] = l(:label_sort_by, "\"#{caption}\"") unless options[:title] content_tag('th', sort_link(column, caption, default_order), options) end + + # Returns the css classes for the current sort order + # + # Example: + # + # sort_css_classes + # # => "sort-by-created-on sort-desc" + def sort_css_classes + if @sort_criteria.first_key + "sort-by-#{@sort_criteria.first_key.to_s.dasherize} sort-#{@sort_criteria.first_asc? ? 'asc' : 'desc'}" + end + end end diff --git a/app/views/issues/_list.html.erb b/app/views/issues/_list.html.erb index 17bf99623..fb190d42b 100644 --- a/app/views/issues/_list.html.erb +++ b/app/views/issues/_list.html.erb @@ -1,7 +1,7 @@ <%= form_tag({}) do -%> <%= hidden_field_tag 'back_url', url_for(params), :id => nil %>
- +
diff --git a/test/functional/issues_controller_test.rb b/test/functional/issues_controller_test.rb index bf1397c68..44c43e3b2 100644 --- a/test/functional/issues_controller_test.rb +++ b/test/functional/issues_controller_test.rb @@ -624,6 +624,7 @@ class IssuesControllerTest < ActionController::TestCase assert_not_nil issues assert !issues.empty? assert_equal issues.sort {|a,b| a.tracker == b.tracker ? b.id <=> a.id : a.tracker <=> b.tracker }.collect(&:id), issues.collect(&:id) + assert_select 'table.issues.sort-by-tracker.sort-asc' end def test_index_sort_by_field_not_included_in_columns @@ -636,6 +637,7 @@ class IssuesControllerTest < ActionController::TestCase assert_response :success assignees = assigns(:issues).collect(&:assigned_to).compact assert_equal assignees.sort, assignees + assert_select 'table.issues.sort-by-assigned-to.sort-asc' end def test_index_sort_by_assigned_to_desc @@ -643,6 +645,7 @@ class IssuesControllerTest < ActionController::TestCase assert_response :success assignees = assigns(:issues).collect(&:assigned_to).compact assert_equal assignees.sort.reverse, assignees + assert_select 'table.issues.sort-by-assigned-to.sort-desc' end def test_index_group_by_assigned_to diff --git a/test/unit/helpers/sort_helper_test.rb b/test/unit/helpers/sort_helper_test.rb index e66a591ef..0c79f8c2a 100644 --- a/test/unit/helpers/sort_helper_test.rb +++ b/test/unit/helpers/sort_helper_test.rb @@ -78,6 +78,28 @@ class SortHelperTest < ActionView::TestCase assert_equal 'attr1,attr2', @session['foo_bar_sort'] end + def test_sort_css_without_params_should_use_default_sort + sort_init 'attr1', 'desc' + sort_update(['attr1', 'attr2']) + + assert_equal 'sort-by-attr1 sort-desc', sort_css_classes + end + + def test_sort_css_should_use_params + @sort_param = 'attr2,attr1' + sort_init 'attr1', 'desc' + sort_update(['attr1', 'attr2']) + + assert_equal 'sort-by-attr2 sort-asc', sort_css_classes + end + + def test_sort_css_should_dasherize_sort_name + sort_init 'foo_bar' + sort_update(['foo_bar']) + + assert_equal 'sort-by-foo-bar sort-asc', sort_css_classes + end + private def controller_name; 'foo'; end -- 2.39.5