mirror of
https://github.com/meineerde/redmine.git
synced 2025-12-24 01:11:12 +00:00
Subprojects issues are not displayed on main project when all subprojects are closed (#34297).
Patch by Yuichi HARADA and Go MAEDA. git-svn-id: http://svn.redmine.org/redmine/trunk@20693 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
parent
972f00eb47
commit
36b5c32048
@ -898,10 +898,10 @@ class Query < ActiveRecord::Base
|
||||
|
||||
def project_statement
|
||||
project_clauses = []
|
||||
active_subprojects_ids = []
|
||||
subprojects_ids = []
|
||||
|
||||
active_subprojects_ids = project.descendants.active.map(&:id) if project
|
||||
if active_subprojects_ids.any?
|
||||
subprojects_ids = project.descendants.where.not(status: Project::STATUS_ARCHIVED).ids if project
|
||||
if subprojects_ids.any?
|
||||
if has_filter?("subproject_id")
|
||||
case operator_for("subproject_id")
|
||||
when '='
|
||||
@ -910,7 +910,7 @@ class Query < ActiveRecord::Base
|
||||
project_clauses << "#{Project.table_name}.id IN (%s)" % ids.join(',')
|
||||
when '!'
|
||||
# exclude the selected subprojects
|
||||
ids = [project.id] + active_subprojects_ids - values_for("subproject_id").map(&:to_i)
|
||||
ids = [project.id] + subprojects_ids - values_for("subproject_id").map(&:to_i)
|
||||
project_clauses << "#{Project.table_name}.id IN (%s)" % ids.join(',')
|
||||
when '!*'
|
||||
# main project only
|
||||
|
||||
@ -119,6 +119,25 @@ class IssuesControllerTest < Redmine::ControllerTest
|
||||
end
|
||||
end
|
||||
|
||||
def test_index_should_list_issues_of_closed_subprojects
|
||||
@request.session[:user_id] = 1
|
||||
project = Project.find(1)
|
||||
|
||||
with_settings :display_subprojects_issues => '1' do
|
||||
# One of subprojects is closed
|
||||
Project.find_by(:identifier => 'subproject1').close
|
||||
get(:index, :params => {:project_id => project.id})
|
||||
assert_response :success
|
||||
assert_equal 10, issues_in_list.count
|
||||
|
||||
# All subprojects are closed
|
||||
project.descendants.each(&:close)
|
||||
get(:index, :params => {:project_id => project.id})
|
||||
assert_response :success
|
||||
assert_equal 10, issues_in_list.count
|
||||
end
|
||||
end
|
||||
|
||||
def test_index_with_project_and_subprojects_should_show_private_subprojects_with_permission
|
||||
@request.session[:user_id] = 2
|
||||
with_settings :display_subprojects_issues => '1' do
|
||||
|
||||
@ -2503,6 +2503,17 @@ class QueryTest < ActiveSupport::TestCase
|
||||
ActiveRecord::Base.default_timezone = :local # restore Redmine default
|
||||
end
|
||||
|
||||
def test_project_statement_with_closed_subprojects
|
||||
project = Project.find(1)
|
||||
project.descendants.each(&:close)
|
||||
|
||||
with_settings :display_subprojects_issues => '1' do
|
||||
query = IssueQuery.new(:name => '_', :project => project)
|
||||
statement = query.project_statement
|
||||
assert_equal "projects.lft >= #{project.lft} AND projects.rgt <= #{project.rgt}", statement
|
||||
end
|
||||
end
|
||||
|
||||
def test_filter_on_subprojects
|
||||
query = IssueQuery.new(:name => '_', :project => Project.find(1))
|
||||
filter_name = "subproject_id"
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user