Index: modules/user/user.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/user/user.module,v
retrieving revision 1.1001
diff -u -p -r1.1001 user.module
--- modules/user/user.module	13 Jun 2009 20:40:09 -0000	1.1001
+++ modules/user/user.module	22 Jun 2009 22:25:55 -0000
@@ -1,6 +1,9 @@
 <?php
 // $Id: user.module,v 1.1001 2009/06/13 20:40:09 dries Exp $
 
+// Stop errors
+define('MENU_IS_LOCAL_TASK', 1);
+
 /**
  * @file
  * Enables the user registration and login system.
@@ -1285,7 +1288,7 @@ function user_menu() {
     'page callback' => 'user_autocomplete',
     'access callback' => 'user_access',
     'access arguments' => array('access user profiles'),
-    'type' => MENU_CALLBACK,
+    'hidden' => MENU_LINK_DISABLED,
   );
 
   // Registration and login pages.
@@ -1293,7 +1296,7 @@ function user_menu() {
     'title' => 'User account',
     'page callback' => 'user_page',
     'access callback' => TRUE,
-    'type' => MENU_CALLBACK,
+    'hidden' => MENU_LINK_DISABLED,
   );
 
   $items['user/login'] = array(
@@ -1322,7 +1325,7 @@ function user_menu() {
     'page callback' => 'drupal_get_form',
     'page arguments' => array('user_pass_reset', 2, 3, 4),
     'access callback' => TRUE,
-    'type' => MENU_CALLBACK,
+    'hidden' => MENU_LINK_DISABLED,
   );
 
   $items['user/logout'] = array(
@@ -1387,7 +1390,7 @@ function user_menu() {
     'title' => 'Edit role',
     'page arguments' => array('user_admin_role'),
     'access arguments' => array('administer permissions'),
-    'type' => MENU_CALLBACK,
+    'hidden' => MENU_LINK_DISABLED,
   );
 
   $items['user/%user_uid_optional'] = array(
@@ -1414,7 +1417,7 @@ function user_menu() {
     'page arguments' => array('user_cancel_confirm_form', 1),
     'access callback' => 'user_cancel_access',
     'access arguments' => array(1),
-    'type' => MENU_CALLBACK,
+    'hidden' => MENU_LINK_DISABLED,
   );
 
   $items['user/%user/cancel/confirm/%/%'] = array(
@@ -1423,7 +1426,7 @@ function user_menu() {
     'page arguments' => array(1, 4, 5),
     'access callback' => 'user_cancel_access',
     'access arguments' => array(1),
-    'type' => MENU_CALLBACK,
+    'hidden' => MENU_LINK_DISABLED,
   );
 
   $items['user/%user/edit'] = array(
@@ -1439,6 +1442,8 @@ function user_menu() {
     'title' => 'Account',
     'type' => MENU_DEFAULT_LOCAL_TASK,
     'load arguments' => array('%map', '%index'),
+    'access callback' => 'user_edit_access',
+    'access arguments' => array(1),
   );
 
   if (($categories = _user_categories()) && (count($categories) > 1)) {
@@ -1463,6 +1468,81 @@ function user_menu() {
   return $items;
 }
 
+/** 
+ * Implementaiton of hook_menu_local_task()
+ */
+function user_menu_local_task($item) {
+  $tasks = array();
+  
+  // user/%
+  if (count($item['link_map']) >= 2 && $item['link_map'][0] === 'user' && $item['link_map'][1] === '%') {
+    $account = $item['map'][1];
+    
+    if (user_view_access($account)) {
+      $tasks["user/$account->uid"] = array(
+        'title' => t('View'),
+        'weight' => -20,
+      );
+    }
+    
+    if (user_edit_access($account)) {
+      $tasks["user/$account->uid/edit"] = array(
+        'title' => t('Edit'),
+        'weight' => -10,
+      );
+    }
+  }
+  
+  // admin/user
+  if (count($item['link_map']) >= 2 && $item['link_map'][0] === 'admin' && $item['link_map'][1] === 'user') {
+    if (user_access('administer users')) {
+      $tasks['admin/user/user'] = array(
+        'title' => 'List',
+        'weight' => -20,
+      );
+    
+      $tasks['admin/user/user/create'] = array(
+        'title' => 'Create',
+        'weight' => -10,
+      );
+    }
+  }
+  
+  // user
+  if (count($item['link_map']) >= 1 && $item['link_map'][0] === 'user' && user_is_anonymous()) {
+    if (user_register_access()) {
+      $tasks['user/register'] = array(
+        'title' => 'Create new account',
+      );
+    }
+
+    $tasks['user/login'] = array(
+      'title' => 'Log in',
+      'default' => true,
+    );
+  
+    $tasks['user/password'] = array(
+      'title' => 'Request new password',
+    );
+  }
+  
+  // user/%/edit
+  if (count($item['link_map']) >= 3 && $item['link_map'][0] === 'user' && $item['link_map'][1] === '%' && $item['link_map'][2] === 'edit') {
+    if (($categories = _user_categories()) && (count($categories) > 1)) {
+      foreach ($categories as $key => $category) {
+        $tasks["user/$account->uid/edit/" . $category['name']] = array(
+          'title' => check_plain($category['title']),
+          'weight' => $category['weight'],
+          'parent' => "user/$account->uid/edit",
+          'default' => ($category['name'] === 'account') ? true : false,
+        );
+      }
+    }
+  }
+  
+  return $tasks;
+}
+
 function user_init() {
   drupal_add_css(drupal_get_path('module', 'user') . '/user.css');
 }
