示例#1
0
 private function getClass(Parameter $parameter)
 {
     /** @var ClassType $type */
     $type = $parameter->getType();
     $class = $type->getClass();
     return $class;
 }
示例#2
0
 /**
  * @param Parameter $parameter
  * @param string $serialized
  * @return mixed
  * @throws \Exception
  */
 public function inflate(Parameter $parameter, $serialized)
 {
     if (!$parameter->getType()->is(intval($serialized))) {
         throw new \Exception("[{$serialized}] is not in range " . $parameter->getType());
     }
     return (int) $serialized;
 }
示例#3
0
文件: FileField.php 项目: jonfm/domin
 /**
  * @param Parameter $parameter
  * @param File|null $file
  * @return string
  */
 protected function renderImagePreservation(Parameter $parameter, File $file = null)
 {
     if ($file === null) {
         return '';
     }
     return (string) new Element('p', [], [new Element('input', ['type' => 'hidden', 'name' => $parameter->getName() . '[name]', 'value' => $file->getName()]), new Element('input', ['type' => 'hidden', 'name' => $parameter->getName() . '[type]', 'value' => $file->getType()]), new Element('input', ['type' => 'hidden', 'name' => $parameter->getName() . '[data]', 'value' => base64_encode($file->getContent())]), (new FileRenderer())->render($file)]);
 }
示例#4
0
 /**
  * @param Parameter $parameter
  * @return EnumerationType
  */
 private function getType(Parameter $parameter)
 {
     $type = $parameter->getType();
     if (!$type instanceof EnumerationType) {
         throw new \InvalidArgumentException("[{$type}] must be an EnumerationType");
     }
     return $type;
 }
示例#5
0
 private function getTypes(Parameter $parameter)
 {
     $type = $parameter->getType();
     if (!$type instanceof MultiType) {
         throw new \InvalidArgumentException("[{$type}] must be a MultiType");
     }
     return $type->getTypes();
 }
示例#6
0
 private function getInnerParameter(Parameter $parameter)
 {
     $type = $parameter->getType();
     if (!$type instanceof NullableType) {
         throw new \InvalidArgumentException("[{$type}] is not a NullableType");
     }
     return new Parameter($parameter->getName() . '-value', $type->getType());
 }
示例#7
0
 protected function renderComboBox(Parameter $parameter, $value, $fieldNameSuffix = '', $options = [])
 {
     $id = str_replace(['[', ']'], '-', $parameter->getName());
     $optionsString = json_encode($options);
     $children = $this->renderOptions($parameter, (string) $value);
     $children[] = new Element('script', [], ["\n              \$(function(){\n                \$('#{$id}').combobox({$optionsString});\n              });\n            "]);
     return (string) new Element('select', ['name' => $parameter->getName() . $fieldNameSuffix, 'id' => $id, 'class' => 'form-control combobox'], $children);
 }
示例#8
0
 private function getClass(Parameter $parameter)
 {
     $type = $parameter->getType();
     if (!$type instanceof ClassType) {
         throw new \InvalidArgumentException("[{$type}] is not a ClassType");
     }
     return $type->getClass();
 }
示例#9
0
 /**
  * @param Parameter $parameter
  * @return string
  */
 private function getType(Parameter $parameter)
 {
     switch (get_class($parameter->getType())) {
         case IntegerType::class:
             return 'number';
         default:
             return 'text';
     }
 }
示例#10
0
 /**
  * @param Parameter $parameter
  * @param string $serialized
  * @return \DateInterval
  */
 public function inflate(Parameter $parameter, $serialized)
 {
     if (!$serialized) {
         return $parameter->isRequired() ? new \DateInterval('P0D') : null;
     }
     $days = intval($serialized['d']);
     $hours = intval($serialized['h']);
     $minutes = intval($serialized['i']);
     return new \DateInterval("P{$days}DT{$hours}H{$minutes}M");
 }
示例#11
0
 /**
  * @param Parameter $parameter
  * @param mixed $value
  * @return string
  */
 public function render(Parameter $parameter, $value)
 {
     /** @var RangeType $range */
     $range = $parameter->getType();
     $min = $range->getMin();
     $max = $range->getMax();
     $step = $range->getStep();
     $value = is_null($value) ? $min : (int) $value;
     $name = $parameter->getName();
     $id = str_replace(['[', ']'], ['-', ''], $name);
     return (string) new Element('div', ['class' => 'form-group', 'id' => $id], [new Element('div', ['class' => 'slider']), new Element('input', ['class' => 'amount form-control', 'type' => 'number', 'name' => $name, 'value' => $value]), new Element('script', [], ["\$(function() {\n                    \$('#{$id} .slider').slider({\n                      range: 'min',\n                      value: {$value},\n                      min: {$min},\n                      max: {$max},\n                      step: {$step},\n                      slide: function(event, ui) {\n                            \$('#{$id} .amount').val(ui.value);\n                        }\n                    });\n                });"])]);
 }
示例#12
0
 /**
  * @param Parameter $parameter
  * @param string $serialized
  * @return mixed
  */
 public function inflate(Parameter $parameter, $serialized)
 {
     switch (get_class($parameter->getType())) {
         case LongType::class:
         case IntegerType::class:
             return (int) $serialized;
         case DoubleType::class:
             return (double) $serialized;
         case FloatType::class:
             return (double) $serialized;
         default:
             return (string) $serialized;
     }
 }
 /**
  * @param Parameter $parameter
  * @return string
  * @throws \Exception
  */
 public function read(Parameter $parameter)
 {
     $prompt = $parameter->getName();
     if ($parameter->isRequired()) {
         $prompt = $prompt . '*';
     }
     $field = $this->getField($parameter);
     $description = $field->getDescription($parameter);
     if ($description !== null) {
         $prompt .= ' ' . $description;
     }
     $value = $this->console->read($prompt . ': ');
     while ($parameter->isRequired() && !$value) {
         $value = $this->console->read($prompt . ': ');
     }
     return $value;
 }
示例#14
0
 /**
  * @param Parameter $parameter
  * @return bool
  */
 public function handles(Parameter $parameter)
 {
     return $parameter->getType() == new BooleanType();
 }
示例#15
0
 /**
  * @param Parameter $parameter
  * @return boolean
  */
 public function has(Parameter $parameter)
 {
     return $this->request->files->has($parameter->getName()) || $this->request->get($parameter->getName(), '__NOPEDINOPE__') != '__NOPEDINOPE__';
 }
示例#16
0
 /**
  * @param Parameter $parameter
  * @param string $suffix
  * @return Parameter
  */
 private function makeInnerParameter(Parameter $parameter, $suffix = '')
 {
     /** @var ArrayType $type */
     $type = $parameter->getType();
     return new Parameter($parameter->getName() . $suffix, $type->getItemType());
 }
示例#17
0
 /**
  * @param Parameter $parameter
  * @param Color $value
  * @return string
  */
 public function render(Parameter $parameter, $value)
 {
     return (string) new Element('input', array_merge(['type' => 'color', 'name' => $parameter->getName(), 'value' => $value ? $value->asHex() : ''], $parameter->isRequired() ? ['required' => 'required'] : []));
 }
示例#18
0
 private function get(Parameter $parameter, $array)
 {
     if (isset($array[$parameter->getName()])) {
         return $array[$parameter->getName()];
     }
     return null;
 }
示例#19
0
文件: HtmlField.php 项目: jonfm/domin
 private function lineParameter(Parameter $parameter, $lineNumber)
 {
     return new Parameter($parameter->getName() . '-' . $lineNumber, $parameter->getType());
 }
示例#20
0
 /**
  * @param Parameter $parameter
  * @return mixed The serialized paramater
  */
 public function read(Parameter $parameter)
 {
     return $this->console->getOption($parameter->getName());
 }
示例#21
0
 /**
  * @param Parameter $parameter
  * @return boolean
  */
 public function has(Parameter $parameter)
 {
     return $this->console->hasOption($parameter->getName());
 }
示例#22
0
 /**
  * @param Parameter $parameter
  * @return array|\rtens\domin\delivery\web\Element[]
  */
 public function headElements(Parameter $parameter)
 {
     $action = $this->actions->getAction($parameter->getName());
     $headElements = [self::descriptionCode()];
     foreach ($action->parameters() as $parameter) {
         $field = $this->fields->getField($parameter);
         if ($field instanceof WebField) {
             $headElements = array_merge($headElements, $field->headElements($parameter));
         }
     }
     return $headElements;
 }
示例#23
0
 /**
  * @param Parameter $parameter
  * @return boolean
  */
 public function has(Parameter $parameter)
 {
     return array_key_exists($parameter->getName(), $this->parameters);
 }
示例#24
0
 /**
  * @param Parameter $parameter
  * @param mixed $value
  * @return string
  */
 public function render(Parameter $parameter, $value)
 {
     return implode('', [new Element('input', ['type' => 'hidden', 'name' => $parameter->getName(), 'value' => 0]), new Element('input', array_merge(['class' => 'boolean-switch', 'type' => 'checkbox', 'name' => $parameter->getName(), 'value' => 1], $value ? ['checked' => 'checked'] : []))]);
 }
示例#25
0
文件: TextField.php 项目: jonfm/domin
 /**
  * @param Parameter $parameter
  * @param Text $value
  * @return string
  */
 public function render(Parameter $parameter, $value)
 {
     return (string) new Element('textarea', array_merge(['name' => $parameter->getName(), 'class' => 'form-control'], $parameter->isRequired() ? ['required' => 'required'] : []), [$value ? $value->getContent() : null]);
 }
示例#26
0
 private function makePropertyParameter(Parameter $parameter, Property $property)
 {
     return new Parameter($parameter->getName() . '[' . $property->name() . ']', $property->type(), $property->isRequired());
 }
示例#27
0
 /**
  * @param Parameter $parameter
  * @return bool
  */
 public function handles(Parameter $parameter)
 {
     return $parameter->getType() == new ClassType(\DateInterval::class);
 }
示例#28
0
 /**
  * @param Parameter $parameter
  * @param null|\DateTimeInterface $value
  * @return string
  */
 public function render(Parameter $parameter, $value)
 {
     return (string) new Element('div', ['class' => 'input-group date datetimepicker', 'style' => 'width: 100%;'], [new Element('span', ['class' => 'input-group-addon', 'onclick' => "\$(this).closest('.datetimepicker').datetimepicker(dateTimePickerSettings); \$(this).siblings('.hidden').toggleClass('hidden'); \$(this).remove(); return false;"], [new Element('span', ['class' => 'glyphicon glyphicon-calendar', 'style' => 'opacity: 0.5'])]), new Element('span', ['class' => 'input-group-addon hidden'], [new Element('span', ['class' => 'glyphicon glyphicon-calendar'])]), new Element('input', array_merge(['type' => 'text', 'name' => $parameter->getName(), 'class' => 'form-control', 'value' => $value ? $this->serialize($value) : null], $parameter->isRequired() ? ['required' => 'required'] : []))]);
 }
示例#29
0
文件: FileField.php 项目: jonfm/domin
 /**
  * @param Parameter $parameter
  * @return bool
  */
 public function handles(Parameter $parameter)
 {
     return $parameter->getType() == new ClassType(File::class);
 }
示例#30
0
 /**
  * @param Parameter $parameter
  * @return boolean
  */
 public function has(Parameter $parameter)
 {
     return $this->request->getArguments()->has($parameter->getName());
 }