From a4b74c8ff0bb3a3ba712a76970198a856427a9e3 Mon Sep 17 00:00:00 2001 From: Sam Minnee Date: Fri, 21 Aug 2009 04:48:57 +0000 Subject: [PATCH] BUGFIX: Fixed issues with recent CMSMenu refactoring. git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/cms/trunk@84980 467b73ca-7a2a-4603-9d3b-597d59a354a9 --- code/CMSMenu.php | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/code/CMSMenu.php b/code/CMSMenu.php index 4489bf16..5c97ac2e 100644 --- a/code/CMSMenu.php +++ b/code/CMSMenu.php @@ -47,7 +47,9 @@ class CMSMenu extends Object implements IteratorAggregate, i18nEntityProvider * when the item is removed. Functionality needed in {@link Director}. */ public static function add_controller($controllerClass) { - self::add_menu_item_obj($controllerClass, self::menuitem_for_controller($controllerClass)); + if($menuItem = self::menuitem_for_controller($controllerClass)) { + self::add_menu_item_obj($controllerClass, $menuItem); + } } /** @@ -59,7 +61,7 @@ class CMSMenu extends Object implements IteratorAggregate, i18nEntityProvider $menuPriority = Object::get_static($controllerClass, 'menu_priority'); // Don't add menu items defined the old way - if($urlSegment === null) return; + if($urlSegment === null && $controllerClass != "CMSMain") return; $link = Controller::join_links($urlBase, $urlSegment) . '/'; @@ -81,14 +83,16 @@ class CMSMenu extends Object implements IteratorAggregate, i18nEntityProvider $urlRule = Object::get_static($controllerClass, 'url_rule'); $urlPriority = Object::get_static($controllerClass, 'url_priority'); - $link = Controller::join_links($urlBase, $urlSegment) . '/'; + if($urlSegment || $controllerClass == "CMSMain") { + $link = Controller::join_links($urlBase, $urlSegment) . '/'; - // Make director rule - if($urlRule[0] == '/') $urlRule = substr($urlRule,1); - $rule = $link . '/' . $urlRule; // the / will combine with the / on the end of $link to make a // - Director::addRules($urlPriority, array( - $rule => $controllerClass - )); + // Make director rule + if($urlRule[0] == '/') $urlRule = substr($urlRule,1); + $rule = $link . '/' . $urlRule; // the / will combine with the / on the end of $link to make a // + Director::addRules($urlPriority, array( + $rule => $controllerClass + )); + } } /** @@ -148,7 +152,8 @@ class CMSMenu extends Object implements IteratorAggregate, i18nEntityProvider if(!self::$menu_is_cleared) { $cmsClasses = self::get_cms_classes(); foreach($cmsClasses as $cmsClass) { - $menuItems[$cmsClass] = self::menuitem_for_controller($cmsClass); + $menuItem = self::menuitem_for_controller($cmsClass); + if($menuItem) $menuItems[$cmsClass] = $menuItem; } }