Пример #1
0
 /**
  * @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 '';
 }