Exemplo n.º 1
0
 /**
  * @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>';
         }
     }
 }