- Patch #688334 by stella, BTMash, carlos8f, chx: fixed file inheritance is broken.

merge-requests/26/head
Dries Buytaert 2010-04-26 14:06:23 +00:00
parent 40c1805350
commit b94665f5ae
3 changed files with 31 additions and 3 deletions

View File

@ -3166,12 +3166,15 @@ function _menu_router_build($callbacks) {
if (!isset($item['page arguments']) && isset($parent['page arguments'])) {
$item['page arguments'] = $parent['page arguments'];
}
if (!isset($item['file']) && isset($parent['file'])) {
$item['file'] = $parent['file'];
}
if (!isset($item['file path']) && isset($parent['file path'])) {
$item['file path'] = $parent['file path'];
}
if (!isset($item['file']) && isset($parent['file'])) {
$item['file'] = $parent['file'];
if (empty($item['file path']) && isset($item['module']) && isset($parent['module']) && $item['module'] != $parent['module']) {
$item['file path'] = drupal_get_path('module', $parent['module']);
}
}
}
// Same for delivery callbacks.
if (!isset($item['delivery callback']) && isset($parent['delivery callback'])) {

View File

@ -51,6 +51,15 @@ class MenuRouterTestCase extends DrupalWebTestCase {
$this->assertRaw('seven/style.css', t("The administrative theme's CSS appears on the page."));
}
/**
* Test that 'page callback', 'file' and 'file path' keys are properly
* inherited from parent menu paths.
*/
function testFileInheritance() {
$this->drupalGet('admin/config/development/file-inheritance');
$this->assertText('File inheritance test description', t('File inheritance works.'));
}
/**
* Test path containing "exotic" characters.
*/

View File

@ -173,6 +173,22 @@ function menu_test_menu() {
'context' => MENU_CONTEXT_NONE,
);
// File inheritance tests. This menu item should inherit the page callback
// system_admin_menu_block_page() and therefore render its children as links
// on the page.
$items['admin/config/development/file-inheritance'] = array(
'title' => 'File inheritance',
'description' => 'Test file inheritance',
'access arguments' => array('access content'),
);
$items['admin/config/development/file-inheritance/inherit'] = array(
'title' => 'Inherit',
'description' => 'File inheritance test description',
'page callback' => 'menu_test_callback',
'access arguments' => array('access content'),
'type' => MENU_LOCAL_TASK,
);
return $items;
}