1
0

BxBaseMenuInteractive.php 2.5 KB

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