diff --git a/modules/menu/menu.admin.inc b/modules/menu/menu.admin.inc index 226c3b005ee22b893bfb54f12d703d9f91a0289d..868ddade3cbb48e08fd37fe962949808bde7758a 100644 --- a/modules/menu/menu.admin.inc +++ b/modules/menu/menu.admin.inc @@ -99,7 +99,14 @@ function _menu_overview_tree_form($tree) { $mlid = 'mlid:' . $item['mlid']; $form[$mlid]['#item'] = $item; $form[$mlid]['#attributes'] = $item['hidden'] ? array('class' => array('menu-disabled')) : array('class' => array('menu-enabled')); - $form[$mlid]['title']['#markup'] = l($item['title'], $item['href'], $item['localized_options']) . ($item['hidden'] ? ' (' . t('disabled') . ')' : ''); + $form[$mlid]['title']['#markup'] = l($item['title'], $item['href'], $item['localized_options']); + if ($item['hidden']) { + $form[$mlid]['title']['#markup'] .= ' (' . t('disabled') . ')'; + } + elseif ($item['link_path'] == 'user' && $item['module'] == 'system') { + $form[$mlid]['title']['#markup'] .= ' (' . t('logged in users only') . ')'; + } + $form[$mlid]['hidden'] = array( '#type' => 'checkbox', '#title' => t('Enable @title menu link', array('@title' => $item['title'])), diff --git a/modules/user/user.module b/modules/user/user.module index 72880f7ae0d9ac41f0e30fa25e84d675932e3cc5..0e074d97bdc557dc44f9243406b65410518a0528 100644 --- a/modules/user/user.module +++ b/modules/user/user.module @@ -1873,7 +1873,7 @@ function user_menu_link_alter(&$link) { */ function user_translated_menu_link_alter(&$link) { // Hide the "User account" link for anonymous users. - if ($link['link_path'] == 'user' && $link['module'] == 'system' && user_is_anonymous()) { + if ($link['link_path'] == 'user' && $link['module'] == 'system' && !$GLOBALS['user']->uid) { $link['hidden'] = 1; } } diff --git a/modules/user/user.test b/modules/user/user.test index b53db0769df18ddc7ebf297f2c90a8a1f5f2635f..92af9fa9ab00512dae45eb9adaa1d209b15bea7f 100644 --- a/modules/user/user.test +++ b/modules/user/user.test @@ -1487,7 +1487,7 @@ class UserAutocompleteTestCase extends DrupalWebTestCase { /** - * Test user-links in secondary menu. + * Tests user links in the secondary menu. */ class UserAccountLinksUnitTests extends DrupalWebTestCase { public static function getInfo() { @@ -1498,6 +1498,10 @@ class UserAccountLinksUnitTests extends DrupalWebTestCase { ); } + function setUp() { + parent::setUp('menu'); + } + /** * Tests the secondary menu. */ @@ -1533,6 +1537,36 @@ class UserAccountLinksUnitTests extends DrupalWebTestCase { $element = $this->xpath('//ul[@id=:menu_id]', array(':menu_id' => 'secondary-menu-links')); $this->assertEqual(count($element), 0, 'No secondary-menu for logged-out users.'); } + + /** + * Tests disabling the 'My account' link. + */ + function testDisabledAccountLink() { + // Create an admin user and log in. + $this->drupalLogin($this->drupalCreateUser(array('access administration pages', 'administer menu'))); + + // Verify that the 'My account' link is enabled. + $this->drupalGet('admin/structure/menu/manage/user-menu'); + $this->assertFieldChecked('edit-mlid2-hidden', "The 'My account' link is enabled by default."); + + // Disable the 'My account' link. + $edit = array( + 'mlid:2[hidden]' => FALSE, + ); + $this->drupalPost('admin/structure/menu/manage/user-menu', $edit, t('Save configuration')); + + // Get the homepage. + $this->drupalGet(''); + + // Verify that the 'My account' link does not appear when disabled. + $link = $this->xpath('//ul[@id=:menu_id]/li/a[contains(@href, :href) and text()=:text]', array( + ':menu_id' => 'secondary-menu-links', + ':href' => 'user', + ':text' => 'My account', + )); + $this->assertEqual(count($link), 0, 'My account link is not in the secondary menu.'); + } + } /**