1
0

BxBaseMenuCustom.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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. if(!method_exists($this, $sMethod)) {
  28. $aItem = parent::_getMenuItem($aItem);
  29. if($aItem === false)
  30. return false;
  31. $mixedItem = $this->_getMenuItemDefault($aItem);
  32. }
  33. else
  34. $mixedItem = $this->$sMethod($aItem);
  35. if(empty($mixedItem))
  36. return false;
  37. $sItem = $sClass = '';
  38. if(is_array($mixedItem))
  39. list($sItem, $sClass) = $mixedItem;
  40. else
  41. $sItem = $mixedItem;
  42. if(!empty($sClass))
  43. $sClass = ' ' . $sClass;
  44. if($this->_isSelected($aItem))
  45. $sClass .= ' bx-menu-tab-active';
  46. return array(
  47. 'name' => $aItem['name'],
  48. 'class' => $sClass,
  49. 'item' => $sItem
  50. );
  51. }
  52. protected function _getMenuItemMoreAuto ($aItem)
  53. {
  54. $aItem['onclick'] = $this->_sJsObjectMoreAuto . '.more(this);';
  55. $aItem = parent::_getMenuItem($aItem);
  56. if($aItem === false)
  57. return false;
  58. return $this->_oTemplate->parseHtmlByName($this->_getTmplNameItemMore(), array(
  59. 'item' => $this->_getMenuItemDefault($aItem),
  60. 'popup' => BxTemplFunctions::getInstance()->transBox($this->_aHtmlIds['more_auto_popup'], $this->_oTemplate->parseHtmlByName($this->_getTmplNameItemMorePopup(), array(
  61. 'content' => ''
  62. )), true)
  63. ));
  64. }
  65. protected function _getMenuItemDefault ($aItem)
  66. {
  67. if(!isset($aItem['class_wrp']))
  68. $aItem['class_wrp'] = '';
  69. if(!isset($aItem['class_link']))
  70. $aItem['class_link'] = '';
  71. return $this->_oTemplate->parseHtmlByContent($this->_getTmplContentItem(), $aItem);
  72. }
  73. protected function _getTmplContentItem()
  74. {
  75. return self::$_sTmplContentItem;
  76. }
  77. }
  78. /** @} */