public function bootRunTime(Object $object, Configs $configs) { $field = $this->getFieldDefinition(); //check for n-to-n relation and create crossTable if (AbstractStorage::MANY_TO_MANY == $field->getObjectRelation()) { if ($this->defineCrossObject($object, $configs)) { $configs->addReboot(sprintf('Added crossObject for field %s', $field->getId())); } } // //check for n-to-1 and one-to-one objectRelations and create cross object with relations // if (ORMAbstract::MANY_TO_ONE == $field->getObjectRelation() || // ORMAbstract::ONE_TO_ONE == $field->getObjectRelation() // ) { if ($this->defineRelation($object, $configs)) { $configs->addReboot(sprintf('Defined relation %s from %s -> %s', $field->getObjectRelation(), $object->getKey() . '.' . $field->getId(), $field->getObject())); } // } //create virtual reference-field for many-to-one relations if ($this->getFieldDefinition()->getObjectRelation() == AbstractStorage::MANY_TO_ONE) { if ($object = $configs->getObject($field->getObject())) { if (!($refName = $field->getObjectRefRelationName())) { $refName = $field->getObjectDefinition()->getId(); } $refName = lcfirst($refName); $virtualField = $object->getField($refName); if (!$virtualField) { $virtualField = new Field(null, $object->getJarves()); $virtualField->setVirtual(true); $virtualField->setId($refName); $virtualField->setType('object'); $virtualField->setLabel('Auto Object Relation (' . $field->getObject() . ')'); $virtualField->setObject($field->getObjectDefinition()->getKey()); $virtualField->setObjectRelation(AbstractStorage::ONE_TO_MANY); $object->addField($virtualField); $configs->addReboot(sprintf('Added virtualField for field %s', $field->getId())); } } } }
public function testPluginConfigPhp() { $plugin = new Plugin(); $plugin->setId('listing'); $plugin->setLabel('News Listing'); $plugin->setController('Publication\\Controller\\Plugin\\News:listing'); $route1 = new Route(); $route1->setPattern('{page}'); $route1->addDefault(new RouteDefault(['key' => 'page', 'value' => 1])); $route1->addRequirement(new RouteRequirement(['key' => 'page', 'value' => '\\d'])); $plugin->addRoute($route1); $route2 = new Route(null, $this->getJarves()); $route2->setPattern('{slug}'); $route2->addRequirement(new RouteRequirement(['key' => 'page', 'value' => '[^/]+'])); $plugin->addRoute($route2); $field1 = new Field(null, $this->getJarves()); $field1->setId('template'); $field1->setType('view'); $field1->setLabel('Template'); $field1->setOption('directory', '@PublicationBundle/news/list/'); $field2 = new Field(null, $this->getJarves()); $field2->setId('itemsPerPage'); $field2->setType('number'); $field2->setLabel('Items per page'); $field2->setDefault(10); $field3 = new Field(null, $this->getJarves()); $field3->setId('detailPage'); $field3->setType('object'); $field3->setLabel('Detail page'); $field3->setObject('JarvesBundle:Node'); $plugin->addOption($field1); $plugin->addOption($field2); $plugin->addOption($field3); $this->valueTest($plugin); }
public function testObjectBrowserColumns() { $xml = '<object id="View"> <label>Template View</label> <desc>Template views</desc> <storageService>\\Admin\\ObjectView</storageService> <labelField>name</labelField> <nested>true</nested> <fields> <field id="path" type="text" primaryKey="true"> <label>Path</label> </field> <field id="name" type="text"> <label>File name</label> </field> </fields> <browserColumns> <field id="path" type="text"> <label>Path</label> </field> <field id="name" type="text"> <label>File name</label> </field> </browserColumns> </object>'; $object = new Object(null, $this->getJarves()); $object->setId('View'); $object->setLabel('Template View'); $object->setDesc('Template views'); $object->setLabelField('name'); $object->setNested(true); $object->setStorageService('\\Admin\\ObjectView'); $field1 = new Field(null, $this->getJarves()); $field1->setId('path'); $field1->setPrimaryKey(true); $field1->setLabel('Path'); $field1->setType('text'); $field2 = new Field(null, $this->getJarves()); $field2->setId('name'); $field2->setLabel('File name'); $field2->setType('text'); $object->setFields(array($field1, $field2)); $field1 = new Field(null, $this->getJarves()); $field1->setId('path'); $field1->setLabel('Path'); $field1->setType('text'); $field2 = new Field(null, $this->getJarves()); $field2->setId('name'); $field2->setLabel('File name'); $field2->setType('text'); $object->setBrowserColumns(array($field1, $field2)); $reverse = new Object($xml, $this->getJarves()); $this->assertEquals($xml, $object->toXml()); $this->assertEquals($xml, $reverse->toXml()); }