diff options
Diffstat (limited to 'main/app/sprinkles/FormGenerator/src/Element')
8 files changed, 349 insertions, 0 deletions
diff --git a/main/app/sprinkles/FormGenerator/src/Element/Alert.php b/main/app/sprinkles/FormGenerator/src/Element/Alert.php new file mode 100755 index 0000000..f848b5c --- /dev/null +++ b/main/app/sprinkles/FormGenerator/src/Element/Alert.php @@ -0,0 +1,33 @@ +<?php +/** + * UF Form Generator + * + * @link https://github.com/lcharette/UF_FormGenerator + * @copyright Copyright (c) 2017 Louis Charette + * @license https://github.com/lcharette/UF_FormGenerator/blob/master/LICENSE (MIT License) + */ +namespace UserFrosting\Sprinkle\FormGenerator\Element; + +use UserFrosting\Sprinkle\FormGenerator\Element\BaseInput; + +/** + * Alert input type class. + * Manage the default attributes required to display an alert + * + * @extends BaseInput + */ +class Alert extends BaseInput { + + /** + * {@inheritDoc} + */ + protected function applyTransformations() + { + $this->element = array_merge([ + "class" => "alert-danger", + "icon" => "fa-ban", + "value" => $this->value, + "name" => $this->name + ], $this->element); + } +} diff --git a/main/app/sprinkles/FormGenerator/src/Element/BaseInput.php b/main/app/sprinkles/FormGenerator/src/Element/BaseInput.php new file mode 100755 index 0000000..d892001 --- /dev/null +++ b/main/app/sprinkles/FormGenerator/src/Element/BaseInput.php @@ -0,0 +1,111 @@ +<?php +/** + * UF Form Generator + * + * @link https://github.com/lcharette/UF_FormGenerator + * @copyright Copyright (c) 2017 Louis Charette + * @license https://github.com/lcharette/UF_FormGenerator/blob/master/LICENSE (MIT License) + */ +namespace UserFrosting\Sprinkle\FormGenerator\Element; + +use UserFrosting\Sprinkle\FormGenerator\Element\InputInterface; +use UserFrosting\Sprinkle\Core\Facades\Translator; +use UserFrosting\Sprinkle\Core\Facades\Debug; + +/** + * BaseInput class. + * + * Parse the schema data for a form input element to add the default + * attributes values and transform other attributes. + * @abstract + * @implements InputInterface + */ +abstract class BaseInput implements InputInterface { + + /** + * @var String The name of the input. + */ + var $name; + + /** + * @var object The input schema data. + */ + var $element; + + /** + * @var String The input value. + */ + var $value; + + /** + * Constructor. + * + * @access public + * @param String $name + * @param object $element + * @param mixed $value (default: null) + * @return void + */ + public function __construct($name, $element, $value = null) + { + $this->name = $name; + $this->element = $element; + $this->value = $value; + } + + /** + * parse function. + * + * Return the parsed input attributes + * @access public + * @return void + */ + public function parse() + { + $this->applyTransformations(); + return $this->element; + } + + /** + * translateArgValue function. + * + * Translate the value of passed argument using the Translator Facade + * @access public + * @param String $argument + * @return void + */ + public function translateArgValue($argument) { + if (isset($this->element[$argument])) { + $this->element[$argument] = Translator::translate($this->element[$argument]); + } + } + + /** + * getValue function. + * + * Return the value of the current input element. If not value is set in + * `$this->value`, return the default value (from the schema data), if any. + * @access public + * @return string The input current value + */ + public function getValue() { + if (isset($this->value) && $this->value !== null) { + return $this->value; + } else if (isset($this->element['default'])) { + return $this->element['default']; + } else { + return ""; + } + } + + /** + * applyTransformations function. + * + * Add defaut attributes to the current input element. Also transform + * attributes values passed from the schema + * @access protected + * @abstract + * @return void + */ + abstract protected function applyTransformations(); +} diff --git a/main/app/sprinkles/FormGenerator/src/Element/Checkbox.php b/main/app/sprinkles/FormGenerator/src/Element/Checkbox.php new file mode 100755 index 0000000..59e6eaf --- /dev/null +++ b/main/app/sprinkles/FormGenerator/src/Element/Checkbox.php @@ -0,0 +1,38 @@ +<?php +/** + * UF Form Generator + * + * @link https://github.com/lcharette/UF_FormGenerator + * @copyright Copyright (c) 2017 Louis Charette + * @license https://github.com/lcharette/UF_FormGenerator/blob/master/LICENSE (MIT License) + */ +namespace UserFrosting\Sprinkle\FormGenerator\Element; + +use UserFrosting\Sprinkle\FormGenerator\Element\BaseInput; + +/** + * Checkbox input type class. + * Manage the default attributes required to display a checkbox input + * + * @extends BaseInput + */ +class Checkbox extends BaseInput { + + /** + * {@inheritDoc} + */ + protected function applyTransformations() + { + $this->element = array_merge([ + "class" => "js-icheck", + "name" => $this->name, + "id" => "field_" . $this->name, + "binary" => true + ], $this->element); + + // We add the check status instead of the value + if ($this->element["binary"] !== false && $this->getValue() == 1) { + $this->element["checked"] = "checked"; + } + } +} diff --git a/main/app/sprinkles/FormGenerator/src/Element/Hidden.php b/main/app/sprinkles/FormGenerator/src/Element/Hidden.php new file mode 100755 index 0000000..08c22f7 --- /dev/null +++ b/main/app/sprinkles/FormGenerator/src/Element/Hidden.php @@ -0,0 +1,32 @@ +<?php +/** + * UF Form Generator + * + * @link https://github.com/lcharette/UF_FormGenerator + * @copyright Copyright (c) 2017 Louis Charette + * @license https://github.com/lcharette/UF_FormGenerator/blob/master/LICENSE (MIT License) + */ +namespace UserFrosting\Sprinkle\FormGenerator\Element; + +use UserFrosting\Sprinkle\FormGenerator\Element\BaseInput; + +/** + * Hidden input type class. + * Manage the default attributes required to display an hidden input type + * + * @extends BaseInput + */ +class Hidden extends BaseInput { + + /** + * {@inheritDoc} + */ + protected function applyTransformations() + { + $this->element = array_merge([ + "value" => $this->getValue(), + "name" => $this->name, + "id" => "field_" . $this->name + ], $this->element); + } +} diff --git a/main/app/sprinkles/FormGenerator/src/Element/InputInterface.php b/main/app/sprinkles/FormGenerator/src/Element/InputInterface.php new file mode 100755 index 0000000..7405109 --- /dev/null +++ b/main/app/sprinkles/FormGenerator/src/Element/InputInterface.php @@ -0,0 +1,19 @@ +<?php +/** + * UF Form Generator + * + * @link https://github.com/lcharette/UF_FormGenerator + * @copyright Copyright (c) 2017 Louis Charette + * @license https://github.com/lcharette/UF_FormGenerator/blob/master/LICENSE (MIT License) + */ +namespace UserFrosting\Sprinkle\FormGenerator\Element; + +/** + * InputInterface + * + * Interface for Form elements classes + */ +interface InputInterface { + public function __construct($name, $element, $value = null); + public function parse(); +} diff --git a/main/app/sprinkles/FormGenerator/src/Element/Select.php b/main/app/sprinkles/FormGenerator/src/Element/Select.php new file mode 100755 index 0000000..bb23772 --- /dev/null +++ b/main/app/sprinkles/FormGenerator/src/Element/Select.php @@ -0,0 +1,41 @@ +<?php +/** + * UF Form Generator + * + * @link https://github.com/lcharette/UF_FormGenerator + * @copyright Copyright (c) 2017 Louis Charette + * @license https://github.com/lcharette/UF_FormGenerator/blob/master/LICENSE (MIT License) + */ +namespace UserFrosting\Sprinkle\FormGenerator\Element; + +use UserFrosting\Sprinkle\FormGenerator\Element\BaseInput; + +/** + * Select input type class. + * Manage the default attributes required to display a select input type + * + * @extends BaseInput + */ +class Select extends BaseInput { + + /** + * {@inheritDoc} + */ + protected function applyTransformations() + { + $this->element = array_merge([ + "class" => "form-control js-select2", + "value" => $this->getValue(), + "name" => $this->name, + "id" => "field_" . $this->name + ], $this->element); + + // Placeholder is required to be in `data-*` for select 2 + // Plus we translate the placeholder + if (isset($this->element["placeholder"])) { + $this->element["data-placeholder"] = $this->element["placeholder"]; + unset($this->element["placeholder"]); + $this->translateArgValue('data-placeholder'); + } + } +} diff --git a/main/app/sprinkles/FormGenerator/src/Element/Text.php b/main/app/sprinkles/FormGenerator/src/Element/Text.php new file mode 100755 index 0000000..b936fe2 --- /dev/null +++ b/main/app/sprinkles/FormGenerator/src/Element/Text.php @@ -0,0 +1,37 @@ +<?php +/** + * UF Form Generator + * + * @link https://github.com/lcharette/UF_FormGenerator + * @copyright Copyright (c) 2017 Louis Charette + * @license https://github.com/lcharette/UF_FormGenerator/blob/master/LICENSE (MIT License) + */ +namespace UserFrosting\Sprinkle\FormGenerator\Element; + +use UserFrosting\Sprinkle\FormGenerator\Element\BaseInput; + +/** + * Text input type class. + * Manage the default attributes required to display a text and other html5 input + * + * @extends BaseInput + */ +class Text extends BaseInput { + + /** + * {@inheritDoc} + */ + protected function applyTransformations() + { + $this->element = array_merge([ + "autocomplete" => "off", + "class" => "form-control", + "value" => $this->getValue(), + "name" => $this->name, + "id" => "field_" . $this->name + ], $this->element); + + // Translate placeholder + $this->translateArgValue('placeholder'); + } +} diff --git a/main/app/sprinkles/FormGenerator/src/Element/Textarea.php b/main/app/sprinkles/FormGenerator/src/Element/Textarea.php new file mode 100755 index 0000000..bec3a6c --- /dev/null +++ b/main/app/sprinkles/FormGenerator/src/Element/Textarea.php @@ -0,0 +1,38 @@ +<?php +/** + * UF Form Generator + * + * @link https://github.com/lcharette/UF_FormGenerator + * @copyright Copyright (c) 2017 Louis Charette + * @license https://github.com/lcharette/UF_FormGenerator/blob/master/LICENSE (MIT License) + */ +namespace UserFrosting\Sprinkle\FormGenerator\Element; + +use UserFrosting\Sprinkle\FormGenerator\Element\BaseInput; + +/** + * Textarea input type class. + * Manage the default attributes required to display a textarea input + * + * @extends BaseInput + */ +class Textarea extends BaseInput { + + /** + * {@inheritDoc} + */ + protected function applyTransformations() + { + $this->element = array_merge([ + "autocomplete" => "off", + "class" => "form-control", + "value" => $this->getValue(), + "name" => $this->name, + "rows" => 3, + "id" => "field_" . $this->name + ], $this->element); + + // Translate placeholder + $this->translateArgValue('placeholder'); + } +} |