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) { ...@@ -549,7 +549,7 @@ function _menu_item_localize(&$item, $map, $link_translate = FALSE) {
$item['title'] = t($item['title'], menu_unserialize($item['title_arguments'], $map)); $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'])) { if (empty($item['title_arguments'])) {
$item['title'] = $callback($item['title']); $item['title'] = $callback($item['title']);
} }
......
...@@ -27,6 +27,9 @@ ...@@ -27,6 +27,9 @@
* contain the following key-value pairs: * contain the following key-value pairs:
* *
* - "title": Required. The untranslated title of the menu item. * - "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. * - "description": The untranslated description of the menu item.
* - "page callback": The function to call to display a web page when the user * - "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 * visits the path. If omitted, the parent menu item's callback will be used
......
...@@ -20,6 +20,15 @@ class MenuIncTestCase extends DrupalWebTestCase { ...@@ -20,6 +20,15 @@ class MenuIncTestCase extends DrupalWebTestCase {
parent::setUp('menu_test'); 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(). * Tests for menu_name parameter for hook_menu().
*/ */
......
...@@ -3,18 +3,36 @@ ...@@ -3,18 +3,36 @@
/** /**
* @file * @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() { function menu_test_menu() {
// The name of the menu changes during the course of the test. Using a $_GET.
$items['menu_name_test'] = array( $items['menu_name_test'] = array(
'title' => t('Test menu_name router item'), 'title' => 'Test menu_name router item',
'page callback' => 'node_save', 'page callback' => 'node_save',
'menu_name' => isset($_GET["hook_menu_name"]) ? $_GET["hook_menu_name"] : 'original', '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; 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