From 058e4db223153bbf0a0abbfae8ab804a79b7105b Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Sat, 20 Dec 2008 12:22:38 +0000 Subject: [PATCH] Use acts_as_nested_set instead of acts_as_tree for project hierarchy. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/branches/work@2149 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- .../app/controllers/projects_controller.rb | 3 +- nested_projects/app/models/project.rb | 2 +- .../app/views/layouts/_project_selector.rhtml | 2 +- .../migrate/102_add_projects_lft_and_rgt.rb | 11 + .../db/migrate/103_build_projects_tree.rb | 8 + nested_projects/test/fixtures/projects.yml | 12 +- .../plugins/awesome_nested_set/MIT-LICENSE | 20 + .../plugins/awesome_nested_set/README.rdoc | 64 ++ .../plugins/awesome_nested_set/Rakefile | 46 ++ .../awesome_nested_set.gemspec | 20 + .../vendor/plugins/awesome_nested_set/init.rb | 1 + .../lib/awesome_nested_set.rb | 546 ++++++++++++++++ .../lib/awesome_nested_set/compatability.rb | 29 + .../lib/awesome_nested_set/helper.rb | 40 ++ .../lib/awesome_nested_set/named_scope.rb | 140 ++++ .../plugins/awesome_nested_set/rails/init.rb | 13 + .../test/awesome_nested_set/helper_test.rb | 41 ++ .../test/awesome_nested_set_test.rb | 603 ++++++++++++++++++ .../awesome_nested_set/test/db/database.yml | 18 + .../awesome_nested_set/test/db/schema.rb | 23 + .../test/fixtures/categories.yml | 34 + .../test/fixtures/category.rb | 15 + .../test/fixtures/departments.yml | 3 + .../test/fixtures/notes.yml | 38 ++ .../awesome_nested_set/test/test_helper.rb | 31 + 25 files changed, 1758 insertions(+), 5 deletions(-) create mode 100644 nested_projects/db/migrate/102_add_projects_lft_and_rgt.rb create mode 100644 nested_projects/db/migrate/103_build_projects_tree.rb create mode 100644 nested_projects/vendor/plugins/awesome_nested_set/MIT-LICENSE create mode 100644 nested_projects/vendor/plugins/awesome_nested_set/README.rdoc create mode 100644 nested_projects/vendor/plugins/awesome_nested_set/Rakefile create mode 100644 nested_projects/vendor/plugins/awesome_nested_set/awesome_nested_set.gemspec create mode 100644 nested_projects/vendor/plugins/awesome_nested_set/init.rb create mode 100644 nested_projects/vendor/plugins/awesome_nested_set/lib/awesome_nested_set.rb create mode 100644 nested_projects/vendor/plugins/awesome_nested_set/lib/awesome_nested_set/compatability.rb create mode 100644 nested_projects/vendor/plugins/awesome_nested_set/lib/awesome_nested_set/helper.rb create mode 100644 nested_projects/vendor/plugins/awesome_nested_set/lib/awesome_nested_set/named_scope.rb create mode 100644 nested_projects/vendor/plugins/awesome_nested_set/rails/init.rb create mode 100644 nested_projects/vendor/plugins/awesome_nested_set/test/awesome_nested_set/helper_test.rb create mode 100644 nested_projects/vendor/plugins/awesome_nested_set/test/awesome_nested_set_test.rb create mode 100644 nested_projects/vendor/plugins/awesome_nested_set/test/db/database.yml create mode 100644 nested_projects/vendor/plugins/awesome_nested_set/test/db/schema.rb create mode 100644 nested_projects/vendor/plugins/awesome_nested_set/test/fixtures/categories.yml create mode 100644 nested_projects/vendor/plugins/awesome_nested_set/test/fixtures/category.rb create mode 100644 nested_projects/vendor/plugins/awesome_nested_set/test/fixtures/departments.yml create mode 100644 nested_projects/vendor/plugins/awesome_nested_set/test/fixtures/notes.yml create mode 100644 nested_projects/vendor/plugins/awesome_nested_set/test/test_helper.rb diff --git a/nested_projects/app/controllers/projects_controller.rb b/nested_projects/app/controllers/projects_controller.rb index a6016bc22..baefdef89 100644 --- a/nested_projects/app/controllers/projects_controller.rb +++ b/nested_projects/app/controllers/projects_controller.rb @@ -46,8 +46,7 @@ class ProjectsController < ApplicationController # Lists visible projects def index projects = Project.find :all, - :conditions => Project.visible_by(User.current), - :include => :parent + :conditions => Project.visible_by(User.current) respond_to do |format| format.html { @project_tree = projects.group_by {|p| p.parent || p} diff --git a/nested_projects/app/models/project.rb b/nested_projects/app/models/project.rb index e8d3ed179..11a4a2a33 100644 --- a/nested_projects/app/models/project.rb +++ b/nested_projects/app/models/project.rb @@ -43,7 +43,7 @@ class Project < ActiveRecord::Base :join_table => "#{table_name_prefix}custom_fields_projects#{table_name_suffix}", :association_foreign_key => 'custom_field_id' - acts_as_tree :order => "name", :counter_cache => true + acts_as_nested_set :dependent => :nullify acts_as_attachable :view_permission => :view_files, :delete_permission => :manage_files diff --git a/nested_projects/app/views/layouts/_project_selector.rhtml b/nested_projects/app/views/layouts/_project_selector.rhtml index 7a2803534..cffc85f7e 100644 --- a/nested_projects/app/views/layouts/_project_selector.rhtml +++ b/nested_projects/app/views/layouts/_project_selector.rhtml @@ -1,4 +1,4 @@ -<% user_projects_by_root = User.current.projects.find(:all, :include => :parent).group_by(&:root) %> +<% user_projects_by_root = User.current.projects.find(:all).group_by(&:root) %>