Index: includes/menu.inc =================================================================== RCS file: /cvs/drupal/drupal/includes/menu.inc,v retrieving revision 1.228 diff -u -r1.228 menu.inc --- includes/menu.inc 26 Nov 2007 16:19:37 -0000 1.228 +++ includes/menu.inc 5 Dec 2007 16:56:12 -0000 @@ -456,7 +456,7 @@ $item['title'] = t($item['title'], menu_unserialize($item['title_arguments'], $map)); } } - else { + elseif ($callback) { if (empty($item['title_arguments'])) { $item['title'] = $callback($item['title']); } @@ -596,13 +596,23 @@ } _menu_check_access($item, $map); } - // If the link title matches that of a router item, localize it. - if (!empty($item['title']) && (($item['title'] == $item['link_title']) || ($item['title_callback'] != 't'))) { - _menu_item_localize($item, $map); + + // If the link title matches that of its router item, localize it. + if (!empty($item['title']) && ($item['title'] == $item['link_title'])){ + if (!empty($item['title_arguments']) && $item['title_callback'] == 't') { + $item['title'] = t($item['title'], menu_unserialize($item['title_arguments'], $map)); + } + else { + $item['title'] = t($item['title']); + } } else { $item['title'] = $item['link_title']; } + // Store the map if it may be needed for use later by a title callback. + if (!empty($item['title_callback']) && ($item['title_callback'] != 't')) { + $item['map'] = $map; + } } $item['options'] = unserialize($item['options']); @@ -1404,6 +1414,12 @@ if ($trail[$last]['href'] != $item['href'] && !(bool)($item['type'] & MENU_IS_LOCAL_TASK) && !drupal_is_front_page()) { $trail[] = $item; } + // Apply title callbacks for items in the active trail (breadcrumb). + foreach ($trail as $key => $item) { + if (!empty($item['title_callback']) && $item['title_callback'] != 't') { + _menu_item_localize($trail[$key], $item['map']); + } + } } return $trail; } Index: modules/filter/filter.admin.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/filter/filter.admin.inc,v retrieving revision 1.4 diff -u -r1.4 filter.admin.inc --- modules/filter/filter.admin.inc 23 Nov 2007 13:34:55 -0000 1.4 +++ modules/filter/filter.admin.inc 5 Dec 2007 16:56:12 -0000 @@ -74,16 +74,13 @@ } /** - * Display a filter format form. + * Menu callback; Display a filter format form. */ function filter_admin_format_page($format = NULL) { if (!isset($format->name)) { drupal_set_title(t("Add input format")); $format = (object)array('name' => '', 'roles' => '', 'format' => ''); } - else { - drupal_set_title(t("%format input format", array('%format' => $format->name))); - } return drupal_get_form('filter_admin_format_form', $format); } Index: modules/filter/filter.module =================================================================== RCS file: /cvs/drupal/drupal/modules/filter/filter.module,v retrieving revision 1.190 diff -u -r1.190 filter.module --- modules/filter/filter.module 22 Oct 2007 10:32:03 -0000 1.190 +++ modules/filter/filter.module 5 Dec 2007 16:56:12 -0000 @@ -108,6 +108,8 @@ ); $items['admin/settings/filters/%filter_format'] = array( 'type' => MENU_CALLBACK, + 'title callback' => 'filter_admin_format_title', + 'title arguments' => array(3), 'page callback' => 'filter_admin_format_page', 'page arguments' => array(3), 'access arguments' => array('administer filters'), @@ -144,6 +146,13 @@ } /** + * Display a filter format form title. + */ +function filter_admin_format_title($format) { + return $format->name; +} + +/** * Implementation of hook_perm(). */ function filter_perm() { Index: modules/node/node.module =================================================================== RCS file: /cvs/drupal/drupal/modules/node/node.module,v retrieving revision 1.914 diff -u -r1.914 node.module --- modules/node/node.module 3 Dec 2007 07:45:15 -0000 1.914 +++ modules/node/node.module 5 Dec 2007 16:56:12 -0000 @@ -1399,7 +1399,8 @@ ); } $items['node/%node'] = array( - 'title' => 'View', + 'title callback' => 'node_page_title', + 'title arguments' => array(1), 'page callback' => 'node_page_view', 'page arguments' => array(1), 'access callback' => 'node_access', @@ -1458,6 +1459,13 @@ return $items; } +/** + * Title callback. + */ +function node_page_title($node) { + return $node->title; +} + function node_init() { drupal_add_css(drupal_get_path('module', 'node') .'/node.css'); } Index: modules/node/node.pages.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/node/node.pages.inc,v retrieving revision 1.13 diff -u -r1.13 node.pages.inc --- modules/node/node.pages.inc 3 Dec 2007 07:45:15 -0000 1.13 +++ modules/node/node.pages.inc 5 Dec 2007 17:06:37 -0000 @@ -388,7 +388,6 @@ $output = theme('node_preview', $cloned_node); } drupal_set_title(t('Preview')); - drupal_set_breadcrumb(array(l(t('Home'), NULL), l(t('Create content'), 'node/add'), l(t('Submit @name', array('@name' => node_get_types('name', $node))), 'node/add/'. $node->type))); return $output; } Index: modules/user/user.module =================================================================== RCS file: /cvs/drupal/drupal/modules/user/user.module,v retrieving revision 1.868 diff -u -r1.868 user.module --- modules/user/user.module 26 Nov 2007 16:36:44 -0000 1.868 +++ modules/user/user.module 5 Dec 2007 16:56:12 -0000 @@ -1023,6 +1023,8 @@ $items['user/%user_current'] = array( 'title' => 'My account', + 'title callback' => 'user_page_title', + 'title arguments' => array(1), 'page callback' => 'user_view', 'page arguments' => array(1), 'access callback' => 'user_view_access', @@ -1146,6 +1148,16 @@ } /** + * Menu item title callback - use the user name if it's not the current user. + */ +function user_page_title($account) { + if ($account->uid == $GLOBALS['user']->uid) { + return t('My account'); + } + return $account->name; +} + +/** * Accepts an user object, $account, or a DA name and returns an associative * array of modules and DA names. Called at external login. */