annotate app/controllers/.svn/text-base/context_menus_controller.rb.svn-base @ 922:ad295b270cd4 live

FIx #446: "non-utf8 paths in repositories blow up repo viewer and reposman" by ensuring the iconv conversion always happens even if source and dest are intended to be the same encoding
author Chris Cannam
date Tue, 13 Mar 2012 16:33:49 +0000
parents cbce1fd3b1b7
children
rev   line source
Chris@14 1 class ContextMenusController < ApplicationController
Chris@14 2 helper :watchers
Chris@441 3 helper :issues
Chris@14 4
Chris@14 5 def issues
Chris@119 6 @issues = Issue.visible.all(:conditions => {:id => params[:ids]}, :include => :project)
Chris@119 7
Chris@14 8 if (@issues.size == 1)
Chris@14 9 @issue = @issues.first
Chris@14 10 @allowed_statuses = @issue.new_statuses_allowed_to(User.current)
chris@22 11 else
chris@22 12 @allowed_statuses = @issues.map do |i|
chris@22 13 i.new_statuses_allowed_to(User.current)
chris@22 14 end.inject do |memo,s|
chris@22 15 memo & s
chris@22 16 end
Chris@14 17 end
chris@22 18 @projects = @issues.collect(&:project).compact.uniq
chris@22 19 @project = @projects.first if @projects.size == 1
Chris@14 20
chris@37 21 @can = {:edit => User.current.allowed_to?(:edit_issues, @projects),
Chris@14 22 :log_time => (@project && User.current.allowed_to?(:log_time, @project)),
chris@37 23 :update => (User.current.allowed_to?(:edit_issues, @projects) || (User.current.allowed_to?(:change_status, @projects) && !@allowed_statuses.blank?)),
Chris@14 24 :move => (@project && User.current.allowed_to?(:move_issues, @project)),
Chris@14 25 :copy => (@issue && @project.trackers.include?(@issue.tracker) && User.current.allowed_to?(:add_issues, @project)),
chris@37 26 :delete => User.current.allowed_to?(:delete_issues, @projects)
Chris@14 27 }
Chris@14 28 if @project
Chris@14 29 @assignables = @project.assignable_users
Chris@14 30 @assignables << @issue.assigned_to if @issue && @issue.assigned_to && !@assignables.include?(@issue.assigned_to)
Chris@14 31 @trackers = @project.trackers
chris@37 32 else
chris@37 33 #when multiple projects, we only keep the intersection of each set
chris@37 34 @assignables = @projects.map(&:assignable_users).inject{|memo,a| memo & a}
chris@37 35 @trackers = @projects.map(&:trackers).inject{|memo,t| memo & t}
Chris@14 36 end
Chris@14 37
Chris@14 38 @priorities = IssuePriority.all.reverse
Chris@14 39 @statuses = IssueStatus.find(:all, :order => 'position')
Chris@14 40 @back = back_url
Chris@14 41
Chris@14 42 render :layout => false
Chris@14 43 end
Chris@441 44
Chris@441 45 def time_entries
Chris@441 46 @time_entries = TimeEntry.all(
Chris@441 47 :conditions => {:id => params[:ids]}, :include => :project)
Chris@441 48 @projects = @time_entries.collect(&:project).compact.uniq
Chris@441 49 @project = @projects.first if @projects.size == 1
Chris@441 50 @activities = TimeEntryActivity.shared.active
Chris@441 51 @can = {:edit => User.current.allowed_to?(:log_time, @projects),
Chris@441 52 :update => User.current.allowed_to?(:log_time, @projects),
Chris@441 53 :delete => User.current.allowed_to?(:log_time, @projects)
Chris@441 54 }
Chris@441 55 @back = back_url
Chris@441 56 render :layout => false
Chris@441 57 end
Chris@14 58 end