assets/js/optin-template.js 0000666 00000006313 15214146750 0011776 0 ustar 00 (function($){ /** * Checkout Custom Field Validations * This will collect all the present fields in the woocommerce form and adds an class if the field * is blank */ var wcf_custom_field_validation = function(){ var custom_field_add_class = function (field_value, field_row, field_wrap, field_type){ if ( field_value == '' || 'select' == field_type && field_value == ' ') { if( field_row.hasClass('validate-required') ){ field_wrap.addClass('field-required'); } } else { field_wrap.removeClass('field-required'); } } var fields_wrapper = $('form.woocommerce-checkout #customer_details'), $all_fields = fields_wrapper.find('input, textarea'), $selects = fields_wrapper.find('select'); $all_fields.blur(function(){ var $this = $(this), field_type = $this.attr('type'), field_row = $this.closest('p.form-row'), field_value = $this.val(); custom_field_add_class(field_value, field_row, $this, field_type); }); $selects.blur(function(){ var $this = $(this), field_row = $this.closest('p.form-row'), field_type = 'select', field_wrap = field_row.find('.select2-container--default'), field_value = field_row.find('select').val(); custom_field_add_class(field_value, field_row, field_wrap, field_type); }); } var wcf_check_is_local_storage = function(){ var test = 'test'; try { localStorage.setItem(test, test); localStorage.removeItem(test); return true; } catch(e) { return false; } } var wcf_persistent_data = function(){ if( 'yes' != cartflows.allow_persistance ){ return; } if ( false === wcf_check_is_local_storage() ) { return; } var checkout_cust_form = 'form.woocommerce-checkout #customer_details'; var wcf_form_data = { set : function (){ var checkout_data = []; var checkout_form = $('form.woocommerce-checkout #customer_details'); localStorage.removeItem('cartflows_checkout_form'); checkout_form.find('input[type=text], select, input[type=email], input[type=tel]').each(function(){ checkout_data.push({ name: this.name, value: this.value}); }); cartflows_checkout_form = JSON.stringify(checkout_data); localStorage.setItem('cartflows_checkout_form', cartflows_checkout_form); }, get : function (){ if( localStorage.getItem('cartflows_checkout_form') != null ){ checkout_data = JSON.parse( localStorage.getItem('cartflows_checkout_form') ); for (var i = 0; i < checkout_data.length; i++) { if($('form.woocommerce-checkout [name='+checkout_data[i].name+']').hasClass('select2-hidden-accessible')) { $('form.woocommerce-checkout [name='+checkout_data[i].name+']').selectWoo("val", [checkout_data[i].value]); }else{ $('form.woocommerce-checkout [name='+checkout_data[i].name+']').val(checkout_data[i].value); } } } } } wcf_form_data.get(); $( checkout_cust_form + " input, " + checkout_cust_form + " select").change( function() { wcf_form_data.set(); }); } $(document).ready(function($) { wcf_persistent_data(); wcf_custom_field_validation(); }); })(jQuery); assets/js/rest-api.js 0000666 00000011345 15214146750 0010561 0 ustar 00 (function($){ var CartFlowsAPILocalCache = { /** * timeout for cache in millis * @type {number} */ timeout: 300000, /** * @type {{_: number, data: {}}} **/ data: {}, /** * Remove cache * * @param {[type]} url [description] * @return {[type]} [description] */ remove: function (url) { delete CartFlowsAPILocalCache.data[url]; }, /** * Check cache * * @param {[type]} url [description] * @return {[type]} [description] */ exist: function (url) { return !! CartFlowsAPILocalCache.data[url] && ((new Date().getTime() - CartFlowsAPILocalCache.data[url]._) < CartFlowsAPILocalCache.timeout); }, /** * Get cache * * @param {[type]} url [description] * @return {[type]} [description] */ get: function (url) { return CartFlowsAPILocalCache.data[url].data; }, /** * Set cache * * @param {[type]} url [description] * @param {[type]} cachedData [description] * @param {Function} callback [description] */ set: function (url, cachedData, callback) { CartFlowsAPILocalCache.remove(url); CartFlowsAPILocalCache.data[url] = { _ : new Date().getTime(), data : cachedData }; if( callback && typeof callback == "function"){ callback( cachedData ); } } }; $.ajaxPrefilter(function (options, originalOptions, jqXHR) { if( 'brainstormforce' !== options.author ) { return; } var complete = originalOptions.complete || $.noop, url = originalOptions.url; options.beforeSend = function () { if (CartFlowsAPILocalCache.exist(url)) { var data = CartFlowsAPILocalCache.get(url); // Load from cache. CartFlowsAPI._api_cached_request( data ); return false; } return true; }; options.complete = function (XHR, status) { var data = { args : options.args, items : ( XHR.responseText ) ? JSON.parse( XHR.responseText ) : '', items_count : XHR.getResponseHeader('x-wp-total') || 0, callback : options.callback, // AJAX response. status : status, XHR : XHR, }; CartFlowsAPILocalCache.set(url, data, complete); }; }); CartFlowsAPI = { /** * Debugging. * * @param {mixed} data Mixed data. */ _log: function( data, format ) { if( CartFlowsImportVars.debug ) { if( 'table' === format ) { console.table( data ); } else { var date = new Date(); var time = date.toLocaleTimeString(); if (typeof data == 'object') { console.log('%c ' + JSON.stringify( data ) + ' ' + time, 'background: #ededed; color: #444'); } else { console.log('%c ' + data + ' ' + time, 'background: #ededed; color: #444'); } } } }, _api_url : CartFlowsImportVars.server_rest_url, _api_cached_request: function( data ) { CartFlowsAPI._log( CartFlowsAPILocalCache.data, 'table' ); CartFlowsAPI._log( 'Current time ' + new Date().getTime() ); CartFlowsAPI._log( 'Cache expired in ' + parseInt( CartFlowsAPILocalCache.timeout ) / 1000 + ' seconds.' ); if( undefined !== data.args.trigger && '' !== data.args.trigger ) { $(document).trigger( data.args.trigger, [data] ); } if( data.callback && typeof data.callback == "function"){ data.callback( data ); } }, _api_request: function( args, callback ) { // Set API Request Data. var data = { url : CartFlowsAPI._api_url + args.slug, args : args, callback : callback, author : 'brainstormforce', }; // Set headers. data.headers = CartFlowsImportVars.headers; $.ajax( data ) .done(function( items, status, XHR ) { if( 'success' === status && XHR.getResponseHeader('x-wp-total') ) { var data = { args : args, items : items, items_count : XHR.getResponseHeader('x-wp-total') || 0, callback : callback, // AJAX response. status : status, XHR : XHR, }; if( undefined !== args.trigger && '' !== args.trigger ) { $(document).trigger( args.trigger, [data] ); } } else { $(document).trigger( 'cartflows-api-request-error' ); } if( callback && typeof callback == "function"){ callback( data ); } }) .fail(function( jqXHR, textStatus ) { $(document).trigger( 'cartflows-api-request-fail', [data, jqXHR, textStatus] ); }) .always(function() { $(document).trigger( 'cartflows-api-request-always' ); }); }, }; })(jQuery); assets/js/frontend.js 0000666 00000011715 15214146750 0010655 0 ustar 00 (function($){ /* It will redirect if anyone clicked on link before ready */ $(document).on( 'click', 'a[href*="wcf-next-step"]', function(e) { e.preventDefault(); if( 'undefined' !== typeof cartflows.is_pb_preview && '1' == cartflows.is_pb_preview ) { e.stopPropagation(); return; } window.location.href = cartflows.next_step; return false; }); /* Once the link is ready this will work to stop conditional propogation*/ $(document).on( 'click', '.wcf-next-step-link', function(e) { if( 'undefined' !== typeof cartflows.is_pb_preview && '1' == cartflows.is_pb_preview ) { e.preventDefault(); e.stopPropagation(); return false; } }); // Remove css when oceanwp theme is enabled. var remove_oceanwp_custom_style = function(){ if( 'OceanWP' === cartflows.current_theme && 'default' !== cartflows.page_template){ var style = document.getElementById("oceanwp-style-css"); if( null != style ){ style.remove(); } } }; var trigger_facebook_events = function () { if ('enable' === cartflows.fb_active['facebook_pixel_tracking']) { if (cartflows.fb_active['facebook_pixel_id'] != '') { var facebook_pixel = cartflows.fb_active['facebook_pixel_id']; var initial_checkout_event = cartflows.fb_active['facebook_pixel_initiate_checkout']; var purchase_event = cartflows.fb_active['facebook_pixel_purchase_complete']; var add_payment_info_event = cartflows.fb_active['facebook_pixel_add_payment_info']; var facebook_pixel_for_site = cartflows.fb_active['facebook_pixel_tracking_for_site']; var is_checkout_page = cartflows.is_checkout_page; fbq('init', facebook_pixel); fbq('track', 'PageView', {'plugin': 'CartFlows'}); if ('enable' === initial_checkout_event) { if ('1' === is_checkout_page) { fbq('track', 'AddToCart', cartflows.params); fbq('track', 'InitiateCheckout', cartflows.params); } } if ('enable' === purchase_event) { var order_details = $.cookie('wcf_order_details'); if (typeof order_details !== 'undefined') { fbq('track', 'Purchase', jQuery.parseJSON(order_details)); $.removeCookie('wcf_order_details', {path: '/'}); } } if ('enable' === add_payment_info_event) { jQuery("form.woocommerce-checkout").on('submit', function () { var params = cartflows.params; fbq('track', 'AddPaymentInfo', params); }); } } } } var trigger_google_events = function(){ if( cartflows.wcf_ga_active['enable_google_analytics'] === "enable" ){ // Get all required Data var google_a_id = cartflows.wcf_ga_active['google_analytics_id']; var ga_for_other_page = cartflows.wcf_ga_active['enable_google_analytics_for_site']; var ga_begin_checkout = cartflows.wcf_ga_active['enable_begin_checkout']; var ga_add_payment_info = cartflows.wcf_ga_active['enable_add_payment_info']; var ga_purchase_event = cartflows.wcf_ga_active['enable_purchase_event']; var ga_add_to_cart = cartflows.wcf_ga_active['enable_add_to_cart']; var cookies = $.cookie('wcf_ga_trans_data'); var ga_order_details = jQuery.parseJSON(cookies); var is_checkout_page = cartflows.is_checkout_page; if( 'disable' === ga_for_other_page ){ //Common page view event for cartflows pages. gtag('event', 'page_view', { send_to: google_a_id, non_interaction : true } ); } if( "1" === is_checkout_page ){ var param = cartflows.ga_param; var event_data = { send_to: google_a_id, event_category: "ecommerce", items: param, non_interaction : true } if ('enable' === ga_begin_checkout) { gtag('event', 'begin_checkout', event_data ); } if ( 'enable' === ga_add_to_cart ) { gtag('event', 'add_to_cart', event_data ); } if ( 'enable' === ga_add_payment_info ) { jQuery("form.woocommerce-checkout").on('submit', function () { gtag('event', 'add_payment_info', { send_to: google_a_id, non_interaction : true } ); }); } } if( typeof cookies !== 'undefined' ){ var purchase_data = { send_to: google_a_id, event_category: "ecommerce", transaction_id: ga_order_details.transaction_id, value: ga_order_details.value, currency: ga_order_details.currency, shipping: ga_order_details.shipping, tax: ga_order_details.tax, items: ga_order_details.items, non_interaction: true } if ('enable' === ga_purchase_event) { gtag('event', 'purchase', purchase_data ); $.removeCookie('wcf_ga_trans_data', {path: '/'}); } } } } $(document).ready(function($) { /* Assign the class & link to specific button */ var next_links = $('a[href*="wcf-next-step"]'); if ( next_links.length > 0 && 'undefined' !== typeof cartflows.next_step ) { next_links.addClass( 'wcf-next-step-link' ); next_links.attr( 'href', cartflows.next_step ); } remove_oceanwp_custom_style(); if( '1' !== cartflows.is_pb_preview ) { trigger_facebook_events(); trigger_google_events(); } }); })(jQuery); assets/js/checkout-template.js 0000666 00000024445 15214146750 0012460 0 ustar 00 (function($){ var wcf_reload_checkout_on_return = function() { var vis = (function(){ var stateKey, eventKey, keys = { hidden: "visibilitychange", webkitHidden: "webkitvisibilitychange", mozHidden: "mozvisibilitychange", msHidden: "msvisibilitychange" }; for (stateKey in keys) { if (stateKey in document) { eventKey = keys[stateKey]; break; } } return function(c) { if (c) document.addEventListener(eventKey, c); return !document[stateKey]; } })(); var visible = vis(); // gives current state vis(function(){ if ( vis() ) { location.reload(); } }); } var wcf_show_loader = function() { $('.wcf-loader-bg').addClass('show'); } var wcf_hide_loader = function() { $('.wcf-loader-bg').removeClass('show'); } /** * Checkout Custom Field Validations * This will collect all the present fields in the woocommerce form and adds an class if the field * is blank */ var wcf_custom_field_validation = function(){ var custom_field_add_class = function (field_value, field_row, field_wrap, field_type){ if ( field_value == '' || 'select' == field_type && field_value == ' ') { if( field_row.hasClass('validate-required') ){ field_wrap.addClass('field-required'); } } else { field_wrap.removeClass('field-required'); } } var fields_wrapper = $('form.woocommerce-checkout #customer_details'), $all_fields = fields_wrapper.find('input, textarea'), $selects = fields_wrapper.find('select'); $all_fields.blur(function(){ var $this = $(this), field_type = $this.attr('type'), field_row = $this.closest('p.form-row'), field_value = $this.val(); custom_field_add_class(field_value, field_row, $this, field_type); }); $selects.blur(function(){ var $this = $(this), field_row = $this.closest('p.form-row'), field_type = 'select', field_wrap = field_row.find('.select2-container--default'), field_value = field_row.find('select').val(); custom_field_add_class(field_value, field_row, field_wrap, field_type); }); } /** * Billing and shipping field add class form-row-first and form-row-last * To add those classes to change the layout of the field */ var add_custom_class_address_field = function(){ // For Billing address fields. var $get_checkout_style_layout = $('.cartflows-container').find('.wcf-embed-checkout-form-two-column'), $get_bill_addr_field_one = $('.wcf-embed-checkout-form .woocommerce-checkout').find('#billing_address_1_field'), $get_bill_addr_field_two = $('.wcf-embed-checkout-form .woocommerce-checkout').find('#billing_address_2_field'); if( $get_bill_addr_field_one.hasClass('form-row-wide') ){ $get_bill_addr_field_one.removeClass('form-row-wide'); $get_bill_addr_field_one.addClass('form-row-first'); } if( $get_bill_addr_field_two.hasClass('form-row-wide') ){ $get_bill_addr_field_two.removeClass('form-row-wide'); $get_bill_addr_field_two.addClass('form-row-last'); if( $get_bill_addr_field_two.find('label').hasClass('screen-reader-text') ){ $get_bill_addr_field_two.addClass('mt20'); }else{ $get_bill_addr_field_two.removeClass('mt20'); } } // For Shipping address fields. var $get_ship_addr_field_one = $('.wcf-embed-checkout-form .woocommerce-checkout').find('#shipping_address_1_field'); var $get_ship_addr_field_two = $('.wcf-embed-checkout-form .woocommerce-checkout').find('#shipping_address_2_field'); if( $get_ship_addr_field_one.hasClass('form-row-wide') ){ $get_ship_addr_field_one.removeClass('form-row-wide'); $get_ship_addr_field_one.addClass('form-row-first'); } if( $get_ship_addr_field_two.hasClass('form-row-wide') ){ $get_ship_addr_field_two.removeClass('form-row-wide'); $get_ship_addr_field_two.addClass('form-row-last'); if( $get_ship_addr_field_two.find('label').hasClass('screen-reader-text') ){ $get_ship_addr_field_two.addClass('mt20'); }else{ $get_ship_addr_field_two.removeClass('mt20'); } } function address_fields_management( type ) { var wrapper = $('.woocommerce-' + type + '-fields' ); setTimeout(function() { var column_three = wrapper.find('.wcf-column-33'); column_three.css( 'clear', '' ); column_three.first().css( 'clear', 'left' ); // column_three.first().css( 'margin-right', '10px' ); // column_three.last().css( 'margin-left', '10px' ); }, 100); setTimeout(function() { var column_fifty = wrapper.find('.wcf-column-50'); column_fifty.css( 'clear', '' ); column_fifty.last().css( 'clear', 'left' ); }, 100); } // address_fields_management( 'billing' ); // address_fields_management( 'shipping' ); var billing_country = $('.wcf-embed-checkout-form .woocommerce-checkout').find('#billing_country'); billing_country.on( 'change', function(e) { // address_fields_management( 'billing' ); } ); var shipping_country = $('.wcf-embed-checkout-form .woocommerce-checkout').find('#shipping_country'); shipping_country.on( 'change', function(e) { // address_fields_management( 'shipping' ); } ); } var wcf_check_is_local_storage = function(){ var test = 'test'; try { localStorage.setItem(test, test); localStorage.removeItem(test); return true; } catch(e) { return false; } } var wcf_persistent_data = function(){ if( 'yes' != cartflows.allow_persistance ){ return; } if ( false === wcf_check_is_local_storage() ) { return; } var checkout_cust_form = 'form.woocommerce-checkout #customer_details'; var wcf_form_data = { set : function (){ var checkout_data = []; var checkout_form = $('form.woocommerce-checkout #customer_details'); localStorage.removeItem('cartflows_checkout_form'); checkout_form.find('input[type=text], select, input[type=email], input[type=tel]').each(function(){ checkout_data.push({ name: this.name, value: this.value}); }); cartflows_checkout_form = JSON.stringify(checkout_data); localStorage.setItem('cartflows_checkout_form', cartflows_checkout_form); }, get : function (){ if( localStorage.getItem('cartflows_checkout_form') != null ){ checkout_data = JSON.parse( localStorage.getItem('cartflows_checkout_form') ); for (var i = 0; i < checkout_data.length; i++) { if($('form.woocommerce-checkout [name='+checkout_data[i].name+']').hasClass('select2-hidden-accessible')) { $('form.woocommerce-checkout [name='+checkout_data[i].name+']').selectWoo("val", [checkout_data[i].value]); }else{ $('form.woocommerce-checkout [name='+checkout_data[i].name+']').val(checkout_data[i].value); } } } } } wcf_form_data.get(); $( checkout_cust_form + " input, " + checkout_cust_form + " select").change( function() { wcf_form_data.set(); }); } $(window).load(function(){ $( 'body' ).trigger( 'update_checkout' ); }); var wcf_checkout_coupons = { init: function() { $( document.body ).on( 'click', '.wcf-submit-coupon', this.submit_coupon ); $( document.body ).on( 'click', '.wcf-remove-coupon', this.remove_coupon ); }, submit_coupon: function( e ) { e.preventDefault(); var coupon_wrapper = $('.wcf-custom-coupon-field'), coupon_field = coupon_wrapper.find('.wcf-coupon-code-input'), coupon_value = coupon_field.val(); if( '' == coupon_value){ coupon_field.addClass('field-required'); return false; }else{ coupon_field.removeClass('field-required'); } var data = { coupon_code : coupon_value, action : 'wcf_woo_apply_coupon', security : cartflows.wcf_validate_coupon_nonce }; $.ajax({ type: 'POST', url: cartflows.ajax_url, data: data, success: function( code ) { var coupon_message = $(".wcf-custom-coupon-field"); coupon_message.find( '.woocommerce-error, .woocommerce-message' ).remove(); var data = JSON.parse(code); if( data.status == true ) { $( document.body ).trigger( 'update_checkout', { update_shipping_method: false } ); coupon_message.prepend(data.msg); }else{ coupon_message.prepend(data.msg); } }, }); }, remove_coupon: function( e ) { e.preventDefault(); var data = { coupon_code : $(this).attr("data-coupon"), action : 'wcf_woo_remove_coupon', security : cartflows.wcf_validate_remove_coupon_nonce }; $.ajax({ type: 'POST', url: cartflows.ajax_url, data: data, success: function( code ) { var coupon_message = $(".wcf-custom-coupon-field"); coupon_message.find( '.woocommerce-error, .woocommerce-message' ).hide(); if( code ) { $( document.body ).trigger( 'update_checkout', { update_shipping_method: false } ); coupon_message.prepend(code); } } }); }, } var wcf_remove_cart_products = function(){ $( document.body ).on( 'click', '#wcf-embed-checkout-form .remove', function(e){ e.preventDefault(); var p_id = $(this).attr("data-id"); var data = { p_key : $(this).attr("data-item-key"), p_id : p_id, action : 'wcf_woo_remove_cart_product', security : cartflows.wcf_validate_remove_cart_product_nonce }; $.ajax({ type: 'POST', url: cartflows.ajax_url, data: data, success: function( response ) { var data = JSON.parse(response); if( data.need_shipping == false ) { // $('#wcf-embed-checkout-form').find('#ship-to-different-address-checkbox').hide(); $('#wcf-embed-checkout-form').find('#ship-to-different-address-checkbox').attr("checked",false); } $('#wcf-embed-checkout-form').find('.woocommerce-notices-wrapper').first().html(data.msg); $(document).trigger('cartflows_remove_product',[p_id]); $('#wcf-embed-checkout-form').trigger('update_checkout'); } }); }); } $(document).ready(function($) { wcf_persistent_data(); //wcf_reload_checkout_on_return(); wcf_custom_field_validation(); add_custom_class_address_field(); wcf_remove_cart_products(); wcf_checkout_coupons.init(); }); })(jQuery); assets/js/import.js 0000666 00000135035 15214146750 0010352 0 ustar 00 /** * AJAX Request Queue * * - add() * - remove() * - run() * - stop() * * @since 1.0.0 */ var CartFlowsAjaxQueue = (function() { var requests = []; return { /** * Add AJAX request * * @since 1.0.0 */ add: function(opt) { requests.push(opt); }, /** * Remove AJAX request * * @since 1.0.0 */ remove: function(opt) { if( jQuery.inArray(opt, requests) > -1 ) requests.splice($.inArray(opt, requests), 1); }, /** * Run / Process AJAX request * * @since 1.0.0 */ run: function() { var self = this, oriSuc; if( requests.length ) { oriSuc = requests[0].complete; requests[0].complete = function() { if( typeof(oriSuc) === 'function' ) oriSuc(); requests.shift(); self.run.apply(self, []); }; jQuery.ajax(requests[0]); } else { self.tid = setTimeout(function() { self.run.apply(self, []); }, 1000); } }, /** * Stop AJAX request * * @since 1.0.0 */ stop: function() { requests = []; clearTimeout(this.tid); } }; }()); (function($){ CartFlowsImport = { doc : $( document ), wrap : $( '.wcf-flow-steps-data-wrap' ), inner : $( '.wcf-flow-steps-data-wrap-importer' ), post_id : $( '#post_ID' ).val(), _ref : null, _api_step_type : {}, _api_params : {}, all_steps : 0, remaining_steps : 0, remaining_install_plugins : 0, remaining_active_plugins : 0, woo_required_steps: [ 'checkout', 'upsell', 'downsell', 'thankyou', 'optin' ], step_order: [ 'landing', 'checkout', 'upsell', 'downsell', 'thankyou', 'optin' ], new_step_names: { 'landing': 'Landing', 'checkout': 'Checkout (Woo)', 'upsell': 'Upsell (Woo)', 'downsell': 'Downsell (Woo)', 'thankyou': 'Thank You (Woo)', 'optin' : 'Optin (Woo)' }, /** * Init */ init: function() { this._bind(); if( 'other' !== CartFlowsImportVars.default_page_builder ) { if( $('.post-type-cartflows_flow').hasClass('edit-php') ) { this._process_cache_remote_flows(); } if( $('.post-type-cartflows_flow').hasClass('post-php') ) { this._process_cache_remote_steps(); } } if( $('.post-type-cartflows_flow').hasClass('edit-php') && null !== this._getParamFromURL('add-new-flow') ) { this._render_remote_flows(); } if( $('.post-type-cartflows_flow').hasClass('post-php') && null !== this._getParamFromURL('add-new-step') ) { this._render_remote_steps(); } if( this._getParamFromURL('highlight-step-id') ) { var selector = $('.wcf-step-wrap[data-id="'+this._getParamFromURL('highlight-step-id')+'"]'); if( selector.length ) { $('html, body').animate({ scrollTop: selector.offset().top }, 1500); } } if( $('.post-type-cartflows_flow').hasClass('edit-php') ) { var $product_screen = $( '.edit-php.post-type-cartflows_flow' ), $title_action = $product_screen.find( '.page-title-action:first' ); $title_action.after('Export' ); $title_action.after('Import'); } }, /** * Get URL param. */ _getParamFromURL: function(name, url) { if (!url) url = window.location.href; name = name.replace(/[\[\]]/g, "\\$&"); var regex = new RegExp("[?&]" + name + "(=([^]*)|&|#|$)"), results = regex.exec(url); if (!results) return null; if (!results[2]) return ''; return decodeURIComponent(results[2].replace(/\+/g, " ")); }, /** * Binds events */ _bind: function() { var self = CartFlowsImport; self.doc.on('click', '.wcf-install-plugin', self._install_plugin); self.doc.on( 'cartflows-api-request-fail', self._api_request_failed ); self.doc.on('click', '#wcf-get-started-steps a, .wcf-create-from-scratch-link', self._toggle_ready_templates); self.doc.on('click', '.cartflows-flow-import-blank', self._create_default_flow); self.doc.on('click', '#wcf-remote-flow-importer .wcf-page-builder-links a', self._filterFlowPageBuilderClick); self.doc.on('click', '#wcf-remote-step-importer #wcf-categories .step-type-filter-links a', self._filterBlankStepCategoryClick ); self.doc.on('change', '#wcf-remote-step-importer #wcf-scratch-steps-categories .step-type-filter-links', self._filterBlankStepCategoryChange ); self.doc.on('click', '#wcf-get-started-steps', self._filterBlankStepCategoryChange ); self.doc.on('click', '#wcf-remote-step-importer .wcf-page-builder-links a', self._filterStepPageBuilderClick ); self.doc.on('click' , '.cartflows-step-import-blank:not(.get-pro)', self._create_blank_step); self.doc.on('click' , '#wcf-remote-step-importer .cartflows-step-import', self._process_import_step); self.doc.on('click' , '#wcf-remote-flow-importer .cartflows-step-import', self._process_import_flow); self.doc.on('click' , '.cartflows-preview-flow-step', self._preview_individual); self.doc.on( 'add_template_to_page-fail', self._add_template_to_page_fail); $( 'body' ).on('thickbox:iframe:loaded', self._previewLoaded ); // Event's for API request. $( document ).on('keyup input', '#wcf-remote-step-importer .wcf-flow-search-input', self._remote_step_search ); $( document ).on('click', '.actions a', self._previewResponsive ); $( document ).on( 'click', '.page-title-action:first', self._render_remote_flows ); $( document ).on( 'click', '.wcf-trigger-popup', self._render_remote_steps ); $( document ).on( 'click', '.wcf-templates-popup-overlay', self._close_template_popup ); $( document ).on( 'click', '.wcf-popup-close-wrap .close-icon', self._close_template_popup ); $( document ).on('wp-plugin-install-success' , self._installSuccess); $( document ).on( 'click', '.wcf-activate-wc', self._installWc ); }, _install_plugin: function( event ) { event.preventDefault(); var btn = $( this ); if( btn.hasClass('updating-message') ) { return; } $('#wcf-remote-flow-importer').addClass('request-process'); $('#wcf-remote-step-importer').addClass('request-process'); btn.addClass('updating-message button'); var page_builder_plugins = CartFlowsImportVars.required_plugins[ CartFlowsImportVars.default_page_builder ]['plugins']; $.each( page_builder_plugins, function( index, plugin ) { if( 'install' === plugin.status ) { CartFlowsImport.remaining_install_plugins++; } if( 'activate' === plugin.status ) { CartFlowsImport.remaining_active_plugins++; } }); // Have any plugin for install? if( CartFlowsImport.remaining_install_plugins ) { CartFlowsImport._install_all_plugins(); } else if( CartFlowsImport.remaining_active_plugins ) { CartFlowsImport._activate_all_plugins(); } else { if( $('#wcf-remote-flow-importer').length ) { CartFlowsImport._cache_remote_flows(); } else if( $('#wcf-remote-step-importer').length ) { CartFlowsImport._cache_remote_steps(); } } }, _install_all_plugins: function() { var page_builder_plugins = CartFlowsImportVars.required_plugins[ CartFlowsImportVars.default_page_builder ]['plugins']; $.each( page_builder_plugins, function( index, plugin ) { if( 'install' === plugin.status ) { // Add each plugin activate request in Ajax queue. // @see wp-admin/js/updates.js wp.updates.queue.push( { action: 'install-plugin', // Required action. data: { slug: plugin.slug } } ); } }); // Required to set queue. wp.updates.queueChecker(); }, _activate_all_plugins: function() { if( ! CartFlowsImport.remaining_active_plugins && ! CartFlowsImport.remaining_install_plugins ) { if( $('#wcf-remote-flow-importer').length ) { CartFlowsImport._cache_remote_flows(); } else if( $('#wcf-remote-step-importer').length ) { CartFlowsImport._cache_remote_steps(); } } else { var page_builder_plugins = CartFlowsImportVars.required_plugins[ CartFlowsImportVars.default_page_builder ]['plugins']; // Activate ALl Plugins. CartFlowsAjaxQueue.stop(); CartFlowsAjaxQueue.run(); $.each( page_builder_plugins, function( index, plugin ) { if( 'activate' === plugin.status ) { CartFlowsAjaxQueue.add({ url: CartFlowsImportVars.ajaxurl, type: 'POST', data: { action : 'cartflows_activate_plugin', plugin_init : plugin.init, security : CartFlowsImportVars.cartflows_activate_plugin_nonce }, success: function( result ) { CartFlowsImport.remaining_active_plugins--; if( ! CartFlowsImport.remaining_active_plugins && ! CartFlowsImport.remaining_install_plugins ) { if( $('#wcf-remote-flow-importer').length ) { CartFlowsImport._cache_remote_flows(); } else if( $('#wcf-remote-step-importer').length ) { CartFlowsImport._cache_remote_steps(); } } } }); } }); } }, _installSuccess: function( event, response ) { event.preventDefault(); if( 'no' === CartFlowsImportVars.is_wc_activated ) { CartFlowsImport._activateWc(); } var page_builder_plugins = CartFlowsImportVars.required_plugins[ CartFlowsImportVars.default_page_builder ]['plugins']; $.each( page_builder_plugins, function( index, plugin ) { if( 'install' === plugin.status && response.slug === plugin.slug ) { $.ajax({ url : ajaxurl, type : 'POST', data : { action : 'cartflows_activate_plugin', plugin_init : plugin.init, security : CartFlowsImportVars.cartflows_activate_plugin_nonce }, }) .done(function( request, status, XHR ) { CartFlowsImport.remaining_install_plugins--; if( ! CartFlowsImport.remaining_install_plugins ) { CartFlowsImport._activate_all_plugins(); } }); } }); }, _api_request_failed: function( event, data, jqXHR, textStatus ) { if( 'error' == textStatus ) { if( ! $('#wcf-remote-content-failed').length ) { $('#wcf-ready-templates').html( wp.template('cartflows-website-unreachable') ); } } }, _toggle_ready_templates: function( event ) { event.preventDefault(); var slug = $(this).data('slug') || ''; $('#wcf-get-started-steps').find('a').removeClass('current'); $('#wcf-get-started-steps').find('a[data-slug="'+slug+'"]').addClass('current'); if( 'canvas' == slug ) { $('#wcf-ready-templates').hide(); $('#wcf-start-from-scratch').show(); } else { $('#wcf-ready-templates').show(); $('#wcf-start-from-scratch').hide(); } if( ! $('.wcf-page-builder-notice').length && $('#wcf-remote-step-importer').length ) { CartFlowsImport._showSteps(); } }, _switch_step_tab: function( event ) { event.preventDefault();//stop browser to take action for clicked anchor //get displaying tab content jQuery selector var active_tab_selector = $('.wcf-tab > li.active > a').attr('href'); //find actived navigation and remove 'active' css var actived_nav = $('.wcf-tab > li.active'); actived_nav.removeClass('active'); //add 'active' css into clicked navigation $(this).parents('li').addClass('active'); //hide displaying tab content $(active_tab_selector).removeClass('active'); $(active_tab_selector).addClass('hide'); //show target tab content var target_tab_selector = $(this).attr('href'); $(target_tab_selector).removeClass('hide'); $(target_tab_selector).addClass('active'); }, /** * Search Site. * * Prepare Before API Request: * - Remove Inline Height * - Added 'hide-me' class to hide the 'No more sites!' string. * - Added 'loading-content' for body. * - Show spinner. */ _remote_step_search: function( event ) { event.preventDefault();//stop browser to take action for clicked anchor // Remove all filter classes. $('.step-type-filter-links').find('option').removeClass('current'); $('.step-type-filter-links').find('option:first-child').addClass('current'); window.clearTimeout(CartFlowsImport._ref); CartFlowsImport._ref = window.setTimeout(function () { CartFlowsImport._ref = null; CartFlowsImport._showSteps(); }, 500); }, /** * Responsive On Click. */ _previewResponsive: function( event ) { event.preventDefault(); var icon = $(this).find('.dashicons'); var viewClass = icon.attr('data-view') || ''; $('#TB_window').removeClass( 'desktop tablet mobile' ); $('#TB_window').addClass( viewClass ); $('.actions .dashicons').removeClass('active'); icon.addClass('active'); $('#TB_iframeContent').removeClass(); $('#TB_iframeContent').addClass( viewClass ); }, /** * On Filter Clicked */ _filterStepPageBuilderClick: function( event ) { event.preventDefault(); $(this).parents('ul').find('a').removeClass('current'); $(this).addClass('current'); var step_type = $('.step-type-filter-links .current').data('slug') || ''; if ( 'upsell' === step_type || 'downsell' === step_type ) { $( '.wcf-template-notice' ).show(); }else{ $( '.wcf-template-notice' ).hide(); } $('.wcf-page-builder-notice').html( '' ); $('#wcf-remote-step-list').html( '' ); CartFlowsImport._showSteps(); }, _filterBlankStepCategoryClick: function( event ) { event.preventDefault(); $('.wcf-page-builder-notice').html( '' ); var val = $(this).data('group') || ''; if( val ) { $('#wcf-scratch-steps-categories .step-type-filter-links').val( val ); $('#wcf-scratch-steps-categories .step-type-filter-links option').removeClass('current'); $('#wcf-scratch-steps-categories .step-type-filter-links option[data-group="'+val+'"]').addClass('current'); } $('.step-type-filter-links').find('a').removeClass('current'); $(this).addClass('current'); $step_type = $(this).data('slug'); if ( 'upsell' === $step_type || 'downsell' === $step_type ) { $( '.wcf-template-notice' ).show(); }else{ $( '.wcf-template-notice' ).hide(); } if( '' == CartFlowsImportVars._is_pro_active && ( 'upsell' == $step_type || 'downsell' == $step_type ) ) { $('.cartflows-step-import-blank').text( 'Get Pro' ); $('.cartflows-step-import-blank').attr( 'href', CartFlowsImportVars.domain_url ); $('.cartflows-step-import-blank').attr( 'target', '_blank' ); $('.cartflows-step-import-blank').addClass('get-pro'); // // $('#wcf-remote-step-list').find('.cartflows-step-import-blank').attr( 'class', 'button button-primary' ); } else { $('.cartflows-step-import-blank').text( 'Create Step' ); $('.cartflows-step-import-blank').removeClass( 'get-pro' ); $('.cartflows-step-import-blank').removeAttr( 'target' ); } $('#wcf-remote-step-list').html( '' ); CartFlowsImport._showSteps(); }, _filterBlankStepCategoryChange: function( event ) { event.preventDefault(); $(".wcf-notice-wrap").remove(); $('.cartflows-step-import-blank').css('pointer-events', 'auto').removeClass('disabled'); var val = $('.step-type-filter-links').find('option:selected').val() || ''; if( val ) { $('.step-type-filter-links').val( val ); $('.step-type-filter-links').find('a').removeClass('current'); $('.step-type-filter-links').find('a[data-group="'+val+'"]').addClass('current'); } $('.step-type-filter-links').find('option').removeClass('current'); $('.step-type-filter-links').find('option:selected').addClass('current'); $step_type = $('.step-type-filter-links').find('option:selected').data('slug'); if ( ( 'no' === CartFlowsImportVars.is_wc_installed || 'no' === CartFlowsImportVars.is_wc_activated ) && ( 'upsell' === $step_type || 'downsell' === $step_type || 'checkout' === $step_type || 'thankyou' === $step_type)) { $(".cartflows-step-import-blank").after("
You need WooCommerce plugin installed and actived to use this product flow.
Click here to install and activate WooCommerce
Please select the step type.
Upgrade to Pro for adding more than one '+step_type.charAt(0).toUpperCase()+step_type.slice(1)+' step.