Index: modules/system/system.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.admin.inc,v
retrieving revision 1.9
diff -u -p -r1.9 system.admin.inc
--- modules/system/system.admin.inc	1 Sep 2007 05:27:04 -0000	1.9
+++ modules/system/system.admin.inc	1 Sep 2007 14:17:55 -0000
@@ -21,28 +21,42 @@ function system_main_admin_page($arg = N
   if (system_status(TRUE)) {
     drupal_set_message(t('One or more problems were detected with your Drupal installation. Check the <a href="@status">status report</a> for more information.', array('@status' => url('admin/logs/status'))), 'error');
   }
-  $result = db_query("
-    SELECT *
-    FROM {menu_links} ml
-    INNER JOIN {menu_router} m ON ml.router_path = m.path
-    WHERE ml.link_path like 'admin/%' AND ml.link_path != 'admin/help' AND ml.depth = 2 AND ml.menu_name = 'navigation' AND hidden = 0
-    ORDER BY p1 ASC, p2 ASC, p3 ASC");
   $blocks = array();
-  while ($item = db_fetch_array($result)) {
-    _menu_link_translate($item);
-    if (!$item['access']) {
-      continue;
-    }
-    $block = $item;
-    $block['content'] = '';
-    if ($item['block_callback'] && function_exists($item['block_callback'])) {
-      $function = $item['block_callback'];
-      $block['content'] .= $function();
-    }
-    $block['content'] .= theme('admin_block_content', system_admin_menu_block($item));
-    $blocks[] = $block;
+  if ($admin = db_fetch_array(db_query("SELECT menu_name, mlid FROM {menu_links} WHERE link_path = 'admin' AND module = 'system'"))) {
+    $result = db_query("
+      SELECT m.*, ml.*
+      FROM {menu_links} ml
+      INNER JOIN {menu_router} m ON ml.router_path = m.path
+      WHERE ml.link_path != 'admin/help' AND menu_name = '%s' AND ml.plid = %d AND hidden = 0", $admin);
+    while ($item = db_fetch_array($result)) {
+      _menu_link_translate($item);
+      if (!$item['access']) {
+        continue;
+      }
+      // The link 'description' either derived from the hook_menu 'description'
+      // or entered by the user via menu module is saved as the title attribute.
+      if (!empty($item['options']['attributes']['title'])) {
+        $item['description'] = $item['options']['attributes']['title'];
+      }
+      $block = $item;
+      $block['content'] = '';
+      if ($item['block_callback'] && function_exists($item['block_callback'])) {
+        $function = $item['block_callback'];
+        $block['content'] .= $function();
+      }
+      $block['content'] .= theme('admin_block_content', system_admin_menu_block($item));
+      // Prepare for sorting as in function _menu_tree_check_access().
+      // The weight is offset so it is always positive, with a uniform 5-digits.
+      $blocks[(50000 + $item['weight']) .' '. $item['title'] .' '. $item['mlid']] = $block;
+    }
+  }
+  if ($blocks) {
+    ksort($blocks);
+    return theme('admin_page', $blocks);
+  }
+  else {
+    return t('You do not have any administrative items.');
   }
-  return theme('admin_page', $blocks);
 }
 
 
Index: modules/system/system.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.module,v
retrieving revision 1.525
diff -u -p -r1.525 system.module
--- modules/system/system.module	29 Aug 2007 14:57:49 -0000	1.525
+++ modules/system/system.module	1 Sep 2007 14:17:55 -0000
@@ -477,21 +477,28 @@ function system_user($type, $edit, &$use
 function system_admin_menu_block($item) {
   $content = array();
   if (!isset($item['mlid'])) {
-    $item['mlid'] = db_result(db_query("SELECT mlid FROM {menu_links} ml WHERE ml.router_path = '%s' AND menu_name = 'navigation'", $item['path']));
+    $item += db_fetch_array(db_query("SELECT mlid, menu_name FROM {menu_links} ml WHERE ml.router_path = '%s' AND module = 'system'", $item['path']));
   }
   $result = db_query("
-    SELECT *
+    SELECT m.*, ml.*
     FROM {menu_links} ml
     INNER JOIN {menu_router} m ON ml.router_path = m.path
-    WHERE ml.plid = %d AND ml.menu_name = 'navigation' AND hidden = 0
-    ORDER BY m.weight, m.title", $item['mlid']);
+    WHERE ml.plid = %d AND ml.menu_name = '%s' AND hidden = 0", $item['mlid'], $item['menu_name']);
   while ($item = db_fetch_array($result)) {
     _menu_link_translate($item);
     if (!$item['access']) {
       continue;
     }
-    $content[] = (array)$item;
+    // The link 'description' either derived from the hook_menu 'description' or
+    // entered by the user via menu module is saved as the title attribute.
+    if (!empty($item['options']['attributes']['title'])) {
+      $item['description'] = $item['options']['attributes']['title'];
+    }
+    // Prepare for sorting as in function _menu_tree_check_access().
+    // The weight is offset so it is always positive, with a uniform 5-digits.
+    $content[(50000 + $item['weight']) .' '. $item['title'] .' '. $item['mlid']] = $item;
   }
+  ksort($content);
   return $content;
 }
 
