diff --git a/core/modules/menu/menu.admin.inc b/core/modules/menu/menu.admin.inc index aa7c005df6947d8624f28a0e203313d9ab1d0e0d..fc38caa27bb1e1f5590a116cabe16f2c4c360521 100644 --- a/core/modules/menu/menu.admin.inc +++ b/core/modules/menu/menu.admin.inc @@ -104,7 +104,14 @@ function _menu_overview_tree_form($tree, $delta = 50) { $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/core/modules/user/lib/Drupal/user/Tests/UserAccountLinksTests.php b/core/modules/user/lib/Drupal/user/Tests/UserAccountLinksTests.php index 31a6c022cbc39ce1fb69c48799eab564f02f2890..5ef4ba902ed9c51c11caa7bb3f25e4d891965a1d 100644 --- a/core/modules/user/lib/Drupal/user/Tests/UserAccountLinksTests.php +++ b/core/modules/user/lib/Drupal/user/Tests/UserAccountLinksTests.php @@ -10,9 +10,17 @@ use Drupal\simpletest\WebTestBase; /** - * Test user-links in secondary menu. + * Tests user links in the secondary menu. */ class UserAccountLinksTests extends WebTestBase { + + /** + * Modules to enable. + * + * @var array + */ + public static $modules = array('menu'); + public static function getInfo() { return array( 'name' => 'User account links', @@ -56,4 +64,34 @@ function testSecondaryMenu() { $element = $this->xpath('//ul[@id=:menu_id]', array(':menu_id' => 'secondary-menu')); $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', + ':href' => 'user', + ':text' => 'My account', + )); + $this->assertEqual(count($link), 0, 'My account link is not in the secondary menu.'); + } + } diff --git a/core/modules/user/user.module b/core/modules/user/user.module index 313affe192865f67ab7082dca938de14e333c015..535a57978e12c4b9ad4f2f6fdcad02de165539ef 100644 --- a/core/modules/user/user.module +++ b/core/modules/user/user.module @@ -1445,7 +1445,7 @@ function user_menu_breadcrumb_alter(&$active_trail, $item) { */ 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; } }