summaryrefslogtreecommitdiff
path: root/modules/node
diff options
context:
space:
mode:
Diffstat (limited to 'modules/node')
-rw-r--r--modules/node/node.module53
-rw-r--r--modules/node/node.pages.inc6
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 "&lt;!--break--&gt;" (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";