/**
  *
  * @param \Sds\DoctrineExtensions\Generator\GenerateEventArgs $eventArgs
  */
 public function generatorDojoValidator(GenerateEventArgs $eventArgs)
 {
     $metadata = $eventArgs->getDocumentManager()->getClassMetadata($eventArgs->getClassName());
     $options = $eventArgs->getOptions();
     $resource = $eventArgs->getResource();
     $field = $options['field'];
     $defaultMixins = $this->getDefaultMixins();
     if (!isset($metadata->validator['fields'][$field])) {
         return;
     }
     if (count($metadata->validator['fields'][$field]) > 1) {
         $templateArgs = ['dependencyMids' => $defaultMixins['validator']['group'], 'dependencies' => $this->namesFromMids($defaultMixins['validator']['group']), 'mixins' => $this->namesFromMids($defaultMixins['validator']['group']), 'params' => ['field' => "{$field}"]];
         foreach ($metadata->validator['fields'][$field] as $validator) {
             $validatorMid = $this->midFromClass($validator['class']);
             $validatorName = $this->nameFromMid($validatorMid);
             $templateArgs['dependencyMids'][] = $validatorMid;
             $templateArgs['dependencies'][] = $validatorName;
             if (isset($validator['options']) && count($validator['options']) > 0) {
                 $params = json_encode($validator['options']);
                 $templateArgs['params']['validators'][] = new Expr("new {$validatorName}({$params})");
             } else {
                 $templateArgs['params']['validators'][] = new Expr("new {$validatorName}");
             }
         }
     } else {
         $validator = $metadata->validator['fields'][$field][0];
         $mid = $this->midFromClass($validator['class']);
         $templateArgs = ['dependencyMids' => [$mid], 'dependencies' => [$this->nameFromMid($mid)], 'mixins' => [$this->nameFromMid($mid)]];
         if (isset($validator['options'])) {
             $templateArgs['params'] = array_merge(['field' => "{$field}"], $validator['options']);
         } else {
             $templateArgs['params'] = ['field' => "{$field}"];
         }
     }
     $templateArgs['dependencyMids'] = ',' . $this->indent($this->implodeMids($templateArgs['dependencyMids']));
     $templateArgs['dependencies'] = ',' . $this->indent($this->implodeNames($templateArgs['dependencies']));
     $templateArgs['mixins'] = $this->indent($this->implodeNames($templateArgs['mixins']), 12) . $this->indent("\n", 8);
     $templateArgs['params'] = $this->implodeParams($templateArgs['params']);
     $templateArgs['comment'] = $this->indent("// Will return a validator that can be used to check\n// the {$field} field");
     $resource->content = $this->populateTemplate(file_get_contents(__DIR__ . '/Template/Module.js.template'), $templateArgs);
     $this->persistToFile($this->getFilePath($metadata->name, $field), $resource->content);
 }
Пример #2
0
 /**
  *
  * @param \Sds\DoctrineExtensions\Generator\GenerateEventArgs $eventArgs
  */
 public function generatorDojoForm(GenerateEventArgs $eventArgs)
 {
     $metadata = $eventArgs->getDocumentManager()->getClassMetadata($eventArgs->getClassName());
     $options = $eventArgs->getOptions();
     $resource = $eventArgs->getResource();
     $defaultMixins = $this->getDefaultMixins();
     $templateArgs = [];
     $hasMultiFieldValidator = array_key_exists(MultiFieldValidator::getResourceName($metadata->name), $metadata->generator);
     $params = [];
     if ($hasMultiFieldValidator) {
         $defaultMids = $defaultMixins['form']['withValidator'];
     } else {
         $defaultMids = $defaultMixins['form']['simple'];
     }
     if (isset($options['mixins'])) {
         $templateArgs['dependencyMids'] = $options['mixins'];
     } else {
         $templateArgs['dependencyMids'] = $defaultMids;
     }
     $templateArgs['mixins'] = $this->namesFromMids($templateArgs['dependencyMids']);
     $templateArgs['dependencies'] = $this->namesFromMids($templateArgs['dependencyMids']);
     if ($hasMultiFieldValidator) {
         $templateArgs['dependencyMids'][] = MultiFieldValidator::getMid($metadata->name);
         $templateArgs['dependencies'][] = 'MultiFieldValidator';
         $params['validator'] = new Expr('new MultiFieldValidator');
     }
     $params['inputs'] = [];
     foreach ($this->getSerializer()->fieldListForUnserialize($metadata) as $field) {
         $templateArgs['dependencyMids'][] = Input::getMid($metadata->name, $field);
         $templateArgs['dependencies'][] = ucfirst($field) . 'Input';
         $params['inputs'][] = new Expr('new ' . ucfirst($field) . 'Input');
     }
     $templateArgs['dependencyMids'] = ',' . $this->indent($this->implodeMids($templateArgs['dependencyMids']));
     $templateArgs['dependencies'] = ',' . $this->indent($this->implodeNames($templateArgs['dependencies']));
     $templateArgs['mixins'] = $this->indent($this->implodeNames($templateArgs['mixins']), 12) . $this->indent("\n", 8);
     $templateArgs['params'] = $this->implodeParams($params);
     $templateArgs['comment'] = $this->indent("// Will return a form for {$metadata->name}");
     $resource->content = $this->populateTemplate(file_get_contents(__DIR__ . '/Template/Module.js.template'), $templateArgs);
     $this->persistToFile($this->getFilePath($metadata->name), $resource->content);
 }
Пример #3
0
 /**
  *
  * @param \Sds\DoctrineExtensions\Generator\GenerateEventArgs $eventArgs
  */
 public function generatorDojoJsonRest(GenerateEventArgs $eventArgs)
 {
     $options = $eventArgs->getOptions();
     $resource = $eventArgs->getResource();
     $metadata = $eventArgs->getDocumentManager()->getClassMetadata($eventArgs->getClassName());
     $defaultMixins = $this->getDefaultMixins();
     $templateArgs = [];
     $params = [];
     if (isset($options['mixins'])) {
         $templateArgs['dependencyMids'] = $options['mixins'];
     } else {
         $templateArgs['dependencyMids'] = $defaultMixins['store']['jsonRest'];
     }
     $templateArgs['mixins'] = $this->namesFromMids($templateArgs['dependencyMids']);
     $templateArgs['dependencies'] = $this->namesFromMids($templateArgs['dependencyMids']);
     $modelMid = Model::getMid($metadata->name);
     $pieces = explode('/', $modelMid);
     $model = $pieces[count($pieces) - 1];
     $templateArgs['dependencyMids'][] = $modelMid;
     $templateArgs['dependencies'][] = $model;
     $params['name'] = $metadata->collection;
     $params['idField'] = $metadata->identifier;
     if (isset($metadata->rest)) {
         $params['target'] = $metadata->rest['endpoint'];
     } else {
         $params['target'] = $metadata->collection;
     }
     $params['model'] = new Expr($model);
     $templateArgs['dependencyMids'] = ',' . $this->indent($this->implodeMids($templateArgs['dependencyMids']));
     $templateArgs['dependencies'] = ',' . $this->indent($this->implodeNames($templateArgs['dependencies']));
     $templateArgs['mixins'] = $this->indent($this->implodeNames($templateArgs['mixins']), 12) . $this->indent("\n", 8);
     $templateArgs['params'] = $this->implodeParams($params);
     $templateArgs['comment'] = $this->indent("// Will return create a dojo JsonRest store for {$metadata->name}");
     $resource->content = $this->populateTemplate(file_get_contents(__DIR__ . '/Template/Module.js.template'), $templateArgs);
     $this->persistToFile($this->getFilePath($metadata->name), $resource->content);
 }
Пример #4
0
 /**
  *
  * @param \Sds\DoctrineExtensions\Generator\GenerateEventArgs $eventArgs
  */
 public function generatorDojoInput(GenerateEventArgs $eventArgs)
 {
     $metadata = $eventArgs->getDocumentManager()->getClassMetadata($eventArgs->getClassName());
     $options = $eventArgs->getOptions();
     $resource = $eventArgs->getResource();
     $field = $options['field'];
     $defaultMixins = $this->getDefaultMixins();
     $templateArgs = [];
     $hasValidator = array_key_exists(Validator::getResourceName($metadata->name, $field), $metadata->generator);
     $params = [];
     if ($hasValidator) {
         switch ($metadata->fieldMappings[$field]['type']) {
             case 'int':
                 $defaultMids = $defaultMixins['input']['intWithValidator'];
                 break;
             case 'float':
                 $defaultMids = $defaultMixins['input']['floatWithValidator'];
                 break;
             case 'custom_id':
                 $params['type'] = "hidden";
             case 'string':
             default:
                 $defaultMids = $defaultMixins['input']['stringWithValidator'];
                 break;
         }
         if (isset($options['mixins'])) {
             $templateArgs['dependencyMids'] = $options['mixins'];
         } else {
             $templateArgs['dependencyMids'] = $defaultMids;
         }
         $templateArgs['dependencies'] = $this->namesFromMids($templateArgs['dependencyMids']);
         $templateArgs['mixins'] = $this->namesFromMids($templateArgs['dependencyMids']);
         $templateArgs['dependencyMids'][] = Validator::getMid($metadata->name, $field);
         $templateArgs['dependencies'][] = ucfirst($field) . 'Validator';
         $params['validator'] = new Expr('new ' . ucfirst($field) . 'Validator');
     } else {
         switch ($metadata->fieldMappings[$field]['type']) {
             case 'int':
                 $defaultMids = $defaultMixins['input']['int'];
                 break;
             case 'float':
                 $defaultMids = $defaultMixins['input']['float'];
                 break;
             case 'custom_id':
                 $params['type'] = 'hidden';
             case 'string':
             default:
                 $defaultMids = $defaultMixins['input']['string'];
                 break;
         }
         if (isset($options['mixins'])) {
             $templateArgs['dependencyMids'] = $options['mixins'];
         } else {
             $templateArgs['dependencyMids'] = $defaultMids;
         }
         $templateArgs['dependencies'] = $this->namesFromMids($templateArgs['dependencyMids']);
         $templateArgs['mixins'] = $this->namesFromMids($templateArgs['dependencyMids']);
     }
     $params['name'] = $field;
     //Camel case splitting regex
     $regex = '/(?<=[a-z])(?=[A-Z])/x';
     $params['label'] = ucfirst(implode(' ', preg_split($regex, $field)));
     if (isset($options['params'])) {
         foreach ($options['params'] as $key => $value) {
             $params[$key] = $value;
         }
     }
     $templateArgs['dependencyMids'] = ',' . $this->indent($this->implodeMids($templateArgs['dependencyMids']));
     $templateArgs['dependencies'] = ',' . $this->indent($this->implodeNames($templateArgs['dependencies']));
     $templateArgs['mixins'] = $this->indent($this->implodeNames($templateArgs['mixins']), 12) . $this->indent("\n", 8);
     $templateArgs['params'] = $this->implodeParams($params);
     $templateArgs['comment'] = $this->indent("// Will return an input for the {$field} field");
     $resource->content = $this->populateTemplate(file_get_contents(__DIR__ . '/Template/Module.js.template'), $templateArgs);
     $this->persistToFile($this->getFilePath($metadata->name, $field), $resource->content);
 }