Quellcode durchsuchen

#31 - Store fixes and improvements.

AntonLV vor 12 Jahren
Ursprung
Commit
26e331855b

+ 2 - 2
studio/classes/BxDolStudioInstallerUtils.php

@@ -52,7 +52,7 @@ class BxDolStudioInstallerUtils extends BxDolInstallerUtils implements iBxDolSin
     	return $this->performAction($sDirectory, $sOperation, $aParams);
     }
 
-    public function getModules()
+    public function getModules($bTitleAsKey = true)
     {
         $aModules = array();
         $oTemplate = BxDolStudioTemplate::getInstance();
@@ -76,7 +76,7 @@ class BxDolStudioInstallerUtils extends BxDolInstallerUtils implements iBxDolSin
                         if(empty($aModule))
                             continue;
 
-                        $aModules[$aModule['title']] = $aModule;
+                        $aModules[$bTitleAsKey ? $aModule['title'] : $aModule['name']] = $aModule;
                     }
                     closedir($rHandleModule);
                 }

+ 1 - 2
studio/classes/BxDolStudioStore.php

@@ -67,8 +67,7 @@ class BxDolStudioStore extends BxTemplStudioPage
 
                 case 'get-product':
                     $sModuleName = bx_process_input(bx_get('str_id'));
-                    $bDownloaded = (int)bx_get('str_downloaded');
-                    $aResult = $this->getProduct($sModuleName, $bDownloaded);
+                    $aResult = $this->getProduct($sModuleName);
                     break;
 
                 case 'get-update':

+ 1 - 2
studio/js/store.js

@@ -178,7 +178,7 @@ BxDolStudioStore.prototype.getFiles = function(iId, sType, oButton) {
 	);
 };
 
-BxDolStudioStore.prototype.info = function(sModuleName, iDownloaded, oLink) {
+BxDolStudioStore.prototype.info = function(sModuleName, oLink) {
 	var oDate = new Date();
 	var $this = this;
 	bx_loading(this.sIdPageContent, true);
@@ -188,7 +188,6 @@ BxDolStudioStore.prototype.info = function(sModuleName, iDownloaded, oLink) {
 		{
 			str_action: 'get-product',
 			str_id: sModuleName,
-			str_downloaded: iDownloaded,
 			_t:oDate.getTime()
 		},
 		function(oData) {

+ 30 - 5
studio/template/scripts/BxBaseStudioStore.php

@@ -421,7 +421,7 @@ class BxBaseStudioStore extends BxDolStudioStore
         ));
     }
 
-    protected function getProduct($sModuleName, $bDownloaded = false)
+    protected function getProduct($sModuleName)
     {
         $sJsObject = $this->getPageJsObject();
         $oTemplate = BxDolStudioTemplate::getInstance();
@@ -430,9 +430,15 @@ class BxBaseStudioStore extends BxDolStudioStore
         if(empty($aProduct) || !is_array($aProduct))
             return array('code' => 1, 'message' => (!empty($aProduct) ? $aProduct : _t('_adm_str_err_no_product_info')));
 
+		$aDownloaded = $this->getDownloadedModules();
+
         $bFree = (int)$aProduct['is_free'] == 1;
         $bPurchased = (int)$aProduct['is_purchased'] == 1;
+
         $bDownloadable = (int)$aProduct['is_file'] == 1;
+        $bDownloaded = in_array($aProduct['name'], $aDownloaded);
+        $bDownload = ($bFree || $bPurchased) && $bDownloadable;
+
         $bDiscount = !empty($aProduct['discount']);
         $bScreenshots = is_array($aProduct['screenshots']) && !empty($aProduct['screenshots']);
 
@@ -487,12 +493,16 @@ class BxBaseStudioStore extends BxDolStudioStore
                 )
             ),
             'bx_if:show_download' => array(
-                'condition' => ($bFree || $bPurchased) && $bDownloadable && !$bDownloaded,
+                'condition' => $bDownload && !$bDownloaded,
                 'content' => array(
                     'js_object' => $sJsObject,
                     'file_id' => $aProduct['file_id'],
                 )
-            )
+            ),
+            'bx_if:show_download_disabled' => array(
+				'condition' => $bDownload && $bDownloaded,
+				'content' => array()
+			),
         ));
 
         return array('code' => 0, 'message' => '', 'popup' => PopupBox('bx-std-str-popup-product', $aProduct['title'], $sContent, true), 'screenshots' => $iScreenshots);
@@ -552,13 +562,18 @@ class BxBaseStudioStore extends BxDolStudioStore
         $sJsObject = $this->getPageJsObject();
         $oTemplate = BxDolStudioTemplate::getInstance();
 
+        $aDownloaded = $this->getDownloadedModules();
         $bShoppingCart = isset($aParams['is_shopping_cart']) && $aParams['is_shopping_cart'];
 
         $sResult = '';
         foreach($aItems as $aItem) {
             $bFree = (int)$aItem['is_free'] == 1;
             $bPurchased = (int)$aItem['is_purchased'] == 1;
+
             $bDownloadable = (int)$aItem['is_file'] == 1;
+            $bDownloaded = in_array($aItem['name'], $aDownloaded);
+            $bDownload = !$bShoppingCart && ($bFree || $bPurchased) && $bDownloadable;
+
             $sPrice = !$bFree ? _t('_adm_str_txt_price_csign', $aItem['currency_sign'], $aItem['price']) : _t('_adm_str_txt_price_free');
             $sDiscount = !$bFree && !empty($aItem['discount']) ? _t('_adm_str_txt_discount_csign', $aItem['currency_sign'], $aItem['discount']['price']) : '';
 
@@ -604,12 +619,16 @@ class BxBaseStudioStore extends BxDolStudioStore
                     )
                 ),
                 'bx_if:show_download' => array(
-                    'condition' => !$bShoppingCart && ($bFree || $bPurchased) && $bDownloadable,
+                    'condition' => $bDownload && !$bDownloaded,
                     'content' => array(
                         'js_object' => $sJsObject,
-                        'file_id' => $aItem['file_id'],
+                        'file_id' => $aItem['file_id']
                     )
                 ),
+                'bx_if:show_download_disabled' => array(
+					'condition' => $bDownload && $bDownloaded,
+					'content' => array()
+				),
                 'bx_if:show_delete' => array(
                     'condition' => $bShoppingCart,
                     'content' => array(
@@ -669,6 +688,12 @@ class BxBaseStudioStore extends BxDolStudioStore
 
         return $sResult;
     }
+
+    private function getDownloadedModules()
+    {
+		bx_import('BxDolStudioInstallerUtils');
+        return array_keys(BxDolStudioInstallerUtils::getInstance()->getModules(false));
+    }
 }
 
 /** @} */

+ 2 - 2
studio/template/str_product_v1.html

@@ -1,6 +1,6 @@
 <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__', 1, this)">
+        <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>
@@ -10,7 +10,7 @@
     </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__', 1, this)">__title__</a>
+            <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">

+ 5 - 2
studio/template/str_product_v2.html

@@ -1,6 +1,6 @@
 <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__', 0, this)">
+        <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>
@@ -10,7 +10,7 @@
     </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__', 0, this)">__title__</a>
+            <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>
@@ -25,6 +25,9 @@
         	<bx_if:show_download>
             	<input class="bx-btn bx-btn-small bx-std-pc-download" type="button" value="<bx_text:_adm_btn_download_submit />" onclick="javascript:__js_object__.getFile(__file_id__, this)" />
             </bx_if:show_download>
+            <bx_if:show_download_disabled>
+            	<input class="bx-btn bx-btn-small bx-btn-disabled bx-std-pc-download" type="button" value="<bx_text:_adm_btn_download_submit />" disabled="disabled" />
+            </bx_if:show_download_disabled>
             <bx_if:show_delete>
             	<input class="bx-btn bx-btn-small bx-std-pc-delete" type="button" value="<bx_text:_adm_btn_delete_submit />" onclick="javascript:__js_object__.deleteFromCart('__vendor__', __id__, this)" />
             </bx_if:show_delete>

+ 3 - 0
studio/template/str_product_view.html

@@ -83,6 +83,9 @@
 		<bx_if:show_download>
 			<input class="bx-btn bx-def-margin-right" type="button" value="<bx_text:_adm_btn_download_submit />" onclick="javascript:__js_object__.getFile(__file_id__, this)" />
 		</bx_if:show_download>
+		<bx_if:show_download_disabled>
+			<input class="bx-btn bx-btn-disabled bx-def-margin-right" type="button" value="<bx_text:_adm_btn_download_submit />" disabled="disabled" />
+		</bx_if:show_download_disabled>
 		<input class="bx-btn bx-def-margin-right" type="button" value="<bx_text:_adm_btn_cancel_submit />" onclick="javascript:$('.bx-popup-applied:visible').dolPopupHide();" />
 		<div class="bx-std-cb"></div>
 	</div>

+ 2 - 2
studio/template/str_update_v1.html

@@ -1,6 +1,6 @@
 <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__', 1, this)">
+        <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>
@@ -10,7 +10,7 @@
     </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__', 1, this)">__title__</a>
+            <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">

+ 2 - 2
studio/template/str_update_v2.html

@@ -1,6 +1,6 @@
 <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__', 1, this)">
+        <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>
@@ -10,7 +10,7 @@
     </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__', 1, this)">__title__</a>
+            <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">