Index: modules/forum/forum.install
===================================================================
RCS file: /cvs/drupal/drupal/modules/forum/forum.install,v
retrieving revision 1.9
diff -u -p -r1.9 forum.install
--- modules/forum/forum.install	5 Sep 2007 08:27:57 -0000	1.9
+++ modules/forum/forum.install	18 Sep 2007 12:19:07 -0000
@@ -7,6 +7,8 @@
 function forum_install() {
   // Create tables.
   drupal_install_schema('forum');
+  // Put forum after taxonomy in the chain.  
+  db_query("UPDATE {system} SET weight = 1 WHERE name = 'forum'");
 }
 
 function forum_enable() {
@@ -19,7 +21,7 @@ function forum_enable() {
     $vocabulary = array(
       'name' => t('Forums'),
       'multiple' => 0,
-      'required' => 1,
+      'required' => 0,
       'hierarchy' => 1,
       'relations' => 0,
       'module' => 'forum',
@@ -50,3 +52,18 @@ function forum_uninstall() {
   variable_del('forum_block_num_0');
   variable_del('forum_block_num_1');
 }
+
+/**
+ * Implementation of hook_update().
+ */
+function forum_update_6001() {
+  $ret = array();
+  $vid = variable_get('forum_nav_vocabulary', '');
+  // Form vocabulary is not required by default.
+  if (!empty($vid)) {
+    $ret[] = update_sql("UPDATE {vocabulary} SET required = 0 WHERE vid = " . $vid);
+  }
+  // Put forum after taxonomy in the chain.
+  $ret[] = update_sql("UPDATE {system} SET weight = 1 WHERE name = 'forum'");
+  return $ret;
+}
\ No newline at end of file
Index: modules/forum/forum.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/forum/forum.module,v
retrieving revision 1.419
diff -u -p -r1.419 forum.module
--- modules/forum/forum.module	10 Sep 2007 08:06:59 -0000	1.419
+++ modules/forum/forum.module	18 Sep 2007 12:19:10 -0000
@@ -195,7 +195,6 @@ function forum_nodeapi(&$node, $op, $tea
         $breadcrumb[] = array('path' => 'node/'. $node->nid);
         menu_set_location($breadcrumb);
 
-        $node = node_prepare($node, $teaser);
         if (!$teaser) {
           $node->content['forum_navigation'] = array(
             '#value' => theme('forum_topic_navigation', $node),
@@ -358,13 +357,19 @@ function forum_form_alter(&$form, $form_
       );
       $form['nodes']['#required'] = TRUE;
       $form['hierarchy'] = array('#type' => 'value', '#value' => 1);
-      unset($form['relations']);
-      unset($form['tags']);
-      unset($form['multiple']);
-      unset($form['delete']);
-      $form['required'] = array('#type' => 'value', '#value' => 1);
+      $form['required'] = array('#type' => 'value', '#value' => FALSE);
+      $form['relations'] = array('#type' => 'value', '#value' => FALSE);
+      $form['tags'] = array('#type' => 'value', '#value' => FALSE);
+      $form['multiple'] = array('#type' => 'value', '#value' => FALSE);
+      unset($form['delete']);    
     }
   }
+  if ($form_id == 'forum_node_form') {
+    // Set the vocabulary as required for forum-nodes.
+    $vid = variable_get('forum_nav_vocabulary', '');
+    $form['taxonomy'][$vid]['#required'] = TRUE;
+    unset($form['taxonomy'][$vid]['#options'][0]);
+  }
 }
 
 /**
