Index: admin_menu.inc =================================================================== RCS file: /cvs/drupal-contrib/contributions/modules/admin_menu/admin_menu.inc,v retrieving revision 1.11.2.3 diff -u -p -r1.11.2.3 admin_menu.inc --- admin_menu.inc 8 Jun 2008 06:52:02 -0000 1.11.2.3 +++ admin_menu.inc 8 Jun 2008 07:14:46 -0000 @@ -25,10 +25,8 @@ function _admin_menu_rebuild_links() { // Make sure no child comes before its parent. array_multisort($sort, SORT_NUMERIC, $menu_links); - // KISS for now - completely rebuild each time. - db_query("DELETE FROM {menu_links} WHERE module = '%s'", 'admin_menu'); foreach ($menu_links as $item) { - menu_link_save($item); + admin_menu_link_save($item); } } // Allow modules to add more links. If you want to alter links saved by @@ -78,6 +76,13 @@ function admin_menu_link_save($item) { } } $item = admin_menu_link_build($item); + // Check whether we are able to update an existing item. + $existing_item = db_fetch_array(db_query("SELECT mlid, plid, has_children FROM {menu_links} WHERE link_path = '%s' AND module = '%s'", $item['link_path'], 'admin_menu')); + if ($existing_item) { + $item['mlid'] = $existing_item['mlid']; + $item['plid'] = $existing_item['plid']; + $item['has_children'] = $existing_item['has_children']; + } menu_link_save($item); }