function latepoint_generate_form_message_html(messages, status){ var message_html = '<div class="os-form-message-w status-' + status + '"><ul>'; if(Array.isArray(messages)){ messages.forEach(function(message){ message_html+= '<li>' + message + '</li>'; }); }else{ message_html+= '<li>' + messages + '</li>'; } message_html+= '</ul></div>'; return message_html; } function latepoint_display_in_side_sub_panel(html){ if(!jQuery('.latepoint-side-panel-w').length) latepoint_show_data_in_side_panel(''); jQuery('.latepoint-side-panel-w .latepoint-side-panels .side-sub-panel-wrapper').remove(); jQuery('.latepoint-side-panel-w .latepoint-side-panels').append(html); } function latepoint_clear_form_messages($form){ $form.find('.os-form-message-w').remove(); } function latepoint_show_data_in_side_panel(message, extra_classes = '', close_btn = true){ jQuery('.latepoint-side-panel-w').remove(); jQuery('body').append('<div class="latepoint-side-panel-w ' + extra_classes + ' os-loading"><div class="latepoint-side-panel-shadow"></div><div class="latepoint-side-panels"><div class="latepoint-side-panel-i"></div></div></div>'); jQuery('.latepoint-side-panel-i').html(message); if(close_btn){ jQuery('.latepoint-side-panel-i').find('.os-form-header .latepoint-side-panel-close').remove(); jQuery('.latepoint-side-panel-i').find('.os-form-header').append('<a href="#" class="latepoint-side-panel-close latepoint-side-panel-close-trigger"><i class="latepoint-icon latepoint-icon-x"></i></a>'); } setTimeout(function(){ jQuery('.latepoint-side-panel-w').removeClass('os-loading'); }, 100); } function latepoint_show_data_in_lightbox(message, extra_classes = '', close_btn = true, tag = 'div', inner_extra_classes = '', inner_tag = 'div'){ jQuery('.latepoint-lightbox-w').remove(); let lightbox_css_classes = 'latepoint-lightbox-w latepoint-w latepoint-border-radius-' + latepoint_helper.style_border_radius+ ' '; if(extra_classes) lightbox_css_classes+= extra_classes; let lightbox_css_inner_classes = 'latepoint-lightbox-i '; if(inner_extra_classes) lightbox_css_inner_classes += inner_extra_classes; let close_btn_html = close_btn ? '<a href="#" class="latepoint-lightbox-close" tabindex="0"><i class="latepoint-icon latepoint-icon-x"></i></a>' : ''; jQuery('body').append('<'+tag+' class="'+ lightbox_css_classes +'"><'+inner_tag+' class="'+ lightbox_css_inner_classes +'">' + message + close_btn_html + '</'+inner_tag+'><div class="latepoint-lightbox-shadow"></div></'+tag+'>'); jQuery('body').addClass('latepoint-lightbox-active'); } // DOCUMENT READY jQuery(function( $ ) { if($('.latepoint').find('[data-os-action-onload]').length){ $('.latepoint').find('[data-os-action-onload]').each(function(){ var $this = jQuery(this); $this.addClass('os-loading'); var params = $this.data('os-params'); var return_format = $this.data('os-return-format') ? $this.data('os-return-format') : 'json' var data = { action: 'latepoint_route_call', route_name: $this.data('os-action-onload'), params: params, return_format: return_format } jQuery.ajax({ type : "post", dataType : "json", url : latepoint_timestamped_ajaxurl(), data : data, success: function(response) { $this.removeClass('os-loading'); if (response.status === "success") { if($this.data('os-output-target') == 'self'){ $this.html(response.message); } } } }); }); } jQuery('body.latepoint').on('change', 'select[data-os-on-change]', function(e){ let $this = jQuery(this); let func_name = $this.data('os-on-change'); if(func_name.includes('.')){ let func_arr = func_name.split('.'); if(typeof window[func_arr[0]][func_arr[1]] !== 'function'){ console.log(func_name + ' is undefined'); }else{ window[func_arr[0]][func_arr[1]]($this); } }else{ if(typeof window[func_name] !== 'function'){ console.log(func_name + ' is undefined'); }else{ window[func_name]($this); } } }); /* Ajax buttons action */ $('.latepoint').on('click', 'button[data-os-action], a[data-os-action], div[data-os-action], span[data-os-action], tr[data-os-action]', function(e){ var $this = jQuery(this); if($this.data('os-prompt') && !confirm($this.data('os-prompt'))) return false; var params = $this.data('os-params'); if($this.data('os-source-of-params')){ var form_data = latepoint_create_form_data_from_non_form_element($($this.data('os-source-of-params'))); params = latepoint_formdata_to_url_encoded_string(form_data); } var return_format = $this.data('os-return-format') ? $this.data('os-return-format') : 'json' var data = { action: 'latepoint_route_call', route_name: $this.data('os-action'), params: params, return_format: return_format } $this.addClass('os-loading'); if($this.data('os-output-target') == 'side-panel'){ $('.latepoint-side-panel-w').remove(); let css_classes = $this.data('os-lightbox-classes') ? $this.data('os-lightbox-classes') : ''; $('body').append('<div class="latepoint-side-panel-w ' + css_classes + ' os-loading"><div class="latepoint-side-panel-shadow"></div><div class="latepoint-side-panels"><div class="latepoint-side-panel-i"></div></div></div>'); }else if($this.data('os-output-target') == 'full-panel'){ $('.latepoint-full-panel-w').remove(); $('body').append('<div class="latepoint-full-panel-w os-loading"></div>'); } $.ajax({ type : "post", dataType : "json", url : latepoint_timestamped_ajaxurl(), data : data, success: function(response){ if(response.status === "success"){ if($this.data('os-output-target') == 'lightbox'){ latepoint_show_data_in_lightbox(response.message, $this.data('os-lightbox-classes'), ($this.data('os-lightbox-no-close-button') !== 'yes'), $this.data('os-lightbox-tag'), $this.data('os-lightbox-inner-classes'), $this.data('os-lightbox-inner-tag')); }else if($this.data('os-output-target') == 'side-panel'){ $('.latepoint-side-panel-i').html(response.message); jQuery('.latepoint-side-panel-i').find('.os-form-header .latepoint-side-panel-close').remove(); jQuery('.latepoint-side-panel-i').find('.os-form-header').append('<a href="#" class="latepoint-side-panel-close latepoint-side-panel-close-trigger"><i class="latepoint-icon latepoint-icon-x"></i></a>'); setTimeout(function(){ $('.latepoint-side-panel-w').removeClass('os-loading'); }, 100); }else if($this.data('os-output-target') == 'full-panel'){ $('.latepoint-full-panel-w').html(response.message); setTimeout(function(){ $('.latepoint-full-panel-w').removeClass('os-loading'); }, 100); }else if($this.data('os-success-action') == 'reload'){ latepoint_add_notification(response.message); location.reload(); return; }else if($this.data('os-success-action') == 'redirect'){ if($this.data('os-redirect-to')){ latepoint_add_notification(response.message); window.location.replace($this.data('os-redirect-to')); }else{ window.location.replace(response.message); } return; }else if($this.data('os-output-target') && $($this.data('os-output-target')).length){ if($this.data('os-output-target-do') == 'append') { $($this.data('os-output-target')).append(response.message); }else if($this.data('os-output-target-do') == 'prepend'){ $($this.data('os-output-target')).prepend(response.message); }else{ $($this.data('os-output-target')).html(response.message); } }else{ switch($this.data('os-before-after')){ case 'before': $this.before(response.message); break; case 'after': $this.after(response.message); break; case 'replace': $this.replaceWith(response.message); break; case 'none': break; default: latepoint_add_notification(response.message); } } if($this.data('os-after-call')){ var func_name = $this.data('os-after-call'); var callback = false; if(func_name.includes('.')){ var func_arr = func_name.split('.'); if(typeof window[func_arr[0]][func_arr[1]] !== 'function'){ console.log(func_name + ' is undefined'); } if($this.data('os-pass-this') && $this.data('os-pass-response')){ window[func_arr[0]][func_arr[1]]($this, response); }else if($this.data('os-pass-this')){ window[func_arr[0]][func_arr[1]]($this); }else if($this.data('os-pass-response')){ window[func_arr[0]][func_arr[1]](response); }else{ window[func_arr[0]][func_arr[1]](); } }else{ if(typeof window[func_name] !== 'function'){ console.log(func_name + ' is undefined'); } if($this.data('os-pass-this') && $this.data('os-pass-response')){ window[func_name]($this, response); }else if($this.data('os-pass-this')){ window[func_name]($this); }else if($this.data('os-pass-response')){ window[func_name](response); }else{ window[func_name](); } } } $this.removeClass('os-loading'); }else{ $this.removeClass('os-loading'); if($this.data('os-output-target') && $($this.data('os-output-target')).length){ $($this.data('os-output-target')).prepend(latepoint_generate_form_message_html(response.message, 'error')); }else{ alert(response.message); } if($this.data('os-after-call-error')){ var func_name = $this.data('os-after-call-error'); var callback = false; if(func_name.includes('.')){ var func_arr = func_name.split('.'); if(typeof window[func_arr[0]][func_arr[1]] !== 'function'){ console.log(func_name + ' is undefined'); } if($this.data('os-pass-this') && $this.data('os-pass-response')){ window[func_arr[0]][func_arr[1]]($this, response); }else if($this.data('os-pass-this')){ window[func_arr[0]][func_arr[1]]($this); }else if($this.data('os-pass-response')){ window[func_arr[0]][func_arr[1]](response); }else{ window[func_arr[0]][func_arr[1]](); } }else{ if(typeof window[func_name] !== 'function'){ console.log(func_name + ' is undefined'); } if($this.data('os-pass-this') && $this.data('os-pass-response')){ window[func_name]($this, response); }else if($this.data('os-pass-this')){ window[func_name]($this); }else if($this.data('os-pass-response')){ window[func_name](response); }else{ window[func_name](); } } } } } }); return false; }); $('.latepoint').on('click', 'form[data-os-action] button[type="submit"]', function(e){ $(this).addClass('os-loading'); }); /* Form ajax submit action */ $('.latepoint').on('submit', 'form[data-os-action]', function(e){ e.preventDefault(); // prevent native submit var $form = $(this); var form_data = new FormData($form[0]); if (('lp_intlTelInputGlobals' in window) && ('lp_intlTelInputUtils' in window)) { // Get e164 formatted number from phone fields when form is submitted $form.find('input.os-mask-phone').each(function () { let telInstance = window.lp_intlTelInputGlobals.getInstance(this); if(telInstance){ const phoneInputName = this.getAttribute('name'); const phoneInputValue = window.lp_intlTelInputGlobals.getInstance(this).getNumber(window.lp_intlTelInputUtils.numberFormat.E164); form_data.set(phoneInputName, phoneInputValue); } }); } let data = latepoint_create_form_data($form, $(this).data('os-action')); // var data = { action: 'latepoint_route_call', route_name: $(this).data('os-action'), params: latepoint_formdata_to_url_encoded_string(form_data), return_format: 'json' } $form.find('button[type="submit"]').addClass('os-loading'); $.ajax({ type : "post", dataType : "json", processData: false, contentType: false, url : latepoint_timestamped_ajaxurl(), data : data, success: function(response){ $form.find('button[type="submit"].os-loading').removeClass('os-loading'); latepoint_clear_form_messages($form); if(response.status === "success"){ if($form.data('os-success-action') == 'reload'){ latepoint_add_notification(response.message); location.reload(); return; }else if($form.data('os-success-action') == 'redirect'){ if($form.data('os-redirect-to')){ latepoint_add_notification(response.message); window.location.replace($form.data('os-redirect-to')); }else{ window.location.replace(response.message); } return; }else if($form.data('os-output-target') && $($form.data('os-output-target')).length){ $($form.data('os-output-target')).html(response.message); }else{ if(response.message == 'redirect'){ window.location.replace(response.url); }else{ latepoint_add_notification(response.message); } } if($form.data('os-record-id-holder') && response.record_id){ $form.find('[name="' + $form.data('os-record-id-holder') + '"]').val(response.record_id) } if($form.data('os-after-call')){ var func_name = $form.data('os-after-call'); var callback = false; if(func_name.includes('.')){ var func_arr = func_name.split('.'); if(typeof window[func_arr[0]][func_arr[1]] !== 'function'){ console.log(func_name + ' is undefined'); } if($form.data('os-pass-this') && $form.data('os-pass-response')){ window[func_arr[0]][func_arr[1]]($form, response); }else if($form.data('os-pass-this')){ window[func_arr[0]][func_arr[1]]($form); }else if($form.data('os-pass-response')){ window[func_arr[0]][func_arr[1]](response); }else{ window[func_arr[0]][func_arr[1]](); } }else{ if(typeof window[func_name] !== 'function'){ console.log(func_name + ' is undefined'); } if($form.data('os-pass-this') && $form.data('os-pass-response')){ window[func_name]($form, response); }else if($form.data('os-pass-this')){ window[func_name]($form); }else if($form.data('os-pass-response')){ window[func_name](response); }else{ window[func_name](); } } } $('button.os-loading').removeClass('os-loading'); }else{ $('button.os-loading').removeClass('os-loading'); if($form.data('os-show-errors-as-notification')){ latepoint_add_notification(response.message, 'error'); }else{ latepoint_add_notification(response.message, 'error'); $([document.documentElement, document.body]).animate({ scrollTop: ($form.find(".os-form-message-w").offset().top - 30) }, 200); } } if(response.form_values_to_update){ $.each(response.form_values_to_update, function(name, value){ $form.find('[name="'+ name +'"]').val(value); }); } } }); return false; }); });