Merged bug fixes r3402, r3405 to r3408 from trunk.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/0.9-stable@3431 e93f8b46-1217-0410-a6f0-8f06a7374b81
This commit is contained in:
1 parent
b5ee8c08ca
commit
0ef11ef4fe
5 files changed
+52
-12
No files matched your search
@@ -320,13 +320,9 @@ class ProjectsController < ApplicationController
|
|||||||
@issues_by_version = {}
|
@issues_by_version = {}
|
||||||
unless @selected_tracker_ids.empty?
|
unless @selected_tracker_ids.empty?
|
||||||
@versions.each do |version|
|
@versions.each do |version|
|
||||||
conditions = {:tracker_id => @selected_tracker_ids}
|
|
||||||
if !@project.versions.include?(version)
|
|
||||||
conditions.merge!(:project_id => project_ids)
|
|
||||||
end
|
|
||||||
issues = version.fixed_issues.visible.find(:all,
|
issues = version.fixed_issues.visible.find(:all,
|
||||||
:include => [:project, :status, :tracker, :priority],
|
:include => [:project, :status, :tracker, :priority],
|
||||||
:conditions => conditions,
|
: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}.id")
|
||||||
@issues_by_version[version] = issues
|
@issues_by_version[version] = issues
|
||||||
end
|
end
|
||||||
|
|||||||
@@ -249,7 +249,7 @@ class Project < ActiveRecord::Base
|
|||||||
return @allowed_parents if @allowed_parents
|
return @allowed_parents if @allowed_parents
|
||||||
@allowed_parents = Project.find(:all, :conditions => Project.allowed_to_condition(User.current, :add_subprojects))
|
@allowed_parents = Project.find(:all, :conditions => Project.allowed_to_condition(User.current, :add_subprojects))
|
||||||
@allowed_parents = @allowed_parents - self_and_descendants
|
@allowed_parents = @allowed_parents - self_and_descendants
|
||||||
if User.current.allowed_to?(:add_project, nil, :global => true)
|
if User.current.allowed_to?(:add_project, nil, :global => true) || (!new_record? && parent.nil?)
|
||||||
@allowed_parents << nil
|
@allowed_parents << nil
|
||||||
end
|
end
|
||||||
unless parent.nil? || @allowed_parents.empty? || @allowed_parents.include?(parent)
|
unless parent.nil? || @allowed_parents.empty? || @allowed_parents.include?(parent)
|
||||||
|
|||||||
@@ -159,11 +159,15 @@ class Repository < ActiveRecord::Base
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# fetch new changesets for all repositories
|
# Fetches new changesets for all repositories of active projects
|
||||||
# can be called periodically by an external script
|
# Can be called periodically by an external script
|
||||||
# eg. ruby script/runner "Repository.fetch_changesets"
|
# eg. ruby script/runner "Repository.fetch_changesets"
|
||||||
def self.fetch_changesets
|
def self.fetch_changesets
|
||||||
find(:all).each(&:fetch_changesets)
|
Project.active.has_module(:repository).find(:all, :include => :repository).each do |project|
|
||||||
|
if project.repository
|
||||||
|
project.repository.fetch_changesets
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
# scan changeset comments to find related and fixed issues for all repositories
|
# scan changeset comments to find related and fixed issues for all repositories
|
||||||
|
|||||||
@@ -86,7 +86,6 @@ top = headers_height + 8
|
|||||||
<%= link_to_issue i %>
|
<%= link_to_issue i %>
|
||||||
<% else %>
|
<% else %>
|
||||||
<span class="icon icon-package">
|
<span class="icon icon-package">
|
||||||
<%= h("#{i.project} -") unless @project && @project == i.project %>
|
|
||||||
<%= link_to_version i %>
|
<%= link_to_version i %>
|
||||||
</span>
|
</span>
|
||||||
<% end %>
|
<% end %>
|
||||||
@@ -211,8 +210,7 @@ top = headers_height + 10
|
|||||||
%>
|
%>
|
||||||
<div style="top:<%= top %>px;left:<%= i_left %>px;width:15px;" class="task milestone"> </div>
|
<div style="top:<%= top %>px;left:<%= i_left %>px;width:15px;" class="task milestone"> </div>
|
||||||
<div style="top:<%= top %>px;left:<%= i_left + 12 %>px;background:#fff;" class="task">
|
<div style="top:<%= top %>px;left:<%= i_left + 12 %>px;background:#fff;" class="task">
|
||||||
<%= h("#{i.project} -") unless @project && @project == i.project %>
|
<strong><%= format_version_name i %></strong>
|
||||||
<strong><%=h i %></strong>
|
|
||||||
</div>
|
</div>
|
||||||
<% end %>
|
<% end %>
|
||||||
<% top = top + 20
|
<% top = top + 20
|
||||||
|
|||||||
@@ -285,6 +285,48 @@ class ProjectTest < ActiveSupport::TestCase
|
|||||||
assert Project.new.allowed_parents.compact.empty?
|
assert Project.new.allowed_parents.compact.empty?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_allowed_parents_with_add_subprojects_permission
|
||||||
|
Role.find(1).remove_permission!(:add_project)
|
||||||
|
Role.find(1).add_permission!(:add_subprojects)
|
||||||
|
User.current = User.find(2)
|
||||||
|
# new project
|
||||||
|
assert !Project.new.allowed_parents.include?(nil)
|
||||||
|
assert Project.new.allowed_parents.include?(Project.find(1))
|
||||||
|
# existing root project
|
||||||
|
assert Project.find(1).allowed_parents.include?(nil)
|
||||||
|
# existing child
|
||||||
|
assert Project.find(3).allowed_parents.include?(Project.find(1))
|
||||||
|
assert !Project.find(3).allowed_parents.include?(nil)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_allowed_parents_with_add_project_permission
|
||||||
|
Role.find(1).add_permission!(:add_project)
|
||||||
|
Role.find(1).remove_permission!(:add_subprojects)
|
||||||
|
User.current = User.find(2)
|
||||||
|
# new project
|
||||||
|
assert Project.new.allowed_parents.include?(nil)
|
||||||
|
assert !Project.new.allowed_parents.include?(Project.find(1))
|
||||||
|
# existing root project
|
||||||
|
assert Project.find(1).allowed_parents.include?(nil)
|
||||||
|
# existing child
|
||||||
|
assert Project.find(3).allowed_parents.include?(Project.find(1))
|
||||||
|
assert Project.find(3).allowed_parents.include?(nil)
|
||||||
|
end
|
||||||
|
|
||||||
|
def test_allowed_parents_with_add_project_and_subprojects_permission
|
||||||
|
Role.find(1).add_permission!(:add_project)
|
||||||
|
Role.find(1).add_permission!(:add_subprojects)
|
||||||
|
User.current = User.find(2)
|
||||||
|
# new project
|
||||||
|
assert Project.new.allowed_parents.include?(nil)
|
||||||
|
assert Project.new.allowed_parents.include?(Project.find(1))
|
||||||
|
# existing root project
|
||||||
|
assert Project.find(1).allowed_parents.include?(nil)
|
||||||
|
# existing child
|
||||||
|
assert Project.find(3).allowed_parents.include?(Project.find(1))
|
||||||
|
assert Project.find(3).allowed_parents.include?(nil)
|
||||||
|
end
|
||||||
|
|
||||||
def test_users_by_role
|
def test_users_by_role
|
||||||
users_by_role = Project.find(1).users_by_role
|
users_by_role = Project.find(1).users_by_role
|
||||||
assert_kind_of Hash, users_by_role
|
assert_kind_of Hash, users_by_role
|
||||||
|
|||||||
Reference in new issue
Block a user