function book_node_prepare

Implements hook_node_prepare().

File

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

Code

function book_node_prepare(EntityInterface $node) {

  // Prepare defaults for the add/edit form.
  if (empty($node->book) && (user_access('add content to books') || user_access('administer book outlines'))) {
    $node->book = array();
    $query = \Drupal::request()->query;
    if (empty($node->nid) && !is_null($query
      ->get('parent')) && is_numeric($query
      ->get('parent'))) {

      // Handle "Add child page" links:
      $parent = book_link_load($query
        ->get('parent'));
      if ($parent && $parent['access']) {
        $node->book['bid'] = $parent['bid'];
        $node->book['plid'] = $parent['mlid'];
        $node->book['menu_name'] = $parent['menu_name'];
      }
    }

    // Set defaults.
    $node->book += _book_link_defaults(!empty($node->nid) ? $node->nid : 'new');
  }
  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_parent_depth_limit($node->book);
  }
}