RomanL 5 лет назад
Родитель
Сommit
9552e3d0bd

+ 6 - 1
inc/classes/BxDolPage.php

@@ -269,6 +269,11 @@ class BxDolPage extends BxDolFactory implements iBxDolFactoryObject, iBxDolRepla
     {
     {
     	return $this->_aObject['module'];
     	return $this->_aObject['module'];
     }
     }
+    
+    public function getSubMenu ()
+    {
+        return $this->_aObject['submenu'];
+    }
 
 
     public function getName ()
     public function getName ()
     {
     {
@@ -303,7 +308,7 @@ class BxDolPage extends BxDolFactory implements iBxDolFactoryObject, iBxDolRepla
     {
     {
         return $this->_isVisiblePage($this->_aObject);
         return $this->_isVisiblePage($this->_aObject);
     }
     }
-
+    
     public function isEditAllowed ()
     public function isEditAllowed ()
     {
     {
         return false;
         return false;

+ 7 - 0
inc/classes/BxDolTemplate.php

@@ -1384,6 +1384,13 @@ class BxDolTemplate extends BxDolFactory implements iBxDolSingleton
     function getMenu ($s)
     function getMenu ($s)
     {
     {
         $oMenu = BxDolMenu::getObjectInstance($s);
         $oMenu = BxDolMenu::getObjectInstance($s);
+        
+        if($s == 'sys_site_submenu'){
+            $oPage = BxDolPage::getObjectInstanceByURI();
+            if ($oPage->getSubMenu() == 'disabled'){
+                return;
+            }
+        }
         return $oMenu ? $oMenu->getCode () : '';
         return $oMenu ? $oMenu->getCode () : '';
     }
     }
 
 

+ 3 - 1
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
 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', '_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_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
 -- 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
 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);
 ('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` (
 CREATE TABLE `sys_labels` (

+ 6 - 0
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
     <string name="_sys_menu_item_title_sa_language"><![CDATA[Language]]></string>
     <string name="_sys_menu_item_title_sa_language"><![CDATA[Language]]></string>
     <string name="_sys_menu_item_title_system_sa_logout"><![CDATA[Sign out]]></string>
     <string name="_sys_menu_item_title_system_sa_logout"><![CDATA[Sign out]]></string>
     <string name="_sys_menu_item_title_sa_logout"><![CDATA[Sign out]]></string>
     <string name="_sys_menu_item_title_sa_logout"><![CDATA[Sign out]]></string>
+    <string name="_sys_menu_item_title_inherited"><![CDATA[Inherited]]></string>
+    <string name="_sys_menu_item_title_disabled"><![CDATA[Disabled]]></string>
+    
     <string name="_sys_metatags_mention_added"><![CDATA[<b class="bx-ntfs-content-profile">{owner_name}</b> mentioned <b class="bx-ntfs-content-entry">{entry_caption}</b>]]></string>
     <string name="_sys_metatags_mention_added"><![CDATA[<b class="bx-ntfs-content-profile">{owner_name}</b> mentioned <b class="bx-ntfs-content-entry">{entry_caption}</b>]]></string>
     <string name="_sys_mobile_friends"><![CDATA[Friends]]></string>
     <string name="_sys_mobile_friends"><![CDATA[Friends]]></string>
     <string name="_sys_mobile_info"><![CDATA[Info]]></string>
     <string name="_sys_mobile_info"><![CDATA[Info]]></string>
@@ -3055,6 +3058,9 @@ If it is not enabled then please consider implement this optimization, since it
 	<string name="_sys_page_block_title_std_dash_host_tools"><![CDATA[Host Tools]]></string>
 	<string name="_sys_page_block_title_std_dash_host_tools"><![CDATA[Host Tools]]></string>
 	<string name="_sys_page_block_title_std_dash_cache"><![CDATA[Cache]]></string>
 	<string name="_sys_page_block_title_std_dash_cache"><![CDATA[Cache]]></string>
 	<string name="_sys_page_block_title_terms"><![CDATA[Terms of Service]]></string>
 	<string name="_sys_page_block_title_terms"><![CDATA[Terms of Service]]></string>
+    <string name="_sys_page_block_title_sys_std_site_submenu"><![CDATA[Site submenu]]></string>
+    <string name="_sys_page_block_title_std_site_submenu"><![CDATA[Site submenu]]></string>
+    
 	<string name="_sys_page_lang_block_about"><![CDATA[This site is powered by UNA. The rest is a mystery.]]></string>
 	<string name="_sys_page_lang_block_about"><![CDATA[This site is powered by UNA. The rest is a mystery.]]></string>
 	<string name="_sys_page_lang_block_terms"><![CDATA[Our terms of use.]]></string>
 	<string name="_sys_page_lang_block_terms"><![CDATA[Our terms of use.]]></string>
 	<string name="_sys_page_lang_block_privacy"><![CDATA[Our privacy policy.]]></string>
 	<string name="_sys_page_lang_block_privacy"><![CDATA[Our privacy policy.]]></string>

+ 4 - 2
studio/template/scripts/BxBaseStudioBuilderPage.php

@@ -838,7 +838,8 @@ class BxBaseStudioBuilderPage extends BxDolStudioBuilderPage
             $aForm['inputs']['async']['values'][] = array('key' => $iKey, 'value' => _t($sTitle));
             $aForm['inputs']['async']['values'][] = array('key' => $iKey, 'value' => _t($sTitle));
 
 
         $aSubmenus = $this->oDb->getBlockSubmenus();
         $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)
         foreach ($aSubmenus as $sObject => $sTitle)
             $aForm['inputs']['submenu']['values'][] = array('key' => $sObject, 'value' => _t($sTitle));
             $aForm['inputs']['submenu']['values'][] = array('key' => $sObject, 'value' => _t($sTitle));
 
 
@@ -1059,7 +1060,8 @@ class BxBaseStudioBuilderPage extends BxDolStudioBuilderPage
         	$aForm['inputs']['type_id']['values'][] = array('key' => $aType['id'], 'value' => _t($aType['title']));
         	$aForm['inputs']['type_id']['values'][] = array('key' => $aType['id'], 'value' => _t($aType['title']));
 
 
         $aSubmenus = $this->oDb->getSubmenus();
         $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)
         foreach ($aSubmenus as $sObject => $sTitle)
             $aForm['inputs']['submenu']['values'][] = array('key' => $sObject, 'value' => _t($sTitle));
             $aForm['inputs']['submenu']['values'][] = array('key' => $sObject, 'value' => _t($sTitle));
 
 

+ 1 - 0
template/menu_main_submenu_empty.html

@@ -0,0 +1 @@
+__code__

+ 20 - 1
template/scripts/BxBaseMenuSubmenu.php

@@ -17,6 +17,7 @@ class BxBaseMenuSubmenu extends BxTemplMenu
     protected $_sObjectActionsMenu = false;
     protected $_sObjectActionsMenu = false;
     protected $_sObjectSubmenu = false;
     protected $_sObjectSubmenu = false;
     protected $_mixedMainMenuItemSelected = false;
     protected $_mixedMainMenuItemSelected = false;
+    protected $_sTemplateWrapper = 'menu_main_submenu_bar.html';
 
 
     protected $_sJsObject;
     protected $_sJsObject;
 
 
@@ -92,6 +93,24 @@ class BxBaseMenuSubmenu extends BxTemplMenu
         return $this->_aSocialSharingService;
         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.
      * Get menu code.
      * @return string
      * @return string
@@ -114,7 +133,7 @@ class BxBaseMenuSubmenu extends BxTemplMenu
             return '';
             return '';
 
 
         $this->_addJsCss();
         $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' : '',
             'class' => $oMenuSubmenu->getTemplateId() == BX_MENU_TEMPLATE_SUBMENU_MORE_AUTO ? 'bx-menu-more-auto' : '',
             'code' => $sCode
             'code' => $sCode
         ));
         ));

+ 1 - 1
template/scripts/BxBasePage.php

@@ -573,7 +573,7 @@ class BxBasePage extends BxDolPage
      */
      */
     protected function _setSubmenu ($aParams)
     protected function _setSubmenu ($aParams)
     {
     {
-        if(empty($this->_aObject['submenu']))
+        if(empty($this->_aObject['submenu']) || $this->_aObject['submenu'] == 'disabled')
             return;
             return;
 
 
         $oMenuSubmenu = BxDolMenu::getObjectInstance('sys_site_submenu');
         $oMenuSubmenu = BxDolMenu::getObjectInstance('sys_site_submenu');

+ 23 - 1
template/scripts/BxBaseServices.php

@@ -590,7 +590,29 @@ class BxBaseServices extends BxDol implements iBxDolProfileService
             'menu' => $oMenu
             '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
      * @page service Service Calls
      * @section bx_system_general System Services 
      * @section bx_system_general System Services