diff options
Diffstat (limited to 'Postman/Postman-Send-Test-Email/postman_send_test_email.js')
-rw-r--r-- | Postman/Postman-Send-Test-Email/postman_send_test_email.js | 168 |
1 files changed, 168 insertions, 0 deletions
diff --git a/Postman/Postman-Send-Test-Email/postman_send_test_email.js b/Postman/Postman-Send-Test-Email/postman_send_test_email.js new file mode 100644 index 0000000..c3e9f07 --- /dev/null +++ b/Postman/Postman-Send-Test-Email/postman_send_test_email.js @@ -0,0 +1,168 @@ +transcript = false; +jQuery(document).ready( + function() { + ready = 0; + jQuery(postman_email_test.recipient).focus(); + jQuery("#postman_test_email_wizard") + .steps( + { + forceMoveForward : true, + showFinishButtonAlways : true, + bodyTag : "fieldset", + headerTag : "h5", + transitionEffect : "slideLeft", + stepsOrientation : "vertical", + autoFocus : true, + labels : { + current : steps_current_step, + pagination : steps_pagination, + finish : steps_finish, + next : steps_next, + previous : steps_previous, + loading : steps_loading + }, + onStepChanging : function(event, currentIndex, + newIndex) { + return handleStepChange(event, + currentIndex, newIndex, + jQuery(this)); + + }, + onInit : function() { + jQuery(postman_email_test.recipient) + .focus(); + jQuery('li + li').addClass('disabled'); + }, + onStepChanged : function(event, currentIndex, + priorIndex) { + return postHandleStepChange(event, + currentIndex, priorIndex, + jQuery(this)); + }, + onFinishing : function(event, currentIndex) { + return true; + }, + onFinished : function(event, currentIndex) { + if (ready == 0) { + return false; + } else { + var form = jQuery(this); + form.submit(); + } + } + }).validate({ + errorPlacement : function(error, element) { + element.before(error); + } + }); + }); +function handleStepChange(event, currentIndex, newIndex, form) { + // Always allow going backward even if + // the current step contains invalid fields! + if (currentIndex > newIndex) { + return false; + } + + // Clean up if user went backward + // before + if (currentIndex < newIndex) { + // To remove error styles + jQuery(".body:eq(" + newIndex + ") label.error", form).remove(); + jQuery(".body:eq(" + newIndex + ") .error", form).removeClass("error"); + } + + // Disable validation on fields that + // are disabled or hidden. + form.validate().settings.ignore = ":disabled,:hidden"; + + // Start validation; Prevent going + // forward if false + valid = form.valid(); + if (!valid) { + return false; + } + + if (currentIndex === 0) { + ready = 0; + // this disables the finish button during the screen slide + jQuery('li').addClass('disabled'); + jQuery('#postman_test_message_status').html( + postman_email_test.not_started); + jQuery('#postman_test_message_status').css('color', ''); + jQuery('#postman_test_message_error_message').val(''); + jQuery('#postman_test_message_transcript').val(''); + hide(jQuery('#test-success')); + hide(jQuery('#test-fail')); + } else if (currentIndex === 1) { + return transcript; + } + + return true; +} +function postHandleStepChange(event, currentIndex, priorIndex, myself) { + if (currentIndex === 0) { + } else if (currentIndex === 1) { + // this is the second place I disable the finish button but Steps + // re-enables it after the screen slides + jQuery('li').addClass('disabled'); + var data = { + 'action' : 'postman_send_test_email', + 'email' : jQuery(postman_email_test.recipient).val() + }; + jQuery('#postman_test_message_status').html(postman_email_test.sending); + jQuery('#postman_test_message_status').css('color', 'blue'); + // http://stackoverflow.com/questions/21987318/catch-handle-502-bad-gateway-error + jQuery + .ajax( + { + statusCode : { + 502 : function() { + alert('The server returned "HTTP Error 502 Bad gateway". Contact your hosting provider to resolve the error.'); + } + }, + method : "POST", + url : ajaxurl, + data : data + }).done(function(response) { + handleResponse(response); + }).fail( + function(response) { + // handle ajax failure + jQuery('#postman_test_message_status').html( + postman_email_test.ajax_error); + jQuery('#postman_test_message_status').css('color', + 'red'); + jQuery('#postman_test_message_error_message').val( + postman_ajax_msg.bad_response + ":\n\n" + + response.responseText); + jQuery('li + li').removeClass('disabled'); + }); + + } + function handleResponse(response) { + if (postmanValidateAjaxResponse(response)) { + if (response.data.transcript + && response.data.transcript.length != 0) { + // only enable the next button if there is a transcript + transcript = true; + jQuery('li').removeClass('disabled'); + } else { + jQuery('li + li').removeClass('disabled'); + } + if (response.success) { + jQuery('#postman_test_message_status').html( + postman_email_test.success); + jQuery('#postman_test_message_status').css('color', 'green'); + } else { + jQuery('#postman_test_message_status').html( + postman_email_test.failed); + jQuery('#postman_test_message_status').css('color', 'red'); + } + jQuery('#postman_test_message_error_message').val( + response.data.message); + jQuery('#postman_test_message_transcript').val( + response.data.transcript); + } + ready = 1; + } +} |