Index: category.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/category/category.inc,v
retrieving revision 1.62
diff -u -r1.62 category.inc
--- category.inc	14 Nov 2006 14:29:09 -0000	1.62
+++ category.inc	22 Nov 2006 01:10:44 -0000
@@ -152,8 +152,8 @@
 }
 
 /**
- * Given a new or existing node, and a type of either 'category-cat' or
- * 'category-cont' (or undefined), determine if a category node is a category
+ * Given a new or existing node, and a type of either 'category_cat' or
+ * 'category_cont' (or undefined), determine if a category node is a category
  * or a container, and return its type. This function assumes that the
  * node is either a category or a container - it will not return the correct
  * value if the node is neither (this is by design).
@@ -164,23 +164,23 @@
  * @param $node
  *   The node being tested. Does not have to be fully populated.
  * @param $type
- *   The type of category being used. Either 'category-cat', 'category-cont',
+ *   The type of category being used. Either 'category_cat', 'category_cont',
  *   or an empty value (such as NULL).
  *
  * @return
- *   Either 'category-cat' or 'category-cont' (never ANYTHING else).
+ *   Either 'category_cat' or 'category_cont' (never ANYTHING else).
  */
 function category_node_get_type($node, $type = NULL) {
   if (empty($type)) {
     $type = $node->type;
   }
-  if (empty($type) || !($type == 'category-cat' || $type == 'category-cont')) {
+  if (empty($type) || !($type == 'category_cat' || $type == 'category_cont')) {
     $category = category_get_category($node->nid);
     if ($category->cnid) {
-      $type = 'category-cat';
+      $type = 'category_cat';
     }
     else {
-      $type = 'category-cont';
+      $type = 'category_cont';
     }
   }
 
@@ -523,7 +523,7 @@
     // Load the node:
     $node = node_load($page->nid);
     $type = category_node_get_type($node);
-    $is_cat = $type == 'category-cat';
+    $is_cat = $type == 'category_cat';
 
     if ($node) {
       if (!$is_cat && $node->hidden_cont) {
@@ -728,7 +728,7 @@
             $tag_node = new stdClass();
             $tag_node->title = $typed_cat;
             $tag_node->cnid = $cnid;
-            $tag_node->type = 'category-cat';
+            $tag_node->type = 'category_cat';
             $tag_node->parents[0] = $tag_node->parent = $cnid;
             $node_options = variable_get('node_options_'. $tag_node->type, array('status', 'promote'));
             $tag_node->status = in_array('status', $node_options);
@@ -1063,7 +1063,7 @@
 
     $body_text = '';
     if (isset($node->body)) {
-      if (!(module_exist('category_display') && $node->body_is_desc)) {
+      if (!(module_exists('category_display') && $node->body_is_desc)) {
         $body_text = $node->body;
       }
     }
@@ -1098,7 +1098,7 @@
     '#description' => ($is_cat ? t('A description of the category. Generally seen by users as title text, when hovering over a link to the category.') : t('A description of the container; can be used by modules.')),
   );
 
-  $activeselect = module_exist('activeselect');
+  $activeselect = module_exists('activeselect');
   $activeselect_type = ($activeselect ? 'activeselect' : 'select');
 
   if ($is_cat) {
@@ -1158,7 +1158,7 @@
       '#type' => 'checkboxes',
       '#title' => t('Types'),
       '#default_value' => $node->nodes ? $node->nodes : array(),
-      '#options' => node_get_types(),
+      '#options' => node_get_types('names'),
       '#description' => t('A list of node types you want to associate with categories in this container.'),
     );
     $form['catinfo']['hierarchy'] = array(
@@ -1166,7 +1166,7 @@
       '#title' => t('Hierarchy'),
       '#default_value' => isset($node->hierarchy) ? $node->hierarchy : 1,
       '#options' => array(0 => t('Disabled'), 1 => t('Single'), 2 => t('Multiple')),
-      '#description' => t('Allows <a href="%help-url">a tree-like hierarchy</a> between categories within a container. Depending on your distant parent configuration, this may also allow a hierarchy between categories and containers regardless of their parent container. Be aware that the <em>multiple</em> option refers to multiple parents, as opposed to multiple levels of hierarchy.', array('%help-url' => url('admin/help/category', NULL, 'hierarchy'))),
+      '#description' => t('Allows <a href="!help-url">a tree-like hierarchy</a> between categories within a container. Depending on your distant parent configuration, this may also allow a hierarchy between categories and containers regardless of their parent container. Be aware that the <em>multiple</em> option refers to multiple parents, as opposed to multiple levels of hierarchy.', array('!help-url' => url('admin/help/category', NULL, 'hierarchy'))),
       '#required' => TRUE,
     );
     $form['catinfo']['has_relations'] = array(
@@ -1249,7 +1249,7 @@
   if ($hierarchy == 1 || $activeselect) {
     $form['catinfo']['parents'] = _category_category_select(t('Parent'), $parents, $default_parent, t('Parent category or container. Containers are marked with an asterisk (*).'), 0, $blank, $exclude);
   }
-	elseif ($hierarchy == 2) {
+  elseif ($hierarchy == 2) {
     $form['catinfo']['parents'] = _category_category_select(t('Parents'), $parents, $default_parent, t('Parent categories or containers. Containers are marked with an asterisk (*).'), ($activeselect ? 0 : 1), $blank, $exclude);
   }
 
@@ -1358,13 +1358,13 @@
   static $taxonomy_status, $book_status;
 
   if (!isset($taxonomy_status)) {
-    $taxonomy_status = module_exist('taxonomy') && !menu_get_item(NULL, 'admin/taxonomy');
+    $taxonomy_status = module_exists('taxonomy') && !menu_get_item(NULL, 'admin/taxonomy');
     if ($check_db) {
       $taxonomy_status = $taxonomy_status && variable_get('taxonomy_maintain_db', 1);
     }
   }
   if (!isset($book_status)) {
-    $book_status = module_exist('book') && !menu_get_item(NULL, 'admin/node/book');
+    $book_status = module_exists('book') && !menu_get_item(NULL, 'admin/node/book');
     if ($check_db) {
       $book_status = $book_status && variable_get('book_maintain_db', 1);
     }
Index: category.install
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/category/category.install,v
retrieving revision 1.10
diff -u -r1.10 category.install
--- category.install    14 Apr 2006 13:52:03 -0000      1.10
+++ category.install    22 Nov 2006 07:14:23 -0000
@@ -204,3 +204,23 @@

   return $ret;
 }
+
+/**
+ * Drupal 5.0 updates
+ */
+function category_update_9() {
+  // Node types may no longer contain hyphens.
+  $ret[] = update_sql("UPDATE {node} n SET n.type = 'category_cat' WHERE n.type = 'category-cat'");
+  $ret[] = update_sql("UPDATE {node} n SET n.type = 'category_cont' WHERE n.type = 'category-cont'");
+
+  // Some of our variables need to be renamed.
+  $result = db_query("SELECT name FROM {variable} WHERE name LIKE 'category_nodeapi_%_containers'");
+  while ($row = db_fetch_array($result)) {
+    // Determine the new name of the variable
+    $name = preg_replace('/^category_nodeapi_(.*)_containers$/','category_nodeapi_containers_$1',$row['name']);
+    // Change the name.
+    $ret[] = update_sql("UPDATE {variable} SET name = '%s' WHERE name = '%s'",$name,$row['name']);
+  }
+
+  return $ret;
+}
Index: category.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/category/category.module,v
retrieving revision 1.122
diff -u -r1.122 category.module
--- category.module	14 Nov 2006 07:42:02 -0000	1.122
+++ category.module	22 Nov 2006 01:10:44 -0000
@@ -11,18 +11,12 @@
  */
 function category_help($section) {
   switch ($section) {
-    case 'admin/modules#description':
-      return t('Allows you to structure your site and categorize content.');
-    case 'admin/category':
+    case 'admin/content/category':
       return t('<p>The category module allows you to structure your site and to categorize content: you can create multiple containers (types of categorizations) that contain a tree of categories; you can assign content to your categories; and you can give your categories their own content (such as a description).</p>');
     case 'admin/help#category':
       return t('<p>The category module allows you to structure your site and to categorize content: you can create multiple containers (types of categorizations) that contain a tree of categories; you can assign content to your categories; and you can give your categories their own content (such as a description).</p>');
-    case 'node/add#category-cat':
-      return t("Categories are used to structure your site, and to categorize content. You can create a category as the child of a container, or of another category. You can assign content to one or more categories.");
-    case 'node/add#category-cont':
-      return t("A container is usually the root of a category tree, but can also be created as the child of another container, or of a category. Containers are used for describing a particular way of classifying content.");
     case 'admin/settings/category':
-      return t('<p>Settings controlling the behaviour of categories and containers on this site. As well as settings for the category module itself, settings for other modules in the category package can also be configured here. Only global settings are controlled here: most settings are controlled on a per-container or per-category basis, and are instead configured on the add/edit category/container pages. See the <a href="%category">categories</a> page for actual categories and containers.</p>', array('%category' => url('admin/category')));
+      return t('<p>Settings controlling the behaviour of categories and containers on this site. As well as settings for the category module itself, settings for other modules in the category package can also be configured here. Only global settings are controlled here: most settings are controlled on a per-container or per-category basis, and are instead configured on the add/edit category/container pages. See the <a href="!category">categories</a> page for actual categories and containers.</p>', array('!category' => url('admin/category')));
   }
 }
 
@@ -30,14 +24,22 @@
  * Implementation of hook_node_info().
  */
 function category_node_info() {
-  $base_types = variable_get('category_base_nodetypes', array('category-cat' => 'category-cat', 'category-cont' => 'category-cont'));
+  $base_types = variable_get('category_base_nodetypes', array('category_cat' => 'category_cat', 'category_cont' => 'category_cont'));
   $types_list = array();
 
-  if ($base_types['category-cont']) {
-    $types_list['category-cont'] = array('name' => t('container'), 'base' => 'category');
+  if ($base_types['category_cont']) {
+    $types_list['category_cont'] = array(
+      'name' => t('Container'),
+      'module' => 'category',
+      'description' => t("A container is usually the root of a category tree, but can also be created as the child of another container, or of a category. Containers are used for describing a particular way of classifying content."),
+    );
   }
-  if ($base_types['category-cat']) {
-    $types_list['category-cat'] = array('name' => t('category'), 'base' => 'category');
+  if ($base_types['category_cat']) {
+    $types_list['category_cat'] = array(
+      'name' => t('Category'),
+      'module' => 'category',
+      'description' => t("Categories are used to structure your site, and to categorize content. You can create a category as the child of a container, or of another category. You can assign content to one or more categories."),
+    );
   }
 
   return $types_list;
@@ -47,16 +49,16 @@
  * Implementation of hook_perm().
  */
 function category_perm() {
-  $base_types = variable_get('category_base_nodetypes', array('category-cat' => 'category-cat', 'category-cont' => 'category-cont'));
+  $base_types = variable_get('category_base_nodetypes', array('category_cat' => 'category_cat', 'category_cont' => 'category_cont'));
   $perms_list = array();
 
-  if ($base_types['category-cat']) {
+  if ($base_types['category_cat']) {
     $perms_list[] = 'create categories';
   }
-  if ($base_types['category-cont']) {
+  if ($base_types['category_cont']) {
     $perms_list[] = 'create containers';
   }
-  if ($base_types['category-cat'] || $base_types['category-cont']) {
+  if ($base_types['category_cat'] || $base_types['category_cont']) {
     $perms_list[] = 'edit all categories';
     $perms_list[] = 'edit own categories';
   }
@@ -78,12 +80,12 @@
  */
 function category_menu($may_cache) {
   $items = array();
-  $base_types = variable_get('category_base_nodetypes', array('category-cat' => 'category-cat', 'category-cont' => 'category-cont'));
+  $base_types = variable_get('category_base_nodetypes', array('category_cat' => 'category_cat', 'category_cont' => 'category_cont'));
 
   if ($may_cache) {
     $items[] = array(
       'path' => 'category',
-      'title' => t('categories'),
+      'title' => t('Categories'),
       'callback' => 'category_category_page',
       'access' => user_access('access content'),
       'type' => MENU_CALLBACK,
@@ -94,45 +96,40 @@
       'access' => user_access('access content'),
       'type' => MENU_CALLBACK);
     $items[] = array(
-      'path' => 'admin/category',
-      'title' => t('categories'),
+      'path' => 'admin/content/category',
+      'title' => t('Categories'),
+      'description' => t('Create containers and categories to categorize your content.'),
       'callback' => 'category_admin',
       'access' => user_access('administer categories'),
     );
     $items[] = array(
-      'path' => 'admin/category/list',
-      'title' => t('list'),
+      'path' => 'admin/content/category/list',
+      'title' => t('List'),
       'type' => MENU_DEFAULT_LOCAL_TASK,
       'weight' => -10,
     );
     $items[] = array(
-      'path' => 'admin/category/list/container',
-      'title' => t('containers'),
+      'path' => 'admin/content/category/list/container',
+      'title' => t('Containers'),
       'type' => MENU_DEFAULT_LOCAL_TASK,
       'weight' => -10,
     );
     $items[] = array(
-      'path' => 'admin/category/add',
-      'title' => t('add container'),
+      'path' => 'admin/content/category/add',
+      'title' => t('Add container'),
       'callback' => 'category_admin',
       'access' => user_access('administer categories'),
       'type' => MENU_LOCAL_TASK,
       'weight' => -6,
     );
-    if ($base_types['category-cat']) {
-      $items[] = array(
-        'path' => 'node/add/category-cat',
-        'title' => t('category'),
-        'access' => _category_privileged('create categories'),
-      );
-    }
-    if ($base_types['category-cont']) {
-      $items[] = array(
-        'path' => 'node/add/category-cont',
-        'title' => t('container'),
-        'access' => _category_privileged('create containers'),
-      );
-    }
+    $items[] = array(
+      'path' => 'admin/settings/category',
+      'title' => t('Category settings'),
+      'callback' => 'drupal_get_form',
+      'callback arguments' => 'category_admin_settings',
+      'access' => user_access('administer site configuration'),
+      'type' => MENU_NORMAL_ITEM,
+     );
     $items[] = array('path' => 'category/autocomplete',
       'title' => t('autocomplete category'),
       'callback' => 'category_autocomplete',
@@ -153,12 +150,12 @@
     );
   }
   else {
-    if (arg(0) == 'admin' && arg(1) == 'category' && is_numeric(arg(2))) {
-      $nid = arg(2);
+    if (arg(0) == 'admin' && arg(1) == 'content' && arg(2) == 'category' && is_numeric(arg(3))) {
+      $nid = arg(3);
       $node = node_load($nid);
 
       $items[] = array(
-        'path' => 'admin/category/' . $nid,
+        'path' => 'admin/content/category/' . $nid,
         'title' => $node->admin_title,
         'callback' => 'category_admin',
         'access' => user_access('administer categories'),
@@ -166,21 +163,21 @@
       );
 
       $items[] = array(
-        'path' => 'admin/category/' . $nid . '/list',
+        'path' => 'admin/content/category/' . $nid . '/list',
         'title' => t('list'),
         'type' => MENU_DEFAULT_LOCAL_TASK,
         'weight' => -10,
       );
 
       $items[] = array(
-        'path' => 'admin/category/' . $nid . '/list/category',
+        'path' => 'admin/content/category/' . $nid . '/list/category',
         'title' => t('categories'),
         'type' => MENU_DEFAULT_LOCAL_TASK,
         'weight' => -10,
       );
 
       $items[] = array(
-        'path' => 'admin/category/' . $nid . '/add',
+        'path' => 'admin/content/category/' . $nid . '/add',
         'title' => t('add category'),
         'callback' => 'category_admin',
         'access' => user_access('administer categories'),
@@ -213,7 +210,7 @@
 
   if ($op == 'create') {
     $type = $node;
-    if ($type == 'category-cont') {
+    if ($type == 'category_cont') {
       return _category_privileged('create containers');
     }
     else {
@@ -244,7 +241,7 @@
  * print lists of categories associated with a node. Themes can print category
  * links with:
  *
- * if (module_exist('category')) {
+ * if (module_exists('category')) {
  *   $this->links(category_link('categories', $node));
  * }
  */
@@ -252,12 +249,18 @@
   $links = array();
 
   if ($type == 'node' && isset($node->parents)) {
-    if (!$main && ($node->type != 'category-cat' || $node->hierarchy)) {
+    if (!$main && ($node->type != 'category_cat' || $node->hierarchy)) {
       if (_category_privileged('create categories')) {
-        $links[] = l(t('add child category'), "node/add/category-cat/parent/$node->nid");
+        $links['category_add_category'] = array(
+          'title' => t('add child category'),
+          'href' => "node/add/category_cat/parent/$node->nid",
+        );
       }
       if (_category_privileged('create containers')) {
-        $links[] = l(t('add child container'), "node/add/category-cont/parent/$node->nid");
+        $links['category_add_container'] = array(
+          'title' => t('add child container'),
+          'href' => "node/add/category_cont/parent/$node->nid",
+        );
       }
     }
   }
@@ -266,8 +269,12 @@
     $links = array();
     if (isset($node->category) && is_array($node->category)) {
       foreach ($node->category as $category) {
-        if (!module_exist('category_display') || ($category->cid && ($cat_node = node_load($category->cid)) && $cat_node->nodelinks)) {
-          $links[] = l($category->title, category_category_path($category), array('rel' => 'tag', 'title' => strip_tags($category->description)));
+        if (!module_exists('category_display') || ($category->cid && ($cat_node = node_load($category->cid)) && $cat_node->nodelinks)) {
+          $links['category_add_child'] = array(
+            'title' => $category->title,
+            'href' => category_category_path($category),
+            'attributes' => array('rel' => 'tag', 'title' => strip_tags($category->description)),
+          );
         }
       }
     }
@@ -277,9 +284,9 @@
 }
 
 /**
- * Implementation of hook_settings().
+ * Settings form.
  */
-function category_settings() {
+function category_admin_settings() {
   $form = array();
   // select options
   $distant = array(
@@ -306,7 +313,9 @@
     '#type' => 'item',
     '#title' => t('Taxonomy wrapper status'),
     '#value' => theme('category_wrapper_status', 'taxonomy', $taxonomy_status),
-    '#description' => '<p>'. t('You can install and uninstall the taxonomy and book wrapper modules using the links below. It is very important that you have taxonomy or book (original or wrapper, whichever is installed) <strong>enabled</strong> on the %module-admin-page before performing an install or uninstall. Additionally, you should make sure that your web server has write permission on the file system, or the scripts may be denied access to copy and rename the necessary files.', array('%module-admin-page' => l(t('module administration page'), 'admin/modules'))). '</p><p>'. t('When performing an install, the scripts will rename your existing taxonomy or book module file to <code>modulename.module.old</code>. It will then copy the appropriate <code>modulename.module.copyme</code> file from the <code>wrappers/</code> directory (in your category package) to the location where the old module file was, and will rename the copied file to <code>modulename.module</code>. The reverse will happen when performing an uninstall. The script will determine the correct location of all necessary files automatically, based on the existing locations of those files.'). '</p><p>'. t('After the operation that you invoke is completed, you will be returned to this page.'). '</p>',
+    '#description' => '<p>'. t('You can install and uninstall the taxonomy and book wrapper modules using the links below. It is very important that you have taxonomy or book (original or wrapper, whichever is installed) <strong>enabled</strong> on the <a href="!module-admin-page">module administration page</a> before performing an install or uninstall. Additionally, you should make sure that your web server has write permission on the file system, or the scripts may be denied access to copy and rename the necessary files.', array('%module-admin-page' => url('admin/modules'))) .'</p>'
+    .'<p>'. t('When performing an install, the scripts will rename your existing taxonomy or book module file to <code>modulename.module.old</code>. It will then copy the appropriate <code>modulename.module.copyme</code> file from the <code>wrappers/</code> directory (in your category package) to the location where the old module file was, and will rename the copied file to <code>modulename.module</code>. The reverse will happen when performing an uninstall. The script will determine the correct location of all necessary files automatically, based on the existing locations of those files.') .'</p>'
+    .'<p>'. t('After the operation that you invoke is completed, you will be returned to this page.') .'</p>',
   );
 
   // Node type settings
@@ -319,15 +328,15 @@
   $form['nodetype']['category_allow_nodetypes'] = array(
     '#type' => 'checkboxes',
     '#title' => t('Allow other content types to be'),
-    '#default_value' =>  variable_get('category_allow_nodetypes', array('category-cat' => 0, 'category-cont' => 0)),
-    '#options' => array('category-cat' => t('Categories'), 'category-cont' => t('Containers')),
+    '#default_value' =>  variable_get('category_allow_nodetypes', array('category_cat' => 0, 'category_cont' => 0)),
+    '#options' => array('category_cat' => t('Categories'), 'category_cont' => t('Containers')),
     '#description' => t('Allows category or container behavior to be assigned to other content types. When enabled, each content type (except for category and container) receives a new setting allowing it to be a category or a container. When switched on for a particular content type, all nodes of that type receive the new behavior.')
   );
   $form['nodetype']['category_base_nodetypes'] = array(
     '#type' => 'checkboxes',
     '#title' => t('Provide these content types'),
-    '#default_value' =>  variable_get('category_base_nodetypes', array('category-cat' => 'category-cat', 'category-cont' => 'category-cont')),
-    '#options' => array('category-cat' => t('Category'), 'category-cont' => t('Container')),
+    '#default_value' =>  variable_get('category_base_nodetypes', array('category_cat' => 'category_cat', 'category_cont' => 'category_cont')),
+    '#options' => array('category_cat' => t('Category'), 'category_cont' => t('Container')),
     '#description' => t('Provides a built-in content type for creating categories, and a built-in content type for creating containers. Do not disable either of these unless you have allowed other content types to be categories or containers, and you have set other content types to have category or container behavior; otherwise, you will have not be able to create categories or containers.')
   );
 
@@ -356,7 +365,7 @@
 
   $form['buttons']['#weight'] = 10;
 
-  return $form;
+  return system_settings_form($form);
 }
 
 /**
@@ -366,7 +375,7 @@
   global $user;
 
   $type = category_node_get_type($node, $type);
-  $is_cat = $type == 'category-cat';
+  $is_cat = $type == 'category_cat';
 
   $category = category_get_category($node->nid);
   unset($category->cid);
@@ -435,7 +444,7 @@
   $node->module = $node->module ? $node->module : 'category';
 
   $type = category_node_get_type($node, $type);
-  $is_cat = $type == 'category-cat';
+  $is_cat = $type == 'category_cat';
 
   $data_exists = (db_result(db_query('SELECT COUNT(*) FROM {category} WHERE cid = %d', $node->nid)) > 0);
   if ($data_exists) {
@@ -526,7 +535,7 @@
  */
 function category_delete(&$node, $type = NULL) {
   $type = category_node_get_type($node, $type);
-  $is_cat = $type == 'category-cat';
+  $is_cat = $type == 'category_cat';
 
   db_query('DELETE FROM {category} WHERE cid = %d', $node->nid);
   db_query('DELETE FROM {category_hierarchy} WHERE cid = %d', $node->nid);
@@ -548,8 +557,8 @@
  * Implementation of hook_form().
  */
 function category_form(&$node) {
-  $parent_cont = arg(4);
-  $is_cat = $node->type == 'category-cat';
+  $parent_cont = arg(5);
+  $is_cat = $node->type == 'category_cat';
 
   if (is_numeric($parent_cont)) {
     $category = category_get_category($parent_cont);
@@ -577,7 +586,7 @@
 
   $form = category_get_form($is_cat, $node);
 
-  if (strpos($_GET['q'], 'node/add/category-cat/parent') !== FALSE) {
+  if (strpos($_GET['q'], 'node/add/category_cat/parent') !== FALSE) {
     $form['destination'] = array(
       '#type' => 'hidden',
       '#value' => $_GET['q'],
@@ -701,7 +710,7 @@
   $node->parents = array_values($node->parents);
 
   if (!isset($node->parents[0])) {
-    if ($node->type == 'category-cat') {
+    if ($node->type == 'category_cat') {
       $node->parents[0] = $node->parent = $node->cnid;
     }
     else {
@@ -727,13 +736,13 @@
 function category_admin() {
   // Special case for our "add category" menu localtask. this covers
   // the use of the "add category" LOCAL_TASK on a "view categories" page.
-  if (is_numeric(arg(2)) && arg(3) == 'add') {
-    drupal_goto('node/add/category-cat/parent/'. arg(2));
+  if (is_numeric(arg(3)) && arg(4) == 'add') {
+    drupal_goto('node/add/category_cat/parent/'. arg(3));
   }
   // Another special case for the "add container" menu localtask.
-  elseif (arg(2) == 'add') {
-    $destination = 'destination=admin/category';
-    drupal_goto('node/add/category-cont', $destination);
+  elseif (arg(3) == 'add') {
+    $destination = 'destination=admin/content/category';
+    drupal_goto('node/add/category_cont', $destination);
   }
 
   return category_overview();
@@ -745,7 +754,7 @@
  */
 function category_overview() {
   drupal_set_html_head(theme('stylesheet_import', base_path() . drupal_get_path('module', 'category') .'/category.css'));
-  $cnid = arg(2);
+  $cnid = arg(3);
   $destination = drupal_get_destination();
 
   $start_from      = $_GET['page'] ? $_GET['page'] : 0;
@@ -779,7 +788,7 @@
       if (is_array($container->nodes)) {
         foreach ($container->nodes as $key => $type) {
           if ($type) {
-            $node_type = node_get_name($type);
+            $node_type = node_get_types('name', $type);
             $types[] = $node_type ? $node_type : $type;
           }
         }
@@ -799,10 +808,10 @@
 
       $none = theme('placeholder', t('none'));
       if ($colspan == 5) {
-        $rows[] = array(l($container->admin_title, "node/$container->cid"), (!empty($types) ? implode(', ', $types) : $none), l(t('edit container'), "node/$container->cid/edit", array(), $destination), l(t('list categories'), "admin/category/$container->cid"), l(t('add categories'), "admin/category/$container->cid/add"));
+        $rows[] = array(l($container->admin_title, "node/$container->cid"), (!empty($types) ? implode(', ', $types) : $none), l(t('edit container'), "node/$container->cid/edit", array(), $destination), l(t('list categories'), "admin/content/category/$container->cid"), l(t('add categories'), "admin/content/category/$container->cid/add"));
       }
       else {
-        $rows[] = array(l($container->admin_title, "node/$container->cid"), (!empty($types) ? implode(', ', $types) : $none), (!empty($parents) ? implode(', ', $parents) : $none), l(t('edit container'), "node/$container->cid/edit", array(), $destination), l(t('list categories'), "admin/category/$container->cid"), l(t('add categories'), "admin/category/$container->cid/add"));
+        $rows[] = array(l($container->admin_title, "node/$container->cid"), (!empty($types) ? implode(', ', $types) : $none), (!empty($parents) ? implode(', ', $parents) : $none), l(t('edit container'), "node/$container->cid/edit", array(), $destination), l(t('list categories'), "admin/content/category/$container->cid"), l(t('add categories'), "admin/content/category/$container->cid/add"));
       }
 
       $displayed_count++; // we're counting containers displayed
@@ -895,7 +904,7 @@
   switch ($op) {
     case 'load':
       $node->category = category_node_get_categories($node->nid);
-      if ($node->type != 'category-cat' && $node->type != 'category-cont' && category_is_cat_or_cont($node->nid)) {
+      if ($node->type != 'category_cat' && $node->type != 'category_cont' && category_is_cat_or_cont($node->nid)) {
         $extra = category_load($node);
         foreach ($extra as $key => $value) {
           $node->$key = $value;
@@ -918,7 +927,7 @@
         'update' => t('Update category outline'),
         'delete' => t('Remove from category outline'),
       );
-      $type = category_node_get_type($node, arg(2));
+      $type = category_node_get_type($node, arg(3));
       if (in_array($op, $submit_values)) {
         switch ($op) {
           case $submit_values['insert']:
@@ -1002,20 +1011,21 @@
 
   switch ($form_id) {
     // node settings form
-    case $type .'_node_settings':
-      if ($type != 'category-cont') {
-        $allow_types = variable_get('category_allow_nodetypes', array('category-cat' => 0, 'category-cont' => 0));
-        if ($allow_types['category-cat'] || $allow_types['category-cont']) {
-          if ($type != 'category-cat') {
+    case 'node_type_form':
+      $type = $form['old_type']['#value'];
+      if ($type != 'category_cont') {
+        $allow_types = variable_get('category_allow_nodetypes', array('category_cat' => 0, 'category_cont' => 0));
+        if ($allow_types['category_cat'] || $allow_types['category_cont']) {
+          if ($type != 'category_cat') {
             $types_list = array();
-            if ($allow_types['category-cat']) {
-              $types_list['category-cat'] = t('Category');
+            if ($allow_types['category_cat']) {
+              $types_list['category_cat'] = t('Category');
             }
-            if ($allow_types['category-cont']) {
-              $types_list['category-cont'] = t('Container');
+            if ($allow_types['category_cont']) {
+              $types_list['category_cont'] = t('Container');
             }
             $types_list['none'] = t('None');
-            $form['workflow']['category_nodeapi_'. $type] = array(
+            $form['workflow']['category_nodeapi'] = array(
               '#type' => 'radios',
               '#title' => t('Category behavior'),
               '#default_value' => variable_get('category_nodeapi_'. $type, 'none'),
@@ -1023,13 +1033,13 @@
               '#description' => t('Adds category or container behaviour to this content type. Setting this to a value other than \'none\' will add additional settings to any content of this type that you create or edit.')
             );
           }
-          if ($allow_types['category-cat']) {
+          if ($allow_types['category_cat']) {
             $containers = array();
             foreach (category_get_containers() as $key => $value) {
               $containers[$key] = $value->admin_title;
             }
-            $default_containers = variable_get('category_nodeapi_'. $type .'_containers', array(0 => 'all'));
-            $form['workflow']['category_nodeapi_'. $type .'_containers'] = array(
+            $default_containers = variable_get('category_nodeapi_containers_'. $type, array(0 => 'all'));
+            $form['workflow']['category_nodeapi_containers_'. $type] = array(
               '#type' => 'select',
               '#title' => t('Category - allowed containers'),
               '#default_value' => $default_containers,
@@ -1045,10 +1055,10 @@
     case $type .'_node_form':
       $cat_type = variable_get('category_nodeapi_'. $type, 'none');
       if ($cat_type != 'none') {
-        $form += category_get_form(($cat_type == 'category-cat'), $node, FALSE);
+        $form += category_get_form(($cat_type == 'category_cat'), $node, FALSE);
       }
 
-      $activeselect = module_exist('activeselect');
+      $activeselect = module_exists('activeselect');
 
       $cats = $node->category;
       if (!isset($cats)) {
@@ -1056,8 +1066,8 @@
       }
 
       $default_cat = NULL;
-      if (strpos($_GET['q'], 'node/add') !== FALSE && is_numeric(arg(3))) {
-        $default_cat = arg(3);
+      if (strpos($_GET['q'], 'node/add') !== FALSE && is_numeric(arg(4))) {
+        $default_cat = arg(4);
       }
 
       $c = db_query(db_rewrite_sql("SELECT cn.*, n.title FROM {category_cont} cn INNER JOIN {category_cont_node_types} cnt ON cn.cid = cnt.cid INNER JOIN {category} c ON cn.cid = c.cid INNER JOIN {node} n ON cn.cid = n.nid WHERE cnt.type = '%s' AND n.status = 1 AND n.moderate = 0 ORDER BY c.weight, n.title", 'cn', 'cid'), $node->type);
@@ -1280,7 +1290,7 @@
   $output = array();
   foreach ($node->category as $cat) {
     $is_included = TRUE;
-    if (module_exist('category_display')) {
+    if (module_exists('category_display')) {
       $cont = category_display_cont_load($cat->cnid);
       if (!$cont->nodelinks) {
         $is_included = FALSE;
@@ -1510,7 +1520,7 @@
     drupal_set_message(t('Invalid parameters supplied to wrapper install / uninstall script.'). $generic_error, 'error');
     drupal_goto($goto);
   }
-  if (!module_exist($type)) {
+  if (!module_exists($type)) {
     drupal_set_message(t('The %type module is not currently enabled. You must enable it before performing an install or uninstall.', array('%type' => $type)), 'error');
     drupal_goto($goto);
   }
@@ -1577,13 +1587,13 @@
   $show_nodes = FALSE;
 
   if (db_num_rows($nodes) > 0) {
-    if (!module_exist('category_display') || $node->show_listing) {
+    if (!module_exists('category_display') || $node->show_listing) {
       $show_nodes = TRUE;
     }
   }
   else {
-    if (!module_exist('category_display')) {
-      if ($type == 'category-cont') {
+    if (!module_exists('category_display')) {
+      if ($type == 'category_cont') {
         if ($node->depth) {
           $show_nodes = TRUE;
         }
@@ -1594,7 +1604,7 @@
     }
     else {
       if ($node->show_listing) {
-        if ($type == 'category-cont') {
+        if ($type == 'category_cont') {
           if ($node->depth && $node->emptymsg) {
             $show_nodes = TRUE;
           }
@@ -1623,7 +1633,7 @@
                                    'href' => url('node/'. $node->nid .'/feed')));
 
     $use_views = FALSE;
-    if (module_exist('category_views')) {
+    if (module_exists('category_views')) {
       $use_views = category_views_is_visible($node, $type);
     }
 
@@ -1652,22 +1662,23 @@
  *   Themed output.
  */
 function theme_category_wrapper_status($type, $status) {
-  theme_add_style(drupal_get_path('module', 'category'). '/category.css');
-  $output = '';
+  drupal_add_css(drupal_get_path('module', 'category'). '/category.css');
+  $output = '<p>';
 
-  if (module_exist($type)) {
-    $status_string = $status ? ('<span class="category-wrapper-installed">'. t('installed'). '</span>') : ('<span class="category-wrapper-notinstalled">'. t('not installed'). '</span>');
-    $output .= '<p>'. t('The %type wrapper is currently %status-string.', array('%type' => $type, '%status-string' => $status_string)). "\n";
-
-    $install_string = $status ? t('Uninstall now') : t('Install now');
-    $op = $status ? 'uninstall' : 'install';
-    $output .= '<br/>'. (l($install_string, t('category/wrapper/%type/%op', array('%type' => $type, '%op' => $op)))). ".</p>\n";
+  if (module_exists($type)) {
+    if ($status) {
+      $output .= t('The %type wrapper is currently <span class="category-wrapper-installed">installed</span>.', array('%type' => $type)). "\n";
+      $output .= '<br/>'. l(t('Uninstall now'), "category/wrapper/$type/uninstall");
+    }
+    else {
+      $output .= '<p>'. t('The %type wrapper is currently <span class="category-wrapper-notinstalled">not installed</span>.', array('%type' => $type)). "\n";
+      $output .= '<br/>'. l(t('Install now'), "category/wrapper/$type/install");
+    }
   }
   else {
-    $status_string = '<span class="category-wrapper-notinstalled">'. t('not enabled'). '</span>';
-    $output .= '<p>'. t('The %type module (original or wrapper) is currently %status-string. You must enable it on the %module-admin-page before you can perform an install or an uninstall.', array('%type' => $type, '%status-string' => $status_string, '%module-admin-page' => l(t('module administration page'), 'admin/modules'))). "</p>\n";
+    $output .= t('The !type module (original or wrapper) is currently <span class="category-wrapper-notinstalled">not enabled</span>. You must enable it on the <a href="!module-admin-page">module administration page</a> before you can perform an install or an uninstall.', array('!type' => $type, '!module-admin-page' => url('admin/modules'))). "\n";
   }
-
+  $output .= '</p>';
   return $output;
 }
@@ -1940,7 +1951,7 @@
  *   specified node type.
  */
 function _category_type_allowed_container($type, $cnid) {
-  $cont_list = variable_get('category_nodeapi_'. $type .'_containers', array(0 => 'all'));
+  $cont_list = variable_get('category_nodeapi_containers_'. $type, array(0 => 'all'));

   if (empty($cont_list) || !is_array($cont_list)) {
     return TRUE; 
@@ -1969,3 +1980,11 @@
   // except' is selected, it is allowed.
   return $all_except;
 }
+
+/**
+ * Implementation of hook_simpletest().
+ */
+function category_simpletest() {
+  return array_keys(file_scan_directory(
+  drupal_get_path('module', 'category'). '/tests', '\.test$'));
+}
Index: category_display/category_display.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/category/category_display/category_display.module,v
retrieving revision 1.32
diff -u -r1.32 category_display.module
--- category_display/category_display.module	13 Nov 2006 13:19:37 -0000	1.32
+++ category_display/category_display.module	22 Nov 2006 01:10:44 -0000
@@ -12,8 +12,6 @@
  */
 function category_display_help($section) {
   switch ($section) {
-    case 'admin/modules#description':
-      return t('Allows additional output to be displayed and toggled for category and container nodes. Requires the category module.');
     case 'admin/help#category_display':
       return t('<p>The category display module allows additional output to be displayed and toggled for category and container nodes.</p><p>This module requires the category module.</p>');
   }
@@ -27,7 +25,7 @@
     case 'load':
       if (category_is_cat_or_cont($node->nid)) {
         $type = category_node_get_type($node);
-        $is_cat = $type == 'category-cat';
+        $is_cat = $type == 'category_cat';
         if (!$is_cat) {
           return (array)category_display_cont_load($node->nid, $node);
         }
@@ -57,7 +55,7 @@
       }
       elseif (category_is_cat_or_cont($node->nid, TRUE)) {
         $type = category_node_get_type($node);
-        $is_cat = $type == 'category-cat';
+        $is_cat = $type == 'category_cat';
         if (!$is_cat) {
           category_display_cont_update($node);
         }
@@ -66,7 +64,7 @@
     case 'delete':
       if (category_is_cat_or_cont($node->nid)) {
         $type = category_node_get_type($node);
-        $is_cat = $type == 'category-cat';
+        $is_cat = $type == 'category_cat';
         if (!$is_cat) {
           category_display_cont_delete($node->nid);
         }
@@ -333,7 +331,7 @@
     $navlinks = FALSE;
 
     $type = category_node_get_type($node);
-    $is_cat = $type == 'category-cat';
+    $is_cat = $type == 'category_cat';
     if ($node->toc_for_cats && ($is_cat || !$node->hidden_cont)) {
       $show_toc = TRUE;
     }
@@ -378,7 +376,7 @@
       }
 
       if (isset($toc) || isset($links)) {
-        theme_add_style(drupal_get_path('module', 'category_display'). '/category_display.css');
+        drupal_add_css(drupal_get_path('module', 'category_display'). '/category_display.css');
         $output .= '<div class="category-navigation">';
         if (isset($toc)) {
           $output .= $toc;
@@ -421,7 +419,7 @@
   if ($nid) {
     $node = node_load($nid);
     $type = category_node_get_type($node);
-    $is_cat = $type == 'category-cat';
+    $is_cat = $type == 'category_cat';
     if ($node->navlinks) {
       if ($is_cat || !$node->hidden_cont) {
         $dist_check = FALSE;
Index: category_export/category_export.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/category/category_export/category_export.module,v
retrieving revision 1.9
diff -u -r1.9 category_export.module
--- category_export/category_export.module	13 May 2006 14:28:36 -0000	1.9
+++ category_export/category_export.module	22 Nov 2006 01:10:44 -0000
@@ -11,8 +11,6 @@
  */
 function category_export_help($section) {
   switch ($section) {
-    case 'admin/modules#description':
-      return t('Allows category trees to be exported as printer-friendly HTML. Requires the category module.');
     case 'admin/help#category_menu':
       return t('<p>The category export module allows category trees to be exported as printer-friendly HTML. Users with the \'view printer-friendly categories\' permission will see a \'view printer-friendly version\' link on category pages, which they can click to access the printer-friendly HTML. This module requires the category module.</p>');
   }
@@ -26,7 +24,7 @@
     case 'load':
       if (category_is_cat_or_cont($node->nid)) {
         $type = category_node_get_type($node);
-        $is_cat = $type == 'category-cat';
+        $is_cat = $type == 'category_cat';
         if (!$is_cat) {
           return (array)category_export_cont_load($node->nid);
         }
@@ -56,7 +54,7 @@
       }
       elseif (category_is_cat_or_cont($node->nid, TRUE)) {
         $type = category_node_get_type($node);
-        $is_cat = $type == 'category-cat';
+        $is_cat = $type == 'category_cat';
         if (!$is_cat) {
           category_export_cont_update($node);
         }
@@ -64,7 +62,7 @@
       break;
     case 'delete':
       $type = category_node_get_type($node);
-      $is_cat = $type == 'category-cat';
+      $is_cat = $type == 'category_cat';
       if (!$is_cat) {
         category_export_cont_delete($node->nid);
       }
Index: category_legacy/category_legacy.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/category/category_legacy/category_legacy.module,v
retrieving revision 1.27
diff -u -r1.27 category_legacy.module
--- category_legacy/category_legacy.module	17 Sep 2006 14:57:02 -0000	1.27
+++ category_legacy/category_legacy.module	22 Nov 2006 01:10:44 -0000
@@ -12,8 +12,6 @@
  */
 function category_legacy_help($section) {
   switch ($section) {
-    case 'admin/modules#description':
-      return t('Allows you to convert your taxonomy and book data into category data, and vice versa. Requires the category module.');
     case 'admin/help#category_menu':
       return t('<p>The category legacy module lets you import vocabularies and terms from the taxonomy module, and books from the book module. These are then converted into containers and categories. You can also export containers and categories back to the taxonomy and book modules. It is strongly recommended that you back up all existing taxonomy and book data on your site, before performing any operations using this module.</p><p>This module requires the category module.</p>');
     case 'admin/category/legacy':
@@ -48,12 +46,14 @@
     $items[] = array(
       'path' => 'admin/category/legacy',
       'title' => t('category legacy'),
-      'callback' => 'category_legacy_import',
+      'callback' => 'drupal_get_form',
+      'callback arguments' => array('category_legacy_import_taxonomy_form'),
       'access' => user_access('administer categories'),
     );
     $items[] = array(
       'path' => 'admin/category/legacy/import',
       'title' => t('import'),
+      'callback arguments' => array('category_legacy_import_taxonomy_form'),
       'access' => user_access('administer categories'),
       'type' => MENU_DEFAULT_LOCAL_TASK,
       'weight' => -10,
@@ -61,12 +61,14 @@
     $items[] = array(
       'path' => 'admin/category/legacy/import/taxonomy',
       'title' => t('taxonomy'),
+      'callback arguments' => array('category_legacy_import_taxonomy_form'),
       'type' => MENU_DEFAULT_LOCAL_TASK,
       'weight' => -10,
     );
     $items[] = array(
       'path' => 'admin/category/legacy/import/book',
       'title' => t('book'),
+      'callback arguments' => array('category_legacy_import_book_form'),
       'access' => user_access('administer categories'),
       'type' => MENU_LOCAL_TASK,
       'weight' => -6,
@@ -74,7 +76,7 @@
     $items[] = array(
       'path' => 'admin/category/legacy/export',
       'title' => t('export'),
-      'callback' => 'category_legacy_export',
+      'callback arguments' => array('category_legacy_export_taxonomy_form'),
       'access' => user_access('administer categories'),
       'type' => MENU_LOCAL_TASK,
       'weight' => -6,
@@ -82,12 +84,14 @@
     $items[] = array(
       'path' => 'admin/category/legacy/export/taxonomy',
       'title' => t('taxonomy'),
+      'callback arguments' => array('category_legacy_export_taxonomy_form'),
       'type' => MENU_DEFAULT_LOCAL_TASK,
       'weight' => -10,
     );
     $items[] = array(
       'path' => 'admin/category/legacy/export/book',
       'title' => t('book'),
+      'callback arguments' => array('category_legacy_export_book_form'),
       'access' => user_access('administer categories'),
       'type' => MENU_LOCAL_TASK,
       'weight' => -6,
@@ -112,6 +116,29 @@
 }
 
 /**
+ * Implementation of hook_forms().
+ */
+function category_legacy_forms() {
+  $forms['category_legacy_import_book_form'] = array(
+    'callback' => 'category_legacy_import_form_build',
+    'callback arguments' => array('book'),
+  );
+  $forms['category_legacy_import_taxonomy_form'] = array(
+    'callback' => 'category_legacy_import_form_build',
+    'callback arguments' => array('taxonomy'),
+  );
+  $forms['category_legacy_export_book_form'] = array(
+    'callback' => 'category_legacy_export_form_build',
+    'callback arguments' => array('book'),
+  );
+  $forms['category_legacy_export_taxonomy_form'] = array(
+    'callback' => 'category_legacy_export_form_build',
+    'callback arguments' => array('taxonomy'),
+  );
+  return $forms;
+}
+
+/**
  * Implementation of hook_nodeapi().
  */
 function category_legacy_nodeapi(&$node, $op, $teaser = NULL, $page = NULL) {
@@ -119,7 +146,7 @@
     case 'delete':
       if (category_is_cat_or_cont($node->nid)) {
         $type = category_node_get_type($node);
-        $is_cat = $type == 'category-cat';
+        $is_cat = $type == 'category_cat';
         if ($is_cat) {
           category_legacy_map_delete($node->nid);
         }
@@ -175,7 +202,7 @@
         }
       }
 
-      if (module_exist('path')) {
+      if (module_exists('path')) {
         if ($edit['change_old_aliases']) {
           $paths = category_legacy_get_path_cache();
           foreach ($paths as $path) {
@@ -213,7 +240,7 @@
         }
       }
 
-      if (module_exist('path')) {
+      if (module_exists('path')) {
         if ($edit['change_old_aliases']) {
           $paths = category_legacy_get_path_cache();
           foreach ($paths as $path) {
@@ -245,7 +272,7 @@
 /**
  * Menu callback; displays the screen for importing taxonomy or book data.
  */
-function category_legacy_import($arg1 = 'import', $import_type = 'taxonomy') {
+function category_legacy_import_form_build($import_type, $arg1 = 'import') {
   $form = array();
 
   if ($import_type == 'taxonomy') {
@@ -293,12 +320,12 @@
       );
 
       $alias_paths = array(
-        '%taxonomy-path' => theme('placeholder', 'taxonomy/term/x'),
-        '%category-path' => theme('placeholder', 'node/y'),
-        '%taxonomy-rss' => theme('placeholder', 'taxonomy/term/x/0/feed'),
-        '%category-rss' => theme('placeholder', 'node/y/feed'),
-        '%taxonomy-query' => theme('placeholder', 'taxonomy/term/x+y'),
-        '%category-query' => theme('placeholder', 'category/x+y'),
+        '%taxonomy-path' => 'taxonomy/term/x',
+        '%category-path' => 'node/y',
+        '%taxonomy-rss' => 'taxonomy/term/x/0/feed',
+        '%category-rss' => 'node/y/feed',
+        '%taxonomy-query' => 'taxonomy/term/x+y',
+        '%category-query' => 'category/x+y',
       );
       $form['category_legacy']['redirect_old_paths'] = array(
         '#type' => 'radios',
@@ -308,7 +335,7 @@
         '#required' => TRUE,
       );
 
-      if (module_exist('path')) {
+      if (module_exists('path')) {
         $form['category_legacy']['change_old_aliases'] = array(
           '#type' => 'radios',
           '#title' => t('Change existing legacy path aliases'),
@@ -339,7 +366,7 @@
     );
   }
 
-  return drupal_get_form('category_legacy_import_'. $import_type, $form);
+  return $form;
 }
 
 /**
@@ -352,7 +379,7 @@
  * @return
  *   A themed form for display.
  */
-function theme_category_legacy_import_taxonomy($form) {
+function theme_category_legacy_import_taxonomy_form($form) {
   $output = '';
   $vocabularies = category_legacy_get_old_vocabularies();
 
@@ -361,7 +388,7 @@
   $rows = array();
 
   while ($data = db_fetch_object($result)) {
-    $rows[] = array(array('data' => form_render($form['vocabulary'][$data->vid]), 'align' => 'center'), $data->name, array('data' => $data->vid, 'align' => 'center'), array('data' => $data->tid_count, 'align' => 'center'));
+    $rows[] = array(array('data' => drupal_render($form['vocabulary'][$data->vid]), 'align' => 'center'), $data->name, array('data' => $data->vid, 'align' => 'center'), array('data' => $data->tid_count, 'align' => 'center'));
   }
 
   if (empty($rows)) {
@@ -372,7 +399,7 @@
   $output .= theme('pager', NULL, 50, 0);
 
   if (!empty($vocabularies)) {
-    $output .= form_render($form);
+    $output .= drupal_render($form);
   }
 
   return $output;
@@ -388,7 +415,7 @@
  * @return
  *   A themed form for display.
  */
-function theme_category_legacy_import_book($form) {
+function theme_category_legacy_import_book_form($form) {
   $output = '';
   $books = category_legacy_get_old_books();
 
@@ -397,7 +424,7 @@
   $rows = array();
 
   while ($data = db_fetch_object($result)) {
-    $rows[] = array(array('data' => form_render($form['books'][$data->nid]), 'align' => 'center'), $data->title, array('data' => $data->nid, 'align' => 'center'), array('data' => $data->child_count, 'align' => 'center'));
+    $rows[] = array(array('data' => drupal_render($form['books'][$data->nid]), 'align' => 'center'), $data->title, array('data' => $data->nid, 'align' => 'center'), array('data' => $data->child_count, 'align' => 'center'));
   }
 
   if (empty($rows)) {
@@ -408,13 +435,13 @@
   $output .= theme('pager', NULL, 50, 0);
 
   if (!empty($books)) {
-    $output .= form_render($form);
+    $output .= drupal_render($form);
   }
 
   return $output;
 }
 
-function category_legacy_import_taxonomy_validate($form_id, $form_values) {
+function category_legacy_import_taxonomy_form_validate($form_id, $form_values) {
   $vocabs_selected = FALSE;
 
   if (isset($form_values['vocabulary']) && is_array($form_values['vocabulary'])) {
@@ -431,7 +458,7 @@
   }
 }
 
-function category_legacy_import_book_validate($form_id, $form_values) {
+function category_legacy_import_book_form_validate($form_id, $form_values) {
   $books_selected = FALSE;
 
   if (isset($form_values['books']) && is_array($form_values['books'])) {
@@ -452,7 +479,7 @@
  * Control function for all actions that occur after the user submits the
  * taxonomy import form.
  */
-function category_legacy_import_taxonomy_submit($form_id, $form_values) {
+function category_legacy_import_taxonomy_form_submit($form_id, $form_values) {
   $vocabularies = array();
   $legacy_map = array();
 
@@ -529,7 +556,7 @@
  * Control function for all actions that occur after the user submits the
  * book import form.
  */
-function category_legacy_import_book_submit($form_id, $form_values) {
+function category_legacy_import_book_form_submit($form_id, $form_values) {
   $books = array();
 
   // Build all book data in one big nested array
@@ -573,7 +600,7 @@
 /**
  * Menu callback; displays the screen for exporting category data to taxonomy or book.
  */
-function category_legacy_export($export_type = 'taxonomy') {
+function category_legacy_export_form_build($export_type) {
   $form = array();
 
   $categories = category_legacy_get_old_containers($export_type);
@@ -608,7 +635,7 @@
         '#required' => TRUE,
       );
 
-      if (module_exist('path')) {
+      if (module_exists('path')) {
         $alias_paths = array(
           '%taxonomy-path' => theme('placeholder', 'taxonomy/term/x'),
           '%category-path' => theme('placeholder', 'node/y'),
@@ -659,7 +686,7 @@
     );
   }
 
-  return drupal_get_form('category_legacy_export_'. $export_type, $form);
+  return $form;
 }
 
 /**
@@ -672,7 +699,7 @@
  * @return
  *   A themed form for display.
  */
-function theme_category_legacy_export_taxonomy($form) {
+function theme_category_legacy_export_form_taxonomy_form($form) {
   $output = '';
   $containers = category_legacy_get_old_containers('taxonomy');
 
@@ -681,7 +708,7 @@
   $rows = array();
 
   while ($data = db_fetch_object($result)) {
-    $rows[] = array(array('data' => form_render($form['categories'][$data->nid]), 'align' => 'center'), $data->title, array('data' => $data->nid, 'align' => 'center'), array('data' => $data->cid_count, 'align' => 'center'));
+    $rows[] = array(array('data' => drupal_render($form['categories'][$data->nid]), 'align' => 'center'), $data->title, array('data' => $data->nid, 'align' => 'center'), array('data' => $data->cid_count, 'align' => 'center'));
   }
 
   if (empty($rows)) {
@@ -692,7 +719,7 @@
   $output .= theme('pager', NULL, 50, 0);
 
   if (!empty($containers)) {
-    $output .= form_render($form);
+    $output .= drupal_render($form);
   }
 
   return $output;
@@ -708,7 +735,7 @@
  * @return
  *   A themed form for display.
  */
-function theme_category_legacy_export_book($form) {
+function theme_category_legacy_export_book_form($form) {
   $output = '';
   $containers = category_legacy_get_old_containers('book');
 
@@ -717,7 +744,7 @@
   $rows = array();
 
   while ($data = db_fetch_object($result)) {
-    $rows[] = array(array('data' => form_render($form['categories'][$data->nid]), 'align' => 'center'), $data->title, array('data' => $data->nid, 'align' => 'center'), array('data' => $data->cid_count, 'align' => 'center'));
+    $rows[] = array(array('data' => drupal_render($form['categories'][$data->nid]), 'align' => 'center'), $data->title, array('data' => $data->nid, 'align' => 'center'), array('data' => $data->cid_count, 'align' => 'center'));
   }
 
   if (empty($rows)) {
@@ -728,13 +755,13 @@
   $output .= theme('pager', NULL, 50, 0);
 
   if (!empty($containers)) {
-    $output .= form_render($form);
+    $output .= drupal_render($form);
   }
 
   return $output;
 }
 
-function category_legacy_export_taxonomy_validate($form_id, $form_values) {
+function category_legacy_export_taxonomy_form_validate($form_id, $form_values) {
   $containers_selected = FALSE;
 
   if (isset($form_values['categories']) && is_array($form_values['categories'])) {
@@ -751,7 +778,7 @@
   }
 }
 
-function category_legacy_export_book_validate($form_id, $form_values) {
+function category_legacy_export_book_form_validate($form_id, $form_values) {
   $containers_selected = FALSE;
 
   if (isset($form_values['categories']) && is_array($form_values['categories'])) {
@@ -772,7 +799,7 @@
  * Control function for all actions that occur after the user submits the
  * taxonomy export form.
  */
-function category_legacy_export_taxonomy_submit($form_id, $form_values) {
+function category_legacy_export_taxonomy_form_submit($form_id, $form_values) {
   $containers = array();
   $legacy_map = array();
 
@@ -842,7 +869,7 @@
  * Control function for all actions that occur after the user submits the
  * book export form.
  */
-function category_legacy_export_book_submit($form_id, $form_values) {
+function category_legacy_export_book_form_submit($form_id, $form_values) {
   $containers = array();
 
   // Build all category data in one big nested array
@@ -1192,7 +1219,7 @@
 
   $node->title = $node->name;
   unset($node->name);
-  $node->type = 'category-cont';
+  $node->type = 'category_cont';
   $node->has_relations = $node->relations;
   unset($node->relations);
   if ($node->module == 'taxonomy') {
@@ -1217,7 +1244,7 @@
 function category_legacy_build_container_from_book($book) {
   $node = (object) $book;
 
-  $node->type = 'category-cont';
+  $node->type = 'category_cont';
   $node->module = 'category';
   $node->help = '';
   $node->description = '';
@@ -1301,7 +1328,7 @@
 
   $node->title = $node->name;
   unset($node->name);
-  $node->type = 'category-cat';
+  $node->type = 'category_cat';
   $node->cnid = $cnid;
 
   db_query('UPDATE {node} SET type = \'%s\' WHERE nid = %d', $node->type, $node->nid);
@@ -1343,7 +1370,7 @@
 function category_legacy_build_category_from_book($book, $cnid) {
   $node = (object) $book;
 
-  $node->type = 'category-cat';
+  $node->type = 'category_cat';
   $node->cnid = $cnid;
 
   $node->parents = array($node->parent);
Index: category_menu/category_menu.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/category/category_menu/category_menu.module,v
retrieving revision 1.37
diff -u -r1.37 category_menu.module
--- category_menu/category_menu.module	14 Nov 2006 06:14:50 -0000	1.37
+++ category_menu/category_menu.module	22 Nov 2006 01:10:44 -0000
@@ -11,8 +11,6 @@
  */
 function category_menu_help($section) {
   switch ($section) {
-    case 'admin/modules#description':
-      return t('Creates and manages a set of menu items that correspond to your site\'s category hierarchy. Requires the category module.');
     case 'admin/help#category_menu':
       return t('<p>The category menu module creates and manages a set of menu items that correspond to your site\'s category hierarchy. These menu items are static rather than dynamic, so that you can add other menu items (such as module index pages) as children using the menu module. Breadcrumbs for category and container pages (and, optionally, assigned node pages) will reflect the managed menu items. You can also display the menu as a block on your site.</p><p>This module requires the category module.</p>');
   }
Index: contrib/category_bulkedit/category_bulkedit.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/category/contrib/category_bulkedit/category_bulkedit.module,v
retrieving revision 1.9
diff -u -r1.9 category_bulkedit.module
--- contrib/category_bulkedit/category_bulkedit.module	10 Jul 2006 05:44:58 -0000	1.9
+++ contrib/category_bulkedit/category_bulkedit.module	22 Nov 2006 01:10:44 -0000
@@ -36,7 +36,8 @@
     $items[] = array(
       'path' => 'admin/category/bulkedit',
       'title' => t('bulk edit'),
-      'callback' => 'category_bulkedit_form',
+      'callback' => 'drupal_get_form',
+      'callback arguments' => array('category_bulkedit_form'),
       'access' => user_access('administer categories'),
       'type' => MENU_LOCAL_TASK,
       'weight' => 8,
@@ -48,8 +49,8 @@
       $items[] = array(
         'path' => 'admin/category/'. $nid .'/bulkedit',
         'title' => t('bulk edit'),
-        'callback' => 'category_bulkedit_form',
-        'callback arguments' => array('category-cat', $nid),
+        'callback' => 'drupal_get_form',
+        'callback arguments' => array('category_bulkedit_form', 'category_cat', $nid),
         'access' => user_access('administer categories'),
         'type' => MENU_LOCAL_TASK,
         'weight' => 8,
@@ -65,7 +66,7 @@
  * We set the 'real' #required attribute values here, but the final value of
  * #required attributes is handled by category_bulkedit_pre_render().
  */
-function category_bulkedit_form($type = 'category-cont', $cnid = NULL) {
+function category_bulkedit_form($type = 'category_cont', $cnid = NULL) {
   global $form_values;
   $form = array();
   $is_cat = is_numeric(arg(2));
@@ -76,7 +77,7 @@
 
   // Category / container selection, page 1
   $list_items = array();
-  if ($type == 'category-cont') {
+  if ($type == 'category_cont') {
     $containers = category_get_containers();
     foreach ($containers as $value) {
       $list_items[$value->cid] = $value->admin_title;
@@ -151,7 +152,7 @@
     '#weight' => 45
   );
 
-  return drupal_get_form('category_bulkedit_form' ,$form);
+  return $form;
 }
 
 /*
@@ -171,9 +172,9 @@
     if (!empty($elements)) {
       foreach ($elements as $key) {
         $row = array();
-        $row[] = array('data' => form_render($form['bulkedit'][$key]), 'align' => 'center');
-        $row[] = form_render($form['titles'][$key]);
-        $row[] = array('data' => form_render($form['nids'][$key]), 'align' => 'center');
+        $row[] = array('data' => drupal_render($form['bulkedit'][$key]), 'align' => 'center');
+        $row[] = drupal_render($form['titles'][$key]);
+        $row[] = array('data' => drupal_render($form['nids'][$key]), 'align' => 'center');
 
         $rows[] = $row;
       }
@@ -194,10 +195,10 @@
     if (!empty($elements)) {
       foreach ($elements as $key) {
         $row = array();
-        $row[] = array('data' => form_render($form['bulkedit_fields'][$key]), 'align' => 'center');
-        $row[] = form_render($form['field_titles'][$key]);
-        $row[] = form_render($form['field_types'][$key]);
-        $row[] = form_render($form['field_groups'][$key]);
+        $row[] = array('data' => drupal_render($form['bulkedit_fields'][$key]), 'align' => 'center');
+        $row[] = drupal_render($form['field_titles'][$key]);
+        $row[] = drupal_render($form['field_types'][$key]);
+        $row[] = drupal_render($form['field_groups'][$key]);
 
         $rows[] = $row;
       }
@@ -212,7 +213,7 @@
     $content .= theme('table', $header, $rows);
   }
   elseif (in_array($form['page']['#value'], array(4))) {
-    theme_add_style(drupal_get_path('module', 'category_bulkedit'). '/category_bulkedit.css');
+    drupal_add_css(drupal_get_path('module', 'category_bulkedit'). '/category_bulkedit.css');
 
     // Nodes to be edited - display
     $rows = array();
@@ -229,7 +230,7 @@
       $items_formatted = array();
 
       foreach ($items as $key => $value) {
-        $item_formatted = form_render($form['titles'][$key]);
+        $item_formatted = drupal_render($form['titles'][$key]);
         if (isset($form['titles'][$key])) {
           $items_formatted[] = $item_formatted;
         }
@@ -274,12 +275,12 @@
     if (!empty($fields)) {
       foreach ($fields as $key => $value) {
         $row = array();
-        $row[] = form_render($form['field_titles'][$key]);
+        $row[] = drupal_render($form['field_titles'][$key]);
         $form[$key]['#theme'] = 'category_bulkedit_field_preview';
         theme('category_bulkedit_field_preview', $form[$key], TRUE);
         $form[$key]['#type'] = 'markup';
         $form[$key]['#value'] = NULL;
-        $row[] = check_plain(form_render($form[$key]));
+        $row[] = check_plain(drupal_render($form[$key]));
         $rows[] = $row;
       }
       unset($form['field_titles']);
@@ -297,7 +298,7 @@
     $content .= '<p>'. t('When you click the <em>run bulk edit</em> button below, the bulk edit will be performed. The operation may take some time to complete, so please be patient and do not interrupt the process. This operation is <strong>irreversible</strong>, and it will potentially affect a large amount of data on your site. Please ensure that you have thoroughly checked all the information displayed on this page before proceeding.'). "</p>\n";
   }
 
-  $content .= form_render($form);
+  $content .= drupal_render($form);
 
   _category_bulkedit_set_help_text($form['page']['#value'], $is_cat);
 
Index: contrib/category_outliner/category_outliner.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/category/contrib/category_outliner/category_outliner.module,v
retrieving revision 1.2
diff -u -r1.2 category_outliner.module
--- contrib/category_outliner/category_outliner.module	17 May 2006 12:56:31 -0000	1.2
+++ contrib/category_outliner/category_outliner.module	22 Nov 2006 01:10:44 -0000
@@ -29,7 +29,8 @@
     $items[] = array(
       'path' => 'admin/category/list/outline',
       'title' => t('outline'),
-      'callback' => 'category_outliner_outline',
+      'callback' => 'drupal_get_form',
+      'callback arguments' => array('category_outliner_outline'),
       'access' => user_access('administer categories'),
       'type' => MENU_LOCAL_TASK,
       'weight' => -3,
@@ -37,7 +38,8 @@
     $items[] = array(
       'path' => 'admin/category/list/orphan',
       'title' => t('orphans'),
-      'callback' => 'category_outliner_orphan',
+      'callback' => 'drupal_get_form',
+      'callback arguments' => array('category_outliner_orphan'),
       'type' => MENU_LOCAL_TASK,
       'access' => user_access('administer categories'),
       'weight' => 0,
@@ -51,7 +53,8 @@
       $items[] = array(
         'path' => 'admin/category/' . $nid . '/list/outline',
         'title' => t('outline'),
-        'callback' => 'category_outliner_outline',
+        'callback' => 'drupal_get_form',
+        'callback arguments' => array('category_outliner_outline'),
         'access' => user_access('administer categories'),
         'type' => MENU_LOCAL_TASK,
         'weight' => -3,
@@ -60,7 +63,8 @@
       $items[] = array(
         'path' => 'admin/category/' . $nid . '/list/orphan',
         'title' => t('orphans'),
-        'callback' => 'category_outliner_orphan',
+        'callback' => 'drupal_get_form',
+        'callback arguments' => array('category_outliner_orphan'),
         'access' => user_access('administer categories'),
         'type' => MENU_LOCAL_TASK,
         'weight' => 0,
@@ -92,12 +96,12 @@
       '#type' => 'submit',
       '#value' => t('Save categories and containers'),
     );
-
-    return drupal_get_form('category_outliner_outline', $form);
   }
   else {
-    return '<p>'. t('There are no containers or categories.') .'</p>';
+    $form = array('#value' => '<p>'. t('There are no containers or categories.') .'</p>');
   }
+
+  return $form;
 }
 
 /**
@@ -141,12 +145,12 @@
       '#type' => 'submit',
       '#value' => t('Save categories and containers'),
     );
-
-    return drupal_get_form('category_outliner_outline', $form);
   }
   else {
-    return '<p>'. t('There are no orphan categories or containers.') .'</p>';
+    $form = array('#value' => '<p>'. t('There are no containers or categories.') .'</p>');
   }
+
+  return $form;
 }
 
 function category_outliner_outline_submit($form_id, $form_values) {
@@ -190,8 +194,8 @@
 
     $nid = $form[$key]['nid']['#value'];
     $rows[] = array(
-      '<div style="padding-left: '. (25 * $form[$key]['depth']['#value']) .'px;">'. form_render($form[$key]['title']) .'</div>',
-      form_render($form[$key]['weight']),
+      '<div style="padding-left: '. (25 * $form[$key]['depth']['#value']) .'px;">'. drupal_render($form[$key]['title']) .'</div>',
+      drupal_render($form[$key]['weight']),
       l(t('view'), 'node/'. $nid),
       l(t('edit'), 'node/'. $nid .'/edit', array(), $destination),
       l(t('delete'), 'node/'. $nid .'/delete', array(), $destination)
Index: contrib/category_transform/category_transform.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/category/contrib/category_transform/category_transform.module,v
retrieving revision 1.4
diff -u -r1.4 category_transform.module
--- contrib/category_transform/category_transform.module	17 May 2006 11:32:12 -0000	1.4
+++ contrib/category_transform/category_transform.module	22 Nov 2006 01:10:44 -0000
@@ -44,7 +44,7 @@
       if (isset($cat_types[$node->type])) {
         if (empty($category) || $category->cnid) {
           $items[] = array(
-            'path' => "node/$nid/category-cat",
+            'path' => "node/$nid/category_cat",
             'title' => t('category'),
             'callback' => 'category_transform_outline',
             'callback arguments' => array(arg(1)),
@@ -57,7 +57,7 @@
       if (isset($cont_types[$node->type])) {
         if (empty($category) || !$category->cnid) {
           $items[] = array(
-            'path' => "node/$nid/category-cont",
+            'path' => "node/$nid/category_cont",
             'title' => t('container'),
             'callback' => 'category_transform_outline',
             'callback arguments' => array(arg(1)),
@@ -87,8 +87,8 @@
         '#collapsed' => TRUE,
       );
       $options = node_get_types();
-      unset($options['category-cat']);
-      unset($options['category-cont']);
+      unset($options['category_cat']);
+      unset($options['category_cont']);
       $form['category_transform']['category_transform_node_types_cat'] = array(
         '#type' => 'checkboxes',
         '#title' => t('Node types that can be transformed into categories'),
@@ -117,14 +117,14 @@
  * @param $node
  *   The node being outlined.
  * @param $type
- *   The category type the node is being transformed into (either category-cat
- *   or category-cont).
+ *   The category type the node is being transformed into (either category_cat
+ *   or category_cont).
  *
  * @return
- *   The form as rendered by drupal_get_form().
+ *   The form to be rendered by drupal_get_form().
  */
 function category_transform_outline_form($node, $type) {
-  $form = category_get_form(($type == 'category-cat'), $node, FALSE);
+  $form = category_get_form(($type == 'category_cat'), $node, FALSE);
 
   if (category_is_cat_or_cont($node->nid)) {
     $form['update'] = array('#type' => 'submit', '#value' => t('Update category outline'));
@@ -134,8 +134,7 @@
     $form['add'] = array('#type' => 'submit', '#value' => t('Add to category outline'));
   }
 
-  drupal_set_title(check_plain($node->title));
-  return drupal_get_form('category_transform_outline', $form);
+  return $form;
 }
 
 /**
@@ -153,7 +152,9 @@
       $node->$key = $value;
     }
 
-    $output = category_transform_outline_form($node, $type);
+    drupal_set_title(check_plain($node->title));
+
+    $output = drupal_get_form('category_transform_outline_form', $node, $type);
   }
 
   return $output;
@@ -162,7 +163,7 @@
 /**
  * Implementation of hook_form_submit().
  */
-function category_transform_outline_submit($form_id, &$form_values) {
+function category_transform_outline_form_submit($form_id, &$form_values) {
   $op = $_POST['op'];
 
   $node = node_load(arg(1));
@@ -173,7 +174,7 @@
     $form_values['parents'] = array($form_values['parents']);
   }
   if (empty($form_values['parents'][0])) {
-    if ($type == 'category-cat') {
+    if ($type == 'category_cat') {
       $form_values['parents'][0] = $form_values['parent'] = $form_values['cnid'];
     }
     else {
Index: contrib/category_views/category_views.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/category/contrib/category_views/category_views.module,v
retrieving revision 1.5
diff -u -r1.5 category_views.module
--- contrib/category_views/category_views.module	13 May 2006 14:28:36 -0000	1.5
+++ contrib/category_views/category_views.module	22 Nov 2006 01:10:44 -0000
@@ -25,7 +25,7 @@
     case 'load':
       if (category_is_cat_or_cont($node->nid)) {
         $type = category_node_get_type($node);
-        $is_cat = $type == 'category-cat';
+        $is_cat = $type == 'category_cat';
         if (!$is_cat) {
           return (array)category_views_cont_load($node->nid);
         }
@@ -55,7 +55,7 @@
       }
       elseif (category_is_cat_or_cont($node->nid, TRUE)) {
         $type = category_node_get_type($node);
-        $is_cat = $type == 'category-cat';
+        $is_cat = $type == 'category_cat';
         if (!$is_cat) {
           category_views_cont_update($node);
         }
@@ -63,7 +63,7 @@
       break;
     case 'delete':
       $type = category_node_get_type($node);
-      $is_cat = $type == 'category-cat';
+      $is_cat = $type == 'category_cat';
       if (!$is_cat) {
         category_views_cont_delete($node->nid);
       }
@@ -229,10 +229,10 @@
   }
 
   if ($node->view_for_cats) {
-    if ($type == 'category-cont' && $node->view_display['cont']) {
+    if ($type == 'category_cont' && $node->view_display['cont']) {
       return TRUE;
     }
-    elseif ($type == 'category-cat' && $node->view_display['cat']) {
+    elseif ($type == 'category_cat' && $node->view_display['cat']) {
       return TRUE;
     }
   }
Index: wrappers/book.module.copyme
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/category/wrappers/book.module.copyme,v
retrieving revision 1.5
diff -u -r1.5 book.module.copyme
--- wrappers/book.module.copyme	31 May 2006 13:24:34 -0000	1.5
+++ wrappers/book.module.copyme	22 Nov 2006 01:10:44 -0000
@@ -254,13 +254,13 @@
   while (!$cnid && ($parent_node = node_load($parent))) {
     if (category_is_cat_or_cont($parent_node->nid)) {
       $type = category_node_get_type($parent_node);
-      if ($type == 'category-cont') {
+      if ($type == 'category_cont') {
         $cnid = $parent_node->nid;
       }
     }
   }
   $node->cnid = $cnid;
 
-  $node->type = $cnid ? 'category-cat' : 'category-cont';
+  $node->type = $cnid ? 'category-cat' : 'category_cont';
   $node->parents = $node->parent ? array($node->parent) : array();
 }
Index: wrappers/taxonomy.module.copyme
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/category/wrappers/taxonomy.module.copyme,v
retrieving revision 1.25
diff -u -r1.25 taxonomy.module.copyme
--- wrappers/taxonomy.module.copyme	6 Nov 2006 04:28:14 -0000	1.25
+++ wrappers/taxonomy.module.copyme	22 Nov 2006 01:10:44 -0000
@@ -14,7 +14,7 @@
  * print lists of terms associated with a node. Themes can print taxonomy
  * links with:
  *
- * if (module_exist('taxonomy')) {
+ * if (module_exists('taxonomy')) {
  *   $this->links(taxonomy_link('taxonomy terms', $node));
  * }
  */
@@ -49,7 +49,7 @@
   $items = array();
 
   if ($may_cache) {
-    if (!module_exist('category_legacy')) {
+    if (!module_exists('category_legacy')) {
       $items[] = array('path' => 'taxonomy/term', 'title' => t('taxonomy term'),
         'callback' => 'taxonomy_term_page',
         'access' => user_access('access content'),
@@ -132,7 +132,7 @@
   if (!$only_legacy) {
     $node->title = $edit['name'];
     $node->nid = $edit['vid'];
-    $node->type = 'category-cont';
+    $node->type = 'category_cont';
     $node->description = $edit['description'];
     $node->help = $edit['help'] ? $edit['help'] : '';
     $node->multiple = $edit['multiple'];
--- /dev/null	2005-11-20 21:22:37.000000000 -0600
+++ category_display/category_display.info	2006-11-21 18:14:38.000000000 -0600
@@ -0,0 +1,5 @@
+; $Id: $
+name = Category Display
+description = Allows additional output to be displayed and toggled for category and container nodes. Requires the category module.
+dependencies = category
+package = Category
--- /dev/null	2005-11-20 21:22:37.000000000 -0600
+++ category_export/category_export.info	2006-11-21 18:14:38.000000000 -0600
@@ -0,0 +1,5 @@
+; $Id: $
+name = Category Export
+description = Allows category trees to be exported as printer-friendly HTML.
+dependencies = category
+package = Category
--- /dev/null	2005-11-20 21:22:37.000000000 -0600
+++ category_legacy/category_legacy.info	2006-11-21 18:14:38.000000000 -0600
@@ -0,0 +1,5 @@
+; $Id: $
+name = Category Legacy
+description = Allows you to convert your taxonomy and book data into category data, and vice versa.
+dependencies = category
+package = Category
--- /dev/null	2005-11-20 21:22:37.000000000 -0600
+++ category_menu/category_menu.info	2006-11-21 18:14:38.000000000 -0600
@@ -0,0 +1,5 @@
+; $Id: $
+name = Category Menu
+description = Creates and manages a set of menu items that correspond to your site\'s category hierarchy.
+dependencies = category
+package = Category
--- /dev/null	2005-11-20 21:22:37.000000000 -0600
+++ category.info	2006-11-21 18:14:38.000000000 -0600
@@ -0,0 +1,4 @@
+; $Id: $
+name = Category
+description = Allows you to structure your site and categorize content.
+package = Category
