فهرست منبع

Ticket #4558 - Build-in API support: 'Bento grid' page block type.

AntonLV 2 سال پیش
والد
کامیت
1f12efec39

+ 19 - 0
inc/classes/BxDolPageQuery.php

@@ -131,6 +131,25 @@ class BxDolPageQuery extends BxDolDb
         return $this->getRow($sQuery);
     }
 
+    public function getPageBlockData($iBlockId, $iContentId = 0, $sContentModule = '')
+    {
+        $aBindings = [
+            'block_id' => $iBlockId
+        ];
+
+        $sWhereClause = "";
+        if(!empty($iContentId) && !empty($sContentModule)) {
+            $aBindings = array_merge($aBindings, [
+                'content_id' => $iContentId,
+                'content_module' => $sContentModule
+            ]);
+
+            $sWhereClause .= " AND `content_id` = :content_id AND `content_module` = :content_module";
+        }
+
+        return $this->getOne("SELECT `data` FROM `sys_pages_blocks_data` WHERE `block_id` = :block_id", $aBindings);
+    }
+
     public function getPageBlockContent($iId)
     {
         $sQuery = $this->prepare("SELECT `content` FROM `sys_pages_blocks` WHERE `id` = ?", $iId);

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
install/sql/system.sql


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

@@ -2329,6 +2329,7 @@ If it is not enabled then please consider implement this optimization, since it
 	<string name="_sys_block_type_image"><![CDATA[image]]></string>
 	<string name="_sys_block_type_lang"><![CDATA[lang]]></string>
         <string name="_sys_block_type_creative"><![CDATA[creative]]></string>
+        <string name="_sys_block_type_bento_grid"><![CDATA[bento grid]]></string>
 	<string name="_sys_block_type_menu"><![CDATA[menu]]></string>
 	<string name="_sys_block_type_raw"><![CDATA[raw]]></string>
 	<string name="_sys_block_type_rss"><![CDATA[rss]]></string>

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

@@ -2304,6 +2304,7 @@
 	<string name="_sys_block_type_image"><![CDATA[изображение]]></string>
 	<string name="_sys_block_type_lang"><![CDATA[язык]]></string>
         <string name="_sys_block_type_creative"><![CDATA[креативный]]></string>
+        <string name="_sys_block_type_bento_grid"><![CDATA[сетка бенто]]></string>
 	<string name="_sys_block_type_menu"><![CDATA[меню]]></string>
 	<string name="_sys_block_type_raw"><![CDATA[без обработки]]></string>
 	<string name="_sys_block_type_rss"><![CDATA[rss]]></string>

+ 1 - 0
studio/classes/BxDolStudioBuilderPage.php

@@ -15,6 +15,7 @@ define('BX_DOL_STUDIO_BP_TYPE_DEFAULT', BX_DOL_STUDIO_MODULE_SYSTEM);
 define('BX_DOL_STUDIO_BP_BLOCK_RAW', 'raw');
 define('BX_DOL_STUDIO_BP_BLOCK_HTML', 'html');
 define('BX_DOL_STUDIO_BP_BLOCK_CREATIVE', 'creative');
+define('BX_DOL_STUDIO_BP_BLOCK_BENTO_GRID', 'bento_grid');
 define('BX_DOL_STUDIO_BP_BLOCK_RSS', 'rss');
 define('BX_DOL_STUDIO_BP_BLOCK_IMAGE', 'image');
 define('BX_DOL_STUDIO_BP_BLOCK_LANG', 'lang');

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

@@ -1520,6 +1520,10 @@ class BxBaseStudioBuilderPage extends BxDolStudioBuilderPage
             case BX_DOL_STUDIO_BP_BLOCK_CREATIVE:
             	$sResult = 'object-group';
             	break;
+            
+            case BX_DOL_STUDIO_BP_BLOCK_BENTO_GRID:
+                $sResult = 'fa-grip-horizontal';
+                break;
 
             case BX_DOL_STUDIO_BP_BLOCK_RSS:
             	$sResult = 'rss';
@@ -1570,6 +1574,7 @@ class BxBaseStudioBuilderPage extends BxDolStudioBuilderPage
         switch($aBlock['type']) {
             case BX_DOL_STUDIO_BP_BLOCK_CUSTOM:
             case BX_DOL_STUDIO_BP_BLOCK_RAW:
+            case BX_DOL_STUDIO_BP_BLOCK_BENTO_GRID:
                 $aFields = [
                     'content' => [
                         'type' => 'textarea',

+ 40 - 0
template/scripts/BxBasePage.php

@@ -1083,6 +1083,46 @@ class BxBasePage extends BxDolPage
         ]);
     }
 
+    /**
+     * Get content for 'bento_grid' block type.
+     * @return string
+     */
+    protected function _getBlockBentoGrid ($aBlock)
+    {
+        if(bx_is_api()) {
+            $iBlockId = (int)$aBlock['id'];
+
+            $iContentId = 0;
+            if(($mContentId = bx_get('id')) !== false) 
+                $iContentId = (int)$mContentId;
+
+            $sContentModule = '';
+            if(!empty($this->_aObject['module']) && !in_array($this->_aObject['module'], ['system', 'custom']))
+                $sContentModule = $this->_aObject['module'];
+
+            $bIsAllowedEdit = false;
+            if(!empty($sContentModule) && bx_is_srv($sContentModule, 'check_allowed_with_content'))
+                $bIsAllowedEdit = bx_srv($sContentModule, 'check_allowed_with_content', ['edit', $iContentId]);
+            else
+                $bIsAllowedEdit = isAdmin();
+
+            return [bx_api_get_block('bento_grid', [
+                'title' => _t($aBlock['title']), 
+                'content' => $this->_oQuery->getPageBlockData($iBlockId, $iContentId, $sContentModule)
+            ], ['ext' => [
+                'block_id' => $iBlockId,
+                'content_id' => $iContentId,
+                'content_module' => $sContentModule,
+                'is_allowed_edit' => $bIsAllowedEdit
+            ]])];
+        }
+
+        /**
+         * Isn't supported for now.
+         */
+        return '';
+    }
+
     /**
      * Get content for 'wiki' block type.
      * @return string

+ 5 - 0
template/scripts/BxBaseServicePages.php

@@ -105,6 +105,11 @@ class BxBaseServicePages extends BxDol
         }
         return $aRes;
     }
+
+    public function serviceSetPageBlockData($iBlockId, $aData, $iContentId = 0, $sContentModule = '')
+    {
+        
+    }
 }
 
 /** @} */

+ 2 - 0
template/scripts/BxBaseServices.php

@@ -49,6 +49,8 @@ class BxBaseServices extends BxDol implements iBxDolProfileService
             'Cmts' => 'BxBaseServices',
             'GetFooter' => 'BxBaseServices',
 
+            'SetPageBlockData' => 'BxBaseServicePages',
+
             'CreateAccountForm' => 'BxBaseServiceAccount',
             'AccountSettingsEmail' => 'BxBaseServiceAccount',
             'AccountSettingsPassword' => 'BxBaseServiceAccount',

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است