Index: admin_menu.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/admin_menu/admin_menu.inc,v
retrieving revision 1.1.4.6
diff -u -p -r1.1.4.6 admin_menu.inc
--- admin_menu.inc	9 Dec 2007 01:02:40 -0000	1.1.4.6
+++ admin_menu.inc	21 Feb 2008 21:34:50 -0000
@@ -125,6 +125,7 @@ function admin_menu_adjust_items(&$_admi
     'weight' => -100,
     'class' => 'admin_menu-icon',
   ));
+  $_admin_menu['index']['admin_menu_icon'] = $mid_icon;
   
   // Add 'administer' item to the icon menu.
   $mid_icon_admin = admin_menu_add_item($_admin_menu, $mid_icon, array('title' => t('Administer'), 'path' => 'admin', 'weight' => 10));
@@ -180,8 +181,20 @@ function admin_menu_adjust_items(&$_admi
   }
   
   // Add 'Create <content_type>' menu items to Content management > Content.
+  // If an user does not have 'administer nodes' permission, we need to copy
+  // the 'Create content' item from the Navigation menu into 'Content
+  // management' and append node/add/* items there instead.
+  if (!user_access('administer nodes')) {
+    $mid_content_management = $_admin_menu['index']['admin/content'];
+    $mid_node_add = $_menu['path index']['node/add'];
+    $create_content = $_menu['items'][$mid_node_add];
+    $create_content['weight'] = 0;
+    $mid_content = admin_menu_add_item($_admin_menu, $mid_content_management, $create_content);
+  }
+  else {
+    $mid_content = $_admin_menu['index']['admin/content/node'];
+  }
   $mid_node_add = $_menu['path index']['node/add'];
-  $mid_content = $_menu['path index']['admin/content/node'];
   admin_menu_copy_items($_admin_menu, $mid_node_add, $mid_content, t('Add !title'));
 }
 
@@ -209,6 +222,9 @@ function admin_menu_copy_items(&$_admin_
   if (isset($_menu['items'][$source_pid]['children']) && isset($_admin_menu[$target_pid])) {
     foreach ($_menu['items'][$source_pid]['children'] as $mid) {
       $item = $_menu['items'][$mid];
+      if (!$item['access']) {
+        continue;
+      }
       if (isset($title)) {
         $item['title'] = check_plain(strtr($title, array('!title' => $_menu['items'][$mid]['title'])));
       }
Index: admin_menu.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/admin_menu/admin_menu.module,v
retrieving revision 1.26.2.11
diff -u -p -r1.26.2.11 admin_menu.module
--- admin_menu.module	6 Jan 2008 14:52:05 -0000	1.26.2.11
+++ admin_menu.module	21 Feb 2008 21:30:53 -0000
@@ -255,6 +255,7 @@ function admin_menu_add_item(&$_admin_me
     return FALSE;
   }
   $item['pid'] = $pid;
+  $item['children'] = array();
   $id = max(array_keys($_admin_menu)) + 1;
   $_admin_menu[$id] = $item;
   $_admin_menu[$pid]['children'][] = $id;
@@ -341,9 +342,7 @@ if (module_exists('devel') && !function_
       return;
     }
     
-    $front = drupal_get_normal_path(variable_get('site_frontpage', 'node'));
-    $mid_icon = $admin_menu['index'][$front];
-    
+    $mid_icon = $admin_menu['index']['admin_menu_icon'];
     if ($may_cache) {
       // Add variable editor.
       if ($access_devel) {
