Răsfoiți Sursa

UNA Market like on Boonex site: Store.

AntonLV 10 ani în urmă
părinte
comite
8e3fe4ba94

+ 15 - 15
studio/classes/BxDolStudioCart.php

@@ -66,61 +66,61 @@ class BxDolStudioCart extends BxDol implements iBxDolSingleton
         return $aResult;
     }
 
-	public function exists($sVendor, $iItemId)
+	public function exists($iVendor, $iItemId)
 	{
 		$sDiv = BxDolStudioCart::$sPDiv;
 
 		$sCartItems = $this->getItems();
-		return strpos($sCartItems, $sVendor . $sDiv . $iItemId . $sDiv) !== false;
+		return strpos($sCartItems, $iVendor . $sDiv . $iItemId . $sDiv) !== false;
 	}
 
-    public function add($sVendor, $iItemId, $iItemCount)
+    public function add($iVendor, $iItemId, $iItemCount)
     {
         $sDiv = BxDolStudioCart::$sPDiv;
 
-        $sCartItem = $sVendor . $sDiv . $iItemId . $sDiv . $iItemCount;
+        $sCartItem = $iVendor . $sDiv . $iItemId . $sDiv . $iItemCount;
         $sCartItems = $this->getItems();
 
-        if(strpos($sCartItems, $sVendor . $sDiv . $iItemId . $sDiv) !== false) {
+        if(strpos($sCartItems, $iVendor . $sDiv . $iItemId . $sDiv) !== false) {
             if($this->bAllowAccumulate)
-                $sCartItems = preg_replace("'" . $sVendor . $sDiv . $iItemId . $sDiv . "([0-9])+'e", "'" . $sVendor . $sDiv . $iItemId . $sDiv ."' . (\\1 + " . $iItemCount . ")",  $sCartItems);
+                $sCartItems = preg_replace("'" . $iVendor . $sDiv . $iItemId . $sDiv . "([0-9])+'e", "'" . $iVendor . $sDiv . $iItemId . $sDiv ."' . (\\1 + " . $iItemCount . ")",  $sCartItems);
         } else
             $sCartItems = empty($sCartItems) ? $sCartItem : $sCartItems . BxDolStudioCart::$sIDiv . $sCartItem;
 
         $this->setItems($sCartItems);
     }
 
-    public function delete($sVendor, $iItemId = 0)
+    public function delete($iVendor, $iItemId = 0)
     {
-        $sPattern = "'" . $sVendor . (!empty($iItemId) ? "_" . $iItemId : "_[0-9]+") . "_[0-9]+:?'";
+        $sPattern = "'" . $iVendor . (!empty($iItemId) ? "_" . $iItemId : "_[0-9]+") . "_[0-9]+:?'";
 
         $sCartItems = $this->getItems();
         $sCartItems = trim(preg_replace($sPattern, "", $sCartItems), BxDolStudioCart::$sIDiv);
         $this->setItems($sCartItems);
     }
 
-    public function getCount($sVendor = '')
+    public function getCount($iVendor = '')
     {
-        if($sVendor == '') {
+        if($iVendor == '') {
             $sItems = $this->getItems();
             $aItems = $this->items2array($sItems);
             return count($aItems);
         }
 
         $aVendors = $this->parseByVendor();
-        if(!isset($aVendors[$sVendor]))
+        if(!isset($aVendors[$iVendor]))
             return 0;
 
-        return count($aVendors[$sVendor]);
+        return count($aVendors[$iVendor]);
     }
 
-    public function getByVendor($sVendor)
+    public function getByVendor($iVendor)
     {
         $aVendors = $this->parseByVendor();
-        if(!isset($aVendors[$sVendor]) || empty($aVendors[$sVendor]))
+        if(!isset($aVendors[$iVendor]) || empty($aVendors[$iVendor]))
             return array();
 
-        return $aVendors[$sVendor];
+        return $aVendors[$iVendor];
     }
 
     public function parseByVendor()

+ 12 - 12
studio/classes/BxDolStudioStore.php

@@ -86,40 +86,40 @@ class BxDolStudioStore extends BxTemplStudioPage
                     break;
 
                 case 'add-to-cart':
-                    $sVendor = bx_process_input(bx_get('str_vendor'));
+                    $iVendor = (int)bx_get('str_vendor');
                     $iItem = (int)bx_get('str_item');
                     $iItemCount = 1;
 
-                    if(empty($sVendor) || empty($iItem)) {
+                    if(empty($iVendor) || empty($iItem)) {
                         $aResult = array('code' => BX_DOL_STUDIO_IU_RC_FAILED, 'message' => _t('_adm_err_modules_cannot_add_to_cart'));
                         break;
                     }
 
-                    BxDolStudioCart::getInstance()->add($sVendor, $iItem, $iItemCount);
+                    BxDolStudioCart::getInstance()->add($iVendor, $iItem, $iItemCount);
                     $aResult = array('code' => BX_DOL_STUDIO_IU_RC_SUCCESS, 'message' => _t('_adm_msg_modules_success_added_to_cart'));
                     break;
 
                 case 'delete-from-cart':
-                    $sVendor = bx_process_input(bx_get('str_vendor'));
+                    $iVendor = (int)bx_get('str_vendor');
                     $iItem = (int)bx_get('str_item');
 
-                    if(empty($sVendor)) {
+                    if(empty($iVendor)) {
                         $aResult = array('code' => BX_DOL_STUDIO_IU_RC_FAILED, 'message' => _t('_adm_err_modules_cannot_delete_from_cart'));
                         break;
                     }
 
-                    BxDolStudioCart::getInstance()->delete($sVendor, $iItem);
+                    BxDolStudioCart::getInstance()->delete($iVendor, $iItem);
                     $aResult = array('code' => BX_DOL_STUDIO_IU_RC_SUCCESS, 'message' => '');
                     break;
 
                 case 'checkout-cart':
-                    $sVendor = bx_process_input(bx_get('str_vendor'));
-                    if(empty($sVendor)) {
+                    $iVendor = (int)bx_get('str_vendor');
+                    if(empty($iVendor)) {
                         $aResult = array('code' => BX_DOL_STUDIO_IU_RC_FAILED, 'message' => _t('_adm_err_modules_cannot_checkout_empty_vendor'));
                         break;
                     }
 
-                    $sLocation = $this->checkoutCart($sVendor);
+                    $sLocation = $this->checkoutCart($iVendor);
                     $aResult = array('code' => BX_DOL_STUDIO_IU_RC_SUCCESS, 'message' => '', 'redirect' => $sLocation);
                     break;
 
@@ -288,11 +288,11 @@ class BxDolStudioStore extends BxTemplStudioPage
         return BxDolStudioInstallerUtils::getInstance()->downloadUpdatePublic($sModuleName, $bAutoUpdate);
     }
 
-    private function checkoutCart($sVendor)
+    private function checkoutCart($iVendor)
     {
         $oCart = BxDolStudioCart::getInstance();
 
-        $aItems = $oCart->getByVendor($sVendor);
+        $aItems = $oCart->getByVendor($iVendor);
         if(empty($aItems) || !is_array($aItems))
             return false;
 
@@ -301,7 +301,7 @@ class BxDolStudioStore extends BxTemplStudioPage
             $aIds[] = $aItem['item_id'];
 
         $sSid = bx_site_hash();
-        return $this->sStoreDataUrlPublic . 'purchase/' . $sVendor . '?sid=' . $sSid . '&products=' . base64_encode(implode(',', $aIds));
+        return $this->sStoreDataUrlPublic . 'purchase/' . $iVendor . '?sid=' . $sSid . '&products=' . base64_encode(implode(',', $aIds));
     }
 }
 

+ 8 - 8
studio/js/store.js

@@ -15,7 +15,7 @@ function BxDolStudioStore(oOptions) {
     this.sIdPopupProduct = 'bx-std-str-popup-product';
 }
 
-BxDolStudioStore.prototype.addToCart = function(sVendor, iProduct, oButton) {
+BxDolStudioStore.prototype.addToCart = function(iVendor, iProduct, oButton) {
 	var oDate = new Date();
 	var $this = this;
 	bx_loading(this.sIdPageContent, true);
@@ -24,7 +24,7 @@ BxDolStudioStore.prototype.addToCart = function(sVendor, iProduct, oButton) {
 		this.sActionsUrl,
 		{
 			str_action: 'add-to-cart',
-			str_vendor: sVendor,
+			str_vendor: iVendor,
 			str_item: iProduct,
 			_t:oDate.getTime()
 		},
@@ -47,7 +47,7 @@ BxDolStudioStore.prototype.addToCart = function(sVendor, iProduct, oButton) {
 	);
 };
 
-BxDolStudioStore.prototype.deleteFromCart = function(sVendor, iProduct, oButton) {
+BxDolStudioStore.prototype.deleteFromCart = function(iVendor, iProduct, oButton) {
 	var oDate = new Date();
 	var $this = this;
 	bx_loading(this.sIdPageContent, true);
@@ -56,7 +56,7 @@ BxDolStudioStore.prototype.deleteFromCart = function(sVendor, iProduct, oButton)
 		this.sActionsUrl,
 		{
 			str_action: 'delete-from-cart',
-			str_vendor: sVendor,
+			str_vendor: iVendor,
 			str_item: iProduct,
 			_t:oDate.getTime()
 		},
@@ -97,11 +97,11 @@ BxDolStudioStore.prototype.deleteFromCart = function(sVendor, iProduct, oButton)
 	);
 };
 
-BxDolStudioStore.prototype.deleteAllFromCart = function(sVendor, oButton) {
-	this.deleteFromCart(sVendor, 0, oButton);
+BxDolStudioStore.prototype.deleteAllFromCart = function(iVendor, oButton) {
+	this.deleteFromCart(iVendor, 0, oButton);
 };
 
-BxDolStudioStore.prototype.checkoutCart = function(sVendor, oButton) {
+BxDolStudioStore.prototype.checkoutCart = function(iVendor, oButton) {
 	var oDate = new Date();
 	var $this = this;
 	bx_loading(this.sIdPageContent, true);
@@ -110,7 +110,7 @@ BxDolStudioStore.prototype.checkoutCart = function(sVendor, oButton) {
 		this.sActionsUrl,
 		{
 			str_action: 'checkout-cart',
-			str_vendor: sVendor,
+			str_vendor: iVendor,
 			_t:oDate.getTime()
 		},
 		function(oData) {

+ 18 - 15
studio/template/scripts/BxBaseStudioStore.php

@@ -280,25 +280,28 @@ class BxBaseStudioStore extends BxDolStudioStore
             return $this->getMessage('_adm_block_cpt_checkout', '_Empty');        
 
         $sContent = '';
-        foreach($aVendors as $sName => $aInfo) {
+        foreach($aVendors as $iVendor => $aInfo) {
             $fTotal = 0;
-            $sCurrency = '';
+            $sVendor = $sCurrency = '';
             foreach($aInfo['products'] as $aProduct) {
                 $iCount = isset($aInfo['counts'][$aProduct['id']]) ? (int)$aInfo['counts'][$aProduct['id']] : 1;
                 $fTotal += $iCount * $aProduct['price'];
 
-                if($sCurrency == '' && isset($aProduct['currency_sign']))
+                if($sVendor == '' && isset($aProduct['author_name']))
+                    $sVendor = $aProduct['author_name'];
+
+				if($sCurrency == '' && isset($aProduct['currency_sign']))
                     $sCurrency = $aProduct['currency_sign'];
             }
 
             $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)
+                array('id' => 'checkout-' . $iVendor, 'name' => 'checkout-' . $iVendor, 'link' => 'javascript:void(0)', 'onclick' => $sJsObject . ".checkoutCart(" . $iVendor . ", this);", 'target' => '_self', 'title' => '_adm_action_cpt_checkout', 'active' => 1),
+                array('id' => 'delete-all-' . $iVendor, 'name' => 'delete-all-' . $iVendor, 'link' => 'javascript:void(0)', 'onclick' => $sJsObject . ".deleteAllFromCart(" . $iVendor . ", 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));
+	        $oMenu = new BxTemplMenu(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),
+                'caption' => _t('_adm_block_cpt_checkout_by_vendor_csign', $sVendor, $sCurrency, $fTotal),
                 'items' => $oTemplate->parseHtmlByName('str_products.html', array(
 		            'list' => $this->displayProducts($aInfo['products'], array('is_shopping_cart' => true, 'counts' => $aInfo['counts'])),
 		            'paginate' => ''
@@ -434,7 +437,7 @@ class BxBaseStudioStore extends BxDolStudioStore
         $bPurchased = (int)$aProduct['is_purchased'] == 1;
         $bPurchase = !$bFree && !$bPurchased;
 
-		$bInCart = $bPurchase && BxDolStudioCart::getInstance()->exists($aProduct['author_name'], $aProduct['id']);
+		$bInCart = $bPurchase && BxDolStudioCart::getInstance()->exists($aProduct['author_id'], $aProduct['id']);
 
         $bDownloadable = (int)$aProduct['is_file'] == 1;
         $bDownloaded = array_key_exists($sModuleName, $aDownloaded);
@@ -491,7 +494,7 @@ class BxBaseStudioStore extends BxDolStudioStore
                 'content' => array(
                     'js_object' => $sJsObject,
                     'id' => $aProduct['id'],
-                    'vendor' => $aProduct['author_name'],
+                    'vendor_id' => $aProduct['author_id'],
                 )
             ),
             'bx_if:show_checkout' => array(
@@ -499,7 +502,7 @@ class BxBaseStudioStore extends BxDolStudioStore
                     'content' => array(
                         'js_object' => $sJsObject,
                         'id' => $aProduct['id'],
-                        'vendor' => $aProduct['author_name'],
+                        'vendor_id' => $aProduct['author_id'],
                 		'bx_if:show_as_hidden' => array(
                 			'condition' => !$bInCart,
                 			'content' => array()
@@ -565,7 +568,7 @@ class BxBaseStudioStore extends BxDolStudioStore
             $bPurchased = (int)$aItem['is_purchased'] == 1;
             $bPurchase = !$bShoppingCart && !$bFree && !$bPurchased;
 
-            $bInCart = $bPurchase && BxDolStudioCart::getInstance()->exists($aItem['author'], $aItem['id']);
+            $bInCart = $bPurchase && BxDolStudioCart::getInstance()->exists($aItem['author_id'], $aItem['id']);
 
             $bDownloadable = (int)$aItem['is_file'] == 1;
             $bDownloaded = in_array($aItem['name'], $aDownloaded);
@@ -595,7 +598,7 @@ class BxBaseStudioStore extends BxDolStudioStore
                 'bx_if:show_vendor_price' => array(
                     'condition' => !$bShoppingCart,
                     'content' => array(
-                        'vendor' => $aItem['author'],
+                        'vendor_name' => $aItem['author_name'],
                         'price' => $sPrice,
                         'discount' => $sDiscount,
                     )
@@ -613,7 +616,7 @@ class BxBaseStudioStore extends BxDolStudioStore
                     'content' => array(
                         'js_object' => $sJsObject,
                         'id' => $aItem['id'],
-                        'vendor' => $aItem['author']
+                        'vendor_id' => $aItem['author_id']
                     )
                 ),
                 'bx_if:show_checkout' => array(
@@ -621,7 +624,7 @@ class BxBaseStudioStore extends BxDolStudioStore
                     'content' => array(
                         'js_object' => $sJsObject,
                         'id' => $aItem['id'],
-                        'vendor' => $aItem['author'],
+                        'vendor_id' => $aItem['author_id'],
                 		'bx_if:show_as_hidden' => array(
                 			'condition' => !$bInCart,
                 			'content' => array()
@@ -648,7 +651,7 @@ class BxBaseStudioStore extends BxDolStudioStore
                     'content' => array(
                         'js_object' => $sJsObject,
                         'id' => $aItem['id'],
-                        'vendor' => $aItem['author']
+                        'vendor_id' => $aItem['author_id']
                     )
                 )
             ));

+ 4 - 4
studio/template/str_product_v2.html

@@ -14,19 +14,19 @@
 	            <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>
+	        	<div class="bx-std-pc-vendor bx-def-margin-thd-top bx-def-font-small">__vendor_name__ &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)">
+					<button class="bx-btn bx-btn-small bx-std-pc-purchase" type="button" onclick="javascript:__js_object__.addToCart(__vendor_id__, __id__, this)">
 	            		<bx_text:_adm_btn_purchase_submit />
 	            	</button>
 	            </bx_if:show_purchase>
 	            <bx_if:show_checkout>
-	           		<button class="bx-btn bx-btn-small bx-std-pc-checkout" type="button" onclick="javascript:__js_object__.checkoutCart('__vendor__', this)" <bx_if:show_as_hidden>style="display:none;"</bx_if:show_as_hidden>>
+	           		<button class="bx-btn bx-btn-small bx-std-pc-checkout" type="button" onclick="javascript:__js_object__.checkoutCart(__vendor_id__, this)" <bx_if:show_as_hidden>style="display:none;"</bx_if:show_as_hidden>>
 	            		<bx_text:_adm_btn_checkout_submit />
 	            	</button>
 	            </bx_if:show_checkout>
@@ -46,7 +46,7 @@
 	            	</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)">
+	            	<button class="bx-btn bx-btn-small bx-std-pc-delete" type="button" onclick="javascript:__js_object__.deleteFromCart(__vendor_id__, __id__, this)">
 	            		<bx_text:_adm_btn_delete_submit />
 	            	</button>
 	            </bx_if:show_delete>

+ 2 - 2
studio/template/str_product_view.html

@@ -78,10 +78,10 @@
 	</div>
 	<div class="bx-std-pv-actions bx-def-margin-top">
 		<bx_if:show_purchase>
-			<input class="bx-btn bx-def-margin-right" type="button" value="<bx_text:_adm_btn_purchase_submit />" onclick="javascript:__js_object__.addToCart('__vendor__', __id__, this)" />
+			<input class="bx-btn bx-def-margin-right" type="button" value="<bx_text:_adm_btn_purchase_submit />" onclick="javascript:__js_object__.addToCart(__vendor_id__, __id__, this)" />
 		</bx_if:show_purchase>
 		<bx_if:show_checkout>
-			<button class="bx-btn bx-def-margin-right" type="button" onclick="javascript:__js_object__.checkoutCart('__vendor__', this)" <bx_if:show_as_hidden>style="display:none;"</bx_if:show_as_hidden>>
+			<button class="bx-btn bx-def-margin-right" type="button" onclick="javascript:__js_object__.checkoutCart(__vendor_id__, this)" <bx_if:show_as_hidden>style="display:none;"</bx_if:show_as_hidden>>
 				<bx_text:_adm_btn_checkout_submit />
 			</button>
 		</bx_if:show_checkout>