コード例 #1
0
 /**
  *  @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);
 }
コード例 #2
0
 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'));
 }
コード例 #3
0
 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;
 }
コード例 #4
0
 /**
  * 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();
 }
コード例 #5
0
 /**
  * {@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);
 }