? book-589440-D6.patch Index: modules/book/book.admin.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/book/book.admin.inc,v retrieving revision 1.8.2.3 diff -u -p -r1.8.2.3 book.admin.inc --- modules/book/book.admin.inc 22 Oct 2008 19:26:01 -0000 1.8.2.3 +++ modules/book/book.admin.inc 11 Feb 2010 00:37:12 -0000 @@ -160,7 +160,12 @@ function _book_admin_table($node, &$form '#type' => 'value', '#value' => $hash, ); - _book_admin_table_tree($tree['below'], $form['table']); + // Delta must be an integer > half the number of nodes in the book. + $delta = ceil(count($tree['below']) / 2) + 1; + if ($delta < 15) { + $delta = 15; + } + _book_admin_table_tree($tree['below'], $form['table'], $delta); } } @@ -169,7 +174,7 @@ function _book_admin_table($node, &$form * * @see book_admin_edit() */ -function _book_admin_table_tree($tree, &$form) { +function _book_admin_table_tree($tree, &$form, $delta) { foreach ($tree as $data) { $form['book-admin-'. $data['link']['nid']] = array( '#item' => $data['link'], @@ -185,7 +190,7 @@ function _book_admin_table_tree($tree, & 'weight' => array( '#type' => 'weight', '#default_value' => $data['link']['weight'], - '#delta' => 15, + '#delta' => $delta, ), 'plid' => array( '#type' => 'textfield', @@ -198,7 +203,7 @@ function _book_admin_table_tree($tree, & ), ); if ($data['below']) { - _book_admin_table_tree($data['below'], $form); + _book_admin_table_tree($data['below'], $form, $delta); } } Index: modules/book/book.module =================================================================== RCS file: /cvs/drupal/drupal/modules/book/book.module,v retrieving revision 1.454.2.6 diff -u -p -r1.454.2.6 book.module --- modules/book/book.module 25 Feb 2009 11:47:37 -0000 1.454.2.6 +++ modules/book/book.module 11 Feb 2010 00:37:12 -0000 @@ -381,12 +381,17 @@ function _book_add_form_elements(&$form, } $form['book']['plid'] = _book_parent_select($node->book); + // Delta must be an integer > half the number of nodes in the book. + $delta = ceil(db_result(db_query('SELECT COUNT(nid) - 1 FROM {book} WHERE bid = %d', $node->book['bid'])) / 2) + 1; + if ($delta < 15) { + $delta = 15; + } $form['book']['weight'] = array( '#type' => 'weight', '#title' => t('Weight'), '#default_value' => $node->book['weight'], - '#delta' => 15, + '#delta' => $delta, '#weight' => 5, '#description' => t('Pages at a given level are ordered first by weight and then by title.'), );