public function renderMenu(Zend_Navigation_Container $container, $options = array()) { $html = ''; $pages = $container->getPages(); foreach ($pages as $page) { /* @var $page Zend_Navigation_Page */ if ($this->acl && $page->getResource()) { if (!$this->acl->hasPermission($page->getResource(), $page->getPrivilege())) { continue; } } if ($page->isActive()) { $this->activePageId = $this->getId($page); } if (!$page->isVisible(true)) { continue; } if (!$page->getHref()) { continue; } $subMenu = $this->renderSubMenu($page); $class = $subMenu ? 'folder' : ''; if (!($page->hasChildren() && !$subMenu)) { $html .= sprintf('<li><div class="menu-glyph"%s><div class="menu-glyph-delimeter"><a id="%s" href="%s" class="%s">%s</a></div></div>%s</li>', $this->getInlineStyle($page->getId()), 'menu-' . $this->getId($page), $page->hasChildren() ? 'javascript:;' : $page->getHref(), $class . " " . $page->getClass(), $this->view->escape($page->getLabel()), $subMenu); } } $script = ''; if ($this->activePageId) { $script = <<<CUT <script type="text/javascript"> \$(function(){ \$('.admin-menu').adminMenu('{$this->activePageId}'); }); </script> CUT; } return sprintf('<ul class="admin-menu">%s</ul>%s%s', $html, "\n", $script); }
/** * Returns the page order of the last child page in the container. * If no page exists in the container, it returns 0. * * @param Zend_Navigation_Container $container The container to search for the last page order * @return int the last page order in the container */ protected function _getLastPageOrderInContainer($container) { $lastPageOrder = 0; foreach ($container->getPages() as $page) { $pageOrder = $page->getOrder(); if ($pageOrder > $lastPageOrder) { $lastPageOrder = $pageOrder; } } return $lastPageOrder; }
protected function checkAclForNavigation(Zend_Navigation_Container $navigation) { $accessConfig = Zend_Registry::get('config')->access; $pages = $navigation->getPages(); foreach ($pages as $page) { $controller = $page->get('controller'); $action = $page->get('action'); $allowed = Infra_AclHelper::isAllowed($controller, $action); if (!$allowed) { $navigation->removePage($page); } else { $this->checkAclForNavigation($page); } if ($action == 'dynamic_action') { $localPages = $page->getPages(); $firstPage = reset($localPages); if ($firstPage) { $firstPageAction = $firstPage->get('action'); $page->set('action', $firstPageAction); } } } }
protected function checkAclForNavigation(Zend_Navigation_Container $navigation) { $accessConfig = Zend_Registry::get('config')->access; $pages = $navigation->getPages(); foreach ($pages as $page) { $controller = $page->get('controller'); $action = $page->get('action'); $allowed = Kaltura_AclHelper::isAllowed($controller, $action); if (!$allowed) { $navigation->removePage($page); } else { $this->checkAclForNavigation($page); } } }
protected function _renderMenu(Zend_Navigation_Container $container, $linkability_function = false) { $menubar_div_id = "My_Great_MenuBar_" . uniqid(); $menubar_script = ''; $menubar_script .= 'var pMenuBar;'; $menubar_script .= "\npMenuBar = new dijit.MenuBar({});"; //$iterator = new ArrayIterator($container->getPages()); $id_counter = 0; // if (count($container->getPages()) == 1) { // $all_pages = $container->getPages(); // $all_pages = array_pop($all_pages)->getPages(); // } else { $all_pages = $container->getPages(); // } foreach ($all_pages as $page) { $id_counter++; $menu_item = $this->getDojoProgrammaticMenuparts($page, "\n", $id_counter); if ($menu_item) { $menubar_script .= "\n" . $menu_item["code"]; $menubar_script .= "\n\npMenuBar.addChild(new dijit.PopupMenuBarItem({"; $menubar_script .= "\n label: \"" . $this->_getHtmlLabel($page) . "\","; $menubar_script .= "\n popup: " . $menu_item["id"]; $menubar_script .= "\n}));"; } else { $id_counter--; } } $menubar_script .= "\npMenuBar.placeAt(\"{$menubar_div_id}\");"; $menubar_script .= "\npMenuBar.startup();"; $this->view->dojo()->addOnLoad("function() {\n" . $menubar_script . "\n}"); $this->view->dojo()->requireModule('dijit.MenuBar'); $this->view->dojo()->requireModule("dijit.MenuBarItem"); $this->view->dojo()->requireModule("dijit.PopupMenuBarItem"); $this->view->dojo()->requireModule("dijit.Menu"); $this->view->dojo()->requireModule("dijit.MenuItem"); $this->view->dojo()->requireModule("dijit.PopupMenuItem"); $html = "<div id=\"{$menubar_div_id}\"></div>"; return $html; }