示例#1
0
 /**
  * {@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;
 }
示例#2
0
 /**
  * {@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];
 }
示例#3
0
 /**
  * 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'], []);
 }
示例#4
0
 /**
  * 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']);
 }