var capitalize_letter = function(str) { str = str.split(" "); str1 = str; if(str1[0] == ""){ str=[]; str.push(str1[1]); } for (var i = 0, x = str.length; i < x; i++) { if(str[i] != "") str[i] = str[i][0].toUpperCase() + str[i].substr(1); } return str.join(" "); } var format_date = function(date, format = 'mm-dd-yyyy', separator = '/') { var date = new Date(date), month = date.getMonth()+1, dt = date.getDate(), year = date.getFullYear(), format_dt = null; switch (format) { case 'mm-dd-yyyy': format_dt = month + separator + dt + separator + year break; default: break; } return format_dt; } var is_test_site = function(domain = null) { if (!domain) domain = location.host; var allowed_hosts = ['jordanmederich.com','nstestsignup.dropfunnelsapp.com','nadtestgateway.dropfunnels.com']; if (allowed_hosts.includes(domain)) return true; return false; } function copyToClipboard(elementId) { const text = document.getElementById(elementId).innerText; navigator.clipboard.writeText(text).then(() => { const button = document.querySelector(`button[onclick="copyToClipboard('${elementId}')"]`); if (button) { // Change button style to indicate successful copy button.classList.add('copied'); // Revert style after 1 second setTimeout(() => { button.classList.remove('copied'); }, 1000); } }).catch(err => { console.error("Error copying text: ", err); }); } jQuery(document).ready(function($) { const initializePhoneMask = () => { document.querySelectorAll(".phone-mask:not(.initialized)").forEach(input => { // Fetch the restricted countries from the data-countries attribute const allowedCountries = input.hasAttribute("data-countries") ? JSON.parse(input.getAttribute("data-countries")) : []; const twoStepPhone = input.closest(".fl-builder-form-outter")?.querySelector("input[name='fl_builder_phone']"); const optinPhone = input.closest(".fl-form-field")?.querySelector("input[name='fl-subscribe-form-phone']"); let errorMessageContainer = null; if (twoStepPhone) { errorMessageContainer = input.closest(".fl-builder-form-outter").querySelector(".fl-builder-two_step_checkout-error-message") || input.closest(".fl-builder-form-outter").querySelector(".fl-builder-checkout_form-error-message"); } else if (optinPhone) { errorMessageContainer = input.closest(".fl-form-field").querySelector(".fl-form-error-message"); } if (typeof intlTelInput !== "undefined") { // Function to update the target field without spaces const updateField = () => { const fullNumber = iti.getNumber().replace(/\s+/g, ""); // Remove all spaces if (twoStepPhone) { twoStepPhone.value = fullNumber; } if (optinPhone) { optinPhone.value = fullNumber; } }; if(allowedCountries.length > 0) { var iti = intlTelInput(input, { initialCountry: allowedCountries[0], separateDialCode: true, strictMode: true, onlyCountries: allowedCountries.length > 0 ? allowedCountries : [], // Set restricted countries or allow all utilsScript: "https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.19/js/utils.js", }); // Autofill phone number and set country code if provided if (typeof autofill_fields !== 'undefined') { if (typeof autofill_fields.phone !== 'undefined') { // Set phone number input.value = autofill_fields.phone; iti.setNumber(autofill_fields.phone); } if (typeof autofill_fields.country_code !== 'undefined') { // Set country code const countryExists = allowedCountries.includes(autofill_fields.country_code); if (countryExists) { iti.setCountry(autofill_fields.country_code); } } // Trigger updateField after setting the number setTimeout(() => { updateField(); }, 100); // Adding a delay ensures the library updates the number correctly } } else { var iti = intlTelInput(input, { initialCountry: "auto", separateDialCode: true, strictMode: true, geoIpLookup: callback => { fetch("https://ipapi.co/json") .then(res => res.json()) .then(data => callback(data.country_code)) .catch(() => callback("us")); }, utilsScript: "https://cdnjs.cloudflare.com/ajax/libs/intl-tel-input/17.0.19/js/utils.js", }); // Autofill phone number and set country code if provided if (typeof autofill_fields !== 'undefined') { if (typeof autofill_fields.phone !== 'undefined') { // Set phone number input.value = autofill_fields.phone; iti.setNumber(autofill_fields.phone); } if (typeof autofill_fields.country_code !== 'undefined') { // Set country code iti.setCountry(autofill_fields.country_code); } // Trigger updateField after setting the number setTimeout(() => { updateField(); }, 100); // Adding a delay ensures the library updates the number correctly } } input.classList.add('initialized'); const validatePhoneWithAPI = async (phoneNumber, countryCode) => { try { const response = await fetch(df_ajax.ajaxurl, { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded", }, body: new URLSearchParams({ action: "api_validate_phone_number", number: phoneNumber, country_code: countryCode, }), }); if (!response.ok) { throw new Error(`Request failed with status ${response.status}`); } const data = await response.json(); if (data.success) { return data.data.valid; } else { return false; } } catch (error) { console.error("Error validating phone number:", error); return false; } }; // Validate phone number and show error const validatePhoneNumber = async () => { if (errorMessageContainer) { if (optinPhone) { errorMessageContainer.style.display = "none"; } errorMessageContainer.textContent = ""; } $('#next').attr('disabled', false); $('.fl-form-button a').removeClass('fl-form-button-disabled'); $('.fl-builder-checkout_form_select_gateway button').attr('disabled', false); const phoneNumber = iti.getNumber(); const countryCode = iti.getSelectedCountryData().iso2; if (!iti.isValidNumber()) { if (errorMessageContainer) { if (optinPhone) { errorMessageContainer.style.display = "block"; } errorMessageContainer.textContent = "Please enter a valid phone number."; } $('#next').attr('disabled', true); $('.fl-form-button a').addClass('fl-form-button-disabled'); $('.fl-builder-checkout_form_select_gateway button').attr('disabled', true); return; } try { const isValidAPI = await validatePhoneWithAPI(phoneNumber, countryCode); if (!isValidAPI) { if (errorMessageContainer) { errorMessageContainer.style.display = "block"; errorMessageContainer.textContent = "Phone number is not valid"; } $('#next').attr('disabled', true); $('.fl-form-button a').addClass('fl-form-button-disabled'); $('.fl-builder-checkout_form_select_gateway button').attr('disabled', true); } } catch (error) { console.error("Error validating phone number with Neutrino API:", error); } }; const debounce = (func, delay) => { let timeout; return (...args) => { clearTimeout(timeout); timeout = setTimeout(() => func(...args), delay); }; }; // Update target field when the input value changes input.addEventListener("input", debounce(() => { updateField(); if(input.getAttribute("data-validation") === 'yes') { validatePhoneNumber(); } }, 2000)); // Clear the input and reset validation when the country is changed input.addEventListener("countrychange", () => { input.value = ""; // Clear the phone input field if (twoStepPhone) { twoStepPhone.value = ""; // Clear the hidden target field } if (optinPhone) { optinPhone.value = ""; } if (errorMessageContainer) { if (optinPhone) { errorMessageContainer.style.display = "none"; } errorMessageContainer.textContent = ""; // Clear the error message } }); } }); }; // Periodically check for uninitialized inputs setInterval(() => { initializePhoneMask(); }, 1000); // Initial call to ensure inputs are initialized on page load initializePhoneMask(); if (typeof autofill_fields !== 'undefined') { // Mapping between autofill object keys and form field names const fieldMapping = { "first_name": "fl_builder_first_name", "last_name": "fl_builder_last_name", "email": "fl_builder_email", "phone": "fl_builder_phone", "billing.address": "billing_address", "billing.city": "billing_city", "billing.state": "billing_state", "billing.country": "billing_country", "billing.zip": "billing_zipcode", "shipping.address": "shipping_address", "shipping.city": "shipping_city", "shipping.state": "shipping_state", "shipping.country": "shipping_country", "shipping.zip": "shipping_zipcode" }; // Function to set the value of a form field based on autofill data function setFieldValue(fieldPath, fieldName) { // Retrieve the value from autofill_fields using the field path const fieldValue = fieldPath.split('.').reduce((o, i) => (o ? o[i] : undefined), autofill_fields); if (fieldValue !== undefined) { const element = document.getElementsByName(fieldName)[0]; if (element) { if (element.tagName === "SELECT") { // Interval function to continuously check and set the SELECT field value const intervalId = setInterval(() => { // If the current value doesn't match the desired value, update it if (element.value !== fieldValue) { // Clear any previous selection element.selectedIndex = -1; // Loop through options to find and select the correct value Array.from(element.options).forEach(option => { if (option.value === fieldValue) { option.selected = true; element.dispatchEvent(new Event('change')); // Trigger change event } }); } else { // If the correct value is set, clear the interval to stop checking clearInterval(intervalId); } }, 100); // Check every 100 ms } else { // For non-select fields, set the value directly element.value = fieldValue; } } } } // Loop over each field in the fieldMapping to apply autofill data for (const [key, name] of Object.entries(fieldMapping)) { setFieldValue(key, name); } } $('input[name="test_mode"]').on('change', function() { if($(this).is(':checked')) { $('.autofill-data-input').show(); } else { $('.autofill-data-input').hide(); } }); $('input[name="autofill_form"]').on('change', function() { if($(this).is(':checked')) { $('.test-form-inputs').show(); } else { $('.test-form-inputs').hide(); } }); // Click on the "Edit" button to show the input field $('.edit-link-btn').on('click', function() { var $parent = $(this).closest('.fpage-link'); $parent.find('.edit-link-input').show(); // Show the input field $(this).hide(); // Hide the "Edit" button $parent.find('.save-link-btn').show(); // Show the "Save" button }); // Global object to store timers for each input let ajaxTimers = {}; $(document).on('input', '.variation-percent', function () { const $input = $(this); const page_id = $input.data('page'); const type = $input.data('page-type'); const tab = $input.closest('.fpage-settings'); const inputKey = `${page_id}-${type}`; // Unique key for each input based on page and type // Calculate the total sum of all variation-percent inputs within the same fpage-settings container const calculateSum = () => { let sum = 0; tab.find('.variation-percent').each(function () { const value = parseFloat($(this).val()) || 0; sum += value; }); return sum; }; // Handle input changes const handleInput = () => { const currentValue = parseFloat($input.val()) || 0; const totalSum = calculateSum(); // If the total sum exceeds 100, reset the input and prevent further processing if (totalSum > 100) { $input.val(100 - (totalSum - currentValue)); } // Clear existing timer for this input to prevent immediate AJAX calls if (ajaxTimers[inputKey]) { clearTimeout(ajaxTimers[inputKey]); } // Set a new timer for the delayed AJAX call ajaxTimers[inputKey] = setTimeout(() => { $.ajax({ url: ajaxurl, type: 'POST', data: { action: 'update_chance_percent_variation', page_id: page_id, type: type, value: $input.val() }, success: function () { console.log('AJAX request successful'); }, error: function () { console.error('AJAX request failed'); } }); // Clear the timer after AJAX execution delete ajaxTimers[inputKey]; }, 3000); // 3 seconds delay }; handleInput(); }); $(document).on('click', '.restore-membership-step', function() { var step_id = $(this).data('step-id'); var membership_id = $(this).data('membership-id'); var module_id = $(this).closest('tr').find('select').val(); if(module_id.length > 0) { $(this).html('Restore '); $.ajax({ url: ajaxurl, type: 'POST', data: { action: 'restore_membership_page', step_id: step_id, membership_id: membership_id, module_id: module_id }, success: function() { location.reload(); } }); } else { alert('Please, select module - where this page should be restored'); } }); $(document).on('click', '.restore-funnel-step', function() { var funnel_id = $(this).data('funnel-id'); var step_id = $(this).data('step-id'); $(this).html('Restore '); $.ajax({ url: ajaxurl, type: 'POST', data: { action: 'restore_funnel_step', funnel_id: funnel_id, step_id: step_id }, success: function() { location.reload(); } }); }); // Click on the "Save" button to save the changes $('.save-link-btn').on('click', function() { var postId = $(this).data('id'); // Get post ID var newSlug = $(this).siblings('.edit-link-input').val(); // Get the new slug value var $parent = $(this).closest('.fpage-link'); var button = $(this); $(this).html('Processing...'); $.ajax({ url: ajaxurl, // WordPress AJAX URL type: 'POST', data: { action: 'save_new_course_link', // Action name for WordPress AJAX post_id: postId, new_url: newSlug, }, success: function(response) { if (response.success) { // Update the URLs on the page with the new slug $parent.find('a').attr('href', response.data.url).text(response.data.url).show(); // Update link text and href $parent.find('.edit-link-input').hide(); // Hide input field $parent.find('.edit-link-btn').show(); // Show the "Edit" button $parent.find('.save-link-btn').hide(); // Hide the "Save" button // Also update the "View" and "Edit" buttons var actionParent = $parent.siblings('.tab-action-btn'); actionParent.find('a:first').attr('href', response.data.url); // Update "View" button actionParent.find('a:last').attr('href', response.data.url + '?fl_builder'); // Update "Edit" button with ?fl_builder } else { alert('Error: ' + response.data); // Show error if AJAX fails } button.text('Save'); } }); }); }); jQuery(document).ready(function($) { var url_string = window.location.href, url = new URL(url_string), utm_id = url.searchParams.get("utm_id"), utm_source = url.searchParams.get("utm_source"), utm_medium = url.searchParams.get("utm_medium"), utm_campaign = url.searchParams.get("utm_campaign"); if (typeof(Storage) !== "undefined" && utm_id && utm_source) { localStorage.setItem("utm_id", utm_id); localStorage.setItem("utm_source", utm_source); localStorage.setItem("utm_medium", utm_medium); localStorage.setItem("utm_campaign", utm_campaign); } else { utm_id = localStorage.getItem("utm_id"); utm_source = localStorage.getItem("utm_source"); utm_medium = localStorage.getItem("utm_medium"); utm_campaign = localStorage.getItem("utm_campaign"); } if ($('#pk-checkout').length > 0 && utm_id && utm_source) { var iframe_src = $('#pk-checkout').attr('src'), separator = iframe_src.indexOf('?') == -1 ? '?' : '&'; $('#pk-checkout').attr('src', iframe_src + separator + 'utm_id=' + utm_id + '&utm_source=' + utm_source + '&utm_medium=' + utm_medium + '&utm_campaign=' + utm_campaign); } if ($('#pk-booster').length > 0) { var email = getParameterByName('email'); var res = email.replace(" ", "%2B"); var iframe_src = $('#pk-booster').attr('src'); $('#pk-booster').attr('src', iframe_src + '?email=' + res); } $(document).on('click', '#builderWarning .fl-builder-button', function() { $('#builderWarning').hide(); }); if(jQuery('#export-largedata-email').find('#export-email-btn').length > 0){ jQuery('#export-largedata-email').find('#export-email-btn').click(function(){ var obj = jQuery(this); var objtext = obj.text(); obj.text('Processing...').attr('disabled','disabled'); jQuery('.export-error').text(""); if(jQuery('#export-largedata-email').find('input[name="export_email"]').val() == ''){ jQuery('.export-error').text("Email address required"); obj.text(objtext).removeAttr('disabled'); return false; } var export_email = jQuery('#export-largedata-email').find('input[name="export_email"]').val() var filterdata = jQuery('#export-largedata-email').find('input[name="filterdata"]').val() var params = $.extend({}, doAjax_params_default); params['data'] = { action: 'export_data_saveto_db', export_email: export_email, filterdata:filterdata, }; params['successCallback'] = function(data) { obj.text(objtext); jQuery('#sales-timeout-notifications').find('.modal-body').append('
Your filtered data and email address stored sucessfully. Export data will send you on email.
') //jQuery('#export-largedata-email').modal('hide'); }; doAjax(params); }); } // DropFunnels Categories to Templates Categories. if(jQuery('#fl-builder-template-categorydiv').length > 0){ var nadcat = jQuery('#fl-builder-template-categorydiv').find('.hndle').html(); if(nadcat == 'DropFunnels Categories'){ jQuery('#fl-builder-template-categorydiv').find('.hndle').html('Template Categories'); } } if(jQuery('.settings_page_uabb-builder-settings').find('.fl-settings-network-admin').length > 0){ var nadsetting = jQuery('.fl-settings-network-admin').find('.fl-settings-heading').html(); if(nadsetting.trim() == 'DropFunnels Pro Settings'){ jQuery('.fl-settings-network-admin').find('.fl-settings-heading').html('Additional Settings'); } } if(jQuery('.settings_page_uabb-builder-settings').find('.fl-settings-network-admin').find('.uabb-api-info-msg').length > 0){ jQuery('.fl-settings-network-admin').find('.uabb-api-info-msg').html('Google now requires an active billing account associated with your API Key.'); } if(jQuery('.ms-delete-site-php').find('#wpbody-content').find('.wrap h1').length > 0){ jQuery('.ms-delete-site-php').find('#wpbody-content').find('.wrap h1').addClass('wp-heading-inline'); } if(jQuery('.fl-builder-admin').find('.fl-builder-admin-ui').find('a').length > 0){ setTimeout(function() { jQuery('.fl-builder-admin').find('.fl-builder-admin-ui').find('a').off("click"); jQuery('.fl-builder-admin').find('.fl-builder-admin-ui').find('a').attr('target', '_blank'); }, 500); } if(jQuery('#fl-builder-user-template-buttons').find('.fl-launch-builder').length > 0){ setTimeout(function() { // jQuery('#fl-builder-user-template-buttons').find('.fl-launch-builder').off("click"); jQuery('#fl-builder-user-template-buttons').find('.fl-launch-builder').attr('target', '_blank'); }, 500); } if(jQuery('.type-fl-builder-template').find('.has-row-actions .row-actions .fl-builder a').length > 0){ setTimeout(function() { jQuery('.type-fl-builder-template').find('.has-row-actions .row-actions .fl-builder a').off("click"); jQuery('.type-fl-builder-template').find('.has-row-actions .row-actions .fl-builder a').attr('target', '_blank'); }, 500); } if(jQuery('.type-page').find('.has-row-actions .row-actions .fl-builder a').length > 0){ setTimeout(function() { jQuery('.type-page').find('.has-row-actions .row-actions .fl-builder a').off("click"); jQuery('.type-page').find('.has-row-actions .row-actions .fl-builder a').attr('target', '_blank'); }, 500); } if(jQuery('.type-post').find('.has-row-actions .row-actions .fl-builder a').length > 0){ setTimeout(function() { jQuery('.type-post').find('.has-row-actions .row-actions .fl-builder a').off("click"); jQuery('.type-post').find('.has-row-actions .row-actions .fl-builder a').attr('target', '_blank'); }, 500); } // Toggle(collapse & expand) BB editor modules sections jQuery(document).on("click", "#fl-builder-blocks-sales-modules, #fl-builder-blocks-courses-modules, #fl-builder-blocks-basic-modules, #fl-builder-blocks-design-modules, #fl-builder-blocks-business-modules, #fl-builder-blocks-advanced-modules, #fl-builder-blocks-layouts", function() { var module_container = $(this).find(".fl-builder-blocks-section-content"); var css_display = module_container.css("display"); if (css_display == "grid") { module_container.css('display','none'); } else if (css_display == "none") { module_container.css('display','grid'); } }); //check if builder is editable window.addEventListener('error', function(e) { var primary_post_id = jQuery(document).find('.fl-builder-content-primary'); if( primary_post_id.length > 0 && e.type == "error" ){ var root_node = primary_post_id[0]; if( root_node != undefined ){ dfpage_id = jQuery(root_node).data('post-id'); var errorlinkid = jQuery(e.target).attr('id'); var targetd_id = "fl-builder-layout-"+dfpage_id+"-css"; if( errorlinkid == targetd_id ){ if( document.location.hostname == 'jordanmederich.com' ){ FLBuilder.confirm({ message: "IMPORTANT: Let's take a minute to save a draft of your work! Click OK to save.", ok: function() { var saveBtn = $('.fl-builder-settings:visible .fl-builder-settings-save'); saveBtn.removeClass('fl-builder-settings-error'); saveBtn.off('click', FLBuilder._showCodeFieldError); saveBtn.trigger('click'); refreshId = setInterval(function() { if ($('.fl-lightbox-content').has('form').length == 0) { location.reload(true); clearInterval(refreshId); } }, 500); }, cancel: function() { var saveBtn = $('.fl-builder-settings:visible .fl-builder-settings-save'); saveBtn.removeClass('fl-builder-settings-error'); saveBtn.off('click', FLBuilder._showCodeFieldError); saveBtn.trigger('click'); refreshId = setInterval(function() { if ($('.fl-lightbox-content').has('form').length == 0) { location.reload(true); clearInterval(refreshId); } }, 500); }, }); var bb_alert_msg = $('.fl-lightbox-message').text(); if (bb_alert_msg.includes("IMPORTANT: Let's take a minute to save a draft of your work! Click OK to save.")) { $('.fl-builder-confirm-cancel').hide(); } }else{ FLBuilder.alert('IMPORTANT: Please take a moment to save your work. Press "Publish" or "Save Draft".'); } } } } }, true); $('.custom_copy_class').hover(function(e) { $(this).append(''); $(".copy_button").hover(function(){ $(this).css({"background-color":"#00a2de", "color" : "white" }); }); }, function() { $(this).find('.copy_button').remove(); }); }); function getParameterByName(name, 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, ' ')); } // Code for copy to clipboard jQuery(document).on('click',".copy_button", function(){ copytoclipboard(jQuery(this)); jQuery(this).prop("value", "Copied"); }); function copytoclipboard(button_id) { var module_parent_node = button_id.closest('.custom_copy_class').attr('data-node'); var final_post_id = jQuery('.fl-builder-content-primary').attr('data-post-id'); var data = { action: 'copy_module_settings_function', path: {module_parent_node : module_parent_node, final_post_id : final_post_id} }; jQuery.post(df_ajax.ajaxurl, data, function(response) { navigator.clipboard.writeText(response); }); } //Code for share post and page shareable jQuery(document).on('click', '.share_post', function(){ var copy_url = jQuery(this).children(".share_post_link").data("value"); document.addEventListener('copy', function(e) { e.clipboardData.setData('text/plain', copy_url); e.preventDefault(); }, true); document.execCommand('copy'); console.log('copied text : ', copy_url); jQuery(this).children(".share_post_link").hide(); jQuery(this).children().closest(".copied_msg").text("Copies share link to clipboard").show().fadeOut(2000); jQuery(this).children(".share_post_link").delay(2000).fadeIn(); }); jQuery(document).on('change', '.email-membership-change-status', function(){ if(jQuery(this).is(':checked')) { jQuery(this).closest('.form-row').next().show(); } else { jQuery(this).closest('.form-row').next().hide(); } }); // Code restrict reload page when enter jQuery(document).on('keypress', '#seopress_google_suggest_kw_meta', function(e){ if (e.keyCode == 13) { return false; } }); // Code for post page 404 error handling. // jQuery(window).on("load", function (e) { // if (jQuery('#title').length) { // var post_title = jQuery("#title").val(); // if(post_title.length > 0){ // jQuery('.fl-launch-builder').attr("disabled", false); // jQuery(".fl-launch-builder").css('cursor','pointer').attr('title', ''); // } // else{ // jQuery('.fl-launch-builder').attr("disabled", true); // jQuery(".fl-launch-builder").css('cursor','not-allowed').attr('title', 'Please Add Title'); // } // } // }); // jQuery(document).on('keyup', '#title', function(e){ // var post_title_val = jQuery(this).val(); // if(post_title_val.length > 0){ // jQuery('.fl-launch-builder').attr('disabled', false); // jQuery(".fl-launch-builder").css('cursor','pointer').attr('title', ''); // }else{ // jQuery('.fl-launch-builder').attr("disabled", true); // jQuery(".fl-launch-builder").css('cursor','not-allowed').attr('title', 'Please Add Title'); // } // }); // jQuery(document).ready(function(){ // if( jQuery('body').hasClass('post-type-post') || jQuery('body').hasClass('post-type-page')){ // jQuery(document).find('.fl-launch-builder').attr("href", "javascript:void(0);"); // jQuery(document).find('.fl-launch-builder').removeAttr('target'); // } // }); // jQuery(document).on('click', '.fl-launch-builder', function(event){ // if( jQuery('body').hasClass('post-type-post') || jQuery('body').hasClass('post-type-page')){ // var post_title_val = jQuery('#title').val(); // event.preventDefault(); // if( post_title_val.length > 0 ){ // setTimeout(function() { // jQuery('.fl-launch-builder').attr("disabled", false); // jQuery(".fl-launch-builder").css('cursor','pointer'); // var post_id = jQuery(document).find('input[name=post_ID]').val(); // if( jQuery('body').hasClass('post-type-post') ){ // var yyu = '/?p='+post_id+'&fl_builder'; // } // if( jQuery('body').hasClass('post-type-page') ){ // yyu = '/?page_id='+post_id+'&fl_builder'; // } // window.open(yyu, '_blank'); // }, 2000); // } // } // }); jQuery(document).on('click', '.fl-launch-builder', function(event){ if( jQuery('body').hasClass('post-type-post') || jQuery('body').hasClass('post-type-page')){ var post_id = jQuery('#post_ID').val(); var post_status = jQuery('#original_post_status').val(); if(post_status !== 'publish'){ event.preventDefault(); jQuery.ajax({ url: df_ajax.ajaxurl, method: 'POST', data: { action: 'update_post_status', post_id: post_id }, success: function(response) { if (response.status === 'true') { // Open the link in a new tab after the AJAX call is successful window.open(jQuery('.fl-launch-builder').attr('href'), '_blank'); } }, }); } } }); jQuery(document).ready(function($){ jQuery( ".quiz_ranking_wrapper" ).sortable({ connectWith: ".connected-sortable", stack: '.connected-sortable ul', start: function(event, ui) { }, change: function( event, ui ) { // jQuery(this).parent().find('.quiz-answer').val(''); jQuery(this).find('.quiz_ranking_item').each(function (index, obj) { jQuery(this).addClass('change'); }); }, update: function(event, ui) { jQuery(this).parent().find('.quiz-answer').val(''); var quiz_answer = jQuery(this).parent().find('.quiz-answer').val(); var count_rank = 1; jQuery(this).find('.rank_item_order').each(function (index, obj) { jQuery(this).text(count_rank); count_rank++; }); jQuery(this).find('.quiz_ranking_item').each(function (index, obj) { jQuery(this).removeClass('change'); }); if(quiz_answer == ''){ jQuery(this).parent().find('.rank_invalid').text('Please confirm selection'); jQuery(this).parent().find('.confirm_ranking .lock_img').removeClass('locked'); }else{ jQuery(this).parent().find('.rank_invalid').text(''); } } }).disableSelection(); jQuery(document).on('click','.confirm_ranking', function(){ var option_list = ''; jQuery(this).parent().parent().find('.la-quiz-question-answer-title').each(function (index, obj) { if(option_list != ''){ option_list += ', '+jQuery(this).text(); }else{ option_list += jQuery(this).text(); } }); jQuery(this).parent().parent().parent().find('.quiz-ranking').val(option_list); jQuery(this).parent().parent().parent().find('.quiz-ranking').click(); jQuery(this).find('.lock_img').addClass('locked'); jQuery(this).parent().find('.rank_invalid').text(''); }); }); jQuery(document).ready(function($) { jQuery(document).ready(function () { // Drag over effect jQuery(".ddArea").on("dragover", function (e) { e.preventDefault(); jQuery(this).addClass("drag_over"); }); // Drag leave effect jQuery(".ddArea").on("dragleave", function () { jQuery(this).removeClass("drag_over"); }); // Click event to open file explorer jQuery(".ddArea").on("click", function () { jQuery(this).closest(".file_upload_wrapper").find(".selectfile").click(); }); // Drop event to handle file drag & drop jQuery(".ddArea").on("drop", function (e) { e.preventDefault(); jQuery(this).removeClass("drag_over"); let wrapper = jQuery(this).closest(".file_upload_wrapper"); let formData = new FormData(); formData.append("action", "upload_quiz_files"); let files = e.originalEvent.dataTransfer.files; for (let i = 0; i < files.length; i++) { formData.append("file[]", files[i]); } uploadFormData(formData, wrapper); }); // Handle file selection jQuery(".selectfile").on("change", function () { let wrapper = jQuery(this).closest(".file_upload_wrapper"); let files = this.files; let formData = new FormData(); formData.append("action", "upload_quiz_files"); for (let i = 0; i < files.length; i++) { formData.append("file[]", files[i]); } uploadFormData(formData, wrapper); }); function uploadFormData(formData, wrapper) { let fileText = wrapper.find(".file-choose-text"); let progressBar = wrapper.find(".quiz-progress-bar"); fileText.text("Uploading..."); progressBar.css("width", "0%"); jQuery.ajax({ xhr: function () { let xhr = new XMLHttpRequest(); xhr.upload.addEventListener("progress", function (evt) { if (evt.lengthComputable) { let percentComplete = Math.round((evt.loaded / evt.total) * 80); progressBar.width(percentComplete + "%"); progressBar.html(percentComplete + "%"); } }, false); return xhr; }, url: df_ajax.ajaxurl, type: "POST", data: formData, contentType: false, cache: false, processData: false, beforeSend: function () { progressBar.width("0%"); }, success: function (data) { if (data.status === "success") { fileText.text(""); wrapper.closest(".la-quiz-question-answers").find(".quiz-answer").val(data.attached_ids); if (data.uploaded_file_type === "image") { wrapper.find(".ddArea").css("background-image", "url(" + data.attached_url + ")"); } else { fileText.text(data.file_name); } wrapper.closest(".la-quiz-question-answers").find(".quiz-answer").click(); progressBar.width("90%").html("90%"); setTimeout(function () { progressBar.width("100%").html("100%"); progressBar.addClass("hidanimation"); }, 500); } } }); } }); jQuery(document).on('change','select[name=field_type]',function() { if(jQuery(this).val() != 'df_checkbox' && jQuery(this).val() != 'df_multichoice'){ jQuery(this).parents('.fl-builder-settings').find('select[name=ar_additional_tag]').val('no').trigger('change'); } }); jQuery(document).on('change','select[name=ar_additional_tag]',function() { var ar_add_tags = jQuery(this).val(); if(ar_add_tags == 'yes'){ var field_type = jQuery(this).parents('.fl-form-table').find('select[name=field_type]').val(); if(field_type == 'df_checkbox' || 'df_multichoice'){ if(field_type == 'df_checkbox'){ var options_checklist = jQuery(this).parents('.fl-form-table').find('#fl-field-checklist_opts tr[data-field="checklist_opts"]').length; }else{ var options_checklist = jQuery(this).parents('.fl-form-table').find('#fl-field-multichoice_opts tr[data-field="multichoice_opts"]').length; } var tags_field_length = jQuery(this).parents('.fl-form-table').find('#fl-field-custom_field_ar_option_tags tr[data-field="custom_field_ar_option_tags"]').length; if(options_checklist > tags_field_length){ var more_tags_need = options_checklist - tags_field_length; for (var i = 1; i <= more_tags_need; i++) { jQuery(this).parents('.fl-form-table').find('#fl-field-custom_field_ar_option_tags a[data-field="custom_field_ar_option_tags"]').trigger('click'); } } } } }); });