diff app/controllers/.svn/text-base/context_menus_controller.rb.svn-base @ 37:94944d00e43c

* Update to SVN trunk rev 4411
author Chris Cannam <chris.cannam@soundsoftware.ac.uk>
date Fri, 19 Nov 2010 13:24:41 +0000
parents 40f7cfd4df19
children af80e5618e9b
line wrap: on
line diff
--- a/app/controllers/.svn/text-base/context_menus_controller.rb.svn-base	Fri Sep 24 14:06:04 2010 +0100
+++ b/app/controllers/.svn/text-base/context_menus_controller.rb.svn-base	Fri Nov 19 13:24:41 2010 +0000
@@ -16,17 +16,21 @@
     @projects = @issues.collect(&:project).compact.uniq
     @project = @projects.first if @projects.size == 1
 
-    @can = {:edit => (@project && User.current.allowed_to?(:edit_issues, @project)),
+    @can = {:edit => User.current.allowed_to?(:edit_issues, @projects),
             :log_time => (@project && User.current.allowed_to?(:log_time, @project)),
-            :update => (@project && (User.current.allowed_to?(:edit_issues, @project) || (User.current.allowed_to?(:change_status, @project) && @allowed_statuses && !@allowed_statuses.empty?))),
+            :update => (User.current.allowed_to?(:edit_issues, @projects) || (User.current.allowed_to?(:change_status, @projects) && !@allowed_statuses.blank?)),
             :move => (@project && User.current.allowed_to?(:move_issues, @project)),
             :copy => (@issue && @project.trackers.include?(@issue.tracker) && User.current.allowed_to?(:add_issues, @project)),
-            :delete => (@project && User.current.allowed_to?(:delete_issues, @project))
+            :delete => User.current.allowed_to?(:delete_issues, @projects)
             }
     if @project
       @assignables = @project.assignable_users
       @assignables << @issue.assigned_to if @issue && @issue.assigned_to && !@assignables.include?(@issue.assigned_to)
       @trackers = @project.trackers
+    else
+      #when multiple projects, we only keep the intersection of each set
+      @assignables = @projects.map(&:assignable_users).inject{|memo,a| memo & a}
+      @trackers = @projects.map(&:trackers).inject{|memo,t| memo & t}
     end
     
     @priorities = IssuePriority.all.reverse