@@ -320,13 +320,9 class ProjectsController < ApplicationController | |||||
320 | @issues_by_version = {} |
|
320 | @issues_by_version = {} | |
321 | unless @selected_tracker_ids.empty? |
|
321 | unless @selected_tracker_ids.empty? | |
322 | @versions.each do |version| |
|
322 | @versions.each do |version| | |
323 | conditions = {:tracker_id => @selected_tracker_ids} |
|
|||
324 | if !@project.versions.include?(version) |
|
|||
325 | conditions.merge!(:project_id => project_ids) |
|
|||
326 | end |
|
|||
327 | issues = version.fixed_issues.visible.find(:all, |
|
323 | issues = version.fixed_issues.visible.find(:all, | |
328 | :include => [:project, :status, :tracker, :priority], |
|
324 | :include => [:project, :status, :tracker, :priority], | |
329 |
:conditions => |
|
325 | :conditions => {:tracker_id => @selected_tracker_ids, :project_id => project_ids}, | |
330 | :order => "#{Project.table_name}.lft, #{Tracker.table_name}.position, #{Issue.table_name}.id") |
|
326 | :order => "#{Project.table_name}.lft, #{Tracker.table_name}.position, #{Issue.table_name}.id") | |
331 | @issues_by_version[version] = issues |
|
327 | @issues_by_version[version] = issues | |
332 | end |
|
328 | end |
@@ -249,7 +249,7 class Project < ActiveRecord::Base | |||||
249 | return @allowed_parents if @allowed_parents |
|
249 | return @allowed_parents if @allowed_parents | |
250 | @allowed_parents = Project.find(:all, :conditions => Project.allowed_to_condition(User.current, :add_subprojects)) |
|
250 | @allowed_parents = Project.find(:all, :conditions => Project.allowed_to_condition(User.current, :add_subprojects)) | |
251 | @allowed_parents = @allowed_parents - self_and_descendants |
|
251 | @allowed_parents = @allowed_parents - self_and_descendants | |
252 | if User.current.allowed_to?(:add_project, nil, :global => true) |
|
252 | if User.current.allowed_to?(:add_project, nil, :global => true) || (!new_record? && parent.nil?) | |
253 | @allowed_parents << nil |
|
253 | @allowed_parents << nil | |
254 | end |
|
254 | end | |
255 | unless parent.nil? || @allowed_parents.empty? || @allowed_parents.include?(parent) |
|
255 | unless parent.nil? || @allowed_parents.empty? || @allowed_parents.include?(parent) |
@@ -159,11 +159,15 class Repository < ActiveRecord::Base | |||||
159 | end |
|
159 | end | |
160 | end |
|
160 | end | |
161 |
|
161 | |||
162 |
# |
|
162 | # Fetches new changesets for all repositories of active projects | |
163 |
# |
|
163 | # Can be called periodically by an external script | |
164 | # eg. ruby script/runner "Repository.fetch_changesets" |
|
164 | # eg. ruby script/runner "Repository.fetch_changesets" | |
165 | def self.fetch_changesets |
|
165 | def self.fetch_changesets | |
166 | find(:all).each(&:fetch_changesets) |
|
166 | Project.active.has_module(:repository).find(:all, :include => :repository).each do |project| | |
|
167 | if project.repository | |||
|
168 | project.repository.fetch_changesets | |||
|
169 | end | |||
|
170 | end | |||
167 | end |
|
171 | end | |
168 |
|
172 | |||
169 | # scan changeset comments to find related and fixed issues for all repositories |
|
173 | # scan changeset comments to find related and fixed issues for all repositories |
@@ -86,7 +86,6 top = headers_height + 8 | |||||
86 | <%= link_to_issue i %> |
|
86 | <%= link_to_issue i %> | |
87 | <% else %> |
|
87 | <% else %> | |
88 | <span class="icon icon-package"> |
|
88 | <span class="icon icon-package"> | |
89 | <%= h("#{i.project} -") unless @project && @project == i.project %> |
|
|||
90 | <%= link_to_version i %> |
|
89 | <%= link_to_version i %> | |
91 | </span> |
|
90 | </span> | |
92 | <% end %> |
|
91 | <% end %> | |
@@ -211,8 +210,7 top = headers_height + 10 | |||||
211 | %> |
|
210 | %> | |
212 | <div style="top:<%= top %>px;left:<%= i_left %>px;width:15px;" class="task milestone"> </div> |
|
211 | <div style="top:<%= top %>px;left:<%= i_left %>px;width:15px;" class="task milestone"> </div> | |
213 | <div style="top:<%= top %>px;left:<%= i_left + 12 %>px;background:#fff;" class="task"> |
|
212 | <div style="top:<%= top %>px;left:<%= i_left + 12 %>px;background:#fff;" class="task"> | |
214 | <%= h("#{i.project} -") unless @project && @project == i.project %> |
|
213 | <strong><%= format_version_name i %></strong> | |
215 | <strong><%=h i %></strong> |
|
|||
216 | </div> |
|
214 | </div> | |
217 | <% end %> |
|
215 | <% end %> | |
218 | <% top = top + 20 |
|
216 | <% top = top + 20 |
@@ -285,6 +285,48 class ProjectTest < ActiveSupport::TestCase | |||||
285 | assert Project.new.allowed_parents.compact.empty? |
|
285 | assert Project.new.allowed_parents.compact.empty? | |
286 | end |
|
286 | end | |
287 |
|
287 | |||
|
288 | def test_allowed_parents_with_add_subprojects_permission | |||
|
289 | Role.find(1).remove_permission!(:add_project) | |||
|
290 | Role.find(1).add_permission!(:add_subprojects) | |||
|
291 | User.current = User.find(2) | |||
|
292 | # new project | |||
|
293 | assert !Project.new.allowed_parents.include?(nil) | |||
|
294 | assert Project.new.allowed_parents.include?(Project.find(1)) | |||
|
295 | # existing root project | |||
|
296 | assert Project.find(1).allowed_parents.include?(nil) | |||
|
297 | # existing child | |||
|
298 | assert Project.find(3).allowed_parents.include?(Project.find(1)) | |||
|
299 | assert !Project.find(3).allowed_parents.include?(nil) | |||
|
300 | end | |||
|
301 | ||||
|
302 | def test_allowed_parents_with_add_project_permission | |||
|
303 | Role.find(1).add_permission!(:add_project) | |||
|
304 | Role.find(1).remove_permission!(:add_subprojects) | |||
|
305 | User.current = User.find(2) | |||
|
306 | # new project | |||
|
307 | assert Project.new.allowed_parents.include?(nil) | |||
|
308 | assert !Project.new.allowed_parents.include?(Project.find(1)) | |||
|
309 | # existing root project | |||
|
310 | assert Project.find(1).allowed_parents.include?(nil) | |||
|
311 | # existing child | |||
|
312 | assert Project.find(3).allowed_parents.include?(Project.find(1)) | |||
|
313 | assert Project.find(3).allowed_parents.include?(nil) | |||
|
314 | end | |||
|
315 | ||||
|
316 | def test_allowed_parents_with_add_project_and_subprojects_permission | |||
|
317 | Role.find(1).add_permission!(:add_project) | |||
|
318 | Role.find(1).add_permission!(:add_subprojects) | |||
|
319 | User.current = User.find(2) | |||
|
320 | # new project | |||
|
321 | assert Project.new.allowed_parents.include?(nil) | |||
|
322 | assert Project.new.allowed_parents.include?(Project.find(1)) | |||
|
323 | # existing root project | |||
|
324 | assert Project.find(1).allowed_parents.include?(nil) | |||
|
325 | # existing child | |||
|
326 | assert Project.find(3).allowed_parents.include?(Project.find(1)) | |||
|
327 | assert Project.find(3).allowed_parents.include?(nil) | |||
|
328 | end | |||
|
329 | ||||
288 | def test_users_by_role |
|
330 | def test_users_by_role | |
289 | users_by_role = Project.find(1).users_by_role |
|
331 | users_by_role = Project.find(1).users_by_role | |
290 | assert_kind_of Hash, users_by_role |
|
332 | assert_kind_of Hash, users_by_role |
General Comments 0
You need to be logged in to leave comments.
Login now