comparison app/controllers/projects_controller.rb @ 205:05f9a2a9c753 bug_67

Projects page: Sort and paginate table on the basis of root projects only; recurse to children (if any) after each root project is rendered. Fixes #67
author Chris Cannam <chris.cannam@soundsoftware.ac.uk>
date Tue, 08 Feb 2011 12:16:25 +0000
parents 1890a968b404
children 73ff0e6a11b1 ab672e427b9b
comparison
equal deleted inserted replaced
197:5da98461a9f6 205:05f9a2a9c753
44 include QueriesHelper 44 include QueriesHelper
45 helper :repositories 45 helper :repositories
46 include RepositoriesHelper 46 include RepositoriesHelper
47 include ProjectsHelper 47 include ProjectsHelper
48 48
49 # Lists visible projects 49 # Lists visible projects. Paginator is for top-level projects only
50 # (subprojects belong to them)
50 def index 51 def index
51 respond_to do |format| 52 respond_to do |format|
52 format.html { 53 format.html {
53 sort_init 'lft' 54 sort_init 'name'
54 sort_update %w(lft title created_on updated_on) 55 sort_update %w(name lft created_on updated_on)
55 @limit = per_page_option 56 @limit = per_page_option
56 @project_count = Project.visible.count 57 @project_count = Project.visible_roots.count
57 @project_pages = Paginator.new self, @project_count, @limit, params['page'] 58 @project_pages = Paginator.new self, @project_count, @limit, params['page']
58 @offset ||= @project_pages.current.offset 59 @offset ||= @project_pages.current.offset
59 @projects = Project.visible.all(:offset => @offset, :limit => @limit, :order => sort_clause) 60 @projects = Project.visible_roots.all(:offset => @offset, :limit => @limit, :order => sort_clause)
60 if User.current.logged? 61 if User.current.logged?
61 @user_projects = User.current.projects.sort_by(&:lft) 62 @user_projects = User.current.projects.sort_by(&:name)
62 end 63 end
63 render :template => 'projects/index.rhtml', :layout => !request.xhr? 64 render :template => 'projects/index.rhtml', :layout => !request.xhr?
64 } 65 }
65 format.xml { 66 format.xml {
66 @projects = Project.visible.find(:all, :order => 'lft') 67 @projects = Project.visible.find(:all, :order => 'lft')