示例#1
0
 private function createRootNode($page, $language, $internalName, $fixtureParams)
 {
     $rootNode = new Node();
     $rootNode->setRef($page);
     $rootNode->setDeleted(false);
     $rootNode->setInternalName($internalName);
     $rootNode->setHiddenFromNav(isset($fixtureParams['hidden_from_nav']) ? $fixtureParams['hidden_from_nav'] : false);
     $parent = $this->getParentNode($fixtureParams, $language);
     if ($parent instanceof Node) {
         $rootNode->setParent($parent);
     }
     return $rootNode;
 }
示例#2
0
 /**
  * Add children
  *
  * @param Node $child
  *
  * @return Node
  */
 public function addNode(Node $child)
 {
     $this->children[] = $child;
     $child->setParent($this);
     return $this;
 }
 /**
  * @covers Kunstmaan\NodeBundle\Entity\NodeTranslation::__construct
  * @covers Kunstmaan\NodeBundle\Entity\NodeTranslation::getFullSlug
  * @covers Kunstmaan\NodeBundle\Entity\NodeTranslation::getSlugPart
  */
 public function testGetFullSlug()
 {
     $parentNode = $this->getNodeWithTranslation('nl', 'Parent node title', 'parent-node-slug');
     $childNode = new Node();
     $childNode->setParent($parentNode);
     $childNodeTrans = new NodeTranslation();
     $childNodeTrans->setLang('nl')->setSlug('child-node-slug');
     $childNode->addNodeTranslation($childNodeTrans);
     $this->assertEquals('parent-node-slug/child-node-slug', $childNodeTrans->getFullSlug());
 }
 /**
  * @param HasNodeInterface $hasNode      The object to link to
  * @param string           $lang         The locale
  * @param BaseUser         $owner        The user
  * @param string           $internalName The internal name (may be null)
  *
  * @throws \InvalidArgumentException
  *
  * @return Node
  */
 public function createNodeFor(HasNodeInterface $hasNode, $lang, BaseUser $owner, $internalName = null)
 {
     $em = $this->getEntityManager();
     $node = new Node();
     $node->setRef($hasNode);
     if (!$hasNode->getId() > 0) {
         throw new \InvalidArgumentException("the entity of class " . $node->getRefEntityName() . " has no id, maybe you forgot to flush first");
     }
     $node->setDeleted(false);
     $node->setInternalName($internalName);
     $parent = $hasNode->getParent();
     if ($parent) {
         /* @var NodeVersion $parentNodeVersion */
         $parentNodeVersion = $em->getRepository('KunstmaanNodeBundle:NodeVersion')->findOneBy(array('refId' => $parent->getId(), 'refEntityName' => ClassLookup::getClass($parent)));
         if ($parentNodeVersion) {
             $node->setParent($parentNodeVersion->getNodeTranslation()->getNode());
         }
     }
     if ($hasNode instanceof HiddenFromNavInterface) {
         $node->setHiddenFromNav($hasNode->isHiddenFromNav());
     }
     $em->persist($node);
     $em->flush();
     $em->refresh($node);
     $em->getRepository('KunstmaanNodeBundle:NodeTranslation')->createNodeTranslationFor($hasNode, $lang, $node, $owner);
     return $node;
 }
 private function createRootNode($page, $language, $internalName, $fixtureParams)
 {
     $rootNode = new Node();
     $rootNode->setRef($page);
     $rootNode->setDeleted(false);
     $rootNode->setInternalName($internalName);
     $rootNode->setHiddenFromNav(isset($fixtureParams['hidden_from_nav']) ? $fixtureParams['hidden_from_nav'] : false);
     $parent = $this->getParentNode($fixtureParams, $language);
     if ($parent instanceof Node) {
         $rootNode->setParent($parent);
         if (!$this->canHaveChild($parent->getRefEntityName(), get_class($page))) {
             throw new \Exception(sprintf('A %s can\'t have a %s as child. Forgot to add in allowed_children or getPossibleChildTypes?', $parent->getRefEntityName(), get_class($page)));
         }
     }
     return $rootNode;
 }
 /**
  * @covers Kunstmaan\NodeBundle\Helper\Menu\ActionsMenuBuilder::createActionsMenu
  */
 public function testShouldShowDeleteButtonWhenTheNodeHasAParent()
 {
     $nodeTranslation = new NodeTranslation();
     $node = new Node();
     $node->setParent(new Node());
     $nodeTranslation->setNode($node);
     $nodeVersion = new NodeVersion();
     $nodeVersion->setType('public');
     $nodeVersion->setNodeTranslation($nodeTranslation);
     $this->builder->setActiveNodeVersion($nodeVersion);
     $menu = $this->builder->createActionsMenu();
     $this->assertNotNull($menu->getChild('action.delete'));
     $this->assertEquals('page-main-actions js-auto-collapse-buttons', $menu->getChildrenAttribute('class'));
 }