You are here

function pagepreview_render_preview in Page Preview 6

Replacement function for node_preview().

Instead of calling theme('node_preview') to get the node output, we call node_view directly.

See also

theme_node_preview()

1 call to pagepreview_render_preview()
pagepreview_get_preview in ./pagepreview.module
Menu callback for "pagepreview/%".

File

./pagepreview.module, line 150
An alternative node previewing system for the node add/edit form.

Code

function pagepreview_render_preview($node) {
  if (node_access('create', $node) || node_access('update', $node)) {

    // Load the user's name when needed.
    if (isset($node->name)) {

      // The use of isset() is mandatory in the context of user IDs, because
      // user ID 0 denotes the anonymous user.
      if ($user = user_load(array(
        'name' => $node->name,
      ))) {
        $node->uid = $user->uid;
        $node->picture = $user->picture;
      }
      else {
        $node->uid = 0;

        // anonymous user
      }
    }
    elseif ($node->uid) {
      $user = user_load(array(
        'uid' => $node->uid,
      ));
      $node->name = $user->name;
      $node->picture = $user->picture;
    }
    $node->changed = time();

    // Display a preview of the node.
    // Previewing alters $node so it needs to be cloned.
    if (!form_get_errors()) {
      $cloned_node = drupal_clone($node);
      $cloned_node->build_mode = NODE_BUILD_PREVIEW;

      // If enabled, allow page_manager.module to handle node rendering.
      if (module_exists('page_manager')) {
        module_load_include('inc', 'page_manager', 'plugins/tasks/node_view');
        $output = page_manager_node_view($cloned_node);
      }
      else {
        $output = node_view($cloned_node, 0, 1, 1);
      }
    }
    return $output;
  }
}