diff --git a/Model/Html/FormElement.php b/Model/Html/FormElement.php deleted file mode 100644 index 523da1e12..000000000 --- a/Model/Html/FormElement.php +++ /dev/null @@ -1,113 +0,0 @@ -id = $id; - $this->form = $form; - $this->name = $name; - $this->required = $required; - $this->defaultValue = $defaultValue; - $this->requiredValue = $requiredValue; - $this->autosave = $autosave; - } -} diff --git a/Model/Html/FormElementGenerator.php b/Model/Html/FormElementGenerator.php new file mode 100644 index 000000000..e3e41e34d --- /dev/null +++ b/Model/Html/FormElementGenerator.php @@ -0,0 +1,154 @@ + $value) { + $element .= ' ' . $attribute . '="' . $value . '"'; + } + + $element .= (isset($json['default']) ? ' value="' . ($json['subtype'] === 'datetime' ? (new SmartDateTime($json['default']['value']))->format($json['default']['format']) : $json['default']['value']) . '"' : ''); + + $element .= ($json['subtype'] === 'checkbox' || $json['subtype'] === 'radio') && $json['default']['checked'] ? ' checked' : ''; + $element .= '>'; + $element .= $json['subtype'] === 'checkbox' || $json['subtype'] === 'radio' ? '' : ''; + + return $element; + } + + /** + * Generate a form element from a json object + * + * @param array $json Json object representing the form element + * @param array $lang Language array + * + * @return string + * + * @since 1.0.0 + */ + private static function generateSelect(array $json, array $lang = []) : string + { + $element = ' $value) { + $element .= ' ' . $attribute . '="' . $value . '"'; + } + + $element .= '>'; + + foreach ($json['options'] as $value => $text) { + $element .= ''; + } + + $element .= ''; + + return $element; + } + + /** + * Generate a form element from a json object + * + * @param array $json Json object representing the form element + * + * @return string + * + * @since 1.0.0 + */ + private static function generateTextarea(array $json) : string + { + $element = ' $value) { + $element .= ' ' . $attribute . '="' . $value . '"'; + } + + $element .= '>'; + $element .= isset($json['default']) ? ' value="' . $json['default']['value'] . '"' : ''; + $element .= ''; + + return $element; + } + + /** + * Generate a form element from a json object + * + * @param array $json Json object representing the form element + * @param array $lang Language array + * + * @return string + * + * @since 1.0.0 + */ + private static function generateLabel(array $json, array $lang = []) : string + { + $element = ' $value) { + $element .= ' ' . $attribute . '="' . $value . '"'; + } + + $element .= '>'; + $element .= isset($json['default']) ? ' value="' . ($lang[$json['default']['value']] ?? $json['default']['value']) . '"' : ''; + $element .= ''; + + return $element; + } +}