From 38e081e5907cb5bc7a3e2ea918864f7ac50aaa81 Mon Sep 17 00:00:00 2001 From: Kathy Daring Date: Tue, 25 Feb 2020 13:12:27 -0700 Subject: [PATCH 1/5] Set adding_to_cart trigger to variable. If false, do not fire ajax. Closes #25759. --- assets/js/frontend/add-to-cart.js | 48 ++++++++++++++++--------------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/assets/js/frontend/add-to-cart.js b/assets/js/frontend/add-to-cart.js index cbf6d11a02d..237df206bf3 100644 --- a/assets/js/frontend/add-to-cart.js +++ b/assets/js/frontend/add-to-cart.js @@ -76,33 +76,35 @@ jQuery( function( $ ) { }); // Trigger event. - $( document.body ).trigger( 'adding_to_cart', [ $thisbutton, data ] ); + var valid = $( document.body ).triggerHandler( 'adding_to_cart', [ $thisbutton, data ] ); - e.data.addToCartHandler.addRequest({ - type: 'POST', - url: wc_add_to_cart_params.wc_ajax_url.toString().replace( '%%endpoint%%', 'add_to_cart' ), - data: data, - success: function( response ) { - if ( ! response ) { - return; - } + if( valid !== false ) { + e.data.addToCartHandler.addRequest({ + type: 'POST', + url: wc_add_to_cart_params.wc_ajax_url.toString().replace( '%%endpoint%%', 'add_to_cart' ), + data: data, + success: function( response ) { + if ( ! response ) { + return; + } - if ( response.error && response.product_url ) { - window.location = response.product_url; - return; - } + if ( response.error && response.product_url ) { + window.location = response.product_url; + return; + } - // Redirect to cart option - if ( wc_add_to_cart_params.cart_redirect_after_add === 'yes' ) { - window.location = wc_add_to_cart_params.cart_url; - return; - } + // Redirect to cart option + if ( wc_add_to_cart_params.cart_redirect_after_add === 'yes' ) { + window.location = wc_add_to_cart_params.cart_url; + return; + } - // Trigger event so themes can refresh other areas. - $( document.body ).trigger( 'added_to_cart', [ response.fragments, response.cart_hash, $thisbutton ] ); - }, - dataType: 'json' - }); + // Trigger event so themes can refresh other areas. + $( document.body ).trigger( 'added_to_cart', [ response.fragments, response.cart_hash, $thisbutton ] ); + }, + dataType: 'json' + }); + } } }; From 6937baccce52304f2d2365b90c062229e2163fb1 Mon Sep 17 00:00:00 2001 From: Kathy Daring Date: Fri, 13 Mar 2020 18:25:25 -0600 Subject: [PATCH 2/5] Revert "Set adding_to_cart trigger to variable. If false, do not fire ajax. Closes #25759." This reverts commit 38e081e5907cb5bc7a3e2ea918864f7ac50aaa81. --- assets/js/frontend/add-to-cart.js | 48 +++++++++++++++---------------- 1 file changed, 23 insertions(+), 25 deletions(-) diff --git a/assets/js/frontend/add-to-cart.js b/assets/js/frontend/add-to-cart.js index 237df206bf3..cbf6d11a02d 100644 --- a/assets/js/frontend/add-to-cart.js +++ b/assets/js/frontend/add-to-cart.js @@ -76,35 +76,33 @@ jQuery( function( $ ) { }); // Trigger event. - var valid = $( document.body ).triggerHandler( 'adding_to_cart', [ $thisbutton, data ] ); + $( document.body ).trigger( 'adding_to_cart', [ $thisbutton, data ] ); - if( valid !== false ) { - e.data.addToCartHandler.addRequest({ - type: 'POST', - url: wc_add_to_cart_params.wc_ajax_url.toString().replace( '%%endpoint%%', 'add_to_cart' ), - data: data, - success: function( response ) { - if ( ! response ) { - return; - } + e.data.addToCartHandler.addRequest({ + type: 'POST', + url: wc_add_to_cart_params.wc_ajax_url.toString().replace( '%%endpoint%%', 'add_to_cart' ), + data: data, + success: function( response ) { + if ( ! response ) { + return; + } - if ( response.error && response.product_url ) { - window.location = response.product_url; - return; - } + if ( response.error && response.product_url ) { + window.location = response.product_url; + return; + } - // Redirect to cart option - if ( wc_add_to_cart_params.cart_redirect_after_add === 'yes' ) { - window.location = wc_add_to_cart_params.cart_url; - return; - } + // Redirect to cart option + if ( wc_add_to_cart_params.cart_redirect_after_add === 'yes' ) { + window.location = wc_add_to_cart_params.cart_url; + return; + } - // Trigger event so themes can refresh other areas. - $( document.body ).trigger( 'added_to_cart', [ response.fragments, response.cart_hash, $thisbutton ] ); - }, - dataType: 'json' - }); - } + // Trigger event so themes can refresh other areas. + $( document.body ).trigger( 'added_to_cart', [ response.fragments, response.cart_hash, $thisbutton ] ); + }, + dataType: 'json' + }); } }; From 4ed91d9482f99dbf5b6fcd14a35023df67f40bf7 Mon Sep 17 00:00:00 2001 From: Kathy Daring Date: Fri, 13 Mar 2020 18:26:37 -0600 Subject: [PATCH 3/5] quit early if should_send_ajax_request.adding_to_cart triggerHandler is false and trigger a custom event instead --- assets/js/frontend/add-to-cart.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/assets/js/frontend/add-to-cart.js b/assets/js/frontend/add-to-cart.js index cbf6d11a02d..fa4f546b8e8 100644 --- a/assets/js/frontend/add-to-cart.js +++ b/assets/js/frontend/add-to-cart.js @@ -69,6 +69,12 @@ jQuery( function( $ ) { $thisbutton.removeClass( 'added' ); $thisbutton.addClass( 'loading' ); + // Allow 3rd parties to validate and quit early. + if( false === $( document.body ).triggerHandler( 'should_send_ajax_request.adding_to_cart', [ $thisbutton ] ) ) { + $( document.body ).trigger( 'ajax_request_not_sent.adding_to_cart', [ false, false, $thisbutton ] ); + return true; + } + var data = {}; $.each( $thisbutton[0].dataset, function( key, value ) { From 319395b0fad2af725ab2c968d15c48eb6f4211c3 Mon Sep 17 00:00:00 2001 From: Kathy Daring Date: Fri, 13 Mar 2020 18:27:45 -0600 Subject: [PATCH 4/5] update the add to cart button if ajax request not sent --- assets/js/frontend/add-to-cart.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/assets/js/frontend/add-to-cart.js b/assets/js/frontend/add-to-cart.js index fa4f546b8e8..cc2c9ba68a6 100644 --- a/assets/js/frontend/add-to-cart.js +++ b/assets/js/frontend/add-to-cart.js @@ -17,6 +17,7 @@ jQuery( function( $ ) { .on( 'click', '.add_to_cart_button', { addToCartHandler: this }, this.onAddToCart ) .on( 'click', '.remove_from_cart_button', { addToCartHandler: this }, this.onRemoveFromCart ) .on( 'added_to_cart', this.updateButton ) + .on( 'ajax_request_not_sent.adding_to_cart', this.updateButton ) .on( 'added_to_cart removed_from_cart', { addToCartHandler: this }, this.updateFragments ); }; @@ -158,10 +159,13 @@ jQuery( function( $ ) { if ( $button ) { $button.removeClass( 'loading' ); - $button.addClass( 'added' ); + + if( fragments ) { + $button.addClass( 'added' ); + } // View cart text. - if ( ! wc_add_to_cart_params.is_cart && $button.parent().find( '.added_to_cart' ).length === 0 ) { + if ( fragments && ! wc_add_to_cart_params.is_cart && $button.parent().find( '.added_to_cart' ).length === 0 ) { $button.after( ' ' + wc_add_to_cart_params.i18n_view_cart + '' ); } From 3ce6d4f04a5a1ec86c025d81796b2af9eda0e04e Mon Sep 17 00:00:00 2001 From: Claudio Sanches Date: Mon, 11 May 2020 20:00:23 -0300 Subject: [PATCH 5/5] Fixed coding standards --- assets/js/frontend/add-to-cart.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/js/frontend/add-to-cart.js b/assets/js/frontend/add-to-cart.js index cc2c9ba68a6..446e5dc1e9a 100644 --- a/assets/js/frontend/add-to-cart.js +++ b/assets/js/frontend/add-to-cart.js @@ -71,7 +71,7 @@ jQuery( function( $ ) { $thisbutton.addClass( 'loading' ); // Allow 3rd parties to validate and quit early. - if( false === $( document.body ).triggerHandler( 'should_send_ajax_request.adding_to_cart', [ $thisbutton ] ) ) { + if ( false === $( document.body ).triggerHandler( 'should_send_ajax_request.adding_to_cart', [ $thisbutton ] ) ) { $( document.body ).trigger( 'ajax_request_not_sent.adding_to_cart', [ false, false, $thisbutton ] ); return true; } @@ -160,7 +160,7 @@ jQuery( function( $ ) { if ( $button ) { $button.removeClass( 'loading' ); - if( fragments ) { + if ( fragments ) { $button.addClass( 'added' ); }