/** * @see \vxPHP\Webpage\Menu\Renderer\MenuRenderer::renderEntry() */ protected function renderEntry(MenuEntry $entry) { $attributes = $entry->getAttributes(); // check display attribute if (!isset($attributes->display) || $attributes->display !== 'none') { if ($this->hasNiceUris) { if (($script = basename($this->menu->getScript(), '.php')) == 'index') { $script = '/'; } else { $script = '/' . $script . '/'; } } else { $script = '/' . $this->menu->getScript() . '/'; } $sel = $this->menu->getSelectedEntry(); if (isset($attributes->text)) { // render a not selected menu entry if (!isset($sel) || $sel !== $entry) { $markup = sprintf('<li class="%s">%s<a href="%s">%s</a>%s', preg_replace('~[^\\w]~', '_', $entry->getPath()), $this->openingTags, $entry->getHref(), empty($this->parameters['rawText']) ? htmlspecialchars($attributes->text) : $attributes->text, $this->closingTags); // ensure rendering of submenus, when a parameter "unfoldAll" is set if (!empty($this->parameters['unfoldAll']) && ($subMenu = $entry->getSubMenu())) { $markup .= static::create($subMenu)->setParameters($this->parameters)->render(); } } else { // render a selected menu entry if ((!$entry->getSubMenu() || is_null($entry->getSubMenu()->getSelectedEntry())) && !$this->menu->getForceActive()) { $markup = sprintf('<li class="active %s">%s<span>%s</span>%s', preg_replace('~[^\\w]~', '_', $entry->getPath()), $this->openingTags, empty($this->parameters['rawText']) ? htmlspecialchars($attributes->text) : $attributes->text, $this->closingTags); } else { $markup = sprintf('<li class="active %s">%s<a href="%s">%s</a>%s', preg_replace('~[^\\w]~', '_', $entry->getPath()), $this->openingTags, $entry->getHref(), empty($this->parameters['rawText']) ? htmlspecialchars($attributes->text) : $attributes->text, $this->closingTags); } if ($this->menu->getShowSubmenus() && ($subMenu = $entry->getSubMenu())) { $markup .= static::create($subMenu)->setParameters($this->parameters)->render(); } } return $markup . '</li>'; } } }