AntonLV 8 năm trước cách đây
mục cha
commit
23d44964ea

+ 1 - 0
install/sql/system.sql

@@ -4108,6 +4108,7 @@ CREATE TABLE IF NOT EXISTS `sys_objects_page` (
   `cover_image` int(11) NOT NULL DEFAULT '0',
   `cover_image` int(11) NOT NULL DEFAULT '0',
   `type_id` int(11) NOT NULL DEFAULT '1',
   `type_id` int(11) NOT NULL DEFAULT '1',
   `layout_id` int(11) NOT NULL,
   `layout_id` int(11) NOT NULL,
+  `submenu` varchar(64) NOT NULL DEFAULT '',
   `visible_for_levels` int(11) NOT NULL DEFAULT '2147483647',
   `visible_for_levels` int(11) NOT NULL DEFAULT '2147483647',
   `visible_for_levels_editable` tinyint(4) NOT NULL DEFAULT '1',
   `visible_for_levels_editable` tinyint(4) NOT NULL DEFAULT '1',
   `url` varchar(255) NOT NULL,
   `url` varchar(255) NOT NULL,

+ 2 - 0
modules/boonex/english/data/langs/system/en.xml

@@ -540,6 +540,8 @@
 	<string name="_adm_bp_txt_page_meta_description"><![CDATA[Page (Meta) Description]]></string>
 	<string name="_adm_bp_txt_page_meta_description"><![CDATA[Page (Meta) Description]]></string>
 	<string name="_adm_bp_txt_page_meta_keywords"><![CDATA[Keywords]]></string>
 	<string name="_adm_bp_txt_page_meta_keywords"><![CDATA[Keywords]]></string>
 	<string name="_adm_bp_txt_page_meta_robots"><![CDATA[Meta Robots]]></string>
 	<string name="_adm_bp_txt_page_meta_robots"><![CDATA[Meta Robots]]></string>
+        <string name="_adm_bp_txt_page_submenu"><![CDATA[Submenu]]></string>
+	<string name="_adm_bp_dsc_page_submenu"><![CDATA[Page submenu can be selected here]]></string>
 	<string name="_adm_bp_txt_page_title"><![CDATA[Title]]></string>
 	<string name="_adm_bp_txt_page_title"><![CDATA[Title]]></string>
 	<string name="_adm_bp_txt_page_title_system"><![CDATA[System Name]]></string>
 	<string name="_adm_bp_txt_page_title_system"><![CDATA[System Name]]></string>
 	<string name="_adm_bp_txt_page_type_id"><![CDATA[Type]]></string>
 	<string name="_adm_bp_txt_page_type_id"><![CDATA[Type]]></string>

+ 2 - 0
modules/boonex/russian/data/langs/system/ru.xml

@@ -540,6 +540,8 @@
 	<string name="_adm_bp_txt_page_meta_description"><![CDATA[Мета-описание страницы]]></string>
 	<string name="_adm_bp_txt_page_meta_description"><![CDATA[Мета-описание страницы]]></string>
 	<string name="_adm_bp_txt_page_meta_keywords"><![CDATA[Ключевые слова]]></string>
 	<string name="_adm_bp_txt_page_meta_keywords"><![CDATA[Ключевые слова]]></string>
 	<string name="_adm_bp_txt_page_meta_robots"><![CDATA[Мета-роботы]]></string>
 	<string name="_adm_bp_txt_page_meta_robots"><![CDATA[Мета-роботы]]></string>
+        <string name="_adm_bp_txt_page_submenu"><![CDATA[Подменю]]></string>
+	<string name="_adm_bp_dsc_page_submenu"><![CDATA[В данном поле можно выбрать подменю страницы]]></string>
 	<string name="_adm_bp_txt_page_title"><![CDATA[Заголовок]]></string>
 	<string name="_adm_bp_txt_page_title"><![CDATA[Заголовок]]></string>
 	<string name="_adm_bp_txt_page_title_system"><![CDATA[Системное имя]]></string>
 	<string name="_adm_bp_txt_page_title_system"><![CDATA[Системное имя]]></string>
 	<string name="_adm_bp_txt_page_type_id"><![CDATA[Тип]]></string>
 	<string name="_adm_bp_txt_page_type_id"><![CDATA[Тип]]></string>

+ 6 - 0
studio/classes/BxDolStudioBuilderPageQuery.php

@@ -83,6 +83,7 @@ class BxDolStudioBuilderPageQuery extends BxDolStudioPageQuery
                 `tp`.`cover_image` AS `cover_image`,
                 `tp`.`cover_image` AS `cover_image`,
                 `tp`.`type_id` AS `type_id`,
                 `tp`.`type_id` AS `type_id`,
                 `tp`.`layout_id` AS `layout_id`,
                 `tp`.`layout_id` AS `layout_id`,
+                `tp`.`submenu` AS `submenu`,
                 `tp`.`visible_for_levels` AS `visible_for_levels`,
                 `tp`.`visible_for_levels` AS `visible_for_levels`,
                 `tp`.`visible_for_levels_editable` AS `visible_for_levels_editable`,
                 `tp`.`visible_for_levels_editable` AS `visible_for_levels_editable`,
                 `tp`.`url` AS `url`,
                 `tp`.`url` AS `url`,
@@ -184,6 +185,11 @@ class BxDolStudioBuilderPageQuery extends BxDolStudioPageQuery
         return (int)$this->getOne("SELECT FOUND_ROWS()");
         return (int)$this->getOne("SELECT FOUND_ROWS()");
     }
     }
 
 
+    function getSubmenus()
+    {
+        return BxDolDb::getInstance()->getPairs('SELECT `object`, `title` FROM `sys_objects_menu` WHERE `template_id` = 8', 'object', 'title');
+    }
+
     function getLayouts($aParams, &$aItems, $bReturnCount = true)
     function getLayouts($aParams, &$aItems, $bReturnCount = true)
     {
     {
         $aMethod = array('name' => 'getAll', 'params' => array(0 => 'query'));
         $aMethod = array('name' => 'getAll', 'params' => array(0 => 'query'));

+ 16 - 0
studio/template/scripts/BxBaseStudioBuilderPage.php

@@ -946,6 +946,17 @@ class BxBaseStudioBuilderPage extends BxDolStudioBuilderPage
                         'pass' => 'Int',
                         'pass' => 'Int',
                     ),
                     ),
 				),
 				),
+                'submenu' => array(
+                    'type' => 'select',
+                    'name' => 'submenu',
+                    'caption' => _t('_adm_bp_txt_page_submenu'),
+                    'info' => _t('_adm_bp_dsc_page_submenu'),
+                    'value' => isset($aPage['submenu']) ? $aPage['submenu'] : '',
+                    'required' => '0',
+                    'db' => array (
+                        'pass' => 'Xss',
+                    ),
+                ),
             )
             )
         );
         );
 
 
@@ -954,6 +965,11 @@ class BxBaseStudioBuilderPage extends BxDolStudioBuilderPage
         foreach($aTypes as $aType)
         foreach($aTypes as $aType)
         	$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();
+        $aForm['inputs']['submenu']['values'][] = array('key' => '', 'value' => _t('_sys_please_select'));
+        foreach ($aSubmenus as $sObject => $sTitle)
+            $aForm['inputs']['submenu']['values'][] = array('key' => $sObject, 'value' => _t($sTitle));
+
         if($bCreate) {
         if($bCreate) {
         	$sJsObject = $this->getPageJsObject();
         	$sJsObject = $this->getPageJsObject();
 
 

+ 13 - 0
template/scripts/BxBasePage.php

@@ -66,6 +66,8 @@ class BxBasePage extends BxDolPage
 
 
         $this->_selectMenu();
         $this->_selectMenu();
 
 
+        $this->_setSubmenu();
+
         if (!getParam('sys_page_cache_enable') || !$this->_aObject['cache_lifetime'])
         if (!getParam('sys_page_cache_enable') || !$this->_aObject['cache_lifetime'])
             return $this->_getPageCode();
             return $this->_getPageCode();
 
 
@@ -275,6 +277,17 @@ class BxBasePage extends BxDolPage
         BxDolMenu::setSelectedGlobal ($this->_aObject['module'], $this->_aObject['uri']);
         BxDolMenu::setSelectedGlobal ($this->_aObject['module'], $this->_aObject['uri']);
     }
     }
 
 
+    /**
+     * Set page submenu if it's specified
+     */
+    protected function _setSubmenu ()
+    {
+        if(empty($this->_aObject['submenu']))
+            return;
+
+        BxDolMenu::getObjectInstance('sys_site_submenu')->setObjectSubmenu($this->_aObject['submenu']);
+    }
+
     /**
     /**
      * Get content for 'raw' block type.
      * Get content for 'raw' block type.
      * @return string
      * @return string