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
<%= 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">
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
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
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
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