/** * @param PageModel $currentPage * * @return NavigationItem[] * * @throws \RuntimeException */ public function findNavigationItems(PageModel $currentPage) { $rootPages = $this->pageFinder->findRootPagesForPage($currentPage, false, false); $navigationItems = $this->createNavigationItemsForRootPages($rootPages); $this->setTargetPageForNavigationItems($navigationItems, $rootPages, $this->pageFinder->findAssociatedForPage($currentPage)); foreach ($navigationItems as $k => $item) { if (!$item->hasTargetPage()) { $item->setTargetPage($this->pageFinder->findAssociatedParentForLanguage($currentPage, $item->getLanguageTag()), false); } } $this->languageText->orderNavigationItems($navigationItems); return array_values($navigationItems); }
public function testKeyEqualsPageId() { $master = $this->createRootPage('foo.com', 'en'); $this->createRootPage('foo.com', 'de', false); $this->createRootPage('bar.com', 'fr', true, $master); $this->createRootPage('bar.com', 'it', false); $pageModel = new PageModel(); $pageModel->id = $master; $pageModel->domain = 'foo.com'; $roots = $this->pageFinder->findRootPagesForPage($pageModel); $this->assertPageCount($roots, 4); foreach ($roots as $id => $page) { $this->assertEquals($page->id, $id); } }