default_status = IssueStatus.default
@issue = Issue.new(:project => @project, :tracker => @tracker)
@issue.status = default_status
- @allowed_statuses = (default_status.find_new_statuses_allowed_to(logged_in_user.role_for_project(@project), @issue.tracker) || [default_status])if logged_in_user
+ @allowed_statuses = ([default_status] + default_status.find_new_statuses_allowed_to(logged_in_user.role_for_project(@project), @issue.tracker))if logged_in_user
if request.get?
@issue.start_date = Date.today
@custom_values = @project.custom_fields_for_issues(@tracker).collect { |x| CustomValue.new(:custom_field => x, :customized => @issue) }
# Uses association cache when called more than one time
def new_statuses_allowed_to(role, tracker)
new_statuses = workflows.select {|w| w.role_id == role.id && w.tracker_id == tracker.id}.collect{|w| w.new_status} if role && tracker
- new_statuses.sort{|x, y| x.position <=> y.position } if new_statuses
+ new_statuses ? new_statuses.sort{|x, y| x.position <=> y.position } : []
end
# Same thing as above but uses a database query
new_statuses = workflows.find(:all,
:include => :new_status,
:conditions => ["role_id=? and tracker_id=?", role.id, tracker.id]).collect{ |w| w.new_status } if role && tracker
- new_statuses.sort{|x, y| x.position <=> y.position } if new_statuses
+ new_statuses ? new_statuses.sort{|x, y| x.position <=> y.position } : []
end
private