public function setObjectorder($parameters = array()) { $id = $parameters['id']; $gridid = $parameters['gridid']; $popup = new popupController(); $grid = new mygrid($gridid); $model = $grid->getModel(); $linkmodel = $grid->getModel(); $object = $model->getfromId($id); if (count($object) == 1) { $object = $object[0]; $view = new ui($this); $form = new form($parameters); $form->addField(new hiddenField('gridid', $gridid)); $form->addField(new hiddenField('id', $id)); $form->addField(new textField('order', 'Order', $object->_get($grid->getOrderfield()), array('required', 'numeric', 'range:1<->' . $model->getMax($grid->getOrderfield(), $grid->getConditions())))); if ($form->validate()) { $curlink = $object; if ($object->_get($grid->getOrderfield()) > $form->getFieldvalue('order')) { $cond = array($grid->getOrderfield() => array('mode' => 'BETWEEN', 'value' => $form->getFieldvalue('order'), 'topvalue' => $object->_get($grid->getOrderfield()))); $links = $linkmodel->get(array('AND' => array($cond, $grid->getConditions()))); try { foreach ($links as $link) { $link->setOrder($link->getOrder() + 1); $linkmodel->save($link); } $curlink->setOrder($form->getFieldvalue('order')); $linkmodel->save($curlink); } catch (Exception $e) { $popup->createflash(array('name' => 'error', 'type' => 'error', 'content' => 'De wijziging is niet doorgevoerd! Raadpleeg de informaticadienst.')); return false; } } elseif ($object->_get($grid->getOrderfield()) < $form->getFieldvalue('order')) { $cond = array($grid->getOrderfield() => array('mode' => 'BETWEEN', 'value' => $object->_get($grid->getOrderfield()), 'topvalue' => $form->getFieldvalue('order'))); $links = $linkmodel->get(array('AND' => array($cond, $grid->getConditions()))); try { foreach ($links as $link) { $link->setOrder($link->getOrder() - 1); $linkmodel->save($link); } $curlink->setOrder($form->getFieldvalue('order')); $linkmodel->save($curlink); } catch (Exception $e) { $popup->createflash(array('name' => 'error', 'type' => 'error', 'content' => 'De wijziging is niet doorgevoerd! Raadpleeg de informaticadienst.')); return false; } } else { $popup->createflash(array('name' => 'warning', 'type' => 'warning', 'content' => 'De nieuwe plaats was dezelfde als de oude plaats. Er is dus niets gewijzigd.')); $this->response->assign('gridextra_' . $gridid, 'innerHTML', ''); return false; } $popup->createflash(array('name' => 'success', 'type' => 'success', 'content' => 'De wijziging is goed doorgevoerd.')); $gridcontr = new mygridController(); $gridcontr->reloadgrid($gridid); $this->response->assign('gridextra_' . $gridid, 'innerHTML', ''); } elseif (!$form->isSent()) { $view->assign('form', $form); $view->assign('closeextra', new ajaxrequest('mygrid', 'closeextra', array('id' => 'gridextra_' . $gridid))); $this->response->assign('gridextra_' . $gridid, 'innerHTML', $view->fetch($parameters['viewprefix'] . 'mygrid_setobjectorder.tpl')); } } }