Index: modules/menu/menu.module =================================================================== RCS file: /cvs/drupal/drupal/modules/menu/menu.module,v retrieving revision 1.174 diff -u -p -r1.174 menu.module --- modules/menu/menu.module 11 Nov 2008 18:15:01 -0000 1.174 +++ modules/menu/menu.module 13 Nov 2008 01:41:07 -0000 @@ -154,11 +154,13 @@ function menu_theme() { */ function menu_enable() { menu_rebuild(); - $link = db_fetch_array(db_query("SELECT mlid AS plid, menu_name from {menu_links} WHERE link_path = 'admin/build/menu' AND module = 'system'")); - $link['router_path'] = 'admin/build/menu-customize/%'; - $link['module'] = 'menu'; + $base_link = db_fetch_array(db_query("SELECT mlid AS plid, menu_name from {menu_links} WHERE link_path = 'admin/build/menu' AND module = 'system'")); + $base_link['router_path'] = 'admin/build/menu-customize/%'; + $base_link['module'] = 'menu'; $result = db_query("SELECT * FROM {menu_custom}"); while ($menu = db_fetch_array($result)) { + // $link is passed by reference to menu_link_save(), so we make a copy of $base_link. + $link = $base_link; $link['mlid'] = 0; $link['link_title'] = $menu['title']; $link['link_path'] = 'admin/build/menu-customize/' . $menu['menu_name']; Index: modules/menu/menu.test =================================================================== RCS file: /cvs/drupal/drupal/modules/menu/menu.test,v retrieving revision 1.2 diff -u -p -r1.2 menu.test --- modules/menu/menu.test 30 May 2008 07:30:51 -0000 1.2 +++ modules/menu/menu.test 13 Nov 2008 01:41:07 -0000 @@ -24,7 +24,7 @@ class MenuTestCase extends DrupalWebTest function setUp() { parent::setUp('menu'); // Create users. - $this->big_user = $this->drupalCreateUser(array('administer blocks', 'administer menu', 'create article content')); + $this->big_user = $this->drupalCreateUser(array('access administration pages', 'administer blocks', 'administer menu', 'create article content')); $this->std_user = $this->drupalCreateUser(array()); } Index: includes/menu.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/menu.inc,v retrieving revision 1.304 diff -u -p -r1.304 menu.inc --- includes/menu.inc 11 Nov 2008 22:39:58 -0000 1.304 +++ includes/menu.inc 13 Nov 2008 01:41:08 -0000 @@ -1911,7 +1911,9 @@ function menu_link_save(&$item) { ); $existing_item = FALSE; if (isset($item['mlid'])) { - $existing_item = db_fetch_array(db_query("SELECT * FROM {menu_links} WHERE mlid = %d", $item['mlid'])); + if ($existing_item = db_fetch_array(db_query("SELECT * FROM {menu_links} WHERE mlid = %d", $item['mlid']))) { + $existing_item['options'] = unserialize($existing_item['options']); + } } if (isset($item['plid'])) { @@ -2016,7 +2018,6 @@ function menu_link_save(&$item) { $item['router_path'] = _menu_find_router_path($menu, $item['link_path']); } } - $item['options'] = serialize($item['options']); // If every value in $existing_item is the same in the $item, there is no // reason to run the update queries or clear the caches. We use // array_diff_assoc() with the $existing_item as the first parameter @@ -2032,7 +2033,7 @@ function menu_link_save(&$item) { $item['router_path'], $item['hidden'], $item['external'], $item['has_children'], $item['expanded'], $item['weight'], $item['depth'], $item['p1'], $item['p2'], $item['p3'], $item['p4'], $item['p5'], $item['p6'], $item['p7'], $item['p8'], $item['p9'], - $item['module'], $item['link_title'], $item['options'], $item['customized'], $item['mlid']); + $item['module'], $item['link_title'], serialize($item['options']), $item['customized'], $item['mlid']); // Check the has_children status of the parent. _menu_update_parental_status($item); menu_cache_clear($menu_name);