summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/helpers/sort_helper.rb12
-rw-r--r--app/views/issues/_list.html.erb2
-rw-r--r--test/functional/issues_controller_test.rb3
-rw-r--r--test/unit/helpers/sort_helper_test.rb22
4 files changed, 38 insertions, 1 deletions
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 %>
<div class="autoscroll">
-<table class="list issues">
+<table class="list issues <%= sort_css_classes %>">
<thead>
<tr>
<th class="checkbox hide-when-print">
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