1/** 2 * Login and Register 3 * 4 * @package ThemeREX Addons 5 * @since v1.5 6 */ 7 8/* global jQuery, TRX_ADDONS_STORAGE */ 9 10jQuery(document).on('action.ready_trx_addons', function() { 11 12 "use strict"; 13 14/* 15 // Show/Hide user menu 16 if (jQuery('.trx_addons_login_link:not(.inited)').length > 0) { 17 jQuery('.trx_addons_login_link:not(.inited)').addClass('inited').on('click', function(e){ 18 jQuery(this).find('.trx_addons_login_menu').slideToggle().parent().toggleClass('menu_opened'); 19 e.preventDefault(); 20 return false; 21 }); 22 jQuery('body').on('click', function(e){ 23 jQuery(this).find('.trx_addons_login_menu:visible').slideUp().parent().removeClass('menu_opened'); 24 }); 25 } 26*/ 27 28 // Validate Login form 29 jQuery( 'form.trx_addons_popup_form_login:not(.inited)') 30 .addClass('inited') 31 .on( 'submit', function(e) { 32 var rez = trx_addons_login_validate(jQuery(this)); 33 if ( !rez ) { 34 e.preventDefault(); 35 } 36 return rez; 37 } ); 38 39 // Validate Registration form 40 jQuery( 'form.trx_addons_popup_form_register:not(.inited)') 41 .addClass('inited') 42 .on( 'submit', function(e) { 43 var rez = trx_addons_registration_validate(jQuery(this)); 44 if ( !rez ) { 45 e.preventDefault(); 46 } 47 return rez; 48 } ); 49 50 // Login form validation 51 function trx_addons_login_validate(form) { 52 form.find('input').removeClass('trx_addons_field_error'); 53 var error = trx_addons_form_validate(form, { 54 error_message_time: 4000, 55 exit_after_first_error: true, 56 rules: [ 57 { 58 field: "log", 59 min_length: { value: 1, message: TRX_ADDONS_STORAGE['msg_login_empty'] }, 60 max_length: { value: 60, message: TRX_ADDONS_STORAGE['msg_login_long'] } 61 }, 62 { 63 field: "pwd", 64 min_length: { value: 1, message: TRX_ADDONS_STORAGE['msg_password_empty'] }, 65 max_length: { value: 60, message: TRX_ADDONS_STORAGE['msg_password_long'] } 66 } 67 ] 68 }); 69 if (TRX_ADDONS_STORAGE['login_via_ajax'] && !error) { 70 trx_addons_login_ajax_loading( form, true ); 71 jQuery.post(TRX_ADDONS_STORAGE['ajax_url'], { 72 action: 'trx_addons_login_user', 73 nonce: TRX_ADDONS_STORAGE['ajax_nonce'], 74 redirect_to: form.find('input[name="redirect_to"]').length == 1 ? form.find('input[name="redirect_to"]').val() : '', 75 remember: form.find('input[name="rememberme"]').val(), 76 user_log: form.find('input[name="log"]').val(), 77 user_pwd: form.find('input[name="pwd"]').val() 78 }).done( function( response ) { 79 trx_addons_login_ajax_loading( form, false ); 80 var rez = trx_addons_parse_ajax_response( response ); 81 var result = form.find(".trx_addons_message_box") 82 .removeClass("trx_addons_message_box_error") 83 .removeClass("trx_addons_message_box_success"), 84 result_timeout = 3000; 85 if ( rez.error === '' ) { 86 result.addClass("trx_addons_message_box_success").html(TRX_ADDONS_STORAGE['msg_login_success']); 87 setTimeout( function() { 88 // Get a new URL to redirect after login 89 var new_url = rez.redirect_to !== '' 90 ? ( rez.redirect_to.indexOf( 'action=confirm_email' ) != -1 91 ? rez.redirect_to.substr( 0, rez.redirect_to.indexOf('?') ) 92 : rez.redirect_to 93 ) 94 : ( location.href.indexOf( 'action=confirm_email' ) != -1 95 ? TRX_ADDONS_STORAGE['site_url'] 96 : location.href 97 ); 98 // Add random string to the URL to prevent caching 99 new_url = trx_addons_add_to_url( new_url, { rnd: trx_addons_get_unique_id() } ); 100 // Redirect to the new URL 101 location.href = trx_addons_apply_filters( 'trx_addons_filter_redirect_url_after_login', new_url, rez ); 102 }, result_timeout ); 103 } else { 104 result.addClass("trx_addons_message_box_error").html(TRX_ADDONS_STORAGE['msg_login_error'] + (rez.error!==undefined ? '<br>' + rez.error : '')); 105 } 106 result.fadeIn().delay(result_timeout).fadeOut(); 107 jQuery(document).trigger(' action.got_ajax_response', { 108 action: 'trx_addons_login_user', 109 result: rez 110 }); 111 }); 112 } 113 return !TRX_ADDONS_STORAGE['login_via_ajax'] && !error; 114 } 115 116 117 // Fix a redirect URL for compatibility with the LearnPress plugin: 118 // if the plugin is active and the courses archive page is set as the homepage - 119 // adding the parameter 'rnd' to the URL will cause a redirect to the homepage. 120 trx_addons_add_filter( 'trx_addons_filter_redirect_url_after_login', function( url, rez ) { 121 if ( typeof lpData != 'undefined' && lpData.site_url === TRX_ADDONS_STORAGE['site_url'] ) { 122 url = lpData.site_url; 123 } 124 return url; 125 } ); 126 127 128 // Registration form validation 129 function trx_addons_registration_validate(form) { 130 form.find('input').removeClass('trx_addons_field_error'); 131 var error = trx_addons_form_validate(form, { 132 error_message_time: 4000, 133 exit_after_first_error: true, 134 rules: [ 135 { 136 field: "agree", 137 state: { value: 'checked', message: TRX_ADDONS_STORAGE['msg_not_agree'] }, 138 }, 139 { 140 field: "log", 141 min_length: { value: 1, message: TRX_ADDONS_STORAGE['msg_login_empty'] }, 142 max_length: { value: 60, message: TRX_ADDONS_STORAGE['msg_login_long'] } 143 }, 144 { 145 field: "email", 146 min_length: { value: 7, message: TRX_ADDONS_STORAGE['msg_email_not_val
146id'] }, 147 max_length: { value: 60, message: TRX_ADDONS_STORAGE['msg_email_long'] }, 148 mask: { value: TRX_ADDONS_STORAGE['email_mask'], message: TRX_ADDONS_STORAGE['msg_email_not_valid'] } 149 }, 150 { 151 field: "pwd", 152 min_length: { value: 4, message: TRX_ADDONS_STORAGE['msg_password_empty'] }, 153 max_length: { value: 60, message: TRX_ADDONS_STORAGE['msg_password_long'] } 154 }, 155 { 156 field: "pwd2", 157 equal_to: { value: 'pwd', message: TRX_ADDONS_STORAGE['msg_password_not_equal'] } 158 } 159 ] 160 }); 161 if (!error) { 162 trx_addons_login_ajax_loading( form, true ); 163 jQuery.post(TRX_ADDONS_STORAGE['ajax_url'], { 164 action: 'trx_addons_registration_user', 165 nonce: TRX_ADDONS_STORAGE['ajax_nonce'], 166 redirect_to: form.find('input[name="redirect_to"]').length == 1 ? form.find('input[name="redirect_to"]').val() : '', 167 user_name: form.find('input[name="log"]').val(), 168 user_email: form.find('input[name="email"]').val(), 169 user_pwd: form.find('input[name="pwd"]').val() 170 }).done( function( response ) { 171 trx_addons_login_ajax_loading( form, false ); 172 var rez = trx_addons_parse_ajax_response( response ); 173 var result = form.find(".trx_addons_message_box") 174 .removeClass("trx_addons_message_box_error") 175 .removeClass("trx_addons_message_box_success"), 176 result_timeout = 3000; 177 if (rez.error === '') { 178 result.addClass("trx_addons_message_box_success").html(TRX_ADDONS_STORAGE['msg_registration_success']); 179 if ( ! TRX_ADDONS_STORAGE['double_opt_in_registration'] ) { 180 setTimeout( function() { 181 if ( rez.redirect_to !== '' && trx_addons_apply_filters( 'trx_addons_filter_redirect_after_user_registration', false, rez.redirect_to ) ) { 182 location.href = rez.redirect_to; 183 } else { 184 jQuery('#trx_addons_login_popup .trx_addons_tabs_title_login > a').trigger('click'); 185 } 186 }, result_timeout ); 187 } else { 188 result_timeout = 5000; 189 setTimeout( function() { 190 jQuery( '#trx_addons_login_popup .mfp-close').trigger( 'click' ); 191 }, result_timeout ); 192 } 193 } else { 194 result.addClass("trx_addons_message_box_error").html(TRX_ADDONS_STORAGE['msg_registration_error'] + (rez.error!==undefined ? '<br>' + rez.error : '')); 195 } 196 result.fadeIn().delay(result_timeout).fadeOut(); 197 jQuery( document ).trigger( 'action.got_ajax_response', { 198 action: 'trx_addons_registration_user', 199 result: rez 200 }); 201 }); 202 } 203 return false; 204 } 205 206 // Show/hide loading waiting block 207 function trx_addons_login_ajax_loading( form, on ) { 208 var $popup = form.parents( ".trx_addons_popup" ); 209 var $loading = $popup.find( ".trx_addons_loading" ); 210 if ( $loading.length == 0 ) { 211 $popup.append( '<div class="trx_addons_loading"></div>' ); 212 $loading = $popup.find( " > .trx_addons_loading" ); 213 } 214 if ( on ) { 215 $loading.fadeIn(); 216 } else { 217 $loading.fadeOut(); 218 } 219 } 220 221});
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.