Example #1
0
 /**
  * Test views internal menu link options.
  */
 public function testMenuLinkOverrides()
 {
     // Link from views module.
     $views_link = $this->menuLinkManager->getDefinition('views_view:views.test_page_display_menu.page_3');
     $this->assertTrue($views_link['enabled'], 'Menu link is enabled.');
     $this->assertFalse($views_link['expanded'], 'Menu link is not expanded.');
     $views_link['enabled'] = 0;
     $views_link['expanded'] = 1;
     $this->menuLinkManager->updateDefinition($views_link['id'], $views_link);
     $views_link = $this->menuLinkManager->getDefinition($views_link['id']);
     $this->assertFalse($views_link['enabled'], 'Menu link is disabled.');
     $this->assertTrue($views_link['expanded'], 'Menu link is expanded.');
     $this->menuLinkManager->rebuild();
     $this->assertFalse($views_link['enabled'], 'Menu link is disabled.');
     $this->assertTrue($views_link['expanded'], 'Menu link is expanded.');
     // Link from user module.
     $user_link = $this->menuLinkManager->getDefinition('user.page');
     $this->assertTrue($user_link['enabled'], 'Menu link is enabled.');
     $user_link['enabled'] = 0;
     $views_link['expanded'] = 1;
     $this->menuLinkManager->updateDefinition($user_link['id'], $user_link);
     $this->assertFalse($user_link['enabled'], 'Menu link is disabled.');
     $this->menuLinkManager->rebuild();
     $this->assertFalse($user_link['enabled'], 'Menu link is disabled.');
     $this->menuLinkOverrides->reload();
     $views_link = $this->menuLinkManager->getDefinition('views_view:views.test_page_display_menu.page_3');
     $this->assertFalse($views_link['enabled'], 'Menu link is disabled.');
     $this->assertTrue($views_link['expanded'], 'Menu link is expanded.');
     $user_link = $this->menuLinkManager->getDefinition('user.page');
     $this->assertFalse($user_link['enabled'], 'Menu link is disabled.');
 }
 /**
  * Perform menu-specific rebuilding.
  */
 protected function menuLinksRebuild()
 {
     if ($this->lock->acquire(__FUNCTION__)) {
         $transaction = db_transaction();
         try {
             // Ensure the menu links are up to date.
             $this->menuLinkManager->rebuild();
             // Ignore any database replicas temporarily.
             db_ignore_replica();
         } catch (\Exception $e) {
             $transaction->rollback();
             watchdog_exception('menu', $e);
         }
         $this->lock->release(__FUNCTION__);
     } else {
         // Wait for another request that is already doing this work.
         // We choose to block here since otherwise the router item may not
         // be available during routing resulting in a 404.
         $this->lock->wait(__FUNCTION__);
     }
 }