Commit 993675ab authored by webchick's avatar webchick
Browse files

#348627 by smk-ka and catch: Allow menu title callback property to bypass t()...

#348627 by smk-ka and catch: Allow menu title callback property to bypass t() (+documentation and tests)
parent c6dd7bec
......@@ -549,7 +549,7 @@ function _menu_item_localize(&$item, $map, $link_translate = FALSE) {
$item['title'] = t($item['title'], menu_unserialize($item['title_arguments'], $map));
}
}
elseif (drupal_function_exists($callback)) {
elseif ($callback && drupal_function_exists($callback)) {
if (empty($item['title_arguments'])) {
$item['title'] = $callback($item['title']);
}
......
......@@ -27,6 +27,9 @@
* contain the following key-value pairs:
*
* - "title": Required. The untranslated title of the menu item.
* - "title callback": Function to generate the title, defaults to t().
* If you require only the raw string to be output, set this to FALSE.
* - "title arguments": Arguments to send to t() or your custom callback.
* - "description": The untranslated description of the menu item.
* - "page callback": The function to call to display a web page when the user
* visits the path. If omitted, the parent menu item's callback will be used
......
......@@ -20,6 +20,15 @@ class MenuIncTestCase extends DrupalWebTestCase {
parent::setUp('menu_test');
}
/**
* Test title callback set to FALSE.
*/
function testTitleCallbackFalse() {
$this->drupalGet('node');
$this->assertText('A title with @placeholder', t('Raw text found on the page'));
$this->assertNoText(t('A title with @placeholder', array('@placeholder' => 'some other text')), t('Text with placeholder substitutions not found.'));
}
/**
* Tests for menu_name parameter for hook_menu().
*/
......
......@@ -3,18 +3,36 @@
/**
* @file
* Dummy module implementing hook menu to test changing the menu name.
* Dummy module implementing hook menu.
*/
/**
* The name of the menu changes during the course of this test. Use a $_GET.
/**
* Implementation of hook_menu().
*/
function menu_test_menu() {
// The name of the menu changes during the course of the test. Using a $_GET.
$items['menu_name_test'] = array(
'title' => t('Test menu_name router item'),
'title' => 'Test menu_name router item',
'page callback' => 'node_save',
'menu_name' => isset($_GET["hook_menu_name"]) ? $_GET["hook_menu_name"] : 'original',
);
// Use FALSE as 'title callback' to bypass t().
$items['menu_no_title_callback'] = array(
'title' => 'A title with @placeholder',
'title callback' => FALSE,
'title arguments' => array('@placeholder' => 'some other text'),
'page callback' => 'menu_test_callback',
'access arguments' => array('access content'),
);
return $items;
}
\ No newline at end of file
}
/**
* Dummy callback for hook_menu() to point to.
*
* @return
* A random string.
*/
function menu_test_callback() {
return $this->randomName();
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment