public function testFormElementFound() { return; $contentTypeDefinition = Parser::parseCMDLFile('tests/input/test-11.cmdl'); $this->assertInstanceOf('CMDL\\ContentTypeDefinition', $contentTypeDefinition); $this->assertTrue($contentTypeDefinition->hasProperty('name')); $this->assertTrue($contentTypeDefinition->hasProperty('comment')); $this->assertTrue($contentTypeDefinition->hasProperty('a')); $this->assertTrue($contentTypeDefinition->hasProperty('b')); /* @var ViewDefinition */ $viewDefinition = $contentTypeDefinition->getViewDefinition('default'); $this->assertTrue($viewDefinition->hasProperty('name')); $this->assertTrue($viewDefinition->hasProperty('comment')); $this->assertTrue($viewDefinition->hasProperty('a')); $this->assertTrue($viewDefinition->hasProperty('b')); try { $viewDefinition->getFormElementDefinition('name'); $viewDefinition->getFormElementDefinition('comment'); $viewDefinition->getFormElementDefinition('a'); $viewDefinition->getFormElementDefinition('b'); $this->addToAssertionCount(4); } catch (\Exception $e) { $this->fail($e->getMessage()); } }
public function testProtectedProperties() { $contentTypeDefinition = Parser::parseCMDLFile('tests/input/test-05.cmdl'); $properties = $contentTypeDefinition->getProtectedProperties('default'); $this->assertCount(0, $properties); $properties = $contentTypeDefinition->getProtectedProperties('edit'); $this->assertCount(1, $properties); $properties = $contentTypeDefinition->getProtectedProperties('insert'); $this->assertCount(0, $properties); }
public function testSaveRecords() { $cmdl = $this->connection->getCMDLForContentType('example01'); $contentTypeDefinition = Parser::parseCMDLString($cmdl); $contentTypeDefinition->setName('example01'); $this->connection->selectContentType('example01'); for ($i = 1; $i <= 5; $i++) { $record = new Record($contentTypeDefinition, 'New Record ' . $i); $record->setProperty('article', 'Test ' . $i); $id = $this->connection->saveRecord($record); $this->assertEquals($i, $id); } }
public function testNumericalLists() { /* @var ContentTypeDefinition */ $contentTypeDefinition = Parser::parseCMDLString('@custom type (a,b,c) (a,b,b)'); $this->assertCount(1, $contentTypeDefinition->getCustomAnnotations()); $customAnnotations = $contentTypeDefinition->getCustomAnnotations(); /** @var CustomAnnotation $customAnnotation */ $customAnnotation = $customAnnotations[0]; $this->assertCount(3, $customAnnotation->getList(1)); $this->assertCount(2, $customAnnotation->getList(2)); $this->assertFalse($customAnnotation->hasList(3)); $this->assertCount(3, $customAnnotation->getNumericalList(1)); $this->assertCount(3, $customAnnotation->getNumericalList(2)); $this->assertFalse($customAnnotation->hasNumericalList(3)); }
public function testParsing() { /* @var TableFormElementDefinition $formElementDefinition */ $formElementDefinition = Parser::parseFormElementDefinition('Table = table (A,B)'); $this->assertInstanceOf('CMDL\\FormElementDefinitions\\TableFormElementDefinition', $formElementDefinition); $this->assertEquals('Table', $formElementDefinition->getLabel()); $this->assertEquals('table', $formElementDefinition->getName()); $this->assertFalse($formElementDefinition->isMandatory()); $this->assertFalse($formElementDefinition->isUnique()); $this->assertEquals(array(1 => 'A', 2 => 'B'), $formElementDefinition->getColumnHeadings()); $this->assertEquals(array(), $formElementDefinition->getWidths()); /* @var TableFormElementDefinition $formElementDefinition */ $formElementDefinition = Parser::parseFormElementDefinition('Table = table (A,B) (10,10,50)'); $this->assertInstanceOf('CMDL\\FormElementDefinitions\\TableFormElementDefinition', $formElementDefinition); $this->assertEquals(array(1 => 'A', 2 => 'B'), $formElementDefinition->getColumnHeadings()); $this->assertEquals(array(1 => '10', 2 => '10', 3 => '50'), $formElementDefinition->getWidths()); }
public function testDefaults() { /* @var ContentTypeDefinition */ $contentTypeDefinition = Parser::parseCMDLFile('tests/input/test-04.cmdl'); /* @var ViewDefinition */ $viewDefinition = $contentTypeDefinition->getViewDefinition('default'); $this->assertEquals('default', $viewDefinition->getName()); /* @var ViewDefinition */ $viewDefinition = $contentTypeDefinition->getEditViewDefinition(); $this->assertEquals('edit', $viewDefinition->getName()); /* @var ViewDefinition */ $viewDefinition = $contentTypeDefinition->getInsertViewDefinition(); $this->assertEquals('default', $viewDefinition->getName()); /* @var ContentTypeDefinition */ $contentTypeDefinition = Parser::parseCMDLFile('tests/input/test-10.cmdl'); /* @var ViewDefinition */ $viewDefinition = $contentTypeDefinition->getInsertViewDefinition(); $this->assertEquals('insert', $viewDefinition->getName()); /* @var ViewDefinition */ $viewDefinition = $contentTypeDefinition->getInsertViewDefinition('insert'); $this->assertEquals('insert', $viewDefinition->getName()); /* @var ViewDefinition */ $viewDefinition = $contentTypeDefinition->getInsertViewDefinition('megainsert'); $this->assertEquals('insert', $viewDefinition->getName()); /* @var ViewDefinition */ $viewDefinition = $contentTypeDefinition->getExchangeViewDefinition(); $this->assertEquals('exchange', $viewDefinition->getName()); /* @var ViewDefinition */ $viewDefinition = $contentTypeDefinition->getExchangeViewDefinition('exchange'); $this->assertEquals('exchange', $viewDefinition->getName()); /* @var ViewDefinition */ $viewDefinition = $contentTypeDefinition->getExchangeViewDefinition('megaexchange'); $this->assertEquals('megaexchange', $viewDefinition->getName()); /* @var ViewDefinition */ $viewDefinition = $contentTypeDefinition->getListViewDefinition(); $this->assertEquals('list', $viewDefinition->getName()); }
public function saveConfigTypeCMDL($repositoryName, $configTypeName, $cmdl, $locale = null, $createRepository = true) { if ($configTypeName != Util::generateValidIdentifier($configTypeName) || $repositoryName != Util::generateValidIdentifier($repositoryName)) { throw new RepositoryException('Invalid repository and/or config type name(s).'); } try { $configTypeDefinition = Parser::parseCMDLString($cmdl); $configTypeDefinition->setName($configTypeName); } catch (CMDLParserException $e) { throw new RepositoryException('Could not parse definition for config type ' . $configTypeName); } if ($this->hasRepository($repositoryName) || $createRepository == true) { $filename = $this->getCMDLDirectory(); if (file_exists($filename)) { $filename .= '/' . $repositoryName; if (!file_exists($filename)) { mkdir($filename); } $filename .= '/config'; if (!file_exists($filename)) { mkdir($filename); } $filename .= '/' . $configTypeName . '.cmdl'; if (@file_put_contents($filename, $cmdl)) { $this->app['db']->refreshConfigTypesTableStructure($repositoryName, $configTypeDefinition); $this->configTypeDefinitions = array(); return true; } } } return false; }
public function testHiddenPropertiesAnnotation() { /* @var ContentTypeDefinition */ $contentTypeDefinition = Parser::parseCMDLFile('tests/input/test-07.cmdl'); $this->assertTrue($contentTypeDefinition->hasProperty('name')); $this->assertTrue($contentTypeDefinition->hasProperty('status')); $this->assertTrue($contentTypeDefinition->hasProperty('licence')); $this->assertTrue($contentTypeDefinition->hasProperty('source')); $view = $contentTypeDefinition->getViewDefinition('default'); $this->assertTrue($view->hasProperty('name')); $this->assertTrue($view->hasProperty('status')); $this->assertTrue($view->hasProperty('licence')); $this->assertTrue($view->hasProperty('source')); $view = $contentTypeDefinition->getViewDefinition('list'); $this->assertTrue($view->hasProperty('name')); $this->assertTrue($view->hasProperty('status')); $this->assertFalse($view->hasProperty('licence')); $this->assertTrue($view->hasProperty('source')); }
public function createRecordFromCMDL($cmdl, $properties = [], $viewName = "default", $workspace = "default", $language = "default") { $contentTypeDefinition = Parser::parseCMDLString($cmdl); /** @var Record $record */ $record = new Record($contentTypeDefinition, '', $viewName, $workspace, $language); $revision = isset($jsonRecord['revision']) ? $jsonRecord['revision'] : 0; $record->setRevision($revision); if ($this->getOption('validateProperties') == true) { foreach ($properties as $property => $value) { $record->setProperty($property, $value); } } else { $record->setProperties($properties); } return $record; }
public function testWorkspacesAndLanguagesRestrictions() { /* @var ContentTypeDefinition */ $contentTypeDefinition = Parser::parseCMDLString(' a @insert a (1:i1) (default) () +++i1+++ b '); $this->assertContains('a', $contentTypeDefinition->getProperties()); $this->assertContains('b', $contentTypeDefinition->getProperties()); /* @var ViewDefinition */ $viewDefinition = $contentTypeDefinition->getViewDefinition('default'); $formelements = $viewDefinition->getFormElementDefinitions(); /** @var InsertFormElementDefinition $insertFormElement */ $insertFormElement = $formelements[1]; $this->assertContains('default', $insertFormElement->getWorkspaces()); $this->assertTrue($insertFormElement->hasWorkspacesRestriction()); $this->assertFalse($insertFormElement->hasLanguagesRestriction()); /* @var ContentTypeDefinition */ $contentTypeDefinition = Parser::parseCMDLString(' a @insert i1 (default) () +++i1+++ b '); $this->assertContains('a', $contentTypeDefinition->getProperties()); $this->assertContains('b', $contentTypeDefinition->getProperties()); /** @var InsertFormElementDefinition $insertFormElement */ $insertFormElement = $formelements[1]; $this->assertContains('default', $insertFormElement->getWorkspaces()); $this->assertTrue($insertFormElement->hasWorkspacesRestriction()); $this->assertFalse($insertFormElement->hasLanguagesRestriction()); }
public static function postEditConfigType(Application $app, Request $request, $configTypeAccessHash) { /** @var Repository $repository */ $repository = $app['repos']->getRepositoryByConfigTypeAccessHash($configTypeAccessHash); $response = array(); $response['success'] = false; if ($repository) { $cmdl = $request->get('cmdl'); try { /** @var ConfigTypeDefinition $contentTypeDefinition */ $configTypeDefinition = Parser::parseCMDLString($cmdl, null, null, 'config'); } catch (\Exception $e) { $response['message'] = $e->getMessage(); } try { /** @var ConfigTypeDefinition $contentTypeDefinition */ $configTypeDefinition = $repository->getConfigTypeDefinition(); $connection = $repository->getWriteConnection(); if ($connection->saveConfigTypeCMDL($configTypeDefinition->getName(), $cmdl)) { $response['success'] = true; $app['menus']->clearCache(); } } catch (\Exception $e) { } } return new JsonResponse($response); }
public function testTabsNotClosedExtracted() { /* @var ContentTypeDefinition */ $contentTypeDefinition = Parser::parseCMDLFile('tests/input/test-12.cmdl'); /* @var ViewDefinition */ $viewDefinition = $contentTypeDefinition->getViewDefinition('default'); $formElements = $viewDefinition->getFormElementDefinitions(); $this->assertInstanceOf('CMDL\\FormElementDefinitions\\TabStartFormElementDefinition', $formElements[0]); $this->assertInstanceOf('CMDL\\FormElementDefinitions\\TextfieldFormElementDefinition', $formElements[1]); $this->assertInstanceOf('CMDL\\FormElementDefinitions\\TextfieldFormElementDefinition', $formElements[2]); $this->assertInstanceOf('CMDL\\FormElementDefinitions\\TabNextFormElementDefinition', $formElements[3]); $this->assertInstanceOf('CMDL\\FormElementDefinitions\\TextfieldFormElementDefinition', $formElements[4]); $this->assertInstanceOf('CMDL\\FormElementDefinitions\\TextfieldFormElementDefinition', $formElements[5]); $this->assertInstanceOf('CMDL\\FormElementDefinitions\\TabEndFormElementDefinition', $formElements[6]); $this->assertTrue($contentTypeDefinition->hasClippingDefinition('clipping')); $formElements = $contentTypeDefinition->getClippingDefinition('clipping')->getFormElementDefinitions(); $this->assertInstanceOf('CMDL\\FormElementDefinitions\\TabStartFormElementDefinition', $formElements[0]); $this->assertInstanceOf('CMDL\\FormElementDefinitions\\TextfieldFormElementDefinition', $formElements[1]); $this->assertInstanceOf('CMDL\\FormElementDefinitions\\TextfieldFormElementDefinition', $formElements[2]); $this->assertInstanceOf('CMDL\\FormElementDefinitions\\TabEndFormElementDefinition', $formElements[3]); }
public function testRepositoryReference() { /** @var ReferenceFormElementDefinition $formElementDefinition */ $formElementDefinition = Parser::parseFormElementDefinition('prop1 = reference news'); $this->assertInstanceOf('CMDL\\FormElementDefinitions\\ReferenceFormElementDefinition', $formElementDefinition); $this->assertEquals('dropdown', $formElementDefinition->getType()); $this->assertEquals('news', $formElementDefinition->getContentType()); $this->assertEquals('default', $formElementDefinition->getWorkspace()); $this->assertEquals('name', $formElementDefinition->getOrder()); $this->assertFalse($formElementDefinition->hasRepositoryName()); /** @var ReferenceFormElementDefinition $formElementDefinition */ $formElementDefinition = Parser::parseFormElementDefinition('prop1 = reference a.news'); $this->assertInstanceOf('CMDL\\FormElementDefinitions\\ReferenceFormElementDefinition', $formElementDefinition); $this->assertEquals('dropdown', $formElementDefinition->getType()); $this->assertEquals('news', $formElementDefinition->getContentType()); $this->assertEquals('default', $formElementDefinition->getWorkspace()); $this->assertEquals('name', $formElementDefinition->getOrder()); $this->assertTrue($formElementDefinition->hasRepositoryName()); /** @var MultiReferenceFormElementDefinition $formElementDefinition */ $formElementDefinition = Parser::parseFormElementDefinition('prop1 = multireference news'); $this->assertInstanceOf('CMDL\\FormElementDefinitions\\MultiReferenceFormElementDefinition', $formElementDefinition); $this->assertEquals('list', $formElementDefinition->getType()); $this->assertEquals('news', $formElementDefinition->getContentType()); $this->assertEquals('default', $formElementDefinition->getWorkspace()); $this->assertEquals('name', $formElementDefinition->getOrder()); $this->assertFalse($formElementDefinition->hasRepositoryName()); /** @var MultiReferenceFormElementDefinition $formElementDefinition */ $formElementDefinition = Parser::parseFormElementDefinition('prop1 = multireference a.news'); $this->assertInstanceOf('CMDL\\FormElementDefinitions\\MultiReferenceFormElementDefinition', $formElementDefinition); $this->assertEquals('list', $formElementDefinition->getType()); $this->assertEquals('news', $formElementDefinition->getContentType()); $this->assertEquals('default', $formElementDefinition->getWorkspace()); $this->assertEquals('name', $formElementDefinition->getOrder()); $this->assertTrue($formElementDefinition->hasRepositoryName()); }
public function saveConfigTypeCMDL($repositoryName, $configTypeName, $cmdl, $locale = null, $createRepository = true) { if ($configTypeName != Util::generateValidIdentifier($configTypeName) || $repositoryName != Util::generateValidIdentifier($repositoryName)) { throw new RepositoryException('Invalid repository and/or config type name(s).'); } try { $configTypeDefinition = Parser::parseCMDLString($cmdl); $configTypeDefinition->setName($configTypeName); } catch (ParserException $e) { throw new RepositoryException('Could not parse definition for config type ' . $configTypeName); } if ($this->hasRepository($repositoryName) || $createRepository == true) { /** @var PDO $db */ $dbh = $this->app['db']->getConnection(); try { $timestamp = $this->app['repos']->getTimeshiftTimestamp(); $sql = 'INSERT INTO _cmdl_ (repository,data_type,name,cmdl,lastchange_timestamp) VALUES (? ,"config", ? , ? , ?) ON DUPLICATE KEY UPDATE cmdl = ?, lastchange_timestamp = ?'; $params = array(); $params[] = $repositoryName; $params[] = $configTypeName; $params[] = $cmdl; $params[] = $timestamp; $params[] = $cmdl; $params[] = $timestamp; $stmt = $dbh->prepare($sql); $stmt->execute($params); $this->app['db']->refreshConfigTypesTableStructure($repositoryName, $configTypeDefinition); $this->configTypeDefinitions = array(); return true; } catch (\PDOException $e) { } } return false; }
public function testPrintFormElementDefinition() { /* @var ContentTypeDefinition */ $contentTypeDefinition = Parser::parseCMDLString('> Hello world!'); /* @var ViewDefinition */ $viewDefinition = $contentTypeDefinition->getViewDefinition('default'); $formElements = $viewDefinition->getFormElementDefinitions(); $formElementDefinition = $formElements[0]; $this->assertInstanceOf('CMDL\\FormElementDefinitions\\PrintFormElementDefinition', $formElementDefinition); $this->assertEquals('Hello world!', $formElementDefinition->getDisplay()); }