summaryrefslogtreecommitdiffstats
path: root/app/controllers/versions_controller.rb
diff options
context:
space:
mode:
authorEric Davis <edavis@littlestreamsoftware.com>2010-08-30 15:30:28 +0000
committerEric Davis <edavis@littlestreamsoftware.com>2010-08-30 15:30:28 +0000
commita188abbe2813372d426afd2ab05841f0503f00c1 (patch)
tree6b5dc8168550f5b02a0a65d565c56bd1bae2f283 /app/controllers/versions_controller.rb
parent1ebb0d9caec7cdc8d07c53d4d2fff416e41408aa (diff)
downloadredmine-a188abbe2813372d426afd2ab05841f0503f00c1.tar.gz
redmine-a188abbe2813372d426afd2ab05841f0503f00c1.zip
Refactor: move method, ProjectsController#roadmap to VersionsController#index.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@4050 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'app/controllers/versions_controller.rb')
-rw-r--r--app/controllers/versions_controller.rb39
1 files changed, 36 insertions, 3 deletions
diff --git a/app/controllers/versions_controller.rb b/app/controllers/versions_controller.rb
index 46b4778d4..dd01da95b 100644
--- a/app/controllers/versions_controller.rb
+++ b/app/controllers/versions_controller.rb
@@ -18,13 +18,37 @@
class VersionsController < ApplicationController
menu_item :roadmap
model_object Version
- before_filter :find_model_object, :except => [:new, :close_completed]
- before_filter :find_project_from_association, :except => [:new, :close_completed]
- before_filter :find_project, :only => [:new, :close_completed]
+ before_filter :find_model_object, :except => [:index, :new, :close_completed]
+ before_filter :find_project_from_association, :except => [:index, :new, :close_completed]
+ before_filter :find_project, :only => [:index, :new, :close_completed]
before_filter :authorize
helper :custom_fields
helper :projects
+
+ def index
+ @trackers = @project.trackers.find(:all, :order => 'position')
+ retrieve_selected_tracker_ids(@trackers, @trackers.select {|t| t.is_in_roadmap?})
+ @with_subprojects = params[:with_subprojects].nil? ? Setting.display_subprojects_issues? : (params[:with_subprojects] == '1')
+ project_ids = @with_subprojects ? @project.self_and_descendants.collect(&:id) : [@project.id]
+
+ @versions = @project.shared_versions || []
+ @versions += @project.rolled_up_versions.visible if @with_subprojects
+ @versions = @versions.uniq.sort
+ @versions.reject! {|version| version.closed? || version.completed? } unless params[:completed]
+
+ @issues_by_version = {}
+ unless @selected_tracker_ids.empty?
+ @versions.each do |version|
+ issues = version.fixed_issues.visible.find(:all,
+ :include => [:project, :status, :tracker, :priority],
+ :conditions => {:tracker_id => @selected_tracker_ids, :project_id => project_ids},
+ :order => "#{Project.table_name}.lft, #{Tracker.table_name}.position, #{Issue.table_name}.id")
+ @issues_by_version[version] = issues
+ end
+ end
+ @versions.reject! {|version| !project_ids.include?(version.project_id) && @issues_by_version[version].blank?}
+ end
def show
@issues = @version.fixed_issues.visible.find(:all,
@@ -105,4 +129,13 @@ private
rescue ActiveRecord::RecordNotFound
render_404
end
+
+ def retrieve_selected_tracker_ids(selectable_trackers, default_trackers=nil)
+ if ids = params[:tracker_ids]
+ @selected_tracker_ids = (ids.is_a? Array) ? ids.collect { |id| id.to_i.to_s } : ids.split('/').collect { |id| id.to_i.to_s }
+ else
+ @selected_tracker_ids = (default_trackers || selectable_trackers).collect {|t| t.id.to_s }
+ end
+ end
+
end