function book_admin_edit_submit in Drupal 6
Same name and namespace in other branches
- 4 modules/book.module \book_admin_edit_submit()
- 5 modules/book/book.module \book_admin_edit_submit()
- 7 modules/book/book.admin.inc \book_admin_edit_submit()
Handle submission of the book administrative page form.
This function takes care to save parent menu items before their children. Saving menu items in the incorrect order can break the menu tree.
See also
File
- modules/
book/ book.admin.inc, line 103 - Admin page callbacks for the book module.
Code
function book_admin_edit_submit($form, &$form_state) {
// Save elements in the same order as defined in post rather than the form.
// This ensures parents are updated before their children, preventing orphans.
$order = array_flip(array_keys($form['#post']['table']));
$form['table'] = array_merge($order, $form['table']);
foreach (element_children($form['table']) as $key) {
if ($form['table'][$key]['#item']) {
$row = $form['table'][$key];
$values = $form_state['values']['table'][$key];
// Update menu item if moved.
if ($row['plid']['#default_value'] != $values['plid'] || $row['weight']['#default_value'] != $values['weight']) {
$row['#item']['plid'] = $values['plid'];
$row['#item']['weight'] = $values['weight'];
menu_link_save($row['#item']);
}
// Update the title if changed.
if ($row['title']['#default_value'] != $values['title']) {
$node = node_load($values['nid'], FALSE);
$node->title = $values['title'];
$node->book['link_title'] = $values['title'];
$node->revision = 1;
$node->log = t('Title changed from %original to %current.', array(
'%original' => $node->title,
'%current' => $values['title'],
));
node_save($node);
watchdog('content', 'book: updated %title.', array(
'%title' => $node->title,
), WATCHDOG_NOTICE, l(t('view'), 'node/' . $node->nid));
}
}
}
drupal_set_message(t('Updated book %title.', array(
'%title' => $form['#node']->title,
)));
}