PageSourceSearch

https://bosschat.ai/wp-content/plugins/sumosubscriptions/assets/js/frontend/checkout.js

js bosschat.ai collected 2026-10-05 15:28:25 UTC 8,635 bytes, 211 lines download raw bytes

1/* global sumosubs_checkout_params */
2
3jQuery( function( $ ) {
4    // sumosubs_checkout_params is required to continue, ensure the object exists
5    if ( typeof sumosubs_checkout_params === 'undefined' ) {
6        return false;
7    }
8
9    var block_wrapper = function() {
10        if ( 'cart' === sumosubs_checkout_params.current_page ) {
11            return $( 'div.cart_totals' );
12        } else {
13            return $( '.woocommerce-checkout-payment, .woocommerce-checkout-review-order-table' ).closest( 'form' );
14        }
15    };
16
17    var is_blocked = function( $node ) {
18        return $node.is( '.processing' ) || $node.parents( '.processing' ).length;
19    };
20
21    /**
22     * Block a node visually for processing.
23     *
24     * @param {JQuery Object} $node
25     */
26    var block = function( $node ) {
27        if ( ! is_blocked( $node ) ) {
28            $node.addClass( 'processing' ).block( {
29                message : null,
30                overlayCSS : {
31                    background : '#fff',
32                    opacity : 0.6
33                }
34            } );
35        }
36    };
37
38    /**
39     * Unblock a node after processing is complete.
40     *
41     * @param {JQuery Object} $node
42     */
43    var unblock = function( $node ) {
44        $node.removeClass( 'processing' ).unblock();
45    };
46
47    var checkout = {
48        /**
49         * Manage Cart/Checkout page events.
50         */
51        sync : false,
52        isSubscribed : false,
53        subscriptionDuration : null,
54        subscriptionDurationValue : null,
55        subscriptionRecurring : null,
56        init : function() {
57            this.onPageLoad();
58
59            $( document ).on( 'change', '#sumo_order_subscription_status', this.toggleOrderSubscription );
60            $( document ).on( 'change', '#sumo_order_subscription_duration', this.toggleOrderSubscriptionDuration );
61            $( document ).on( 'change', '#sumo_order_subscription_duration_value', this.toggleOrderSubscriptionDurationValue );
62            $( document ).on( 'change', '#sumo_order_subscription_recurring', this.toggleOrderSubscriptionRecurring );
63            $( document ).on( 'updated_wc_div', this.mayBeDisplayOrderSubscription );
64            $( document ).on( 'updated_cart_totals', this.mayBeDisplayOrderSubscription );
65        },
66        onPageLoad : function() {
67            if ( 'checkout' === sumosubs_checkout_params.current_page ) {
68                checkout.sync = true;
69            }
70
71            this.getOrderSubscription();
72        },
73        toggleOrderSubscription : function( evt ) {
74            evt.preventDefault();
75            checkout.sync = false;
76            checkout.getOrderSubscription();
77        },
78        toggleOrderSubscriptionDuration : function( evt ) {
79            evt.preventDefault();
80            var duration_options = { };
81            var $elements = $( '#sumo_order_subscription_duration_value' );
82            $elements.empty();
83
84            switch ( $( evt.currentTarget ).val() ) {
85                case 'W':
86                    duration_options = sumosubs_checkout_params.subscription_week_duration_options;
87                    break;
88                case 'M':
89                    duration_options = sumosubs_checkout_params.subscription_month_duration_options;
90                    break;
91                case 'Y':
92                    duration_options = sumosubs_checkout_params.subscription_year_duration_options;
93                    break;
94                default :
95                    duration_options = sumosubs_checkout_params.subscription_day_duration_options;
96                    break;
97            }
98
99            $.each( duration_options, function( value, key ) {
100                $elements.append( $( '<option></option>' ).attr( 'value', value ).text( key ) );
101            } );
102
103            checkout.updateCheckout();
104        },
105        toggleOrderSubscriptionDurationValue : function( evt ) {
106            evt.preventDefault();
107            checkout.updateCheckout();
108        },
109        toggleOrderSubscriptionRecurring : function( evt ) {
110            evt.preventDefault();
111            checkout.updateCheckout();
112        },
113        mayBeDisplayOrderSubscription : function() {
114            $( '.sumo_order_subscription_subscribe_duration' ).slide
114Up();
115            $( '.sumo_order_subscription_subscribe_length' ).slideUp();
116
117            if ( $( '#sumo_order_subscription_status' ).is( ':checked' ) ) {
118                $( '.sumo_order_subscription_subscribe_duration' ).slideDown();
119                $( '.sumo_order_subscription_subscribe_length' ).slideDown();
120            }
121        },
122        getOrderSubscription : function() {
123            checkout.mayBeDisplayOrderSubscription();
124            checkout.updateCheckout();
125        },
126        populateSubscriptionPlan : function() {
127            checkout.isSubscribed = $( '#sumo_order_subscription_status' ).is( ':checked' );
128            checkout.subscriptionDuration = sumosubs_checkout_params.default_order_subscription_duration;
129            checkout.subscriptionDurationValue = sumosubs_checkout_params.default_order_subscription_duration_value;
130            checkout.subscriptionRecurring = sumosubs_checkout_params.default_order_subscription_installment;
131
132            if ( sumosubs_checkout_params.can_user_select_plan ) {
133                checkout.subscriptionDuration = $( '#sumo_order_subscription_duration' ).val();
134                checkout.subscriptionDurationValue = $( '#sumo_order_subscription_duration_value' ).val();
135                checkout.subscriptionRecurring = 'undefined' === typeof $( '#sumo_order_subscription_recurring' ).val() ? '0' : $( '#sumo_order_subscription_recurring' ).val();
136            }
137        },
138        updateCheckout : function() {
139            checkout.populateSubscriptionPlan();
140
141            $.blockUI.defaults.overlayCSS.cursor = 'wait';
142            block( block_wrapper() );
143
144            $.ajax( {
145                type : 'POST',
146                url : sumosubs_checkout_params.wp_ajax_url,
147                dataType : 'text',
148                async : sumosubs_checkout_params.load_ajax_synchronously ? false : ( checkout.sync ? false : true ),
149                data : {
150                    action : 'sumosubscription_checkout_order_subscription',
151                    security : sumosubs_checkout_params.update_order_subscription_nonce,
152                    subscribed : checkout.isSubscribed ? 'yes' : 'no',
153                    subscription_duration : checkout.subscriptionDuration,
154                    subscription_duration_value : checkout.subscriptionDurationValue,
155                    subscription_recurring : checkout.subscriptionRecurring
156                },
157                success : function() {
158                    if ( 'checkout' === sumosubs_checkout_params.current_page ) {
159                        checkout.forceRenderSignupFormIfGuest();
160
161                        $( document.body ).trigger( 'update_checkout' );
162                    }
163                },
164                complete : function() {
165                    unblock( block_wrapper() );
166
167                    if ( $( '.woocommerce-cart-form' ).length && 'cart' === sumosubs_checkout_params.current_page ) {
168                        $( document.body ).trigger( 'wc_update_cart' );
169                    }
170
171                    checkout.clearCache();
172                }
173            } );
174        },
175        forceRenderSignupFormIfGuest : function() {
176            if ( sumosubs_checkout_params.is_user_logged_in ) {
177                return false;
178            }
179
180            if ( $( 'p.create-account' ).length ) {
181                $( 'p.create-account' ).show();
182                $( 'div.create-account' ).slideUp();
183            }
184
185            if ( sumosubs_checkout_params.maybe_prevent_from_hiding_guest_signup_form && sumosubs_checkout_params.can_user_subscribe_for_order ) {
186                $( 'div.create-account' ).slideUp();
187            }
188
189            if ( checkout.isSubscribed ) {
190                if ( $( 'p.create-account' ).length ) {
191                    $( 'p.create-account' ).hide();
192                }
193                if ( $( 'div.create-account' ).length ) {
194                    $( 'div.create-account' ).slideDown();
195                }
196            }
197        },
198        clearCache : function() {
199            checkout.sync = false;
200            checkout.isSubscribed = false;
201            checkout.subscriptionDuration = null;
202            checkout.subscriptionDurationValue = null;
203            checkout.subscriptionRecurring = null;
204        }
205    };
206
207    //may be Order Subscription is subscribed.
208    if ( sumosubs_checkout_params.can_user_subscribe_for_order ) {
209        checkout.init();
210    }
211} );

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.