PluginProbe
CartFlows – Funnel Builder & Checkout Plugin for WooCommerce / 1.1.15
CartFlows – Funnel Builder & Checkout Plugin for WooCommerce v1.1.15
3.3.0 3.2.1 3.2.0 3.1.4 3.1.3 3.1.2 3.1.1 3.1.0 3.0.1 trunk 1.0.4 1.1.0 1.1.0.1 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 All 162 releases
cartflows / assets / js / checkout-template.js

checkout-template.js in CartFlows – Funnel Builder & Checkout Plugin for WooCommerce 1.1.15, at assets/js/checkout-template.js

336 lines 9.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 (function($){
2
3 var wcf_reload_checkout_on_return = function() {
4
5 var vis = (function(){
6 var stateKey, eventKey, keys = {
7 hidden: "visibilitychange",
8 webkitHidden: "webkitvisibilitychange",
9 mozHidden: "mozvisibilitychange",
10 msHidden: "msvisibilitychange"
11 };
12 for (stateKey in keys) {
13 if (stateKey in document) {
14 eventKey = keys[stateKey];
15 break;
16 }
17 }
18 return function(c) {
19 if (c) document.addEventListener(eventKey, c);
20 return !document[stateKey];
21 }
22 })();
23
24 var visible = vis(); // gives current state
25
26 vis(function(){
27
28 if ( vis() ) {
29 location.reload();
30 }
31 });
32 }
33
34
35 var wcf_show_loader = function() {
36 $('.wcf-loader-bg').addClass('show');
37
38 }
39
40 var wcf_hide_loader = function() {
41 $('.wcf-loader-bg').removeClass('show');
42
43 }
44
45 /**
46 * Checkout Custom Field Validations
47 * This will collect all the present fields in the woocommerce form and adds an class if the field
48 * is blank
49 */
50 var wcf_custom_field_validation = function(){
51
52 var custom_field_add_class = function (field_value, field_row, field_wrap){
53
54 if ( field_value == '') {
55 if( field_row.hasClass('validate-required') ){
56
57 field_wrap.addClass('field-required');
58 }
59 } else {
60 field_wrap.removeClass('field-required');
61 }
62
63 }
64
65 var fields_wrapper = $('form.woocommerce-checkout #customer_details'),
66 $all_fields = fields_wrapper.find('input, textarea'),
67 $selects = fields_wrapper.find('.select2-selection');
68
69 $all_fields.blur(function(){
70 var $this = $(this),
71 field_row = $this.closest('p.form-row'),
72 field_value = $this.val();
73
74 custom_field_add_class(field_value, field_row, $this);
75
76 });
77
78
79 $selects.blur(function(){
80 var $this = $(this),
81 field_row = $this.closest('p.form-row'),
82 field_wrap = field_row.find('.select2-container--default'),
83 field_value = field_row.find('select').val();
84
85 custom_field_add_class(field_value, field_row, field_wrap);
86
87 });
88
89 }
90
91 /**
92 * Billing and shipping field add class form-row-first and form-row-last
93 * To add those classes to change the layout of the field
94 */
95 var add_custom_class_address_field = function(){
96 // For Billing address fields.
97 var $get_checkout_style_layout = $('.cartflows-container').find('.wcf-embed-checkout-form-two-column'),
98 $get_bill_addr_field_one = $('.wcf-embed-checkout-form .woocommerce-checkout').find('#billing_address_1_field'),
99 $get_bill_addr_field_two = $('.wcf-embed-checkout-form .woocommerce-checkout').find('#billing_address_2_field');
100
101 if( $get_bill_addr_field_one.hasClass('form-row-wide') ){
102 $get_bill_addr_field_one.removeClass('form-row-wide');
103 $get_bill_addr_field_one.addClass('form-row-first');
104 }
105
106 if( $get_bill_addr_field_two.hasClass('form-row-wide') ){
107 $get_bill_addr_field_two.removeClass('form-row-wide');
108 $get_bill_addr_field_two.addClass('form-row-last');
109
110 if( $get_bill_addr_field_two.find('label').hasClass('screen-reader-text') ){
111
112 $get_bill_addr_field_two.addClass('mt20');
113 }else{
114 $get_bill_addr_field_two.removeClass('mt20');
115 }
116 }
117
118 // For Shipping address fields.
119 var $get_ship_addr_field_one = $('.wcf-embed-checkout-form .woocommerce-checkout').find('#shipping_address_1_field');
120 var $get_ship_addr_field_two = $('.wcf-embed-checkout-form .woocommerce-checkout').find('#shipping_address_2_field');
121 if( $get_ship_addr_field_one.hasClass('form-row-wide') ){
122 $get_ship_addr_field_one.removeClass('form-row-wide');
123 $get_ship_addr_field_one.addClass('form-row-first');
124 }
125
126 if( $get_ship_addr_field_two.hasClass('form-row-wide') ){
127 $get_ship_addr_field_two.removeClass('form-row-wide');
128 $get_ship_addr_field_two.addClass('form-row-last');
129
130 if( $get_ship_addr_field_two.find('label').hasClass('screen-reader-text') ){
131
132 $get_ship_addr_field_two.addClass('mt20');
133 }else{
134 $get_ship_addr_field_two.removeClass('mt20');
135 }
136 }
137
138 function address_fields_management( type ) {
139
140 var wrapper = $('.woocommerce-' + type + '-fields' );
141
142 setTimeout(function() {
143 var column_three = wrapper.find('.wcf-column-33');
144 column_three.css( 'clear', '' );
145 column_three.first().css( 'clear', 'left' );
146 // column_three.first().css( 'margin-right', '10px' );
147 // column_three.last().css( 'margin-left', '10px' );
148 }, 100);
149
150 setTimeout(function() {
151 var column_fifty = wrapper.find('.wcf-column-50');
152 column_fifty.css( 'clear', '' );
153 column_fifty.last().css( 'clear', 'left' );
154 }, 100);
155 }
156
157 // address_fields_management( 'billing' );
158 // address_fields_management( 'shipping' );
159
160 var billing_country = $('.wcf-embed-checkout-form .woocommerce-checkout').find('#billing_country');
161
162 billing_country.on( 'change', function(e) {
163
164 // address_fields_management( 'billing' );
165 } );
166
167 var shipping_country = $('.wcf-embed-checkout-form .woocommerce-checkout').find('#shipping_country');
168
169 shipping_country.on( 'change', function(e) {
170
171 // address_fields_management( 'shipping' );
172
173 } );
174 }
175
176 var wcf_check_is_local_storage = function(){
177 var test = 'test';
178 try {
179 localStorage.setItem(test, test);
180 localStorage.removeItem(test);
181 return true;
182 } catch(e) {
183 return false;
184 }
185 }
186
187 var wcf_persistent_data = function(){
188
189 if( 'yes' != cartflows.allow_persistance ){
190 return;
191 }
192
193 if ( false === wcf_check_is_local_storage() ) {
194 return;
195 }
196
197 var checkout_cust_form = 'form.woocommerce-checkout #customer_details';
198
199 var wcf_form_data = {
200 set : function (){
201
202 var checkout_data = [];
203 var checkout_form = $('form.woocommerce-checkout #customer_details');
204
205 localStorage.removeItem('cartflows_checkout_form');
206
207 checkout_form.find('input[type=text], select, input[type=email], input[type=tel]').each(function(){
208 checkout_data.push({ name: this.name, value: this.value});
209 });
210
211 cartflows_checkout_form = JSON.stringify(checkout_data);
212 localStorage.setItem('cartflows_checkout_form', cartflows_checkout_form);
213 },
214 get : function (){
215
216
217 if( localStorage.getItem('cartflows_checkout_form') != null ){
218
219 checkout_data = JSON.parse( localStorage.getItem('cartflows_checkout_form') );
220
221 for (var i = 0; i < checkout_data.length; i++) {
222 $('form.woocommerce-checkout [name='+checkout_data[i].name+']').val(checkout_data[i].value);
223 }
224 }
225 }
226 }
227
228 wcf_form_data.get();
229
230 $( checkout_cust_form + " input, " + checkout_cust_form + " select").change( function() {
231 wcf_form_data.set();
232 });
233 }
234
235
236 $(window).load(function(){
237 $( 'body' ).trigger( 'update_checkout' );
238 });
239
240 var wcf_checkout_coupons = {
241
242 init: function() {
243
244 $( document.body ).on( 'click', '.wcf-submit-coupon', this.submit_coupon );
245 $( document.body ).on( 'click', '.wcf-remove-coupon', this.remove_coupon );
246
247 },
248
249 submit_coupon: function( e ) {
250
251 e.preventDefault();
252 var coupon_wrapper = $('.wcf-custom-coupon-field'),
253 coupon_field = coupon_wrapper.find('.wcf-coupon-code-input'),
254 coupon_value = coupon_field.val();
255
256 if( '' == coupon_value){
257 coupon_field.addClass('field-required');
258 return false;
259 }else{
260 coupon_field.removeClass('field-required');
261 }
262
263 var data = {
264 coupon_code : coupon_value,
265 action : 'wcf_woo_apply_coupon',
266 security : cartflows.wcf_validate_coupon_nonce
267 };
268
269 $.ajax({
270 type: 'POST',
271 url: cartflows.ajax_url,
272 data: data,
273
274 success: function( code ) {
275
276 var coupon_message = $(".wcf-custom-coupon-field");
277 coupon_message.find( '.woocommerce-error, .woocommerce-message' ).remove();
278
279 var data = JSON.parse(code);
280
281 if( data.status == true ) {
282
283 $( document.body ).trigger( 'update_checkout', { update_shipping_method: false } );
284 coupon_message.prepend(data.msg);
285 }else{
286 coupon_message.prepend(data.msg);
287 }
288 },
289
290 });
291 },
292
293 remove_coupon: function( e ) {
294
295 e.preventDefault();
296 var data = {
297 coupon_code : $(this).attr("data-coupon"),
298 action : 'wcf_woo_remove_coupon',
299 security : cartflows.wcf_validate_remove_coupon_nonce
300 };
301
302 $.ajax({
303 type: 'POST',
304 url: cartflows.ajax_url,
305 data: data,
306
307 success: function( code ) {
308
309 var coupon_message = $(".wcf-custom-coupon-field");
310 coupon_message.find( '.woocommerce-error, .woocommerce-message' ).hide();
311
312 if( code ) {
313 $( document.body ).trigger( 'update_checkout', { update_shipping_method: false } );
314 coupon_message.prepend(code);
315
316 }
317 }
318 });
319 },
320 }
321
322 $(document).ready(function($) {
323
324 wcf_persistent_data();
325
326 //wcf_reload_checkout_on_return();
327
328 wcf_custom_field_validation();
329
330 add_custom_class_address_field();
331
332 wcf_checkout_coupons.init();
333
334 });
335
336 })(jQuery);