/** * @dataProvider getMenuTests */ public function testHas($menuRoot, $name, $expectedPath) { $objectManager = $this->getDmMock($expectedPath); $objectManager->expects($this->once())->method('find')->with($this->equalTo(null), $this->equalTo($expectedPath))->will($this->returnValue($this->getMock('Knp\\Menu\\NodeInterface'))); $managerRegistry = $this->getMock('Doctrine\\Common\\Persistence\\ManagerRegistry'); $managerRegistry->expects($this->once())->method('getManager')->will($this->returnValue($objectManager)); $provider = new PhpcrMenuProvider($this->getMock('Knp\\Menu\\FactoryInterface'), $managerRegistry, $menuRoot); $provider->has($name); }
public function testHasNot() { $session = $this->getMock('PHPCR\\SessionInterface'); $session->expects($this->never())->method('getNode'); $session->expects($this->any())->method('getNamespacePrefixes')->will($this->returnValue(array('jcr', 'nt'))); $objectManager = $this->getMockBuilder('Doctrine\\ODM\\PHPCR\\DocumentManager')->disableOriginalConstructor()->getMock(); $objectManager->expects($this->any())->method('getPhpcrSession')->will($this->returnValue($session)); $objectManager->expects($this->never())->method('find'); $managerRegistry = $this->getMock('Doctrine\\Common\\Persistence\\ManagerRegistry'); $managerRegistry->expects($this->any())->method('getManager')->will($this->returnValue($objectManager)); $provider = new PhpcrMenuProvider($this->getMockBuilder('Knp\\Menu\\Loader\\NodeLoader')->disableOriginalConstructor()->getMock(), $managerRegistry, '/foo'); $this->assertFalse($provider->has('notavalidnamespace:bar')); $this->assertFalse($provider->has('not:a:valid:name')); }
public function get($name, array $options = array()) { //get the internal pages of the website $menu = parent::get($name, $options); if ($name === 'simple') { //Home menu item $item = new MenuItem('Home', $this->factory); $item->setUri($menu->getUri()); $menu->addChild($item); $item->moveToFirstPosition(); } return $menu; }
/** * This method should be used to establish the requisite * structure needed by the application or bundle of the * content repository. * * @param ManagerRegistry $registry */ public function init(ManagerRegistry $registry) { $className = self::MENU_DOCUMENT_CLASS_NAME; /** @var DocumentManager $dm */ $dm = $registry->getManagerForClass($className); /** @var Generic $parent */ $menuRoot = $this->menuProvider->getMenuRoot(); $parent = $dm->find(null, $menuRoot); if (!$parent) { throw new \InvalidArgumentException("Cannot find menu base path '{$this->menuProvider}'."); } foreach ($this->menus as $menuName => $menuLabel) { /** @var Menu $menu */ $menu = $dm->find($className, $menuRoot . '/' . $menuName); if (!$menu) { $menu = new $className(); } $menu->setName($menuName); $menu->setLabel($menuLabel); $menu->setParentDocument($parent); $dm->persist($menu); } $dm->flush(); }
/** * {@inheritdoc} */ public function execute(BlockContextInterface $blockContext, Response $response = null) { $settings = array('id' => $this->menuProvider->getMenuRoot(), 'selected' => ''); $settings = array_merge($blockContext->getSettings(), $settings); return $this->renderResponse($blockContext->getTemplate(), array('block_context' => $blockContext, 'block' => $blockContext->getBlock(), 'settings' => $settings, 'menu_node_admin' => $this->menuNodeAdmin), $response); }