/** * @param HasNodeInterface $hasNode The object * @param NodeTranslation $nodeTranslation The node translation * @param BaseUser $owner The user * @param NodeVersion $origin The nodeVersion this nodeVersion originated from * @param string $type (public|draft) * @param DateTime $created The date this node version is created * * @return NodeVersion */ public function createNodeVersionFor(HasNodeInterface $hasNode, NodeTranslation $nodeTranslation, BaseUser $owner, NodeVersion $origin = null, $type = 'public', $created = null) { $em = $this->getEntityManager(); $nodeVersion = new NodeVersion(); $nodeVersion->setNodeTranslation($nodeTranslation); $nodeVersion->setType($type); $nodeVersion->setOwner($owner); $nodeVersion->setRef($hasNode); $nodeVersion->setOrigin($origin); if (!is_null($created)) { $nodeVersion->setCreated($created); } $em->persist($nodeVersion); $em->flush(); $em->refresh($nodeVersion); return $nodeVersion; }
public function postFlushBuild(Fixture $fixture) { $entities = $fixture->getAdditionalEntities(); $fixtureParams = $fixture->getParameters(); foreach ($fixture->getTranslations() as $language => $data) { /** @var HasNodeInterface $page */ $page = $entities[$fixture->getName() . '_' . $language]; /** @var NodeTranslation $translationNode */ $translationNode = $entities['translationNode_' . $language]; $pagecreator = array_key_exists('creator', $fixtureParams) ? $fixtureParams['creator'] : 'pagecreator'; $creator = $this->userRepo->findOneBy(array('username' => $pagecreator)); $nodeVersion = new NodeVersion(); $nodeVersion->setNodeTranslation($translationNode); $nodeVersion->setType('public'); $nodeVersion->setOwner($creator); $nodeVersion->setRef($page); $translationNode->setPublicNodeVersion($nodeVersion); if (isset($fixtureParams['template'])) { $pageTemplateConfiguration = new PageTemplateConfiguration(); $pageTemplateConfiguration->setPageId($page->getId()); $pageTemplateConfiguration->setPageEntityName(ClassLookup::getClass($page)); $pageTemplateConfiguration->setPageTemplate($fixtureParams['template']); $this->manager->persist($pageTemplateConfiguration); } $this->manager->persist($nodeVersion); $this->manager->persist($translationNode); } $this->manager->flush(); }
/** * @covers Kunstmaan\NodeBundle\Entity\NodeTranslation::addNodeVersion * @covers Kunstmaan\NodeBundle\Entity\NodeTranslation::getNodeVersion */ public function testAddGetNodeVersion() { $nodeVersion1 = new NodeVersion(); $nodeVersion1->setType('public'); $this->object->addNodeVersion($nodeVersion1); $nodeVersion2 = new NodeVersion(); $nodeVersion2->setType('draft'); $this->object->addNodeVersion($nodeVersion2); $this->assertEquals($nodeVersion1, $this->object->getNodeVersion('public')); $this->assertEquals($nodeVersion2, $this->object->getNodeVersion('draft')); }
/** * @covers Kunstmaan\NodeBundle\Entity\NodeVersion::getType * @covers Kunstmaan\NodeBundle\Entity\NodeVersion::setType */ public function testSetGetType() { $this->object->setType(NodeVersion::DRAFT_VERSION); $this->assertEquals(NodeVersion::DRAFT_VERSION, $this->object->getType()); }
/** * @param HasNodeInterface $page The page * @param NodeTranslation $nodeTranslation The node translation * @param NodeVersion $nodeVersion The node version * * @return NodeVersion */ private function createDraftVersion(HasNodeInterface $page, NodeTranslation $nodeTranslation, NodeVersion $nodeVersion) { $publicPage = $this->get('kunstmaan_admin.clone.helper')->deepCloneAndSave($page); /* @var NodeVersion $publicNodeVersion */ $publicNodeVersion = $this->em->getRepository('KunstmaanNodeBundle:NodeVersion')->createNodeVersionFor($publicPage, $nodeTranslation, $this->user, $nodeVersion->getOrigin(), 'public', $nodeVersion->getCreated()); $nodeTranslation->setPublicNodeVersion($publicNodeVersion); $nodeVersion->setType('draft'); $nodeVersion->setOrigin($publicNodeVersion); $nodeVersion->setCreated(new DateTime()); $this->em->persist($nodeTranslation); $this->em->persist($nodeVersion); $this->em->flush(); $this->get('event_dispatcher')->dispatch(Events::CREATE_DRAFT_VERSION, new NodeEvent($nodeTranslation->getNode(), $nodeTranslation, $nodeVersion, $page)); return $nodeVersion; }
/** * @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')); }
/** * @covers Kunstmaan\NodeBundle\Helper\Menu\ActionsMenuBuilder::createActionsMenu */ public function testShouldShowRecopyButtonWhenTheNodeHasTranslations() { $node = new Node(); $nodeTranslation = new NodeTranslation(); $nodeTranslation->setLang('en'); $node->addNodeTranslation($nodeTranslation); $nodeVersion = new NodeVersion(); $nodeVersion->setType("public"); $nodeVersion->setNodeTranslation($nodeTranslation); $this->builder->setActiveNodeVersion($nodeVersion); $nodeTranslation = new NodeTranslation(); $nodeTranslation->setLang('nl'); $node->addNodeTranslation($nodeTranslation); $nodeVersion = new NodeVersion(); $nodeVersion->setType("public"); $nodeVersion->setNodeTranslation($nodeTranslation); $this->builder->setActiveNodeVersion($nodeVersion); $menu = $this->builder->createActionsMenu(); $this->assertNotNull($menu->getChild('action.recopyfromlanguage')); $this->assertEquals('page-main-actions js-auto-collapse-buttons', $menu->getChildrenAttribute('class')); }