diff --git a/modules/book.module b/modules/book.module index bdd28415b54c75f874691f8b311e931c576203d5..fca2c28a3814919388178eba28c2c0be2fa225d4 100644 --- a/modules/book.module +++ b/modules/book.module @@ -247,13 +247,18 @@ function book_validate($node) { * Implementation of hook_form(). */ function book_form(&$node) { - $form['parent'] = array('#type' => 'select', - '#title' => t('Parent'), - '#default_value' => ($node->parent ? $node->parent : arg(4)), - '#options' => book_toc($node->nid, $node->parent), - '#weight' => -4, - '#description' => user_access('create new books') ? t('The parent section in which to place this page. Note that each page whose parent is <top-level> is an independent, top-level book.') : t('The parent that this page belongs in.'), - ); + if ($node->nid && !$node->parent && !user_access('create new books')) { + $form['parent'] = array('#type' => 'value', $node->parent); + } + else { + $form['parent'] = array('#type' => 'select', + '#title' => t('Parent'), + '#default_value' => ($node->parent ? $node->parent : arg(4)), + '#options' => book_toc($node->nid), + '#weight' => -4, + '#description' => user_access('create new books') ? t('The parent section in which to place this page. Note that each page whose parent is <top-level> is an independent, top-level book.') : t('The parent that this page belongs in.'), + ); + } $form['title'] = array('#type' => 'textfield', '#title' => t('Title'), @@ -306,7 +311,7 @@ function book_outline($nid) { $form['parent'] = array('#type' => 'select', '#title' => t('Parent'), '#default_value' => $page->parent, - '#options' => book_toc($node->nid, $page->parent), + '#options' => book_toc($node->nid), '#description' => t('The parent page in the book.'), ); $form['weight'] = array('#type' => 'weight', @@ -557,7 +562,7 @@ function book_toc_recurse($nid, $indent, $toc, $children, $exclude) { /** * Returns an array of titles and nid entries of book pages in table of contents order. */ -function book_toc($exclude, $parent) { +function book_toc($exclude = 0) { $result = db_query(db_rewrite_sql('SELECT n.nid, n.title, b.parent, b.weight FROM {node} n INNER JOIN {book} b ON n.vid = b.vid WHERE n.status = 1 ORDER BY b.weight, n.title')); while ($node = db_fetch_object($result)) { @@ -569,7 +574,7 @@ function book_toc($exclude, $parent) { $toc = array(); // If the user has permission to create new books, add the top-level book page to the menu; - if (user_access('create new books') || ($exclude && !$parent)) { + if (user_access('create new books')) { $toc[0] = '<'. t('top-level') .'>'; } diff --git a/modules/book/book.module b/modules/book/book.module index bdd28415b54c75f874691f8b311e931c576203d5..fca2c28a3814919388178eba28c2c0be2fa225d4 100644 --- a/modules/book/book.module +++ b/modules/book/book.module @@ -247,13 +247,18 @@ function book_validate($node) { * Implementation of hook_form(). */ function book_form(&$node) { - $form['parent'] = array('#type' => 'select', - '#title' => t('Parent'), - '#default_value' => ($node->parent ? $node->parent : arg(4)), - '#options' => book_toc($node->nid, $node->parent), - '#weight' => -4, - '#description' => user_access('create new books') ? t('The parent section in which to place this page. Note that each page whose parent is <top-level> is an independent, top-level book.') : t('The parent that this page belongs in.'), - ); + if ($node->nid && !$node->parent && !user_access('create new books')) { + $form['parent'] = array('#type' => 'value', $node->parent); + } + else { + $form['parent'] = array('#type' => 'select', + '#title' => t('Parent'), + '#default_value' => ($node->parent ? $node->parent : arg(4)), + '#options' => book_toc($node->nid), + '#weight' => -4, + '#description' => user_access('create new books') ? t('The parent section in which to place this page. Note that each page whose parent is <top-level> is an independent, top-level book.') : t('The parent that this page belongs in.'), + ); + } $form['title'] = array('#type' => 'textfield', '#title' => t('Title'), @@ -306,7 +311,7 @@ function book_outline($nid) { $form['parent'] = array('#type' => 'select', '#title' => t('Parent'), '#default_value' => $page->parent, - '#options' => book_toc($node->nid, $page->parent), + '#options' => book_toc($node->nid), '#description' => t('The parent page in the book.'), ); $form['weight'] = array('#type' => 'weight', @@ -557,7 +562,7 @@ function book_toc_recurse($nid, $indent, $toc, $children, $exclude) { /** * Returns an array of titles and nid entries of book pages in table of contents order. */ -function book_toc($exclude, $parent) { +function book_toc($exclude = 0) { $result = db_query(db_rewrite_sql('SELECT n.nid, n.title, b.parent, b.weight FROM {node} n INNER JOIN {book} b ON n.vid = b.vid WHERE n.status = 1 ORDER BY b.weight, n.title')); while ($node = db_fetch_object($result)) { @@ -569,7 +574,7 @@ function book_toc($exclude, $parent) { $toc = array(); // If the user has permission to create new books, add the top-level book page to the menu; - if (user_access('create new books') || ($exclude && !$parent)) { + if (user_access('create new books')) { $toc[0] = '<'. t('top-level') .'>'; }