BxTemplMenuSite.php 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <?php defined('BX_DOL') or die('hack attempt');
  2. /**
  3. * Copyright (c) UNA, Inc - https://una.io
  4. * MIT License - https://opensource.org/licenses/MIT
  5. *
  6. * @defgroup UnaTemplate UNA Template Classes
  7. * @{
  8. */
  9. /**
  10. * @see BxTemplMenuMoreAuto
  11. */
  12. class BxTemplMenuSite extends BxTemplMenuMoreAuto
  13. {
  14. protected $_sModule;
  15. protected $_oModule;
  16. protected $_bSiteMenu;
  17. protected $_bSiteMenuInPanel;
  18. protected $_bSiteMenuSubmenu;
  19. protected $_bApplicationMenu;
  20. protected $_aHideFromSiteMenuInPanel;
  21. public function __construct ($aObject, $oTemplate = false)
  22. {
  23. parent::__construct ($aObject, $oTemplate);
  24. $this->_sModule = 'bx_lucid';
  25. $this->_oModule = BxDolModule::getInstance($this->_sModule);
  26. $this->_sJsClassMoreAuto = 'BxLucidMenuMoreAuto';
  27. $this->_sJsCallMoreAuto = "if(!{js_object}) {var {js_object} = new {js_class}({js_params}); $(document).ready(function() {{js_object}.init();});}";
  28. $this->_bSiteMenu = $this->_sObject == 'sys_site';
  29. $this->_bSiteMenuInPanel = $this->_sObject == 'sys_site_in_panel';
  30. $this->_bSiteMenuSubmenu = false;
  31. $this->_bApplicationMenu = $this->_sObject == 'sys_application';
  32. $this->_aHideFromSiteMenuInPanel = ['more-auto'];
  33. }
  34. public function getCode ()
  35. {
  36. $sClass = 'bx-sliding-menu-main';
  37. $sStyle = 'display:none';
  38. if($this->_bSiteMenu || $this->_bSiteMenuInPanel || $this->_bApplicationMenu) {
  39. $sClass = 'bx-sliding-smenu-main';
  40. $sStyle = '';
  41. }
  42. $this->_oModule->_oTemplate->addJs(array('menu_site.js'));
  43. return '<div id="bx-sliding-menu-' . $this->_sObject . '" class="' . $sClass . ' bx-def-z-index-nav" style="' . $sStyle . '"><div class="bx-sliding-menu-main-cnt">' . parent::getCode() . '</div></div>';
  44. }
  45. protected function _getMenuItem ($a)
  46. {
  47. //--- Hide '[More Auto]' from Site Menu in Panel
  48. if($this->_bSiteMenuInPanel && in_array($a['name'], $this->_aHideFromSiteMenuInPanel))
  49. return false;
  50. $aResult = parent::_getMenuItem($a);
  51. if(empty($aResult) || !is_array($aResult))
  52. return $aResult;
  53. $aTmplVarsSubmenu = array();
  54. $bTmplVarsSubmenu = $this->_bSiteMenu && $this->_bSiteMenuSubmenu && !empty($aResult['submenu_object']) && (int)$aResult['submenu_popup'] == 1;
  55. if($bTmplVarsSubmenu) {
  56. $aResult['onclick'] = '';
  57. $aTmplVarsSubmenu['content'] = BxDolMenu::getObjectInstance($aResult['submenu_object'])->getCode();
  58. }
  59. $aResult['bx_if:show_arrow'] = array (
  60. 'condition' => false && $bTmplVarsSubmenu,
  61. 'content' => array(),
  62. );
  63. $aResult['bx_if:show_line'] = array (
  64. 'condition' => true,
  65. 'content' => array(),
  66. );
  67. $aResult['bx_if:show_submenu'] = array (
  68. 'condition' => $bTmplVarsSubmenu,
  69. 'content' => $aTmplVarsSubmenu,
  70. );
  71. return $aResult;
  72. }
  73. }
  74. /** @} */