1
0

BxBaseMenuInteractive.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. <?php defined('BX_DOL') or die('hack attempt');
  2. /**
  3. * Copyright (c) BoonEx Pty Limited - http://www.boonex.com/
  4. * CC-BY License - http://creativecommons.org/licenses/by/3.0/
  5. *
  6. * @defgroup TridentCore Trident Core
  7. * @{
  8. */
  9. bx_import('BxTemplMenu');
  10. /**
  11. * Menu representation.
  12. * @see BxDolMenu
  13. */
  14. class BxBaseMenuInteractive extends BxTemplMenu
  15. {
  16. protected $_oTemplate;
  17. public function __construct ($aObject, $oTemplate)
  18. {
  19. parent::__construct ($aObject);
  20. if ($oTemplate)
  21. $this->_oTemplate = $oTemplate;
  22. else
  23. $this->_oTemplate = BxDolTemplate::getInstance();
  24. }
  25. /**
  26. * Get menu code.
  27. * @return string
  28. */
  29. public function getCode ()
  30. {
  31. $sCode = parent::getCode();
  32. if($sCode !== false)
  33. $sCode = $this->_oTemplate->parseHtmlByContent($sCode, array(
  34. 'id' => $this->_aObject['menu_id']
  35. ));
  36. return $sCode;
  37. }
  38. /**
  39. * Get menu items array, which are ready to pass to template.
  40. * @return array
  41. */
  42. public function getMenuItems ()
  43. {
  44. $aRet = array();
  45. if (!isset($this->_aObject['menu_items']))
  46. $this->_aObject['menu_items'] = $this->_oQuery->getMenuItems();
  47. foreach ($this->_aObject['menu_items'] as $a) {
  48. if (isset($a['active']) && !$a['active'])
  49. continue;
  50. if (isset($a['visible_for_levels']) && !$this->_isVisible($a))
  51. continue;
  52. $a = $this->_replaceMarkers($a);
  53. list ($sIcon, $sIconUrl) = $this->_getMenuIcon($a);
  54. $a['class_wrp_act'] = 'bx-menu-inter-hidden';
  55. $a['class_wrp_pas'] = '';
  56. if($this->_isSelected($a)) {
  57. $a['class_wrp_act'] = '';
  58. $a['class_wrp_pas'] = 'bx-menu-inter-hidden';
  59. }
  60. $a['link'] = isset($a['link']) ? $this->_oPermalinks->permalink($a['link']) : 'javascript:void(0);';
  61. $a['title'] = _t($a['title']);
  62. $a['bx_if:image'] = array (
  63. 'condition' => (bool)$sIconUrl,
  64. 'content' => array('icon_url' => $sIconUrl),
  65. );
  66. $a['bx_if:icon'] = array (
  67. 'condition' => (bool)$sIcon,
  68. 'content' => array('icon' => $sIcon),
  69. );
  70. $aRet[] = $a;
  71. }
  72. return $aRet;
  73. }
  74. /**
  75. * Add css/js files which are needed for menu display and functionality.
  76. */
  77. protected function _addJsCss()
  78. {
  79. $this->_oTemplate->addCss('menu.css');
  80. }
  81. }
  82. /** @} */