You are here

function pagepreview_get_preview in Page Preview 6

Menu callback for "pagepreview/%".

Directly prints a rendered page based on the cached temporary node.

Parameters

$token: The value of $form['#token']. This is generally the form ID.

1 string reference to 'pagepreview_get_preview'
pagepreview_menu in ./pagepreview.module
Implements hook_menu().

File

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

Code

function pagepreview_get_preview($token) {

  // Get the cached temporary node.
  $form_token = drupal_get_token($token);
  $cache = cache_get('pagepreview:' . $form_token, 'cache_page');
  $node = $cache->data;
  drupal_set_title($node->title);

  // Overrides $_GET['q'] so that other elements on the page can react to the
  // proper path context.
  if ($node->nid) {
    $_GET['q'] = 'node/' . $node->nid;
  }
  elseif (!empty($node->path)) {
    $_GET['q'] = trim($node->path, '/');
  }
  elseif (!empty($node->old_alias)) {
    $_GET['q'] = trim($node->old_alias, '/');
  }
  $preview = pagepreview_render_preview($node);

  // Switch to the anonymous user for page rendering.
  // TODO: make this configurable.
  global $user;
  $orig_user = $user;
  $user = user_load(0);

  // Suppress fancy stuff like admin and admin_menu.module for the preview.
  module_invoke_all('suppress');
  print theme('page', $preview);
  $user = $orig_user;
}