返回
(function ($) { 'use strict'; $( function () { /** * Install LoginPress Add-Ons on one click. * * @since 1.2.2 */ $( document ).on( 'change', '.loginpress-install-pro-addon', function (e) { e.preventDefault(); e.stopPropagation(); var addonBtn = $( this ); var addonWrapper = $( this ).closest( '.loginpress-extension' ); var nonce = addonWrapper.find( 'input[name="loginpress_pro_addon_nonce"]' ).val(); var pluginSlug = addonWrapper.find( 'input[name="loginpress_pro_addon_slug"]' ).val(); var pluginID = addonWrapper.find( 'input[name="loginpress_pro_addon_id"]' ).val(); $.ajax( { type: 'GET', url : 'update.php', data: { action : 'install-plugin', plugin : pluginSlug, lgp : 1, id : pluginID, _wpnonce: nonce }, beforeSend: function () { addonWrapper.find( '.loginpress-addon-enable' ).show(); }, success: function (res) { activateAddon( pluginSlug, nonce, addonWrapper, addonBtn ); }, error : function (res) { // console.log(res); addonWrapper.find( '.loginpress-uninstalling' ).hide(); addonWrapper.find( '.loginpress-uninstall' ).hide(); addonWrapper.find( '.loginpress-addon-enable' ).hide(); addonWrapper.find( '.loginpress-wrong' ).show(); setTimeout( function () { addonWrapper.find( '.loginpress-wrong' ).hide(); }, 2000 ); } } ); } ); /** * Deactivate LoginPress Add-Ons on one click. * * @since 1.2.2 */ $( document ).on( 'change', '.loginpress-uninstall-pro-addon', function (e) { e.preventDefault(); e.stopPropagation(); var addonBtn = $( this ); var addonWrapper = $( this ).closest( '.loginpress-extension' ); var nonce = addonWrapper.find( 'input[name="loginpress_pro_addon_nonce"]' ).val(); var pluginSlug = addonWrapper.find( 'input[name="loginpress_pro_addon_slug"]' ).val(); $.ajax( { type: 'POST', url : ajaxurl, data: { action : 'loginpress_deactivate_addon', slug : pluginSlug, _wpnonce: nonce }, beforeSend: function () { addonWrapper.find( '.loginpress-uninstalling' ).show(); }, success: function (res) { var newNonce = res; addonWrapper.find( 'input[name="loginpress_pro_addon_nonce"]' ).val( newNonce ); addonWrapper.find( '.loginpress-uninstalling' ).hide(); addonWrapper.find( '.loginpress-uninstall' ).show(); addonBtn.addClass( 'loginpress-active-pro-addon' ).removeClass( 'loginpress-install-pro-addon loginpress-uninstall-pro-addon' ).html( 'Activate Plugin' ); setTimeout( function () { addonWrapper.find( '.loginpress-uninstall' ).hide(); }, 3000 ); }, error: function (res) { // console.log(res); addonWrapper.find( '.loginpress-uninstalling' ).hide(); addonWrapper.find( '.loginpress-uninstall' ).hide(); addonWrapper.find( '.loginpress-wrong' ).show(); setTimeout( function () { addonWrapper.find( '.loginpress-wrong' ).hide(); }, 2000 ); } } ); } ); /** * Activate LoginPress Add-Ons on one click. * * @since 1.2.2 */ $( document ).on( 'change', '.loginpress-active-pro-addon', function (e) { e.preventDefault(); e.stopPropagation(); var addonBtn = $( this ); var addonWrapper = $( this ).closest( '.loginpress-extension' ); var nonce = addonWrapper.find( 'input[name="loginpress_pro_addon_nonce"]' ).val(); var pluginSlug = addonWrapper.find( 'input[name="loginpress_pro_addon_slug"]' ).val(); activateAddon( pluginSlug, nonce, addonWrapper, addonBtn ); } ); /** * Activate LoginPress Add-Ons. * * @param string pluginSlug * @param string nonce * @param string addonWrapper * @param string addonBtn * @since 1.2.2 */ function activateAddon( pluginSlug, nonce, addonWrapper, addonBtn ) { $.ajax( { url : ajaxurl, type: 'POST', data: { slug : pluginSlug, action: 'loginpress_activate_addon', _wpnonce: nonce }, beforeSend: function () { addonWrapper.find( '.loginpress-addon-enable' ).show(); }, success: function (res) { var newNonce = res; addonWrapper.find( '.loginpress-addon-enable' ).hide(); addonWrapper.find( '.loginpress-install' ).show(); addonBtn.addClass( 'loginpress-uninstall-pro-addon' ).removeClass( 'loginpress-install-pro-addon loginpress-active-pro-addon' ).html( 'Uninstall' ); addonWrapper.find( 'input[name="loginpress_pro_addon_nonce"]' ).val( newNonce ); setTimeout( function () { addonWrapper.find( '.loginpress-install' ).hide(); }, 3000 ); }, error : function ( xhr, textStatus, errorThrown ) { // console.log('Ajax Not Working'); addonWrapper.find( '.loginpress-uninstalling' ).hide(); addonWrapper.find( '.loginpress-uninstall' ).hide(); addonWrapper.find( '.loginpress-wrong' ).show(); setTimeout( function () { addonWrapper.find( '.loginpress-wrong' ).hide(); }, 2000 ); } } ); } // Code to fire when the DOM is ready. 3.0.0 $( '.wpbrigade-video-link' ).on( 'click', function (e) { e.preventDefault(); var target = $( this ).data( 'video-id' ); $( '#' + target ).fadeIn(); } ); $( '.wpbrigade-close-popup' ).on( 'click', function (e) { $( this ).parent().parent().fadeOut(); $( '.wpbrigade-video-wrapper iframe' ).attr( 'src', 'https://www.youtube.com/embed/GMAwsHomJlE' ); } ); // Code for Video Popup var videoBtn = document.querySelectorAll( '.video a' ); for (var i = 0; i < videoBtn.length; i++) { videoBtn[i].addEventListener( 'click', function (e) { e.preventDefault(); var getLink = this.getAttribute( 'href' ); document.querySelector( '#loginpress-video' ).setAttribute( 'src', getLink.replace( 'watch?v=', 'embed/' ) + '?autoplay=1' ); document.querySelector( 'html' ).classList.add( 'loginpress-video-play' ); } ); } function closePop() { document.querySelector( '#loginpress-video' ).setAttribute( 'src', '' ); document.querySelector( 'html' ).classList.remove( 'loginpress-video-play' ); } if (document.querySelector( '.loginpress-cross' )) { document.querySelector( '.loginpress-cross' ).addEventListener( 'click', function (e) { closePop(); } ); document.querySelector( '.loginpress-video-overlay' ).addEventListener( 'click', function (e) { closePop(); } ); } // $("#wpb-loginpress_setting\\[enable_recaptcha_promo\\]").on('click', function() { // // var promotion = $('#wpb-loginpress_setting\\[enable_recaptcha_promo\\]'); // if ( promotion.is(":checked") ) { // $('tr.recaptcha-promo-img').show(); // } else { // $('tr.recaptcha-promo-img').hide(); // } // }); // on click promo checkbox. // Remove Disabled attribute from Import Button. $( '#loginPressImport' ).on( 'change', function (event) { event.preventDefault(); var loginpressFileImp = $( '#loginPressImport' ).val(); $( this ).prev( 'span' ).html( loginpressFileImp.split( '\\' ).pop() ); var loginpressFileExt = loginpressFileImp.substr( loginpressFileImp.lastIndexOf( '.' ) + 1 ); $( '.loginpress-import' ).attr( "disabled", "disabled" ); if ( 'json' == loginpressFileExt && loginpressFileImp.split( /(\\|\/)/g ).pop().substring( 0, 10 ) === 'loginpress' ) { $( ".import_setting .wrong-import" ).html( "" ); $( '.loginpress-import' ).removeAttr( "disabled" ); } else { $( ".import_setting .wrong-import" ).html( "Choose LoginPress settings file only." ); } } ); $( "#wpb-loginpress_setting\\[enable_privacy_policy\\]" ).on( 'click', function () { var privacy_editor = $( '#wpb-loginpress_setting\\[enable_privacy_policy\\]' ); if (privacy_editor.is( ":checked" )) { $( 'tr.privacy_policy' ).show(); } else { $( 'tr.privacy_policy' ).hide(); } } ); // on click promo checkbox. /** * On load of LoginPress settings or Click on Force Rest Password show or hide section * * @since 3.0.0 */ function loginPressForceChangePasswordSettings() { if ( $( '#wpb-loginpress_setting\\[enable_password_reset\\]' ).is( ":checked" ) ) { $( 'tr.roles_for_password_reset' ).show(); $( 'tr.loginpress_password_reset_time_limit' ).show(); } else { $( 'tr.roles_for_password_reset' ).hide(); $( 'tr.loginpress_password_reset_time_limit' ).hide(); } } $( "#wpb-loginpress_setting\\[enable_password_reset\\]" ).on( 'click', function () { loginPressForceChangePasswordSettings(); } ); /** * This function is used to show/hide the password strength settings section and * all of its sub fields based on the enable registration password field setting. * * @since 4.0.0 */ function LoginpressEnablePasswordStregth() { if ( $( '#wpb-loginpress_setting\\[enable_reg_pass_field\\]' ).is( ":checked" ) ) { $( 'tr.enable_pass_strength' ).show(); function LoginpressPasswordStrengthSettings() { if ( $( '#wpb-loginpress_setting\\[enable_pass_strength\\]' ).is( ":checked" ) ) { $( 'tr.minimum_pass_char' ).show(); $( 'tr.pass_strength' ).show(); $( 'tr.password_strength_meter' ).show(); $( 'tr.enable_pass_strength_forms' ).show(); } else { $( 'tr.minimum_pass_char' ).hide(); $( 'tr.pass_strength' ).hide(); $( 'tr.password_strength_meter' ).hide(); $( 'tr.enable_pass_strength_forms' ).hide(); } } $( "#wpb-loginpress_setting\\[enable_pass_strength\\]" ).on( 'click', function () { LoginpressPasswordStrengthSettings(); } ); LoginpressPasswordStrengthSettings(); } else { $( 'tr.enable_pass_strength' ).hide(); $( 'tr.minimum_pass_char' ).hide(); $( 'tr.pass_strength' ).hide(); $( 'tr.password_strength_meter' ).hide(); $( 'tr.enable_pass_strength_forms' ).hide(); } } $( "#wpb-loginpress_setting\\[enable_reg_pass_field\\]" ).on( 'click', function () { LoginpressEnablePasswordStregth(); } ); $( window ).on( 'load', function () { $( '#loginpress_login_redirect_roles th.loginpress_user_id' ).text( loginpress_script.localize_translations[0] ); $( '<tr class="recaptcha-promo-img"><th class="recaptcha-promo" colspan="2"><img src="' + loginpress_script.plugin_url + '/loginpress/img/promo/recaptcha_promo.png"><a class="recaptcha-promo-link" href="https://loginpress.pro/pricing/?utm_source=loginpress-lite&utm_medium=recaptcha-settings&utm_campaign=pro-upgrade" target="_blank"><span>Unlock Premium Feature</span></a></th></tr>' ).insertAfter( $( ".enable_recaptcha_promo" ).closest( 'tr' ) ); var promotion = $( '#wpb-loginpress_setting\\[enable_recaptcha_promo\\]' ); if (promotion.is( ":checked" )) { $( 'tr.recaptcha-promo-img' ).show(); } var privacy_editor = $( '#wpb-loginpress_setting\\[enable_privacy_policy\\]' ); if (privacy_editor.is( ":checked" )) { $( 'tr.privacy_policy' ).show(); } loginPressForceChangePasswordSettings(); LoginpressEnablePasswordStregth(); } ); // Window on load. $( '.loginpress-log-file' ).on( 'click', function (event) { event.preventDefault(); $.ajax( { url: ajaxurl, type: 'POST', data: { action: 'loginpress_help', security: loginpress_script.help_nonce, }, beforeSend: function () { $( ".log-file-sniper" ).show(); }, success: function (response) { $( ".log-file-sniper" ).hide(); $( ".log-file-text" ).show(); if ( ! window.navigator.msSaveOrOpenBlob) { // If msSaveOrOpenBlob() is supported, then so is msSaveBlob(). $( "<a />", { "download": "loginpress-log.txt", "href": "data:text/plain;charset=utf-8," + encodeURIComponent( response ), } ).appendTo( "body" ) .click( function () { $( this ).remove() } )[0].click() } else { var blobObject = new Blob( [response] ); window.navigator.msSaveBlob( blobObject, 'loginpress-log.txt' ); } setTimeout( function () { $( ".log-file-text" ).fadeOut() }, 3000 ); } } ); } ); $( '.loginpress-export' ).on( 'click', function (event) { event.preventDefault(); var dateObj = new Date(); var month = dateObj.getUTCMonth() + 1; // months from 1-12 var day = dateObj.getUTCDate(); var year = dateObj.getUTCFullYear(); var newdate = year + "-" + month + "-" + day; var export_nonce = $( '.loginpress_export_nonce' ).val(); $.ajax( { url: ajaxurl, type: 'POST', data: { action: 'loginpress_export', security: export_nonce, }, beforeSend: function () { $( ".export_setting .export-sniper" ).show(); }, success: function (response) { $( ".export_setting .export-sniper" ).hide(); $( ".export_setting .export-text" ).show(); if ( ! window.navigator.msSaveOrOpenBlob ) { // If msSaveOrOpenBlob() is supported, then so is msSaveBlob(). $( "<a />", { "download": "loginpress-export-" + newdate + ".json", "href": "data:application/json;charset=utf-8," + encodeURIComponent( response ), } ).appendTo( "body" ) .click( function () { $( this ).remove() } )[0].click() } else { var blobObject = new Blob( [response] ); window.navigator.msSaveBlob( blobObject, "loginpress-export-" + newdate + ".json" ); } setTimeout( function () { $( ".export_setting .export-text" ).fadeOut() }, 3000 ); } } ); } ); $( '.loginpress-import' ).on( 'click', function (event) { event.preventDefault(); var file = $( '#loginPressImport' ); var import_nonce = $( '.loginpress_import_nonce' ).val(); var fileObj = new FormData(); var content = file[0].files[0]; fileObj.append( 'file', content ); fileObj.append( 'name', content['name'] ); fileObj.append( 'action', 'loginpress_import' ); fileObj.append( 'security', import_nonce ); $.ajax( { processData: false, contentType: false, url: ajaxurl, type: 'POST', data: fileObj, // file and action append into variable fileObj. beforeSend: function () { $( ".import_setting .import-sniper" ).show(); $( ".import_setting .wrong-import" ).html( "" ); $( '.loginpress-import' ).attr( "disabled", "disabled" ); }, success: function (response) { // console.log(response); $( ".import_setting .import-sniper" ).hide(); // $(".import_setting .import-text").fadeIn(); if ('error' == response) { $( ".import_setting .wrong-import" ).html( "JSON File is not Valid." ); } else { if (response == '') { $( ".import_setting .import-text" ).show(); } else if (response.data.status === 'error') { // Add an error message in red to the .import-text element $( ".import_setting .import-text" ) .html( function (index, currentContent) { return currentContent + ' <span style="color: red;">Images could not be imported.</span>'; } ) .show(); } setTimeout( function () { $( ".import_setting .import-text" ).fadeOut(); // $(".import_setting .wrong-import").html(""); file.val( '' ); }, 3000 ); } } } ); // !ajax. } ); } ); $( document ).ready( function () { // run the select code for all selects if ($( '[name="loginpress_captcha_settings[captchas_type]"]' ).length > 0) { const urlParams = new URLSearchParams( window.location.search ); const captchaType = urlParams.get( 'captcha_type' ); if (captchaType) { $( '[name="loginpress_captcha_settings[captchas_type]"]' ).val( captchaType ); } } generate_select( 'select:not(.gfield_select)' ); $( ".tabs-toggle" ).on( "click", function () { $( this ).toggleClass( "active" ).next( ".loginpress-tabs-wrapper" ).slideToggle(); } ) $( ".settings-tabs-list" ).on( "click", function () { if (window.matchMedia( '(max-width: 767px)' ).matches === true) { $( this ).closest( ".loginpress-tabs-wrapper" ).slideUp(); $( ".tabs-toggle" ).removeClass( "active" ); } } ); $( '.loginpress-notification-close' ).on( 'click', function () { $( this ).closest( '.loginpress-notification-bar' ).hide(); // Send AJAX request to mark it as dismissed $.post( ajaxurl, { action: 'dismiss_notification', security: loginpress_script.help_nonce } ); } ); $( '.loginpress-notification-bar' ).addClass( 'loginpress-notification-loaded' ); } ) $( window ).on( 'load scroll', function () { if ($( window ).scrollTop() > 10) { $( '.loginpress-notification-bar' ).addClass( 'loginpress-notification-scrolled' ); } else { $( '.loginpress-notification-bar' ).removeClass( 'loginpress-notification-scrolled' ); } } ); function generate_select(selector) { $( selector ).each( function () { // Cache the number of options var $this = $( this ), activeValue = $this.val(), classselect = $this.attr( "class" ), numberOfOptions = $( this ).children( "option" ).length; // Hides the select element $this.addClass( "s-hidden" ); // Wrap the select element in a div $this.wrap( '<div class="select ' + classselect + '"></div>' ); // Insert a styled div to sit over the top of the hidden select element $this.after( '<div class="styledSelect"></div>' ); // Cache the styled div var $styledSelect = $this.next( "div.styledSelect" ); var getHTML = $this.children( 'option[value="' + $this.val() + '"]' ).text(); // if ($this.children('option[value="' + $this.val() + '"]').length > 1) { // var getHTML = $this // .children("option") // .eq(0) // .text(); // } // Show the first select option in the styled div $styledSelect.html( '<span class="text-ellipses">' + getHTML + '</span>' ); // Insert an unordered list after the styled div and also cache the list var $list = $( "<ul />", { class: "options" } ).insertAfter( $styledSelect ); // Insert a list item into the unordered list for each select option for (var i = 0; i < numberOfOptions; i++) { var Cls = $this.children( "option" ).eq( i ).attr( 'class' ); if (Cls == undefined) { Cls = ''; } if ($this.children( "option" ).eq( i ).val() == activeValue) { Cls = Cls + ' active'; $( '.text-ellipses' ).addClass( 'valueAdded' ); } $( "<li />", { text: $this .children( "option" ) .eq( i ) .text(), rel: $this .children( "option" ) .eq( i ) .val(), class: Cls } ).appendTo( $list ); } // Cache the list items var $listItems = $list.children( "li" ); // Show the unordered list when the styled div is clicked (also hides it if the div is clicked again) $styledSelect.click( function (e) { e.stopPropagation(); if ( ! $( this ).hasClass( 'active' )) { $( 'div.styledSelect.active' ).each( function () { $( this ).removeClass( 'active' ).next( 'ul.options' ).slideUp(); // return false; } ); $( this ).toggleClass( "active" ); $( this ).next( "ul.options" ).stop( true ).slideToggle(); } else { $( 'div.styledSelect.active' ).each( function () { $( this ).removeClass( 'active' ).next( 'ul.options' ).slideUp(); // return false; } ); } } ); // Hides the unordered list when a list item is clicked and updates the styled div to show the selected list item // Updates the select element to have the value of the equivalent option $listItems.click( function (e) { e.stopPropagation(); $styledSelect.html( '<span class="text-ellipses valueAdded">' + $( this ).text() + '</span>' ).removeClass( "active" ); var value = $( this ).attr( "rel" ).toString(); $( $this ).val( value ); $( $this ).trigger( "change" ); $( 'ul.options' ).slideUp(); $( this ).addClass( "active" ).siblings().removeClass( "active" ); /* alert($this.val()); Uncomment this for demonstration! */ } ); // Hides the unordered list when clicking outside of it $( document ).click( function () { $styledSelect.removeClass( "active" ); $list.slideUp(); } ); } ); } })( jQuery ); // This invokes the function above and allows us to use '$' in place of 'jQuery' in our code.
保存