Browse Source

Shop basket progress

Vova Tkach 5 years ago
parent
commit
a641d3bfaa

+ 1 - 0
assets/template/header_html_file.go

@@ -21,6 +21,7 @@ var VarHeaderHtmlFile = []byte(`<!doctype html>
 		<link rel="stylesheet" href="{{$.System.PathThemeStyles}}?v=3">
 	</head>
 	<body class="fixed-top-bar">
+		<div id="sys-modal-shop-basket-placeholder"></div>
 		<div id="wrap">
 			<nav class="navbar navbar-expand-lg navbar-light bg-light">
 				<div class="container">

+ 59 - 1
assets/template/scripts_js_file.go

@@ -41,7 +41,7 @@ var VarScriptsJsFile = []byte(`(function(window, $) {
 
 		function ShopBasketObjectIsNotBlocked(object) {
 			if(!object) {
-				return false;
+				return true;
 			}
 			return !$(object).hasClass('click-blocked');
 		};
@@ -111,19 +111,73 @@ var VarScriptsJsFile = []byte(`(function(window, $) {
 
 					// ShopBasketSetNavBtnProductsCount(0);
 					// console.log('ShopOpenBasket', object);
+					// --------------------------------------------------
+					var html = '<div class="modal fade" id="sys-modal-shop-basket" tabindex="-1" role="dialog" aria-labelledby="sysModalShopBasketLabel" aria-hidden="true"> \
+						<div class="modal-dialog modal-dialog-centered" role="document"> \
+							<div class="modal-content"> \
+								<input type="hidden" name="action" value="index-user-update-profile"> \
+								<div class="modal-header"> \
+									<h5 class="modal-title" id="sysModalShopBasketLabel">Basket</h5> \
+									<button type="button" class="close" data-dismiss="modal" aria-label="Close"> \
+										<span aria-hidden="true">&times;</span> \
+									</button> \
+								</div> \
+								<div class="modal-body text-left"> \
+									<div class="form-group"> \
+										<input type="text" class="form-control" name="product-name" value="" placeholder="Type product name here..." readonly autocomplete="off"> \
+									</div> \
+									<div class="form-group" style="margin-bottom:0px;"> \
+										<div class="products-list"></div> \
+									</div> \
+								</div> \
+								<div class="modal-footer"> \
+									<button type="button" class="btn btn-secondary" data-dismiss="modal">Continue shopping</button> \
+								</div> \
+							</div> \
+						</div> \
+					</div>';
+					$('#sys-modal-shop-basket-placeholder').html(html);
+					$("#sys-modal-shop-basket").modal({
+						backdrop: 'static',
+						keyboard: true,
+						show: false,
+					});
+					$('#sys-modal-shop-basket').on('hidden.bs.modal', function(e) {
+						$('#sys-modal-shop-basket-placeholder').html('');
+					});
+					$("#sys-modal-shop-basket").modal('show');
+					// --------------------------------------------------
 
 					ShopBasketUnBlockObject(object);
 				}
 				return false;
 			},
 
+			ShopBasketProductAdd: function(object, product_id) {
+				if(ShopBasketObjectIsNotBlocked(object)) {
+					ShopBasketBlockObject(object);
+					ShopBasketAjaxCommand('plus', product_id, function(data) {
+						frontend.ShopBasketOpen();
+					}, function(xhr, status, error) {
+						// console.log('fail', xhr, status, error, product_id);
+						// Page reload
+					}, function() {
+						ShopBasketAjaxUpdateCount();
+						ShopBasketUnBlockObject(object);
+					});
+				}
+				return false;
+			},
+
 			ShopBasketProductPlus: function(object, product_id) {
 				if(ShopBasketObjectIsNotBlocked(object)) {
 					ShopBasketBlockObject(object);
 					ShopBasketAjaxCommand('plus', product_id, function(data) {
 						// console.log('success', data, product_id);
+						// Update popup content
 					}, function(xhr, status, error) {
 						// console.log('fail', xhr, status, error, product_id);
+						// Page reload
 					}, function() {
 						ShopBasketAjaxUpdateCount();
 						ShopBasketUnBlockObject(object);
@@ -137,8 +191,10 @@ var VarScriptsJsFile = []byte(`(function(window, $) {
 					ShopBasketBlockObject(object);
 					ShopBasketAjaxCommand('minus', product_id, function(data) {
 						// console.log('success', data, product_id);
+						// Update popup content
 					}, function(xhr, status, error) {
 						// console.log('fail', xhr, status, error, product_id);
+						// Page reload
 					}, function() {
 						ShopBasketAjaxUpdateCount();
 						ShopBasketUnBlockObject(object);
@@ -152,8 +208,10 @@ var VarScriptsJsFile = []byte(`(function(window, $) {
 					ShopBasketBlockObject(object);
 					ShopBasketAjaxCommand('remove', product_id, function(data) {
 						// console.log('success', data, product_id);
+						// Update popup content
 					}, function(xhr, status, error) {
 						// console.log('fail', xhr, status, error, product_id);
+						// Page reload
 					}, function() {
 						ShopBasketAjaxUpdateCount();
 						ShopBasketUnBlockObject(object);

+ 1 - 1
assets/template/shop_category_html_file.go

@@ -28,7 +28,7 @@ var VarShopCategoryHtmlFile = []byte(`{{template "header.html" .}}
 						<div class="card-text">{{.Briefly}}</div>
 					</div>
 					<div class="card-footer">
-						<span class="price">{{.PriceFormat "%.2f"}} {{.Currency.Code}}</span><a href="{{.Permalink}}" class="btn btn-success" onclick="window&&window.frontend&&frontend.ShopBasketProductPlus(this, {{.Id}});return false;">Buy</a>
+						<span class="price">{{.PriceFormat "%.2f"}} {{.Currency.Code}}</span><a href="{{.Permalink}}" class="btn btn-success" onclick="window&&window.frontend&&frontend.ShopBasketProductAdd(this, {{.Id}});return false;">Buy</a>
 					</div>
 				</div>
 			{{end}}

+ 1 - 1
assets/template/shop_html_file.go

@@ -28,7 +28,7 @@ var VarShopHtmlFile = []byte(`{{template "header.html" .}}
 						<div class="card-text">{{.Briefly}}</div>
 					</div>
 					<div class="card-footer">
-						<span class="price">{{.PriceFormat "%.2f"}} {{.Currency.Code}}</span><a href="{{.Permalink}}" class="btn btn-success" onclick="window&&window.frontend&&frontend.ShopBasketProductPlus(this, {{.Id}});return false;">Buy</a>
+						<span class="price">{{.PriceFormat "%.2f"}} {{.Currency.Code}}</span><a href="{{.Permalink}}" class="btn btn-success" onclick="window&&window.frontend&&frontend.ShopBasketProductAdd(this, {{.Id}});return false;">Buy</a>
 					</div>
 				</div>
 			{{end}}

+ 2 - 2
assets/template/shop_product_html_file.go

@@ -49,7 +49,7 @@ var VarShopProductHtmlFile = []byte(`{{template "header.html" .}}
 						{{end}}
 						<div class="card mt-3{{if not $.Data.Shop.Product.HaveVariations}} mt-sm-3 mt-md-0 mt-lg-0{{end}}">
 							<div class="card-body">
-								<h3 class="price mb-0 mr-4">{{$.Data.Shop.Product.PriceFormat "%.2f"}} {{$.Data.Shop.Product.Currency.Code}}</h3><a href="" class="btn btn-success btn-buy" onclick="window&&window.frontend&&frontend.ShopBasketProductPlus(this, {{$.Data.Shop.Product.Id}});return false;">Buy</a>
+								<h3 class="price mb-0 mr-4">{{$.Data.Shop.Product.PriceFormat "%.2f"}} {{$.Data.Shop.Product.Currency.Code}}</h3><a href="" class="btn btn-success btn-buy" onclick="window&&window.frontend&&frontend.ShopBasketProductAdd(this, {{$.Data.Shop.Product.Id}});return false;">Buy</a>
 							</div>
 						</div>
 						<div class="card mt-3">
@@ -117,7 +117,7 @@ var VarShopProductHtmlFile = []byte(`{{template "header.html" .}}
 							</div>
 							<div class="card mt-3">
 								<div class="card-body">
-									<h3 class="price mb-0 mr-4">{{$.Data.Shop.Product.PriceFormat "%.2f"}} {{$.Data.Shop.Product.Currency.Code}}</h3><a href="" class="btn btn-success btn-buy" onclick="window&&window.frontend&&frontend.ShopBasketProductPlus(this, {{$.Data.Shop.Product.Id}});return false;">Buy</a>
+									<h3 class="price mb-0 mr-4">{{$.Data.Shop.Product.PriceFormat "%.2f"}} {{$.Data.Shop.Product.Currency.Code}}</h3><a href="" class="btn btn-success btn-buy" onclick="window&&window.frontend&&frontend.ShopBasketProductAdd(this, {{$.Data.Shop.Product.Id}});return false;">Buy</a>
 								</div>
 							</div>
 						</div>

+ 1 - 0
hosts/localhost/template/header.html

@@ -19,6 +19,7 @@
 		<link rel="stylesheet" href="{{$.System.PathThemeStyles}}?v=3">
 	</head>
 	<body class="fixed-top-bar">
+		<div id="sys-modal-shop-basket-placeholder"></div>
 		<div id="wrap">
 			<nav class="navbar navbar-expand-lg navbar-light bg-light">
 				<div class="container">

+ 59 - 1
hosts/localhost/template/scripts.js

@@ -39,7 +39,7 @@
 
 		function ShopBasketObjectIsNotBlocked(object) {
 			if(!object) {
-				return false;
+				return true;
 			}
 			return !$(object).hasClass('click-blocked');
 		};
@@ -109,19 +109,73 @@
 
 					// ShopBasketSetNavBtnProductsCount(0);
 					// console.log('ShopOpenBasket', object);
+					// --------------------------------------------------
+					var html = '<div class="modal fade" id="sys-modal-shop-basket" tabindex="-1" role="dialog" aria-labelledby="sysModalShopBasketLabel" aria-hidden="true"> \
+						<div class="modal-dialog modal-dialog-centered" role="document"> \
+							<div class="modal-content"> \
+								<input type="hidden" name="action" value="index-user-update-profile"> \
+								<div class="modal-header"> \
+									<h5 class="modal-title" id="sysModalShopBasketLabel">Basket</h5> \
+									<button type="button" class="close" data-dismiss="modal" aria-label="Close"> \
+										<span aria-hidden="true">&times;</span> \
+									</button> \
+								</div> \
+								<div class="modal-body text-left"> \
+									<div class="form-group"> \
+										<input type="text" class="form-control" name="product-name" value="" placeholder="Type product name here..." readonly autocomplete="off"> \
+									</div> \
+									<div class="form-group" style="margin-bottom:0px;"> \
+										<div class="products-list"></div> \
+									</div> \
+								</div> \
+								<div class="modal-footer"> \
+									<button type="button" class="btn btn-secondary" data-dismiss="modal">Continue shopping</button> \
+								</div> \
+							</div> \
+						</div> \
+					</div>';
+					$('#sys-modal-shop-basket-placeholder').html(html);
+					$("#sys-modal-shop-basket").modal({
+						backdrop: 'static',
+						keyboard: true,
+						show: false,
+					});
+					$('#sys-modal-shop-basket').on('hidden.bs.modal', function(e) {
+						$('#sys-modal-shop-basket-placeholder').html('');
+					});
+					$("#sys-modal-shop-basket").modal('show');
+					// --------------------------------------------------
 
 					ShopBasketUnBlockObject(object);
 				}
 				return false;
 			},
 
+			ShopBasketProductAdd: function(object, product_id) {
+				if(ShopBasketObjectIsNotBlocked(object)) {
+					ShopBasketBlockObject(object);
+					ShopBasketAjaxCommand('plus', product_id, function(data) {
+						frontend.ShopBasketOpen();
+					}, function(xhr, status, error) {
+						// console.log('fail', xhr, status, error, product_id);
+						// Page reload
+					}, function() {
+						ShopBasketAjaxUpdateCount();
+						ShopBasketUnBlockObject(object);
+					});
+				}
+				return false;
+			},
+
 			ShopBasketProductPlus: function(object, product_id) {
 				if(ShopBasketObjectIsNotBlocked(object)) {
 					ShopBasketBlockObject(object);
 					ShopBasketAjaxCommand('plus', product_id, function(data) {
 						// console.log('success', data, product_id);
+						// Update popup content
 					}, function(xhr, status, error) {
 						// console.log('fail', xhr, status, error, product_id);
+						// Page reload
 					}, function() {
 						ShopBasketAjaxUpdateCount();
 						ShopBasketUnBlockObject(object);
@@ -135,8 +189,10 @@
 					ShopBasketBlockObject(object);
 					ShopBasketAjaxCommand('minus', product_id, function(data) {
 						// console.log('success', data, product_id);
+						// Update popup content
 					}, function(xhr, status, error) {
 						// console.log('fail', xhr, status, error, product_id);
+						// Page reload
 					}, function() {
 						ShopBasketAjaxUpdateCount();
 						ShopBasketUnBlockObject(object);
@@ -150,8 +206,10 @@
 					ShopBasketBlockObject(object);
 					ShopBasketAjaxCommand('remove', product_id, function(data) {
 						// console.log('success', data, product_id);
+						// Update popup content
 					}, function(xhr, status, error) {
 						// console.log('fail', xhr, status, error, product_id);
+						// Page reload
 					}, function() {
 						ShopBasketAjaxUpdateCount();
 						ShopBasketUnBlockObject(object);

+ 1 - 1
hosts/localhost/template/shop-category.html

@@ -26,7 +26,7 @@
 						<div class="card-text">{{.Briefly}}</div>
 					</div>
 					<div class="card-footer">
-						<span class="price">{{.PriceFormat "%.2f"}} {{.Currency.Code}}</span><a href="{{.Permalink}}" class="btn btn-success" onclick="window&&window.frontend&&frontend.ShopBasketProductPlus(this, {{.Id}});return false;">Buy</a>
+						<span class="price">{{.PriceFormat "%.2f"}} {{.Currency.Code}}</span><a href="{{.Permalink}}" class="btn btn-success" onclick="window&&window.frontend&&frontend.ShopBasketProductAdd(this, {{.Id}});return false;">Buy</a>
 					</div>
 				</div>
 			{{end}}

+ 2 - 2
hosts/localhost/template/shop-product.html

@@ -47,7 +47,7 @@
 						{{end}}
 						<div class="card mt-3{{if not $.Data.Shop.Product.HaveVariations}} mt-sm-3 mt-md-0 mt-lg-0{{end}}">
 							<div class="card-body">
-								<h3 class="price mb-0 mr-4">{{$.Data.Shop.Product.PriceFormat "%.2f"}} {{$.Data.Shop.Product.Currency.Code}}</h3><a href="" class="btn btn-success btn-buy" onclick="window&&window.frontend&&frontend.ShopBasketProductPlus(this, {{$.Data.Shop.Product.Id}});return false;">Buy</a>
+								<h3 class="price mb-0 mr-4">{{$.Data.Shop.Product.PriceFormat "%.2f"}} {{$.Data.Shop.Product.Currency.Code}}</h3><a href="" class="btn btn-success btn-buy" onclick="window&&window.frontend&&frontend.ShopBasketProductAdd(this, {{$.Data.Shop.Product.Id}});return false;">Buy</a>
 							</div>
 						</div>
 						<div class="card mt-3">
@@ -115,7 +115,7 @@
 							</div>
 							<div class="card mt-3">
 								<div class="card-body">
-									<h3 class="price mb-0 mr-4">{{$.Data.Shop.Product.PriceFormat "%.2f"}} {{$.Data.Shop.Product.Currency.Code}}</h3><a href="" class="btn btn-success btn-buy" onclick="window&&window.frontend&&frontend.ShopBasketProductPlus(this, {{$.Data.Shop.Product.Id}});return false;">Buy</a>
+									<h3 class="price mb-0 mr-4">{{$.Data.Shop.Product.PriceFormat "%.2f"}} {{$.Data.Shop.Product.Currency.Code}}</h3><a href="" class="btn btn-success btn-buy" onclick="window&&window.frontend&&frontend.ShopBasketProductAdd(this, {{$.Data.Shop.Product.Id}});return false;">Buy</a>
 								</div>
 							</div>
 						</div>

+ 1 - 1
hosts/localhost/template/shop.html

@@ -26,7 +26,7 @@
 						<div class="card-text">{{.Briefly}}</div>
 					</div>
 					<div class="card-footer">
-						<span class="price">{{.PriceFormat "%.2f"}} {{.Currency.Code}}</span><a href="{{.Permalink}}" class="btn btn-success" onclick="window&&window.frontend&&frontend.ShopBasketProductPlus(this, {{.Id}});return false;">Buy</a>
+						<span class="price">{{.PriceFormat "%.2f"}} {{.Currency.Code}}</span><a href="{{.Permalink}}" class="btn btn-success" onclick="window&&window.frontend&&frontend.ShopBasketProductAdd(this, {{.Id}});return false;">Buy</a>
 					</div>
 				</div>
 			{{end}}