/** * Set default values and the first level container (ul) * * @param Mixed $menu If String: Fecth menu data according its name.<br/> * If Array: It must contain the menu tree. * * @param array $options Options to manage menu behaviour<br /> * Ex: disable_nesting => true, parentAltId => (string) * * @return string html code to display the menu and is children */ public function menu($menu, $options = array()) { $this->_addSeparator = ""; $menuItem = array(); $_menu = ""; if (isset($options['addEnclosure'])) { $this->_addEnclosure = $options['addEnclosure']; } if (isset($options['class']) && $options['class'] == 'sitemap') { $this->_isSiteMap = true; } else { $this->_isSiteMap = false; } if ($this->view->selectedPage) { $this->_selectedPage = $this->view->selectedPage; } elseif (Zend_Registry::isRegistered('selectedPage')) { $this->_selectedPage = Zend_Registry::get('selectedPage'); } else { $params = Zend_Controller_Front::getInstance()->getRequest()->getParams(); $this->_selectedPage = $params['controller']; if ($params['controller'] == 'index') { $this->_selectedPage = Cible_FunctionsPages::getPageNameByID(1); } } if (isset($options['addSeparator'])) { $this->_addSeparator = $options['addSeparator']; } $oPages = new PagesObject(); $pageData = $oPages->pageIdByController($this->_selectedPage); $this->_selectedPageId = $pageData['P_ID']; if (!is_array($menu)) { $_menu = new MenuObject($menu); $parentId = isset($options['parentId']) ? $options['parentId'] : 0; $tree = $_menu->populate($parentId); } elseif (count($menu) > 1 && empty($menu['MID_MenuID'])) { $tree = $menu; } else { $_menu = new MenuObject($menu['MID_MenuID']); unset($menu['MID_MenuID'], $menu['MID_ParentId']); $tree = $menu; if (Zend_Registry::isRegistered('selectedCatalogPage')) { $currentUrl = preg_replace('#\\/page\\/[0-9]*#', '', substr($this->view->request->getPathInfo(), 1)); if (strrpos($currentUrl, '/') == 1) { $currentUrl = substr($currentUrl, -1); } $nbParts = substr_count($currentUrl, '/'); if ($nbParts >= 3) { $lastPos = strrpos($currentUrl, '/'); $currentUrl = substr($this->view->request->getPathInfo(), 1, $lastPos); } elseif ($nbParts == 0) { $currentUrl = $tree[0]['Link']; } $this->_selectedPage = $currentUrl; } } if (is_object($_menu) && $_menu->getId()) { $menuItem = $_menu->getMenuItemByPageId($this->_selectedPageId); } if ($menuItem) { $this->_getParentsMenuId($menuItem, $_menu); $this->view->assign('menuId', $menuItem['MID_MenuID']); } if (is_array($options)) { $parentId = isset($options['parentId']) ? $options['parentId'] : 0; $this->_parent_alt_id = isset($options['parentIdAlt']) ? $options['parentIdAlt'] : "parentid-"; } if (!empty($options['startLevel'])) { $this->_startLevel = $options['startLevel']; } $this->_disable_nesting = isset($options['disable_nesting']) && $options['disable_nesting'] == true ? true : false; parent::tree($tree, $options); // var_dump($tree); if ($tree) { return "<ul id='{$this->_ul_id}' class='{$this->_class}' {$this->_attribs}>" . $this->generateList($tree, true) . "</ul>"; } }
/** * Set default values and the first level container (ul) * * @param Mixed $menu If String: Fecth menu data according its name.<br/> * If Array: It must contain the menu tree. * * @param array $options Options to manage menu behaviour<br /> * Ex: disable_nesting => true, parentAltId => (string) * * @return string html code to display the menu and is children */ public function subMenu($options = array()) { if (isset($options['addEnclosure'])) { $this->_addEnclosure = $options['addEnclosure']; } if ($this->view->selectedPage) { $this->_selectedPage = $this->view->selectedPage; } elseif (Zend_Registry::isRegistered('selectedPage')) { $this->_selectedPage = Zend_Registry::get('selectedPage'); } else { $params = Zend_Controller_Front::getInstance()->getRequest()->getParams(); $this->_selectedPage = $params['controller']; if ($params['controller'] == 'index') { $this->_selectedPage = Cible_FunctionsPages::getPageNameByID(1); } } $oPages = new PagesObject(); $pageData = $oPages->pageIdByController($this->_selectedPage); $this->_selectedPageId = $pageData['P_ID']; $menuData = $oPages->getRelatedMenu($this->_selectedPageId); $parentId = 0; if (!$menuData) { $parentId = $oPages->getParentRelatedID($this->_selectedPageId); $parentName = $oPages->getParentRelatedName($parentId); $menuData = $oPages->getRelatedMenu($parentId); $this->_selectedPageId = $parentId; $parentId = $menuData['MID_ParentID']; $this->view->assign('selectedPage', $parentName); //echo $parentName; } $_menu = new MenuObject($menuData['MID_MenuId']); if ($menuData['MID_ParentID'] == 0) { $parentId = $menuData['MID_ID']; } else { $menuItem = $_menu->getMenuItemByPageId($this->_selectedPageId); if ($menuItem) { $this->_getParentsMenuId($menuItem, $_menu); } if ($parentId == 0) { $parentId = $this->_parentsMenuId[0]; } } if (!empty($options['parentId'])) { $parentId = $options['parentId']; } if (preg_match('/useCatalog/', $menuData['MID_Style'])) { $menu_item['Placeholder'] = 2; $collections = new SubCategoriesObject(); // $menuCatalog = $this->getMenuItemByPageId( null, 'collections'); $catalogMenu = $collections->buildCatalogMenu($menu_item, array('nesting' => 1)); $tree = $catalogMenu['child']; // $first = $this->populate($menuCatalog['MID_ID']); // $childCombined = array(); // $childCombined = array_merge($catalogMenu['child'], $first); // $catalog['child'] = $childCombined; } elseif (!empty($parentId)) { $tree = $_menu->populate($parentId); } $tree['MID_MenuID'] = $menuData['MID_MenuId']; $tree['MID_ParentId'] = $parentId; return $tree; }