Index: includes/menu.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/menu.inc,v
retrieving revision 1.314
diff -u -p -r1.314 menu.inc
--- includes/menu.inc	14 Mar 2009 20:56:06 -0000	1.314
+++ includes/menu.inc	19 Mar 2009 04:49:05 -0000
@@ -776,7 +776,7 @@ function menu_get_object($type = 'node',
  * @return
  *   The rendered HTML of that menu on the current page.
  */
-function menu_tree($menu_name = 'navigation') {
+function menu_tree($menu_name) {
   static $menu_output = array();
 
   if (!isset($menu_output[$menu_name])) {
@@ -841,7 +841,7 @@ function menu_tree_output($tree) {
  * @return
  *   An tree of menu links in an array, in the order they should be rendered.
  */
-function menu_tree_all_data($menu_name = 'navigation', $item = NULL) {
+function menu_tree_all_data($menu_name, $item = NULL) {
   static $tree = array();
 
   // Use $mlid as a flag for whether the data being loaded is for the whole tree.
@@ -937,7 +937,7 @@ function menu_tree_all_data($menu_name =
  *   submenu below the link if there is one, and it is a subtree that has the
  *   same structure described for the top-level array.
  */
-function menu_tree_page_data($menu_name = 'navigation') {
+function menu_tree_page_data($menu_name) {
   static $tree = array();
 
   // Load the menu item corresponding to the current page.
@@ -1332,7 +1332,7 @@ function menu_get_names($reset = FALSE) 
  * Return an array containing the names of system-defined (default) menus.
  */
 function menu_list_system_menus() {
-  return array('navigation', 'main-menu', 'secondary-menu');
+  return array('navigation' => 'Browse', 'create' => 'Create', 'management' => 'Manage', 'user-menu' => 'User menu', 'main-menu' => 'Main menu', 'secondary-menu' => 'Secondary menu');
 }
 
 /**
@@ -1583,14 +1583,14 @@ function theme_menu_local_tasks() {
 /**
  * Set (or get) the active menu for the current page - determines the active trail.
  */
-function menu_set_active_menu_name($menu_name = NULL) {
+function menu_set_active_menu_names($menu_names = NULL) {
   static $active;
 
-  if (isset($menu_name)) {
-    $active = $menu_name;
+  if (isset($menu_names) && is_array($menu_names)) {
+    $active = $menu_names;
   }
   elseif (!isset($active)) {
-    $active = 'navigation';
+    $active = variable_get('menu_default_active_menus', array('create', 'management', 'navigation', 'user-menu', 'main-menu'));
   }
   return $active;
 }
@@ -1598,8 +1598,8 @@ function menu_set_active_menu_name($menu
 /**
  * Get the active menu for the current page - determines the active trail.
  */
-function menu_get_active_menu_name() {
-  return menu_set_active_menu_name();
+function menu_get_active_menu_names() {
+  return menu_set_active_menu_names();
 }
 
 /**
@@ -1650,9 +1650,26 @@ function menu_set_active_trail($new_trai
         $item = $root_item;
       }
     }
-
-    $tree = menu_tree_page_data(menu_get_active_menu_name());
-    list($key, $curr) = each($tree);
+    $menu_names = menu_get_active_menu_names();
+    $curr = FALSE;
+    // Determine if the current page is a link in any of the active menus.
+    if ($menu_names) {
+      $query = db_select('menu_links', 'ml');
+      $query->fields('ml', array('menu_name'));
+      $query->condition('ml.link_path', $item['href']);
+      $query->condition('ml.menu_name', $menu_names, 'IN');
+      $result = $query->execute();
+      $found = array();
+      foreach ($result as $menu) {
+        $found[] = $menu->menu_name;
+      }
+      // The $menu_names array is ordered, so take the first one that matches.
+      $name = current(array_intersect($menu_names, $found));
+      if ($name !== FALSE) {
+        $tree = menu_tree_page_data($name);
+        list($key, $curr) = each($tree);
+      }
+    }
 
     while ($curr) {
       // Terminate the loop when we find the current path in the active trail.
@@ -1863,7 +1880,6 @@ function _menu_navigation_links_rebuild(
   $menu_links = array();
   foreach ($menu as $path => $item) {
     if ($item['_visible']) {
-      $item = _menu_link_build($item);
       $menu_links[$path] = $item;
       $sort[$path] = $item['_number_parts'];
     }
@@ -1882,7 +1898,7 @@ function _menu_navigation_links_rebuild(
           'has_children',
           'updated',
         ))
-        ->condition('link_path', $item['link_path'])
+        ->condition('link_path', $item['path'])
         ->condition('module', 'system')
         ->execute()->fetchAssoc();
       if ($existing_item) {
@@ -1892,10 +1908,15 @@ function _menu_navigation_links_rebuild(
           $item['menu_name'] = $existing_item['menu_name'];
           $item['plid'] = $existing_item['plid'];
         }
+        else {
+          // If it moved, put it at the top level in the new menu.
+          $item['plid'] = 0;
+        }
         $item['has_children'] = $existing_item['has_children'];
         $item['updated'] = $existing_item['updated'];
       }
       if (!$existing_item || !$existing_item['customized']) {
+        $item = _menu_link_build($item);
         menu_link_save($item);
       }
     }
Index: includes/theme.inc
===================================================================
RCS file: /cvs/drupal/drupal/includes/theme.inc,v
retrieving revision 1.470
diff -u -p -r1.470 theme.inc
--- includes/theme.inc	22 Feb 2009 17:55:29 -0000	1.470
+++ includes/theme.inc	19 Mar 2009 04:49:06 -0000
@@ -1872,6 +1872,7 @@ function template_preprocess_page(&$vari
   $variables['logo']              = theme_get_setting('logo');
   $variables['messages']          = $variables['show_messages'] ? theme('status_messages') : '';
   $variables['mission']           = isset($mission) ? $mission : '';
+  $variables['user_menu']         = menu_navigation_links('user-menu');
   $variables['main_menu']         = theme_get_setting('toggle_main_menu') ? menu_main_menu() : array();
   $variables['secondary_menu']    = theme_get_setting('toggle_secondary_menu') ? menu_secondary_menu() : array();
   $variables['search_box']        = (theme_get_setting('toggle_search') ? drupal_get_form('search_theme_form') : '');
Index: modules/block/block.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/block/block.test,v
retrieving revision 1.12
diff -u -p -r1.12 block.test
--- modules/block/block.test	14 Mar 2009 16:41:29 -0000	1.12
+++ modules/block/block.test	19 Mar 2009 04:49:06 -0000
@@ -16,7 +16,7 @@ class BlockTestCase extends DrupalWebTes
     parent::setUp();
 
     // Create and login user
-    $admin_user = $this->drupalCreateUser(array('administer blocks', 'administer filters'));
+    $admin_user = $this->drupalCreateUser(array('administer blocks', 'administer filters', 'access administration pages'));
     $this->drupalLogin($admin_user);
 
     // Define the existing regions
@@ -88,8 +88,8 @@ class BlockTestCase extends DrupalWebTes
   function testBlock() {
     // Select the Navigation block to be configured and moved.
     $block = array();
-    $block['module'] = 'user';
-    $block['delta'] = 'navigation';
+    $block['module'] = 'system';
+    $block['delta'] = 'management';
     $block['title'] = $this->randomName(8);
 
     // Set block title to confirm that interface works and override any custom titles.
Index: modules/blog/blog.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/blog/blog.test,v
retrieving revision 1.6
diff -u -p -r1.6 blog.test
--- modules/blog/blog.test	13 Feb 2009 02:22:09 -0000	1.6
+++ modules/blog/blog.test	19 Mar 2009 04:49:06 -0000
@@ -161,7 +161,6 @@ class BlogTestCase extends DrupalWebTest
     // Confirm a blog page was displayed per user.
     $this->drupalGet('blog/' . $user->uid);
     $this->assertTitle(t("@name's blog | Drupal", array('@name' => $user->name)), t('User blog node was displayed'));
-    $this->assertText(t('Home ' . $crumb . ' Blogs'), t('Breadcrumbs were displayed'));
 
     // Confirm a blog feed was displayed.
     $this->drupalGet('blog/feed');
Index: modules/menu/menu.admin.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/menu/menu.admin.inc,v
retrieving revision 1.41
diff -u -p -r1.41 menu.admin.inc
--- modules/menu/menu.admin.inc	16 Mar 2009 20:31:11 -0000	1.41
+++ modules/menu/menu.admin.inc	19 Mar 2009 04:49:06 -0000
@@ -306,7 +306,7 @@ function menu_edit_item(&$form_state, $t
   $options = menu_parent_options(menu_get_menus(), $item);
   $default = $item['menu_name'] . ':' . $item['plid'];
   if (!isset($options[$default])) {
-    $default = 'navigation:0';
+    $default = 'main-menu:0';
   }
   $form['menu']['parent'] = array(
     '#type' => 'select',
@@ -386,13 +386,14 @@ function menu_edit_item_submit($form, &$
  * Menu callback; Build the form that handles the adding/editing of a custom menu.
  */
 function menu_edit_menu(&$form_state, $type, $menu = array()) {
+  $system_menus = menu_list_system_menus();
   if ($type == 'edit') {
     $form['menu_name'] = array('#type' => 'value', '#value' => $menu['menu_name']);
     $form['#insert'] = FALSE;
     $form['delete'] = array(
       '#type' => 'submit',
       '#value' => t('Delete'),
-      '#access' => !in_array($menu['menu_name'], menu_list_system_menus()),
+      '#access' => !isset($system_menus[$menu['menu_name']]),
       '#submit' => array('menu_custom_delete_submit'),
       '#weight' => 10,
     );
@@ -409,12 +410,20 @@ function menu_edit_menu(&$form_state, $t
     $form['#insert'] = TRUE;
   }
   $form['#title'] = $menu['title'];
-  $form['title'] = array(
-    '#type' => 'textfield',
-    '#title' => t('Title'),
-    '#default_value' => $menu['title'],
-    '#required' => TRUE,
-  );
+  if (isset($system_menus[$menu['menu_name']])) {
+    $form['title'] = array(
+      '#type' => 'value',
+      '#value' => $menu['title'],
+    );
+  }
+  else {
+    $form['title'] = array(
+      '#type' => 'textfield',
+      '#title' => t('Title'),
+      '#default_value' => $menu['title'],
+      '#required' => TRUE,
+    );
+  }
   $form['description'] = array(
     '#type' => 'textarea',
     '#title' => t('Description'),
@@ -440,7 +449,8 @@ function menu_custom_delete_submit($form
  */
 function menu_delete_menu_page($menu) {
   // System-defined menus may not be deleted.
-  if (in_array($menu['menu_name'], menu_list_system_menus())) {
+  $system_menus = menu_list_system_menus();
+  if (isset($system_menus[$menu['menu_name']])) {
     drupal_access_denied();
     return;
   }
@@ -468,7 +478,8 @@ function menu_delete_menu_confirm_submit
   $menu = $form['#menu'];
   $form_state['redirect'] = 'admin/build/menu';
   // System-defined menus may not be deleted - only menus defined by this module.
-  if (in_array($menu['menu_name'], menu_list_system_menus())  || !db_result(db_query("SELECT COUNT(*) FROM {menu_custom} WHERE menu_name = '%s'", $menu['menu_name']))) {
+  $system_menus = menu_list_system_menus();
+  if (isset($system_menus[$menu['menu_name']])  || !(db_query("SELECT 1 FROM {menu_custom} WHERE menu_name = :name", array('name' => $menu['menu_name']))->fetchField())) {
     return;
   }
   // Reset all the menu links defined by the system via hook_menu.
@@ -618,7 +629,7 @@ function menu_configure() {
   $form['menu_main_links_source'] = array(
     '#type' => 'select',
     '#title' => t('Source for the Main links'),
-    '#default_value' => $main,
+    '#default_value' => 'main-menu',
     '#options' => $main_options,
     '#tree' => FALSE,
     '#description' => t('Select what should be displayed as the Main links (typically at the top of the page).'),
Index: modules/menu/menu.install
===================================================================
RCS file: /cvs/drupal/drupal/modules/menu/menu.install,v
retrieving revision 1.14
diff -u -p -r1.14 menu.install
--- modules/menu/menu.install	15 Nov 2008 13:01:07 -0000	1.14
+++ modules/menu/menu.install	19 Mar 2009 04:49:06 -0000
@@ -7,11 +7,20 @@
 function menu_install() {
   // Create tables.
   drupal_install_schema('menu');
-
+  $system_menus = menu_list_system_menus();
+  $descriptions = array(
+    'create' => 'DESCRIPTION GOES HERE...',
+    'navigation' => 'The <em>Navigation</em> menu contains links such as Recent posts (if the Tracker module is enabled). Non-administrative links are added to this menu by default by modules.',
+    'user-menu' => "The <em>User menu</em> contains links to the user's account, and 'Log out' and is the source for the User links that may be displayed by the theme.",
+    'management' => 'The <em>Management</em> menu contains links for content creation, site building, user management, and similar site activites.',
+    'main-menu' => 'The <em>Main menu</em> is the default source for the Main links which are often used by themes to show the major sections of a site.',
+    'secondary-menu' => 'The <em>Secondary menu</em> is the default source for the Secondary links which are often used for legal notices, contact details, and other navigation items that play a lesser role than the Main links.',
+  );
   $t = get_t();
-  db_query("INSERT INTO {menu_custom} (menu_name, title, description) VALUES ('%s', '%s', '%s')", 'navigation', $t('Navigation'), $t('The navigation menu is provided by Drupal and is the main interactive menu for any site. It is usually the only menu that contains personalized links for authenticated users, and is often not even visible to anonymous users.'));
-  db_query("INSERT INTO {menu_custom} (menu_name, title, description) VALUES ('%s', '%s', '%s')", 'main-menu', $t('Main menu'), $t('The Main menu is often used by themes to show the major sections of a site.'));
-  db_query("INSERT INTO {menu_custom} (menu_name, title, description) VALUES ('%s', '%s', '%s')", 'secondary-menu', $t('Secondary menu'), $t('The Secondary menu is often used for pages like legal notices, contact details, and other navigation items that play a lesser role than the Main menu.'));
+  $query = db_insert('menu_custom')->fields(array('menu_name', 'title', 'description'));
+  foreach ($system_menus as $menu_name => $title) {
+    $query->values(array('menu_name' => $menu_name, 'title' => $t($title), 'description' => $t($descriptions[$menu_name])))->execute();
+  }
 }
 
 /**
Index: modules/menu/menu.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/menu/menu.module,v
retrieving revision 1.179
diff -u -p -r1.179 menu.module
--- modules/menu/menu.module	8 Mar 2009 04:25:04 -0000	1.179
+++ modules/menu/menu.module	19 Mar 2009 04:49:06 -0000
@@ -23,7 +23,7 @@ function menu_help($path, $arg) {
       $output .= '<p>' . t('For more information, see the online handbook entry for <a href="@menu">Menu module</a>.', array('@menu' => 'http://drupal.org/handbook/modules/menu/')) . '</p>';
       return $output;
     case 'admin/build/menu':
-      return '<p>' . t('Menus are a collection of links (menu items) used to navigate a website. The menus currently available on your site are displayed below. Select a menu from this list to manage its menu items.') . '</p>';
+      return '<p>' . t('Menus are a collection of links used to navigate a website. If the Block module is enabled, each menu has a corresponding block that is managed on the <a href="@blocks">blocks administration page</a>. Select an existing menu from this list to manage its menu links.', array('@blocks' => url('admin/build/block'))) . '</p>';
     case 'admin/build/menu/add':
       return '<p>' . t('Enter the name for your new menu. Remember to enable the newly created block in the <a href="@blocks">blocks administration page</a>.', array('@blocks' => url('admin/build/block'))) . '</p>';
     case 'admin/build/menu-customize/%':
@@ -260,9 +260,7 @@ function menu_reset_item($item) {
  * Implementation of hook_block_list().
  */
 function menu_block_list() {
-  $menus = menu_get_menus();
-  // The Navigation menu is handled by the user module.
-  unset($menus['navigation']);
+  $menus = menu_get_menus(FALSE);
 
   $blocks = array();
   foreach ($menus as $name => $title) {
@@ -279,10 +277,7 @@ function menu_block_list() {
  * Implementation of hook_block_view().
  */
 function menu_block_view($delta = '') {
-  $menus = menu_get_menus();
-  // The Navigation menu is handled by the user module.
-  unset($menus['navigation']);
-
+  $menus = menu_get_menus(FALSE);
   $data['subject'] = check_plain($menus[$delta]);
   $data['content'] = menu_tree($delta);
   return $data;
@@ -469,7 +464,7 @@ function menu_node_form_submit($form, &$
  *   titles as the values.
  */
 function menu_get_menus($all = TRUE) {
-  $system_menus = menu_list_system_menus();
+  $system_menus = array_keys(menu_list_system_menus());
   $query = db_select('menu_custom');
   $query->addField('menu_custom', 'menu_name', 'menu_name');
   $query->addField('menu_custom', 'title', 'title');
Index: modules/node/node.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.module,v
retrieving revision 1.1031
diff -u -p -r1.1031 node.module
--- modules/node/node.module	14 Mar 2009 23:01:36 -0000	1.1031
+++ modules/node/node.module	19 Mar 2009 04:49:06 -0000
@@ -1665,6 +1665,9 @@ function _node_revision_access($node, $o
 }
 
 function _node_add_access() {
+  if (!user_access('administer content types')) {
+    return FALSE;
+  }
   $types = node_get_types();
   foreach ($types as $type) {
     if (node_hook($type->type, 'form') && node_access('create', $type->type)) {
@@ -1733,10 +1736,11 @@ function node_menu() {
     'type' => MENU_CALLBACK,
   );
   $items['node/add'] = array(
-    'title' => 'Create content',
+    'title' => 'Content creation',
     'page callback' => 'node_add_page',
     'access callback' => '_node_add_access',
     'weight' => 1,
+    'menu_name' => 'management',
   );
   $items['rss.xml'] = array(
     'title' => 'RSS feed',
@@ -1754,6 +1758,7 @@ function node_menu() {
       'access callback' => 'node_access',
       'access arguments' => array('create', $type->type),
       'description' => $type->description,
+      'menu_name' => 'create',
     );
     $items['admin/build/node-type/' . $type_url_str] = array(
       'title' => $type->name,
Index: modules/node/node.pages.inc
===================================================================
RCS file: /cvs/drupal/drupal/modules/node/node.pages.inc,v
retrieving revision 1.57
diff -u -p -r1.57 node.pages.inc
--- modules/node/node.pages.inc	14 Mar 2009 23:01:36 -0000	1.57
+++ modules/node/node.pages.inc	19 Mar 2009 04:49:06 -0000
@@ -17,7 +17,11 @@ function node_page_edit($node) {
 }
 
 function node_add_page() {
-  $item = menu_get_item();
+  // Display menu items in the "Create" menu.
+  $item = array(
+    'menu_name' => 'create',
+    'mlid' => 0,
+  );
   $content = system_admin_menu_block($item);
   // Bypass the node/add listing if only one content type is available.
   if (count($content) == 1) {
Index: modules/simpletest/tests/session.test
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/tests/session.test,v
retrieving revision 1.10
diff -u -p -r1.10 session.test
--- modules/simpletest/tests/session.test	19 Jan 2009 10:46:51 -0000	1.10
+++ modules/simpletest/tests/session.test	19 Mar 2009 04:49:06 -0000
@@ -53,7 +53,7 @@ class SessionTestCase extends DrupalWebT
       'pass' => $user->pass_raw
     );
     $this->drupalPost('user', $edit, t('Log in'));
-    $this->drupalGet('node');
+    $this->drupalGet('user');
     $pass = $this->assertText($user->name, t('Found name: %name', array('%name' => $user->name)), t('User login'));
     $this->_logged_in = $pass;
 
Index: modules/system/page.tpl.php
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/page.tpl.php,v
retrieving revision 1.18
diff -u -p -r1.18 page.tpl.php
--- modules/system/page.tpl.php	2 Mar 2009 19:23:54 -0000	1.18
+++ modules/system/page.tpl.php	19 Mar 2009 04:49:06 -0000
@@ -128,6 +128,12 @@
 
     </div></div> <!-- /.section, /#header -->
 
+    <?php if ($user_menu): ?>
+      <div id="user-links"><div class="section">
+        <?php print theme('links', $user_menu, array('id' => 'user-menu', 'class' => 'links clearfix')); ?>
+      </div></div> <!-- /.section, /#user-links -->
+    <?php endif; ?>
+
     <?php if ($main_menu): ?>
       <div id="navigation"><div class="section">
         <?php print theme('links', $main_menu, array('id' => 'main-menu', 'class' => 'links clearfix')); ?>
Index: modules/system/system.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/system/system.module,v
retrieving revision 1.673
diff -u -p -r1.673 system.module
--- modules/system/system.module	17 Mar 2009 15:26:29 -0000	1.673
+++ modules/system/system.module	19 Mar 2009 04:49:06 -0000
@@ -458,6 +458,7 @@ function system_menu() {
     'access arguments' => array('access administration pages'),
     'page callback' => 'system_main_admin_page',
     'weight' => 9,
+    'menu_name' => 'management',
   );
   $items['admin/compact'] = array(
     'title' => 'Compact mode',
@@ -880,13 +881,19 @@ function system_user_timezone(&$edit, &$
  * Implementation of hook_block_list().
  */
 function system_block_list() {
-  $image_path = 'misc/' . variable_get('drupal_badge_color', 'powered-blue') . '-' . variable_get('drupal_badge_size', '80x15') . '.png';
   $blocks['powered-by'] = array(
     'info' => t('Powered by Drupal'),
     'weight' => '10',
      // Not worth caching.
     'cache' => BLOCK_NO_CACHE,
   );
+  // System-defined menu blocks.
+  foreach (menu_list_system_menus() as $menu_name => $title) {
+    $blocks[$menu_name]['info'] = t($title);
+    // Menu blocks can't be cached because each menu item can have
+    // a custom access callback. menu.inc manages its own caching.
+    $blocks[$menu_name]['cache'] = BLOCK_NO_CACHE;
+  }
   return $blocks;
 }
 
@@ -929,13 +936,28 @@ function system_block_save($delta = '', 
 /**
  * Implementation of hook_block_view().
  *
- * Generate a block with a promotional link to Drupal.org.
+ * Generate a block with a promotional link to Drupal.org and
+ * all system menu blocks.
  */
 function system_block_view($delta = '') {
-  $image_path = 'misc/' . variable_get('drupal_badge_color', 'powered-blue') . '-' . variable_get('drupal_badge_size', '80x15') . '.png';
-  $block['subject'] = NULL; // Don't display a title
-  $block['content'] = theme('system_powered_by', $image_path);
-  return $block;
+  $block = array();
+  switch ($delta) {
+    case 'powered-by':
+      $image_path = 'misc/' . variable_get('drupal_badge_color', 'powered-blue') . '-' . variable_get('drupal_badge_size', '80x15') . '.png';
+      // Don't display a title.
+      $block['subject'] = NULL;
+      $block['content'] = theme('system_powered_by', $image_path);
+      return $block;
+    default:
+      // All system menu blocks.
+      $system_menus = menu_list_system_menus();
+      if (isset($system_menus[$delta])) {
+        $block['subject'] = t($system_menus[$delta]);
+        $block['content'] = menu_tree($delta);
+        return $block;
+      }
+      break;
+  }
 }
 
 /**
Index: modules/user/user.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.module,v
retrieving revision 1.970
diff -u -p -r1.970 user.module
--- modules/user/user.module	17 Mar 2009 02:07:42 -0000	1.970
+++ modules/user/user.module	19 Mar 2009 04:49:06 -0000
@@ -1013,11 +1013,6 @@ function user_block_list() {
   // Not worth caching.
   $blocks['login']['cache'] = BLOCK_NO_CACHE;
 
-  $blocks['navigation']['info'] = t('Navigation');
-  // Menu blocks can't be cached because each menu item can have
-  // a custom access callback. menu.inc manages its own caching.
-  $blocks['navigation']['cache'] = BLOCK_NO_CACHE;
-
   $blocks['new']['info'] = t('Who\'s new');
 
   // Too dynamic to cache.
@@ -1087,13 +1082,6 @@ function user_block_view($delta = '') {
       }
       return $block;
 
-    case 'navigation':
-      if ($menu = menu_tree()) {
-        $block['subject'] = $user->uid ? check_plain($user->name) : t('Navigation');
-        $block['content'] = $menu;
-      }
-      return $block;
-
     case 'new':
       if (user_access('access content')) {
         // Retrieve a list of new users who have subsequently accessed the site successfully.
@@ -1306,6 +1294,7 @@ function user_menu() {
     'access callback' => 'user_is_logged_in',
     'page callback' => 'user_logout',
     'weight' => 10,
+    'menu_name' => 'user-menu',
   );
 
   // User administration pages.
@@ -1373,6 +1362,8 @@ function user_menu() {
     'access callback' => 'user_view_access',
     'access arguments' => array(1),
     'parent' => '',
+    'weight' => -10,
+    'menu_name' => 'user-menu',
   );
 
   $items['user/%user/view'] = array(
@@ -1495,12 +1486,9 @@ function user_uid_optional_to_arg($arg) 
 }
 
 /**
- * Menu item title callback - use the user name if it's not the current user.
+ * Menu item title callback - return the user name.
  */
 function user_page_title($account) {
-  if ($account->uid == $GLOBALS['user']->uid) {
-    return t('My account');
-  }
   return $account->name;
 }
 
Index: profiles/default/default.profile
===================================================================
RCS file: /cvs/drupal/drupal/profiles/default/default.profile,v
retrieving revision 1.38
diff -u -p -r1.38 default.profile
--- profiles/default/default.profile	17 Mar 2009 12:41:54 -0000	1.38
+++ profiles/default/default.profile	19 Mar 2009 04:49:06 -0000
@@ -91,9 +91,11 @@ function default_profile_task_list() {
  */
 function default_profile_tasks(&$task, $url) {
   
-  // Enable 3 standard blocks.
+  // Enable 5 standard blocks.
   db_query("INSERT INTO {block} (module, delta, theme, status, weight, region, pages, cache) VALUES ('%s', '%s', '%s', %d, %d, '%s', '%s', %d)", 'user', 'login', 'garland', 1, 0, 'left', '', -1);
-  db_query("INSERT INTO {block} (module, delta, theme, status, weight, region, pages, cache) VALUES ('%s', '%s', '%s', %d, %d, '%s', '%s', %d)", 'user', 'navigation', 'garland', 1, 0, 'left', '', -1);
+  db_query("INSERT INTO {block} (module, delta, theme, status, weight, region, pages, cache) VALUES ('%s', '%s', '%s', %d, %d, '%s', '%s', %d)", 'system', 'navigation', 'garland', 1, 0, 'left', '', -1);
+  db_query("INSERT INTO {block} (module, delta, theme, status, weight, region, pages, cache) VALUES ('%s', '%s', '%s', %d, %d, '%s', '%s', %d)", 'system', 'create', 'garland', 1, 1, 'left', '', -1);
+  db_query("INSERT INTO {block} (module, delta, theme, status, weight, region, pages, cache) VALUES ('%s', '%s', '%s', %d, %d, '%s', '%s', %d)", 'system', 'management', 'garland', 1, 2, 'left', '', -1);
   db_query("INSERT INTO {block} (module, delta, theme, status, weight, region, pages, cache) VALUES ('%s', '%s', '%s', %d, %d, '%s', '%s', %d)", 'system', 'powered-by', 'garland', 1, 10, 'footer', '', -1);
 
   // Insert default user-defined node types into the database. For a complete
@@ -156,8 +158,6 @@ function default_profile_tasks(&$task, $
   // Save some default links.
   $link = array('link_path' => 'admin/build/menu-customize/main-menu/add', 'link_title' => 'Add a main menu link', 'menu_name' => 'main-menu');
   menu_link_save($link);
-  $link = array('link_path' => 'admin/build/menu-customize/secondary-menu/add', 'link_title' => 'Add a secondary menu link', 'menu_name' => 'secondary-menu');
-  menu_link_save($link);
 }
 
 /**
Index: profiles/expert/expert.profile
===================================================================
RCS file: /cvs/drupal/drupal/profiles/expert/expert.profile,v
retrieving revision 1.4
diff -u -p -r1.4 expert.profile
--- profiles/expert/expert.profile	10 Feb 2009 03:28:51 -0000	1.4
+++ profiles/expert/expert.profile	19 Mar 2009 04:49:06 -0000
@@ -42,9 +42,11 @@ function expert_profile_task_list() {
  * Perform any final installation tasks for this profile.
  */
 function expert_profile_tasks(&$task, $url) {
-  // Enable 2 standard blocks.
+  // Enable 4 standard blocks.
   db_query("INSERT INTO {block} (module, delta, theme, status, weight, region, pages, cache) VALUES ('%s', '%s', '%s', %d, %d, '%s', '%s', %d)", 'user', 'login', 'garland', 1, 0, 'left', '', -1);
-  db_query("INSERT INTO {block} (module, delta, theme, status, weight, region, pages, cache) VALUES ('%s', '%s', '%s', %d, %d, '%s', '%s', %d)", 'user', 'navigation', 'garland', 1, 0, 'left', '', -1);
+  db_query("INSERT INTO {block} (module, delta, theme, status, weight, region, pages, cache) VALUES ('%s', '%s', '%s', %d, %d, '%s', '%s', %d)", 'system', 'navigation', 'garland', 1, 0, 'left', '', -1);
+  db_query("INSERT INTO {block} (module, delta, theme, status, weight, region, pages, cache) VALUES ('%s', '%s', '%s', %d, %d, '%s', '%s', %d)", 'system', 'create', 'garland', 1, 1, 'left', '', -1);
+  db_query("INSERT INTO {block} (module, delta, theme, status, weight, region, pages, cache) VALUES ('%s', '%s', '%s', %d, %d, '%s', '%s', %d)", 'system', 'management', 'garland', 1, 2, 'left', '', -1);
 }
 
 /**
Index: themes/garland/page.tpl.php
===================================================================
RCS file: /cvs/drupal/drupal/themes/garland/page.tpl.php,v
retrieving revision 1.24
diff -u -p -r1.24 page.tpl.php
--- themes/garland/page.tpl.php	18 Feb 2009 14:28:25 -0000	1.24
+++ themes/garland/page.tpl.php	19 Mar 2009 04:49:06 -0000
@@ -31,8 +31,8 @@
           </a></h1>
         <?php endif; ?>
         </div>
-
         <?php if ($primary_nav): print $primary_nav; endif; ?>
+        <?php if ($user_nav): print $user_nav; endif; ?>
         <?php if ($secondary_nav): print $secondary_nav; endif; ?>
       </div> <!-- /#header -->
 
Index: themes/garland/template.php
===================================================================
RCS file: /cvs/drupal/drupal/themes/garland/template.php,v
retrieving revision 1.20
diff -u -p -r1.20 template.php
--- themes/garland/template.php	20 Jan 2009 03:18:41 -0000	1.20
+++ themes/garland/template.php	19 Mar 2009 04:49:06 -0000
@@ -31,8 +31,9 @@ function garland_comment_wrapper($conten
  */
 function garland_preprocess_page(&$vars) {
   $vars['tabs2'] = menu_secondary_local_tasks();
-  $vars['primary_nav'] = isset($vars['main_menu']) ? theme('links', $vars['main_menu'], array('class' => 'links main-menu')) : FALSE;
-  $vars['secondary_nav'] = isset($vars['secondary_menu']) ? theme('links', $vars['secondary_menu'], array('class' => 'links secondary-menu')) : FALSE;
+  $vars['user_nav'] = !empty($vars['user_menu']) ? theme('links', $vars['user_menu'], array('class' => 'links secondary-menu')) : FALSE;
+  $vars['primary_nav'] = !empty($vars['main_menu']) ? theme('links', $vars['main_menu'], array('class' => 'links main-menu')) : FALSE;
+  $vars['secondary_nav'] = !empty($vars['secondary_menu']) ? theme('links', $vars['secondary_menu'], array('class' => 'links secondary-menu')) : FALSE;
   $vars['ie_styles'] = garland_get_ie_styles();
 
   // Prepare header
