PluginProbe
CartFlows – Funnel Builder & Checkout Plugin for WooCommerce / 1.0.4
CartFlows – Funnel Builder & Checkout Plugin for WooCommerce v1.0.4
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.0.4, at assets/js/checkout-template.js

233 lines 6.3 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 $inputs = $('form.woocommerce-checkout').find('input');
53
54 $inputs.blur(function(){
55 var $this = $(this),
56 field_id = $this.attr('id'),
57 field_value = $this.val();
58
59 if ( field_value == '')
60 {
61 if( field_id != 'billing_company' && field_id != 'billing_address_2' && field_id != 'shipping_company' && field_id != 'shipping_address_2'){
62 $this.addClass('field-required');
63 }
64 }
65 });
66 }
67
68 /**
69 * Billing and shipping field add class form-row-first and form-row-last
70 * To add those classes to change the layout of the field
71 */
72 var add_custom_class_address_field = function(){
73 // For Billing address fields.
74 var $get_checkout_style_layout = $('.cartflows-container').find('.wcf-embed-checkout-form-two-column'),
75 $get_bill_addr_field_one = $('.wcf-embed-checkout-form .woocommerce-checkout').find('#billing_address_1_field'),
76 $get_bill_addr_field_two = $('.wcf-embed-checkout-form .woocommerce-checkout').find('#billing_address_2_field');
77
78 if( $get_bill_addr_field_one.hasClass('form-row-wide') ){
79 $get_bill_addr_field_one.removeClass('form-row-wide');
80 $get_bill_addr_field_one.addClass('form-row-first');
81 }
82
83 if( $get_bill_addr_field_two.hasClass('form-row-wide') ){
84 $get_bill_addr_field_two.removeClass('form-row-wide');
85 $get_bill_addr_field_two.addClass('form-row-last');
86 $get_bill_addr_field_two.addClass('mt20');
87 }
88
89 // For Shipping address fields.
90 var $get_ship_addr_field_one = $('.wcf-embed-checkout-form .woocommerce-checkout').find('#shipping_address_1_field');
91 var $get_ship_addr_field_two = $('.wcf-embed-checkout-form .woocommerce-checkout').find('#shipping_address_2_field');
92 if( $get_ship_addr_field_one.hasClass('form-row-wide') ){
93 $get_ship_addr_field_one.removeClass('form-row-wide');
94 $get_ship_addr_field_one.addClass('form-row-first');
95 }
96
97 if( $get_ship_addr_field_two.hasClass('form-row-wide') ){
98 $get_ship_addr_field_two.removeClass('form-row-wide');
99 $get_ship_addr_field_two.addClass('form-row-last');
100 $get_ship_addr_field_two.addClass('mt20');
101 }
102
103 function address_fields_management( type ) {
104
105 var wrapper = $('.woocommerce-' + type + '-fields' );
106
107 setTimeout(function() {
108 var column_three = wrapper.find('.wcf-form-col-3');
109 column_three.css( 'clear', '' );
110 column_three.first().css( 'clear', 'left' );
111 }, 100);
112 }
113
114 address_fields_management( 'billing' );
115 address_fields_management( 'shipping' );
116
117 var billing_country = $('.wcf-embed-checkout-form .woocommerce-checkout').find('#billing_country');
118
119 billing_country.on( 'change', function(e) {
120
121 address_fields_management( 'billing' );
122 } );
123
124 var shipping_country = $('.wcf-embed-checkout-form .woocommerce-checkout').find('#shipping_country');
125
126 shipping_country.on( 'change', function(e) {
127
128 address_fields_management( 'shipping' );
129
130 } );
131 }
132
133 var wcf_check_is_local_storage = function(){
134 var test = 'test';
135 try {
136 localStorage.setItem(test, test);
137 localStorage.removeItem(test);
138 return true;
139 } catch(e) {
140 return false;
141 }
142 }
143
144 var wcf_persistent_data = function(){
145
146 if ( false === wcf_check_is_local_storage() ) {
147 return;
148 }
149
150 var wcf_form_data = {
151 set : function (){
152
153 var checkout_data = [];
154 var checkout_form = $('form.woocommerce-checkout');
155
156 localStorage.removeItem('cartflows_checkout_form');
157
158 checkout_form.find('input[type=text], select').each(function(){
159 checkout_data.push({ name: this.name, value: this.value});
160 });
161
162 cartflows_checkout_form = JSON.stringify(checkout_data);
163 localStorage.setItem('cartflows_checkout_form', cartflows_checkout_form);
164 },
165 get : function (){
166
167
168 if( localStorage.getItem('cartflows_checkout_form') != null ){
169
170 checkout_data = JSON.parse( localStorage.getItem('cartflows_checkout_form') );
171
172 for (var i = 0; i < checkout_data.length; i++) {
173 $('form.woocommerce-checkout [name='+checkout_data[i].name+']').val(checkout_data[i].value);
174 }
175 }
176 }
177 }
178
179 wcf_form_data.get();
180
181 $("form.woocommerce-checkout input, form.woocommerce-checkout select").change( function() {
182 wcf_form_data.set();
183 });
184 }
185
186
187 $(document).ready(function($) {
188
189 wcf_persistent_data();
190
191 //wcf_reload_checkout_on_return();
192
193 wcf_custom_field_validation();
194
195 add_custom_class_address_field();
196
197 });
198
199
200 var cf_checkout_coupons = {
201
202 init: function() {
203 $( document.body ).on( 'click', '.cf-submit-coupon', this.submit_coupon );
204 },
205
206 submit_coupon: function( e ) {
207
208 e.preventDefault();
209
210 var data = {
211 coupon_code: $(this).closest('.wcf-custom-coupon-field').find('.cf-coupon-code-input').val(),
212 action: 'cf_woo_apply_coupon',
213 security: cartflows.cf_validate_coupon_nonce
214 };
215
216 $.ajax({
217 type: 'POST',
218 url: cartflows.ajax_url,
219 data: data,
220 success: function( code ) {
221
222 if( code ) {
223 $( document.body ).trigger( 'update_checkout', { update_shipping_method: false } );
224 }
225 }
226 });
227 }
228 }
229
230 cf_checkout_coupons.init();
231
232 })(jQuery);
233