BxTemplMenuSidebarSite.php 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  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 BxDolMenu
  11. */
  12. class BxTemplMenuSidebarSite extends BxTemplMenu
  13. {
  14. protected $_sPageUri;
  15. protected $_aHideFromMenu;
  16. public function __construct ($aObject, $oTemplate = false)
  17. {
  18. parent::__construct ($aObject, $oTemplate);
  19. list($sPageUrl, $aPageParams) = bx_get_base_url_inline();
  20. $this->_sPageUri = !empty($aPageParams['i']) ? $aPageParams['i'] : '';
  21. $this->_aHideFromMenu = ['search', 'more-auto'];
  22. }
  23. protected function _getMenuItem ($a)
  24. {
  25. if(in_array($a['name'], $this->_aHideFromMenu))
  26. return false;
  27. $aResult = parent::_getMenuItem($a);
  28. if(empty($aResult) || !is_array($aResult))
  29. return $aResult;
  30. $aTmplVarsSubmenu = [];
  31. $bTmplVarsSubmenu = false;
  32. if(($bTmplVarsSubmenu = (!empty($aResult['submenu_object']) && ($oSubmenu = BxDolMenu::getObjectInstance($aResult['submenu_object'])) !== false))) {
  33. $aResult['bx_if:onclick'] = [
  34. 'condition' => true,
  35. 'content' => [
  36. 'onclick' => "javascript:return bx_sidebar_dropdown_toggle(this)"
  37. ]];
  38. $aResult['class_add'] .= ' bx-si-dropdown-has';
  39. $aResult['attrs'] .= ' aria-expanded="false"';
  40. $aSubmenuItems = $oSubmenu->getMenuItemsRaw();
  41. if($oSubmenu->isHtmx() && !$this->_isSelected($a) && !array_key_exists($this->_sPageUri, $aSubmenuItems))
  42. $oSubmenu->setHtmx(false);
  43. $aTmplVarsSubmenu['bx_repeat:submenu_items'] = $oSubmenu->getMenuItems();
  44. }
  45. $aResult['bx_if:show_arrow'] = [
  46. 'condition' => false && $bTmplVarsSubmenu,
  47. 'content' => [true],
  48. ];
  49. $aResult['bx_if:show_line'] = [
  50. 'condition' => true,
  51. 'content' => [true],
  52. ];
  53. $aResult['bx_if:show_submenu'] = [
  54. 'condition' => $bTmplVarsSubmenu,
  55. 'content' => $aTmplVarsSubmenu,
  56. ];
  57. return $aResult;
  58. }
  59. }
  60. /** @} */