diff options
Diffstat (limited to 'modules/book/book.module')
-rw-r--r-- | modules/book/book.module | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/modules/book/book.module b/modules/book/book.module index 61061f011..20ce4fc86 100644 --- a/modules/book/book.module +++ b/modules/book/book.module @@ -213,7 +213,17 @@ function _book_outline_access($node) { * @see book_menu() */ function _book_outline_remove_access($node) { - return isset($node->book) && ($node->book['bid'] != $node->nid) && _book_outline_access($node); + return _book_node_is_removable($node) && _book_outline_access($node); +} + +/** + * Determines if a node can be removed from the book. + * + * A node can be removed from a book if it is actually in a book and it either + * is not a top-level page or is a top-level page with no children. + */ +function _book_node_is_removable($node) { + return (!empty($node->book['bid']) && (($node->book['bid'] != $node->nid) || !$node->book['has_children'])); } /** |