#157510 by pwolanin and chx: search module needs menu tail arguments (arbitrary 'directory' looking parts)
parent
801756e7e6
commit
ffb803bae2
|
@ -336,7 +336,6 @@ function _menu_load_objects($item, &$map) {
|
||||||
$path_map = $map;
|
$path_map = $map;
|
||||||
foreach ($load_functions as $index => $function) {
|
foreach ($load_functions as $index => $function) {
|
||||||
if ($function) {
|
if ($function) {
|
||||||
|
|
||||||
$return = $function(isset($path_map[$index]) ? $path_map[$index] : '');
|
$return = $function(isset($path_map[$index]) ? $path_map[$index] : '');
|
||||||
// If callback returned an error or there is no callback, trigger 404.
|
// If callback returned an error or there is no callback, trigger 404.
|
||||||
if ($return === FALSE) {
|
if ($return === FALSE) {
|
||||||
|
@ -478,14 +477,14 @@ function _menu_translate(&$router_item, $map, $to_arg = FALSE) {
|
||||||
* @param map
|
* @param map
|
||||||
* An array of path arguments (ex: array('node', '5'))
|
* An array of path arguments (ex: array('node', '5'))
|
||||||
* @param $to_arg_functions
|
* @param $to_arg_functions
|
||||||
* An array of helper function (ex: array(1 => 'node_load'))
|
* An array of helper function (ex: array(2 => 'menu_tail_to_arg'))
|
||||||
*/
|
*/
|
||||||
function _menu_link_map_translate(&$map, $to_arg_functions) {
|
function _menu_link_map_translate(&$map, $to_arg_functions) {
|
||||||
if ($to_arg_functions) {
|
if ($to_arg_functions) {
|
||||||
$to_arg_functions = unserialize($to_arg_functions);
|
$to_arg_functions = unserialize($to_arg_functions);
|
||||||
foreach ($to_arg_functions as $index => $function) {
|
foreach ($to_arg_functions as $index => $function) {
|
||||||
// Translate place-holders into real values.
|
// Translate place-holders into real values.
|
||||||
$arg = $function(!empty($map[$index]) ? $map[$index] : '');
|
$arg = $function(!empty($map[$index]) ? $map[$index] : '', $map, $index);
|
||||||
if (!empty($map[$index]) || isset($arg)) {
|
if (!empty($map[$index]) || isset($arg)) {
|
||||||
$map[$index] = $arg;
|
$map[$index] = $arg;
|
||||||
}
|
}
|
||||||
|
@ -496,6 +495,10 @@ function _menu_link_map_translate(&$map, $to_arg_functions) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function menu_tail_to_arg($arg, $map, $index) {
|
||||||
|
return implode('/', array_slice($map, $index));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This function is similar to _menu_translate() but does link-specific
|
* This function is similar to _menu_translate() but does link-specific
|
||||||
* preparation such as always calling to_arg functions
|
* preparation such as always calling to_arg functions
|
||||||
|
|
|
@ -188,14 +188,14 @@ function search_menu() {
|
||||||
);
|
);
|
||||||
|
|
||||||
foreach (module_implements('search') as $name) {
|
foreach (module_implements('search') as $name) {
|
||||||
$items['search/'. $name .'/%'] = array(
|
$items['search/'. $name .'/%menu_tail'] = array(
|
||||||
'title callback' => 'module_invoke',
|
'title callback' => 'module_invoke',
|
||||||
'title arguments' => array($name, 'search', 'name', TRUE),
|
'title arguments' => array($name, 'search', 'name', TRUE),
|
||||||
'page callback' => 'search_view',
|
'page callback' => 'search_view',
|
||||||
'page arguments' => array($name),
|
'page arguments' => array($name),
|
||||||
'access callback' => '_search_menu',
|
'access callback' => '_search_menu',
|
||||||
'access arguments' => array($name),
|
'access arguments' => array($name),
|
||||||
'type' => $name == 'node' ? MENU_DEFAULT_LOCAL_TASK : MENU_LOCAL_TASK,
|
'type' => MENU_LOCAL_TASK,
|
||||||
'parent' => 'search',
|
'parent' => 'search',
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue