function pagepreview_build_preview in Page Preview 7
Replacement function for node_preview().
Instead of calling theme('node_preview') to get the node output, we call node_view directly.
See also
1 call to pagepreview_build_preview()
- pagepreview_deliver_page in ./
pagepreview.module - Menu callback for "pagepreview/%".
File
- ./
pagepreview.module, line 138 - An alternative node previewing system for the node add/edit form.
Code
function pagepreview_build_preview($node) {
if (node_access('create', $node) || node_access('update', $node)) {
_field_invoke_multiple('load', 'node', array(
$node->nid => $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_by_name($node->name)) {
$node->uid = $user->uid;
$node->picture = $user->picture;
}
else {
$node->uid = 0;
// anonymous user
}
}
elseif ($node->uid) {
$user = user_load($node->uid);
$node->name = $user->name;
$node->picture = $user->picture;
}
$node->changed = REQUEST_TIME;
$nodes = array(
$node->nid => $node,
);
field_attach_prepare_view('node', $nodes, 'full');
// Display a preview of the node.
if (!form_get_errors()) {
$node->in_preview = TRUE;
// If enabled, allow page_manager.module to handle node rendering.
if (module_exists('page_manager')) {
// Load my task plugin
$task = page_manager_get_task('node_view');
// Load the node into a context.
ctools_include('context');
ctools_include('context-task-handler');
$contexts = ctools_context_handler_get_task_contexts($task, '', array(
$node,
));
$output = ctools_context_handler_render($task, '', $contexts, array(
$node->nid,
));
// Page manager is not handeling node_view
if ($output === FALSE) {
$output = node_view($node, 'full');
}
}
else {
$output = node_view($node, 'full');
}
unset($node->in_preview);
// Rather than the default t('Preview') allow user to see more acurate rendering
drupal_set_title($node->title);
}
return $output;
}
}