Sfoglia il codice sorgente

Ticket #3716 - Pages: Add possibility to use custom class for page block.

AntonLV 4 anni fa
parent
commit
6eb31bbd66

+ 1 - 0
install/sql/system.sql

@@ -5356,6 +5356,7 @@ CREATE TABLE IF NOT EXISTS `sys_pages_blocks` (
   `title_system` varchar(255) NOT NULL,
   `title` varchar(255) NOT NULL,
   `designbox_id` int(11) NOT NULL DEFAULT '11',
+  `class` varchar(128) NOT NULL DEFAULT '',
   `submenu` varchar(64) NOT NULL DEFAULT '',
   `tabs` tinyint(4) NOT NULL DEFAULT '0',
   `async` int(11) NOT NULL DEFAULT '0',

+ 2 - 0
modules/boonex/developer/classes/BxDevBuilderPage.php

@@ -385,6 +385,8 @@ class BxDevBuilderPage extends BxTemplStudioBuilderPage
         foreach($aDBoxes as $aDBox)
             $oForm->aInputs['designbox_id']['values'][] = array('key' => $this->sSelectKeyPrefix . $aDBox['id'], 'value' => _t($aDBox['title']));
 
+        $oForm->aInputs['class']['value'] = $aBlock['class'];
+
         $aContentPlaceholders = $this->oDb->getContentPlaceholders();
         $oForm->aInputs['async']['values'] = array(
             array('key' => 0, 'value' => _t('_sys_no_async'))

+ 2 - 0
modules/boonex/developer/install/langs/en.xml

@@ -433,6 +433,8 @@
     <string name="_bx_dev_bp_txt_sys_block_designbox_id"><![CDATA[Layout]]></string>
     <string name="_bx_dev_bp_txt_block_designbox_id"><![CDATA[Layout]]></string>
     <string name="_bx_dev_bp_err_block_designbox_id"><![CDATA[You need to select a layout]]></string>
+    <string name="_bx_dev_bp_txt_sys_block_class"><![CDATA[CSS class]]></string>
+    <string name="_bx_dev_bp_txt_block_class"><![CDATA[CSS class]]></string>
     <string name="_bx_dev_bp_txt_sys_block_async"><![CDATA[Asynchronous Mode]]></string>
     <string name="_bx_dev_bp_txt_block_async"><![CDATA[Asynchronous Mode]]></string>
     <string name="_bx_dev_bp_txt_sys_block_submenu"><![CDATA[Block submenu]]></string>

+ 9 - 7
modules/boonex/developer/install/sql/install.sql

@@ -623,6 +623,7 @@ INSERT INTO `sys_form_inputs` (`object`, `module`, `name`, `value`, `values`, `c
 ('bx_developer_bp_block', @sName, 'title_system', '', '', 0, 'text', '_bx_dev_bp_txt_sys_block_title_system', '_bx_dev_bp_txt_block_title_system', '', 0, 0, 0, '', '', '', '', '', '', 'Xss', '', 0, 0),
 ('bx_developer_bp_block', @sName, 'title', '', '', 0, 'text', '_bx_dev_bp_txt_sys_block_title', '_bx_dev_bp_txt_block_title', '', 1, 0, 0, '', '', '', 'Length', 'a:2:{s:3:"min";i:6;s:3:"max";i:100;}', '_bx_dev_bp_err_block_title', 'Xss', '', 0, 0),
 ('bx_developer_bp_block', @sName, 'designbox_id', '', '', 0, 'select', '_bx_dev_bp_txt_sys_block_designbox_id', '_bx_dev_bp_txt_block_designbox_id', '', 1, 0, 0, '', '', '', 'Avail', '', '_bx_dev_bp_err_block_designbox_id', 'Xss', '', 0, 0),
+('bx_developer_bp_block', @sName, 'class', '', '', 0, 'text', '_bx_dev_bp_txt_sys_block_class', '_bx_dev_bp_txt_block_class', '', 0, 0, 0, '', '', '', '', '', '', 'Xss', '', 0, 0),
 
 ('bx_developer_bp_block', @sName, 'async', '', '', 0, 'select', '_bx_dev_bp_txt_sys_block_async', '_bx_dev_bp_txt_block_async', '', 0, 0, 0, '', '', '', '', '', '', 'Int', '', 0, 0),
 ('bx_developer_bp_block', @sName, 'submenu', '', '', 0, 'select', '_bx_dev_bp_txt_sys_block_submenu', '_bx_dev_bp_txt_block_submenu', '', 0, 0, 0, '', '', '', '', '', '', 'Xss', '', 0, 0),
@@ -652,13 +653,14 @@ INSERT INTO `sys_form_display_inputs` (`display_name`, `input_name`, `visible_fo
 ('bx_developer_bp_block_edit', 'hidden_on', 2147483647, 1, 10),
 ('bx_developer_bp_block_edit', 'visible_for', 2147483647, 1, 11),
 ('bx_developer_bp_block_edit', 'visible_for_levels', 2147483647, 1, 12),
-('bx_developer_bp_block_edit', 'deletable', 2147483647, 1, 13),
-('bx_developer_bp_block_edit', 'copyable', 2147483647, 1, 14),
-('bx_developer_bp_block_edit', 'active', 2147483647, 1, 15),
-('bx_developer_bp_block_edit', 'controls', 2147483647, 1, 16),
-('bx_developer_bp_block_edit', 'do_submit', 2147483647, 1, 17),
-('bx_developer_bp_block_edit', 'cancel', 2147483647, 1, 18),
-('bx_developer_bp_block_edit', 'delete', 2147483647, 1, 19);
+('bx_developer_bp_block_edit', 'class', 2147483647, 1, 13),
+('bx_developer_bp_block_edit', 'deletable', 2147483647, 1, 14),
+('bx_developer_bp_block_edit', 'copyable', 2147483647, 1, 15),
+('bx_developer_bp_block_edit', 'active', 2147483647, 1, 16),
+('bx_developer_bp_block_edit', 'controls', 2147483647, 1, 17),
+('bx_developer_bp_block_edit', 'do_submit', 2147483647, 1, 18),
+('bx_developer_bp_block_edit', 'cancel', 2147483647, 1, 19),
+('bx_developer_bp_block_edit', 'delete', 2147483647, 1, 20);
 
 --
 -- Polyglot -> Grid descriptors

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

@@ -550,6 +550,7 @@
 	<string name="_adm_bp_txt_block_content_service_module"><![CDATA[Module]]></string>
 	<string name="_adm_bp_txt_block_designbox"><![CDATA[Block Layout]]></string>
 	<string name="_adm_bp_txt_block_designbox_empty"><![CDATA[Select layout...]]></string>
+        <string name="_adm_bp_txt_block_class"><![CDATA[CSS Class]]></string>
         <string name="_adm_bp_txt_block_help"><![CDATA[Help]]></string>
 	<string name="_adm_bp_txt_block_hidden_on"><![CDATA[Hidden on]]></string>
 	<string name="_adm_bp_txt_block_hidden_on_phone"><![CDATA[phone]]></string>

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

@@ -433,6 +433,8 @@
     <string name="_bx_dev_bp_txt_sys_block_designbox_id"><![CDATA[Дизайн]]></string>
     <string name="_bx_dev_bp_txt_block_designbox_id"><![CDATA[Дизайн]]></string>
     <string name="_bx_dev_bp_err_block_designbox_id"><![CDATA[Нужно выбрать дизайн]]></string>
+    <string name="_bx_dev_bp_txt_sys_block_class"><![CDATA[CSS класс]]></string>
+    <string name="_bx_dev_bp_txt_block_class"><![CDATA[CSS класс]]></string>
     <string name="_bx_dev_bp_txt_sys_block_async"><![CDATA[Асинхронный режим]]></string>
     <string name="_bx_dev_bp_txt_block_async"><![CDATA[Асинхронный режим]]></string>
     <string name="_bx_dev_bp_txt_sys_block_submenu"><![CDATA[Подменю блока]]></string>

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

@@ -550,6 +550,7 @@
 	<string name="_adm_bp_txt_block_content_service_module"><![CDATA[Модуль]]></string>
 	<string name="_adm_bp_txt_block_designbox"><![CDATA[Отображение блока]]></string>
 	<string name="_adm_bp_txt_block_designbox_empty"><![CDATA[Выбрать отображение...]]></string>
+        <string name="_adm_bp_txt_block_class"><![CDATA[CSS класс]]></string>
         <string name="_adm_bp_txt_block_help"><![CDATA[Помощь]]></string>
 	<string name="_adm_bp_txt_block_hidden_on"><![CDATA[Скрыть на]]></string>
 	<string name="_adm_bp_txt_block_hidden_on_phone"><![CDATA[телефоне]]></string>

+ 1 - 0
studio/classes/BxDolStudioBuilderPageQuery.php

@@ -416,6 +416,7 @@ class BxDolStudioBuilderPageQuery extends BxDolStudioPageQuery
                 `tpb`.`title_system` AS `title_system`,
                 `tpb`.`title` AS `title`,
                 `tpb`.`designbox_id` AS `designbox_id`,
+                `tpb`.`class` AS `class`,
                 `tpb`.`async` AS `async`,
                 `tpb`.`cache_lifetime` AS `cache_lifetime`,
                 `tpb`.`submenu` AS `submenu`,

+ 12 - 1
studio/template/scripts/BxBaseStudioBuilderPage.php

@@ -571,7 +571,7 @@ class BxBaseStudioBuilderPage extends BxDolStudioBuilderPage
                 $aBlock['cell_id'] = 1;
                 $aBlock['module'] = $this->getBlockModule($aBlock);
                 $aBlock['title'] = $sTitleKey;
-				$aBlock['copyable'] = $sModule == BX_DOL_STUDIO_BP_SKELETONS ? 1 : 0;
+                $aBlock['copyable'] = $sModule == BX_DOL_STUDIO_BP_SKELETONS ? 1 : 0;
                 $aBlock['deletable'] = 1;
 
                 //--- Process Lang copy
@@ -795,6 +795,17 @@ class BxBaseStudioBuilderPage extends BxDolStudioBuilderPage
                         'pass' => 'Xss',
                     ),
                 ),
+                'class' => array(
+                    'type' => 'text',
+                    'name' => 'class',
+                    'caption' => _t('_adm_bp_txt_block_class'),
+                    'info' => '',
+                    'value' => $aBlock['class'],
+                    'required' => '0',
+                    'db' => array (
+                        'pass' => 'Xss',
+                    ),
+                ),
                 'cache_lifetime' => array(
                     'type' => 'text',
                     'name' => 'cache_lifetime',

+ 12 - 6
template/scripts/BxBasePage.php

@@ -458,15 +458,18 @@ class BxBasePage extends BxDolPage
 
                 $sContentWithBox = $this->_getBlockCodeWithCache($aBlock, $aBlock['async']);
 
-            	$sHiddenOn = '';
+            	$sClassAdd = '';
+                if(!empty($aBlock['class']))
+                    $sClassAdd .= ' ' . $aBlock['class'];
+
                 if(!empty($aBlock['hidden_on']))
-                    foreach($aHiddenOn as $iHiddenOn => $sClass)
+                    foreach($aHiddenOn as $iHiddenOn => $sHiddenOnClass)
                         if((int)$aBlock['hidden_on'] & $iHiddenOn)
-                            $sHiddenOn .= ' ' . $sClass;
+                            $sClassAdd .= ' ' . $sHiddenOnClass;
 
                 if ($sContentWithBox)
                     $sCell .= $this->_oTemplate->parseHtmlByName('designbox_container.html', array(
-                        'class_add' => $sHiddenOn,
+                        'class_add' => $sClassAdd,
                         'bx_if:show_html_id' => array(
                             'condition' => true,
                             'content' => array(
@@ -512,7 +515,7 @@ class BxBasePage extends BxDolPage
     }
 
 
-    protected function _getBlockCodeWithCache($aBlock, $iAsync = 0)
+    protected function _getBlockCodeWithCache(&$aBlock, $iAsync = 0)
     {
         if (!getParam('sys_pb_cache_enable') || !$aBlock['cache_lifetime'] || $iAsync || (isset($_SERVER['REQUEST_METHOD']) && $_SERVER['REQUEST_METHOD'] === 'POST')) {
             $sBlockCode = $this->_getBlockCode($aBlock, $iAsync);
@@ -549,7 +552,7 @@ class BxBasePage extends BxDolPage
      * Get block code.
      * @return string
      */
-    protected function _getBlockCode($aBlock, $iAsync = 0)
+    protected function _getBlockCode(&$aBlock, $iAsync = 0)
     {
         $sContentWithBox = '';
         $oFunctions = $this->_oTemplate->getTemplateFunctions();
@@ -611,6 +614,9 @@ class BxBasePage extends BxDolPage
                     $aParams[] = $mixedContent['buttons'];
                 else if($mixedMenu)
                     $aParams[] = (int)$aBlock['tabs'] == 1 ? true : array();
+
+                if(isset($mixedContent['class']))
+                    $aBlock['class'] = $mixedContent['class'];
             }
             else if(is_string($mixedContent) && !empty($mixedContent)) {
                 $iDesignboxId = $aBlock['designbox_id'];