/** * Returns Silvercart specific menus. * * @return ArrayList * * @author Sascha Koehler <*****@*****.**>, * Sebastian Diel <*****@*****.**> * @since 28.02.2013 */ public function SilvercartMenus() { $silvercartMenus = new ArrayList(); $menuItems = CMSMenu::get_viewable_menu_items(); $hiddenMenus = SilvercartConfig::getHiddenRegisteredMenus(); foreach (SilvercartConfig::getRegisteredMenus() as $menu) { if (in_array($menu['code'], $hiddenMenus)) { continue; } $modelAdmins = new ArrayList(); foreach ($menuItems as $code => $menuItem) { if (isset($menuItem->controller) && $this->owner->hasMethod('alternateMenuDisplayCheck') && !$this->owner->alternateMenuDisplayCheck($menuItem->controller)) { continue; } if (empty($menuItem->controller)) { continue; } if (in_array($menuItem->controller, self::$model_admins_to_ignore)) { continue; } $menuCode = Config::inst()->get($menuItem->controller, 'menuCode'); $menuSection = Config::inst()->get($menuItem->controller, 'menuSection'); $menuSortIndex = Config::inst()->get($menuItem->controller, 'menuSortIndex'); $url_segment = Config::inst()->get($menuItem->controller, 'url_segment'); if ($menuCode == $menu['code'] || is_null($menuCode) && $menu['code'] == 'default') { $defaultTitle = LeftAndMain::menu_title_for_class($menuItem->controller); $title = _t("{$menuItem->controller}.MENUTITLE", $defaultTitle); $linkingmode = ""; if (strpos($this->owner->Link(), $menuItem->url) !== false) { if ($this->owner->Link() == $menuItem->url) { $linkingmode = "current"; // default menu is the one with a blank {@link url_segment} } elseif ($url_segment == '') { if ($this->owner->Link() == $this->owner->stat('url_base') . '/') { $linkingmode = "current"; } } else { $linkingmode = "current"; } } if (empty($menuSection)) { $menuSection = 'base'; } if (empty($menuSortIndex)) { $menuSortIndex = 1000; } $modelAdmins->push(new ArrayData(array("MenuItem" => $menuItem, "Title" => Convert::raw2xml($title), "Code" => $code, 'MenuCode' => $menu['code'], "IsSection" => false, "Section" => $menuSection, "SortIndex" => $menuSortIndex, "Link" => $menuItem->url, "LinkingMode" => $linkingmode))); unset($menuItems[$code]); } } $modelAdmins = $modelAdmins->sort('SortIndex', 'ASC'); if ($modelAdmins->exists()) { $menu['name'] = _t('SilvercartStoreAdminMenu.' . strtoupper($menu['code']), $menu['name']); $silvercartMenus->push(new DataObject(array('name' => $menu['name'], 'code' => $menu['code'], 'Code' => $menu['code'], 'ModelAdmins' => $modelAdmins))); } } return $silvercartMenus; }