Issue #589440 by Boobaa, JanZ, pwolanin, mlncn, TomiMikola, willmoy, marcp et all: Fixed Reordering fails with more than 31 book pages in a book.
parent
4060b5cf74
commit
fd5d91d0ce
|
@ -174,10 +174,6 @@ function _book_admin_table($node, &$form) {
|
||||||
* @see book_admin_edit()
|
* @see book_admin_edit()
|
||||||
*/
|
*/
|
||||||
function _book_admin_table_tree($tree, &$form) {
|
function _book_admin_table_tree($tree, &$form) {
|
||||||
// The delta must be big enough to give each node a distinct value.
|
|
||||||
$count = count($tree);
|
|
||||||
$delta = ($count < 30) ? 15 : intval($count / 2) + 1;
|
|
||||||
|
|
||||||
foreach ($tree as $data) {
|
foreach ($tree as $data) {
|
||||||
$form['book-admin-' . $data['link']['nid']] = array(
|
$form['book-admin-' . $data['link']['nid']] = array(
|
||||||
'#item' => $data['link'],
|
'#item' => $data['link'],
|
||||||
|
@ -191,9 +187,12 @@ function _book_admin_table_tree($tree, &$form) {
|
||||||
'#size' => 40,
|
'#size' => 40,
|
||||||
),
|
),
|
||||||
'weight' => array(
|
'weight' => array(
|
||||||
'#type' => 'weight',
|
// Using a textfield and a validator instead of a simple weight select
|
||||||
|
// to avoid unnecessarily oversized HTML for books with hundreds of
|
||||||
|
// pages.
|
||||||
|
'#type' => 'textfield',
|
||||||
|
'#element_validate' => array('element_validate_integer'),
|
||||||
'#default_value' => $data['link']['weight'],
|
'#default_value' => $data['link']['weight'],
|
||||||
'#delta' => max($delta, abs($data['link']['weight'])),
|
|
||||||
'#title' => t('Weight for @title', array('@title' => $data['link']['title'])),
|
'#title' => t('Weight for @title', array('@title' => $data['link']['title'])),
|
||||||
'#title_display' => 'invisible',
|
'#title_display' => 'invisible',
|
||||||
),
|
),
|
||||||
|
|
|
@ -512,10 +512,12 @@ function _book_add_form_elements(&$form, &$form_state, $node) {
|
||||||
|
|
||||||
// @see _book_admin_table_tree(). The weight may be larger than 15.
|
// @see _book_admin_table_tree(). The weight may be larger than 15.
|
||||||
$form['book']['weight'] = array(
|
$form['book']['weight'] = array(
|
||||||
'#type' => 'weight',
|
// Using a textfield and a validator instead of a simple weight select to
|
||||||
|
// avoid unnecessarily oversized HTML for books with hundreds of pages.
|
||||||
|
'#type' => 'textfield',
|
||||||
|
'#element_validate' => array('element_validate_integer'),
|
||||||
'#title' => t('Weight'),
|
'#title' => t('Weight'),
|
||||||
'#default_value' => $node->book['weight'],
|
'#default_value' => $node->book['weight'],
|
||||||
'#delta' => max(15, abs($node->book['weight'])),
|
|
||||||
'#weight' => 5,
|
'#weight' => 5,
|
||||||
'#description' => t('Pages at a given level are ordered first by weight and then by title.'),
|
'#description' => t('Pages at a given level are ordered first by weight and then by title.'),
|
||||||
);
|
);
|
||||||
|
|
Loading…
Reference in New Issue