diff options
author | Angie Byron <webchick@24967.no-reply.drupal.org> | 2010-11-23 06:00:27 +0000 |
---|---|---|
committer | Angie Byron <webchick@24967.no-reply.drupal.org> | 2010-11-23 06:00:27 +0000 |
commit | 6cacff4b4e4494c05f90604849dc8803c7506ae0 (patch) | |
tree | 8798ed29de067d35d5a7158eb2a718c817ddd362 | |
parent | e19a50d23f2942b4a22c69e5d2e57a1c02f682f8 (diff) | |
download | brdo-6cacff4b4e4494c05f90604849dc8803c7506ae0.tar.gz brdo-6cacff4b4e4494c05f90604849dc8803c7506ae0.tar.bz2 |
#298561 by Steven, chx, mcarbone, pwolanin: Fixed slashes don't work in search
-rw-r--r-- | includes/menu.inc | 20 | ||||
-rw-r--r-- | modules/search/search.module | 1 | ||||
-rw-r--r-- | modules/search/search.test | 7 |
3 files changed, 28 insertions, 0 deletions
diff --git a/includes/menu.inc b/includes/menu.inc index e3adaaf3e..b19abdbb4 100644 --- a/includes/menu.inc +++ b/includes/menu.inc @@ -787,11 +787,31 @@ function _menu_link_map_translate(&$map, $to_arg_functions) { } } +/** + * Returns path as one string from the argument we are currently at. + */ function menu_tail_to_arg($arg, $map, $index) { return implode('/', array_slice($map, $index)); } /** + * Loads path as one string from the argument we are currently at. + * + * To use this load function, you must specify the load arguments + * in the router item as: + * @code + * $item['load arguments'] = array('%map', '%index'); + * @endcode + * + * @see search_menu(). + */ +function menu_tail_load($arg, &$map, $index) { + $arg = implode('/', array_slice($map, $index)); + $map = array_slice($map, 0, $index); + return $arg; +} + +/** * This function is similar to _menu_translate() but does link-specific * preparation such as always calling to_arg functions * diff --git a/modules/search/search.module b/modules/search/search.module index d6e6350ae..1f4238797 100644 --- a/modules/search/search.module +++ b/modules/search/search.module @@ -210,6 +210,7 @@ function search_menu() { ); $items["$path/%menu_tail"] = array( 'title' => $search_info['title'], + 'load arguments' => array('%map', '%index'), 'page callback' => 'search_view', 'page arguments' => array($module, 2), 'access callback' => '_search_menu_access', diff --git a/modules/search/search.test b/modules/search/search.test index 35f363a67..78c3cfae2 100644 --- a/modules/search/search.test +++ b/modules/search/search.test @@ -279,6 +279,13 @@ class SearchPageText extends DrupalWebTestCase { $this->drupalPost('search/user', $edit, t('Search')); $this->assertText(t('Search')); $this->assertTitle($title, 'Search page title is correct'); + + // Test that search keywords containing slashes are correctly loaded + // from the path and displayed in the search form. + $arg = $this->randomName() . '/' . $this->randomName(); + $this->drupalGet('search/node/' . $arg); + $input = $this->xpath("//input[@id='edit-keys' and @value='{$arg}']"); + $this->assertFalse(empty($input), 'Search keys with a / are correctly set as the default value in the search box.'); } } |