Alex Trofimov 13 лет назад
Родитель
Сommit
7067962d33
3 измененных файлов с 19 добавлено и 4 удалено
  1. 1 1
      contact.php
  2. 17 2
      inc/classes/BxDolMenu.php
  3. 1 1
      template/scripts/BxBasePage.php

+ 1 - 1
contact.php

@@ -15,7 +15,7 @@ bx_import('BxDolLanguages');
 bx_import('BxDolMenu');
 bx_import('BxDolTemplate');
 
-BxDolMenu::setSelected ('system', 'contact'); 
+BxDolMenu::setSelectedGlobal ('system', 'contact'); 
 
 $oTemplate = BxDolTemplate::getInstance();
 $oTemplate->setPageNameIndex (BX_PAGE_DEFAULT);

+ 17 - 2
inc/classes/BxDolMenu.php

@@ -89,6 +89,9 @@ class BxDolMenu extends BxDol implements iBxDolFactoryObject {
     protected static $SEL_MODULE = '';
     protected static $SEL_NAME = '';
 
+    protected $_sSelModule;
+    protected $_sSelName;
+
     protected $_sObject;
     protected $_aObject;
     protected $_oQuery;
@@ -138,15 +141,25 @@ class BxDolMenu extends BxDol implements iBxDolFactoryObject {
     }
 
     /**
-     * Set selected menu item.
+     * Set selected menu item globally.
      * @param $sModule menu item module to set as selected
      * @param $sName menu item name to set as selected
      */
-    static public function setSelected ($sModule, $sName) {
+    static public function setSelectedGlobal ($sModule, $sName) {
         self::$SEL_MODULE = $sModule;
         self::$SEL_NAME = $sName;
     }
 
+    /**
+     * Set selected menu item for current menu object only.
+     * @param $sModule menu item module to set as selected
+     * @param $sName menu item name to set as selected
+     */
+    public function setSelected ($sModule, $sName) {
+        $this->_sSelModule = $sModule;
+        $this->_sSelName = $sName;
+    }
+
     /**
      * Add replace markers.
      * @param $a array of markers as key => value
@@ -165,6 +178,8 @@ class BxDolMenu extends BxDol implements iBxDolFactoryObject {
      * @return boolean
      */ 
     protected function _isSelected ($a) {
+        if ($this->_sSelModule || $this->_sSelName)
+            return (!isset($a['module']) || $a['module'] == $this->_sSelModule) && (isset($a['name']) && $a['name'] == $this->_sSelName) ? true : false;
         return (!isset($a['module']) || $a['module'] == self::$SEL_MODULE) && (isset($a['name']) && $a['name'] == self::$SEL_NAME) ? true : false;
     }
 

+ 1 - 1
template/scripts/BxBasePage.php

@@ -159,7 +159,7 @@ class BxBasePage extends BxDolPage {
      */ 
     protected function _selectMenu () {
         bx_import('BxDolMenu');
-        BxDolMenu::setSelected ($this->_aObject['module'], $this->_aObject['uri']); 
+        BxDolMenu::setSelectedGlobal ($this->_aObject['module'], $this->_aObject['uri']); 
     }
 
     /**