protected static function getControllerMenu($class) { $reflector = new \ReflectionClass($class); $methods = $reflector->getMethods(); $submenuItems = array(); foreach ($methods as $method) { if (in_array($method, array('index'))) { continue; } if (!$method->isPublic()) { continue; } $docComment = $method->getDocComment(); if (preg_match_all('/@(\\w+)\\s+(.*)\\r?\\n/m', $docComment, $matches)) { $result = array_combine($matches[1], $matches[2]); if (isset($result['ipSubmenu'])) { $menuItem = new \Ip\Menu\Item(); $menuItem->setTitle(__($result['ipSubmenu'], ipRoute()->plugin(), false)); $menuItem->setUrl(ipActionUrl(array('aa' => ipRoute()->plugin() . '.' . $method->getName()))); if (ipRoute()->action() == $method->getName()) { $menuItem->markAsCurrent(true); } $submenuItems[] = $menuItem; } } } if (!empty($submenuItems)) { return $submenuItems; } return null; }
/** * @return \Ip\Menu\Item[] */ public static function getSubmenuItems() { $modules = self::getModuleNames(); $submenuItems = array(); if (0) { // It is for translation engine to find following strings __('Content', 'Ip-admin'); __('Pages', 'Ip-admin'); __('Design', 'Ip-admin'); __('Plugins', 'Ip-admin'); __('Config', 'Ip-admin'); __('Languages', 'Ip-admin'); __('System', 'Ip-admin'); } foreach ($modules as $module) { $menuItem = new \Ip\Menu\Item(); $title = $module; if ($title == 'Email') { $title = 'Email log'; } $menuItem->setTitle(__($title, 'Ip-admin', false)); // $menuItem->setUrl(ipActionUrl(array('aa' => $module . '.index'))); if (ipRoute()->controllerClass() == 'Ip\\Internal\\' . $module . '\\AdminController') { $menuItem->markAsCurrent(true); } if (ipAdminPermission($module)) { $submenuItems[] = $menuItem; } } return $submenuItems; }