Index: admin_menu.css
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/admin_menu/admin_menu.css,v
retrieving revision 1.25.2.4.2.2
diff -u -p -r1.25.2.4.2.2 admin_menu.css
--- admin_menu.css	27 Mar 2009 04:22:45 -0000	1.25.2.4.2.2
+++ admin_menu.css	4 Apr 2009 14:30:39 -0000
@@ -28,8 +28,9 @@
 #admin-menu li.admin-menu-icon img {
   vertical-align: bottom;
 }
-#admin-menu li.admin-menu-users img {
-  margin-top: 1px;
+#admin-menu li.admin-menu-users a {
+  background: transparent url(images/icon_users.png) 90% center no-repeat;
+  padding-right: 22px;
 }
 #admin-menu li.admin-menu-action {
   float: right;
Index: admin_menu.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/admin_menu/admin_menu.inc,v
retrieving revision 1.11.2.20.2.7
diff -u -p -r1.11.2.20.2.7 admin_menu.inc
--- admin_menu.inc	31 Mar 2009 23:50:24 -0000	1.11.2.20.2.7
+++ admin_menu.inc	4 Apr 2009 14:30:52 -0000
@@ -339,11 +339,12 @@ function admin_menu_adjust_items(&$menu_
   // Add link to show current authenticated/anonymous users - we will add the
   // data dynamically in the _alter hook.
   $links[] = array(
-    'title' => 'icon_users',
+    'title' => admin_menu_get_user_count(),
+    'description' => t('Current anonymous / authenticated users'),
     'path' => 'user',
     'weight' => -90,
     'parent_path' => '<root>',
-    'options' => array('extra class' => 'admin-menu-action admin-menu-icon admin-menu-users', 'html' => TRUE),
+    'options' => array('extra class' => 'admin-menu-action admin-menu-users', 'html' => TRUE),
   );
   $links[] = array(
     'title' => '@username',
Index: admin_menu.js
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/admin_menu/admin_menu.js,v
retrieving revision 1.7.2.7.2.7
diff -u -p -r1.7.2.7.2.7 admin_menu.js
--- admin_menu.js	4 Apr 2009 13:58:53 -0000	1.7.2.7.2.7
+++ admin_menu.js	4 Apr 2009 14:43:44 -0000
@@ -18,7 +18,8 @@ Drupal.behaviors.adminMenu = function (c
     tweak_tabs: false,
     destination: '',
     basePath: Drupal.settings.basePath,
-    hash: 0
+    hash: 0,
+    replacements: {}
   }, Drupal.settings.admin_menu || {});
   // Check whether administration menu should be suppressed.
   if (Drupal.settings.admin_menu.suppress) {
@@ -131,6 +132,15 @@ Drupal.admin.behaviors.pageTabs = functi
 };
 
 /**
+ * Perform dynamic replacements.
+ */
+Drupal.admin.behaviors.replacements = function (context, $adminMenu) {
+  for (var item in Drupal.settings.admin_menu.replacements) {
+    $(item, $adminMenu).html(Drupal.settings.admin_menu.replacements[item]);
+  }
+}
+
+/**
  * Inject destination query strings for current page.
  */
 Drupal.admin.behaviors.destination = function (context, $adminMenu) {
Index: admin_menu.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/admin_menu/admin_menu.module,v
retrieving revision 1.43.2.17.2.4
diff -u -p -r1.43.2.17.2.4 admin_menu.module
--- admin_menu.module	1 Apr 2009 17:42:30 -0000	1.43.2.17.2.4
+++ admin_menu.module	4 Apr 2009 14:44:43 -0000
@@ -118,6 +118,11 @@ function admin_menu_init() {
     $settings['basePath'] = rtrim(url(''), '/') . '/';
   }
 
+  $replacements = module_invoke_all('admin_menu_replacements');
+  if (!empty($replacements)) {
+    $settings['replacements'] = $replacements;
+  }
+
   if ($setting = variable_get('admin_menu_margin_top', 1)) {
     $settings['margin_top'] = $setting;
   }
@@ -292,6 +297,30 @@ function admin_menu_js_cache($hash = NUL
 }
 
 /**
+ * Implementation of hook_admin_menu_replacements().
+ */
+function admin_menu_admin_menu_replacements() {
+  $items = array();
+  if ($user_count = admin_menu_get_user_count()) {
+    $items['.admin-menu-users a'] = $user_count;
+  }
+  return $items;
+}
+
+/**
+ * Return count of online anonymous/authenticated users.
+ *
+ * @see user_block(), user.module
+ */
+function admin_menu_get_user_count() {
+  $interval = time() - variable_get('user_block_seconds_online', 900);
+  $count_anon = sess_count($interval);
+  $count_auth = db_result(db_query("SELECT COUNT(DISTINCT uid) FROM {sessions} WHERE uid > 0 AND timestamp >= %d", $interval));
+
+  return t('@count-anon / @count-auth', array('@count-anon' => $count_anon, '@count-auth' => $count_auth));
+}
+
+/**
  * Return a rendered menu tree.
  *
  * @param $tree
@@ -454,22 +483,5 @@ function admin_menu_translated_menu_link
   if (isset($item['options']['t'])) {
     $item['title'] = t($item['title'], $item['options']['t'] + array('@username' => $user->name));
   }
-
-  // Special processing for our user counter item.
-  if ($item['title'] == 'icon_users') {
-    // Add count of active anonymous/authenticated users.
-    // @see user_block(), user.module
-    $interval = time() - variable_get('user_block_seconds_online', 900);
-    $count_anon = sess_count($interval);
-    $count_auth = db_result(db_query("SELECT COUNT(DISTINCT uid) FROM {sessions} WHERE uid > 0 AND timestamp >= %d", $interval));
-    $icon_users = '<img src="' . base_path() . drupal_get_path('module', 'admin_menu') . '/images/icon_users.png" width="16" height="15" alt="@title" title="@title" />';
-
-    $title = array('@title' => t('Current anonymous / authenticated users'));
-    $icon_users = strtr($icon_users, $title);
-    $item['title'] = t('@count-anon / @count-auth !icon', array('@count-anon' => $count_anon, '@count-auth' => $count_auth, '!icon' => $icon_users));
-    if (user_access('administer users')) {
-      $item['href'] = 'admin/user/user';
-    }
-  }
 }
 
