mirror of
https://github.com/Aviortheking/DeltaCMS.git
synced 2025-04-23 19:32:13 +00:00
Added Multiple Input Types
This commit is contained in:
parent
64a836c0e4
commit
d73566086c
71
src/AdminPanel/Form/ArrayInput.php
Normal file
71
src/AdminPanel/Form/ArrayInput.php
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace AdminPanel\Form;
|
||||||
|
|
||||||
|
class ArrayInput extends AbstractInput
|
||||||
|
{
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$this->options = array(
|
||||||
|
'elements' => array()
|
||||||
|
);
|
||||||
|
$this->setOption("type", "text");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getOptionsList(): array
|
||||||
|
{
|
||||||
|
return array_merge(
|
||||||
|
parent::getOptionsList(),
|
||||||
|
array(
|
||||||
|
"array_type",
|
||||||
|
"item",
|
||||||
|
"script"
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAttributesList(): array
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
'name',
|
||||||
|
'id',
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setOption(string $name, $value)
|
||||||
|
{
|
||||||
|
if ($name === "array_type") {
|
||||||
|
$clas = $value;
|
||||||
|
$input = new $clas();
|
||||||
|
$input->setOption("id", $this->attributes["name"] . "-__unique__");
|
||||||
|
$input->setOption("name", $this->attributes["name"] . "[__unique__]");
|
||||||
|
$this->options["data-element"] = $input;
|
||||||
|
} elseif ($name === "item") {
|
||||||
|
foreach ($value as $vname => $vvalue) {
|
||||||
|
$this->options["data-element"]->setOption($vname, $vvalue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
parent::setOption($name, $value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function render(): string
|
||||||
|
{
|
||||||
|
if (array_key_exists("array_type", $this->options) &&
|
||||||
|
array_key_exists("value", $this->options)
|
||||||
|
) {
|
||||||
|
$clas = $this->options["array_type"];
|
||||||
|
if (isset($this->options["value"])) {
|
||||||
|
foreach ($this->options["value"] as $key => $value) {
|
||||||
|
$input = new $clas();
|
||||||
|
$input->setOption("id", $this->attributes["name"] . "-" . $key);
|
||||||
|
$input->setOption("name", $this->attributes["name"] . "[" . $key . "]");
|
||||||
|
$input->setOption("value", $value);
|
||||||
|
$this->options["elements"][] = $input;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$this->attributes["data-element"] = "<span>" . $this->options["data-element"]->render() . "</span>";
|
||||||
|
return parent::render();
|
||||||
|
}
|
||||||
|
}
|
24
src/AdminPanel/Form/DatalistInput.php
Normal file
24
src/AdminPanel/Form/DatalistInput.php
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace AdminPanel\Form;
|
||||||
|
|
||||||
|
class DatalistInput extends AbstractInput
|
||||||
|
{
|
||||||
|
public function getOptionsList(): array
|
||||||
|
{
|
||||||
|
return array_merge(
|
||||||
|
parent::getOptionsList(),
|
||||||
|
array(
|
||||||
|
'list'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setOption(string $name, $value)
|
||||||
|
{
|
||||||
|
if ($name === "name") {
|
||||||
|
$this->attributes["list"] = $name . "_list";
|
||||||
|
}
|
||||||
|
parent::setOption($name, $value);
|
||||||
|
}
|
||||||
|
}
|
17
src/AdminPanel/Form/NumberInput.php
Normal file
17
src/AdminPanel/Form/NumberInput.php
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace AdminPanel\Form;
|
||||||
|
|
||||||
|
class NumberInput extends AbstractInput
|
||||||
|
{
|
||||||
|
public function getAttributesList(): array
|
||||||
|
{
|
||||||
|
return array_merge(
|
||||||
|
parent::getAttributesList(),
|
||||||
|
array(
|
||||||
|
'min',
|
||||||
|
'max'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
15
src/AdminPanel/Twig/form/array.twig
Normal file
15
src/AdminPanel/Twig/form/array.twig
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
{% extends "@AdminPanel/form/_default.twig" %}
|
||||||
|
|
||||||
|
{% set name = "div" %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
{% for item in options.elements %}
|
||||||
|
<div>
|
||||||
|
{{item.render()|raw}}
|
||||||
|
</div>
|
||||||
|
{% endfor %}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block after %}
|
||||||
|
<button type="button" data-for="{{ attributes.name }}">Ajouter</button>
|
||||||
|
{% endblock %}
|
9
src/AdminPanel/Twig/form/datalist.twig
Normal file
9
src/AdminPanel/Twig/form/datalist.twig
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
{% extends "@AdminPanel/form/_default.twig" %}
|
||||||
|
|
||||||
|
{% block after %}
|
||||||
|
<datalist id="{{ attributes.list }}">
|
||||||
|
{% for element in options.list %}
|
||||||
|
<option>{{element}}</option>
|
||||||
|
{% endfor %}
|
||||||
|
</datalist>
|
||||||
|
{% endblock %}
|
1
src/AdminPanel/Twig/form/number.twig
Normal file
1
src/AdminPanel/Twig/form/number.twig
Normal file
@ -0,0 +1 @@
|
|||||||
|
{% extends "@AdminPanel/form/_default.twig" %}
|
Loading…
x
Reference in New Issue
Block a user