/** * @dataProvider setNameProvider */ public function testSetName($sourceName, $expected) { // Arrange $a = new NodeTypeField(); $a->setName($sourceName); // Assert $this->assertEquals($expected, $a->getName()); }
public function serializeToJsonProvider() { // Node type #1 $nt1 = new NodeType(); $nt1->setName('page type'); // Node type #2 $nt2 = new NodeType(); $nt2->setName('blog post'); $nt2->setDisplayName('Un blog post'); $ntf1 = new NodeTypeField(); $ntf1->setName('Title'); $ntf1->setType(NodeTypeField::MARKDOWN_T); $nt2->addField($ntf1); return array(array(new NodeType(), ROADIZ_ROOT . '/tests/Fixtures/Handlers/nodeTypeHandler01.json'), array($nt1, ROADIZ_ROOT . '/tests/Fixtures/Handlers/nodeTypeHandler02.json'), array($nt2, ROADIZ_ROOT . '/tests/Fixtures/Handlers/nodeTypeHandler03.json')); }
/** * Fill node-source content according to field type. * * @param mixed $dataValue * @param NodesSources $nodeSource * @param NodeTypeField $field * * @return void */ public function setValueFromFieldType($dataValue, NodesSources $nodeSource, NodeTypeField $field) { switch ($field->getType()) { case NodeTypeField::DOCUMENTS_T: $hdlr = $nodeSource->getHandler(); $hdlr->cleanDocumentsFromField($field); if (is_array($dataValue)) { foreach ($dataValue as $documentId) { $tempDoc = Kernel::getService('em')->find('RZ\\Roadiz\\Core\\Entities\\Document', (int) $documentId); if ($tempDoc !== null) { $hdlr->addDocumentForField($tempDoc, $field); } } } break; case NodeTypeField::CUSTOM_FORMS_T: $hdlr = $nodeSource->getNode()->getHandler(); $hdlr->cleanCustomFormsFromField($field); if (is_array($dataValue)) { foreach ($dataValue as $customFormId) { $tempCForm = Kernel::getService('em')->find('RZ\\Roadiz\\Core\\Entities\\CustomForm', (int) $customFormId); if ($tempCForm !== null) { $hdlr->addCustomFormForField($tempCForm, $field); } } } break; case NodeTypeField::NODES_T: $hdlr = $nodeSource->getNode()->getHandler(); $hdlr->cleanNodesFromField($field); if (is_array($dataValue)) { foreach ($dataValue as $nodeId) { $tempNode = Kernel::getService('em')->find('RZ\\Roadiz\\Core\\Entities\\Node', (int) $nodeId); if ($tempNode !== null) { $hdlr->addNodeForField($tempNode, $field); } } } break; case NodeTypeField::CHILDREN_T: break; default: $setter = $field->getSetterName(); $nodeSource->{$setter}($dataValue); break; } }
private function executeCreation(InputInterface $input, OutputInterface $output) { $name = $input->getArgument('name'); $nt = new NodeType(); $nt->setName($name); $question0 = new Question('<question>Enter your node-type display name</question>: ', 'Neutral'); $displayName = $this->questionHelper->ask($input, $output, $question0); $nt->setDisplayName($displayName); $question1 = new Question('<question>Enter your node-type description</question>: ', ''); $description = $this->questionHelper->ask($input, $output, $question1); $nt->setDescription($description); $this->entityManager->persist($nt); $i = 1; while (true) { // Fields $field = new NodeTypeField(); $field->setPosition($i); $questionfName = new Question('<question>[Field ' . $i . '] Enter field name</question>: ', 'content'); $fName = $this->questionHelper->ask($input, $output, $questionfName); $field->setName($fName); $questionfLabel = new Question('<question>[Field ' . $i . '] Enter field label</question>: ', 'Your content'); $fLabel = $this->questionHelper->ask($input, $output, $questionfLabel); $field->setLabel($fLabel); $questionfType = new Question('<question>[Field ' . $i . '] Enter field type</question>: ', 'MARKDOWN_T'); $fType = $this->questionHelper->ask($input, $output, $questionfType); $fType = constant('RZ\\Roadiz\\Core\\Entities\\NodeTypeField::' . $fType); $field->setType($fType); $questionIndexed = new ConfirmationQuestion('<question>[Field ' . $i . '] Must field be indexed?</question>: ', false); if ($this->questionHelper->ask($input, $output, $questionIndexed)) { $field->setIndexed(true); } // Need to populate each side $nt->getFields()->add($field); $this->entityManager->persist($field); $field->setNodeType($nt); $questionAdd = new ConfirmationQuestion('<question>Do you want to add another field?</question>: ', true); if (!$this->questionHelper->ask($input, $output, $questionAdd)) { break; } $i++; } $this->entityManager->flush(); $nt->getHandler()->regenerateEntityClass(); $success = '<question>Node type ' . $nt->getName() . ' has been created.</question>' . PHP_EOL . '<info>Do not forget to update database schema!</info>'; return $success; }