All pastes #156481 Raw Edit

Stuff

public text v1 · immutable
#156481 ·published 2006-08-31 19:50 UTC
rendered paste body
   def generate_menu(name, path)
        @menu = Menu.find(:first)
        if @menu.nil?
            @menu = Menu.new
            @menu.path = path
            @menu.name = name
        end
         delete_obsolete(@menu)
        recurse_directory(path, @menu)
        if @menu.save!
            return @menu
        else
            flash['notice'] = "Menu Generation Failed"
        end
    end
   
    def recurse_directory(cur_path, object)
        for new_path in cur_path.children
            if new_path.directory?
#             Read in information about the directory
                dir = Directory.new
                dir.name = new_path.basename.to_s
                dir.path = new_path.to_s
#                 Does this directory already exist in our database?
                 old_object = object.directories.find_by_path(dir.path)
                 if old_object.nil?
#                  If not, add it as a child object of its directory / menu
                    object.directories << dir
                     old_object = nil
                 end
#                  The directory has been read and is added, now we need to add its contents.
                recurse_directory(new_path, dir)
            else
#             Read in information about the file
                file = MenuObject.new
                file.extension = File.extname(new_path)
                file.name = File.basename(new_path, file.extension)
                file.path = new_path.to_s
#                 Does this file already exist in our database?
                old_object = object.menu_objects.find_by_path(file.path)
                if old_object.nil?
#                 If not, add it as a child object of its directory / menu.
                    object.menu_objects << file
                    old_object = nil
                end
            end
        end
    end