BxBaseStudioNavigation.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  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 DolphinView Dolphin Studio Representation classes
  7. * @ingroup DolphinStudio
  8. * @{
  9. */
  10. bx_import('BxDolStudioNavigation');
  11. class BxBaseStudioNavigation extends BxDolStudioNavigation {
  12. protected $sSubpageUrl;
  13. protected $aGridObjects = array(
  14. 'menus' => 'sys_studio_nav_menus',
  15. 'sets' => 'sys_studio_nav_sets',
  16. 'items' => 'sys_studio_nav_items'
  17. );
  18. function __construct($sPage = '') {
  19. parent::__construct($sPage);
  20. $this->sSubpageUrl = BX_DOL_URL_STUDIO . 'builder_menu.php?page=';
  21. }
  22. function getPageCss() {
  23. return array_merge(parent::getPageCss(), array('forms.css', 'paginate.css', 'navigation.css'));
  24. }
  25. function getPageJs() {
  26. return array_merge(parent::getPageJs(), array());
  27. }
  28. function getPageJsObject() {
  29. return '';
  30. }
  31. function getPageMenu($aMenu = array(), $aMarkers = array()) {
  32. $sJsObject = $this->getPageJsObject();
  33. $aMenu = array();
  34. $aMenuItems = array(
  35. BX_DOL_STUDIO_NAV_TYPE_MENUS,
  36. BX_DOL_STUDIO_NAV_TYPE_SETS,
  37. BX_DOL_STUDIO_NAV_TYPE_ITEMS
  38. );
  39. foreach($aMenuItems as $sMenuItem)
  40. $aMenu[] = array(
  41. 'name' => $sMenuItem,
  42. 'icon' => 'mi-nav-' . $sMenuItem . '.png',
  43. 'link' => $this->sSubpageUrl . $sMenuItem,
  44. 'title' => _t('_adm_lmi_cpt_' . $sMenuItem),
  45. 'selected' => $sMenuItem == $this->sPage
  46. );
  47. return parent::getPageMenu($aMenu);
  48. }
  49. function getPageCode($bHidden = false) {
  50. $sMethod = 'get' . ucfirst($this->sPage);
  51. if(!method_exists($this, $sMethod))
  52. return '';
  53. return $this->$sMethod();
  54. }
  55. function actionGetSets() {
  56. if(($sModule = bx_get('nav_module')) === false)
  57. return array('code' => 2, 'message' => _t('_adm_nav_err_missing_params'));
  58. $sModule = bx_process_input($sModule);
  59. return array('code' => 0, 'message' => '', 'content' => $this->getItemsObject()->getSetsSelector($sModule));
  60. }
  61. protected function getMenus() {
  62. return $this->getGrid($this->aGridObjects['menus']);
  63. }
  64. protected function getSets() {
  65. return $this->getGrid($this->aGridObjects['sets']);
  66. }
  67. protected function getItems() {
  68. return $this->getGrid($this->aGridObjects['items']);
  69. }
  70. protected function getItemsObject() {
  71. return $this->getGridObject($this->aGridObjects['items']);
  72. }
  73. protected function getGridObject($sObjectName) {
  74. bx_import('BxDolGrid');
  75. $oGrid = BxDolGrid::getObjectInstance($sObjectName);
  76. if(!$oGrid)
  77. return '';
  78. return $oGrid;
  79. }
  80. protected function getGrid($sObjectName) {
  81. $oTemplate = BxDolStudioTemplate::getInstance();
  82. bx_import('BxDolGrid');
  83. $oGrid = BxDolGrid::getObjectInstance($sObjectName);
  84. if(!$oGrid)
  85. return '';
  86. $aTmplVars = array(
  87. 'js_object' => $this->getPageJsObject(),
  88. 'bx_repeat:blocks' => array(
  89. array(
  90. 'caption' => '',
  91. 'panel_top' => '',
  92. 'items' => $oGrid->getCode(),
  93. 'panel_bottom' => ''
  94. )
  95. )
  96. );
  97. return $oTemplate->parseHtmlByName('navigation.html', $aTmplVars);
  98. }
  99. }
  100. /** @} */