Fixed: private subprojects are listed on the issues view (#1217).

git-svn-id: http://redmine.rubyforge.org/svn/trunk@1432 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
Jean-Philippe Lang 2008-05-14 18:19:37 +00:00
parent 7ee38a95a0
commit 9e225cc63f
2 changed files with 38 additions and 10 deletions

View File

@ -265,7 +265,7 @@ class Query < ActiveRecord::Base
def statement
# project/subprojects clause
clause = ''
project_clauses = []
if project && !@project.active_children.empty?
ids = [project.id]
if has_filter?("subproject_id")
@ -277,17 +277,16 @@ class Query < ActiveRecord::Base
# main project only
else
# all subprojects
ids += project.active_children.collect{|p| p.id}
ids += project.child_ids
end
elsif Setting.display_subprojects_issues?
ids += project.active_children.collect{|p| p.id}
ids += project.child_ids
end
clause << "#{Issue.table_name}.project_id IN (%s)" % ids.join(',')
project_clauses << "#{Issue.table_name}.project_id IN (%s)" % ids.join(',')
elsif project
clause << "#{Issue.table_name}.project_id = %d" % project.id
else
clause << Project.visible_by(User.current)
project_clauses << "#{Issue.table_name}.project_id = %d" % project.id
end
project_clauses << Project.visible_by(User.current)
# filters clauses
filters_clauses = []
@ -365,8 +364,6 @@ class Query < ActiveRecord::Base
filters_clauses << sql
end if filters and valid?
clause << ' AND ' unless clause.empty?
clause << filters_clauses.join(' AND ') unless filters_clauses.empty?
clause
(project_clauses + filters_clauses).join(' AND ')
end
end

View File

@ -53,13 +53,44 @@ class IssuesControllerTest < Test::Unit::TestCase
assert_template 'index.rhtml'
assert_not_nil assigns(:issues)
assert_nil assigns(:project)
assert_tag :tag => 'a', :content => /Can't print recipes/
assert_tag :tag => 'a', :content => /Subproject issue/
# private projects hidden
assert_no_tag :tag => 'a', :content => /Issue of a private subproject/
assert_no_tag :tag => 'a', :content => /Issue on project 2/
end
def test_index_with_project
Setting.display_subprojects_issues = 0
get :index, :project_id => 1
assert_response :success
assert_template 'index.rhtml'
assert_not_nil assigns(:issues)
assert_tag :tag => 'a', :content => /Can't print recipes/
assert_no_tag :tag => 'a', :content => /Subproject issue/
end
def test_index_with_project_and_subprojects
Setting.display_subprojects_issues = 1
get :index, :project_id => 1
assert_response :success
assert_template 'index.rhtml'
assert_not_nil assigns(:issues)
assert_tag :tag => 'a', :content => /Can't print recipes/
assert_tag :tag => 'a', :content => /Subproject issue/
assert_no_tag :tag => 'a', :content => /Issue of a private subproject/
end
def test_index_with_project_and_subprojects_should_show_private_subprojects
@request.session[:user_id] = 2
Setting.display_subprojects_issues = 1
get :index, :project_id => 1
assert_response :success
assert_template 'index.rhtml'
assert_not_nil assigns(:issues)
assert_tag :tag => 'a', :content => /Can't print recipes/
assert_tag :tag => 'a', :content => /Subproject issue/
assert_tag :tag => 'a', :content => /Issue of a private subproject/
end
def test_index_with_project_and_filter