function pagepreview_deliver_page in Page Preview 7
Menu callback for "pagepreview/%".
Directly prints a rendered page based on the cached temporary node.
Parameters
string $preview_id: The cache key for the object to be retrieved.
1 string reference to 'pagepreview_deliver_page'
- pagepreview_menu in ./
pagepreview.module - Implements hook_menu().
File
- ./
pagepreview.module, line 70 - An alternative node previewing system for the node add/edit form.
Code
function pagepreview_deliver_page($preview_id) {
// Get the cached temporary node.
$node = pagepreview_cache_get($preview_id);
// If we don't have a valid node for whatever reason, quit here.
if (!$node) {
drupal_exit();
}
// Change the preview's page title.
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['alias'])) {
$_GET['q'] = trim($node->path['alias'], '/');
}
// Allow other modules to alter the node or execute code before building the
// preview.
drupal_alter('pagepreview_node', $node);
$preview = pagepreview_build_preview($node);
// Switch to the anonymous user for page rendering.
// TODO: make this configurable.
global $user;
drupal_save_session(FALSE);
$user = user_load(0);
// Suppress fancy stuff like admin and admin_menu.module for the preview.
module_invoke_all('suppress');
// Add JS within the preview to prevent clicking through to links.
drupal_add_js(drupal_get_path('module', 'pagepreview') . '/pagepreview.preview.js');
// Deliver the page output.
drupal_deliver_page($preview);
// Remove the cached preview.
cache_clear_all($preview_id, 'cache_pagepreview');
}