public function getItems() { $collection = new MenuCollection(); $collection->filterByParent($this->id); $collection->orderBy('sort'); $currentParentUrl = false; if ($current = Ajde_Cms::getInstance()->getRoutedNode()) { $currentParentUrl = $current->getParent() && $current->getParent()->hasLoaded() ? $current->getParent()->getUrl() : false; } $items = []; foreach ($collection as $item) { /* @var $item MenuModel */ $name = $item->name; $target = ''; $submenus = []; $current = ''; $node = new NodeModel(); if ($item->type == 'URL') { $url = $item->url; if (substr($url, 0, 7) === 'http://' || substr($url, 0, 8) === 'https://') { $target = '_blank'; } } else { if ($item->type == 'Node link') { $node->loadByPK($item->node); $url = $node->getUrl(); } else { if ($item->type == 'Submenu') { $node->loadByPK($item->node); $url = $node->getUrl(); $submenus = $item->getItems(); foreach ($submenus as $submenu) { if ($submenu['current']) { $current = 'active sub-active'; } } } } } if ($url == Ajde::app()->getRoute()->getOriginalRoute()) { $current = 'active'; } if (Ajde::app()->getRoute()->getOriginalRoute() == '' && $url == config('routes.homepage')) { $current = 'active'; } if ($url == $currentParentUrl) { $current = 'active sub-active'; } if ($item->type == 'Node link' && !$node->hasLoaded()) { } else { $items[] = ['node' => $node, 'name' => $name, 'url' => $url, 'target' => $target, 'current' => $current, 'submenus' => $submenus]; } } return $items; }