diff options
author | Dries Buytaert <dries@buytaert.net> | 2010-02-15 15:29:14 +0000 |
---|---|---|
committer | Dries Buytaert <dries@buytaert.net> | 2010-02-15 15:29:14 +0000 |
commit | 86dc8b4bc699b3a0bd7cc83865802dcdafff2246 (patch) | |
tree | ce21eeef627d9d515840aa0f25e484513f04bab5 /modules/menu | |
parent | d89f0464264cb227a917a64660466099d93958aa (diff) | |
download | brdo-86dc8b4bc699b3a0bd7cc83865802dcdafff2246.tar.gz brdo-86dc8b4bc699b3a0bd7cc83865802dcdafff2246.tar.bz2 |
- Patch #682784 by naxoc: added a test for updating links with queries and fragments in menu items.
Diffstat (limited to 'modules/menu')
-rw-r--r-- | modules/menu/menu.admin.inc | 2 | ||||
-rw-r--r-- | modules/menu/menu.test | 27 |
2 files changed, 28 insertions, 1 deletions
diff --git a/modules/menu/menu.admin.inc b/modules/menu/menu.admin.inc index 56d9f747b..3f739ba94 100644 --- a/modules/menu/menu.admin.inc +++ b/modules/menu/menu.admin.inc @@ -259,7 +259,7 @@ function menu_edit_item($form, &$form_state, $type, $item, $menu) { $path = $item['link_path']; if (isset($item['options']['query'])) { - $path .= '?' . $item['options']['query']; + $path .= '?' . drupal_http_build_query($item['options']['query']); } if (isset($item['options']['fragment'])) { $path .= '#' . $item['options']['fragment']; diff --git a/modules/menu/menu.test b/modules/menu/menu.test index 40ded5296..f00238e9b 100644 --- a/modules/menu/menu.test +++ b/modules/menu/menu.test @@ -228,6 +228,26 @@ class MenuTestCase extends DrupalWebTestCase { } /** + * Add and remove a menu link with a query string and fragment. + */ + function testMenuQueryAndFragment() { + $this->drupalLogin($this->big_user); + + // Make a path with query and fragment on. + $path = 'node?arg1=value1&arg2=value2'; + $item = $this->addMenuLink(0, $path); + + $this->drupalGet('admin/structure/menu/item/' . $item['mlid'] . '/edit'); + $this->assertFieldByName('link_path', $path, t('Path is found with both query and fragment.')); + + // Now change the path to something without query and fragment. + $path = 'node'; + $this->drupalPost('admin/structure/menu/item/' . $item['mlid'] . '/edit', array('link_path' => $path), t('Save')); + $this->drupalGet('admin/structure/menu/item/' . $item['mlid'] . '/edit'); + $this->assertFieldByName('link_path', $path, t('Path no longer has query or fragment.')); + } + + /** * Add a menu link using the menu module UI. * * @param integer $plid Parent menu link id. @@ -268,6 +288,13 @@ class MenuTestCase extends DrupalWebTestCase { // Both menu links were created in the navigation menu. $this->assertEqual($item['menu_name'], $menu_name); $this->assertEqual($item['plid'], $plid); + $options = unserialize($item['options']); + if (!empty($options['query'])) { + $item['link_path'] .= '?' . drupal_http_build_query($options['query']); + } + if (!empty($options['fragment'])) { + $item['link_path'] .= '#' . $options['fragment']; + } $this->assertEqual($item['link_path'], $link); $this->assertEqual($item['link_title'], $title); if ($plid == 0) { |