_sModule = 'bx_timeline'; $this->_oModule = BxDolModule::getInstance($this->_sModule); parent::__construct($aObject, $this->_oModule->_oTemplate); $this->_isMultilevel = true; $this->_bDisplayAddons = true; } public function setBrowseParams($aParams = []) { $this->_sJsObject = $this->_oModule->_oConfig->getJsObject('view_filters'); $this->_sStylePrefix = $this->_oModule->_oConfig->getPrefix('style'); $aMarkers = array(); foreach($aParams as $sKey => $mixedValue) if(!is_array($mixedValue)) $aMarkers[$sKey] = $mixedValue; $aMarkers['js_object_view'] = $this->_sJsObject; $this->addMarkers($aMarkers); } protected function getMenuItemsRaw() { $aMenuItems = parent::getMenuItemsRaw(); if(empty($aMenuItems) || !is_array($aMenuItems)) return $aMenuItems; $iProfile = bx_get_logged_profile_id(); $oConnection = BxDolConnection::getObjectInstance('sys_profiles_subscriptions'); $sOnClickMask = "return " . $this->_sJsObject. ".changeFeed(this, '%s', {context: %d})"; foreach($aMenuItems as $iIndex => $aItem) { $aIds = $oConnection->getConnectedContentByType($iProfile, array($aItem['module'])); if(empty($aItem['onclick'])) $aMenuItems[$iIndex]['onclick'] = $this->_sJsObject . '.toggleMenuItemFeeds(this)'; $aSubmenu = array(); foreach($aIds as $iId) { $oContext = BxDolProfile::getInstance($iId); if(!$oContext) continue; $aSubmenu[] = array( 'id' => 'context-' . $iId, 'name' => 'context-' . $iId, 'module' => $aItem['module'], 'class' => '', 'link' => $oContext->getUrl(), 'onclick' => sprintf($sOnClickMask, $aItem['module'], $iId), 'target' => '_self', 'title' => $oContext->getDisplayName(), 'icon' => $oContext->getIcon(), 'active' => 1, 'context_id' => $iId ); } if(!empty($aSubmenu)) $aMenuItems[$iIndex]['subitems'] = $aSubmenu; } return $aMenuItems; } protected function _getTemplateVars () { $aResult = parent::_getTemplateVars(); $aResult['style_prefix'] = $this->_sStylePrefix; return $aResult; } protected function _getMenuItem ($a) { if($a['name'] == 'divider' && parent::_getMenuItem($a) !== false) return $this->_oModule->_oTemplate->parseHtmlByName('menu_item_divider.html', []); $aResult = parent::_getMenuItem($a); if(!$aResult) return $aResult; return array_merge($aResult, [ 'js_object' => $this->_sJsObject, 'style_prefix' => $this->_sStylePrefix, 'bx_if:show_toggle' => [ 'condition' => $this->isMultilevel() && !empty($a['subitems']), 'content' => [ 'js_object' => $this->_sJsObject, 'style_prefix' => $this->_sStylePrefix, 'name' => $a['name'] ] ] ]); } } /** @} */