diff --git a/app/controllers/versions_controller.rb b/app/controllers/versions_controller.rb index 30fdc93139..b28ae1e0ef 100644 --- a/app/controllers/versions_controller.rb +++ b/app/controllers/versions_controller.rb @@ -27,6 +27,7 @@ class VersionsController < ApplicationController helper :custom_fields helper :projects + helper :issues def index respond_to do |format| @@ -50,7 +51,7 @@ class VersionsController < ApplicationController includes(:project, :tracker). preload(:status, :priority, :fixed_version). where(:tracker_id => @selected_tracker_ids, :project_id => project_ids, :fixed_version_id => @versions.map(&:id)). - order("#{Project.table_name}.lft, #{Tracker.table_name}.position, #{Issue.table_name}.id") + order("#{Issue.table_name}.root_id, #{Issue.table_name}.lft, #{Issue.table_name}.id") @issues_by_version = issues.group_by(&:fixed_version) end @versions.reject! {|version| !project_ids.include?(version.project_id) && @issues_by_version[version].blank?} @@ -67,7 +68,7 @@ class VersionsController < ApplicationController @issues = @version.fixed_issues.visible. includes(:status, :tracker, :priority). preload(:project). - reorder("#{Tracker.table_name}.position, #{Issue.table_name}.id"). + reorder("#{Issue.table_name}.root_id, #{Issue.table_name}.lft, #{Issue.table_name}.id"). to_a } format.api diff --git a/app/views/versions/index.html.erb b/app/views/versions/index.html.erb index eeb9f3f061..fb50c476cf 100644 --- a/app/views/versions/index.html.erb +++ b/app/views/versions/index.html.erb @@ -26,8 +26,8 @@ <%= form_tag({}, :data => {:cm_url => issues_context_menu_path}) do -%> - <% issues.each do |issue| -%> - + <% issue_list(issues) do |issue, level| -%> + 0 %>"> diff --git a/app/views/versions/show.html.erb b/app/views/versions/show.html.erb index 677cc1410d..d7963a5b68 100644 --- a/app/views/versions/show.html.erb +++ b/app/views/versions/show.html.erb @@ -40,8 +40,8 @@ <%= form_tag({}, :data => {:cm_url => issues_context_menu_path}) do -%> - <%- @issues.each do |issue| -%> - + <% issue_list(@issues) do |issue, level| -%> + 0 %>"> diff --git a/test/functional/versions_controller_test.rb b/test/functional/versions_controller_test.rb index 3d5af8dd38..4472f3a9ca 100644 --- a/test/functional/versions_controller_test.rb +++ b/test/functional/versions_controller_test.rb @@ -69,6 +69,19 @@ class VersionsControllerTest < Redmine::ControllerTest assert_select 'a.issue.tracker-3' end + def test_index_issues_should_be_tree_structure + parent_issue_id = nil + (1..3).each do |i| + issue = Issue.generate!(:project_id => 1, :fixed_version_id => 3, :parent_id => parent_issue_id, :tracker_id => i) + parent_issue_id = issue.id + end + get :index, :params => {:project_id => 1} + assert_response :success + assert_select 'tr a.issue.tracker-1' + assert_select 'tr.idnt.idnt-1 a.issue.tracker-2' + assert_select 'tr.idnt.idnt-2 a.issue.tracker-3' + end + def test_index_showing_subprojects_versions @subproject_version = Version.create!(:project => Project.find(3), :name => "Subproject version") get :index, :params => {:project_id => 1, :with_subprojects => 1} @@ -150,6 +163,19 @@ class VersionsControllerTest < Redmine::ControllerTest end end + def test_show_issues_should_be_tree_structure + parent_issue_id = nil + (1..3).each do |i| + issue = Issue.generate!(:project_id => 1, :fixed_version_id => 3, :parent_id => parent_issue_id, :tracker_id => i) + parent_issue_id = issue.id + end + get :show, :params => {:id => 3} + assert_response :success + assert_select 'tr a.issue.tracker-1' + assert_select 'tr.idnt.idnt-1 a.issue.tracker-2' + assert_select 'tr.idnt.idnt-2 a.issue.tracker-3' + end + def test_new @request.session[:user_id] = 2 get :new, :params => {:project_id => '1'}