BxBaseMenuCustom.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  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 UnaBaseView UNA Base Representation Classes
  7. *
  8. * @{
  9. */
  10. class BxBaseMenuCustom extends BxTemplMenuMoreAuto
  11. {
  12. protected static $_sTmplContentDefault;
  13. protected static $_sTmplContentItemDefault;
  14. protected $_sTmplContent;
  15. protected $_sTmplContentItem;
  16. public function __construct($aObject, $oTemplate = false)
  17. {
  18. parent::__construct($aObject, $oTemplate);
  19. if(empty(self::$_sTmplContentDefault))
  20. self::$_sTmplContentDefault = $this->_oTemplate->getHtml($aObject['template']);
  21. $this->_sTmplContent = self::$_sTmplContentDefault;
  22. if(empty(self::$_sTmplContentItemDefault))
  23. self::$_sTmplContentItemDefault = $this->_oTemplate->getHtml('menu_custom_item.html');
  24. $this->_sTmplContentItem = self::$_sTmplContentItemDefault;
  25. $this->_sTmplNameItemMore = 'menu_custom_item_more.html';
  26. }
  27. public function setTemplateById ($iTemplateId)
  28. {
  29. $sTemplate = $this->_aObject['template'];
  30. switch($iTemplateId) {
  31. case BX_DB_MENU_TEMPLATE_TABS:
  32. $iTemplateId = BX_MENU_TEMPLATE_CUSTOM_HOR;
  33. break;
  34. case BX_DB_MENU_TEMPLATE_POPUP:
  35. $iTemplateId = BX_MENU_TEMPLATE_CUSTOM_VER;
  36. break;
  37. }
  38. parent::setTemplateById ($iTemplateId);
  39. if($sTemplate != $this->_aObject['template'])
  40. $this->_sTmplContent = $this->_oTemplate->getHtml($this->_aObject['template']);
  41. }
  42. protected function _getCode($sTmplName, $aTmplVars)
  43. {
  44. if($sTmplName != $this->_aObject['template'])
  45. return parent::_getCode($sTmplName, $aTmplVars);
  46. return $this->_oTemplate->parseHtmlByContent($this->_sTmplContent, $aTmplVars);
  47. }
  48. protected function _getMenuItem ($aItem)
  49. {
  50. if (isset($aItem['active']) && !$aItem['active'])
  51. return false;
  52. if (isset($aItem['visible_for_levels']) && !$this->_isVisible($aItem))
  53. return false;
  54. $sMethod = '_getMenuItem' . str_replace(' ', '', ucwords(str_replace('-', ' ', $aItem['name'])));
  55. $bMethod = method_exists($this, $sMethod);
  56. $mixedItem = false;
  57. if($bMethod)
  58. $mixedItem = $this->$sMethod($aItem);
  59. if($mixedItem === true || !$bMethod) {
  60. $aItem = parent::_getMenuItem($aItem);
  61. if($aItem === false)
  62. return false;
  63. $mixedItem = $this->_getMenuItemDefault($aItem);
  64. }
  65. if(empty($mixedItem))
  66. return false;
  67. $sItem = $sClass = '';
  68. if(is_array($mixedItem))
  69. list($sItem, $sClass) = $mixedItem;
  70. else
  71. $sItem = $mixedItem;
  72. if(!empty($sClass))
  73. $sClass = ' ' . $sClass;
  74. if($this->_isSelected($aItem))
  75. $sClass .= ' bx-menu-tab-active';
  76. return array(
  77. 'name' => $aItem['name'],
  78. 'class' => $sClass,
  79. 'item' => $sItem
  80. );
  81. }
  82. protected function _getMenuItemMoreAuto ($aItem)
  83. {
  84. $aItem['onclick'] = $this->_sJsObjectMoreAuto . '.more(this);';
  85. $aItem = parent::_getMenuItem($aItem);
  86. if($aItem === false)
  87. return false;
  88. return $this->_oTemplate->parseHtmlByContent($this->_getTmplContentItemMore(), array(
  89. 'item' => $this->_getMenuItemDefault($aItem),
  90. 'popup' => BxTemplFunctions::getInstance()->transBox($this->_aHtmlIds['more_auto_popup'], $this->_oTemplate->parseHtmlByContent($this->_getTmplContentItemMorePopup(), array(
  91. 'content' => ''
  92. )), true)
  93. ));
  94. }
  95. protected function _getMenuItemDefault ($aItem)
  96. {
  97. if(!isset($aItem['class_wrp']))
  98. $aItem['class_wrp'] = '';
  99. if(!isset($aItem['class_link']))
  100. $aItem['class_link'] = '';
  101. return $this->_oTemplate->parseHtmlByContent($this->_getTmplContentItem(), $aItem);
  102. }
  103. protected function _getTmplContentItem()
  104. {
  105. return $this->_sTmplContentItem;
  106. }
  107. }
  108. /** @} */