Browse Source

Use #reduce instead of #inject for getting the intersection of arrays.

git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@8827 e93f8b46-1217-0410-a6f0-8f06a7374b81
tags/1.4.0
Jean-Philippe Lang 12 years ago
parent
commit
8c38510ee5

+ 4
- 4
app/controllers/context_menus_controller.rb View File

@@ -8,7 +8,7 @@ class ContextMenusController < ApplicationController
@issue = @issues.first
end

@allowed_statuses = @issues.map(&:new_statuses_allowed_to).inject{|memo,a| memo & a}
@allowed_statuses = @issues.map(&:new_statuses_allowed_to).reduce(:&)
@projects = @issues.collect(&:project).compact.uniq
@project = @projects.first if @projects.size == 1

@@ -28,8 +28,8 @@ class ContextMenusController < ApplicationController
@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}
@assignables = @projects.map(&:assignable_users).reduce(:&)
@trackers = @projects.map(&:trackers).reduce(:&)
end

@priorities = IssuePriority.active.reverse
@@ -37,7 +37,7 @@ class ContextMenusController < ApplicationController

@options_by_custom_field = {}
if @can[:edit]
custom_fields = @issues.map(&:available_custom_fields).inject {|memo, f| memo & f}.select do |f|
custom_fields = @issues.map(&:available_custom_fields).reduce(:&).select do |f|
%w(bool list user version).include?(f.field_format) && !f.multiple?
end
custom_fields.each do |field|

+ 5
- 5
app/controllers/issues_controller.rb View File

@@ -229,12 +229,12 @@ class IssuesController < ApplicationController
end
target_projects ||= @projects

@available_statuses = target_projects.map{|p|Workflow.available_statuses(p)}.inject{|memo,w|memo & w}
@custom_fields = target_projects.map{|p|p.all_issue_custom_fields}.inject{|memo,c|memo & c}
@assignables = target_projects.map(&:assignable_users).inject{|memo,a| memo & a}
@trackers = target_projects.map(&:trackers).inject{|memo,t| memo & t}
@available_statuses = target_projects.map{|p|Workflow.available_statuses(p)}.reduce(:&)
@custom_fields = target_projects.map{|p|p.all_issue_custom_fields}.reduce(:&)
@assignables = target_projects.map(&:assignable_users).reduce(:&)
@trackers = target_projects.map(&:trackers).reduce(:&)

@safe_attributes = @issues.map(&:safe_attribute_names).inject {|memo,attrs| memo & attrs}
@safe_attributes = @issues.map(&:safe_attribute_names).reduce(:&)
render :layout => false if request.xhr?
end


+ 1
- 1
app/models/custom_field.rb View File

@@ -73,7 +73,7 @@ class CustomField < ActiveRecord::Base
obj.project.shared_versions.sort.collect {|u| [u.to_s, u.id.to_s]}
end
elsif obj.is_a?(Array)
obj.collect {|o| possible_values_options(o)}.inject {|memo, v| memo & v}
obj.collect {|o| possible_values_options(o)}.reduce(:&)
else
[]
end

Loading…
Cancel
Save