????JFIF??x?x????'
Server IP : 104.21.112.1 / Your IP : 216.73.216.145 Web Server : LiteSpeed System : Linux premium151.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 User : tempvsty ( 647) PHP Version : 8.0.30 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/tempvsty/peekmysite.com/wp-content/plugins/wpforms-lite/assets/js/admin/builder/ |
Upload File : |
/* global wpforms_builder_settings, Choices, wpforms_builder */ // noinspection ES6ConvertVarToLetConst /** * Form Builder Settings Panel module. * * @since 1.7.5 */ // eslint-disable-next-line no-var var WPForms = window.WPForms || {}; WPForms.Admin = WPForms.Admin || {}; WPForms.Admin.Builder = WPForms.Admin.Builder || {}; WPForms.Admin.Builder.Settings = WPForms.Admin.Builder.Settings || ( function( document, window, $ ) { /** * Elements holder. * * @since 1.7.5 * * @type {Object} */ let el = {}; /** * Runtime variables. * * @since 1.7.5 * * @type {Object} */ const vars = {}; // noinspection JSUnusedLocalSymbols,ES6ConvertVarToLetConst /** * Public functions and properties. * * @since 1.7.5 * * @type {Object} */ // eslint-disable-next-line no-var var app = { /** * Start the engine. * * @since 1.7.5 */ init() { $( app.ready ); }, /** * DOM is fully loaded. * * @since 1.7.5 */ ready() { app.setup(); app.initTags(); app.events(); }, /** * Setup. Prepare some variables. * * @since 1.7.5 */ setup() { // Cache DOM elements. el = { $builder: $( '#wpforms-builder' ), $panel: $( '#wpforms-panel-settings' ), $selectTags: $( '#wpforms-panel-field-settings-form_tags' ), }; // Give a chance to interact with "Disable entry..." option immediately. app.allowEditDisabledEntriesOption(); }, /** * Bind events. * * @since 1.7.5 */ events() { el.$panel .on( 'keydown', '#wpforms-panel-field-settings-form_tags-wrap input', app.addCustomTagInput ) .on( 'removeItem', '#wpforms-panel-field-settings-form_tags-wrap select', app.editTagsRemoveItem ) .on( 'change', '#wpforms-panel-field-settings-antispam_v3', app.enableAntispamV3 ) .on( 'change', '#wpforms-panel-field-settings-disable_entries', app.disableEntries ) .on( 'change', '#wpforms-panel-field-settings-store_spam_entries', app.storeSpamEntries ); el.$selectTags .on( 'change', app.changeTags ); $( document ).on( 'connectionsDataLoaded', app.allowEditDisabledEntriesOption ); }, /** * Enable Anti spam v3 toggle change event. * * @since 1.9.0 */ enableAntispamV3() { // Hide and disable old anti-spam. $( '#wpforms-panel-field-settings-antispam' ) .prop( 'checked', false ) .closest( '.wpforms-panel-field' ) .toggleClass( 'wpforms-hidden' ); }, /** * Disable Entries toggle change event. * * @since 1.9.2 */ disableEntries() { const $this = $( this ); const isChecked = $this.prop( 'checked' ); const isStoreSpamEntriesChecked = $( '#wpforms-panel-field-settings-store_spam_entries' ).prop( 'checked' ); app.toggleFilteringMessages( ! isChecked && isStoreSpamEntriesChecked ); // Toggle the store spam entries toggle. $( '#wpforms-panel-field-settings-store_spam_entries-wrap' ).toggleClass( 'wpforms-hidden', $this.prop( 'checked' ) ); if ( ! $this.prop( 'checked' ) ) { return; } const entryRequirement = app.getEntryRequirement(); // Don't allow users to disable entries if some third-party integrations // require it. if ( entryRequirement.required ) { $.confirm( { title: wpforms_builder.entry_storage_required, content: app.getDisabledEntryMessage( entryRequirement ), icon: 'fa fa-exclamation-circle', type: 'orange', buttons: { confirm: { text: wpforms_builder.ok, btnClass: 'btn-confirm', keys: [ 'enter' ], }, }, } ); $this.prop( 'checked', false ); return; } $.alert( { title: wpforms_builder.heads_up, content: wpforms_builder.disable_entries, icon: 'fa fa-exclamation-circle', type: 'orange', buttons: { confirm: { text: wpforms_builder.ok, btnClass: 'btn-confirm', keys: [ 'enter' ], }, }, } ); }, /** * Store Spam Entries toggle change event. * * @since 1.9.2 */ storeSpamEntries() { app.toggleFilteringMessages( $( this ).prop( 'checked' ) ); }, /** * Toggle Filtering Messages. * * @since 1.9.2 * * @param {boolean} $hide Whether to hide or show messages. */ toggleFilteringMessages( $hide ) { if ( ! $( '#wpforms-panel-field-anti_spam-filtering_store_spam' ).is( ':checked' ) ) { return; } // Toggle Country Filter Message. $( '#wpforms-panel-field-anti_spam-country_filter-message-wrap' ).toggleClass( 'wpforms-hidden', $hide ); // Toggle Keyywords Filter Message. $( '#wpforms-panel-field-anti_spam-keyword_filter-message-wrap' ).toggleClass( 'wpforms-hidden', $hide ); }, /** * Init Choices.js on the Tags select an input element. * * @param {Object} $el Element. * @since 1.7.5 */ initTags( $el = null ) { $el = $el?.length ? $el : el.$selectTags; // Skip in certain cases. if ( ! $el.length || typeof window.Choices !== 'function' ) { return; } // Init Choices.js object instance. vars.tagsChoicesObj = new Choices( $el[ 0 ], wpforms_builder_settings.choicesjs_config ); // Backup current value. const currentValue = vars.tagsChoicesObj.getValue( true ); // Update all tags choices. vars.tagsChoicesObj .clearStore() .setChoices( wpforms_builder_settings.all_tags_choices, 'value', 'label', true ) .setChoiceByValue( currentValue ); $el.data( 'choicesjs', vars.tagsChoicesObj ); app.initTagsHiddenInput(); }, /** * Init Tags hidden input element. * * @since 1.7.5 */ initTagsHiddenInput() { // Create additional hidden input. el.$selectTagsHiddenInput = $( '<input type="hidden" name="settings[form_tags_json]">' ); el.$selectTags .closest( '.wpforms-panel-field' ) .append( el.$selectTagsHiddenInput ); // Update hidden input value. app.changeTags( null ); }, /** * Add custom item to Tags dropdown on input. * * @since 1.7.5 * * @param {Object} event Event object. */ addCustomTagInput( event ) { if ( [ 'Enter', ',' ].indexOf( event.key ) < 0 ) { return; } event.preventDefault(); event.stopPropagation(); if ( ! vars.tagsChoicesObj || event.target.value.length === 0 ) { return; } const tagLabel = _.escape( event.target.value ).trim(), labels = _.map( vars.tagsChoicesObj.getValue(), 'label' ).map( function( label ) { return label.toLowerCase().trim(); } ); if ( tagLabel === '' || labels.indexOf( tagLabel.toLowerCase() ) >= 0 ) { vars.tagsChoicesObj.clearInput(); return; } app.addCustomTagInputCreate( tagLabel ); app.changeTags( event ); }, /** * Remove tag from Tags field event handler. * * @since 1.7.5 * * @param {Object} event Event object. */ editTagsRemoveItem( event ) { const allValues = _.map( wpforms_builder_settings.all_tags_choices, 'value' ); if ( allValues.indexOf( event.detail.value ) >= 0 ) { return; } // We should remove new tag from the list of choices. const choicesObj = $( event.target ).data( 'choicesjs' ), currentValue = choicesObj.getValue( true ), choices = _.filter( choicesObj._currentState.choices, function( item ) { return item.value !== event.detail.value; } ); choicesObj .clearStore() .setChoices( choices, 'value', 'label', true ) .setChoiceByValue( currentValue ); }, /** * Add custom item to Tags dropdown on input (second part). * * @since 1.7.5 * * @param {Object} tagLabel Event object. */ addCustomTagInputCreate( tagLabel ) { const tag = _.find( wpforms_builder_settings.all_tags_choices, { label: tagLabel } ); if ( tag && tag.value ) { vars.tagsChoicesObj.setChoiceByValue( tag.value ); } else { vars.tagsChoicesObj.setChoices( [ { value: tagLabel, label: tagLabel, selected: true, }, ], 'value', 'label', false ); } vars.tagsChoicesObj.clearInput(); }, /** * Change Tags field event handler. * * @since 1.7.5 * * @param {Object} event Event object. */ // eslint-disable-next-line no-unused-vars changeTags( event ) { const tagsValue = vars.tagsChoicesObj.getValue(), tags = []; for ( let i = 0; i < tagsValue.length; i++ ) { tags.push( { value: tagsValue[ i ].value, label: tagsValue[ i ].label, } ); } // Update Tags field hidden input value. el.$selectTagsHiddenInput.val( JSON.stringify( tags ) ); }, /** * Generates a message to indicate why certain entries are disabled, * including necessary dependencies for enabling them. * * @since 1.9.6 * * @param {Object} entryRequirement An object containing details about the requirements. * * @return {string} The customized message indicating why the entries are disabled. */ getDisabledEntryMessage( entryRequirement ) { const dependencies = entryRequirement?.dependencies || {}; if ( ! Object.keys( dependencies ).length ) { return wpforms_builder.payments_on_entries_off; } const dependenciesHTML = Object.values( dependencies ).map( ( { text, href }, index, arr ) => { const linkHTML = `<a href="${ href }" target="_blank">${ text }</a>`; if ( index === arr.length - 1 && arr.length > 1 ) { // The very last item when array has multiple items, prepend with "and". return `and ${ linkHTML }`; } else if ( index < arr.length - 2 ) { // Any item except the last two, append comma. return `${ linkHTML },`; } // Second-to-last item, no comma needed as next item will prepend "and". return linkHTML; } ).join( ' ' ); return wpforms_builder.payments_on_entries_off.replace( '{integration}', dependenciesHTML ); }, /** * Allows interacting with the option for disabled entries in the WPForms settings panel. * This method ensures that the entry requirement is met before enabling the option. * If some providers or gateways are still loading, the process is aborted. * * @since 1.9.6 */ allowEditDisabledEntriesOption() { const $toggleSpan = $( '#wpforms-panel-field-settings-disable_entries-wrap > span' ); if ( ! $toggleSpan.hasClass( 'wpforms-toggle-control-disabled' ) ) { return; } const entryRequirement = app.getEntryRequirement(); if ( entryRequirement?.loadingStack?.size ) { return; } $toggleSpan.removeClass( 'wpforms-toggle-control-disabled' ); }, /** * Allows modifying the entry requirement configuration, including whether * the entry is required and any dependencies associated with it. * * @since 1.9.6 * * @property {boolean} required Indicates whether the entry is required. * @property {Object} dependencies Specifies dependencies for the entry. See app.getDisabledEntryMessage for more details. * @property {Set} loadingStack A set used to manage loading states. * * @return {Object} The entry requirement object. */ getEntryRequirement() { return wp.hooks.applyFilters( 'wpforms.Builder.entryRequirement', { required: false, dependencies: {}, loadingStack: new Set() } ); }, }; // Provide access to public functions/properties. return app; }( document, window, jQuery ) ); // Initialize. WPForms.Admin.Builder.Settings.init();