module TaggableHelper def available_pointer_pages() root = Page.respond_to?(:homepage) ? Page.homepage : Page.find_by_parent_id(nil) options = pointer_option_branch(root) options.unshift ['<none>', nil] options end def pointer_option_branch(page, depth=0) options = [] unless page.virtual? || page.sheet? || page.has_pointer? options << ["#{". " * depth}#{h(page.title)}", page.id] page.children.each do |child| options += pointer_option_branch(child, depth + 1) end end options end end