=== modified file 'modules/book/book.module'
--- modules/book/book.module	2006-11-30 02:04:31 +0000
+++ modules/book/book.module	2006-12-24 05:18:13 +0000
@@ -778,19 +778,11 @@ function book_recurse($nid = 0, $depth =
  *   - the HTML generated for the given node.
  */
 function book_node_visitor_html_pre($node, $depth, $nid) {
-  // Output the content:
-  if (node_hook($node, 'content')) {
-    $node = node_invoke($node, 'content');
-  }
-  // Allow modules to change $node->body before viewing.
-  node_invoke_nodeapi($node, 'print', $node->body, FALSE);
-
+  $node = node_build_content($node, FALSE, FALSE, 'print');
   $output .= "<div id=\"node-". $node->nid ."\" class=\"section-$depth\">\n";
   $output .= "<h1 class=\"book-heading\">". check_plain($node->title) ."</h1>\n";
+  $output .= drupal_render($node->content);
 
-  if ($node->body) {
-    $output .= drupal_render($node->content);
-  }
   return $output;
 }
 

=== modified file 'modules/node/node.module'
--- modules/node/node.module	2006-12-21 22:22:14 +0000
+++ modules/node/node.module	2006-12-24 05:17:26 +0000
@@ -731,12 +731,14 @@ function node_prepare($node, $teaser = F
  *   Whether to display the teaser only, as on the main page.
  * @param $page
  *   Whether the node is being displayed by itself as a page.
+ * @param $op
+ *   Which nodeapi to call. Internal use only.
  *
  * @return
  *   An structured array containing the individual elements
  *   of the node's body.
  */
-function node_build_content($node, $teaser = FALSE, $page = FALSE) {
+function node_build_content($node, $teaser = FALSE, $page = FALSE, $op = 'view') {
   // Remove the delimiter (if any) that separates the teaser from the body.
   $node->body = str_replace('<break>', '', $node->body);
 
@@ -750,7 +752,7 @@ function node_build_content($node, $teas
   }
 
   // Allow modules to make their own additions to the node.
-  node_invoke_nodeapi($node, 'view', $teaser, $page);
+  node_invoke_nodeapi($node, $op, $teaser, $page);
 
   return $node;
 }

