Forráskód Böngészése

#31 - Page block update.

AntonLV 11 éve
szülő
commit
c1706761b8

+ 13 - 12
modules/boonex/developer/template/bp_block_panel_top.html

@@ -1,12 +1,13 @@
-<div class="bx-std-pt-pages">__selector__</div>
-<div class="bx-std-pt-buttons">
-    <button class="bx-btn bx-def-margin-sec-left" onclick="javascript:__js_object__.performAction('__action_page_create__');"><bx_text:_adm_bp_btn_create_new /></button>
-    <bx_if:show_actions>
-        <button class="bx-btn bx-def-margin-sec-left" onclick="javascript:window.open('__url_view__','_blank');"><bx_text:_adm_bp_btn_view_page /></button>
-        <button class="bx-btn bx-def-margin-sec-left" onclick="javascript:__js_object__.performAction('__action_page_export__')"><bx_text:_bx_dev_bp_btn_page_export /></button>
-        <button class="bx-btn bx-def-margin-sec-left" onclick="javascript:__js_object__.performAction('__action_page_edit__')"><bx_text:_adm_bp_btn_settings /></button>
-        <button class="bx-btn bx-def-margin-sec-left" onclick="javascript:__js_object__.performAction('__action_block_create__')"><bx_text:_adm_bp_btn_add_block /></button>
-        <button class="bx-btn bx-def-margin-sec-left" onclick="javascript:__js_object__.deletePage();"><bx_text:_adm_bp_btn_delete /></button>
-    </bx_if:show_actions>
-</div>
-<div class="bx-std-cb"></div>
+<div class="bx-std-pt-cnt bx-def-padding-bottom bx-clearfix">
+	<div class="bx-std-pt-pages">__selector__</div>
+	<div class="bx-std-pt-buttons">
+	    <button class="bx-btn bx-def-margin-sec-left" onclick="javascript:__js_object__.performAction('__action_page_create__');"><bx_text:_adm_bp_btn_create_new /></button>
+	    <bx_if:show_actions>
+	        <button class="bx-btn bx-def-margin-sec-left" onclick="javascript:window.open('__url_view__','_blank');"><bx_text:_adm_bp_btn_view_page /></button>
+	        <button class="bx-btn bx-def-margin-sec-left" onclick="javascript:__js_object__.performAction('__action_page_export__')"><bx_text:_bx_dev_bp_btn_page_export /></button>
+	        <button class="bx-btn bx-def-margin-sec-left" onclick="javascript:__js_object__.performAction('__action_page_edit__')"><bx_text:_adm_bp_btn_settings /></button>
+	        <button class="bx-btn bx-def-margin-sec-left" onclick="javascript:__js_object__.performAction('__action_block_create__')"><bx_text:_adm_bp_btn_add_block /></button>
+	        <button class="bx-btn bx-def-margin-sec-left" onclick="javascript:__js_object__.deletePage();"><bx_text:_adm_bp_btn_delete /></button>
+	    </bx_if:show_actions>
+	</div>
+</div>

+ 1 - 1
studio/dashboard.php

@@ -23,7 +23,7 @@ $oTemplate->setPageHeader($oPage->getPageHeader());
 $oTemplate->setPageContent('page_caption_code', $oPage->getPageCaption());
 $oTemplate->setPageContent('page_attributes', $oPage->getPageAttributes());
 //$oTemplate->setPageContent('page_menu_code', $oPage->getPageMenu());
-$oTemplate->setPageContent('page_main_code', $oPage->getPageJsCode() . $oPage->getPageCode());
+$oTemplate->setPageContent('page_main_code', $oPage->getPageCode() . $oPage->getPageJsCode());
 $oTemplate->addCss($oPage->getPageCss());
 $oTemplate->addJs($oPage->getPageJs());
 $oTemplate->getPageCode();

+ 1 - 1
studio/polyglot.php

@@ -27,7 +27,7 @@ $oTemplate->setPageHeader($oPage->getPageHeader());
 $oTemplate->setPageContent('page_caption_code', $oPage->getPageCaption());
 $oTemplate->setPageContent('page_attributes', $oPage->getPageAttributes());
 $oTemplate->setPageContent('page_menu_code', $oPage->getPageMenu());
-$oTemplate->setPageContent('page_main_code', $oPage->getPageJsCode() . $oPage->getPageCode());
+$oTemplate->setPageContent('page_main_code', $oPage->getPageCode() . $oPage->getPageJsCode());
 $oTemplate->addCss($oPage->getPageCss());
 $oTemplate->addJs($oPage->getPageJs());
 $oTemplate->getPageCode();

+ 1 - 1
studio/template/block_panel_top.html

@@ -1 +1 @@
-<div class="bx-std-block-panel-top bx-def-padding-bottom">__content__</div>
+<div class="bx-std-block-panel-top">__content__</div>

+ 14 - 13
studio/template/bp_block_panel_top.html

@@ -1,13 +1,14 @@
-<div class="bx-std-pt-pages">__selector__</div>
-<div class="bx-std-pt-buttons">
-    <button class="bx-btn bx-def-margin-sec-left" onclick="javascript:__js_object__.performAction('__action_page_create__');"><bx_text:_adm_bp_btn_create_new /></button>
-    <bx_if:show_actions>
-        <button class="bx-btn bx-def-margin-sec-left" onclick="javascript:window.open('__url_view__','_blank');"><bx_text:_adm_bp_btn_view_page /></button>
-        <button class="bx-btn bx-def-margin-sec-left" onclick="javascript:__js_object__.performAction('__action_page_edit__')"><bx_text:_adm_bp_btn_settings /></button>
-        <button class="bx-btn bx-def-margin-sec-left" onclick="javascript:__js_object__.performAction('__action_block_create__')"><bx_text:_adm_bp_btn_add_block /></button>
-        <bx_if:can_delete>
-            <button class="bx-btn bx-def-margin-sec-left" onclick="javascript:__js_object__.deletePage();"><bx_text:_adm_bp_btn_delete /></button>
-        </bx_if:can_delete>
-    </bx_if:show_actions>
-</div>
-<div class="bx-std-cb"></div>
+<div class="bx-std-pt-cnt bx-def-padding-bottom bx-clearfix">
+	<div class="bx-std-pt-pages">__selector__</div>
+	<div class="bx-std-pt-buttons">
+	    <button class="bx-btn bx-def-margin-sec-left" onclick="javascript:__js_object__.performAction('__action_page_create__');"><bx_text:_adm_bp_btn_create_new /></button>
+	    <bx_if:show_actions>
+	        <button class="bx-btn bx-def-margin-sec-left" onclick="javascript:window.open('__url_view__','_blank');"><bx_text:_adm_bp_btn_view_page /></button>
+	        <button class="bx-btn bx-def-margin-sec-left" onclick="javascript:__js_object__.performAction('__action_page_edit__')"><bx_text:_adm_bp_btn_settings /></button>
+	        <button class="bx-btn bx-def-margin-sec-left" onclick="javascript:__js_object__.performAction('__action_block_create__')"><bx_text:_adm_bp_btn_add_block /></button>
+	        <bx_if:can_delete>
+	            <button class="bx-btn bx-def-margin-sec-left" onclick="javascript:__js_object__.deletePage();"><bx_text:_adm_bp_btn_delete /></button>
+	        </bx_if:can_delete>
+	    </bx_if:show_actions>
+	</div>
+</div>

+ 10 - 10
studio/template/builder_page.html

@@ -1,11 +1,11 @@
+<bx_include_auto:page_blocks.html />
 <script defer type="text/javascript">
-var __js_object__ = new BxDolStudioBuilderPage({
-    sActionUrl: '__action_url__',
-    sPageUrl: '__page_url__',
-    sType: '__type__',
-    sPage: '__page__',
-    oHtmlIds: __html_ids__,
-    oLanguages: __languahes__
-});
-</script>
-<bx_include_auto:page_blocks.html />
+	var __js_object__ = new BxDolStudioBuilderPage({
+	    sActionUrl: '__action_url__',
+	    sPageUrl: '__page_url__',
+	    sType: '__type__',
+	    sPage: '__page__',
+	    oHtmlIds: __html_ids__,
+	    oLanguages: __languahes__
+	});
+</script>

+ 3 - 2
studio/template/css/general.css

@@ -179,9 +179,10 @@ div.bx-std-bcap-action-div:first-child {
 }
 div.bx-std-block-panel-top {}
 div.bx-std-block-content {}
-div.bx-std-block-panel-bottom {
-	margin: 10px 0px 0px 0px;
+div.bx-std-block-content div.bx-grid-header {
+	margin-top: 0px;
 }
+div.bx-std-block-panel-bottom {}
 
 /**
  * Footer

+ 8 - 0
studio/template/css/store.css

@@ -1,3 +1,8 @@
+/*--- General style ---*/
+div.bx-std-block div.bx-std-block-panel-bottom ul.bx-menu-btns-hor {
+	text-align: left;
+}
+
 /*--- Product's Snippet style ---*/
 div.bx-std-products {
 	position: relative;
@@ -12,6 +17,9 @@ div.bx-std-product {
     float: left;
 	width: 100%;
 }
+div.bx-std-product-cnt {
+	position: relative;
+}
 div.bx-stdp-icon {
 	position: absolute;
 	top: 0px;

+ 6 - 8
studio/template/designer.html

@@ -1,9 +1,7 @@
+<bx_include_auto:page_blocks.html />
 <script defer type="text/javascript">
-<!--
-var __js_object__ = new BxDolStudioDesigner({
-    sActionUrl: '<bx_url_studio />designer.php',
-    sLogoPreviewId: '__logo_preview_id__'
-});
--->
-</script>
-<bx_include_auto:page_blocks.html />
+	var __js_object__ = new BxDolStudioDesigner({
+	    sActionUrl: '<bx_url_studio />designer.php',
+	    sLogoPreviewId: '__logo_preview_id__'
+	});
+</script>

+ 6 - 0
studio/template/page_block.html

@@ -0,0 +1,6 @@
+<div class="bx-std-block bx-def-margin-top-auto">
+    __caption__
+    __panel_top__
+    <div class="bx-std-block-content bx-clearfix">__items__</div>
+    __panel_bottom__
+</div>

+ 1 - 9
studio/template/page_blocks.html

@@ -1,11 +1,3 @@
 <bx_repeat:blocks>
-    <div class="bx-std-block">
-        __caption__
-        __panel_top__
-        <div class="bx-std-block-content">
-            __items__
-            <div class="bx-std-cb"></div>
-        </div>
-        __panel_bottom__
-    </div>
+    <bx_include_auto:page_block.html />
 </bx_repeat:blocks>

+ 5 - 5
studio/template/permissions.html

@@ -1,6 +1,6 @@
+<bx_include_auto:page_blocks.html />
 <script defer type="text/javascript">
-var __js_object__ = new BxDolStudioPermissions({
-    sActionUrl: '<bx_url_studio />permissions.php'
-});
-</script>
-<bx_include_auto:page_blocks.html />
+	var __js_object__ = new BxDolStudioPermissions({
+	    sActionUrl: '<bx_url_studio />permissions.php'
+	});
+</script>

+ 23 - 22
studio/template/scripts/BxBaseStudioPage.php

@@ -210,15 +210,23 @@ class BxBaseStudioPage extends BxDolStudioPage
      * Block Methods
      *
      */
+    public function getBlockCode($aBlock)
+    {
+    	return BxDolStudioTemplate::getInstance()->parseHtmlByName('page_block.html', array(
+    		'caption' => $this->getBlockCaption($aBlock),
+    		'panel_top' => $this->getBlockPanelTop($aBlock),
+    		'items' => !empty($aBlock['items']) ? $aBlock['items'] : '',
+    		'panel_bottom' => $this->getBlockPanelBottom($aBlock)
+    	));
+    }
+
     public function getBlockCaption($aBlock)
     {
-        if(empty($aBlock) || !is_array($aBlock))
+        if(empty($aBlock) || !is_array($aBlock) || (empty($aBlock['caption']) && empty($aBlock['actions'])))
             return '';
 
-        $oTemplate = BxDolStudioTemplate::getInstance();
-
         $aTmplActions = array();
-        if(isset($aBlock['actions']) && is_array($aBlock['actions']))
+        if(!empty($aBlock['actions']) && is_array($aBlock['actions']))
             foreach($aBlock['actions'] as $aAction) {
                 $sCaption = _t($aAction['caption']);
 
@@ -236,42 +244,35 @@ class BxBaseStudioPage extends BxDolStudioPage
                 );
             }
 
-        $aTmplVars = array(
+        return BxDolStudioTemplate::getInstance()->parseHtmlByName('block_caption.html', array(
             'caption' => _t($aBlock['caption']),
             'bx_if:show_actions' => array(
-                'condition' => count($aTmplActions) > 0,
+                'condition' => !empty($aTmplActions),
                 'content' => array(
                     'bx_repeat:actions' => $aTmplActions
                 )
             ),
-        );
-        return $oTemplate->parseHtmlByName('block_caption.html', $aTmplVars);
+        ));
     }
 
     public function getBlockPanelTop($aBlock)
     {
-        if(empty($aBlock) || !is_array($aBlock))
+        if(empty($aBlock) || !is_array($aBlock) || empty($aBlock['panel_top']))
             return '';
 
-        $oTemplate = BxDolStudioTemplate::getInstance();
-
-        $aTmplVars = array(
-            'content' => isset($aBlock['panel_top']) ? $aBlock['panel_top'] : ''
-        );
-        return $oTemplate->parseHtmlByName('block_panel_top.html', $aTmplVars);
+        return BxDolStudioTemplate::getInstance()->parseHtmlByName('block_panel_top.html', array(
+            'content' => $aBlock['panel_top']
+        ));
     }
 
     public function getBlockPanelBottom($aBlock)
     {
-        if(empty($aBlock) || !is_array($aBlock))
+        if(empty($aBlock) || !is_array($aBlock) || empty($aBlock['panel_bottom']))
             return '';
 
-        $oTemplate = BxDolStudioTemplate::getInstance();
-
-        $aTmplVars = array(
-            'content' => isset($aBlock['panel_bottom']) ? $aBlock['panel_bottom'] : ''
-        );
-        return $oTemplate->parseHtmlByName('block_panel_bottom.html', $aTmplVars);
+        return BxDolStudioTemplate::getInstance()->parseHtmlByName('block_panel_bottom.html', array(
+            'content' => $aBlock['panel_bottom']
+        ));
     }
 
     protected function getJsResult($sMessage, $bTranslate = true, $bRedirect = false, $sRedirect = '', $sOnResult = '')

+ 84 - 114
studio/template/scripts/BxBaseStudioStore.php

@@ -94,39 +94,30 @@ class BxBaseStudioStore extends BxDolStudioStore
         $sJsObject = $this->getPageJsObject();
         $oTemplate = BxDolStudioTemplate::getInstance();
 
-		$aTmplVars = array(
-            'js_object' => $sJsObject,
-            'bx_repeat:blocks' => array()
-        );
-
         $mixedResult = BxDolStudioInstallerUtils::getInstance()->getAccessObject(true)->doAuthorize();
         if($mixedResult === true) {
 	        $aProducts = $this->loadGoodies();
 
-	        $sActions = "";
+	        $sContent = "";
 	        foreach($aProducts as $aBlock) {
-	            $sItems = $oTemplate->parseHtmlByName('str_products.html', array(
+	            $aBlock['items'] = $oTemplate->parseHtmlByName('str_products.html', array(
 	                'list' => $this->displayProducts($aBlock['items']),
 	                'paginate' => ''
 	            ));
 
-	            $aTmplVars['bx_repeat:blocks'][] = array(
-	                'caption' => $this->getBlockCaption($aBlock),
-	                'panel_top' => '',
-	                'items' => $sItems,
-	                'panel_bottom' => ''
-	            );
+	            $sContent .= $this->getBlockCode($aBlock);
 	        }
         }
         else 
-        	$aTmplVars['bx_repeat:blocks'][] = array(
-                'caption' => $this->getBlockCaption(array('caption' => _t('_adm_block_cpt_goodies'), 'actions' => array())),
-                'panel_top' => '',
+        	$sContent = $this->getBlockCode(array(
+                'caption' => '_adm_block_cpt_goodies',
                 'items' => $mixedResult,
-                'panel_bottom' => ''
-            );
+            ));
 
-        return $oTemplate->parseHtmlByName('store.html', $aTmplVars);
+        return $oTemplate->parseHtmlByName('store.html', array(
+            'js_object' => $sJsObject,
+            'content' => $sContent
+        ));
     }
 
     protected function getFeaturedList($bWrapInBlock = true)
@@ -163,14 +154,10 @@ class BxBaseStudioStore extends BxDolStudioStore
 
         return $oTemplate->parseHtmlByName('store.html', array(
             'js_object' => $sJsObject,
-            'bx_repeat:blocks' => array(
-                array(
-                    'caption' => $this->getBlockCaption(array('caption' => _t('_adm_block_cpt_featured'), 'actions' => array())),
-                    'panel_top' => '',
-                    'items' => $sContent,
-                    'panel_bottom' => ''
-                )
-            )
+            'content' => $this->getBlockCode(array(
+				'caption' => '_adm_block_cpt_featured',
+				'items' => $sContent
+			))
         ));
     }
 
@@ -218,59 +205,45 @@ class BxBaseStudioStore extends BxDolStudioStore
 
         return $oTemplate->parseHtmlByName('store.html', array(
             'js_object' => $sJsObject,
-            'bx_repeat:blocks' => array(
-                array(
-                    'caption' => $this->getBlockCaption(array('caption' => _t('_adm_block_cpt_' . $sTag), 'actions' => array())),
-                    'panel_top' => '',
-                    'items' => $sContent,
-                    'panel_bottom' => ''
-                )
-            )
+            'content' => $this->getBlockCode(array(
+				'caption' => '_adm_block_cpt_' . $sTag,
+				'items' => $sContent,
+			))
         ));
     }
 
     protected function getPurchasesList()
     {
-        $sJsObject = $this->getPageJsObject();
-        $oTemplate = BxDolStudioTemplate::getInstance();
+    	$oTemplate = BxDolStudioTemplate::getInstance();
 
         $aProducts = $this->loadPurchases();
-
-        $aTmplVars = array(
-            'js_object' => $sJsObject,
-            'bx_repeat:blocks' => array(
-                array(
-                    'caption' => $this->getBlockCaption(array('caption' => _t('_adm_block_cpt_purchases'), 'actions' => array())),
-                    'panel_top' => '',
-                    'items' => $this->displayProducts($aProducts),
-                    'panel_bottom' => ''
-                )
-            )
-        );
-
-        return $oTemplate->parseHtmlByName('store.html', $aTmplVars);
+        return $oTemplate->parseHtmlByName('store.html', array(
+            'js_object' => $this->getPageJsObject(),
+            'content' => $this->getBlockCode(array(
+				'caption' => '_adm_block_cpt_purchases',
+				'items' => $oTemplate->parseHtmlByName('str_products.html', array(
+		            'list' => $this->displayProducts($aProducts),
+		            'paginate' => ''
+		        ))
+			))
+        ));
     }
 
     protected function getUpdatesList()
     {
-        $sJsObject = $this->getPageJsObject();
-        $oTemplate = BxDolStudioTemplate::getInstance();
+    	$oTemplate = BxDolStudioTemplate::getInstance();
 
         $aUpdates = $this->loadUpdates();
-
-        $aTmplVars = array(
-            'js_object' => $sJsObject,
-            'bx_repeat:blocks' => array(
-                array(
-                    'caption' => $this->getBlockCaption(array('caption' => _t('_adm_block_cpt_updates'), 'actions' => array())),
-                    'panel_top' => '',
-                    'items' => $this->displayUpdates($aUpdates),
-                    'panel_bottom' => '',
-                )
-            )
-        );
-
-        return $oTemplate->parseHtmlByName('store.html', $aTmplVars);
+        return $oTemplate->parseHtmlByName('store.html', array(
+            'js_object' => $this->getPageJsObject(),
+            'content' => $this->getBlockCode(array(
+				'caption' => '_adm_block_cpt_updates',
+				'items' => $oTemplate->parseHtmlByName('str_products.html', array(
+		            'list' => $this->displayUpdates($aUpdates),
+		            'paginate' => ''
+		        ))
+			))
+        ));
     }
 
     protected function getCheckoutList()
@@ -292,8 +265,10 @@ class BxBaseStudioStore extends BxDolStudioStore
         }
 
         $aVendors = $this->loadCheckout();
+        if(empty($aVendors))
+            return $this->getMessage('_adm_block_cpt_checkout', '_Empty');        
 
-        $aTmplVarsBlocks = array();
+        $sContent = '';
         foreach($aVendors as $sName => $aInfo) {
             $fTotal = 0;
             $sCurrency = '';
@@ -305,25 +280,25 @@ class BxBaseStudioStore extends BxDolStudioStore
                     $sCurrency = $aProduct['currency_sign'];
             }
 
-            $aActions = array(
-                array('name' => 'checkout-' . $sName, 'caption' => '_adm_action_cpt_checkout', 'url' => 'javascript:void(0)', 'onclick' => $sJsObject . ".checkoutCart('" . $sName . "', this);"),
-                array('name' => 'delete-all-' . $sName, 'caption' => '_adm_action_cpt_delete_all', 'url' => 'javascript:void(0)', 'onclick' => $sJsObject . ".deleteAllFromCart('" . $sName . "', this)")
-            );
-
-            $aTmplVarsBlocks[] = array(
-                'caption' => $this->getBlockCaption(array('caption' => _t('_adm_block_cpt_checkout_by_vendor_csign', $sName, $sCurrency, $fTotal), 'actions' => $aActions)),
-                'panel_top' => '',
-                'items' => $this->displayProducts($aInfo['products'], array('is_shopping_cart' => true, 'counts' => $aInfo['counts'])),
-                'panel_bottom' => ''
+            $aMenu = array(
+                array('id' => 'checkout-' . $sName, 'name' => 'checkout-' . $sName, 'link' => 'javascript:void(0)', 'onclick' => $sJsObject . ".checkoutCart('" . $sName . "', this);", 'target' => '_self', 'title' => '_adm_action_cpt_checkout', 'active' => 1),
+                array('id' => 'delete-all-' . $sName, 'name' => 'delete-all-' . $sName, 'link' => 'javascript:void(0)', 'onclick' => $sJsObject . ".deleteAllFromCart('" . $sName . "', this)", 'target' => '_self', 'title' => '_adm_action_cpt_delete_all', 'active' => 1)
             );
+	        $oMenu = new BxTemplMenuInteractive(array('template' => 'menu_buttons_hor.html', 'menu_id'=> 'timeline-view-all', 'menu_items' => $aMenu));
+
+	        $sContent .= $this->getBlockCode(array(
+                'caption' => _t('_adm_block_cpt_checkout_by_vendor_csign', $sName, $sCurrency, $fTotal),
+                'items' => $oTemplate->parseHtmlByName('str_products.html', array(
+		            'list' => $this->displayProducts($aInfo['products'], array('is_shopping_cart' => true, 'counts' => $aInfo['counts'])),
+		            'paginate' => ''
+		        )),
+                'panel_bottom' => $oMenu->getCode()
+            ));
         }
 
-        if(empty($aTmplVarsBlocks))
-            return $this->getMessage('_adm_block_cpt_checkout', '_Empty');
-
         return $oTemplate->parseHtmlByName('store.html', array(
             'js_object' => $sJsObject,
-            'bx_repeat:blocks' => $aTmplVarsBlocks
+            'content' => $sContent
         ));
     }
 
@@ -332,7 +307,7 @@ class BxBaseStudioStore extends BxDolStudioStore
         $sJsObject = $this->getPageJsObject();
         $oTemplate = BxDolStudioTemplate::getInstance();
 
-        $sModules = $sUpdates = "";
+        $sContent = $sModules = $sUpdates = "";
         $aProducts = $this->loadDownloaded();
 
         //--- Prepare modules.
@@ -397,44 +372,39 @@ class BxBaseStudioStore extends BxDolStudioStore
             ));
         }
 
-        $aTmplVars = array(
-            'js_object' => $sJsObject,
-            'bx_repeat:blocks' => array(
-                array(
-                    'caption' => $this->getBlockCaption(array('caption' => _t('_adm_block_cpt_downloaded_modules'), 'actions' => array())),
-                    'panel_top' => '',
-                    'items' => $sModules,
-                    'panel_bottom' => ''
-                )
-            )
-        );
+        if(!empty($sModules))
+        	$sContent .= $this->getBlockCode(array(
+				'caption' => '_adm_block_cpt_downloaded_modules',
+				'items' => $oTemplate->parseHtmlByName('str_products.html', array(
+		            'list' => $sModules,
+		            'paginate' => ''
+		        )),
+			));
 
         if(!empty($sUpdates))
-            $aTmplVars['bx_repeat:blocks'][] = array(
-                'caption' => $this->getBlockCaption(array('caption' => _t('_adm_block_cpt_downloaded_updates'), 'actions' => array())),
-                'panel_top' => '',
-                'items' => $sUpdates,
-                'panel_bottom' => ''
-            );
+            $sContent .= $this->getBlockCode(array(
+				'caption' => '_adm_block_cpt_downloaded_updates',
+				'items' => $oTemplate->parseHtmlByName('str_products.html', array(
+		            'list' => $sUpdates,
+		            'paginate' => ''
+		        )),
+			));
 
-        return $oTemplate->parseHtmlByName('store.html', $aTmplVars);
+        return $oTemplate->parseHtmlByName('store.html', array(
+            'js_object' => $sJsObject,
+        	'content' => $sContent
+        ));
     }
 
     protected function getMessage($sCaption, $sContent, $aActions = array())
     {
-        $sJsObject = $this->getPageJsObject();
-        $oTemplate = BxDolStudioTemplate::getInstance();
-
-        return $oTemplate->parseHtmlByName('store.html', array(
-            'js_object' => $sJsObject,
-            'bx_repeat:blocks' => array(
-                array(
-                    'caption' => $this->getBlockCaption(array('caption' => _t($sCaption), 'actions' => $aActions)),
-                	'panel_top' => '',
-                    'items' => MsgBox(_t($sContent)),
-                	'panel_bottom' => ''
-                )
-            )
+        return BxDolStudioTemplate::getInstance()->parseHtmlByName('store.html', array(
+            'js_object' => $this->getPageJsObject(),
+            'content' => $this->getBlockCode(array(
+				'caption' => $sCaption,
+        		'actions' => $aActions,
+				'items' => MsgBox(_t($sContent))
+			))
         ));
     }
 

+ 2 - 2
studio/template/store.html

@@ -1,6 +1,6 @@
+__content__
 <script defer type="text/javascript">
     var __js_object__ = new BxDolStudioStore({
         sActionUrl: '<bx_url_studio />store.php'
     });
-</script>
-<bx_include_auto:page_blocks.html />
+</script>

+ 38 - 36
studio/template/str_product_v1.html

@@ -1,37 +1,39 @@
-<div class="bx-std-product bx-def-widget-size-max-height bx-def-margin-bottom">
-    <div class="bx-stdp-icon bx-def-widget-size bx-def-round-corners-widget">
-        <a href="javascript:void(0)" onclick="javascript:__js_object__.info('__name__', this)">
-			<bx_if:icon>
-				<img class="bx-def-widget-size" src="<bx_icon_url:wi-empty.png />" />
-				<i class="sys-icon __icon__"></i>
-			</bx_if:icon>
-			<bx_if:image><img class="bx-def-widget-size" src="__icon_url__" /></bx_if:image>
-        </a>
-    </div>
-    <div class="bx-stdp-content bx-def-widget-size-min-height bx-def-widget-size-left-indent bx-def-margin-right">
-        <div class="bx-std-pc-title bx-def-margin-sec-top bx-def-font-large">
-            <a href="javascript:void(0)" onclick="javascript:__js_object__.info('__name__', this)">__title__</a>
-        </div>
-        <div class="bx-std-pc-vendor bx-def-margin-thd-top bx-def-font-small">__vendor__ &bull; <span class="bx-std-pc-version">__version__</span></div>
-        <div class="bx-std-pc-action bx-def-margin-thd-top">
-        	<div class="bx-std-pc-buttons bx-std-pcb-install bx-def-margin-thd-leftright-neg bx-clearfix" <bx_if:hide_install>style="display:none"</bx_if:hide_install>>
-        		<button class="bx-btn bx-btn-small bx-def-margin-thd-leftright" type="button" onclick="javascript:__js_object__.install('__dir__', this)">
-        			<bx_text:_adm_btn_install_submit />
-        		</button>
-        		<button class="bx-btn bx-btn-small bx-def-margin-thd-leftright" type="button" onclick="javascript:__js_object__.remove('__dir__', this)">
-        			<bx_text:_adm_btn_delete_submit />
-        		</button>
-        	</div>
-        	<div class="bx-std-pc-buttons bx-std-pcb-queued bx-def-margin-thd-leftright-neg bx-clearfix" <bx_if:hide_queued>style="display:none"</bx_if:hide_queued>>
-            	<button class="bx-btn bx-btn-small bx-def-margin-thd-leftright bx-btn-disabled" type="button">
-            		<bx_text:_adm_btn_queued_submit />
-            	</button>
-            </div>
-            <div class="bx-std-pc-buttons bx-std-pcb-installed bx-def-margin-thd-leftright-neg bx-clearfix" <bx_if:hide_installed>style="display:none"</bx_if:hide_installed>>
-            	<button class="bx-btn bx-btn-small bx-def-margin-thd-leftright bx-btn-disabled" type="button">
-            		<bx_text:_adm_btn_installed_submit />
-            	</button>
-            </div>
-        </div>
-    </div>
+<div class="bx-std-product">
+	<div class="bx-std-product-cnt bx-def-widget-size-max-height bx-def-margin-sec">
+	    <div class="bx-stdp-icon bx-def-widget-size bx-def-round-corners-widget">
+	        <a href="javascript:void(0)" onclick="javascript:__js_object__.info('__name__', this)">
+				<bx_if:icon>
+					<img class="bx-def-widget-size" src="<bx_icon_url:wi-empty.png />" />
+					<i class="sys-icon __icon__"></i>
+				</bx_if:icon>
+				<bx_if:image><img class="bx-def-widget-size" src="__icon_url__" /></bx_if:image>
+	        </a>
+	    </div>
+	    <div class="bx-stdp-content bx-def-widget-size-min-height bx-def-widget-size-left-indent">
+	        <div class="bx-std-pc-title bx-def-margin-sec-top bx-def-font-large">
+	            <a href="javascript:void(0)" onclick="javascript:__js_object__.info('__name__', this)">__title__</a>
+	        </div>
+	        <div class="bx-std-pc-vendor bx-def-margin-thd-top bx-def-font-small">__vendor__ &bull; <span class="bx-std-pc-version">__version__</span></div>
+	        <div class="bx-std-pc-action bx-def-margin-thd-top">
+	        	<div class="bx-std-pc-buttons bx-std-pcb-install bx-def-margin-thd-leftright-neg bx-clearfix" <bx_if:hide_install>style="display:none"</bx_if:hide_install>>
+	        		<button class="bx-btn bx-btn-small bx-def-margin-thd-leftright" type="button" onclick="javascript:__js_object__.install('__dir__', this)">
+	        			<bx_text:_adm_btn_install_submit />
+	        		</button>
+	        		<button class="bx-btn bx-btn-small bx-def-margin-thd-leftright" type="button" onclick="javascript:__js_object__.remove('__dir__', this)">
+	        			<bx_text:_adm_btn_delete_submit />
+	        		</button>
+	        	</div>
+	        	<div class="bx-std-pc-buttons bx-std-pcb-queued bx-def-margin-thd-leftright-neg bx-clearfix" <bx_if:hide_queued>style="display:none"</bx_if:hide_queued>>
+	            	<button class="bx-btn bx-btn-small bx-def-margin-thd-leftright bx-btn-disabled" type="button">
+	            		<bx_text:_adm_btn_queued_submit />
+	            	</button>
+	            </div>
+	            <div class="bx-std-pc-buttons bx-std-pcb-installed bx-def-margin-thd-leftright-neg bx-clearfix" <bx_if:hide_installed>style="display:none"</bx_if:hide_installed>>
+	            	<button class="bx-btn bx-btn-small bx-def-margin-thd-leftright bx-btn-disabled" type="button">
+	            		<bx_text:_adm_btn_installed_submit />
+	            	</button>
+	            </div>
+	        </div>
+	    </div>
+	</div>
 </div>

+ 50 - 48
studio/template/str_product_v2.html

@@ -1,49 +1,51 @@
-<div class="bx-std-product bx-def-widget-size-max-height bx-def-margin-bottom" id="bx-std-product-__id__">
-    <div class="bx-stdp-icon bx-def-widget-size bx-def-round-corners-widget">
-        <a href="javascript:void(0)" onclick="javascript:__js_object__.info('__name__', this)">
-            <bx_if:icon>
-				<img class="bx-def-widget-size" src="<bx_icon_url:wi-empty.png />" />
-				<i class="sys-icon __icon__"></i>
-			</bx_if:icon>
-			<bx_if:image><img class="bx-def-widget-size" src="__icon_url__" /></bx_if:image>
-        </a>
-    </div>
-    <div class="bx-stdp-content bx-def-widget-size-min-height bx-def-widget-size-left-indent bx-def-margin-right">
-        <div class="bx-std-pc-title bx-def-margin-sec-top bx-def-font-large">
-            <a href="javascript:void(0)" onclick="javascript:__js_object__.info('__name__', this)">__title__</a>
-        </div>
-        <bx_if:show_vendor_price>
-        	<div class="bx-std-pc-vendor bx-def-margin-thd-top bx-def-font-small">__vendor__ &bull; <span class="bx-std-pc-price">__price__ __discount__</span></div>
-        </bx_if:show_vendor_price>
-        <bx_if:show_count_price>
-        	<div class="bx-std-pc-count bx-def-margin-thd-top bx-def-font-small">__count__ <bx_text:_adm_str_txt_items_by /> <span class="bx-std-pc-price">__price__ __discount__</span></div>
-        </bx_if:show_count_price>
-        <div class="bx-std-pc-action bx-def-margin-thd-top bx-clearfix">
-        	<bx_if:show_purchase>
-            	<button class="bx-btn bx-btn-small bx-std-pc-purchase" type="button" onclick="javascript:__js_object__.addToCart('__vendor__', __id__, this)">
-            		<bx_text:_adm_btn_purchase_submit />
-            	</button>
-            </bx_if:show_purchase>
-        	<bx_if:show_download>
-            	<button class="bx-btn bx-btn-small bx-std-pc-download" type="button" onclick="javascript:__js_object__.getFile(__file_id__, this)">
-            		<bx_text:_adm_btn_download_submit />
-            	</button>
-            </bx_if:show_download>
-            <bx_if:show_download_disabled>
-            	<button class="bx-btn bx-btn-small bx-btn-disabled bx-std-pc-download" type="button" disabled="disabled">
-            		<bx_text:_adm_btn_download_submit />
-            	</button>
-            </bx_if:show_download_disabled>
-            <bx_if:show_queued_disabled>
-            	<button class="bx-btn bx-btn-small bx-btn-disabled bx-std-pc-queued" type="button" disabled="disabled">
-            		<bx_text:_adm_btn_queued_submit />
-            	</button>
-            </bx_if:show_queued_disabled>
-            <bx_if:show_delete>
-            	<button class="bx-btn bx-btn-small bx-std-pc-delete" type="button" onclick="javascript:__js_object__.deleteFromCart('__vendor__', __id__, this)">
-            		<bx_text:_adm_btn_delete_submit />
-            	</button>
-            </bx_if:show_delete>
-        </div>
-    </div>
+<div class="bx-std-product" id="bx-std-product-__id__">
+	<div class="bx-std-product-cnt bx-def-widget-size-max-height bx-def-margin-sec">
+	    <div class="bx-stdp-icon bx-def-widget-size bx-def-round-corners-widget">
+	        <a href="javascript:void(0)" onclick="javascript:__js_object__.info('__name__', this)">
+	            <bx_if:icon>
+					<img class="bx-def-widget-size" src="<bx_icon_url:wi-empty.png />" />
+					<i class="sys-icon __icon__"></i>
+				</bx_if:icon>
+				<bx_if:image><img class="bx-def-widget-size" src="__icon_url__" /></bx_if:image>
+	        </a>
+	    </div>
+	    <div class="bx-stdp-content bx-def-widget-size-min-height bx-def-widget-size-left-indent">
+	        <div class="bx-std-pc-title bx-def-margin-sec-top bx-def-font-large">
+	            <a href="javascript:void(0)" onclick="javascript:__js_object__.info('__name__', this)">__title__</a>
+	        </div>
+	        <bx_if:show_vendor_price>
+	        	<div class="bx-std-pc-vendor bx-def-margin-thd-top bx-def-font-small">__vendor__ &bull; <span class="bx-std-pc-price">__price__ __discount__</span></div>
+	        </bx_if:show_vendor_price>
+	        <bx_if:show_count_price>
+	        	<div class="bx-std-pc-count bx-def-margin-thd-top bx-def-font-small">__count__ <bx_text:_adm_str_txt_items_by /> <span class="bx-std-pc-price">__price__ __discount__</span></div>
+	        </bx_if:show_count_price>
+	        <div class="bx-std-pc-action bx-def-margin-thd-top bx-clearfix">
+	        	<bx_if:show_purchase>
+	            	<button class="bx-btn bx-btn-small bx-std-pc-purchase" type="button" onclick="javascript:__js_object__.addToCart('__vendor__', __id__, this)">
+	            		<bx_text:_adm_btn_purchase_submit />
+	            	</button>
+	            </bx_if:show_purchase>
+	        	<bx_if:show_download>
+	            	<button class="bx-btn bx-btn-small bx-std-pc-download" type="button" onclick="javascript:__js_object__.getFile(__file_id__, this)">
+	            		<bx_text:_adm_btn_download_submit />
+	            	</button>
+	            </bx_if:show_download>
+	            <bx_if:show_download_disabled>
+	            	<button class="bx-btn bx-btn-small bx-btn-disabled bx-std-pc-download" type="button" disabled="disabled">
+	            		<bx_text:_adm_btn_download_submit />
+	            	</button>
+	            </bx_if:show_download_disabled>
+	            <bx_if:show_queued_disabled>
+	            	<button class="bx-btn bx-btn-small bx-btn-disabled bx-std-pc-queued" type="button" disabled="disabled">
+	            		<bx_text:_adm_btn_queued_submit />
+	            	</button>
+	            </bx_if:show_queued_disabled>
+	            <bx_if:show_delete>
+	            	<button class="bx-btn bx-btn-small bx-std-pc-delete" type="button" onclick="javascript:__js_object__.deleteFromCart('__vendor__', __id__, this)">
+	            		<bx_text:_adm_btn_delete_submit />
+	            	</button>
+	            </bx_if:show_delete>
+	        </div>
+	    </div>
+	</div>
 </div>

+ 1 - 1
studio/template/str_products.html

@@ -1,4 +1,4 @@
-<div class="bx-std-products">
+<div class="bx-std-products bx-def-margin-sec-leftright-neg bx-clearfix">
     __list__
     <div class="bx-clear"></div>
     __paginate__

+ 23 - 21
studio/template/str_update_v1.html

@@ -1,22 +1,24 @@
-<div class="bx-std-product bx-stdp-update bx-def-widget-size-max-height bx-def-margin-bottom">
-    <div class="bx-stdp-icon bx-def-widget-size bx-def-round-corners-widget">
-        <a href="javascript:void(0)" onclick="javascript:__js_object__.info('__name__', this)">
-            <bx_if:icon>
-				<img class="bx-def-widget-size" src="<bx_icon_url:wi-empty.png />" />
-				<i class="sys-icon __icon__"></i>
-			</bx_if:icon>
-			<bx_if:image><img class="bx-def-widget-size" src="__icon_url__" /></bx_if:image>
-        </a>
-    </div>
-    <div class="bx-stdp-content bx-def-widget-size-min-height bx-def-widget-size-left-indent bx-def-margin-right">
-        <div class="bx-std-pc-title bx-def-margin-sec-top bx-def-font-large">
-            <a href="javascript:void(0)" onclick="javascript:__js_object__.info('__name__', this)">__title__</a>
-        </div>
-        <div class="bx-std-pc-vendor bx-def-margin-thd-top bx-def-font-small">__vendor__ &bull; <span class="bx-std-pc-versions">__versions__</span></div>
-        <div class="bx-std-pc-action bx-def-margin-thd-top bx-clearfix">
-        	<button class="bx-btn bx-btn-small" type="button" onclick="javascript:__js_object__.update('__dir__', this)">
-        		<bx_text:_adm_btn_install_submit />
-        	</button>
-        </div>
-    </div>
+<div class="bx-std-product bx-stdp-update">
+	<div class="bx-std-product-cnt bx-def-widget-size-max-height bx-def-margin-sec">
+	    <div class="bx-stdp-icon bx-def-widget-size bx-def-round-corners-widget">
+	        <a href="javascript:void(0)" onclick="javascript:__js_object__.info('__name__', this)">
+	            <bx_if:icon>
+					<img class="bx-def-widget-size" src="<bx_icon_url:wi-empty.png />" />
+					<i class="sys-icon __icon__"></i>
+				</bx_if:icon>
+				<bx_if:image><img class="bx-def-widget-size" src="__icon_url__" /></bx_if:image>
+	        </a>
+	    </div>
+	    <div class="bx-stdp-content bx-def-widget-size-min-height bx-def-widget-size-left-indent bx-def-margin-right">
+	        <div class="bx-std-pc-title bx-def-margin-sec-top bx-def-font-large">
+	            <a href="javascript:void(0)" onclick="javascript:__js_object__.info('__name__', this)">__title__</a>
+	        </div>
+	        <div class="bx-std-pc-vendor bx-def-margin-thd-top bx-def-font-small">__vendor__ &bull; <span class="bx-std-pc-versions">__versions__</span></div>
+	        <div class="bx-std-pc-action bx-def-margin-thd-top bx-clearfix">
+	        	<button class="bx-btn bx-btn-small" type="button" onclick="javascript:__js_object__.update('__dir__', this)">
+	        		<bx_text:_adm_btn_install_submit />
+	        	</button>
+	        </div>
+	    </div>
+	</div>
 </div>

+ 22 - 20
studio/template/str_update_v2.html

@@ -1,22 +1,24 @@
-<div class="bx-std-product bx-stdp-update bx-def-widget-size-max-height bx-def-margin-bottom" id="bx-std-product-__id__">
-    <div class="bx-stdp-icon bx-def-widget-size bx-def-round-corners-widget">
-        <a href="javascript:void(0)" onclick="javascript:__js_object__.info('__name__', this)">
-            <bx_if:icon>
-				<img class="bx-def-widget-size" src="<bx_icon_url:wi-empty.png />" />
-				<i class="sys-icon __icon__"></i>
-			</bx_if:icon>
-			<bx_if:image><img class="bx-def-widget-size" src="__icon_url__" /></bx_if:image>
-        </a>
-    </div>
-    <div class="bx-stdp-content bx-def-widget-size-min-height bx-def-widget-size-left-indent bx-def-margin-right">
-        <div class="bx-std-pc-title bx-def-margin-sec-top bx-def-font-large">
-            <a href="javascript:void(0)" onclick="javascript:__js_object__.info('__name__', this)">__title__</a>
-        </div>
-        <div class="bx-std-pc-vendor bx-def-margin-thd-top bx-def-font-small">__vendor__ &bull; <span class="bx-std-pc-versions">__versions__</span></div>
-        <div class="bx-std-pc-action bx-def-margin-thd-top bx-clearfix">
-        	<bx_if:show_download>
-            	<button class="bx-btn bx-btn-small bx-std-pc-download" type="button" onclick="javascript:__on_click__">__caption__</button>
-            </bx_if:show_download>
-        </div>
+<div class="bx-std-product bx-stdp-update" id="bx-std-product-__id__">
+	<div class="bx-std-product-cnt bx-def-widget-size-max-height bx-def-margin-sec">
+	    <div class="bx-stdp-icon bx-def-widget-size bx-def-round-corners-widget">
+	        <a href="javascript:void(0)" onclick="javascript:__js_object__.info('__name__', this)">
+	            <bx_if:icon>
+					<img class="bx-def-widget-size" src="<bx_icon_url:wi-empty.png />" />
+					<i class="sys-icon __icon__"></i>
+				</bx_if:icon>
+				<bx_if:image><img class="bx-def-widget-size" src="__icon_url__" /></bx_if:image>
+	        </a>
+	    </div>
+	    <div class="bx-stdp-content bx-def-widget-size-min-height bx-def-widget-size-left-indent bx-def-margin-right">
+	        <div class="bx-std-pc-title bx-def-margin-sec-top bx-def-font-large">
+	            <a href="javascript:void(0)" onclick="javascript:__js_object__.info('__name__', this)">__title__</a>
+	        </div>
+	        <div class="bx-std-pc-vendor bx-def-margin-thd-top bx-def-font-small">__vendor__ &bull; <span class="bx-std-pc-versions">__versions__</span></div>
+	        <div class="bx-std-pc-action bx-def-margin-thd-top bx-clearfix">
+	        	<bx_if:show_download>
+	            	<button class="bx-btn bx-btn-small bx-std-pc-download" type="button" onclick="javascript:__on_click__">__caption__</button>
+	            </bx_if:show_download>
+	        </div>
+	    </div>
     </div>
 </div>