Do not check menu item visibility in menu item management in ACP
authorMatthias Schmidt <gravatronics@live.com>
Sun, 11 Sep 2016 12:08:17 +0000 (14:08 +0200)
committerMatthias Schmidt <gravatronics@live.com>
Sun, 11 Sep 2016 12:08:19 +0000 (14:08 +0200)
wcfsetup/install/files/lib/acp/form/MenuItemAddForm.class.php
wcfsetup/install/files/lib/acp/page/MenuItemListPage.class.php
wcfsetup/install/files/lib/data/menu/item/MenuItemNodeTree.class.php

index 456e6bb3249954c85866f9c4046e786cf9cd3c88..ab23759a0bf05db82dc3c75761f7d985c523fc73 100644 (file)
@@ -281,7 +281,7 @@ class MenuItemAddForm extends AbstractForm {
        public function readData() {
                parent::readData();
                
-               $this->menuItems = new MenuItemNodeTree($this->menuID);
+               $this->menuItems = new MenuItemNodeTree($this->menuID, null, false);
        }
        
        /**
index 92b1949aa95f09de26e333830d632a8c87301e28..3da4d9dccb6459c84ef13ba8ca1390ac82964064 100644 (file)
@@ -63,7 +63,7 @@ class MenuItemListPage extends AbstractPage {
        public function readData() {
                parent::readData();
                
-               $this->menuItems = new MenuItemNodeTree($this->menuID);
+               $this->menuItems = new MenuItemNodeTree($this->menuID, null, false);
        }
        
        /**
index cb7b8f6e2fd4f69527268f0a18365586d521d12b..0530c13f7bac3e225bc0def257ff90a743529992 100644 (file)
@@ -13,6 +13,12 @@ use wcf\system\request\RequestHandler;
  * @since      3.0
  */
 class MenuItemNodeTree {
+       /**
+        * if `false`, individual menu item visibilit will not be checked
+        * @var boolean
+        */
+       public $checkVisibility;
+       
        /**
         * menu id
         * @var integer
@@ -46,11 +52,13 @@ class MenuItemNodeTree {
        /**
         * Creates a new MenuItemNodeTree object.
         * 
-        * @param       integer         $menuID         menu id
-        * @param       MenuItemList    $menuItemList   optional object to be provided when building the tree from cache
+        * @param       integer         $menuID                 menu id
+        * @param       MenuItemList    $menuItemList           optional object to be provided when building the tree from cache
+        * @param       boolean         $checkVisibility        if `false`, individual menu item visibilit will not be checked
         */
-       public function __construct($menuID, MenuItemList $menuItemList = null) {
+       public function __construct($menuID, MenuItemList $menuItemList = null, $checkVisibility = true) {
                $this->menuID = $menuID;
+               $this->checkVisibility = $checkVisibility;
                
                // load menu items
                if ($menuItemList === null) {
@@ -126,10 +134,14 @@ class MenuItemNodeTree {
                $itemIDs = (isset($this->menuItemStructure[$parentID]) ? $this->menuItemStructure[$parentID] : []);
                foreach ($itemIDs as $itemID) {
                        $menuItem = $this->menuItems[$itemID];
-                       if (!$menuItem->isVisible()) continue;
+                       
+                       if ($this->checkVisibility && !$menuItem->isVisible()) {
+                               continue;
+                       }
+                       
                        $node = new MenuItemNode($parentNode, $menuItem, ($parentNode !== null ? ($parentNode->getDepth() + 1) : 0));
                        $nodes[] = $node;
-                               
+                       
                        // get children
                        $node->setChildren($this->generateNodeTree($itemID, $node));