diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index 68d3c94..0dd876c 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -70,8 +70,16 @@ class IssuesController < ApplicationController @issue_count = @query.issue_count @issue_pages = Paginator.new self, @issue_count, limit, params['page'] + + hier_sort_clause = sort_clause + if hier_sort_clause == 'issues.id DESC' + hier_sort_clause = 'issues.root_id DESC, issues.lft' + elsif hier_sort_clause == 'issues.id' + hier_sort_clause = 'issues.root_id, issues.lft' + end + @issues = @query.issues(:include => [:assigned_to, :tracker, :priority, :category, :fixed_version], - :order => sort_clause, + :order => hier_sort_clause, :offset => @issue_pages.current.offset, :limit => limit) @issue_count_by_group = @query.issue_count_by_group diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 8ef3d63..c06ced0 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -303,7 +303,7 @@ class ProjectsController < ApplicationController issues = version.fixed_issues.visible.find(:all, :include => [:project, :status, :tracker, :priority], :conditions => {:tracker_id => @selected_tracker_ids, :project_id => project_ids}, - :order => "#{Project.table_name}.lft, #{Tracker.table_name}.position, #{Issue.table_name}.id") + :order => "#{Project.table_name}.lft, #{Tracker.table_name}.position, #{Issue.table_name}.root_id, #{Issue.table_name}.lft") @issues_by_version[version] = issues end end diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index d71db18..d114f35 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -87,7 +87,15 @@ module ApplicationHelper s = link_to "#{issue.tracker} ##{issue.id}", {:controller => "issues", :action => "show", :id => issue}, :class => issue.css_classes, :title => title - s << ": #{h subject}" if subject + + if subject + s << ": " + if options[:indent] == true + s << "" + end + s << "#{h subject}" + end + s = "#{h issue.project} - " + s if options[:project] s end diff --git a/app/models/issue.rb b/app/models/issue.rb index 0cb9e38..4ad44f2 100644 --- a/app/models/issue.rb +++ b/app/models/issue.rb @@ -191,7 +191,7 @@ class Issue < ActiveRecord::Base def estimated_hours=(h) write_attribute :estimated_hours, (h.is_a?(String) ? h.to_hours : h) end - + SAFE_ATTRIBUTES = %w( tracker_id status_id @@ -207,6 +207,7 @@ class Issue < ActiveRecord::Base done_ratio estimated_hours custom_field_values + level ) unless const_defined?(:SAFE_ATTRIBUTES) # Safely sets attributes diff --git a/app/views/issues/_list.rhtml b/app/views/issues/_list.rhtml index b29476d..7824396 100644 --- a/app/views/issues/_list.rhtml +++ b/app/views/issues/_list.rhtml @@ -27,7 +27,16 @@ <%= check_box_tag("ids[]", issue.id, false, :id => nil) %> <%= link_to issue.id, :controller => 'issues', :action => 'show', :id => issue %> - <% query.columns.each do |column| %><%= content_tag 'td', column_content(column, issue), :class => column.name %><% end %> + <% query.columns.each do |column| %> + <% + if column.name == :subject + indent = "padding-left: #{issue.level}em" + else + indent = "" + end + %> + <%= content_tag 'td', column_content(column, issue), :style => indent, :class => column.name %> + <% end %> <% end -%> diff --git a/app/views/projects/roadmap.rhtml b/app/views/projects/roadmap.rhtml index 100282a..fb77b99 100644 --- a/app/views/projects/roadmap.rhtml +++ b/app/views/projects/roadmap.rhtml @@ -16,7 +16,7 @@ <%- issues.each do |issue| -%> <%= check_box_tag 'ids[]', issue.id %> - <%= link_to_issue(issue, :project => (@project != issue.project)) %> + <%= link_to_issue(issue, {:project => (@project != issue.project), :indent => true}) %> <%- end -%> diff --git a/app/views/versions/show.rhtml b/app/views/versions/show.rhtml index 18bc6bc..fadf6fe 100644 --- a/app/views/versions/show.rhtml +++ b/app/views/versions/show.rhtml @@ -37,11 +37,13 @@ :order => "#{Tracker.table_name}.position, #{Issue.table_name}.id") %> <% if issues.size > 0 %> <% end %>