Index: misc/drupal.css
===================================================================
RCS file: /cvs/drupal/drupal/misc/drupal.css,v
retrieving revision 1.143
diff -u -p -r1.143 drupal.css
--- misc/drupal.css	7 Mar 2006 11:36:49 -0000	1.143
+++ misc/drupal.css	8 Mar 2006 21:50:39 -0000
@@ -1,4 +1,4 @@
-/* $Id: drupal.css,v 1.143 2006/03/07 11:36:49 dries Exp $ */
+/* $Id: drupal.css,v 1.142 2006/02/28 21:10:04 unconed Exp $ */
 
 /*
 ** HTML elements
@@ -247,9 +247,6 @@ tr.odd .form-item, tr.even .form-item {
 .book-navigation .page-next {
   text-align: left;
 }
-.archive {
-  margin: 1em 0 1em 0;
-}
 .calendar .row-week td a {
   display: block;
 }
@@ -344,10 +341,10 @@ dl.multiselect .form-item {
   height: 1.75em;
   margin: 0px;
 }
-#permissions td.module, #blocks td.region {
+#permissions td.module, #blocks td.region, #modules td.group  {
   font-weight: bold;
 }
-#permissions td.permission, #blocks td.block, #taxonomy td.term, #taxonomy td.message {
+#permissions td.permission, #blocks td.block, #taxonomy td.term, #taxonomy td.message, #modules td.module {
   padding-left: 1.5em;
 }
 
Index: modules/system.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/system.module,v
retrieving revision 1.298
diff -u -p -r1.298 system.module
--- modules/system.module	7 Mar 2006 11:28:22 -0000	1.298
+++ modules/system.module	8 Mar 2006 21:50:39 -0000
@@ -1,5 +1,5 @@
 <?php
-// $Id: system.module,v 1.298 2006/03/07 11:28:22 dries Exp $
+// $Id: system.module,v 1.297 2006/03/04 17:49:21 dries Exp $
 
 /**
  * @file
@@ -173,22 +173,27 @@ function system_user($type, $edit, &$use
       if (count($themes) > 1) {
         ksort($themes);
 
+        // Reset to follow site default theme if user selects the site default
+        if ($key == variable_get('theme_default', 'bluemarine')) {
+          $key = '';
+          if ($edit['theme'] == variable_get('theme_default', 'bluemarine')) {
+            $edit['theme'] = '';
+          }
+        }
+
         $form['themes'] = array(
           '#type' => 'fieldset', '#title' => t('Theme configuration'), '#description' => t('Selecting a different theme will change the look and feel of the site.'), '#weight' => 2, '#collapsible' => TRUE, '#theme' => 'system_user');
 
         foreach ($themes as $info) {
-          // For the default theme, revert to an empty string so the user's theme updates when the site theme is changed.
-          $info->key = $info->name == variable_get('theme_default', 'bluemarine') ? '' : $info->name;
-
           $info->screenshot = dirname($info->filename) . '/screenshot.png';
           $screenshot = file_exists($info->screenshot) ? theme('image', $info->screenshot, t('Screenshot for %theme theme', array('%theme' => $info->name)), '', array('class' => 'screenshot'), false) : t('no screenshot');
 
-          $form['themes'][$info->key]['screenshot'] = array('#type' => 'markup', '#value' => $screenshot);
-          $form['themes'][$info->key]['description'] = array('#type' => 'item', '#title' => $info->name,  '#value' => dirname($info->filename) . ($info->name == variable_get('theme_default', 'bluemarine') ? t('<br /> <em>(site default theme)</em>') : ''));
-          $options[$info->key] = '';
+         $form['themes'][$info->name]['screenshot'] = array('#type' => 'markup', '#value' => $screenshot);
+          $form['themes'][$info->name]['description'] = array('#type' => 'item', '#title' => $info->name,  '#value' => dirname($info->filename));
+          $options[$info->name] = '';
         }
 
-        $form['themes']['theme'] = array('#type' => 'radios', '#options' => $options, '#default_value' => $edit['theme'] ? $edit['theme'] : '');
+        $form['themes']['theme'] = array('#type' => 'radios', '#options' => $options, '#default_value' => $edit['theme'] ? $edit['theme'] : variable_get('theme_default', 'bluemarine'));
       }
     }
 
@@ -885,10 +890,14 @@ function system_modules() {
 
   ksort($files);
 
+  $order = array();
+
   foreach ($files as $filename => $file) {
     drupal_get_filename('module', $file->name, $file->filename);
     drupal_load('module', $file->name);
 
+    $order[basename(dirname($file->filename))][] = $file->name;
+
     $file->description = module_invoke($file->name, 'help', 'admin/modules#description');
 
     $form['name'][$file->name] = array('#value' => $file->name);
@@ -942,20 +951,35 @@ function system_modules() {
 
   $form['buttons']['submit'] = array('#type' => 'submit', '#value' => t('Save configuration'));
 
+  foreach ($order as $group => $files) {
+    if (count($files) == 1) {
+      $order['modules'][] = current($files);
+      unset($order[$group]);
+    }
+  }
+
+  sort($order['modules']);
+  $form['order'] = array('#type' => 'value', '#value' => $order);
   return drupal_get_form('system_modules', $form);
 }
 
 function theme_system_modules($form) {
-  foreach (element_children($form['name']) as $key) {
-    $row = array();
-    $row[] = form_render($form['name'][$key]);
-    $row[] = form_render($form['description'][$key]);
-    $row[] = array('data' => form_render($form['status'][$key]), 'align' => 'center');
+  foreach ($form['order']['#value'] as $group => $files) {
+    // only print header if more than 1 module in group.
+    if (count($files) > 1) {
+      $rows[] = array(array('data' => "$group", 'colspan' => 3, 'class' => 'group'));
+    }
+    foreach($files as $key) {
+      $row = array();
+      $row[] = array('data' => form_render($form['name'][$key]), 'class' => 'module');
+      $row[] = form_render($form['description'][$key]);
+      $row[] = array('data' => form_render($form['status'][$key]), 'align' => 'center');
 
-    if (module_exist('throttle')) {
-      $row[] = array('data' => form_render($form['throttle'][$key]), 'align' => 'center');
+      if (module_exist('throttle')) {
+        $row[] = array('data' => form_render($form['throttle'][$key]), 'align' => 'center');
+      }
+      $rows[] = $row;
     }
-    $rows[] = $row;
   }
 
   $header = array(t('Name'), t('Description'), t('Enabled'));
@@ -963,7 +987,7 @@ function theme_system_modules($form) {
     $header[] = t('Throttle');
   }
 
-  $output = theme('table', $header, $rows);
+  $output = theme('table', $header, $rows, array('id' => 'modules'));
   $output .= form_render($form);
   return $output;
 }
