فهرست منبع

Ticket #3657 - Check 'Page Type' visibility in Custom menus.

AntonLV 4 سال پیش
والد
کامیت
7b8a6e7c7f
3فایلهای تغییر یافته به همراه9 افزوده شده و 9 حذف شده
  1. 7 4
      inc/classes/BxDolMenu.php
  2. 1 4
      template/scripts/BxBaseMenu.php
  3. 1 1
      template/scripts/BxBaseMenuCustom.php

+ 7 - 4
inc/classes/BxDolMenu.php

@@ -333,12 +333,15 @@ class BxDolMenu extends BxDolFactory implements iBxDolFactoryObject, iBxDolRepla
      */
     protected function _isVisible ($a)
     {
-        if (!BxDolAcl::getInstance()->isMemberLevelInSet($a['visible_for_levels']))
+        if(isset($a['visible_for_levels']) && !BxDolAcl::getInstance()->isMemberLevelInSet($a['visible_for_levels']))
+            return false;
+
+        if(!empty($a['visibility_custom']) && !BxDolService::callSerialized($a['visibility_custom'], $this->_aMarkers))
+            return false;
+
+        if($this->_iPageType && !empty($a['hidden_on_pt']) && ((1 << ($this->_iPageType - 2)) & (int)$a['hidden_on_pt']))
             return false;
 
-        if (!empty($a['visibility_custom']))
-            return BxDolService::callSerialized($a['visibility_custom'], $this->_aMarkers);
-        
         return true;
     }
     

+ 1 - 4
template/scripts/BxBaseMenu.php

@@ -153,10 +153,7 @@ class BxBaseMenu extends BxDolMenu
         if (isset($a['active']) && !$a['active'])
             return false;
 
-        if (isset($a['visible_for_levels']) && !$this->_isVisible($a))
-            return false;
-
-        if($this->_iPageType && !empty($a['hidden_on_pt']) && ((1 << ($this->_iPageType - 2)) & (int)$a['hidden_on_pt']))
+        if (!$this->_isVisible($a))
             return false;
 
         $a['title'] = _t($a['title']);

+ 1 - 1
template/scripts/BxBaseMenuCustom.php

@@ -69,7 +69,7 @@ class BxBaseMenuCustom extends BxTemplMenuMoreAuto
     	if (isset($aItem['active']) && !$aItem['active'])
             return false;
 
-        if (isset($aItem['visible_for_levels']) && !$this->_isVisible($aItem))
+        if (!$this->_isVisible($aItem))
             return false;
 
     	$sMethod = '_getMenuItem' . str_replace(' ', '', ucwords(str_replace('-', ' ', $aItem['name'])));