1/** 2 * Init scripts 3 * 4 * @package WordPress 5 * @subpackage ThemeREX Utilities 6 * @since v3.0 7 */ 8 9/* global jQuery:false */ 10 11// Global variables storage 12if (typeof TRX_UTILS_STORAGE == 'undefined') var TRX_UTILS_STORAGE = {}; 13 14jQuery(document).ready(function() { 15 "use strict"; 16 17 // Forms validation 18 //---------------------------------------------- 19 20 // Login form 21 jQuery('.popup_form.login_form').submit(function(e){ 22 "use strict"; 23 var rez = trx_utils_login_validate(jQuery(this)); 24 25 if (!rez) 26 e.preventDefault(); 27 return rez; 28 }); 29 30 // Registration form 31 jQuery('.popup_form.registration_form').submit(function(e){ 32 "use strict"; 33 var rez = trx_utils_registration_validate(jQuery(this)); 34 if (!rez) 35 e.preventDefault(); 36 return rez; 37 }); 38 39 // Comment form 40 jQuery("form#commentform").submit(function(e) { 41 "use strict"; 42 var rez = trx_utils_comments_validate(jQuery(this)); 43 if (!rez) 44 e.preventDefault(); 45 return rez; 46 }); 47 48}); 49 50 51 52 53 54// Forms validation 55//------------------------------------------------------- 56 57 58/* 59// Usage example: 60var error = trx_utils_form_validate(jQuery(form_selector), { // -------- Options --------- 61 error_message_show: true, // Display or not error message 62 error_message_time: 5000, // Time to display error message 63 error_message_class: 'sc_infobox sc_infobox_style_error', // Class, appended to error message block 64 error_message_text: 'Global error text', // Global error message text (if don't write message in checked field) 65 error_fields_class: 'error_fields_class', // Class, appended to error fields 66 exit_after_first_error: false, // Cancel validation and exit after first error 67 rules: [ 68 { 69 field: 'author', // Checking field name 70 min_length: { value: 1, message: 'The author name can\'t be empty' }, // Min character count (0 - don't check), message - if error occurs 71 max_length: { value: 60, message: 'Too long author name'} // Max character count (0 - don't check), message - if error occurs 72 }, 73 { 74 field: 'email', 75 min_length: { value: 7, message: 'Too short (or empty) email address' }, 76 max_length: { value: 60, message: 'Too long email address'}, 77 mask: { value: '^([a-z0-9_\\-]+\\.)*[a-z0-9_\\-]+@[a-z0-9_\\-]+(\\.[a-z0-9_\\-]+)*\\.[a-z]{2,6}$', message: 'Invalid email address'} 78 }, 79 { 80 field: 'comment', 81 min_length: { value: 1, message: 'The comment text can\'t be empty' }, 82 max_length: { value: 200, message: 'Too long comment'} 83 }, 84 { 85 field: 'pwd1', 86 min_length: { value: 5, message: 'The password can\'t be less then 5 characters' }, 87 max_length: { value: 20, message: 'Too long password'} 88 }, 89 { 90 field: 'pwd2', 91 equal_to: { value: 'pwd1', message: 'The passwords in both fields must be equals' } 92 } 93 ] 94}); 95*/ 96 97function trx_utils_form_validate(form, opt) { 98 "use strict"; 99 var error_msg = ''; 100 form.find(":input").each(function() { 101 "use strict"; 102 if (error_msg!='' && opt.exit_after_first_error) return; 103 for (var i = 0; i < opt.rules.length; i++) { 104 if (jQuery(this).attr("name") == opt.rules[i].field) { 105 var val = jQuery(this).val(); 106 var error = false; 107 if (typeof(opt.rules[i].min_length) == 'object') { 108 if (opt.rules[i].min_length.value > 0 && val.length < opt.rules[i].min_length.value) { 109 if (error_msg=='') jQuery(this).get(0).focus(); 110 error_msg += '<p class="error_item">' + (typeof(opt.rules[i].min_length.message)!='undefined' ? opt.rules[i].min_length.message : opt.error_message_text ) + '</p>' 111 error = true; 112 } 113 } 114 if ((!error || !opt.exit_after_first_error) && typeof(opt.rules[i].max_length) == 'object') { 115 if (opt.rules[i].max_length.value > 0 && val.length > opt.rules[i].max_length.value) { 116 if (error_msg=='') jQuery(this).get(0).focus(); 117 error_msg += '<p class="error_item">' + (typeof(opt.rules[i].max_length.message)!='undefined' ? opt.rules[i].max_length.message : opt.error_message_text ) + '</p>' 118 error = true; 119 } 120 } 121 if ((!error || !opt.exit_after_first_error) && typeof(opt.rules[i].mask) == 'object') { 122 if (val.length > 0 && opt.rules[i].mask.value != '') { 123 var regexp = new RegExp(opt.rules[i].mask.value); 124 if (!regexp.test(val)) { 125 if (error_msg=='') jQuery(this).get(0).focus(); 126 error_msg += '<p class="error_item">' + (typeof(opt.rules[i].mask.message)!='undefined' ? opt.rules[i].mask.message : opt.error_message_text ) + '</p>' 127 error = true; 128 } 129 } 130 } 131 if ((!error || !opt.exit_after_first_error) && typeof(opt.rules[i].state) == 'object') { 132 if (opt.rules[i].state.value=='checked' && !jQuery(this).get(0).checked) { 133 if (error_msg=='') jQuery(this).get(0).focus(); 134 error_msg += '<p class="error_item">' + (typeof(opt.rules[i].state.message)!='undefined' ? opt.rules[i].state.message : opt.error_message_text ) + '</p>' 135 error = true; 136 } 137 } 138 if ((!error || !opt.exit_after_first_error) && typeof(opt.rules[i].equal_to) == 'object') { 139 if (opt.rules[i].equal_to.value != '' && val!=jQuery(jQuery(this).get(0).form[opt.rules[i].equal_to.value]).val()) { 140 if (error_msg=='') jQuery(this).get(0).focus(); 141 error_msg += '<p class="error_item">' + (typeof(opt.rules[i].equal_to.message)!='undefined' ? opt.rules[i].equal_to.message : opt.error_message_text ) + '</p>' 142 error = true; 143 } 144 } 145 if (opt.error_fields_class != '') jQuery(this).toggleClass(opt.error_fields_class, error); 146 } 147 } 148 }); 149 if (error_msg!='' && opt.error_message_show) { 150 var error_message_box = form.find(".result"); 151 if (error_message_box.length == 0) error_message_box = form.parent().find(".result"); 152 if (error_message_box.length == 0) { 153 form.append('<div class="result"></div>'); 154 error_message_box = form.find(".result"); 155 } 156 if (opt.error_message_class) error_message_box.toggleClass(opt.error_message_class, true); 157 error_message_box.html(error_msg).fadeIn(); 158 setTimeout(function() { error_message_box.fadeOut(); }, opt.error_message_time); 159 } 160 return error_msg!=''; 161} 162 163 164// Comments form 165function trx_utils_comments_validate(form) { 166 "use strict"; 167 form.find('input').removeClass('error_fields_class'); 168 var rules = { 169 error_message_text: TRX_UTILS_STORAGE['msg_error_global'], // Global error message text (if don't write in checked field) 170 error_message_show: true, // Display or not error message 171 error_message_time: 4000, // Error message display time 172 error_message_class: 'sc_infobox sc_infobox_style_error', // Class appended to error message block 173 error_fields_class: 'error_fields_class', // Class appended to error fields 174 exit_after_first_error: false, // Cancel validation and exit after first error 175 rules: [ 176 { 177 field: 'comment', 178 min_length: { value: 1, message: TRX_UTILS_STORAGE['msg_text_empty'] }, 179 max_length: { value: TRX_UTILS_STORAGE['comments_maxlength'], message: TRX_UTILS_STORAGE['msg_text_long']} 180 } 181 ] 182 }; 183 if (form.find('.comments_author input[aria-required="true"]').length > 0) { 184 rules.rules.push( 185 { 186 field: 'author', 187 min_length: { value: 1, message: TRX_UTILS_STORAGE['msg_name_empty']}, 188 max_length: { value: 60, message: TRX_UTILS_STORAGE['msg_name_long']} 189 } 190 ); 191 } 192 if (form.find('.comments_email input[aria-required="true"]').length > 0) { 193 rules.rules.push( 194 { 195 field: 'email', 196 min_length: { value: 7, message: TRX_UTILS_STORAGE['msg_email_empty']}, 197 max_length: { value: 60, message: TRX_UTILS_STORAGE['msg_email_long']}, 198 mask: { value: TRX_UTILS_STORAGE['email_mask'], message: TRX_UTILS_STORAGE['msg_email_not_val
198id']} 199 } 200 ); 201 } 202 var error = trx_utils_form_validate(form, rules); 203 return !error; 204} 205 206 207// Login form 208function trx_utils_login_validate(form) { 209 "use strict"; 210 form.find('input').removeClass('error_fields_class'); 211 var error = trx_utils_form_validate(form, { 212 error_message_show: true, 213 error_message_time: 4000, 214 error_message_class: 'sc_infobox sc_infobox_style_error', 215 error_fields_class: 'error_fields_class', 216 exit_after_first_error: true, 217 rules: [ 218 { 219 field: "log", 220 min_length: { value: 1, message: TRX_UTILS_STORAGE['msg_login_empty'] }, 221 max_length: { value: 60, message: TRX_UTILS_STORAGE['msg_login_long'] } 222 }, 223 { 224 field: "pwd", 225 min_length: { value: 4, message: TRX_UTILS_STORAGE['msg_password_empty'] }, 226 max_length: { value: 30, message: TRX_UTILS_STORAGE['msg_password_long'] } 227 } 228 ] 229 }); 230 if (TRX_UTILS_STORAGE['login_via_ajax'] && !error) { 231 jQuery.post(TRX_UTILS_STORAGE['ajax_url'], { 232 action: 'trx_utils_login_user', 233 nonce: TRX_UTILS_STORAGE['ajax_nonce'], 234 remember: form.find('#rememberme').val(), 235 user_log: form.find('#log').val(), 236 user_pwd: form.find('#password').val() 237 }).done(function(response) { 238 var rez = {}; 239 try { 240 rez = JSON.parse(response); 241 } catch (e) { 242 rez = { error: TRX_UTILS_STORAGE['ajax_error'] }; 243 console.log(response); 244 } 245 var result_box = form.find('.result'); 246 if (result_box.length==0) result_box = form.siblings('.result'); 247 if (result_box.length==0) result_box = form.after('<div class="result"></div>').next('.result'); 248 result_box.toggleClass('sc_infobox_style_error', false).toggleClass('sc_infobox_style_success', false); 249 if (rez.error === '') { 250 result_box.addClass('sc_infobox sc_infobox_style_success').html(TRX_UTILS_STORAGE['msg_login_success']); 251 setTimeout(function() { 252 location.reload(); 253 }, 3000); 254 } else { 255 result_box.addClass('sc_infobox sc_infobox_style_error').html(TRX_UTILS_STORAGE['msg_login_failed'] + '<br>' + rez.error); 256 } 257 result_box.fadeIn().delay(3000).fadeOut(); 258 }); 259 } 260 return !TRX_UTILS_STORAGE['login_via_ajax'] && !error; 261} 262 263 264// Registration form 265function trx_utils_registration_validate(form) { 266 "use strict"; 267 form.find('input').removeClass('error_fields_class'); 268 var error = trx_utils_form_validate(form, { 269 error_message_show: true, 270 error_message_time: 4000, 271 error_message_class: "sc_infobox sc_infobox_style_error", 272 error_fields_class: "error_fields_class", 273 exit_after_first_error: true, 274 rules: [ 275 { 276 field: "registration_agree", 277 state: { value: 'checked', message: TRX_UTILS_STORAGE['msg_not_agree'] }, 278 }, 279 { 280 field: "registration_username", 281 min_length: { value: 1, message: TRX_UTILS_STORAGE['msg_login_empty'] }, 282 max_length: { value: 60, message: TRX_UTILS_STORAGE['msg_login_long'] } 283 }, 284 { 285 field: "registration_email", 286 min_length: { value: 7, message: TRX_UTILS_STORAGE['msg_email_empty'] }, 287 max_length: { value: 60, message: TRX_UTILS_STORAGE['msg_email_long'] }, 288 mask: { value: TRX_UTILS_STORAGE['email_mask'], message: TRX_UTILS_STORAGE['msg_email_not_valid'] } 289 }, 290 { 291 field: "registration_pwd", 292 min_length: { value: 4, message: TRX_UTILS_STORAGE['msg_password_empty'] }, 293 max_length: { value: 30, message: TRX_UTILS_STORAGE['msg_password_long'] } 294 }, 295 { 296 field: "registration_pwd2", 297 equal_to: { value: 'registration_pwd', message: TRX_UTILS_STORAGE['msg_password_not_equal'] } 298 } 299 ] 300 }); 301 if (!error) { 302 jQuery.post(TRX_UTILS_STORAGE['ajax_url'], { 303 action: 'trx_utils_registration_user', 304 nonce: TRX_UTILS_STORAGE['ajax_nonce'], 305 user_name: form.find('#registration_username').val(), 306 user_email: form.find('#registration_email').val(), 307 user_pwd: form.find('#registration_pwd').val() 308 }).done(function(response) { 309 var rez = {}; 310 try { 311 rez = JSON.parse(response); 312 } catch (e) { 313 rez = { error: TRX_UTILS_STORAGE['ajax_error'] }; 314 console.log(response); 315 } 316 var result_box = form.find('.result'); 317 if (result_box.length==0) result_box = form.siblings('.result'); 318 if (result_box.length==0) result_box = form.after('<div class="result"></div>').next('.result'); 319 result_box.toggleClass('sc_infobox_style_error', false).toggleClass('sc_infobox_style_success', false); 320 if (rez.error === '') { 321 result_box.addClass('sc_infobox sc_infobox_style_success').html(TRX_UTILS_STORAGE['msg_registration_success']); 322 setTimeout(function() { 323 jQuery('.popup_login_link').trigger('click'); 324 }, 3000); 325 } else { 326 result_box.addClass('sc_infobox sc_infobox_style_error').html(TRX_UTILS_STORAGE['msg_registration_failed'] + ' ' + rez.error); 327 } 328 result_box.fadeIn().delay(3000).fadeOut(); 329 }); 330 } 331 return false
vendor: 4 bytes, lines 331-332
331; 332}
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.