BxBaseMenuCustom.php 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  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 $_sTmplContent;
  13. protected static $_sTmplContentItem;
  14. public function __construct($aObject, $oTemplate = false)
  15. {
  16. parent::__construct($aObject, $oTemplate);
  17. if(empty(self::$_sTmplContent))
  18. self::$_sTmplContent = $this->_oTemplate->getHtml($aObject['template']);
  19. if(empty(self::$_sTmplContentItem))
  20. self::$_sTmplContentItem = $this->_oTemplate->getHtml('menu_custom_item.html');
  21. $this->_sTmplNameItemMore = 'menu_custom_item_more.html';
  22. }
  23. protected function _getCode($sTmplName, $aTmplVars)
  24. {
  25. if($sTmplName != $this->_aObject['template'])
  26. return parent::_getCode($sTmplName, $aTmplVars);
  27. return $this->_oTemplate->parseHtmlByContent(self::$_sTmplContent, $aTmplVars);
  28. }
  29. protected function _getMenuItem ($aItem)
  30. {
  31. if (isset($aItem['active']) && !$aItem['active'])
  32. return false;
  33. if (isset($aItem['visible_for_levels']) && !$this->_isVisible($aItem))
  34. return false;
  35. $sMethod = '_getMenuItem' . str_replace(' ', '', ucwords(str_replace('-', ' ', $aItem['name'])));
  36. $bMethod = method_exists($this, $sMethod);
  37. $mixedItem = false;
  38. if($bMethod)
  39. $mixedItem = $this->$sMethod($aItem);
  40. if($mixedItem === true || !$bMethod) {
  41. $aItem = parent::_getMenuItem($aItem);
  42. if($aItem === false)
  43. return false;
  44. $mixedItem = $this->_getMenuItemDefault($aItem);
  45. }
  46. if(empty($mixedItem))
  47. return false;
  48. $sItem = $sClass = '';
  49. if(is_array($mixedItem))
  50. list($sItem, $sClass) = $mixedItem;
  51. else
  52. $sItem = $mixedItem;
  53. if(!empty($sClass))
  54. $sClass = ' ' . $sClass;
  55. if($this->_isSelected($aItem))
  56. $sClass .= ' bx-menu-tab-active';
  57. return array(
  58. 'name' => $aItem['name'],
  59. 'class' => $sClass,
  60. 'item' => $sItem
  61. );
  62. }
  63. protected function _getMenuItemMoreAuto ($aItem)
  64. {
  65. $aItem['onclick'] = $this->_sJsObjectMoreAuto . '.more(this);';
  66. $aItem = parent::_getMenuItem($aItem);
  67. if($aItem === false)
  68. return false;
  69. return $this->_oTemplate->parseHtmlByContent($this->_getTmplContentItemMore(), array(
  70. 'item' => $this->_getMenuItemDefault($aItem),
  71. 'popup' => BxTemplFunctions::getInstance()->transBox($this->_aHtmlIds['more_auto_popup'], $this->_oTemplate->parseHtmlByContent($this->_getTmplContentItemMorePopup(), array(
  72. 'content' => ''
  73. )), true)
  74. ));
  75. }
  76. protected function _getMenuItemDefault ($aItem)
  77. {
  78. if(!isset($aItem['class_wrp']))
  79. $aItem['class_wrp'] = '';
  80. if(!isset($aItem['class_link']))
  81. $aItem['class_link'] = '';
  82. return $this->_oTemplate->parseHtmlByContent($this->_getTmplContentItem(), $aItem);
  83. }
  84. protected function _getTmplContentItem()
  85. {
  86. return self::$_sTmplContentItem;
  87. }
  88. }
  89. /** @} */