Index: modules/forum/forum.module =================================================================== RCS file: /cvs/drupal/drupal/modules/forum/forum.module,v retrieving revision 1.573 diff -u -p -r1.573 forum.module --- modules/forum/forum.module 17 Aug 2010 16:20:07 -0000 1.573 +++ modules/forum/forum.module 1 Sep 2010 14:11:47 -0000 @@ -96,6 +96,8 @@ function forum_menu() { ); $items['forum/%forum_forum'] = array( 'title' => 'Forums', + 'title callback' => 'forum_page_title', + 'title arguments' => array(1), 'page callback' => 'forum_page', 'page arguments' => array(1), 'access arguments' => array('access content'), @@ -162,6 +164,13 @@ function forum_menu() { } /** + * Menu item title callback - use the forum name. + */ +function forum_page_title($forum_term) { + return $forum_term->name; +} + +/** * Implements hook_menu_local_tasks_alter(). */ function forum_menu_local_tasks_alter(&$data, $router_item, $root_path) { @@ -274,13 +283,12 @@ function _forum_node_check_node_type($no * Implements hook_node_view(). */ function forum_node_view($node, $view_mode) { - $vid = variable_get('forum_nav_vocabulary', 0); - $vocabulary = taxonomy_vocabulary_load($vid); if (_forum_node_check_node_type($node)) { if ($view_mode == 'full' && node_is_page($node)) { // Breadcrumb navigation $breadcrumb[] = l(t('Home'), NULL); - $breadcrumb[] = l($vocabulary->name, 'forum'); + $menu_item = menu_get_item('forum'); + $breadcrumb[] = l($menu_item['title'], 'forum'); if ($parents = taxonomy_get_parents_all($node->forum_tid)) { $parents = array_reverse($parents); foreach ($parents as $parent) { @@ -288,7 +296,6 @@ function forum_node_view($node, $view_mo } } drupal_set_breadcrumb($breadcrumb); - } } } @@ -954,31 +961,6 @@ function forum_get_topics($tid, $sortby, * @see forums.tpl.php */ function template_preprocess_forums(&$variables) { - global $user; - - $vid = variable_get('forum_nav_vocabulary', 0); - $vocabulary = taxonomy_vocabulary_load($vid); - $title = !empty($vocabulary->name) ? $vocabulary->name : ''; - - // Breadcrumb navigation: - $breadcrumb[] = l(t('Home'), NULL); - if ($variables['tid']) { - $breadcrumb[] = l($vocabulary->name, 'forum'); - } - if ($variables['parents']) { - $variables['parents'] = array_reverse($variables['parents']); - foreach ($variables['parents'] as $p) { - if ($p->tid == $variables['tid']) { - $title = $p->name; - } - else { - $breadcrumb[] = l($p->name, 'forum/' . $p->tid); - } - } - } - drupal_set_breadcrumb($breadcrumb); - drupal_set_title($title); - if ($variables['forums_defined'] = count($variables['forums']) || count($variables['parents'])) { if (!empty($variables['forums'])) { $variables['forums'] = theme('forum_list', $variables); @@ -989,7 +971,6 @@ function template_preprocess_forums(&$va if ($variables['tid'] && !in_array($variables['tid'], variable_get('forum_containers', array()))) { $variables['topics'] = theme('forum_topic_list', $variables); - drupal_add_feed('taxonomy/term/' . $variables['tid'] . '/0/feed', 'RSS - ' . $title); } else { $variables['topics'] = ''; @@ -1013,7 +994,6 @@ function template_preprocess_forums(&$va } else { - drupal_set_title(t('No forums defined')); $variables['forums'] = ''; $variables['topics'] = ''; } Index: modules/forum/forum.pages.inc =================================================================== RCS file: /cvs/drupal/drupal/modules/forum/forum.pages.inc,v retrieving revision 1.4 diff -u -p -r1.4 forum.pages.inc --- modules/forum/forum.pages.inc 28 Apr 2010 05:54:55 -0000 1.4 +++ modules/forum/forum.pages.inc 1 Sep 2010 14:11:47 -0000 @@ -15,6 +15,34 @@ function forum_page($forum_term = NULL) $forum_term = forum_forum_load(0); } + // Breadcrumb navigation. + $breadcrumb[] = l(t('Home'), NULL); + if ($forum_term->tid) { + // Breadcrumbs should be inherited from menu link title to follow the menu + // item title changes. + $router_item = menu_get_item('forum'); + $breadcrumb[] = l($router_item['title'], 'forum'); + } + if ($forum_term->parents) { + $parents = array_reverse($forum_term->parents); + foreach ($parents as $p) { + // Breadcrumbs should contain all parent terms except current. + if ($p->tid != $forum_term->tid) { + $breadcrumb[] = l($p->name, 'forum/' . $p->tid); + } + } + } + drupal_set_breadcrumb($breadcrumb); + + + if ($forum_term->tid) { + // Add RSS feed. + drupal_add_feed('taxonomy/term/' . $forum_term->tid . '/0/feed', 'RSS - ' . $forum_term->name); + } + elseif (empty($forum_term->forums) && empty($forum_term->parents)) { + drupal_set_title(t('No forums defined')); + } + $forum_per_page = variable_get('forum_per_page', 25); $sortby = variable_get('forum_order', 1); @@ -25,5 +53,12 @@ function forum_page($forum_term = NULL) $topics = ''; } - return theme('forums', array('forums' => $forum_term->forums, 'topics' => $topics, 'parents' => $forum_term->parents, 'tid' => $forum_term->tid, 'sortby' => $sortby, 'forums_per_page' => $forum_per_page)); + return theme('forums', array( + 'forums' => $forum_term->forums, + 'topics' => $topics, + 'parents' => $forum_term->parents, + 'tid' => $forum_term->tid, + 'sortby' => $sortby, + 'forums_per_page' => $forum_per_page, + )); } Index: modules/forum/forum.test =================================================================== RCS file: /cvs/drupal/drupal/modules/forum/forum.test,v retrieving revision 1.62 diff -u -p -r1.62 forum.test --- modules/forum/forum.test 30 Aug 2010 00:22:03 -0000 1.62 +++ modules/forum/forum.test 1 Sep 2010 14:11:47 -0000 @@ -110,6 +110,15 @@ class ForumTestCase extends DrupalWebTes $this->drupalGet('forum/' . $this->forum['tid']); $this->drupalPost("node/$node->nid/edit", array(), t('Save')); $this->assertResponse(200); + + // Test forum page title change. + $this->drupalGet('forum'); + $this->assertTitle(t('Forums | Drupal')); + $vocabulary = taxonomy_vocabulary_load($this->forum['vid']); + $vocabulary->name = 'Discussions'; + taxonomy_vocabulary_save($vocabulary); + $this->drupalGet('forum'); + $this->assertTitle(t('Forums | Drupal')); } /**