mirror of
https://github.com/Aviortheking/DeltaCMS.git
synced 2025-04-22 19:02:12 +00:00
Changed whole Input Objects
they now lives by themselves when before they where highly connected to Form.php
This commit is contained in:
parent
90a69fd16c
commit
cacdc2c3d6
@ -2,20 +2,84 @@
|
|||||||
|
|
||||||
namespace AdminPanel\Form;
|
namespace AdminPanel\Form;
|
||||||
|
|
||||||
class AbstractInput implements Input
|
use AdminPanel\AdminPanel;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* this abstract class has default functionnality for all working
|
||||||
|
* before doing `parent::function` please see what it does
|
||||||
|
*/
|
||||||
|
abstract class AbstractInput implements Input
|
||||||
{
|
{
|
||||||
|
|
||||||
|
protected $attributes = array();
|
||||||
|
protected $options = array();
|
||||||
|
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
$arr = explode('\\', get_class($this));
|
||||||
|
$this->setOption("type", strtolower(
|
||||||
|
str_replace(
|
||||||
|
"Input",
|
||||||
|
"",
|
||||||
|
$arr[count($arr) - 1]
|
||||||
|
)
|
||||||
|
));
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAttributesList(): array
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
'name',
|
||||||
|
'type',
|
||||||
|
'id',
|
||||||
|
'value',
|
||||||
|
'placeholder',
|
||||||
|
'style'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function getOptionsList(): array
|
||||||
|
{
|
||||||
|
return array(
|
||||||
|
'label',
|
||||||
|
'value'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAttributes(): array
|
||||||
|
{
|
||||||
|
return $this->attributes;
|
||||||
|
}
|
||||||
|
|
||||||
public function getOptions(): array
|
public function getOptions(): array
|
||||||
{
|
{
|
||||||
return array();
|
return $this->options;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function processOption(string $optionName, $value): array
|
public function getOption(string $name)
|
||||||
{
|
{
|
||||||
return array($optionName => $value);
|
return $this->options[$name];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getTemplate(): string
|
public function setOption(string $name, $value)
|
||||||
|
{
|
||||||
|
if (in_array($name, $this->getOptionsList())) {
|
||||||
|
$this->options[$name] = $value;
|
||||||
|
}
|
||||||
|
if (in_array($name, $this->getAttributesList())) {
|
||||||
|
if (in_array($name, array("id", "name")) &&
|
||||||
|
!array_key_exists("id", $this->attributes) &&
|
||||||
|
!array_key_exists("name", $this->attributes)
|
||||||
|
) {
|
||||||
|
$this->attributes["name"] = $value;
|
||||||
|
$this->attributes["id"] = $value;
|
||||||
|
}
|
||||||
|
$this->attributes[$name] = $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function render(): string
|
||||||
{
|
{
|
||||||
$arr = explode('\\', get_class($this));
|
$arr = explode('\\', get_class($this));
|
||||||
$tpName = strtolower(
|
$tpName = strtolower(
|
||||||
@ -25,6 +89,17 @@ class AbstractInput implements Input
|
|||||||
$arr[count($arr) - 1]
|
$arr[count($arr) - 1]
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
return "@AdminPanel/form/" . $tpName . ".twig";
|
return $this->getTwig()->render(
|
||||||
|
"@AdminPanel/form/" . $tpName . ".twig",
|
||||||
|
array(
|
||||||
|
'attributes' => $this->attributes,
|
||||||
|
'options' => $this->options
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function getTwig()
|
||||||
|
{
|
||||||
|
return AdminPanel::getInstance()->getTwig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,12 +2,25 @@
|
|||||||
|
|
||||||
namespace AdminPanel\Form;
|
namespace AdminPanel\Form;
|
||||||
|
|
||||||
|
use AdminPanel\AdminPanel;
|
||||||
|
|
||||||
class ChoiceInput extends AbstractInput
|
class ChoiceInput extends AbstractInput
|
||||||
{
|
{
|
||||||
public function getOptions(): array
|
public function getOptionsList(): array
|
||||||
|
{
|
||||||
|
return array_merge(
|
||||||
|
parent::getOptionsList(),
|
||||||
|
array(
|
||||||
|
'choices'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getAttributesList(): array
|
||||||
{
|
{
|
||||||
return array(
|
return array(
|
||||||
'choices'
|
'name',
|
||||||
|
'id'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,26 @@
|
|||||||
|
|
||||||
namespace AdminPanel\Form;
|
namespace AdminPanel\Form;
|
||||||
|
|
||||||
|
use DateTime;
|
||||||
|
|
||||||
class DateInput extends AbstractInput
|
class DateInput extends AbstractInput
|
||||||
{
|
{
|
||||||
|
|
||||||
|
public function getOption(string $name)
|
||||||
|
{
|
||||||
|
if ($name === "value") {
|
||||||
|
return new DateTime($this->options["name"]);
|
||||||
|
} else {
|
||||||
|
return parent::getOption($name);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public function setOption($name, $value)
|
||||||
|
{
|
||||||
|
if ($name === "value") {
|
||||||
|
$this->attributes["value"] = (new DateTime($value))->format('Y-m-d');
|
||||||
|
} else {
|
||||||
|
parent::setOption($name, $value);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,22 +6,40 @@ use AdminPanel\AdminPanel;
|
|||||||
|
|
||||||
class EntityInput extends AbstractInput
|
class EntityInput extends AbstractInput
|
||||||
{
|
{
|
||||||
public function getOptions(): array
|
public function __construct()
|
||||||
{
|
{
|
||||||
return array(
|
$this->setOption("type", "text");
|
||||||
'entity'
|
}
|
||||||
|
|
||||||
|
public function getOptionsList(): array
|
||||||
|
{
|
||||||
|
return array_merge(
|
||||||
|
parent::getOptionsList(),
|
||||||
|
array(
|
||||||
|
'entity'
|
||||||
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function processOption(string $optionName, $value): array
|
public function setOption(string $name, $value)
|
||||||
{
|
{
|
||||||
if ($optionName === 'entity') {
|
if ($name === 'entity') {
|
||||||
return array(
|
$this->options["entities"] = AdminPanel::getInstance()->getEm()->getRepository($value)->findAll();
|
||||||
'entities' => AdminPanel::getInstance()->getEm()->getRepository($value)->findAll()
|
} elseif ($name === "name") {
|
||||||
);
|
$this->attributes["list"] = $value . "_list";
|
||||||
|
}
|
||||||
|
parent::setOption($name, $value);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getOption($name)
|
||||||
|
{
|
||||||
|
if ($name === "value") {
|
||||||
|
$repo = AdminPanel::getInstance()->getEm()->getRepository($this->options["entity"]);
|
||||||
|
return $repo->findOneBy(array(
|
||||||
|
'name' => $this->options["value"]
|
||||||
|
));
|
||||||
|
} else {
|
||||||
|
return parent::getOption($name);
|
||||||
}
|
}
|
||||||
return array(
|
|
||||||
$optionName => $value
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,29 +4,62 @@ namespace AdminPanel\Form;
|
|||||||
|
|
||||||
interface Input
|
interface Input
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get definable options in form
|
* Get list of used in this input
|
||||||
* some are processed elsewhere like
|
|
||||||
* name, value
|
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array array containing options
|
||||||
|
*/
|
||||||
|
public function getAttributesList(): array;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get options that will be passed into the final object
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function getAttributes(): array;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get list of options usable by this input
|
||||||
|
*
|
||||||
|
* @return array array containing options
|
||||||
|
*/
|
||||||
|
public function getOptionsList(): array;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get options that will be passed into the final object
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
*/
|
*/
|
||||||
public function getOptions(): array;
|
public function getOptions(): array;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* run things when you got option
|
* get a single option that will be passed in the final object
|
||||||
|
* (option can either go in attributes or options)
|
||||||
*
|
*
|
||||||
* @param string $optionName
|
* @param string $name option's name
|
||||||
* @param mixed $value
|
|
||||||
*
|
*
|
||||||
* @return array
|
* @return mixed option's value
|
||||||
*/
|
*/
|
||||||
public function processOption(string $optionName, $value): array;
|
public function getOption(string $name);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get template file
|
* Process the options given by php or json
|
||||||
|
*
|
||||||
|
* (you can do whatever you want with it)
|
||||||
|
*
|
||||||
|
* @param string $name name of the option
|
||||||
|
* @param mixed $value value of element
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function setOption(string $name, $value);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* return the html to render the current input
|
||||||
|
*
|
||||||
*
|
*
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
public function getTemplate(): string;
|
public function render(): string;
|
||||||
}
|
}
|
||||||
|
@ -2,30 +2,6 @@
|
|||||||
|
|
||||||
namespace AdminPanel\Form;
|
namespace AdminPanel\Form;
|
||||||
|
|
||||||
class TextInput implements Input
|
class TextInput extends AbstractInput
|
||||||
{
|
{
|
||||||
|
|
||||||
public function getOptions(): array
|
|
||||||
{
|
|
||||||
return array(
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function processOption(string $optionName, $value): array
|
|
||||||
{
|
|
||||||
return array($optionName => $value);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getTemplate(): string
|
|
||||||
{
|
|
||||||
$arr = explode('\\', self::class);
|
|
||||||
$tpName = strtolower(
|
|
||||||
str_replace(
|
|
||||||
"Input",
|
|
||||||
"",
|
|
||||||
$arr[count($arr) - 1]
|
|
||||||
)
|
|
||||||
);
|
|
||||||
return "@AdminPanel/form/" . $tpName . ".twig";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user