Index: app/models/query.rb =================================================================== --- app/models/query.rb (revision 4098) +++ app/models/query.rb (working copy) @@ -180,7 +180,9 @@ "start_date" => { :type => :date, :order => 11 }, "due_date" => { :type => :date, :order => 12 }, "estimated_hours" => { :type => :integer, :order => 13 }, - "done_ratio" => { :type => :integer, :order => 14 }} + "done_ratio" => { :type => :integer, :order => 14 }, + "root_id" => { :type => :integer, :order => 16, :caption => "field_parent_issue" }, + } user_values = [] user_values << ["<< #{l(:label_me)} >>", "me"] if User.current.logged? @@ -366,9 +368,11 @@ # Returns the SQL sort order that should be prepended for grouping def group_by_sort_order if grouped? && (column = group_by_column) + # Clean up duplicate SQL order modifiers when sortable field is postfixed + # with "asc" or "desc". Allows such fields to be groupable. column.sortable.is_a?(Array) ? - column.sortable.collect {|s| "#{s} #{column.default_order}"}.join(',') : - "#{column.sortable} #{column.default_order}" + column.sortable.collect {|s| s.slice(-4,4).upcase==" ASC"?s : s.slice(-5, 5).upcase==" DESC"?s : s+" #{column.default_order}"}.join(',') : + "#{column.sortable}".slice(-4,4).upcase==" ASC"?"#{column.sortable}" : "#{column.sortable}".slice(-5, 5).upcase==" DESC"?"#{column.sortable}" : "#{column.sortable} #{column.default_order}" end end Index: app/views/queries/_filters.rhtml =================================================================== --- app/views/queries/_filters.rhtml (revision 4098) +++ app/views/queries/_filters.rhtml (working copy) @@ -78,7 +78,7 @@