Edit File by line

Deprecated: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in /home/sportsfever/public_html/filemanger/function.php on line 93

Warning: Undefined array key "page_file_edit_line" in /home/sportsfever/public_html/filemanger/edit_text_line.php on line 32
/home/sportsfe.../httpdocs/clone/wp-conte.../plugins/wpforms-.../assets/js/admin/builder
File: admin-builder.js
*
[6000] Fix | Delete
* @param {jQuery} $el Element.
[6001] Fix | Delete
*/
[6002] Fix | Delete
confirmationFieldsToggle( $el ) {
[6003] Fix | Delete
if ( ! $el.length ) {
[6004] Fix | Delete
return;
[6005] Fix | Delete
}
[6006] Fix | Delete
[6007] Fix | Delete
const type = $el.val(),
[6008] Fix | Delete
$block = $el.closest( '.wpforms-builder-settings-block-content' );
[6009] Fix | Delete
[6010] Fix | Delete
$block.find( '.wpforms-panel-field' )
[6011] Fix | Delete
.not( $el.parent() )
[6012] Fix | Delete
.not( '.wpforms-conditionals-enable-toggle' )
[6013] Fix | Delete
.hide();
[6014] Fix | Delete
[6015] Fix | Delete
$block.find( '.wpforms-panel-field-confirmations-' + type ).closest( '.wpforms-panel-field' ).show();
[6016] Fix | Delete
[6017] Fix | Delete
if ( type === 'message' ) {
[6018] Fix | Delete
$block.find( '.wpforms-panel-field-confirmations-message_scroll' ).closest( '.wpforms-panel-field' ).show();
[6019] Fix | Delete
$block.find( '.wpforms-panel-field-confirmations-message_entry_preview' ).trigger( 'change' ).closest( '.wpforms-panel-field' ).show();
[6020] Fix | Delete
$block.find( '.wpforms-panel-field-confirmations-message_order_summary' ).closest( '.wpforms-panel-field' ).toggle( $( '#wpforms-panel-fields .wpforms-field-payment-total' ).length !== 0 );
[6021] Fix | Delete
}
[6022] Fix | Delete
},
[6023] Fix | Delete
[6024] Fix | Delete
/**
[6025] Fix | Delete
* Show/hide an entry preview message.
[6026] Fix | Delete
*
[6027] Fix | Delete
* @since 1.6.9
[6028] Fix | Delete
*/
[6029] Fix | Delete
confirmationEntryPreviewToggle() {
[6030] Fix | Delete
const $this = $( this ),
[6031] Fix | Delete
$styleField = $this.closest( '.wpforms-builder-settings-block-content' ).find( '.wpforms-panel-field-confirmations-message_entry_preview_style' ).parent();
[6032] Fix | Delete
[6033] Fix | Delete
$this.is( ':checked' ) ? $styleField.show() : $styleField.hide();
[6034] Fix | Delete
},
[6035] Fix | Delete
[6036] Fix | Delete
/**
[6037] Fix | Delete
* Toggle the displaying notification settings depending on if the
[6038] Fix | Delete
* notifications are enabled.
[6039] Fix | Delete
*
[6040] Fix | Delete
* @since 1.1.9
[6041] Fix | Delete
*/
[6042] Fix | Delete
notificationToggle() {
[6043] Fix | Delete
const $notification = $( '#wpforms-panel-field-settings-notification_enable' ),
[6044] Fix | Delete
$settingsBlock = $notification.closest( '.wpforms-panel-content-section' ).find( '.wpforms-builder-settings-block' ),
[6045] Fix | Delete
$enabled = $notification.is( ':checked' );
[6046] Fix | Delete
[6047] Fix | Delete
// Toggle Add new notification button.
[6048] Fix | Delete
$( '.wpforms-notifications-add' ).toggleClass( 'wpforms-hidden', ! $enabled );
[6049] Fix | Delete
[6050] Fix | Delete
$enabled ? $settingsBlock.show() : $settingsBlock.hide();
[6051] Fix | Delete
},
[6052] Fix | Delete
[6053] Fix | Delete
/**
[6054] Fix | Delete
* Notifications by status alerts.
[6055] Fix | Delete
*
[6056] Fix | Delete
* @since 1.6.6
[6057] Fix | Delete
*/
[6058] Fix | Delete
notificationsByStatusAlerts() {
[6059] Fix | Delete
$builder.on( 'change', '.wpforms-panel-content-section-notifications .wpforms-notification-by-status-alert', function( e ) { // eslint-disable-line no-unused-vars
[6060] Fix | Delete
const $input = $( this );
[6061] Fix | Delete
[6062] Fix | Delete
if ( ! $input.prop( 'checked' ) ) {
[6063] Fix | Delete
return;
[6064] Fix | Delete
}
[6065] Fix | Delete
[6066] Fix | Delete
const $enabled = $( '.wpforms-radio-group-' + $input.attr( 'data-radio-group' ) + ':checked:not(#' + $input.attr( 'id' ) + ')' );
[6067] Fix | Delete
let alertText;
[6068] Fix | Delete
[6069] Fix | Delete
if ( $enabled.length === 0 ) {
[6070] Fix | Delete
alertText = wpforms_builder.notification_by_status_enable_alert;
[6071] Fix | Delete
alertText = alertText.replace( /%1\$s/g, $input.data( 'provider-title' ) );
[6072] Fix | Delete
} else {
[6073] Fix | Delete
alertText = wpforms_builder.notification_by_status_switch_alert;
[6074] Fix | Delete
alertText = alertText.replace( /%2\$s/g, $enabled.data( 'provider-title' ) );
[6075] Fix | Delete
alertText = alertText.replace( /%1\$s/g, $input.data( 'provider-title' ) );
[6076] Fix | Delete
}
[6077] Fix | Delete
[6078] Fix | Delete
$.confirm( {
[6079] Fix | Delete
title: wpforms_builder.heads_up,
[6080] Fix | Delete
content: alertText,
[6081] Fix | Delete
icon: 'fa fa-exclamation-circle',
[6082] Fix | Delete
type: 'orange',
[6083] Fix | Delete
buttons: {
[6084] Fix | Delete
confirm: {
[6085] Fix | Delete
text: wpforms_builder.ok,
[6086] Fix | Delete
btnClass: 'btn-confirm',
[6087] Fix | Delete
},
[6088] Fix | Delete
},
[6089] Fix | Delete
} );
[6090] Fix | Delete
} );
[6091] Fix | Delete
},
[6092] Fix | Delete
[6093] Fix | Delete
/**
[6094] Fix | Delete
* Add new settings block.
[6095] Fix | Delete
*
[6096] Fix | Delete
* @since 1.4.8
[6097] Fix | Delete
* @since 1.6.1 Added processing for Field Map table.
[6098] Fix | Delete
* @since 1.6.1.2 Registered `wpformsSettingsBlockAdded` trigger.
[6099] Fix | Delete
*
[6100] Fix | Delete
* @param {jQuery} $el Settings Block jQuery object.
[6101] Fix | Delete
*/
[6102] Fix | Delete
settingsBlockAdd( $el ) { // eslint-disable-line max-lines-per-function
[6103] Fix | Delete
const nextID = Number( $el.attr( 'data-next-id' ) ),
[6104] Fix | Delete
panelID = $el.closest( '.wpforms-panel-content-section' ).data( 'panel' ),
[6105] Fix | Delete
blockType = $el.data( 'block-type' ),
[6106] Fix | Delete
namePrompt = wpforms_builder[ blockType + '_prompt' ],
[6107] Fix | Delete
nameField = '<input autofocus="" type="text" id="settings-block-name" placeholder="' + wpforms_builder[ blockType + '_ph' ] + '">',
[6108] Fix | Delete
nameError = '<p class="error">' + wpforms_builder[ blockType + '_error' ] + '</p>',
[6109] Fix | Delete
modalContent = namePrompt + nameField + nameError;
[6110] Fix | Delete
[6111] Fix | Delete
const modal = $.confirm( {
[6112] Fix | Delete
container: $builder,
[6113] Fix | Delete
title: false,
[6114] Fix | Delete
content: modalContent,
[6115] Fix | Delete
icon: 'fa fa-info-circle',
[6116] Fix | Delete
type: 'blue',
[6117] Fix | Delete
buttons: {
[6118] Fix | Delete
confirm: {
[6119] Fix | Delete
text: wpforms_builder.ok,
[6120] Fix | Delete
btnClass: 'btn-confirm',
[6121] Fix | Delete
keys: [ 'enter' ],
[6122] Fix | Delete
action() { // eslint-disable-line complexity, max-lines-per-function
[6123] Fix | Delete
const settingsBlockName = this.$content.find( 'input#settings-block-name' ).val().toString().trim(),
[6124] Fix | Delete
error = this.$content.find( '.error' );
[6125] Fix | Delete
[6126] Fix | Delete
if ( settingsBlockName === '' ) {
[6127] Fix | Delete
error.show();
[6128] Fix | Delete
return false;
[6129] Fix | Delete
}
[6130] Fix | Delete
[6131] Fix | Delete
const $firstSettingsBlock = $el.closest( '.wpforms-panel-content-section' ).find( '.wpforms-builder-settings-block' ).first();
[6132] Fix | Delete
[6133] Fix | Delete
// Restore tooltips before cloning.
[6134] Fix | Delete
wpf.restoreTooltips( $firstSettingsBlock );
[6135] Fix | Delete
[6136] Fix | Delete
const $newSettingsBlock = $firstSettingsBlock.clone(),
[6137] Fix | Delete
blockID = $firstSettingsBlock.data( 'block-id' );
[6138] Fix | Delete
let newSettingsBlock;
[6139] Fix | Delete
[6140] Fix | Delete
$newSettingsBlock.attr( 'data-block-id', nextID );
[6141] Fix | Delete
$newSettingsBlock.find( '.wpforms-builder-settings-block-header span' ).text( settingsBlockName );
[6142] Fix | Delete
[6143] Fix | Delete
/**
[6144] Fix | Delete
* Fires to reset settings block elements on adding new settings block.
[6145] Fix | Delete
*
[6146] Fix | Delete
* @param {jQuery} $element jQuery object of an element.
[6147] Fix | Delete
*/
[6148] Fix | Delete
const resetFormElement = function( $element ) {
[6149] Fix | Delete
if ( $element.attr( 'name' ) ) {
[6150] Fix | Delete
$element.val( '' ).attr( 'name', $element.attr( 'name' ).replace( /\[(\d+)\]/, '[' + nextID + ']' ) );
[6151] Fix | Delete
if ( $element.is( 'select' ) ) {
[6152] Fix | Delete
$element.find( 'option' ).prop( 'selected', false ).attr( 'selected', false );
[6153] Fix | Delete
$element.find( 'option' ).first().prop( 'selected', true ).attr( 'selected', 'selected' );
[6154] Fix | Delete
} else if ( $element.attr( 'type' ) === 'checkbox' ) {
[6155] Fix | Delete
$element.prop( 'checked', false ).attr( 'checked', false ).val( '1' );
[6156] Fix | Delete
} else {
[6157] Fix | Delete
$element.val( '' ).attr( 'value', '' );
[6158] Fix | Delete
}
[6159] Fix | Delete
}
[6160] Fix | Delete
};
[6161] Fix | Delete
[6162] Fix | Delete
$newSettingsBlock.find( 'input, textarea, select' ).each( function() {
[6163] Fix | Delete
const $this = $( this );
[6164] Fix | Delete
const $parent = $this.parent();
[6165] Fix | Delete
[6166] Fix | Delete
if ( $this.hasClass( 'wpforms-disabled' ) && ( $parent.hasClass( 'from-name' ) || $parent.hasClass( 'from-email' ) ) ) {
[6167] Fix | Delete
return;
[6168] Fix | Delete
}
[6169] Fix | Delete
[6170] Fix | Delete
resetFormElement( $this );
[6171] Fix | Delete
} );
[6172] Fix | Delete
[6173] Fix | Delete
// Update elements IDs.
[6174] Fix | Delete
const idPrefixPanel = 'wpforms-panel-field-' + panelID + '-',
[6175] Fix | Delete
idPrefixBlock = idPrefixPanel + blockID;
[6176] Fix | Delete
$newSettingsBlock.find( '[id^="' + idPrefixBlock + '"], [for^="' + idPrefixBlock + '"]' ).each( function( index, el ) { // eslint-disable-line no-unused-vars
[6177] Fix | Delete
const $el = $( this ),
[6178] Fix | Delete
attr = $el.prop( 'tagName' ) === 'LABEL' ? 'for' : 'id',
[6179] Fix | Delete
elID = $el.attr( attr ).replace( new RegExp( idPrefixBlock, 'g' ), idPrefixPanel + nextID );
[6180] Fix | Delete
[6181] Fix | Delete
$el.attr( attr, elID );
[6182] Fix | Delete
} );
[6183] Fix | Delete
[6184] Fix | Delete
// Update `notification by status` checkboxes.
[6185] Fix | Delete
const radioGroup = blockID + '-notification-by-status';
[6186] Fix | Delete
$newSettingsBlock.find( '[data-radio-group="' + radioGroup + '"]' ).each( function( index, el ) { // eslint-disable-line no-unused-vars
[6187] Fix | Delete
$( this )
[6188] Fix | Delete
.removeClass( 'wpforms-radio-group-' + radioGroup )
[6189] Fix | Delete
.addClass( 'wpforms-radio-group-' + nextID + '-notification-by-status' )
[6190] Fix | Delete
.attr( 'data-radio-group', nextID + '-notification-by-status' );
[6191] Fix | Delete
} );
[6192] Fix | Delete
[6193] Fix | Delete
$newSettingsBlock.find( '.wpforms-builder-settings-block-header input' ).val( settingsBlockName ).attr( 'value', settingsBlockName );
[6194] Fix | Delete
[6195] Fix | Delete
if ( blockType === 'notification' ) {
[6196] Fix | Delete
$newSettingsBlock.find( '.email-msg textarea' ).val( '{all_fields}' ).attr( 'value', '{all_fields}' );
[6197] Fix | Delete
$newSettingsBlock.find( '.email-recipient input' ).val( '{admin_email}' ).attr( 'value', '{admin_email}' );
[6198] Fix | Delete
}
[6199] Fix | Delete
[6200] Fix | Delete
$newSettingsBlock.removeClass( 'wpforms-builder-settings-block-default' );
[6201] Fix | Delete
[6202] Fix | Delete
if ( blockType === 'confirmation' ) {
[6203] Fix | Delete
$newSettingsBlock.find( '.wpforms-panel-field-tinymce' ).remove();
[6204] Fix | Delete
if ( typeof WPForms !== 'undefined' ) {
[6205] Fix | Delete
$newSettingsBlock.find( '.wpforms-panel-field-confirmations-type-wrap' )
[6206] Fix | Delete
.after( WPForms.Admin.Builder.Templates
[6207] Fix | Delete
.get( 'wpforms-builder-confirmations-message-field' )( {
[6208] Fix | Delete
id: nextID,
[6209] Fix | Delete
} )
[6210] Fix | Delete
);
[6211] Fix | Delete
}
[6212] Fix | Delete
}
[6213] Fix | Delete
[6214] Fix | Delete
// Conditional logic, if present
[6215] Fix | Delete
const $conditionalLogic = $newSettingsBlock.find( '.wpforms-conditional-block' );
[6216] Fix | Delete
if ( $conditionalLogic.length && typeof WPForms !== 'undefined' ) {
[6217] Fix | Delete
$conditionalLogic
[6218] Fix | Delete
.html( WPForms.Admin.Builder.Templates
[6219] Fix | Delete
.get( 'wpforms-builder-conditional-logic-toggle-field' )( {
[6220] Fix | Delete
id: nextID,
[6221] Fix | Delete
type: blockType,
[6222] Fix | Delete
actions: JSON.stringify( $newSettingsBlock.find( '.wpforms-panel-field-conditional_logic-checkbox' ).data( 'actions' ) ),
[6223] Fix | Delete
actionDesc: $newSettingsBlock.find( '.wpforms-panel-field-conditional_logic-checkbox' ).data( 'action-desc' ),
[6224] Fix | Delete
} )
[6225] Fix | Delete
);
[6226] Fix | Delete
}
[6227] Fix | Delete
[6228] Fix | Delete
// Fields Map Table, if present.
[6229] Fix | Delete
const $fieldsMapTable = $newSettingsBlock.find( '.wpforms-field-map-table' );
[6230] Fix | Delete
if ( $fieldsMapTable.length ) {
[6231] Fix | Delete
$fieldsMapTable.each( function( index, el ) {
[6232] Fix | Delete
const $table = $( el );
[6233] Fix | Delete
[6234] Fix | Delete
// Clean table fields.
[6235] Fix | Delete
$table.find( 'tr:not(:first-child)' ).remove();
[6236] Fix | Delete
[6237] Fix | Delete
const $input = $table.find( '.key input' ),
[6238] Fix | Delete
$select = $table.find( '.field select' ),
[6239] Fix | Delete
name = $select.data( 'name' );
[6240] Fix | Delete
[6241] Fix | Delete
$input.attr( 'value', '' );
[6242] Fix | Delete
$select
[6243] Fix | Delete
.attr( 'name', '' )
[6244] Fix | Delete
.attr( 'data-name', name.replace( /\[(\d+)\]/, '[' + nextID + ']' ) );
[6245] Fix | Delete
} );
[6246] Fix | Delete
}
[6247] Fix | Delete
[6248] Fix | Delete
newSettingsBlock = $newSettingsBlock.wrap( '<div>' ).parent().html();
[6249] Fix | Delete
newSettingsBlock = newSettingsBlock.replace( /\[conditionals\]\[(\d+)\]\[(\d+)\]/g, '[conditionals][0][0]' );
[6250] Fix | Delete
[6251] Fix | Delete
$firstSettingsBlock.before( newSettingsBlock );
[6252] Fix | Delete
const $addedSettingBlock = $firstSettingsBlock.prev();
[6253] Fix | Delete
[6254] Fix | Delete
// Reset the confirmation type to the 1st one.
[6255] Fix | Delete
if ( blockType === 'confirmation' ) {
[6256] Fix | Delete
app.prepareChoicesJSField( $addedSettingBlock, nextID );
[6257] Fix | Delete
app.confirmationFieldsToggle( $( '.wpforms-panel-field-confirmations-type' ).first() );
[6258] Fix | Delete
}
[6259] Fix | Delete
[6260] Fix | Delete
// Init the WP Editor.
[6261] Fix | Delete
if ( typeof tinymce !== 'undefined' && typeof wp.editor !== 'undefined' && blockType === 'confirmation' ) {
[6262] Fix | Delete
wp.editor.initialize( 'wpforms-panel-field-confirmations-message-' + nextID, s.tinymceDefaults );
[6263] Fix | Delete
}
[6264] Fix | Delete
[6265] Fix | Delete
// Init tooltips for a new section.
[6266] Fix | Delete
wpf.initTooltips();
[6267] Fix | Delete
[6268] Fix | Delete
$builder.trigger( 'wpformsSettingsBlockAdded', [ $addedSettingBlock ] );
[6269] Fix | Delete
[6270] Fix | Delete
$el.attr( 'data-next-id', nextID + 1 );
[6271] Fix | Delete
},
[6272] Fix | Delete
},
[6273] Fix | Delete
cancel: {
[6274] Fix | Delete
text: wpforms_builder.cancel,
[6275] Fix | Delete
},
[6276] Fix | Delete
},
[6277] Fix | Delete
} );
[6278] Fix | Delete
[6279] Fix | Delete
// We need to process this event here, because we need a confirmation
[6280] Fix | Delete
// modal object defined, so we can intrude into it.
[6281] Fix | Delete
// Pressing Enter will click the Ok button.
[6282] Fix | Delete
$builder.on( 'keypress', '#settings-block-name', function( e ) {
[6283] Fix | Delete
if ( e.keyCode === 13 ) {
[6284] Fix | Delete
$( modal.buttons.confirm.el ).trigger( 'click' );
[6285] Fix | Delete
}
[6286] Fix | Delete
} );
[6287] Fix | Delete
},
[6288] Fix | Delete
[6289] Fix | Delete
/**
[6290] Fix | Delete
* Reset the 'Select Page' field to it's initial state then
[6291] Fix | Delete
* re-initialize ChoicesJS on it.
[6292] Fix | Delete
*
[6293] Fix | Delete
* @since 1.7.9
[6294] Fix | Delete
*
[6295] Fix | Delete
* @param {jQuery} $addedSettingBlock Newly added Settings Block jQuery object.
[6296] Fix | Delete
* @param {number} addedSettingBlockID Number ID used when `$addedSettingBlock` was created.
[6297] Fix | Delete
*/
[6298] Fix | Delete
prepareChoicesJSField( $addedSettingBlock, addedSettingBlockID ) {
[6299] Fix | Delete
const $addedConfirmationWrap = $addedSettingBlock.find( `#wpforms-panel-field-confirmations-${ addedSettingBlockID }-page-wrap` );
[6300] Fix | Delete
if ( $addedConfirmationWrap.length <= 0 ) {
[6301] Fix | Delete
return;
[6302] Fix | Delete
}
[6303] Fix | Delete
[6304] Fix | Delete
const $confirmationSelectPageField = $addedConfirmationWrap.find( `#wpforms-panel-field-confirmations-${ addedSettingBlockID }-page` );
[6305] Fix | Delete
if ( $confirmationSelectPageField.length <= 0 && ! $confirmationSelectPageField.hasClass( 'choicesjs-select' ) ) {
[6306] Fix | Delete
return;
[6307] Fix | Delete
}
[6308] Fix | Delete
[6309] Fix | Delete
const $choicesWrapper = $addedConfirmationWrap.find( '.choices' );
[6310] Fix | Delete
if ( $choicesWrapper.length <= 0 ) {
[6311] Fix | Delete
return;
[6312] Fix | Delete
}
[6313] Fix | Delete
[6314] Fix | Delete
// Remove ChoicesJS-related attr.
[6315] Fix | Delete
const $selectPageField = $confirmationSelectPageField.first();
[6316] Fix | Delete
$selectPageField.removeAttr( 'data-choice' );
[6317] Fix | Delete
$selectPageField.removeAttr( 'hidden' );
[6318] Fix | Delete
$selectPageField.removeClass( 'choices__input' );
[6319] Fix | Delete
[6320] Fix | Delete
// Move the select page field to it's initial location in the DOM.
[6321] Fix | Delete
$( $selectPageField ).appendTo( $addedConfirmationWrap.first() );
[6322] Fix | Delete
[6323] Fix | Delete
// Remove the `.choices` wrapper.
[6324] Fix | Delete
$choicesWrapper.first().remove();
[6325] Fix | Delete
[6326] Fix | Delete
// Re-init ChoicesJS.
[6327] Fix | Delete
app.dropdownField.events.choicesInit( $selectPageField );
[6328] Fix | Delete
},
[6329] Fix | Delete
[6330] Fix | Delete
/**
[6331] Fix | Delete
* Show settings block editing interface.
[6332] Fix | Delete
*
[6333] Fix | Delete
* @since 1.4.8
[6334] Fix | Delete
*
[6335] Fix | Delete
* @param {jQuery} $el Element.
[6336] Fix | Delete
*/
[6337] Fix | Delete
settingsBlockNameEditingShow( $el ) {
[6338] Fix | Delete
const headerHolder = $el.parents( '.wpforms-builder-settings-block-header' ),
[6339] Fix | Delete
nameHolder = headerHolder.find( '.wpforms-builder-settings-block-name' );
[6340] Fix | Delete
[6341] Fix | Delete
nameHolder
[6342] Fix | Delete
.addClass( 'editing' )
[6343] Fix | Delete
.hide();
[6344] Fix | Delete
[6345] Fix | Delete
// Make the editing interface active and in focus
[6346] Fix | Delete
headerHolder.find( '.wpforms-builder-settings-block-name-edit' ).addClass( 'active' );
[6347] Fix | Delete
wpf.focusCaretToEnd( headerHolder.find( 'input' ) );
[6348] Fix | Delete
},
[6349] Fix | Delete
[6350] Fix | Delete
/**
[6351] Fix | Delete
* Update settings block name and hide editing interface.
[6352] Fix | Delete
*
[6353] Fix | Delete
* @since 1.4.8
[6354] Fix | Delete
*
[6355] Fix | Delete
* @param {jQuery} $el Element.
[6356] Fix | Delete
*/
[6357] Fix | Delete
settingsBlockNameEditingHide( $el ) {
[6358] Fix | Delete
const headerHolder = $el.parents( '.wpforms-builder-settings-block-header' ),
[6359] Fix | Delete
nameHolder = headerHolder.find( '.wpforms-builder-settings-block-name' ),
[6360] Fix | Delete
editHolder = headerHolder.find( '.wpforms-builder-settings-block-name-edit' );
[6361] Fix | Delete
let currentName = editHolder.find( 'input' ).val().trim();
[6362] Fix | Delete
const blockType = $el.closest( '.wpforms-builder-settings-block' ).data( 'block-type' );
[6363] Fix | Delete
[6364] Fix | Delete
// Provide a default value for empty settings block name.
[6365] Fix | Delete
if ( ! currentName.length ) {
[6366] Fix | Delete
currentName = wpforms_builder[ blockType + '_def_name' ];
[6367] Fix | Delete
}
[6368] Fix | Delete
[6369] Fix | Delete
// This is done for sanitizing.
[6370] Fix | Delete
editHolder.find( 'input' ).val( currentName );
[6371] Fix | Delete
nameHolder.text( currentName );
[6372] Fix | Delete
[6373] Fix | Delete
// Editing should be hidden, displaying - active.
[6374] Fix | Delete
nameHolder
[6375] Fix | Delete
.removeClass( 'editing' )
[6376] Fix | Delete
.show();
[6377] Fix | Delete
editHolder.removeClass( 'active' );
[6378] Fix | Delete
},
[6379] Fix | Delete
[6380] Fix | Delete
/**
[6381] Fix | Delete
* Clone the Notification block with all of its content and events.
[6382] Fix | Delete
* Put the newly created clone above the target.
[6383] Fix | Delete
*
[6384] Fix | Delete
* @since 1.6.5
[6385] Fix | Delete
* @since 1.7.7 Registered `wpformsSettingsBlockCloned` trigger.
[6386] Fix | Delete
*
[6387] Fix | Delete
* @param {Object} $el Clone icon DOM element.
[6388] Fix | Delete
*/
[6389] Fix | Delete
settingsBlockPanelClone( $el ) { // eslint-disable-line max-lines-per-function
[6390] Fix | Delete
const $panel = $el.closest( '.wpforms-panel-content-section' ),
[6391] Fix | Delete
$addNewSettingButton = $panel.find( '.wpforms-builder-settings-block-add' ),
[6392] Fix | Delete
$settingsBlock = $el.closest( '.wpforms-builder-settings-block' ),
[6393] Fix | Delete
$settingBlockContent = $settingsBlock.find( '.wpforms-builder-settings-block-content' ),
[6394] Fix | Delete
settingsBlockId = parseInt( $addNewSettingButton.attr( 'data-next-id' ), 10 ),
[6395] Fix | Delete
settingsBlockType = $settingsBlock.data( 'block-type' ),
[6396] Fix | Delete
settingsBlockName = $settingsBlock.find( '.wpforms-builder-settings-block-name' ).text().trim() + wpforms_builder[ settingsBlockType + '_clone' ],
[6397] Fix | Delete
isVisibleContent = $settingBlockContent.is( ':hidden' );
[6398] Fix | Delete
[6399] Fix | Delete
// Restore tooltips before cloning.
[6400] Fix | Delete
wpf.restoreTooltips( $settingsBlock );
[6401] Fix | Delete
[6402] Fix | Delete
const $clone = $settingsBlock.clone( false, true );
[6403] Fix | Delete
[6404] Fix | Delete
// Save open/close state while cloning.
[6405] Fix | Delete
app.settingsBlockUpdateState( isVisibleContent, settingsBlockId, settingsBlockType );
[6406] Fix | Delete
[6407] Fix | Delete
// Change the cloned setting block ID and name.
[6408] Fix | Delete
$clone.data( 'block-id', settingsBlockId );
[6409] Fix | Delete
$clone.find( '.wpforms-builder-settings-block-header span' ).text( settingsBlockName );
[6410] Fix | Delete
$clone.find( '.wpforms-builder-settings-block-header input' ).val( settingsBlockName );
[6411] Fix | Delete
$clone.removeClass( 'wpforms-builder-settings-block-default' );
[6412] Fix | Delete
[6413] Fix | Delete
// Change the Next Settings block ID for "Add new" button.
[6414] Fix | Delete
$addNewSettingButton.attr( 'data-next-id', settingsBlockId + 1 );
[6415] Fix | Delete
[6416] Fix | Delete
// Change the name attribute.
[6417] Fix | Delete
$clone.find( 'input, textarea, select' ).each( function() {
[6418] Fix | Delete
const $this = $( this );
[6419] Fix | Delete
[6420] Fix | Delete
if ( $this.attr( 'name' ) ) {
[6421] Fix | Delete
$this.attr( 'name', $this.attr( 'name' ).replace( /\[(\d+)\]/, '[' + settingsBlockId + ']' ) );
[6422] Fix | Delete
}
[6423] Fix | Delete
if ( $this.data( 'name' ) ) {
[6424] Fix | Delete
$this.data( 'name', $this.data( 'name' ).replace( /\[(\d+)\]/, '[' + settingsBlockId + ']' ) );
[6425] Fix | Delete
}
[6426] Fix | Delete
if ( $this.attr( 'class' ) ) {
[6427] Fix | Delete
$this.attr( 'class', $this.attr( 'class' ).replace( /-(\d+)/, '-' + settingsBlockId ) );
[6428] Fix | Delete
}
[6429] Fix | Delete
if ( $this.attr( 'data-radio-group' ) ) {
[6430] Fix | Delete
$this.attr( 'data-radio-group', $this.attr( 'data-radio-group' ).replace( /(\d+)-/, settingsBlockId + '-' ) );
[6431] Fix | Delete
}
[6432] Fix | Delete
} );
[6433] Fix | Delete
[6434] Fix | Delete
// Change IDs/data-attributes in DOM elements.
[6435] Fix | Delete
$clone.find( '*' ).each( function() {
[6436] Fix | Delete
const $this = $( this );
[6437] Fix | Delete
[6438] Fix | Delete
if ( $this.attr( 'id' ) ) {
[6439] Fix | Delete
$this.attr( 'id', $this.attr( 'id' ).replace( /-(\d+)/, '-' + settingsBlockId ) );
[6440] Fix | Delete
}
[6441] Fix | Delete
if ( $this.attr( 'for' ) ) {
[6442] Fix | Delete
$this.attr( 'for', $this.attr( 'for' ).replace( /-(\d+)-/, '-' + settingsBlockId + '-' ) );
[6443] Fix | Delete
}
[6444] Fix | Delete
if ( $this.data( 'input-name' ) ) {
[6445] Fix | Delete
$this.data( 'input-name', $this.data( 'input-name' ).replace( /\[(\d+)\]/, '[' + settingsBlockId + ']' ) );
[6446] Fix | Delete
}
[6447] Fix | Delete
} );
[6448] Fix | Delete
[6449] Fix | Delete
// Transfer selected values to copy elements since jQuery doesn't clone the current selected state.
[6450] Fix | Delete
$settingsBlock.find( 'select' ).each( function() {
[6451] Fix | Delete
const baseSelectName = $( this ).attr( 'name' ),
[6452] Fix | Delete
clonedSelectName = $( this ).attr( 'name' ).replace( /\[(\d+)\]/, '[' + settingsBlockId + ']' );
[6453] Fix | Delete
[6454] Fix | Delete
$clone.find( 'select[name="' + clonedSelectName + '"]' ).val( $( this ).attr( 'name', baseSelectName ).val() );
[6455] Fix | Delete
} );
[6456] Fix | Delete
[6457] Fix | Delete
// Insert before the target settings block.
[6458] Fix | Delete
$clone
[6459] Fix | Delete
.css( 'display', 'none' )
[6460] Fix | Delete
.insertBefore( $settingsBlock )
[6461] Fix | Delete
.show( 'fast', function() {
[6462] Fix | Delete
// Init tooltips for a new section.
[6463] Fix | Delete
wpf.initTooltips();
[6464] Fix | Delete
} );
[6465] Fix | Delete
[6466] Fix | Delete
$builder.trigger( 'wpformsSettingsBlockCloned', [ $clone, $settingsBlock.data( 'block-id' ) ] );
[6467] Fix | Delete
},
[6468] Fix | Delete
[6469] Fix | Delete
/**
[6470] Fix | Delete
* Show or hide settings block panel content.
[6471] Fix | Delete
*
[6472] Fix | Delete
* @since 1.4.8
[6473] Fix | Delete
*
[6474] Fix | Delete
* @param {Object} $el Toggle icon DOM element.
[6475] Fix | Delete
*/
[6476] Fix | Delete
settingsBlockPanelToggle( $el ) {
[6477] Fix | Delete
const $settingsBlock = $el.closest( '.wpforms-builder-settings-block' ),
[6478] Fix | Delete
settingsBlockId = $settingsBlock.data( 'block-id' ),
[6479] Fix | Delete
settingsBlockType = $settingsBlock.data( 'block-type' ),
[6480] Fix | Delete
$content = $settingsBlock.find( '.wpforms-builder-settings-block-content' ),
[6481] Fix | Delete
isVisible = $content.is( ':visible' );
[6482] Fix | Delete
[6483] Fix | Delete
$content.stop().slideToggle( {
[6484] Fix | Delete
duration: 400,
[6485] Fix | Delete
start() {
[6486] Fix | Delete
// Send early to save fast.
[6487] Fix | Delete
// It's an animation start, so we should save the state for the animation end (reversed).
[6488] Fix | Delete
app.settingsBlockUpdateState( isVisible, settingsBlockId, settingsBlockType );
[6489] Fix | Delete
},
[6490] Fix | Delete
always() {
[6491] Fix | Delete
if ( $content.is( ':visible' ) ) {
[6492] Fix | Delete
$el.html( '<i class="fa fa-chevron-circle-up"></i>' );
[6493] Fix | Delete
} else {
[6494] Fix | Delete
$el.html( '<i class="fa fa-chevron-circle-down"></i>' );
[6495] Fix | Delete
}
[6496] Fix | Delete
},
[6497] Fix | Delete
} );
[6498] Fix | Delete
},
[6499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function