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());
     }
 }
예제 #2
0
 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;
 }
예제 #8
0
 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);
 }
예제 #12
0
 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;
 }
예제 #15
0
 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());
 }