diff --git a/modules/menu/menu.admin.inc b/modules/menu/menu.admin.inc index 1f3c4f7..4fda8f3 100644 --- a/modules/menu/menu.admin.inc +++ b/modules/menu/menu.admin.inc @@ -296,6 +296,9 @@ function menu_edit_item($form, &$form_state, $type, $item, $menu) { '#access' => $item['mlid'], '#submit' => array('menu_item_delete_submit'), '#weight' => 10, + // Keep array('mlid') for passing mlid of the + // menu link item to delete confirmation form. + '#limit_validation_errors' => array(array('mlid')), ); } else { @@ -476,6 +479,9 @@ function menu_edit_menu($form, &$form_state, $type, $menu = array()) { '#value' => t('Delete'), '#access' => $type == 'edit' && !isset($system_menus[$menu['menu_name']]), '#submit' => array('menu_custom_delete_submit'), + // Keep array('menu_name') for passing menu_name of the + // menu item to delete confirmation form. + '#limit_validation_errors' => array(array('menu_name')), ); return $form; diff --git a/modules/menu/menu.test b/modules/menu/menu.test index 6c11da6..7005625 100644 --- a/modules/menu/menu.test +++ b/modules/menu/menu.test @@ -60,6 +60,24 @@ class MenuTestCase extends DrupalWebTestCase { // Delete custom menu. $this->deleteCustomMenu($this->menu); + // Delete menu submitting empty title on edit form. + // Check if validation permits to do this. + $menu_name = substr(hash('sha256', $this->randomName(16)), 0, MENU_MAX_MENU_NAME_LENGTH_UI); + $title = $this->randomName(16); + + $menu = array( + 'menu_name' => $menu_name, + 'title' => $title, + 'description' => 'Description text', + ); + menu_save($menu); + $edit = array( + 'title' => '', + ); + + $this->drupalPost('admin/structure/menu/manage/' . $menu_name . '/edit', $edit, t('Delete')); + $this->assertNoText(t('Title field is required.'), t('Delete menu on edit form with empty title.')); + // Modify and reset a standard menu link. $item = $this->getStandardMenuLink(); $old_title = $item['link_title']; @@ -72,6 +90,35 @@ class MenuTestCase extends DrupalWebTestCase { $saved_item = menu_link_load($item['mlid']); $this->assertEqual($description, $saved_item['options']['attributes']['title'], t('Saving an existing link updates the description (title attribute)')); $this->resetMenuLink($item, $old_title); + + // Delete link submitting empty title or path on edit form. + // Check if validation permits to do this. + // Login the user. + $this->drupalLogin($this->big_user); + // Create custom link to User menu. + $link_title = $this->randomName(); + $edit = array( + 'link_title' => $link_title, + 'link_path' => '', + ); + $this->drupalPost('admin/structure/menu/manage/user-menu/add', $edit, t('Save')); + // Select mlid of new created menu item. + $mlid = db_query("SELECT mlid FROM {menu_links} WHERE link_title = :link_title", array(':link_titl e' => $link_title))->fetchField(); + // Submit edit form with empty title. + $edit = array( + 'link_title' => '', + 'link_path' => '', + ); + $this->drupalPost('admin/structure/menu/item/' . $mlid . '/edit', $edit, t('Delete')); + $this->assertNoText(t('Menu link title field is required.'), t('Delete link on edit form with empt y title.')); + + // Submit edit form with empty path. + $edit = array( + 'link_title' => $link_title, + 'link_path' => '', + ); + $this->drupalPost('admin/structure/menu/item/' . $mlid . '/edit', $edit, t('Delete')); + $this->assertNoText(t('Path field is required.'), t('Delete link on edit form with empty path.')); } /**