Same name and namespace in other branches
  1. 10 core/modules/book/book.module \book_form_update()
  2. 7.x modules/book/book.module \book_form_update()
  3. 8.9.x core/modules/book/book.module \book_form_update()
  4. 9 core/modules/book/book.module \book_form_update()

Renders a new parent page select element when the book selection changes.

This function is called via AJAX when the selected book is changed on a node or book outline form. It creates a new parent page select element, adds it to the cached form, and then returns the rendered element so it can be displayed on the form.

Return value

The rendered parent page select element.

1 string reference to 'book_form_update'
book_menu in modules/book/book.module
Implementation of hook_menu().

File

modules/book/book.pages.inc, line 239
User page callbacks for the book module.

Code

function book_form_update() {
  $bid = $_POST['book']['bid'];
  if ($form = form_get_cache($_POST['form_build_id'], $form_state)) {

    // Validate the bid.
    if (isset($form['book']['bid']['#options'][$bid])) {
      $book_link = $form['#node']->book;
      $book_link['bid'] = $bid;

      // Get the new options and update the cache.
      $form['book']['plid'] = _book_parent_select($book_link);
      form_set_cache($_POST['form_build_id'], $form, $form_state);

      // Build and render the new select element, then return it in JSON format.
      $form_state = array();
      $form['#post'] = array();
      $form = form_builder($form['form_id']['#value'], $form, $form_state);
      $output = drupal_render($form['book']['plid']);
      drupal_json(array(
        'status' => TRUE,
        'data' => $output,
      ));
    }
    else {
      drupal_json(array(
        'status' => FALSE,
        'data' => '',
      ));
    }
  }
  else {
    drupal_json(array(
      'status' => FALSE,
      'data' => '',
    ));
  }
  exit;
}