function book_node_prepare_form

book_node_prepare_form(NodeInterface $node, $operation, FormStateInterface $form_state)

Implements hook_ENTITY_TYPE_prepare_form() for node entities.

File

core/modules/book/book.module, line 291
Allows users to create and organize related content in an outline.

Code

function book_node_prepare_form(NodeInterface $node, $operation, FormStateInterface $form_state) {
  /** @var \Drupal\book\BookManagerInterface $book_manager */
  $book_manager = \Drupal::service('book.manager');

  // Prepare defaults for the add/edit form.
  $account = \Drupal::currentUser();
  if (empty($node->book) && ($account->hasPermission('add content to books') || $account->hasPermission('administer book outlines'))) {
    $node->book = array();

    $query = \Drupal::request()->query;
    if ($node->isNew() && !is_null($query->get('parent')) && is_numeric($query->get('parent'))) {
      // Handle "Add child page" links:
      $parent = $book_manager->loadBookLink($query->get('parent'), TRUE);

      if ($parent && $parent['access']) {
        $node->book['bid'] = $parent['bid'];
        $node->book['pid'] = $parent['nid'];
      }
    }
    // Set defaults.
    $node_ref = !$node->isNew() ? $node->id() : 'new';
    $node->book += $book_manager->getLinkDefaults($node_ref);
  }
  else {
    if (isset($node->book['bid']) && !isset($node->book['original_bid'])) {
      $node->book['original_bid'] = $node->book['bid'];
    }
  }
  // Find the depth limit for the parent select.
  if (isset($node->book['bid']) && !isset($node->book['parent_depth_limit'])) {
    $node->book['parent_depth_limit'] = $book_manager->getParentDepthLimit($node->book);
  }
}

© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/core!modules!book!book.module/function/book_node_prepare_form/8.1.x