/** * @param string $menu * @param \ACP3\Modules\ACP3\Menus\Helpers\MenuConfiguration $menuConfig * * @return string */ protected function generateMenu($menu, Menus\Helpers\MenuConfiguration $menuConfig) { $items = $this->menusCache->getVisibleMenuItems($menu); $cItems = count($items); if ($cItems > 0) { $selected = $this->selectMenuItem($menu); $cacheKey = $this->buildMenuCacheKey($menu, $menuConfig); $this->menus[$cacheKey] = ''; for ($i = 0; $i < $cItems; ++$i) { if (isset($items[$i + 1]) && $items[$i + 1]['level'] > $items[$i]['level']) { $this->menus[$cacheKey] .= $this->processMenuItemWithChildren($menu, $menuConfig, $items[$i], $this->getMenuItemSelector($items[$i], $selected)); } else { $this->menus[$cacheKey] .= $this->processMenuItemWithoutChildren($menuConfig, $items[$i], $this->getMenuItemSelector($items[$i], $selected)); $this->menus[$cacheKey] .= $this->closeOpenedMenus($menuConfig, $items, $i); } } if (!empty($this->menus[$cacheKey])) { $this->menus[$cacheKey] = sprintf('<%1$s%2$s>%3$s</%1$s>', $menuConfig->getTag(), $this->prepareMenuHtmlAttributes($menu, $menuConfig), $this->menus[$cacheKey]); } else { $this->menus[$cacheKey] = ''; } return $this->menus[$cacheKey]; } return ''; }