DirectorObjectForm: handle ordering before setup

This commit is contained in:
Thomas Gelf 2016-03-22 01:34:21 +01:00
parent 970d2aa435
commit 712dc6c9b7
1 changed files with 29 additions and 20 deletions

View File

@ -711,6 +711,35 @@ abstract class DirectorObjectForm extends QuickForm
list($set[$key + 1], $set[$key]) = array($set[$key], $set[$key + 1]);
}
protected function beforeSetup()
{
if (!$this->hasBeenSent()) {
return;
}
$post = $values = $this->getRequest()->getPost();
foreach ($post as $key => $value) {
if (preg_match('/^(.+?)_(\d+)__(MOVE_DOWN|MOVE_UP|REMOVE)$/', $key, $m)) {
$values[$m[1]] = array_filter($values[$m[1]], 'strlen');
switch ($m[3]) {
case 'MOVE_UP':
$this->moveUpInSet($values[$m[1]], $m[2]);
break;
case 'MOVE_DOWN':
$this->moveDownInSet($values[$m[1]], $m[2]);
break;
case 'REMOVE':
$this->removeFromSet($values[$m[1]], $m[2]);
break;
}
$this->getRequest()->setPost($m[1], $values[$m[1]]);
}
}
}
protected function onRequest()
{
$values = array();
@ -729,26 +758,6 @@ abstract class DirectorObjectForm extends QuickForm
$values[$key] = $value;
}
}
foreach ($post as $key => $value) {
if (preg_match('/^(.+?)_(\d+)__(MOVE_DOWN|MOVE_UP|REMOVE)$/', $key, $m)) {
$values[$m[1]] = array_filter($values[$m[1]], 'strlen');
switch ($m[3]) {
case 'MOVE_UP':
$this->moveUpInSet($values[$m[1]], $m[2]);
break;
case 'MOVE_DOWN':
$this->moveDownInSet($values[$m[1]], $m[2]);
break;
case 'REMOVE':
$this->removeFromSet($values[$m[1]], $m[2]);
break;
}
$this->getRequest()->setPost($m[1], $values[$m[1]]);
}
}
}
if ($object instanceof IcingaObject) {
$this->handleProperties($object, $values);