Index: admin_menu.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/admin_menu/admin_menu.module,v
retrieving revision 1.9
diff -u -r1.9 admin_menu.module
--- admin_menu.module	4 Mar 2007 02:51:10 -0000	1.9
+++ admin_menu.module	10 Mar 2007 21:20:49 -0000
@@ -55,7 +55,7 @@
 
   // get path id of /q=admin, which we suppose to be the root of admin menu
   $pid_admin = $_menu['path index']['admin'];
-  $admin_items[$pid_admin] = $_menu['items'][$pid_admin];
+  $admin_items[$pid_admin] = $_menu['visible'][$pid_admin];
   
   // slice admin menu items into a new menu tree
   _admin_menu_get_children($admin_items, $admin_items[$pid_admin]);
@@ -76,11 +76,15 @@
   
   if (isset( $item['children'] )) {
     foreach ($item['children'] as $child) {
-      $is_visible_item = $_menu['items'][$child]['type'] & (MENU_VISIBLE_IN_TREE | MENU_IS_LOCAL_TASK);
-
-      // create the child item if it's visible in navigation
-      // Hide items linking to parent: && !($_menu['items'][$child]['type'] & MENU_LINKS_TO_PARENT) 12/01/2007 sun
-      if ($is_visible_item) {
+      // check access permissions
+      $item_is_accessible = !isset($_menu['items'][$child]['access']) || (isset($_menu['items'][$child]['access']) && $_menu['items'][$child]['access']);
+      // check type
+      $item_is_visible = $_menu['items'][$child]['type'] & (MENU_VISIBLE_IN_TREE | MENU_IS_LOCAL_TASK);
+
+      // create the child item if it is accessible and visible
+      // Additional if condition to hide items linking to parent:
+      //   && !($_menu['items'][$child]['type'] & MENU_LINKS_TO_PARENT)
+      if ($item_is_accessible && $item_is_visible) {
         $admin_items[$child] = $_menu['items'][$child];
 
         // recurse to child menu items
@@ -88,7 +92,7 @@
           _admin_menu_get_children($admin_items, $admin_items[$child]);
         }
 
-        // remove this child item if it's visible in navigation
+        // remove this child item if it is visible in navigation
         unset( $_menu['visible'][$child] );
       }
       else {
