1jQuery(document).ready(function ($) { 2 // Handle all inline SSO login form instances on the page 3 $('.wpamo-sso-inline-form-block').each(function () { 4 var container = $(this); 5 var loginForm = container.find('.wpamo-inline-login-view'); 6 var forgotUsernameForm = container.find('.wpamo-inline-forgot-username-view'); 7 var forgotPasswordForm = container.find('.wpamo-inline-forgot-password-view'); 8 9 var usernameEl = loginForm.find('input[name="username"]'); 10 var passwordEl = loginForm.find('input[name="password"]'); 11 var forgotUsernameEmailEl = forgotUsernameForm.find('input[name="email"]'); 12 var forgotPasswordEmailEl = forgotPasswordForm.find('input[name="email"]'); 13 14 // View switching 15 function showLoginView() { 16 container.find('.wpamo-sso-form-view').hide(); 17 loginForm.show(); 18 clearAllErrors(container); 19 } 20 21 function showForgotUsernameView() { 22 container.find('.wpamo-sso-form-view').hide(); 23 forgotUsernameForm.show(); 24 clearAllErrors(container); 25 } 26 27 function showForgotPasswordView() { 28 container.find('.wpamo-sso-form-view').hide(); 29 forgotPasswordForm.show(); 30 clearAllErrors(container); 31 } 32 33 container.find('.wpamo-sso-forgot-username-link').on('click', function (e) { 34 e.preventDefault(); 35 showForgotUsernameView(); 36 }); 37 38 container.find('.wpamo-sso-forgot-password-link').on('click', function (e) { 39 e.preventDefault(); 40 showForgotPasswordView(); 41 }); 42 43 container.find('.wpamo-sso-back-to-login-link').on('click', function (e) { 44 e.preventDefault(); 45 showLoginView(); 46 }); 47 48 // Validation constraints 49 var presenceConstraint = { 50 presence: { allowEmpty: false, message: 'is required' }, 51 }; 52 53 var emailConstraint = { 54 presence: { allowEmpty: false, message: 'is required' }, 55 email: { message: 'is not valid' }, 56 }; 57 58 // Login form field validation 59 usernameEl.on('change keyup', function () { 60 var result = validate({ username: usernameEl.val() }, { username: presenceConstraint }); 61 if (hasError(result, 'username')) { 62 addError(usernameEl, result.username[0]); 63 } else { 64 removeErrors(usernameEl); 65 } 66 }); 67 68 passwordEl.on('change keyup', function () { 69 var result = validate({ password: passwordEl.val() }, { password: presenceConstraint }); 70 if (hasError(result, 'password')) { 71 addError(passwordEl, result.password[0]); 72 } else { 73 removeErrors(passwordEl); 74 } 75 }); 76 77 // Login form submit validation 78 loginForm.on('submit', function (e) { 79 var input = { username: usernameEl.val(), password: passwordEl.val() }; 80 var constraints = { username: presenceConstraint, password: presenceConstraint }; 81 var result = validate(input, constraints); 82 var invalid = hasError(result, 'username') || hasError(result, 'password'); 83 84 if (invalid) { 85 e.preventDefault(); 86 if (hasError(result, 'username')) addError(usernameEl, result.username[0]); 87 if (hasError(result, 'password')) addError(passwordEl, result.password[0]); 88 } 89 }); 90 91 // Forgot username form field validation 92 forgotUsernameEmailEl.on('change keyup', function () { 93 var result = validate({ email: forgotUsernameEmailEl.val() }, { email: emailConstraint }); 94 if (hasError(result, 'email')) { 95 addError(forgotUsernameEmailEl, result.email[0]); 96 } else { 97 removeErrors(forgotUsernameEmailEl); 98 } 99 }); 100 101 // Forgot username submit validation 102 forgotUsernameForm.on('submit', function (e) { 103 var result = validate({ email: forgotUsernameEmailEl.val() }, { email: emailConstraint }); 104 if (hasError(result, 'email')) { 105 e.preventDefault(); 106 addError(forgotUsernameEmailEl, result.email[0]); 107 } 108 }); 109 110 // Forgot password form field validation 111 forgotPasswordEmailEl.on('change keyup', function () { 112 var result = validate({ email: forgotPasswordEmailEl.val() }, { email: emailConstraint }); 113 if (hasError(result, 'email')) { 114 addError(forgotPasswordEmailEl, result.email[0]); 115 } else { 116 removeErrors(forgotPasswordEmailEl); 117 } 118 }); 119 120 // Forgot password submit validation 121 forgotPasswordForm.on('submit', function (e) { 122 var result = validate({ email: forgotPasswordEmailEl.val() }, { email: emailConstraint }); 123 if (hasError(result, 'email')) { 124 e.preventDefault(); 125 addError(forgotPasswordEmailEl, result.email[0]); 126 } 127 }); 128 }); 129 130 // Helper functions 131 function addError(el, error) { 132 el.addClass('wpamo-sso-error'); 133 el.parent().find('.wpamo-sso-error-message').remove(); 134 el.parent().append('<div class="wpamo-sso-error-message">' + error + '</div>'); 135 } 136 137 function removeErrors(el) { 138 el.removeClass('wpamo-sso-error'); 139 el.parent().find('.wpamo-sso-error-message').remove(); 140 } 141 142 function clearAllErrors(container) { 143 container.find('.wpamo-sso-error').removeClass('wpamo-sso-error'); 144 container.find('.wpamo-sso-error-message').remove(); 145 } 146 147 function hasError(result, type) { 148 return typeof result === 'object' && result !== null && result.hasOwnProperty(type); 149 } 150});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.