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