protected function CreateAfterUrl()
 {
     $args = array('navigation' => $this->navigation->GetID());
     $args['previous'] = $this->item->GetID();
     $parent = $this->item->GetParent();
     if ($parent) {
         $args['parent'] = $parent->GetID();
     }
     return BackendRouter::ModuleUrl(new NavigationItemForm(), $args);
 }
 /**
  * Returns the first child of the item
  * @param NavigationItem $item
  */
 public function FirstChildOf($item)
 {
     $sql = Access::SqlBuilder();
     if ($item) {
         $tblNavItem = NavigationItem::Schema()->Table();
         $where = $sql->IsNull($tblNavItem->Field('Previous'))->And_($sql->Equals($tblNavItem->Field('Parent'), $sql->Value($item->GetID())));
         return NavigationItem::Schema()->First($where);
     } else {
         return $this->TopMost();
     }
 }
 protected function Url()
 {
     $urlItem = $this->naviItem->GetUrlItem();
     if ($urlItem) {
         return $urlItem->GetUrl();
     }
     $pageItem = $this->naviItem->GetPageItem();
     if ($pageItem) {
         return FrontendRouter::Url($pageItem);
     }
     $itemID = $this->naviItem->GetID();
     throw new \LogicException("Navigation item (ID = {$itemID}) without related url or page: clean up database manually");
 }