mirror of
https://github.com/Icinga/icingaweb2-module-director.git
synced 2025-07-28 08:14:04 +02:00
DirectorObjectForm: some more steps to simplify...
...this old monster fixes #13583
This commit is contained in:
parent
a30f34a026
commit
e85c13ae13
@ -261,42 +261,27 @@ abstract class DirectorObjectForm extends QuickForm
|
|||||||
|
|
||||||
protected function handleProperties(DbObject $object, & $values)
|
protected function handleProperties(DbObject $object, & $values)
|
||||||
{
|
{
|
||||||
$resolve = $this->assertResolvedImports();
|
|
||||||
if ($this->hasBeenSent()) {
|
if ($this->hasBeenSent()) {
|
||||||
foreach ($values as $key => $value) {
|
foreach ($values as $key => $value) {
|
||||||
if (in_array($key, $this->earlyProperties) || substr($key, 0, 4) === 'var_') {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
$object->set($key, $value);
|
if ($object->hasProperty($key)) {
|
||||||
if ($object instanceof IcingaObject) {
|
$object->set($key, $value);
|
||||||
$object->resolveUnresolvedRelatedProperties();
|
if ($object instanceof IcingaObject) {
|
||||||
|
$object->resolveUnresolvedRelatedProperties();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
$this->addException($e, $key);
|
$this->addException($e, $key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($object instanceof IcingaObject) {
|
protected function loadInheritedProperties()
|
||||||
$props = (array) $object->toPlainObject(
|
{
|
||||||
false,
|
if ($this->assertResolvedImports()) {
|
||||||
false,
|
|
||||||
null,
|
|
||||||
true // is default//false // Do not resolve IDs
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
$props = $object->getProperties();
|
|
||||||
unset($props['vars']);
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->setDefaults($this->removeEmptyProperties($props));
|
|
||||||
|
|
||||||
if ($resolve) {
|
|
||||||
try {
|
try {
|
||||||
$this->showInheritedProperties($object);
|
$this->showInheritedProperties($this->object());
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
$this->addException($e);
|
$this->addException($e);
|
||||||
}
|
}
|
||||||
@ -639,37 +624,51 @@ abstract class DirectorObjectForm extends QuickForm
|
|||||||
|
|
||||||
protected function onRequest()
|
protected function onRequest()
|
||||||
{
|
{
|
||||||
$values = array();
|
|
||||||
|
|
||||||
$object = $this->object();
|
$object = $this->object();
|
||||||
|
$this->setDefaultsFromObject($object);
|
||||||
$this->prepareFields($object);
|
$this->prepareFields($object);
|
||||||
if ($this->hasBeenSent()) {
|
if ($this->hasBeenSent()) {
|
||||||
|
$this->handlePost();
|
||||||
if ($this->shouldBeDeleted()) {
|
|
||||||
$this->deleteObject($object);
|
|
||||||
}
|
|
||||||
|
|
||||||
$post = $this->getRequest()->getPost();
|
|
||||||
$this->populate($post);
|
|
||||||
$values = $this->getValues();
|
|
||||||
|
|
||||||
if ($object instanceof IcingaObject) {
|
|
||||||
$this->setCustomVarValues($object, $post);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
$this->loadInheritedProperties();
|
||||||
$this->addFields();
|
$this->addFields();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected function handlePost()
|
||||||
|
{
|
||||||
|
$object = $this->object();
|
||||||
|
if ($this->shouldBeDeleted()) {
|
||||||
|
$this->deleteObject($object);
|
||||||
|
}
|
||||||
|
|
||||||
|
$post = $this->getRequest()->getPost();
|
||||||
|
$this->populate($post);
|
||||||
|
$values = $this->getValues();
|
||||||
|
|
||||||
|
if ($object instanceof IcingaObject) {
|
||||||
|
$this->setCustomVarValues($object, $post);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->handleProperties($object, $values);
|
||||||
|
|
||||||
|
// TODO: get rid of this
|
||||||
if ($object instanceof IcingaObject) {
|
if ($object instanceof IcingaObject) {
|
||||||
$this->handleRanges($object, $values);
|
$this->handleRanges($object, $values);
|
||||||
}
|
}
|
||||||
$this->handleProperties($object, $values);
|
}
|
||||||
|
|
||||||
/*
|
protected function setDefaultsFromObject(DbObject $object)
|
||||||
// TODO: something like this could be used to remember unstored changes
|
{
|
||||||
if ($object->hasBeenModified()) {
|
/** @var ZfElement $element */
|
||||||
$this->addHtmlHint($this->translate('Object has been modified'));
|
foreach ($this->getElements() as $element) {
|
||||||
|
$key = $element->getName();
|
||||||
|
if ($object->hasProperty($key)) {
|
||||||
|
$value = $object->get($key);
|
||||||
|
if ($value !== null) {
|
||||||
|
$element->setValue($value);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function deleteObject($object)
|
protected function deleteObject($object)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user