BxBaseMenuCustom.php 2.9 KB

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