From 9552e3d0bd4e6e9b72ab4ea73e7a921fbb53d512 Mon Sep 17 00:00:00 2001 From: RomanL Date: Wed, 29 Sep 2021 15:14:48 +0300 Subject: [PATCH] #3524 Submenu in block --- inc/classes/BxDolPage.php | 7 +++++- inc/classes/BxDolTemplate.php | 7 ++++++ install/sql/system.sql | 4 +++- .../boonex/english/data/langs/system/en.xml | 6 +++++ .../scripts/BxBaseStudioBuilderPage.php | 6 +++-- template/menu_main_submenu_empty.html | 1 + template/scripts/BxBaseMenuSubmenu.php | 21 +++++++++++++++- template/scripts/BxBasePage.php | 2 +- template/scripts/BxBaseServices.php | 24 ++++++++++++++++++- 9 files changed, 71 insertions(+), 7 deletions(-) create mode 100644 template/menu_main_submenu_empty.html diff --git a/inc/classes/BxDolPage.php b/inc/classes/BxDolPage.php index d67819eb38..bb336838c6 100644 --- a/inc/classes/BxDolPage.php +++ b/inc/classes/BxDolPage.php @@ -269,6 +269,11 @@ public function getModule () { return $this->_aObject['module']; } + + public function getSubMenu () + { + return $this->_aObject['submenu']; + } public function getName () { @@ -303,7 +308,7 @@ public function isVisiblePage () { return $this->_isVisiblePage($this->_aObject); } - + public function isEditAllowed () { return false; diff --git a/inc/classes/BxDolTemplate.php b/inc/classes/BxDolTemplate.php index a2cbae62c3..67f08752c2 100644 --- a/inc/classes/BxDolTemplate.php +++ b/inc/classes/BxDolTemplate.php @@ -1384,6 +1384,13 @@ function getTemplatePath($sName, $sCheckIn = BX_DOL_TEMPLATE_CHECK_IN_BOTH) function getMenu ($s) { $oMenu = BxDolMenu::getObjectInstance($s); + + if($s == 'sys_site_submenu'){ + $oPage = BxDolPage::getObjectInstanceByURI(); + if ($oPage->getSubMenu() == 'disabled'){ + return; + } + } return $oMenu ? $oMenu->getCode () : ''; } diff --git a/install/sql/system.sql b/install/sql/system.sql index 6760cf2bd5..9c88101627 100644 --- a/install/sql/system.sql +++ b/install/sql/system.sql @@ -5134,7 +5134,8 @@ SET @iBlockOrder = IFNULL((SELECT `order` FROM `sys_pages_blocks` WHERE `object` INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `tabs`, `async`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES ('', 0, 'system', '_sys_page_block_title_sys_create_post', '_sys_page_block_title_create_post', 11, 1, 4, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:20:"get_create_post_form";s:6:"params";a:1:{i:0;i:0;}s:5:"class";s:13:"TemplServices";}', 0, 1, 1, @iBlockOrder + 1), ('', 0, 'system', '_sys_page_block_title_sys_create_post_context', '_sys_page_block_title_create_post_context', 11, 1, 4, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:20:"get_create_post_form";s:6:"params";a:1:{i:0;s:12:"{profile_id}";}s:5:"class";s:13:"TemplServices";}', 0, 1, 1, @iBlockOrder + 2), -('', 0, 'system', '_sys_page_block_title_sys_create_post_public', '_sys_page_block_title_create_post_public', 11, 1, 4, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:20:"get_create_post_form";s:6:"params";a:0:{}s:5:"class";s:13:"TemplServices";}', 0, 1, 1, @iBlockOrder + 3); +('', 0, 'system', '_sys_page_block_title_sys_create_post_public', '_sys_page_block_title_create_post_public', 11, 1, 4, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:20:"get_create_post_form";s:6:"params";a:0:{}s:5:"class";s:13:"TemplServices";}', 0, 1, 1, @iBlockOrder + 3), +('', 0, 'system', '_sys_page_block_title_sys_std_site_submenu', '_sys_page_block_title_std_site_submenu', 3, 0, 0, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:16:"get_site_submenu";s:6:"params";a:0:{}s:5:"class";s:13:"TemplServices";}', 0, 1, 1, @iBlockOrder + 4); -- content blocks INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title_system`, `title`, `designbox_id`, `tabs`, `async`, `visible_for_levels`, `type`, `content`, `deletable`, `copyable`, `active`, `order`) VALUES @@ -5226,6 +5227,7 @@ INSERT INTO `sys_pages_blocks` (`object`, `cell_id`, `module`, `title_system`, ` ('sys_std_dashboard', 2, 'system', '', '_sys_page_block_title_std_dash_cache', 11, 0, 0, 2147483647, 'service', 'a:4:{s:6:"module";s:6:"system";s:6:"method";s:15:"get_block_cache";s:6:"params";a:0:{}s:5:"class";s:20:"TemplStudioDashboard";}', 0, 0, 1, 2); + -- -------------------------------------------------------- CREATE TABLE `sys_labels` ( diff --git a/modules/boonex/english/data/langs/system/en.xml b/modules/boonex/english/data/langs/system/en.xml index 55a61f55be..38e5b37b5d 100644 --- a/modules/boonex/english/data/langs/system/en.xml +++ b/modules/boonex/english/data/langs/system/en.xml @@ -2973,6 +2973,9 @@ If it is not enabled then please consider implement this optimization, since it + + + {owner_name} mentioned {entry_caption}]]> @@ -3055,6 +3058,9 @@ If it is not enabled then please consider implement this optimization, since it + + + diff --git a/studio/template/scripts/BxBaseStudioBuilderPage.php b/studio/template/scripts/BxBaseStudioBuilderPage.php index 2d5a6a2032..798a3d777d 100644 --- a/studio/template/scripts/BxBaseStudioBuilderPage.php +++ b/studio/template/scripts/BxBaseStudioBuilderPage.php @@ -838,7 +838,8 @@ protected function actionBlockEdit() $aForm['inputs']['async']['values'][] = array('key' => $iKey, 'value' => _t($sTitle)); $aSubmenus = $this->oDb->getBlockSubmenus(); - $aForm['inputs']['submenu']['values'][] = array('key' => '', 'value' => _t('_sys_no_menu')); + $aForm['inputs']['submenu']['values'][] = array('key' => '', 'value' => _t('_sys_menu_item_title_inherited')); + $aForm['inputs']['submenu']['values'][] = array('key' => 'disabled', 'value' => _t('_sys_menu_item_title_disabled')); foreach ($aSubmenus as $sObject => $sTitle) $aForm['inputs']['submenu']['values'][] = array('key' => $sObject, 'value' => _t($sTitle)); @@ -1059,7 +1060,8 @@ protected function getSettingsOptions($aPage = array(), $bCreate = true, $bInput $aForm['inputs']['type_id']['values'][] = array('key' => $aType['id'], 'value' => _t($aType['title'])); $aSubmenus = $this->oDb->getSubmenus(); - $aForm['inputs']['submenu']['values'][] = array('key' => '', 'value' => _t('_sys_no_menu')); + $aForm['inputs']['submenu']['values'][] = array('key' => '', 'value' => _t('_sys_menu_item_title_inherited')); + $aForm['inputs']['submenu']['values'][] = array('key' => 'disabled', 'value' => _t('_sys_menu_item_title_disabled')); foreach ($aSubmenus as $sObject => $sTitle) $aForm['inputs']['submenu']['values'][] = array('key' => $sObject, 'value' => _t($sTitle)); diff --git a/template/menu_main_submenu_empty.html b/template/menu_main_submenu_empty.html new file mode 100644 index 0000000000..ea52250047 --- /dev/null +++ b/template/menu_main_submenu_empty.html @@ -0,0 +1 @@ +__code__ \ No newline at end of file diff --git a/template/scripts/BxBaseMenuSubmenu.php b/template/scripts/BxBaseMenuSubmenu.php index 9459ed8177..a7661d1683 100644 --- a/template/scripts/BxBaseMenuSubmenu.php +++ b/template/scripts/BxBaseMenuSubmenu.php @@ -17,6 +17,7 @@ class BxBaseMenuSubmenu extends BxTemplMenu protected $_sObjectActionsMenu = false; protected $_sObjectSubmenu = false; protected $_mixedMainMenuItemSelected = false; + protected $_sTemplateWrapper = 'menu_main_submenu_bar.html'; protected $_sJsObject; @@ -92,6 +93,24 @@ public function getServiceSocialSharing () return $this->_aSocialSharingService; } + /** + * Get template wrapper + * @return template wrapper + */ + public function getTemplateWrapper () + { + return $this->_sTemplateWrapper; + } + + /** + * Set template wrapper + * @param $s template wrapper + */ + public function setTemplateWrapper ($s) + { + $this->_sTemplateWrapper = $s; + } + /** * Get menu code. * @return string @@ -114,7 +133,7 @@ public function getCode () return ''; $this->_addJsCss(); - return $this->_oTemplate->parseHtmlByName('menu_main_submenu_bar.html', array( + return $this->_oTemplate->parseHtmlByName($this->_sTemplateWrapper, array( 'class' => $oMenuSubmenu->getTemplateId() == BX_MENU_TEMPLATE_SUBMENU_MORE_AUTO ? 'bx-menu-more-auto' : '', 'code' => $sCode )); diff --git a/template/scripts/BxBasePage.php b/template/scripts/BxBasePage.php index 1bd1460133..4d31d2c98c 100644 --- a/template/scripts/BxBasePage.php +++ b/template/scripts/BxBasePage.php @@ -573,7 +573,7 @@ protected function _selectMenu () */ protected function _setSubmenu ($aParams) { - if(empty($this->_aObject['submenu'])) + if(empty($this->_aObject['submenu']) || $this->_aObject['submenu'] == 'disabled') return; $oMenuSubmenu = BxDolMenu::getObjectInstance('sys_site_submenu'); diff --git a/template/scripts/BxBaseServices.php b/template/scripts/BxBaseServices.php index aba93da82f..14a74ec67a 100644 --- a/template/scripts/BxBaseServices.php +++ b/template/scripts/BxBaseServices.php @@ -590,7 +590,29 @@ public function serviceGetCreatePostForm($mixedContextId = false, $sDefault = '' 'menu' => $oMenu ); } - + + /** + * @page service Service Calls + * @section bx_system_general System Services + * @subsection bx_system_general-general General + * @subsubsection bx_system_general-get_site_submenu get_site_submenu + * + * @code bx_srv('system', 'get_site_submenu', [], 'TemplServices'); @endcode + * @code {{~system:get_site_submenu:TemplServices[]~}} @endcode + * + * Get Site Submenu code. + * @see BxBaseServices::serviceGetSiteSubmenu + */ + /** + * @ref bx_system_general-get_site_submenu "get_site_submenu" + */ + public function serviceGetSiteSubmenu() + { + $oMenu = BxDolMenu::getObjectInstance('sys_site_submenu'); + $oMenu->setTemplateWrapper('menu_main_submenu_empty.html'); + return $oMenu ? $oMenu->getCode () : ''; + } + /** * @page service Service Calls * @section bx_system_general System Services