1var LRM_Pro = LRM_Pro ? LRM_Pro : {}; 2 3setTimeout(function () { 4 if ( LRM_Pro.reCaptcha.is_active ) { 5 if ( ! LRM_Pro.reCaptcha.is_configured ) { 6 alert( "AJAX Login Modal: reCaptcha is enabled but the API keys are missing!" ); 7 return; 8 } 9 // For invisible or Inline Forms - load early to collect the data 10 if ( LRM_Pro.reCaptcha.is_invisible || jQuery(".lrm-inline").length > 0 ) { 11 LRM_reCaptcha_load(); 12 } else { 13 jQuery(document).on("lrm/show_modal", LRM_reCaptcha_load); 14 } 15 } 16}, 250); 17 18function LRM_reCaptcha_load() { 19 (function (d, s, id) { // Load the SDK asynchronously 20 var js, fjs = d.getElementsByTagName(s)[0]; 21 if (d.getElementById(id)) return; 22 js = d.createElement(s); 23 js.id = id; 24 js.defer = js.async = true; 25 js.src = "https://www.google.com/recaptcha/api.js?onload=LRM_reCaptcha_onloadCallback&render=explicit"; 26 fjs.parentNode.insertBefore(js, fjs); 27 }(document, 'script', 'lrm-recaptcha')); 28 29} 30function LRM_reCaptcha_onloadCallback() { 31 var grecaptchas = document.querySelectorAll(".lrm-grecaptcha"); 32 33 for(var N = 0; N < grecaptchas.length; N++) { 34 grecaptchas[N].setAttribute("data-widget-id", grecaptcha.render( grecaptchas[N] ) ); 35 } 36} 37 38function LRM_reCaptcha_submitCallback(token) { 39 jQuery("form[data-grecaptcha-execute]").submit(); 40} 41 42jQuery(document).ready(function($) { 43 44 // BuddyPress 45 46 if ( LRM_Pro.buddypress_integration_is_on ) { 47 var $BP_Messages = $(".bp-messages"); 48 49 if ($BP_Messages.length) { 50 $(".js-lrm-form .signup-form").prepend('<div class="lrm-form-message">' + $BP_Messages.find("p").html() + '</div>'); 51 $BP_Messages.remove(); 52 } else if ($(".js-lrm-form #buddypress #signup_form").length) { 53 $(".js-lrm-form #buddypress #signup_form").prepend('<div class="lrm-form-message"></div>'); 54 } 55 } 56 57 $("#buddypress #activate-page a").on("click",function (event) { 58 event.preventDefault(); 59 jQuery(document).trigger('lrm_show_login'); 60 }); 61 62 63 ///////// ### UltimateMember Section ### 64 65 $(".lrm-signup-section .um-register form").addClass("lrm-form js-lrm-form").prepend('<p class="lrm-form-message lrm-form-message--init"></p>'); 66 67 var $um_submits = $(".lrm-signup-section input#um-submit-btn"); 68 69 $.each($um_submits, function(k, el) { 70 el.outerHTML = el.outerHTML.replace(/^\<input/, '<button') + el.value + '</button>'; 71 // var $um_submit = $(el); 72 // $um_submit.removeAttr("type").attr("type", "submit").text( $um_submit.val() ); 73 }) 74 75 ///////// ### Redirects Section ### 76 77 $(document).on('lrm/ajax_response', function (event, response, $form, action) { 78 if ( "email-verification-pro-w-redirect" === response.data.action && response.data.redirect_url ) { 79 window.location.href = response.data.redirect_url; 80 return; 81 } 82 }); 83 84 //$(document).trigger('lrm_user_logged_in'); 85 $(document).on("lrm_user_logged_in", function (event, response, $form, action) { 86 if ( LRM.redirect_url ) { 87 window.location.href = LRM.redirect_url; 88 return; 89 } 90 91 /** 92 * Tweak for Single WOO Product page 93 * @since 1.26 94 */ 95 if ( saved_target.length ) { 96 $( saved_target[1] ).trigger( saved_target[0] ); 97 return; 98 } 99 100 if ( response.data.redirect_url ) { 101 window.location.href = response.data.redirect_url; 102 return; 103 } 104 105 // 106 // if ( ! LRM_Pro.redirect_urls.after_login && !LRM_Pro.redirect_urls.after_registration ) { 107 // return; 108 // } 109 // 110 // if ( LRM_Pro.redirect_urls.after_login && "login" == action ) { 111 // window.location.href = LRM_Pro.redirect_urls.after_login; 112 // } else if ( LRM_Pro.redirect_urls.after_registration && "registration" == action ) { 113 // window.location.href = LRM_Pro.redirect_urls.after_registration; 114 // } 115 }); 116 117 // Fix for ACF PRO plugin 118 setTimeout(function() { 119 // action for 3rd party customization 120 if ("undefined" != typeof(acf)) { 121 acf.add_action('submit', function ($form) { 122 $form.data("lrm-acf-validated", "yes"); 123 }); 124 } 125 }, 100); 126 127 // $(document).on('submit', ".lrm-", function (event) { 128 // 129 // }); 130 ///////// ### Redirects Section :: END 131 132 ///////// ### Woocommerce Section ### 133 if ( LRM_Pro.woo_add_to_cart_hook ) { 134 if ($("body").hasClass("single-product")) { 135 $(".lrm-form-message--init").html(LRM_Pro.l10n.woo_must_register); 136 } 137 } 138 if ( LRM_Pro.woo_on_proceed_to_checkout ) { 139 if ($("body").hasClass("woocommerce-cart")) { 140 $(".lrm-form-message--init").html(LRM_Pro.l10n.woo_must_register); 141 } 142 } 143 144 if ( LRM_Pro.woo_on_proceed_to_checkout ) { 145 // Show modal When clicked to "Process to Checkout" on Cart page 146 $(".wc-proceed-to-checkout .checkout-button").on('click', function (event) { 147 if ( !LRM.is_customize_preview && LRM.is_user_logged_in) { 148 return; 149 } 150 151 //$(this).addClass("lrm-redirect"); 152 153 event.preventDefault(); 154 jQuery(document).trigger('lrm_show_signup'); 155 saved_target = ["click", ".wc-proceed-to-checkout .checkout-button"]; 156 // Redirect user to the Checkout after login/register 157 LRM.redirect_url = $(this).attr("href"); 158 }); 159 } 160 161 /** 162 * Tweak for Single WOO Product page 163 * Save event details to add for cart after log-in 164 * @since 1.26 165 */ 166 var saved_target = []; 167 168 if ( LRM_Pro.woo_add_to_cart_hook ) { 169 // Product single page 170 $(document).on('submit', "form.cart", function (event) { 171 if ( !LRM.is_customize_preview && LRM.is_user_logged_in) { 172 return true; 173 } 174 175 event.preventDefault(); 176 jQuery(document).trigger('lrm_show_signup'); 177 saved_target = ["click", ".single_add_to_cart_button"]; 178 }); 179 // Products list 180 $(document).on('click', ".add_to_cart_button", function (event) { 181 if ( !LRM.is_customize_preview && LRM.is_user_logged_in) { 182 return true; 183 } 184 185 $(this).addClass("lrm-redirect"); 186 187 event.preventDefault(); 188 jQuery(document).trigger('lrm_show_signup', [event]); 189 }); 190 191 // To stop adding to cart items 192 $(".add_to_cart_button").removeClass("ajax_add_to_cart"); 193 } 194 ///////// ### Woocommerce Section :: END 195 196 ///////// ### reCaptcha Section ### 197 198 $(document).on('lrm/do_not_submit_form', function(event, form){ 199 var $form = $(form); 200 201 let action = $form.data("action"); 202 if ( action !== "login" && "no" !== LRM.validate_password_strength && lrm_val
202idate_password( form ) < 3 ) { 203 // Allow weak password for the "password-reset" page 204 if ( action === "password-reset" && "yes_allow_weak" === LRM.validate_password_strength && $(".pw-checkbox").attr("checked") ) { 205 return; 206 } 207 LRM_Form.set_message( $form, LRM.l10n.passwords_is_weak, true ); 208 return true; 209 } 210 211 $("form[data-grecaptcha-execute]").attr("data-grecaptcha-execute", null); 212 213 var $is_GF = $form.find(".gform_hidden"); 214 if ( $is_GF.length ) { 215 var GF_ID = $form.find("input[name='gform_submit']").val(); 216 } 217 218 // typeof wp_recaptchaLoadCallback != "undefined" && 219 if ( $form.find(".g-recaptcha-response").length && ! $form.find(".g-recaptcha-response").val() ) { 220 if ( $form.find(".inv-recaptcha-holder").length > 0 ) { 221 grecaptcha.execute($form.find(".inv-recaptcha-holder").data("widget-id")); 222 } else if ( $form.find(".lrm-grecaptcha").length > 0 ) { 223 var $lrmRecaptcha = $form.find(".lrm-grecaptcha"); 224 var widgetID = $lrmRecaptcha.data("widget-id"); 225 var recaptchaResponse = grecaptcha.getResponse(widgetID); 226 if ( recaptchaResponse ) { 227 // Allow Submission 228 return false; 229 } 230 if ( $lrmRecaptcha.data("size") === "invisible" ) { 231 grecaptcha.execute(widgetID); 232 $form.attr("data-grecaptcha-execute", "yes"); 233 } else { 234 LRM_Form.set_message($form, LRM_Pro.l10n.recaptcha_error, true); 235 if ( $is_GF.length && GF_ID ) { 236 window["gf_submitting_" + GF_ID] = false; 237 $form.find(".gform_ajax_spinner").remove(); 238 } 239 } 240 } else { 241 LRM_Form.set_message($form, LRM_Pro.l10n.recaptcha_error, true); 242 if ( $is_GF.length && GF_ID ) { 243 window["gf_submitting_" + GF_ID] = false; 244 $form.find(".gform_ajax_spinner").remove(); 245 } 246 } 247 //$form.find(".lrm-form-message").html(LRM_Pro.l10n.recaptcha_error).addClass("lrm-is-error"); 248 // DO not allow Submission! 249 return true; 250 } 251 // Allow Submission 252 return false; 253 }); 254 255 // Match captcha 256 $(document).on('lrm/ajax_response', function( event, response, $form, action ){ 257 if ( response.success && response.data.user_id && "registration" === action && LRM_Pro.hide_form_after_registration ) { 258 $form.addClass("--registration-done"); 259 } 260 if (!response.success && "refresh_captcha" === response.data.action && response.data.html) { 261 $form.find(".lrm-math-captcha-content").html( response.data.html ); 262 263 setTimeout(function() { 264 $form.find("input.lrm-match-value").trigger('focus'); 265 }, 100); 266 } 267 }); 268 269 $(document).on('lrm_pro/maybe_refresh_recaptcha', function(){ 270 271 $(".lrm-signup-section #um-submit-btn").prop("disabled", ""); 272 273 if ( typeof grecaptcha != "undefined" ) { 274 // Plugin Core reCaptcha 275 var captchas = []; 276 277 captchas = document.querySelectorAll(".lrm-grecaptcha"); 278 if ( captchas.length ) { 279 for (var i=0;i<captchas.length;i++) { 280 if ( captchas[i].dataset.widgetId && grecaptcha.getResponse( captchas[i].dataset.widgetId ) ) { 281 grecaptcha.reset( captchas[i].dataset.widgetId ); 282 } 283 } 284 } 285 286 captchas = document.querySelectorAll(".g-recaptcha"); 287 if ( captchas.length ) { 288 for (var i=0;i<captchas.length;i++) { 289 if ( captchas[i].dataset.widgetId && grecaptcha.getResponse( captchas[i].dataset.widgetId ) ) { 290 grecaptcha.reset( captchas[i].dataset.widgetId ); 291 } 292 } 293 } 294 /** 295 * For "Google Captcha (reCAPTCHA) by BestWebSoft" 296 * @since 1.29 297 */ 298 captchas = document.querySelectorAll(".gglcptch_recaptcha"); 299 if ( captchas.length ) { 300 var gindex = null; 301 for (var i=0;i<captchas.length;i++) { 302 gindex = $(captchas[i]).data( "gglcptch_index" ); 303 if ( gindex !== null ) { 304 //console.log( gindex ); 305 grecaptcha.reset( gindex ); 306 } 307 gindex = null; 308 } 309 } 310 } 311 312 }); 313 314 $(document).on('lrm_gf_ajax', function( event, responseText, status, $form, action ) { 315 $(".js-lrm-form .gform_wrapper").html( responseText ); 316 $(document).on('submit', '.js-lrm-form form', window.lrm_submit_form); 317 318 // Reset the GF "submitting" mark to allow submit the form again 319 var $is_GF = $form.find(".gform_hidden"); 320 if ( $is_GF.length ) { 321 var GF_ID = $form.find("input[name='gform_submit']").val(); 322 323 if ( GF_ID ) { 324 window["gf_submitting_" + GF_ID] = false;
325 $form.find(".gform_ajax_spinner").remove(); 326 327 // re-render re-captcha 328 if ( $form.find(".ginput_recaptcha") ) { 329 grecaptcha.render( $form.find(".ginput_recaptcha")[0] ); 330 } 331 } 332 } 333 }); 334 335 setTimeout(function() { 336 // FIX for https://wordpress.org/plugins/invisible-recaptcha/ 337 if ( typeof renderInvisibleReCaptcha !== "undefined" ) { 338 $(".inv-recaptcha-holder").each(function (N, captcha_holder) { 339 $(captcha_holder).data("widget-id", N); 340 }); 341 } 342 }, 500); 343 ///////// ### reCaptcha Section :: END 344 345 // Binding to trigger checkPasswordStrength 346 347 $( 'body' ).on( 'keyup', '#signup-password,#signup-password-confirmation', function( event ) { 348 lrm_validate_password( this ); 349 }); 350 351 function lrm_validate_password( el ) { 352 // Stop, if modal is not visible! 353 var $el = $(el); 354 var is_pass_reset = $el.is("form") && $el.data("action") === "password-reset"; 355 356 var $lrm_main = is_pass_reset ? $el : $(el).closest(".lrm-main"); 357 if ( is_pass_reset || $lrm_main.hasClass("is-visible") ) { 358 if ( !is_pass_reset ) { 359 var $confirmation_pass = $lrm_main.find("#signup-password-confirmation").length ? $lrm_main.find("#signup-password-confirmation") : null; 360 } 361 var $pass_field = is_pass_reset ? $el.find("#lrm-password1") : $lrm_main.find("#signup-password"); 362 return LRM.checkPasswordStrength( 363 $pass_field, // First password field 364 $confirmation_pass, 365 $pass_field.parent().parent().find(".lrm-pass-strength-result") // Strength meter 366 ); 367 } 368 return false; 369 } 370 371 // .on( 'focus', '#signup-password', function( event ) { 372 // // Preload zxcvbn.js 373 // LRM.loadPasswordMeter(function() {}); 374 // $( 'body' ).off( 'focus', '#signup-password' ); 375 // });; 376 377 ///////// ### Set Password Section :: END - 378});
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.