示例#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.');
 }
示例#2
0
 /**
  * {@inheritdoc}
  */
 public function updateLink(array $new_definition_values, $persist)
 {
     // Filter the list of updates to only those that are allowed.
     $overrides = array_intersect_key($new_definition_values, $this->overrideAllowed);
     if ($persist) {
         $this->staticOverride->saveOverride($this->getPluginId(), $overrides);
     }
     // Update the definition.
     $this->pluginDefinition = $overrides + $this->getPluginDefinition();
     return $this->pluginDefinition;
 }
示例#3
0
 /**
  * {@inheritdoc}
  */
 public function updateLink(array $new_definition_values, $persist)
 {
     // Filter the list of updates to only those that are allowed.
     $overrides = array_intersect_key($new_definition_values, $this->overrideAllowed);
     // Update the definition.
     $this->pluginDefinition = $overrides + $this->getPluginDefinition();
     if ($persist) {
         // Always save the menu name as an override to avoid defaulting to tools.
         $overrides['menu_name'] = $this->pluginDefinition['menu_name'];
         $this->staticOverride->saveOverride($this->getPluginId(), $overrides);
     }
     return $this->pluginDefinition;
 }
示例#4
0
 /**
  * Resets the menu link to its default settings.
  *
  * @param \Drupal\Core\Menu\MenuLinkInterface $instance
  *   The menu link which should be reset.
  *
  * @return \Drupal\Core\Menu\MenuLinkInterface
  *   The reset menu link.
  *
  * @throws \Drupal\Component\Plugin\Exception\PluginException
  *   Thrown when the menu link is not resettable.
  */
 protected function resetInstance(MenuLinkInterface $instance)
 {
     $id = $instance->getPluginId();
     if (!$instance->isResettable()) {
         throw new PluginException("Menu link {$id} is not resettable");
     }
     // Get the original data from disk, reset the override and re-save the menu
     // tree for this link.
     $definition = $this->getDefinitions()[$id];
     $this->overrides->deleteOverride($id);
     $this->treeStorage->save($definition);
     return $this->createInstance($id);
 }