/** * @staticvar int $counter * @param string $label * @param string $url * @return \Illagrenan\Navigation\NavigationNode */ public function addNode($label, $url) { /* @var $homepageComponent Navigation */ $homepageComponent = $this->lookup("Illagrenan\\Navigation\\Navigation", FALSE); // Obsahuje FALSE, pokud se nejedná o platný plink $parsedPlink = $homepageComponent->tryParsePlink($url); $newNavigationNode = new NavigationNode($label, $url); // Odkaz ve tvaru Presenter:action if ($parsedPlink !== FALSE) { $newNavigationNode->setUrl($parsedPlink); $newNavigationNode->setPlink($url); } else { $newNavigationNode->setUrl($url); } static $counter; $this->addComponent($newNavigationNode, "IllagrenanNavigationNO" . ++$counter); return $newNavigationNode; }
/** * Najdi aktuální Node z httpRequestu * @param RecursiveComponentIterator $components * @param \Illagrenan\Navigation\NavigationNode $base * @return \Illagrenan\Navigation\NavigationNode|boolean */ private function findCurrent(RecursiveIteratorIterator $components, NavigationNode $base) { $currentUrl = $this->httpRequest->getUrl(); /* @var $oneNode NavigationNode */ foreach ($components as $oneNode) { // Node využívá plink if ($oneNode->isPlinkPresent() && $oneNode->getPlink() == $this->getCurrentNetteRequest()) { return $oneNode; } elseif ($currentUrl->isEqual($oneNode->getUrl())) { return $oneNode; } } // Aktuální node může být ta, která se ptá // Node využívá plink if ($base->isPlinkPresent() && $base->getPlink() == $this->getCurrentNetteRequest()) { return $base; } elseif ($currentUrl->isEqual($base->getUrl())) { return $base; } return FALSE; }