/** * Add a menu item by specifying the controller * * @param string $controller Controller name * @param string $action Action name * @param string $label Optional alternative label * @return \Gems_Menu_MenuList (continuation pattern) */ public function addByController($controller, $action = 'index', $label = null) { $query['controller'] = $controller; $query['action'] = $action; if ($menuItem = $this->menu->findFirst($query)) { $this->addMenuItem($menuItem, $label); } return $this; }
/** * Redirects the user to his/her start page. * * @param \Gems_Menu $menu * @param \Zend_Controller_Request_Abstract $request * @return \Gems_Menu_SubMenuItem */ public function gotoStartPage(\Gems_Menu $menu, \Zend_Controller_Request_Abstract $request) { if ($this->isPasswordResetRequired()) { // Set menu OFF $menu->setVisible(false); $menuItem = $menu->findController('option', 'change-password'); // This may not yet be true, but is needed for the redirect. $menuItem->set('allowed', true); $menuItem->set('visible', true); } else { $menuItem = $menu->findFirst(array('allowed' => true, 'visible' => true)); } if ($menuItem) { // Prevent redirecting to the current page. if (!($menuItem->is('controller', $request->getControllerName()) && $menuItem->is('action', $request->getActionName()))) { if (!$menuItem->has('controller')) { //This is a container, try to find first active child $item = $menuItem; foreach ($item->sortByOrder()->getChildren() as $menuItem) { if ($menuItem->isAllowed() && $menuItem->has('controller')) { break; } $menuItem = null; } } if ($menuItem) { $redirector = \Zend_Controller_Action_HelperBroker::getStaticHelper('redirector'); $redirector->gotoRoute($menuItem->toRouteUrl($request), null, true); } } } return $menuItem; }