diff options
Diffstat (limited to 'modules/node')
-rw-r--r-- | modules/node/node.module | 53 | ||||
-rw-r--r-- | modules/node/node.pages.inc | 6 |
2 files changed, 35 insertions, 24 deletions
diff --git a/modules/node/node.module b/modules/node/node.module index 634da3987..27ff4be3f 100644 --- a/modules/node/node.module +++ b/modules/node/node.module @@ -138,6 +138,9 @@ function node_theme() { 'node_admin_overview' => array( 'arguments' => array('name' => NULL, 'type' => NULL), ), + 'node_links' => array( + 'arguments' => array('element' => NULL), + ), ); } @@ -1134,31 +1137,11 @@ function node_delete($nid) { * @return * An HTML representation of the themed node. */ -function node_view($node, $teaser = FALSE, $page = FALSE, $links = TRUE) { +function node_view($node, $teaser = FALSE, $page = FALSE) { $node = (object)$node; $node = node_build_content($node, $teaser, $page); - if ($links) { - $node->links = module_invoke_all('link', 'node', $node, $teaser); - drupal_alter('link', $node->links, $node); - } - - // Set the proper node part, then unset unused $node part so that a bad - // theme can not open a security hole. - $content = drupal_render($node->content); - if ($teaser) { - $node->teaser = $content; - unset($node->body); - } - else { - $node->body = $content; - unset($node->teaser); - } - - // Allow modules to modify the fully-built node. - node_invoke_nodeapi($node, 'alter', $teaser, $page); - return theme('node', $node, $teaser, $page); } @@ -1221,6 +1204,9 @@ function node_build_content($node, $teaser = FALSE, $page = FALSE) { // Allow modules to make their own additions to the node. node_invoke_nodeapi($node, 'view', $teaser, $page); + + // Allow modules to modify the structured node. + drupal_alter('node_view', $node, $teaser, $page); return $node; } @@ -1232,6 +1218,7 @@ function node_show($node, $cid, $message = FALSE) { if ($message) { drupal_set_title(t('Revision of %title from %date', array('%title' => $node->title, '%date' => format_date($node->revision_timestamp))), PASS_THROUGH); } + $output = node_view($node, FALSE, TRUE); if (function_exists('comment_render') && $node->comment) { @@ -3000,3 +2987,27 @@ function node_list_permissions($type) { return $perms; } + +/** + * Implementation of hook_elements(). + */ +function node_elements() { + $type['node_links'] = array(); + + return $type; +} + +/** + * Format a set of node links. + * + * @param $element + * An associative array containing the properties of the element. + * Properties used: value + * @return + * A themed HTML string representing the links. + * + * @ingroup themeable + */ +function theme_node_links($element) { + return theme('links', $element['#value'], array('class' => 'links inline')); +}
\ No newline at end of file diff --git a/modules/node/node.pages.inc b/modules/node/node.pages.inc index 83a59680c..e05485b72 100644 --- a/modules/node/node.pages.inc +++ b/modules/node/node.pages.inc @@ -415,12 +415,12 @@ function theme_node_preview($node) { if ($preview_trimmed_version) { drupal_set_message(t('The trimmed version of your post shows what your post looks like when promoted to the main page or when exported for syndication.<span class="no-js"> You can insert the delimiter "<!--break-->" (without the quotes) to fine-tune where your post gets split.</span>')); $output .= '<h3>' . t('Preview trimmed version') . '</h3>'; - $output .= node_view(clone $node, 1, FALSE, 0); + $output .= node_view(clone $node, 1, FALSE); $output .= '<h3>' . t('Preview full version') . '</h3>'; - $output .= node_view($node, 0, FALSE, 0); + $output .= node_view($node, 0, FALSE); } else { - $output .= node_view($node, 0, FALSE, 0); + $output .= node_view($node, 0, FALSE); } $output .= "</div>\n"; |