? .DS_Store
? book_body_display.patch
? themes/.DS_Store
? themes/engines/.DS_Store
? themes/engines/phptemplate/.DS_Store
? themes/garland/.DS_Store
? themes/garland/color/.DS_Store
Index: includes/form.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/form.inc,v
retrieving revision 1.167
diff -u -p -r1.167 form.inc
--- includes/form.inc	21 Dec 2006 16:16:44 -0000	1.167
+++ includes/form.inc	24 Dec 2006 05:02:20 -0000
@@ -264,7 +264,11 @@ function drupal_process_form($form_id, &
   // We've finished calling functions that alter the global values, so we can
   // restore the ones that were there before this function was called.
   list($form_values, $form_submitted, $form_button_counter) = array_pop($saved_globals);
-  return $redirect;
+  if (isset($redirect)) {
+    return $redirect;
+  } else {
+    return FALSE;
+  }
 }
 
 /**
@@ -321,7 +325,7 @@ function drupal_prepare_form($form_id, &
       $form['form_token'] = array('#type' => 'token', '#default_value' => drupal_get_token($form['#token']));
     }
   }
-  else if ($user->uid && !$form['#programmed']) {
+  else if (isset($user) && $user->uid && !$form['#programmed']) {
     $form['#token'] = $form_id;
     $form['form_token'] = array(
       '#id' => form_clean_id('edit-'. $form_id .'-form-token'),
@@ -457,7 +461,7 @@ function drupal_render_form($form_id, &$
     if (theme_get_function($form_id)) {
       $form['#theme'] = $form_id;
     }
-    elseif (theme_get_function($base)) {
+    elseif (isset($base) && theme_get_function($base)) {
       $form['#theme'] = $base;
     }
   }
@@ -741,7 +745,7 @@ function form_builder($form_id, $form) {
   if (isset($form['#process']) && !$form['#processed']) {
     foreach ($form['#process'] as $process => $args) {
       if (function_exists($process)) {
-        $args = array_merge(array($form), array($edit), $args);
+        $args = array_merge(array($form), array(isset($edit) ? $edit : NULL), $args);
         $form = call_user_func_array($process, $args);
       }
     }
@@ -960,11 +964,17 @@ function theme_fieldset($element) {
 
     $element['#attributes']['class'] .= ' collapsible';
     if ($element['#collapsed']) {
-     $element['#attributes']['class'] .= ' collapsed';
+      $element['#attributes']['class'] .= ' collapsed';
     }
   }
 
-  return '<fieldset' . drupal_attributes($element['#attributes']) .'>' . ($element['#title'] ? '<legend>'. $element['#title'] .'</legend>' : '') . ($element['#description'] ? '<div class="description">'. $element['#description'] .'</div>' : '') . $element['#children'] . $element['#value'] . "</fieldset>\n";
+  $output = '<fieldset' . drupal_attributes($element['#attributes']) .'>';
+  $output .= (isset($element['#title']) ? '<legend>'. $element['#title'] .'</legend>' : '');
+  $output .= (isset($element['#description']) ? '<div class="description">'. $element['#description'] .'</div>' : '')
+  $output .= $element['#children'];
+  $output .= (isset($element['#value']) ? $element['#value'] : '') . "</fieldset>\n";
+
+  return $output;
 }
 
 /**
Index: modules/book/book.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/book/book.module,v
retrieving revision 1.403
diff -u -p -r1.403 book.module
--- modules/book/book.module	30 Nov 2006 02:04:31 -0000	1.403
+++ modules/book/book.module	24 Dec 2006 05:02:21 -0000
@@ -778,19 +778,25 @@ 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');
+  // Remove the delimiter (if any) that separates the teaser from the body.
+  $node->body = str_replace('<break>', '', $node->body);
+
+  // The 'view' hook can be implemented to overwrite the default function
+  // to display nodes.
+  if (node_hook($node, 'view')) {
+    $node = node_invoke($node, 'view', FALSE, FALSE);
+  }
+  else {
+    $node = node_prepare($node, FALSE);
   }
-  // Allow modules to change $node->body before viewing.
-  node_invoke_nodeapi($node, 'print', $node->body, FALSE);
+
+  // Allow modules to make their own additions to the node.
+  node_invoke_nodeapi($node, '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;
 }
 
