AntonLV 8 lat temu
rodzic
commit
f2d4c6fc64

+ 5 - 0
inc/classes/BxDolPage.php

@@ -215,6 +215,11 @@ class BxDolPage extends BxDolFactory implements iBxDolFactoryObject, iBxDolRepla
         return true;
     }
 
+    public function getType ()
+    {
+    	return (int)$this->_aObject['type_id'];
+    }
+
     /**
      * Add replace markers. Markers are replaced in raw, html, lang blocks and page title, description, keywords and block titles.
      * @param $a array of markers as key => value

+ 7 - 0
inc/classes/BxDolPageQuery.php

@@ -66,6 +66,13 @@ class BxDolPageQuery extends BxDolDb
         return $oDb->query("INSERT INTO `sys_pages_blocks` SET " . $oDb->arrayToSQL($aPageBlock));
     }
 
+    static public function getPageType($iId)
+    {
+        return BxDolDb::getInstance()->getRow("SELECT * FROM `sys_pages_types` WHERE `id`=:id LIMIT 1", array(
+        	'id' => $iId
+        ));
+    }
+
     public function getPageBlocks()
     {
         $aRet = array ();

+ 41 - 0
inc/classes/BxDolTemplate.php

@@ -22,11 +22,28 @@ define('BX_DOL_TEMPLATE_CHECK_IN_TMPL', 'tmpl');
 define('BX_DOL_COLOR_BG', 'bg');
 define('BX_DOL_COLOR_FT', 'ft');
 
+/**
+ * Page display levels.
+ * Note. Both levels may refer to the same HTML templates. 
+ * 
+ * 'System' level. It uses page's NameIndex and
+ * is mainly used for pages which aren't registered 
+ * in 'sys_objects_page' table. Also it's used 
+ * in 'Injections' engine.  
+ */
 define('BX_PAGE_DEFAULT', 0); ///< default, regular page
 define('BX_PAGE_CLEAR', 2); ///< clear page, without any headers and footers
 define('BX_PAGE_POPUP', 44); ///< popup page, without any headers and footers
 define('BX_PAGE_TRANSITION', 150); ///< transition page with redirect to display some msg, like 'please wait', without headers footers
 
+/**
+ * 'Builder based' level. It uses page's Type 
+ * from BxDolPage class and is used for pages 
+ * which are registered in 'sys_objects_page' table.
+ * Changeable in Studio -> Pages Builder -> Settings. 
+ */
+define('BX_PAGE_TYPE_DEFAULT', 1); ///< default, regular page
+define('BX_PAGE_TYPE_DEFAULT_WO_HF', 2); ///< clear page, without any headers and footers
 
 /**
  * Template engine.
@@ -417,6 +434,7 @@ class BxDolTemplate extends BxDolFactory implements iBxDolSingleton
         //--- Load page elements related static variables ---//
         $this->aPage = array(
             'name_index' => BX_PAGE_DEFAULT,
+        	'type' => BX_PAGE_TYPE_DEFAULT,
             'header' => '',
             'header_text' => '',
             'keywords' => array(),
@@ -495,6 +513,24 @@ class BxDolTemplate extends BxDolFactory implements iBxDolSingleton
         return isset($this->aPage['name_index']) ? (int)$this->aPage['name_index'] : 0;
     }
 
+	/**
+     * Set page type
+     * @param int $i page type
+     */
+    function setPageType($a)
+    {
+        $this->aPage['type'] = $a;
+    }
+
+    /**
+     * Get page type
+     * @return int $i page type
+     */
+    function getPageType()
+    {
+        return isset($this->aPage['type']) ? (int)$this->aPage['type'] : BX_PAGE_TYPE_DEFAULT;
+    }
+
     /**
      * Set page header
      * @param string $s page header
@@ -1180,6 +1216,11 @@ class BxDolTemplate extends BxDolFactory implements iBxDolSingleton
         if (isset($GLOBALS['bx_profiler'])) $GLOBALS['bx_profiler']->beginPage($sName);
 
         $sContent = $this->parseHtmlByName($sName, $aVariables, $this->_sKeyWrapperHtml, BX_DOL_TEMPLATE_CHECK_IN_BOTH);
+        if(empty($sContent)) {
+        	$aType = BxDolPageQuery::getPageType($this->getPageType());
+        	if(!empty($aType) && is_array($aType))
+        		$sContent = $this->parseHtmlByName($aType['template'], $aVariables, $this->_sKeyWrapperHtml, BX_DOL_TEMPLATE_CHECK_IN_BOTH);
+        }
         if(empty($sContent))
             $sContent = $this->parseHtmlByName('default.html', $aVariables, $this->_sKeyWrapperHtml, BX_DOL_TEMPLATE_CHECK_IN_BOTH);
 

Plik diff jest za duży
+ 0 - 0
install/sql/system.sql


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

@@ -542,6 +542,8 @@
 	<string name="_adm_bp_txt_page_meta_robots"><![CDATA[Meta Robots]]></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_type_id"><![CDATA[Type]]></string>
+	<string name="_adm_bp_dsc_page_type_id"><![CDATA[Page display type]]></string>
 	<string name="_adm_bp_txt_page_uri"><![CDATA[URL]]></string>
 	<string name="_adm_bp_txt_page_url"><![CDATA[Link]]></string>
 	<string name="_adm_bp_txt_page_visible_for_levels"><![CDATA[Select Levels]]></string>
@@ -2426,6 +2428,8 @@ If it is not enabled then please consider implement this optimization, since it
 	<string name="_sys_page_title_unsubscribe_news"><![CDATA[Unsubscribe From Site Newsletters]]></string>
 	<string name="_sys_page_title_unsubscribe_notifications"><![CDATA[Unsubscribe From Site Notifications]]></string>
 	<string name="_sys_page_title_studio_dashboard"><![CDATA[Studio Dashboard]]></string>
+	<string name="_sys_page_type_default"><![CDATA[Default]]></string>
+	<string name="_sys_page_type_default_wo_hf"><![CDATA[Without header/footer]]></string>
 	<string name="_sys_paginate_info"><![CDATA[{0}-{1}]]></string>
 	<string name="_sys_paginate_view_all"><![CDATA[View All]]></string>
 	<string name="_sys_please_select"><![CDATA[Please select...]]></string>

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

@@ -542,6 +542,8 @@
 	<string name="_adm_bp_txt_page_meta_robots"><![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_type_id"><![CDATA[Тип]]></string>
+	<string name="_adm_bp_dsc_page_type_id"><![CDATA[Способ отображения страницы]]></string>
 	<string name="_adm_bp_txt_page_uri"><![CDATA[URL]]></string>
 	<string name="_adm_bp_txt_page_url"><![CDATA[Ссылка]]></string>
 	<string name="_adm_bp_txt_page_visible_for_levels"><![CDATA[Выбрать уровни]]></string>
@@ -2425,6 +2427,8 @@
 	<string name="_sys_page_title_unsubscribe_news"><![CDATA[Отписаться от новостей сайта]]></string>
 	<string name="_sys_page_title_unsubscribe_notifications"><![CDATA[Отписаться от уведомлений сайта]]></string>
 	<string name="_sys_page_title_studio_dashboard"><![CDATA[Студия - Панель]]></string>
+	<string name="_sys_page_type_default"><![CDATA[Стандартная]]></string>
+	<string name="_sys_page_type_default_wo_hf"><![CDATA[Без заголовка и основания]]></string>
 	<string name="_sys_paginate_info"><![CDATA[{0}-{1}]]></string>
 	<string name="_sys_paginate_view_all"><![CDATA[Просмотреть все]]></string>
 	<string name="_sys_please_select"><![CDATA[Пожалуйста, выберите...]]></string>

+ 1 - 0
page.php

@@ -20,6 +20,7 @@ $oPage = BxDolPage::getObjectInstanceByURI();
 if ($oPage) {
 
     $oTemplate->setPageNameIndex (BX_PAGE_DEFAULT);
+    $oTemplate->setPageType ($oPage->getType());
     $oTemplate->setPageContent ('page_main_code', $oPage->getCode());
     $oTemplate->getPageCode();
 

+ 39 - 0
studio/classes/BxDolStudioBuilderPageQuery.php

@@ -81,6 +81,7 @@ class BxDolStudioBuilderPageQuery extends BxDolStudioPageQuery
                 `tp`.`module` AS `module`,
                 `tp`.`cover` AS `cover`,
                 `tp`.`cover_image` AS `cover_image`,
+                `tp`.`type_id` AS `type_id`,
                 `tp`.`layout_id` AS `layout_id`,
                 `tp`.`visible_for_levels` AS `visible_for_levels`,
                 `tp`.`visible_for_levels_editable` AS `visible_for_levels_editable`,
@@ -146,6 +147,44 @@ class BxDolStudioBuilderPageQuery extends BxDolStudioPageQuery
         return (int)$this->getOne($sSql) <= 0;
     }
 
+	function getTypes($aParams, &$aItems, $bReturnCount = true)
+    {
+        $aMethod = array('name' => 'getAll', 'params' => array(0 => 'query'));
+        $sSelectClause = $sJoinClause = $sWhereClause = $sGroupClause = $sOrderClause = $sLimitClause = "";
+
+        if(!isset($aParams['order']) || empty($aParams['order']))
+           $sOrderClause = "ORDER BY `tpt`.`id` ASC";
+
+        switch($aParams['type']) {
+            case 'by_id':
+                $aMethod['name'] = 'getRow';
+                $aMethod['params'][1] = array(
+                	'id' => $aParams['value']
+                );
+
+                $sWhereClause = "AND `tpt`.`id`=:id ";
+                break;
+
+            case 'all':
+                break;
+        }
+
+        $aMethod['params'][0] = "SELECT " . ($bReturnCount ? "SQL_CALC_FOUND_ROWS" : "") . "
+                `tpt`.`id` AS `id`,
+                `tpt`.`name` AS `name`,
+                `tpt`.`title` AS `title`,
+                `tpt`.`template` AS `template`,
+                `tpt`.`order` AS `order`" . $sSelectClause . "
+            FROM `sys_pages_types` AS `tpt` " . $sJoinClause . "
+            WHERE 1 " . $sWhereClause . " " . $sGroupClause . " " . $sOrderClause . " " . $sLimitClause;
+        $aItems = call_user_func_array(array($this, $aMethod['name']), $aMethod['params']);
+
+        if(!$bReturnCount)
+            return !empty($aItems);
+
+        return (int)$this->getOne("SELECT FOUND_ROWS()");
+    }
+
     function getLayouts($aParams, &$aItems, $bReturnCount = true)
     {
         $aMethod = array('name' => 'getAll', 'params' => array(0 => 'query'));

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

@@ -935,9 +935,25 @@ class BxBaseStudioBuilderPage extends BxDolStudioBuilderPage
 						'disabled' => 'disabled'
 					),
 				),
+				'type_id' => array(
+					'type' => 'select',
+					'name' => 'type_id',
+					'caption' => _t('_adm_bp_txt_page_type_id'),
+					'info' => _t('_adm_bp_dsc_page_type_id'),
+					'value' => isset($aPage['type_id']) ? $aPage['type_id'] : '',
+					'required' => '1',
+					'db' => array (
+                        'pass' => 'Int',
+                    ),
+				),
             )
         );
 
+        $aTypes = array();
+        $this->oDb->getTypes(array('type' => 'all'), $aTypes, false);
+        foreach($aTypes as $aType)
+        	$aForm['inputs']['type_id']['values'][] = array('key' => $aType['id'], 'value' => _t($aType['title']));
+
         if($bCreate) {
         	$sJsObject = $this->getPageJsObject();
 

Niektóre pliki nie zostały wyświetlone z powodu dużej ilości zmienionych plików