/** * {@inheritdoc} */ public function getCurrentRouteMenuTreeParameters($menu_name) { $active_trail = $this->menuActiveTrail->getActiveTrailIds($menu_name); $parameters = new MenuTreeParameters(); $parameters->setActiveTrail($active_trail)->addExpandedParents($active_trail)->addExpandedParents($this->treeStorage->getExpanded($menu_name, $active_trail)); return $parameters; }
/** * {@inheritdoc} */ public function getCurrentRouteMenuTreeParameters($menu_name) { $route_parameters = $this->routeMatch->getRawParameters()->all(); ksort($route_parameters); $cid = 'current-route-parameters:' . $menu_name . ':route:' . $this->routeMatch->getRouteName() . ':route_parameters:' . serialize($route_parameters); if (!isset($this->cachedCurrentRouteParameters[$menu_name])) { $cache = $this->cache->get($cid); if ($cache && $cache->data) { $parameters = $cache->data; } else { $active_trail = $this->menuActiveTrail->getActiveTrailIds($menu_name); $parameters = new MenuTreeParameters(); $parameters->setActiveTrail($active_trail)->addExpandedParents($active_trail)->addExpandedParents($this->treeStorage->getExpanded($menu_name, $active_trail)); $this->cache->set($cid, $parameters, CacheBackendInterface::CACHE_PERMANENT, array('menu' => $menu_name)); } $this->cachedCurrentRouteParameters[$menu_name] = $parameters; } return $this->cachedCurrentRouteParameters[$menu_name]; }
/** * Tests the loadTreeData method. */ public function testLoadTree() { $this->addMenuLink('test1', ''); $this->addMenuLink('test2', 'test1'); $this->addMenuLink('test3', 'test2'); $this->addMenuLink('test4'); $this->addMenuLink('test5', 'test4'); $data = $this->treeStorage->loadTreeData('tools', new MenuTreeParameters()); $tree = $data['tree']; $this->assertEqual(count($tree['test1']['subtree']), 1); $this->assertEqual(count($tree['test1']['subtree']['test2']['subtree']), 1); $this->assertEqual(count($tree['test1']['subtree']['test2']['subtree']['test3']['subtree']), 0); $this->assertEqual(count($tree['test4']['subtree']), 1); $this->assertEqual(count($tree['test4']['subtree']['test5']['subtree']), 0); $parameters = new MenuTreeParameters(); $parameters->setActiveTrail(array('test4', 'test5')); $data = $this->treeStorage->loadTreeData('tools', $parameters); $tree = $data['tree']; $this->assertEqual(count($tree['test1']['subtree']), 1); $this->assertFalse($tree['test1']['in_active_trail']); $this->assertEqual(count($tree['test1']['subtree']['test2']['subtree']), 1); $this->assertFalse($tree['test1']['subtree']['test2']['in_active_trail']); $this->assertEqual(count($tree['test1']['subtree']['test2']['subtree']['test3']['subtree']), 0); $this->assertFalse($tree['test1']['subtree']['test2']['subtree']['test3']['in_active_trail']); $this->assertEqual(count($tree['test4']['subtree']), 1); $this->assertTrue($tree['test4']['in_active_trail']); $this->assertEqual(count($tree['test4']['subtree']['test5']['subtree']), 0); $this->assertTrue($tree['test4']['subtree']['test5']['in_active_trail']); // Add some conditions to ensure that conditions work as expected. $parameters = new MenuTreeParameters(); $parameters->addCondition('parent', 'test1'); $data = $this->treeStorage->loadTreeData('tools', $parameters); $this->assertEqual(count($data['tree']), 1); $this->assertEqual($data['tree']['test2']['definition']['id'], 'test2'); $this->assertEqual($data['tree']['test2']['subtree'], []); // Test for only enabled links. $link = $this->treeStorage->load('test3'); $link['enabled'] = FALSE; $this->treeStorage->save($link); $link = $this->treeStorage->load('test4'); $link['enabled'] = FALSE; $this->treeStorage->save($link); $link = $this->treeStorage->load('test5'); $link['enabled'] = FALSE; $this->treeStorage->save($link); $parameters = new MenuTreeParameters(); $parameters->onlyEnabledLinks(); $data = $this->treeStorage->loadTreeData('tools', $parameters); $this->assertEqual(count($data['tree']), 1); $this->assertEqual($data['tree']['test1']['definition']['id'], 'test1'); $this->assertEqual(count($data['tree']['test1']['subtree']), 1); $this->assertEqual($data['tree']['test1']['subtree']['test2']['definition']['id'], 'test2'); $this->assertEqual($data['tree']['test1']['subtree']['test2']['subtree'], []); }
/** * Tests the loadTreeData method. */ public function testLoadTree() { $this->addMenuLink('test1', ''); $this->addMenuLink('test2', 'test1'); $this->addMenuLink('test3', 'test2'); $this->addMenuLink('test4'); $this->addMenuLink('test5', 'test4'); $data = $this->treeStorage->loadTreeData('tools', new MenuTreeParameters()); $tree = $data['tree']; $this->assertEqual(count($tree['test1']['subtree']), 1); $this->assertEqual(count($tree['test1']['subtree']['test2']['subtree']), 1); $this->assertEqual(count($tree['test1']['subtree']['test2']['subtree']['test3']['subtree']), 0); $this->assertEqual(count($tree['test4']['subtree']), 1); $this->assertEqual(count($tree['test4']['subtree']['test5']['subtree']), 0); $parameters = new MenuTreeParameters(); $parameters->setActiveTrail(array('test4', 'test5')); $data = $this->treeStorage->loadTreeData('tools', $parameters); $tree = $data['tree']; $this->assertEqual(count($tree['test1']['subtree']), 1); $this->assertFalse($tree['test1']['in_active_trail']); $this->assertEqual(count($tree['test1']['subtree']['test2']['subtree']), 1); $this->assertFalse($tree['test1']['subtree']['test2']['in_active_trail']); $this->assertEqual(count($tree['test1']['subtree']['test2']['subtree']['test3']['subtree']), 0); $this->assertFalse($tree['test1']['subtree']['test2']['subtree']['test3']['in_active_trail']); $this->assertEqual(count($tree['test4']['subtree']), 1); $this->assertTrue($tree['test4']['in_active_trail']); $this->assertEqual(count($tree['test4']['subtree']['test5']['subtree']), 0); $this->assertTrue($tree['test4']['subtree']['test5']['in_active_trail']); }