diff --git a/app.js b/app.js
index f8813d4..7563707 100644
--- a/app.js
+++ b/app.js
@@ -302,6 +302,12 @@ handlebars = handlebars.create({
'/': lvalue / rvalue,
'%': lvalue % rvalue
}[operator];
+ },
+ showCartButtons: (cart) => {
+ if(!cart){
+ return'd-none';
+ }
+ return'';
}
}
});
diff --git a/public/javascripts/expressCart.js b/public/javascripts/expressCart.js
index 264a809..47d00f3 100644
--- a/public/javascripts/expressCart.js
+++ b/public/javascripts/expressCart.js
@@ -1,5 +1,5 @@
/* eslint-disable prefer-arrow-callback, no-var, no-tabs */
-/* globals showNotification */
+/* globals showNotification, numeral */
$(document).ready(function (){
if($(window).width() < 768){
$('.menu-side').on('click', function(e){
@@ -19,13 +19,6 @@ $(document).ready(function (){
$('#offcanvasClose').hide();
}
- // If cart was open before reload, open it again
- var isCartOpen = (localStorage.getItem('cartOpen') === 'true');
- if(isCartOpen === true){
- localStorage.setItem('cartOpen', false);
- $('body').addClass('pushy-open-right');
- }
-
$('#userSetupForm').validator().on('submit', function(e){
if(!e.isDefaultPrevented()){
e.preventDefault();
@@ -304,8 +297,8 @@ $(document).ready(function (){
}
})
.done(function(msg){
- $('#cart-count').text(msg.totalCartItems);
- showNotification(msg.message, 'success', true);
+ showNotification(msg.message, 'success');
+ updateCartDiv();
})
.fail(function(msg){
showNotification(msg.responseJSON.message, 'danger');
@@ -335,8 +328,8 @@ $(document).ready(function (){
data: { productId: $(this).attr('data-id') }
})
.done(function(msg){
- $('#cart-count').text(msg.totalCartItems);
- showNotification(msg.message, 'success', true);
+ showNotification(msg.message, 'success');
+ updateCartDiv();
})
.fail(function(msg){
showNotification(msg.responseJSON.message, 'danger');
@@ -350,7 +343,7 @@ $(document).ready(function (){
url: '/product/emptycart'
})
.done(function(msg){
- $('#cart-count').text(msg.totalCartItems);
+ updateCartDiv();
showNotification(msg.message, 'success', true);
});
});
@@ -405,8 +398,8 @@ function deleteFromCart(element){
data: { productId: element.attr('data-id') }
})
.done(function(msg){
- setCartOpen();
- showNotification(msg.message, 'success', true);
+ showNotification(msg.message, 'success');
+ updateCartDiv();
})
.fail(function(msg){
showNotification(msg.responseJSON.message, 'danger');
@@ -423,14 +416,6 @@ function cartUpdate(element){
}
}
-function setCartOpen(){
- if($('body').hasClass('pushy-open-right') === true){
- localStorage.setItem('cartOpen', true);
- }else{
- localStorage.setItem('cartOpen', false);
- }
-}
-
function updateCart(element){
// update cart on server
$.ajax({
@@ -442,8 +427,7 @@ function updateCart(element){
}
})
.done(function(msg){
- setCartOpen();
- showNotification(msg.message, 'success', true);
+ updateCartDiv();
})
.fail(function(msg){
showNotification(msg.responseJSON.message, 'danger', true);
@@ -487,3 +471,128 @@ function getSelectedOptions(){
});
return options;
}
+
+function updateCartDiv(){
+ $.ajax({
+ method: 'GET',
+ url: '/checkout/cartdata'
+ })
+ .done(function(result){
+ // Update the cart div
+ var cart = result.cart;
+ var session = result.session;
+ var productHtml = '';
+ var totalAmount = numeral(session.totalCartAmount).format('0.00');
+
+ // Work out the shipping
+ var shippingTotalAmt = numeral(session.totalCartShipping).format('0.00');
+ var shippingTotal = `${result.currencySymbol}${shippingTotalAmt}`;
+ if(shippingTotalAmt === 0){
+ shippingTotal = 'FREE';
+ }
+
+ // If the cart has contents
+ if(cart){
+ $('#cart-empty').empty();
+ Object.keys(cart).forEach(function(productId){
+ var item = cart[productId];
+ // Setup the product
+ var productTotalAmount = numeral(item.totalItemPrice).format('0.00');
+ var optionsHtml = '';
+ var optionIndex = 1;
+ Object.keys(item.options).forEach(function(key){
+ var option = item.options[key];
+ if(optionIndex === Object.keys(item.options).length){
+ optionsHtml += `${upperFirst(option.name)}: ${option.value}`;
+ }else{
+ optionsHtml += `${upperFirst(option.name)}: ${option.value} / `;
+ }
+ optionIndex++;
+ });
+ var productImage = ``;
+ if(item.productImage){
+ productImage = ``;
+ }
+
+ // Setup the product html
+ productHtml += `
+
+
+ ${productImage}
+
+
+
+
+
+ ${optionsHtml}
+
+
+
+
+
+
+
+
+ ${result.currencySymbol}${productTotalAmount}
+
+
`;
+ });
+
+ $('#cartBodyWrapper').html(productHtml);
+ $('#cart-count').text(session.totalCartItems);
+ }else{
+ $('#cartBodyWrapper').html('');
+ }
+
+ // Set the totals section
+ var cartTotalsHtml = `
+
+
+
+ Shipping: ${shippingTotal}
+
+
+ Total:
+ ${result.currencySymbol}${totalAmount}
+
+
+
`;
+
+ var cartTotalsEmptyHtml = `
+ `;
+
+ // Set depending on cart contents
+ if(cart){
+ $('#cartTotalsWrapper').html(cartTotalsHtml);
+ $('#cart-buttons').removeClass('d-none');
+ }else{
+ $('#cartTotalsWrapper').html(cartTotalsEmptyHtml);
+ $('#cart-buttons').addClass('d-none');
+ }
+ })
+ .fail(function(result){
+ showNotification(result.responseJSON.message, 'danger');
+ });
+}
+
+function upperFirst(value){
+ return value.replace(/^\w/, (chr) => {
+ return chr.toUpperCase();
+ });
+}
diff --git a/public/javascripts/expressCart.min.js b/public/javascripts/expressCart.min.js
index 12d421f..7722eb6 100644
--- a/public/javascripts/expressCart.min.js
+++ b/public/javascripts/expressCart.min.js
@@ -1 +1 @@
-function deleteFromCart(t){$.ajax({method:"POST",url:"/product/removefromcart",data:{productId:t.attr("data-id")}}).done(function(t){setCartOpen(),showNotification(t.message,"success",!0)}).fail(function(t){showNotification(t.responseJSON.message,"danger")})}function cartUpdate(t){$(t).val()>0?""!==$(t).val()&&updateCart(t):$(t).val(1)}function setCartOpen(){!0===$("body").hasClass("pushy-open-right")?localStorage.setItem("cartOpen",!0):localStorage.setItem("cartOpen",!1)}function updateCart(t){$.ajax({method:"POST",url:"/product/updatecart",data:{productId:t.attr("data-id"),quantity:t.val()}}).done(function(t){setCartOpen(),showNotification(t.message,"success",!0)}).fail(function(t){showNotification(t.responseJSON.message,"danger",!0)})}function getSelectedOptions(){var t={};return $(".product-opt").each(function(){var a=$(this).val().trim(),e=$(this).attr("data-label"),o=$(this).attr("name"),n=$(this).attr("type");n||(t[o]={label:e,name:o,value:a}),"radio"===n&&(t[o]={label:e,name:o,value:$('input[name="'+o+'"]:checked').val()}),"checkbox"===n&&(t[o]={label:e,name:o,value:$('input[name="'+$(this).attr("name")+'"]').is(":checked")})}),t}$(document).ready(function(){if($(window).width()<768&&($(".menu-side").on("click",function(t){t.preventDefault(),$('.menu-side li:not(".active")').slideToggle()}),$('.menu-side li:not(".active")').hide(),$(".menu-side>.active").html(''),$(".menu-side>.active").addClass("menu-side-mobile"),0===$("#navbar ul li").length&&$("#navbar").hide(),$("#offcanvasClose").hide()),!0===("true"===localStorage.getItem("cartOpen"))&&(localStorage.setItem("cartOpen",!1),$("body").addClass("pushy-open-right")),$("#userSetupForm").validator().on("submit",function(t){t.isDefaultPrevented()||(t.preventDefault(),$.ajax({method:"POST",url:"/admin/setup_action",data:{usersName:$("#usersName").val(),userEmail:$("#userEmail").val(),userPassword:$("#userPassword").val()}}).done(function(t){showNotification(t.message,"success",!1,"/admin/login")}).fail(function(t){showNotification(t.responseJSON.message,"danger")}))}),$(document).on("click",".menu-btn",function(t){t.preventDefault(),$("body").addClass("pushy-open-right")}),$("table").each(function(){$(this).addClass("table table-hover")}),$("#productTags").length&&$("#productTags").tokenfield(),$(document).on("click",".dashboard_list",function(t){window.document.location=$(this).attr("href")}).hover(function(){$(this).toggleClass("hover")}),$(document).on("click",".btn-qty-minus",function(t){t.preventDefault();var a=$(t.target).parent().parent().find(".cart-product-quantity");$(a).val(parseInt(a.val())-1),cartUpdate(a)}),$(document).on("click",".btn-qty-add",function(t){t.preventDefault();var a=$(t.target).parent().parent().find(".cart-product-quantity");$(a).val(parseInt(a.val())+1),cartUpdate(a)}),$(document).on("click",".btn-delete-from-cart",function(t){deleteFromCart($(t.target))}),$("#pager").length){var t=$("#pageNum").val(),a=$("#productsPerPage").val(),e=$("#totalProductCount").val(),o=$("#paginateUrl").val(),n=$("#searchTerm").val();""!==n&&(n+="/");var i="/"+o+"/"+n+"{{number}}",r=Math.ceil(e/a);parseInt(e)>parseInt(a)&&($("#pager").bootpag({total:r,page:t,maxVisible:5,href:i,wrapClass:"pagination",prevClass:"page-item previous",nextClass:"page-item next",activeClass:"page-item active"}),$("#pager a").each(function(){$(this).addClass("page-link")}))}if($("#customerLogout").on("click",function(t){$.ajax({method:"POST",url:"/customer/logout",data:{}}).done(function(t){location.reload()})}),$("#customerForgotten").validator().on("submit",function(t){t.isDefaultPrevented()||(t.preventDefault(),$.ajax({method:"POST",url:"/customer/forgotten_action",data:{email:$("#email").val()}}).done(function(t){showNotification(t.message,"success")}).fail(function(t){t.message?showNotification(t.responseJSON.message,"danger"):showNotification(t.responseText,"danger")}))}),$(document).on("click","#createAccountCheckbox",function(t){$("#newCustomerPassword").prop("required",$("#createAccountCheckbox").prop("checked"))}),$("#checkoutInformation").validator().on("click",function(t){if(t.preventDefault(),0===$("#shipping-form").validator("validate").has(".has-error").length){var a="/customer/save";$("#createAccountCheckbox").prop("checked")&&(a="/customer/create"),$.ajax({method:"POST",url:a,data:{email:$("#shipEmail").val(),firstName:$("#shipFirstname").val(),lastName:$("#shipLastname").val(),address1:$("#shipAddr1").val(),address2:$("#shipAddr2").val(),country:$("#shipCountry").val(),state:$("#shipState").val(),postcode:$("#shipPostcode").val(),phone:$("#shipPhoneNumber").val(),password:$("#newCustomerPassword").val(),orderComment:$("#orderComment").val()}}).done(function(){window.location="/checkout/shipping"}).fail(function(t){showNotification(t.responseJSON.message,"danger")})}}),$("#loginForm").on("click",function(t){t.isDefaultPrevented()||(t.preventDefault(),$.ajax({method:"POST",url:"/admin/login_action",data:{email:$("#email").val(),password:$("#password").val()}}).done(function(t){window.location="/admin"}).fail(function(t){showNotification(t.responseJSON.message,"danger")})),t.preventDefault()}),$("#customerLogin").on("click",function(t){t.isDefaultPrevented()||(t.preventDefault(),$.ajax({method:"POST",url:"/customer/login_action",data:{loginEmail:$("#customerLoginEmail").val(),loginPassword:$("#customerLoginPassword").val()}}).done(function(t){var a=t.customer;$("#shipEmail").val(a.email),$("#shipFirstname").val(a.firstName),$("#shipLastname").val(a.lastName),$("#shipAddr1").val(a.address1),$("#shipAddr2").val(a.address2),$("#shipCountry").val(a.country),$("#shipState").val(a.state),$("#shipPostcode").val(a.postcode),$("#shipPhoneNumber").val(a.phone),location.reload()}).fail(function(t){showNotification(t.responseJSON.message,"danger")})),t.preventDefault()}),$(document).on("click",".image-next",function(t){var a=$(".thumbnail-image"),e=0,o=0;$(".thumbnail-image").each(function(){$("#product-title-image").attr("src")===$(this).attr("src")&&(o=e+1===a.length||e+1<0?0:e+1),e++}),$("#product-title-image").attr("src",$(a).eq(o).attr("src"))}),$(document).on("click",".image-prev",function(t){var a=$(".thumbnail-image"),e=0,o=0;$(".thumbnail-image").each(function(){$("#product-title-image").attr("src")===$(this).attr("src")&&(o=e-1===a.length||e-1<0?a.length-1:e-1),e++}),$("#product-title-image").attr("src",$(a).eq(o).attr("src"))}),$(document).on("click",".product-add-to-cart",function(t){var a=getSelectedOptions();parseInt($("#product_quantity").val())<0&&$("#product_quantity").val(0),$.ajax({method:"POST",url:"/product/addtocart",data:{productId:$("#productId").val(),productQuantity:$("#product_quantity").val(),productOptions:JSON.stringify(a),productComment:$("#product_comment").val()}}).done(function(t){$("#cart-count").text(t.totalCartItems),showNotification(t.message,"success",!0)}).fail(function(t){showNotification(t.responseJSON.message,"danger")})}),$(".cart-product-quantity").on("focusout",function(t){cartUpdate($(t.target))}),$(document).on("click",".pushy-link",function(t){$("body").removeClass("pushy-open-right")}),$(document).on("click",".add-to-cart",function(t){var a="/product/"+$(this).attr("data-id");$(this).attr("data-link")&&(a="/product/"+$(this).attr("data-link")),"true"===$(this).attr("data-has-options")?window.location=a:$.ajax({method:"POST",url:"/product/addtocart",data:{productId:$(this).attr("data-id")}}).done(function(t){$("#cart-count").text(t.totalCartItems),showNotification(t.message,"success",!0)}).fail(function(t){showNotification(t.responseJSON.message,"danger")})}),$(document).on("click","#empty-cart",function(t){$.ajax({method:"POST",url:"/product/emptycart"}).done(function(t){$("#cart-count").text(t.totalCartItems),showNotification(t.message,"success",!0)})}),$(".qty-btn-minus").on("click",function(){var t=parseInt($("#product_quantity").val())-1;$("#product_quantity").val(t>0?t:1)}),$(".qty-btn-plus").on("click",function(){$("#product_quantity").val(parseInt($("#product_quantity").val())+1)}),$(".thumbnail-image").on("click",function(){$("#product-title-image").attr("src",$(this).attr("src"))}),$(document).on("click","#btn_search_reset",function(t){window.location.replace("/")}),$(document).on("click","#btn_search",function(t){t.preventDefault(),""===$("#frm_search").val().trim()?showNotification("Please enter a search value","danger"):window.location.href="/search/"+$("#frm_search").val()}),""!==$("#input_notify_message").val()){var c=$("#input_notify_message").val(),s=$("#input_notify_messageType").val();$("#input_notify_message").val(""),$("#input_notify_messageType").val(""),showNotification(c,s||"danger",!1)}});
\ No newline at end of file
+function deleteFromCart(t){$.ajax({method:"POST",url:"/product/removefromcart",data:{productId:t.attr("data-id")}}).done(function(t){showNotification(t.message,"success"),updateCartDiv()}).fail(function(t){showNotification(t.responseJSON.message,"danger")})}function cartUpdate(t){$(t).val()>0?""!==$(t).val()&&updateCart(t):$(t).val(1)}function updateCart(t){$.ajax({method:"POST",url:"/product/updatecart",data:{productId:t.attr("data-id"),quantity:t.val()}}).done(function(t){updateCartDiv()}).fail(function(t){showNotification(t.responseJSON.message,"danger",!0)})}function getSelectedOptions(){var t={};return $(".product-opt").each(function(){var a=$(this).val().trim(),e=$(this).attr("data-label"),n=$(this).attr("name"),o=$(this).attr("type");o||(t[n]={label:e,name:n,value:a}),"radio"===o&&(t[n]={label:e,name:n,value:$('input[name="'+n+'"]:checked').val()}),"checkbox"===o&&(t[n]={label:e,name:n,value:$('input[name="'+$(this).attr("name")+'"]').is(":checked")})}),t}function updateCartDiv(){$.ajax({method:"GET",url:"/checkout/cartdata"}).done(function(t){var a=t.cart,e=t.session,n="",o=numeral(e.totalCartAmount).format("0.00"),i=numeral(e.totalCartShipping).format("0.00"),r=`${t.currencySymbol}${i}`;0===i&&(r='FREE'),a?($("#cart-empty").empty(),Object.keys(a).forEach(function(e){var o=a[e],i=numeral(o.totalItemPrice).format("0.00"),r="",s=1;Object.keys(o.options).forEach(function(t){var a=o.options[t];s===Object.keys(o.options).length?r+=`${upperFirst(a.name)}: ${a.value}`:r+=`${upperFirst(a.name)}: ${a.value} / `,s++});var c=``;o.productImage&&(c=``),n+=`\n \n
\n ${c}\n
\n
\n
\n
\n
\n ${r}\n
\n
\n
\n \n
\n
\n
\n
\n ${t.currencySymbol}${i}\n
\n
`}),$("#cartBodyWrapper").html(n),$("#cart-count").text(e.totalCartItems)):$("#cartBodyWrapper").html("");var s=`\n \n
\n
\n Shipping: ${r}\n
\n
\n Total:\n ${t.currencySymbol}${o}\n
\n
\n
`;a?($("#cartTotalsWrapper").html(s),$("#cart-buttons").removeClass("d-none")):($("#cartTotalsWrapper").html('\n '),$("#cart-buttons").addClass("d-none"))}).fail(function(t){showNotification(t.responseJSON.message,"danger")})}function upperFirst(t){return t.replace(/^\w/,t=>t.toUpperCase())}$(document).ready(function(){if($(window).width()<768&&($(".menu-side").on("click",function(t){t.preventDefault(),$('.menu-side li:not(".active")').slideToggle()}),$('.menu-side li:not(".active")').hide(),$(".menu-side>.active").html(''),$(".menu-side>.active").addClass("menu-side-mobile"),0===$("#navbar ul li").length&&$("#navbar").hide(),$("#offcanvasClose").hide()),$("#userSetupForm").validator().on("submit",function(t){t.isDefaultPrevented()||(t.preventDefault(),$.ajax({method:"POST",url:"/admin/setup_action",data:{usersName:$("#usersName").val(),userEmail:$("#userEmail").val(),userPassword:$("#userPassword").val()}}).done(function(t){showNotification(t.message,"success",!1,"/admin/login")}).fail(function(t){showNotification(t.responseJSON.message,"danger")}))}),$(document).on("click",".menu-btn",function(t){t.preventDefault(),$("body").addClass("pushy-open-right")}),$("table").each(function(){$(this).addClass("table table-hover")}),$("#productTags").length&&$("#productTags").tokenfield(),$(document).on("click",".dashboard_list",function(t){window.document.location=$(this).attr("href")}).hover(function(){$(this).toggleClass("hover")}),$(document).on("click",".btn-qty-minus",function(t){t.preventDefault();var a=$(t.target).parent().parent().find(".cart-product-quantity");$(a).val(parseInt(a.val())-1),cartUpdate(a)}),$(document).on("click",".btn-qty-add",function(t){t.preventDefault();var a=$(t.target).parent().parent().find(".cart-product-quantity");$(a).val(parseInt(a.val())+1),cartUpdate(a)}),$(document).on("click",".btn-delete-from-cart",function(t){deleteFromCart($(t.target))}),$("#pager").length){var t=$("#pageNum").val(),a=$("#productsPerPage").val(),e=$("#totalProductCount").val(),n=$("#paginateUrl").val(),o=$("#searchTerm").val();""!==o&&(o+="/");var i="/"+n+"/"+o+"{{number}}",r=Math.ceil(e/a);parseInt(e)>parseInt(a)&&($("#pager").bootpag({total:r,page:t,maxVisible:5,href:i,wrapClass:"pagination",prevClass:"page-item previous",nextClass:"page-item next",activeClass:"page-item active"}),$("#pager a").each(function(){$(this).addClass("page-link")}))}if($("#customerLogout").on("click",function(t){$.ajax({method:"POST",url:"/customer/logout",data:{}}).done(function(t){location.reload()})}),$("#customerForgotten").validator().on("submit",function(t){t.isDefaultPrevented()||(t.preventDefault(),$.ajax({method:"POST",url:"/customer/forgotten_action",data:{email:$("#email").val()}}).done(function(t){showNotification(t.message,"success")}).fail(function(t){t.message?showNotification(t.responseJSON.message,"danger"):showNotification(t.responseText,"danger")}))}),$(document).on("click","#createAccountCheckbox",function(t){$("#newCustomerPassword").prop("required",$("#createAccountCheckbox").prop("checked"))}),$("#checkoutInformation").validator().on("click",function(t){if(t.preventDefault(),0===$("#shipping-form").validator("validate").has(".has-error").length){var a="/customer/save";$("#createAccountCheckbox").prop("checked")&&(a="/customer/create"),$.ajax({method:"POST",url:a,data:{email:$("#shipEmail").val(),firstName:$("#shipFirstname").val(),lastName:$("#shipLastname").val(),address1:$("#shipAddr1").val(),address2:$("#shipAddr2").val(),country:$("#shipCountry").val(),state:$("#shipState").val(),postcode:$("#shipPostcode").val(),phone:$("#shipPhoneNumber").val(),password:$("#newCustomerPassword").val(),orderComment:$("#orderComment").val()}}).done(function(){window.location="/checkout/shipping"}).fail(function(t){showNotification(t.responseJSON.message,"danger")})}}),$("#loginForm").on("click",function(t){t.isDefaultPrevented()||(t.preventDefault(),$.ajax({method:"POST",url:"/admin/login_action",data:{email:$("#email").val(),password:$("#password").val()}}).done(function(t){window.location="/admin"}).fail(function(t){showNotification(t.responseJSON.message,"danger")})),t.preventDefault()}),$("#customerLogin").on("click",function(t){t.isDefaultPrevented()||(t.preventDefault(),$.ajax({method:"POST",url:"/customer/login_action",data:{loginEmail:$("#customerLoginEmail").val(),loginPassword:$("#customerLoginPassword").val()}}).done(function(t){var a=t.customer;$("#shipEmail").val(a.email),$("#shipFirstname").val(a.firstName),$("#shipLastname").val(a.lastName),$("#shipAddr1").val(a.address1),$("#shipAddr2").val(a.address2),$("#shipCountry").val(a.country),$("#shipState").val(a.state),$("#shipPostcode").val(a.postcode),$("#shipPhoneNumber").val(a.phone),location.reload()}).fail(function(t){showNotification(t.responseJSON.message,"danger")})),t.preventDefault()}),$(document).on("click",".image-next",function(t){var a=$(".thumbnail-image"),e=0,n=0;$(".thumbnail-image").each(function(){$("#product-title-image").attr("src")===$(this).attr("src")&&(n=e+1===a.length||e+1<0?0:e+1),e++}),$("#product-title-image").attr("src",$(a).eq(n).attr("src"))}),$(document).on("click",".image-prev",function(t){var a=$(".thumbnail-image"),e=0,n=0;$(".thumbnail-image").each(function(){$("#product-title-image").attr("src")===$(this).attr("src")&&(n=e-1===a.length||e-1<0?a.length-1:e-1),e++}),$("#product-title-image").attr("src",$(a).eq(n).attr("src"))}),$(document).on("click",".product-add-to-cart",function(t){var a=getSelectedOptions();parseInt($("#product_quantity").val())<0&&$("#product_quantity").val(0),$.ajax({method:"POST",url:"/product/addtocart",data:{productId:$("#productId").val(),productQuantity:$("#product_quantity").val(),productOptions:JSON.stringify(a),productComment:$("#product_comment").val()}}).done(function(t){showNotification(t.message,"success"),updateCartDiv()}).fail(function(t){showNotification(t.responseJSON.message,"danger")})}),$(".cart-product-quantity").on("focusout",function(t){cartUpdate($(t.target))}),$(document).on("click",".pushy-link",function(t){$("body").removeClass("pushy-open-right")}),$(document).on("click",".add-to-cart",function(t){var a="/product/"+$(this).attr("data-id");$(this).attr("data-link")&&(a="/product/"+$(this).attr("data-link")),"true"===$(this).attr("data-has-options")?window.location=a:$.ajax({method:"POST",url:"/product/addtocart",data:{productId:$(this).attr("data-id")}}).done(function(t){showNotification(t.message,"success"),updateCartDiv()}).fail(function(t){showNotification(t.responseJSON.message,"danger")})}),$(document).on("click","#empty-cart",function(t){$.ajax({method:"POST",url:"/product/emptycart"}).done(function(t){updateCartDiv(),showNotification(t.message,"success",!0)})}),$(".qty-btn-minus").on("click",function(){var t=parseInt($("#product_quantity").val())-1;$("#product_quantity").val(t>0?t:1)}),$(".qty-btn-plus").on("click",function(){$("#product_quantity").val(parseInt($("#product_quantity").val())+1)}),$(".thumbnail-image").on("click",function(){$("#product-title-image").attr("src",$(this).attr("src"))}),$(document).on("click","#btn_search_reset",function(t){window.location.replace("/")}),$(document).on("click","#btn_search",function(t){t.preventDefault(),""===$("#frm_search").val().trim()?showNotification("Please enter a search value","danger"):window.location.href="/search/"+$("#frm_search").val()}),""!==$("#input_notify_message").val()){var s=$("#input_notify_message").val(),c=$("#input_notify_messageType").val();$("#input_notify_message").val(""),$("#input_notify_messageType").val(""),showNotification(s,c||"danger",!1)}});
\ No newline at end of file
diff --git a/routes/index.js b/routes/index.js
index 594d4f8..1a1095a 100644
--- a/routes/index.js
+++ b/routes/index.js
@@ -131,6 +131,7 @@ router.get('/checkout/shipping', async (req, res, next) => {
session: req.session,
cartSize: 'part',
cartClose: false,
+ cartReadOnly: true,
page: 'checkout-shipping',
countryList,
message: clearSessionValue(req.session, 'message'),
@@ -146,7 +147,7 @@ router.get('/checkout/cart', (req, res) => {
res.render(`${config.themeViews}checkout-cart`, {
page: req.query.path,
cartSize: 'full',
- config: req.app.config,
+ config,
session: req.session,
message: clearSessionValue(req.session, 'message'),
messageType: clearSessionValue(req.session, 'messageType'),
@@ -156,7 +157,13 @@ router.get('/checkout/cart', (req, res) => {
});
router.get('/checkout/cartdata', (req, res) => {
- res.status(200).json(req.session.cart);
+ const config = req.app.config;
+
+ res.status(200).json({
+ cart: req.session.cart,
+ session: req.session,
+ currencySymbol: config.currencySymbol || '$'
+ });
});
router.get('/checkout/payment', (req, res) => {
diff --git a/views/layouts/layout.hbs b/views/layouts/layout.hbs
index e1b0458..c8c72da 100644
--- a/views/layouts/layout.hbs
+++ b/views/layouts/layout.hbs
@@ -39,6 +39,7 @@
{{/if}}
+
@@ -138,12 +139,10 @@
{{> (getTheme 'cart')}}
- {{#if @root.session.cart}}
-
diff --git a/views/themes/Cloth/cart.hbs b/views/themes/Cloth/cart.hbs
index 0f918b4..b56c08e 100644
--- a/views/themes/Cloth/cart.hbs
+++ b/views/themes/Cloth/cart.hbs
@@ -1,16 +1,15 @@
-
{{ @root.__ "Cart contents" }}
{{#each @root.session.cart}}
-
+
{{#if productImage}}
{{else}}
{{/if}}
-
+
@@ -20,18 +19,17 @@
{{#if @last}}
{{#upperFirst this.name}}{{/upperFirst}}: {{this.value}}
{{else}}
-
{{#upperFirst this.name}}{{/upperFirst}}: {{this.value}} /
+
{{#upperFirst this.name}}{{/upperFirst}}: {{this.value}} /
{{/if}}
{{/each}}
- {{#ifCond cartReadOnly '!=' true}}
+ {{#ifCond @root.cartReadOnly '!=' true}}
-
+
{{currencySymbol @root.config.currencySymbol}}{{formatAmount this.totalItemPrice}}
{{/each}}
-
+
{{#if @root.session.cart}}
{{#ifCond @root.session.shippingCostApplied '===' true}}
{{ @root.__ "Shipping" }}
- {{currencySymbol @root.config.currencySymbol}}{{formatAmount @root.session.totalCartShipping}}
+ {{currencySymbol @root.config.currencySymbol}}{{formatAmount @root.session.totalCartShipping}}
{{else}}
{{ @root.__ "Shipping" }}
- FREE
+ FREE
{{/ifCond}}
Total:
- {{currencySymbol @root.config.currencySymbol}}{{formatAmount @root.session.totalCartAmount}}
+ {{currencySymbol @root.config.currencySymbol}}{{formatAmount @root.session.totalCartAmount}}
{{else}}
-
+
Cart empty
diff --git a/views/themes/Cloth/checkout-cart.hbs b/views/themes/Cloth/checkout-cart.hbs
index 2dc95f4..d264b87 100644
--- a/views/themes/Cloth/checkout-cart.hbs
+++ b/views/themes/Cloth/checkout-cart.hbs
@@ -3,12 +3,10 @@
{{> (getTheme 'cart')}}
- {{#if @root.session.cart}}
-
diff --git a/views/themes/Cloth/checkout-information.hbs b/views/themes/Cloth/checkout-information.hbs
index 0cc72af..01ffaea 100644
--- a/views/themes/Cloth/checkout-information.hbs
+++ b/views/themes/Cloth/checkout-information.hbs
@@ -88,7 +88,7 @@
{{> (getTheme 'cart')}}
{{#if @root.session.cart}}
-
+
{{/if}}
diff --git a/views/themes/Cloth/checkout-shipping.hbs b/views/themes/Cloth/checkout-shipping.hbs
index 022cd58..089c274 100644
--- a/views/themes/Cloth/checkout-shipping.hbs
+++ b/views/themes/Cloth/checkout-shipping.hbs
@@ -29,11 +29,9 @@
{{> (getTheme 'cart')}}
- {{#if @root.session.cart}}
-
+
- {{/if}}