context_menus_controller.rb
58 lines
| 2.4 KiB
| text/x-ruby
|
RubyLexer
|
r3892 | class ContextMenusController < ApplicationController | ||
helper :watchers | ||||
|
r5375 | helper :issues | ||
|
r3892 | |||
def issues | ||||
|
r4466 | @issues = Issue.visible.all(:conditions => {:id => params[:ids]}, :include => :project) | ||
|
r3892 | if (@issues.size == 1) | ||
@issue = @issues.first | ||||
@allowed_statuses = @issue.new_statuses_allowed_to(User.current) | ||||
|
r3941 | else | ||
@allowed_statuses = @issues.map do |i| | ||||
i.new_statuses_allowed_to(User.current) | ||||
end.inject do |memo,s| | ||||
memo & s | ||||
end | ||||
|
r3892 | end | ||
|
r3945 | @projects = @issues.collect(&:project).compact.uniq | ||
@project = @projects.first if @projects.size == 1 | ||||
|
r3892 | |||
|
r4128 | @can = {:edit => User.current.allowed_to?(:edit_issues, @projects), | ||
|
r3892 | :log_time => (@project && User.current.allowed_to?(:log_time, @project)), | ||
|
r4128 | :update => (User.current.allowed_to?(:edit_issues, @projects) || (User.current.allowed_to?(:change_status, @projects) && !@allowed_statuses.blank?)), | ||
|
r3892 | :move => (@project && User.current.allowed_to?(:move_issues, @project)), | ||
:copy => (@issue && @project.trackers.include?(@issue.tracker) && User.current.allowed_to?(:add_issues, @project)), | ||||
|
r4122 | :delete => User.current.allowed_to?(:delete_issues, @projects) | ||
|
r3892 | } | ||
if @project | ||||
@assignables = @project.assignable_users | ||||
@assignables << @issue.assigned_to if @issue && @issue.assigned_to && !@assignables.include?(@issue.assigned_to) | ||||
@trackers = @project.trackers | ||||
|
r4128 | 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} | ||||
|
r3892 | end | ||
|
r5950 | @priorities = IssuePriority.active.reverse | ||
|
r3892 | @statuses = IssueStatus.find(:all, :order => 'position') | ||
@back = back_url | ||||
render :layout => false | ||||
end | ||||
|
r5192 | |||
def time_entries | ||||
@time_entries = TimeEntry.all( | ||||
:conditions => {:id => params[:ids]}, :include => :project) | ||||
@projects = @time_entries.collect(&:project).compact.uniq | ||||
@project = @projects.first if @projects.size == 1 | ||||
@activities = TimeEntryActivity.shared.active | ||||
@can = {:edit => User.current.allowed_to?(:log_time, @projects), | ||||
:update => User.current.allowed_to?(:log_time, @projects), | ||||
:delete => User.current.allowed_to?(:log_time, @projects) | ||||
} | ||||
@back = back_url | ||||
render :layout => false | ||||
end | ||||
|
r3892 | end | ||