_sTmplNameItemMore = 'menu_item_more.html'; $this->_sTmplNameItemMorePopup = 'menu_item_more_popup.html'; $this->_bMoreAuto = null; $this->_iMoreAutoItemsStatic = 1; $this->_sJsObjectMoreAuto = 'oMenuMoreAuto' . bx_gen_method_name($this->_sObject); $sPrefix = str_replace('_', '-', $this->_sObject); $this->_aHtmlIds = array( 'main' => $sPrefix, 'more_auto_popup' => $sPrefix . '-ma-popup', ); } public function getCode() { $sResult = parent::getCode(); if($this->_isMoreAuto()) $this->_oTemplate->addJs(array('BxDolMenuMoreAuto.js')); return $sResult; } protected function _isMoreAuto() { if(is_bool($this->_bMoreAuto)) return $this->_bMoreAuto; $aResult = $this->getMenuItems(); $sItem = BX_DEF_MENU_ITEM_MORE_AUTO; if(!empty($this->_aObject['menu_items'][$sItem]) && is_array($this->_aObject['menu_items'][$sItem]) && (int)$this->_aObject['menu_items'][$sItem]['active'] == 1) $this->_bMoreAuto = true; else $this->_bMoreAuto = false; return $this->_bMoreAuto; } protected function _getTemplateVars() { $bMoreAuto = $this->_isMoreAuto(); $aResult = array_merge(parent::_getTemplateVars(), array( 'html_id' => $this->_getHtmlIdMain(), 'bx_if:show_more_auto_class' => array( 'condition' => $bMoreAuto, 'content' => array() ), 'js_code' => $bMoreAuto ? $this->_getJsCodeMoreAuto() : '' )); return $aResult; } protected function _getJsCodeMoreAuto() { $sJsObject = $this->_getJsObjectMoreAuto(); $aJsParams = array( 'sObject' => $this->_sObject, 'iItemsStatic' => $this->_iMoreAutoItemsStatic, 'aHtmlIds' => $this->_getHtmlIds() ); return $this->_oTemplate->_wrapInTagJsCode("if(!" . $sJsObject . ") {var " . $sJsObject . " = new BxDolMenuMoreAuto(" . json_encode($aJsParams) . "); " . $sJsObject . ".init();}"); } protected function _getMenuItem ($aItem) { $aItem['popup'] = ''; if($aItem['name'] != BX_DEF_MENU_ITEM_MORE_AUTO) return parent::_getMenuItem($aItem); $aItem['onclick'] = $this->_getJsObjectMoreAuto() . '.more(this);'; $aItem['popup'] = BxTemplFunctions::getInstance()->transBox($this->_aHtmlIds['more_auto_popup'], $this->_oTemplate->parseHtmlByName($this->_getTmplNameItemMorePopup(), array( 'content' => '' )), true); return parent::_getMenuItem($aItem); } protected function _getHtmlIds() { return $this->_aHtmlIds; } protected function _getHtmlIdMain() { return $this->_aHtmlIds['main']; } protected function _getJsObjectMoreAuto() { return $this->_sJsObjectMoreAuto; } protected function _getTmplNameItemMore() { return $this->_sTmplNameItemMore; } protected function _getTmplNameItemMorePopup() { return $this->_sTmplNameItemMorePopup; } } /** @} */