|
|
@@ -13,7 +13,8 @@
|
|
|
*/
|
|
|
class BxBaseMenuSubmenu extends BxTemplMenu
|
|
|
{
|
|
|
-
|
|
|
+ protected $_aSocialSharingService = false;
|
|
|
+ protected $_sObjectActionsMenu = false;
|
|
|
protected $_sObjectSubmenu = false;
|
|
|
protected $_mixedMainMenuItemSelected = false;
|
|
|
|
|
|
@@ -23,7 +24,7 @@ class BxBaseMenuSubmenu extends BxTemplMenu
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * Set current submenu object
|
|
|
+ * Set current menu object in submenu
|
|
|
* @param $sMenuObject menu object name
|
|
|
* @param $sForceMainMenuSelection force main menu item selection by menu item name
|
|
|
*/
|
|
|
@@ -33,6 +34,24 @@ class BxBaseMenuSubmenu extends BxTemplMenu
|
|
|
$this->_mixedMainMenuItemSelected = $sForceMainMenuSelection;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * Set current actions menu in submenu
|
|
|
+ * @param $sActionsMenuObject menu object name
|
|
|
+ */
|
|
|
+ public function setObjectActionsMenu ($sActionsMenuObject)
|
|
|
+ {
|
|
|
+ $this->_sObjectActionsMenu = $sActionsMenuObject;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * Set social sharing menu in submenu
|
|
|
+ * @param $a menu service call array (module, method,
|
|
|
+ */
|
|
|
+ public function setServiceSocialSharing ($a)
|
|
|
+ {
|
|
|
+ $this->_aSocialSharingService = $a;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* Get menu code.
|
|
|
* @return string
|
|
|
@@ -43,31 +62,49 @@ class BxBaseMenuSubmenu extends BxTemplMenu
|
|
|
// if (!$aMenuItemSelected)
|
|
|
// return false;
|
|
|
|
|
|
- if (!$this->_sObjectSubmenu && $aMenuItemSelected['submenu_object'])
|
|
|
- $this->_sObjectSubmenu = $aMenuItemSelected['submenu_object'];
|
|
|
-
|
|
|
- $oPermalinks = BxDolPermalinks::getInstance();
|
|
|
+ $this->_addJsCss();
|
|
|
|
|
|
$aVars = array (
|
|
|
'object' => $this->_sObject,
|
|
|
'title' => $aMenuItemSelected['title'],
|
|
|
- 'link' => $oPermalinks->permalink($aMenuItemSelected['link']),
|
|
|
+ 'link' => BxDolPermalinks::getInstance()->permalink($aMenuItemSelected['link']),
|
|
|
'icon' => $aMenuItemSelected['icon'],
|
|
|
+ 'bx_repeat:menus' => array (),
|
|
|
);
|
|
|
|
|
|
- $this->_addJsCss();
|
|
|
+ $aMenus = $this->getSubmenuParams($aMenuItemSelected);
|
|
|
+
|
|
|
+ foreach ($aMenus as $aMenu) {
|
|
|
+ $sPopupContent = '';
|
|
|
+ if (isset($aMenu['object']) && ($oMenu = BxDolMenu::getObjectInstance($aMenu['object'])))
|
|
|
+ $sPopupContent = $oMenu->getCode();
|
|
|
+ elseif (isset($aMenu['service']) && is_array($aMenu['service']))
|
|
|
+ $sPopupContent = BxDolService::call($aMenu['service']['module'], $aMenu['service']['method'], isset($aMenu['service']['params']) ? $aMenu['service']['params'] : array(), isset($aMenu['service']['class']) ? $aMenu['service']['class'] : 'Module');
|
|
|
+ if (!$sPopupContent)
|
|
|
+ continue;
|
|
|
+
|
|
|
+ $aVars['bx_repeat:menus'][] = array (
|
|
|
+ 'id' => $aMenu['id'],
|
|
|
+ 'icon' => $aMenu['icon'],
|
|
|
+ 'popup' => BxTemplFunctions::getInstance()->transBox($aMenu['id'], '<div class="bx-def-padding">' . $sPopupContent . '</div>', true),
|
|
|
+ );
|
|
|
+ }
|
|
|
|
|
|
- $oSubmenu = null;
|
|
|
- if ($this->_sObjectSubmenu)
|
|
|
- $oSubmenu = BxDolMenu::getObjectInstance($this->_sObjectSubmenu);
|
|
|
+ $sMenu = $this->_oTemplate->parseHtmlByName($this->_aObject['template'], $aVars);
|
|
|
|
|
|
- if (!$oSubmenu)
|
|
|
- return '';
|
|
|
+ return $this->_oTemplate->parseHtmlByName('menu_main_submenu_wrapper.html', array('menu' => $sMenu));
|
|
|
+ }
|
|
|
|
|
|
- $sMenu = $this->_oTemplate->parseHtmlByName($this->_aObject['template'], $aVars) . $oSubmenu->getCode();
|
|
|
+ protected function getSubmenuParams($aMenuItemSelected)
|
|
|
+ {
|
|
|
+ if (!$this->_sObjectSubmenu && $aMenuItemSelected['submenu_object'])
|
|
|
+ $this->_sObjectSubmenu = $aMenuItemSelected['submenu_object'];
|
|
|
|
|
|
- $aVars = array('menu' => $sMenu);
|
|
|
- return $this->_oTemplate->parseHtmlByName('menu_main_submenu_wrapper.html', $aVars);
|
|
|
+ return array (
|
|
|
+ 'social_sharing_menu' => array ('id' => 'bx-menu-social-sharing-menu', 'icon' => 'share', 'service' => $this->_aSocialSharingService),
|
|
|
+ 'actions_menu' => array ('id' => 'bx-menu-actions-menu', 'icon' => 'cog', 'object' => $this->_sObjectActionsMenu),
|
|
|
+ 'sub_menu' => array ('id' => 'bx-menu-submenu-menu', 'icon' => 'ellipsis-h', 'object' => $this->_sObjectSubmenu),
|
|
|
+ );
|
|
|
}
|
|
|
|
|
|
protected function _getSelectedMenuItem ()
|