summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2009-05-15 04:07:20 +0000
committerDries Buytaert <dries@buytaert.net>2009-05-15 04:07:20 +0000
commitd3de6c817152ecc25f7084d76af7002490582324 (patch)
tree5b965a6099d5d4a83b32cd19a3e223bf296bfd20 /modules
parentde9786496990d4419ef35c17c058445322a35b84 (diff)
downloadbrdo-d3de6c817152ecc25f7084d76af7002490582324.tar.gz
brdo-d3de6c817152ecc25f7084d76af7002490582324.tar.bz2
- Patch #292790 by mr.baileys: menu machine-name validation error.
Diffstat (limited to 'modules')
-rw-r--r--modules/menu/menu.admin.inc7
-rw-r--r--modules/menu/menu.test15
2 files changed, 18 insertions, 4 deletions
diff --git a/modules/menu/menu.admin.inc b/modules/menu/menu.admin.inc
index 2d7c61ac7..79d3405f7 100644
--- a/modules/menu/menu.admin.inc
+++ b/modules/menu/menu.admin.inc
@@ -539,10 +539,11 @@ function menu_edit_menu_validate($form, &$form_state) {
if (preg_match('/[^a-z0-9-]/', $item['menu_name'])) {
form_set_error('menu_name', t('The menu name may only consist of lowercase letters, numbers, and hyphens.'));
}
- if (strlen($item['menu_name']) > MENU_MAX_MENU_NAME_LENGTH_UI) {
- form_set_error('menu_name', format_plural(MENU_MAX_MENU_NAME_LENGTH_UI, "The menu name can't be longer than 1 character.", "The menu name can't be longer than @count characters."));
- }
if ($form['#insert']) {
+ if (strlen($item['menu_name']) > MENU_MAX_MENU_NAME_LENGTH_UI) {
+ form_set_error('menu_name', format_plural(MENU_MAX_MENU_NAME_LENGTH_UI, "The menu name can't be longer than 1 character.", "The menu name can't be longer than @count characters."));
+ }
+
// We will add 'menu-' to the menu name to help avoid name-space conflicts.
$item['menu_name'] = 'menu-' . $item['menu_name'];
$custom_exists = db_query('SELECT menu_name FROM {menu_custom} WHERE menu_name = :menu', array(':menu' => $item['menu_name']))->fetchField();
diff --git a/modules/menu/menu.test b/modules/menu/menu.test
index 284f55541..2b00b9798 100644
--- a/modules/menu/menu.test
+++ b/modules/menu/menu.test
@@ -95,8 +95,10 @@ class MenuTestCase extends DrupalWebTestCase {
*/
function addCustomMenu() {
// Add custom menu.
+
+ // Try adding a menu using a menu_name that is too long.
$this->drupalGet('admin/build/menu/add');
- $menu_name = substr(md5($this->randomName(16)), 0, 20);
+ $menu_name = substr(md5($this->randomName(16)), 0, MENU_MAX_MENU_NAME_LENGTH_UI + 1);
$title = $this->randomName(16);
$edit = array (
'menu_name' => $menu_name,
@@ -104,6 +106,17 @@ class MenuTestCase extends DrupalWebTestCase {
'title' => $title,
);
$this->drupalPost('admin/build/menu/add', $edit, t('Save'));
+
+ // Verify that using a menu_name that is too long results in a validation message.
+ $this->assertText(format_plural(MENU_MAX_MENU_NAME_LENGTH_UI, "The menu name can't be longer than 1 character.", "The menu name can't be longer than @count characters."), t('Validation failed when menu name is too long.'));
+
+ // Change the menu_name so it no longer exceeds the maximum length.
+ $menu_name = substr(md5($this->randomName(16)), 0, MENU_MAX_MENU_NAME_LENGTH_UI);
+ $edit['menu_name'] = $menu_name;
+ $this->drupalPost('admin/build/menu/add', $edit, t('Save'));
+
+ // Verify that no validation error is given for menu_name length.
+ $this->assertNoText(format_plural(MENU_MAX_MENU_NAME_LENGTH_UI, "The menu name can't be longer than 1 character.", "The menu name can't be longer than @count characters."), t('Validation failed when menu name is too long.'));
// Unlike most other modules, there is no confirmation message displayed.
$this->drupalGet('admin/build/menu');