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.../public_h.../wp-admin/js
File: customize-widgets.js
control.expandedArgumentsQueue = [];
[500] Fix | Delete
control.expanded.bind( function( expanded ) {
[501] Fix | Delete
var args = control.expandedArgumentsQueue.shift();
[502] Fix | Delete
args = $.extend( {}, control.defaultExpandedArguments, args );
[503] Fix | Delete
control.onChangeExpanded( expanded, args );
[504] Fix | Delete
});
[505] Fix | Delete
control.altNotice = true;
[506] Fix | Delete
[507] Fix | Delete
api.Control.prototype.initialize.call( control, id, options );
[508] Fix | Delete
},
[509] Fix | Delete
[510] Fix | Delete
/**
[511] Fix | Delete
* Set up the control.
[512] Fix | Delete
*
[513] Fix | Delete
* @since 3.9.0
[514] Fix | Delete
*/
[515] Fix | Delete
ready: function() {
[516] Fix | Delete
var control = this;
[517] Fix | Delete
[518] Fix | Delete
/*
[519] Fix | Delete
* Embed a placeholder once the section is expanded. The full widget
[520] Fix | Delete
* form content will be embedded once the control itself is expanded,
[521] Fix | Delete
* and at this point the widget-added event will be triggered.
[522] Fix | Delete
*/
[523] Fix | Delete
if ( ! control.section() ) {
[524] Fix | Delete
control.embedWidgetControl();
[525] Fix | Delete
} else {
[526] Fix | Delete
api.section( control.section(), function( section ) {
[527] Fix | Delete
var onExpanded = function( isExpanded ) {
[528] Fix | Delete
if ( isExpanded ) {
[529] Fix | Delete
control.embedWidgetControl();
[530] Fix | Delete
section.expanded.unbind( onExpanded );
[531] Fix | Delete
}
[532] Fix | Delete
};
[533] Fix | Delete
if ( section.expanded() ) {
[534] Fix | Delete
onExpanded( true );
[535] Fix | Delete
} else {
[536] Fix | Delete
section.expanded.bind( onExpanded );
[537] Fix | Delete
}
[538] Fix | Delete
} );
[539] Fix | Delete
}
[540] Fix | Delete
},
[541] Fix | Delete
[542] Fix | Delete
/**
[543] Fix | Delete
* Embed the .widget element inside the li container.
[544] Fix | Delete
*
[545] Fix | Delete
* @since 4.4.0
[546] Fix | Delete
*/
[547] Fix | Delete
embedWidgetControl: function() {
[548] Fix | Delete
var control = this, widgetControl;
[549] Fix | Delete
[550] Fix | Delete
if ( control.widgetControlEmbedded ) {
[551] Fix | Delete
return;
[552] Fix | Delete
}
[553] Fix | Delete
control.widgetControlEmbedded = true;
[554] Fix | Delete
[555] Fix | Delete
widgetControl = $( control.params.widget_control );
[556] Fix | Delete
control.container.append( widgetControl );
[557] Fix | Delete
[558] Fix | Delete
control._setupModel();
[559] Fix | Delete
control._setupWideWidget();
[560] Fix | Delete
control._setupControlToggle();
[561] Fix | Delete
[562] Fix | Delete
control._setupWidgetTitle();
[563] Fix | Delete
control._setupReorderUI();
[564] Fix | Delete
control._setupHighlightEffects();
[565] Fix | Delete
control._setupUpdateUI();
[566] Fix | Delete
control._setupRemoveUI();
[567] Fix | Delete
},
[568] Fix | Delete
[569] Fix | Delete
/**
[570] Fix | Delete
* Embed the actual widget form inside of .widget-content and finally trigger the widget-added event.
[571] Fix | Delete
*
[572] Fix | Delete
* @since 4.4.0
[573] Fix | Delete
*/
[574] Fix | Delete
embedWidgetContent: function() {
[575] Fix | Delete
var control = this, widgetContent;
[576] Fix | Delete
[577] Fix | Delete
control.embedWidgetControl();
[578] Fix | Delete
if ( control.widgetContentEmbedded ) {
[579] Fix | Delete
return;
[580] Fix | Delete
}
[581] Fix | Delete
control.widgetContentEmbedded = true;
[582] Fix | Delete
[583] Fix | Delete
// Update the notification container element now that the widget content has been embedded.
[584] Fix | Delete
control.notifications.container = control.getNotificationsContainerElement();
[585] Fix | Delete
control.notifications.render();
[586] Fix | Delete
[587] Fix | Delete
widgetContent = $( control.params.widget_content );
[588] Fix | Delete
control.container.find( '.widget-content:first' ).append( widgetContent );
[589] Fix | Delete
[590] Fix | Delete
/*
[591] Fix | Delete
* Trigger widget-added event so that plugins can attach any event
[592] Fix | Delete
* listeners and dynamic UI elements.
[593] Fix | Delete
*/
[594] Fix | Delete
$( document ).trigger( 'widget-added', [ control.container.find( '.widget:first' ) ] );
[595] Fix | Delete
[596] Fix | Delete
},
[597] Fix | Delete
[598] Fix | Delete
/**
[599] Fix | Delete
* Handle changes to the setting
[600] Fix | Delete
*/
[601] Fix | Delete
_setupModel: function() {
[602] Fix | Delete
var self = this, rememberSavedWidgetId;
[603] Fix | Delete
[604] Fix | Delete
// Remember saved widgets so we know which to trash (move to inactive widgets sidebar).
[605] Fix | Delete
rememberSavedWidgetId = function() {
[606] Fix | Delete
api.Widgets.savedWidgetIds[self.params.widget_id] = true;
[607] Fix | Delete
};
[608] Fix | Delete
api.bind( 'ready', rememberSavedWidgetId );
[609] Fix | Delete
api.bind( 'saved', rememberSavedWidgetId );
[610] Fix | Delete
[611] Fix | Delete
this._updateCount = 0;
[612] Fix | Delete
this.isWidgetUpdating = false;
[613] Fix | Delete
this.liveUpdateMode = true;
[614] Fix | Delete
[615] Fix | Delete
// Update widget whenever model changes.
[616] Fix | Delete
this.setting.bind( function( to, from ) {
[617] Fix | Delete
if ( ! _( from ).isEqual( to ) && ! self.isWidgetUpdating ) {
[618] Fix | Delete
self.updateWidget( { instance: to } );
[619] Fix | Delete
}
[620] Fix | Delete
} );
[621] Fix | Delete
},
[622] Fix | Delete
[623] Fix | Delete
/**
[624] Fix | Delete
* Add special behaviors for wide widget controls
[625] Fix | Delete
*/
[626] Fix | Delete
_setupWideWidget: function() {
[627] Fix | Delete
var self = this, $widgetInside, $widgetForm, $customizeSidebar,
[628] Fix | Delete
$themeControlsContainer, positionWidget;
[629] Fix | Delete
[630] Fix | Delete
if ( ! this.params.is_wide || $( window ).width() <= 640 /* max-width breakpoint in customize-controls.css */ ) {
[631] Fix | Delete
return;
[632] Fix | Delete
}
[633] Fix | Delete
[634] Fix | Delete
$widgetInside = this.container.find( '.widget-inside' );
[635] Fix | Delete
$widgetForm = $widgetInside.find( '> .form' );
[636] Fix | Delete
$customizeSidebar = $( '.wp-full-overlay-sidebar-content:first' );
[637] Fix | Delete
this.container.addClass( 'wide-widget-control' );
[638] Fix | Delete
[639] Fix | Delete
this.container.find( '.form:first' ).css( {
[640] Fix | Delete
'max-width': this.params.width,
[641] Fix | Delete
'min-height': this.params.height
[642] Fix | Delete
} );
[643] Fix | Delete
[644] Fix | Delete
/**
[645] Fix | Delete
* Keep the widget-inside positioned so the top of fixed-positioned
[646] Fix | Delete
* element is at the same top position as the widget-top. When the
[647] Fix | Delete
* widget-top is scrolled out of view, keep the widget-top in view;
[648] Fix | Delete
* likewise, don't allow the widget to drop off the bottom of the window.
[649] Fix | Delete
* If a widget is too tall to fit in the window, don't let the height
[650] Fix | Delete
* exceed the window height so that the contents of the widget control
[651] Fix | Delete
* will become scrollable (overflow:auto).
[652] Fix | Delete
*/
[653] Fix | Delete
positionWidget = function() {
[654] Fix | Delete
var offsetTop = self.container.offset().top,
[655] Fix | Delete
windowHeight = $( window ).height(),
[656] Fix | Delete
formHeight = $widgetForm.outerHeight(),
[657] Fix | Delete
top;
[658] Fix | Delete
$widgetInside.css( 'max-height', windowHeight );
[659] Fix | Delete
top = Math.max(
[660] Fix | Delete
0, // Prevent top from going off screen.
[661] Fix | Delete
Math.min(
[662] Fix | Delete
Math.max( offsetTop, 0 ), // Distance widget in panel is from top of screen.
[663] Fix | Delete
windowHeight - formHeight // Flush up against bottom of screen.
[664] Fix | Delete
)
[665] Fix | Delete
);
[666] Fix | Delete
$widgetInside.css( 'top', top );
[667] Fix | Delete
};
[668] Fix | Delete
[669] Fix | Delete
$themeControlsContainer = $( '#customize-theme-controls' );
[670] Fix | Delete
this.container.on( 'expand', function() {
[671] Fix | Delete
positionWidget();
[672] Fix | Delete
$customizeSidebar.on( 'scroll', positionWidget );
[673] Fix | Delete
$( window ).on( 'resize', positionWidget );
[674] Fix | Delete
$themeControlsContainer.on( 'expanded collapsed', positionWidget );
[675] Fix | Delete
} );
[676] Fix | Delete
this.container.on( 'collapsed', function() {
[677] Fix | Delete
$customizeSidebar.off( 'scroll', positionWidget );
[678] Fix | Delete
$( window ).off( 'resize', positionWidget );
[679] Fix | Delete
$themeControlsContainer.off( 'expanded collapsed', positionWidget );
[680] Fix | Delete
} );
[681] Fix | Delete
[682] Fix | Delete
// Reposition whenever a sidebar's widgets are changed.
[683] Fix | Delete
api.each( function( setting ) {
[684] Fix | Delete
if ( 0 === setting.id.indexOf( 'sidebars_widgets[' ) ) {
[685] Fix | Delete
setting.bind( function() {
[686] Fix | Delete
if ( self.container.hasClass( 'expanded' ) ) {
[687] Fix | Delete
positionWidget();
[688] Fix | Delete
}
[689] Fix | Delete
} );
[690] Fix | Delete
}
[691] Fix | Delete
} );
[692] Fix | Delete
},
[693] Fix | Delete
[694] Fix | Delete
/**
[695] Fix | Delete
* Show/hide the control when clicking on the form title, when clicking
[696] Fix | Delete
* the close button
[697] Fix | Delete
*/
[698] Fix | Delete
_setupControlToggle: function() {
[699] Fix | Delete
var self = this, $closeBtn;
[700] Fix | Delete
[701] Fix | Delete
this.container.find( '.widget-top' ).on( 'click', function( e ) {
[702] Fix | Delete
e.preventDefault();
[703] Fix | Delete
var sidebarWidgetsControl = self.getSidebarWidgetsControl();
[704] Fix | Delete
if ( sidebarWidgetsControl.isReordering ) {
[705] Fix | Delete
return;
[706] Fix | Delete
}
[707] Fix | Delete
self.expanded( ! self.expanded() );
[708] Fix | Delete
} );
[709] Fix | Delete
[710] Fix | Delete
$closeBtn = this.container.find( '.widget-control-close' );
[711] Fix | Delete
$closeBtn.on( 'click', function() {
[712] Fix | Delete
self.collapse();
[713] Fix | Delete
self.container.find( '.widget-top .widget-action:first' ).focus(); // Keyboard accessibility.
[714] Fix | Delete
} );
[715] Fix | Delete
},
[716] Fix | Delete
[717] Fix | Delete
/**
[718] Fix | Delete
* Update the title of the form if a title field is entered
[719] Fix | Delete
*/
[720] Fix | Delete
_setupWidgetTitle: function() {
[721] Fix | Delete
var self = this, updateTitle;
[722] Fix | Delete
[723] Fix | Delete
updateTitle = function() {
[724] Fix | Delete
var title = self.setting().title,
[725] Fix | Delete
inWidgetTitle = self.container.find( '.in-widget-title' );
[726] Fix | Delete
[727] Fix | Delete
if ( title ) {
[728] Fix | Delete
inWidgetTitle.text( ': ' + title );
[729] Fix | Delete
} else {
[730] Fix | Delete
inWidgetTitle.text( '' );
[731] Fix | Delete
}
[732] Fix | Delete
};
[733] Fix | Delete
this.setting.bind( updateTitle );
[734] Fix | Delete
updateTitle();
[735] Fix | Delete
},
[736] Fix | Delete
[737] Fix | Delete
/**
[738] Fix | Delete
* Set up the widget-reorder-nav
[739] Fix | Delete
*/
[740] Fix | Delete
_setupReorderUI: function() {
[741] Fix | Delete
var self = this, selectSidebarItem, $moveWidgetArea,
[742] Fix | Delete
$reorderNav, updateAvailableSidebars, template;
[743] Fix | Delete
[744] Fix | Delete
/**
[745] Fix | Delete
* select the provided sidebar list item in the move widget area
[746] Fix | Delete
*
[747] Fix | Delete
* @param {jQuery} li
[748] Fix | Delete
*/
[749] Fix | Delete
selectSidebarItem = function( li ) {
[750] Fix | Delete
li.siblings( '.selected' ).removeClass( 'selected' );
[751] Fix | Delete
li.addClass( 'selected' );
[752] Fix | Delete
var isSelfSidebar = ( li.data( 'id' ) === self.params.sidebar_id );
[753] Fix | Delete
self.container.find( '.move-widget-btn' ).prop( 'disabled', isSelfSidebar );
[754] Fix | Delete
};
[755] Fix | Delete
[756] Fix | Delete
/**
[757] Fix | Delete
* Add the widget reordering elements to the widget control
[758] Fix | Delete
*/
[759] Fix | Delete
this.container.find( '.widget-title-action' ).after( $( api.Widgets.data.tpl.widgetReorderNav ) );
[760] Fix | Delete
[761] Fix | Delete
[762] Fix | Delete
template = _.template( api.Widgets.data.tpl.moveWidgetArea );
[763] Fix | Delete
$moveWidgetArea = $( template( {
[764] Fix | Delete
sidebars: _( api.Widgets.registeredSidebars.toArray() ).pluck( 'attributes' )
[765] Fix | Delete
} )
[766] Fix | Delete
);
[767] Fix | Delete
this.container.find( '.widget-top' ).after( $moveWidgetArea );
[768] Fix | Delete
[769] Fix | Delete
/**
[770] Fix | Delete
* Update available sidebars when their rendered state changes
[771] Fix | Delete
*/
[772] Fix | Delete
updateAvailableSidebars = function() {
[773] Fix | Delete
var $sidebarItems = $moveWidgetArea.find( 'li' ), selfSidebarItem,
[774] Fix | Delete
renderedSidebarCount = 0;
[775] Fix | Delete
[776] Fix | Delete
selfSidebarItem = $sidebarItems.filter( function(){
[777] Fix | Delete
return $( this ).data( 'id' ) === self.params.sidebar_id;
[778] Fix | Delete
} );
[779] Fix | Delete
[780] Fix | Delete
$sidebarItems.each( function() {
[781] Fix | Delete
var li = $( this ),
[782] Fix | Delete
sidebarId, sidebar, sidebarIsRendered;
[783] Fix | Delete
[784] Fix | Delete
sidebarId = li.data( 'id' );
[785] Fix | Delete
sidebar = api.Widgets.registeredSidebars.get( sidebarId );
[786] Fix | Delete
sidebarIsRendered = sidebar.get( 'is_rendered' );
[787] Fix | Delete
[788] Fix | Delete
li.toggle( sidebarIsRendered );
[789] Fix | Delete
[790] Fix | Delete
if ( sidebarIsRendered ) {
[791] Fix | Delete
renderedSidebarCount += 1;
[792] Fix | Delete
}
[793] Fix | Delete
[794] Fix | Delete
if ( li.hasClass( 'selected' ) && ! sidebarIsRendered ) {
[795] Fix | Delete
selectSidebarItem( selfSidebarItem );
[796] Fix | Delete
}
[797] Fix | Delete
} );
[798] Fix | Delete
[799] Fix | Delete
if ( renderedSidebarCount > 1 ) {
[800] Fix | Delete
self.container.find( '.move-widget' ).show();
[801] Fix | Delete
} else {
[802] Fix | Delete
self.container.find( '.move-widget' ).hide();
[803] Fix | Delete
}
[804] Fix | Delete
};
[805] Fix | Delete
[806] Fix | Delete
updateAvailableSidebars();
[807] Fix | Delete
api.Widgets.registeredSidebars.on( 'change:is_rendered', updateAvailableSidebars );
[808] Fix | Delete
[809] Fix | Delete
/**
[810] Fix | Delete
* Handle clicks for up/down/move on the reorder nav
[811] Fix | Delete
*/
[812] Fix | Delete
$reorderNav = this.container.find( '.widget-reorder-nav' );
[813] Fix | Delete
$reorderNav.find( '.move-widget, .move-widget-down, .move-widget-up' ).each( function() {
[814] Fix | Delete
$( this ).prepend( self.container.find( '.widget-title' ).text() + ': ' );
[815] Fix | Delete
} ).on( 'click keypress', function( event ) {
[816] Fix | Delete
if ( event.type === 'keypress' && ( event.which !== 13 && event.which !== 32 ) ) {
[817] Fix | Delete
return;
[818] Fix | Delete
}
[819] Fix | Delete
$( this ).trigger( 'focus' );
[820] Fix | Delete
[821] Fix | Delete
if ( $( this ).is( '.move-widget' ) ) {
[822] Fix | Delete
self.toggleWidgetMoveArea();
[823] Fix | Delete
} else {
[824] Fix | Delete
var isMoveDown = $( this ).is( '.move-widget-down' ),
[825] Fix | Delete
isMoveUp = $( this ).is( '.move-widget-up' ),
[826] Fix | Delete
i = self.getWidgetSidebarPosition();
[827] Fix | Delete
[828] Fix | Delete
if ( ( isMoveUp && i === 0 ) || ( isMoveDown && i === self.getSidebarWidgetsControl().setting().length - 1 ) ) {
[829] Fix | Delete
return;
[830] Fix | Delete
}
[831] Fix | Delete
[832] Fix | Delete
if ( isMoveUp ) {
[833] Fix | Delete
self.moveUp();
[834] Fix | Delete
wp.a11y.speak( l10n.widgetMovedUp );
[835] Fix | Delete
} else {
[836] Fix | Delete
self.moveDown();
[837] Fix | Delete
wp.a11y.speak( l10n.widgetMovedDown );
[838] Fix | Delete
}
[839] Fix | Delete
[840] Fix | Delete
$( this ).trigger( 'focus' ); // Re-focus after the container was moved.
[841] Fix | Delete
}
[842] Fix | Delete
} );
[843] Fix | Delete
[844] Fix | Delete
/**
[845] Fix | Delete
* Handle selecting a sidebar to move to
[846] Fix | Delete
*/
[847] Fix | Delete
this.container.find( '.widget-area-select' ).on( 'click keypress', 'li', function( event ) {
[848] Fix | Delete
if ( event.type === 'keypress' && ( event.which !== 13 && event.which !== 32 ) ) {
[849] Fix | Delete
return;
[850] Fix | Delete
}
[851] Fix | Delete
event.preventDefault();
[852] Fix | Delete
selectSidebarItem( $( this ) );
[853] Fix | Delete
} );
[854] Fix | Delete
[855] Fix | Delete
/**
[856] Fix | Delete
* Move widget to another sidebar
[857] Fix | Delete
*/
[858] Fix | Delete
this.container.find( '.move-widget-btn' ).click( function() {
[859] Fix | Delete
self.getSidebarWidgetsControl().toggleReordering( false );
[860] Fix | Delete
[861] Fix | Delete
var oldSidebarId = self.params.sidebar_id,
[862] Fix | Delete
newSidebarId = self.container.find( '.widget-area-select li.selected' ).data( 'id' ),
[863] Fix | Delete
oldSidebarWidgetsSetting, newSidebarWidgetsSetting,
[864] Fix | Delete
oldSidebarWidgetIds, newSidebarWidgetIds, i;
[865] Fix | Delete
[866] Fix | Delete
oldSidebarWidgetsSetting = api( 'sidebars_widgets[' + oldSidebarId + ']' );
[867] Fix | Delete
newSidebarWidgetsSetting = api( 'sidebars_widgets[' + newSidebarId + ']' );
[868] Fix | Delete
oldSidebarWidgetIds = Array.prototype.slice.call( oldSidebarWidgetsSetting() );
[869] Fix | Delete
newSidebarWidgetIds = Array.prototype.slice.call( newSidebarWidgetsSetting() );
[870] Fix | Delete
[871] Fix | Delete
i = self.getWidgetSidebarPosition();
[872] Fix | Delete
oldSidebarWidgetIds.splice( i, 1 );
[873] Fix | Delete
newSidebarWidgetIds.push( self.params.widget_id );
[874] Fix | Delete
[875] Fix | Delete
oldSidebarWidgetsSetting( oldSidebarWidgetIds );
[876] Fix | Delete
newSidebarWidgetsSetting( newSidebarWidgetIds );
[877] Fix | Delete
[878] Fix | Delete
self.focus();
[879] Fix | Delete
} );
[880] Fix | Delete
},
[881] Fix | Delete
[882] Fix | Delete
/**
[883] Fix | Delete
* Highlight widgets in preview when interacted with in the Customizer
[884] Fix | Delete
*/
[885] Fix | Delete
_setupHighlightEffects: function() {
[886] Fix | Delete
var self = this;
[887] Fix | Delete
[888] Fix | Delete
// Highlight whenever hovering or clicking over the form.
[889] Fix | Delete
this.container.on( 'mouseenter click', function() {
[890] Fix | Delete
self.setting.previewer.send( 'highlight-widget', self.params.widget_id );
[891] Fix | Delete
} );
[892] Fix | Delete
[893] Fix | Delete
// Highlight when the setting is updated.
[894] Fix | Delete
this.setting.bind( function() {
[895] Fix | Delete
self.setting.previewer.send( 'highlight-widget', self.params.widget_id );
[896] Fix | Delete
} );
[897] Fix | Delete
},
[898] Fix | Delete
[899] Fix | Delete
/**
[900] Fix | Delete
* Set up event handlers for widget updating
[901] Fix | Delete
*/
[902] Fix | Delete
_setupUpdateUI: function() {
[903] Fix | Delete
var self = this, $widgetRoot, $widgetContent,
[904] Fix | Delete
$saveBtn, updateWidgetDebounced, formSyncHandler;
[905] Fix | Delete
[906] Fix | Delete
$widgetRoot = this.container.find( '.widget:first' );
[907] Fix | Delete
$widgetContent = $widgetRoot.find( '.widget-content:first' );
[908] Fix | Delete
[909] Fix | Delete
// Configure update button.
[910] Fix | Delete
$saveBtn = this.container.find( '.widget-control-save' );
[911] Fix | Delete
$saveBtn.val( l10n.saveBtnLabel );
[912] Fix | Delete
$saveBtn.attr( 'title', l10n.saveBtnTooltip );
[913] Fix | Delete
$saveBtn.removeClass( 'button-primary' );
[914] Fix | Delete
$saveBtn.on( 'click', function( e ) {
[915] Fix | Delete
e.preventDefault();
[916] Fix | Delete
self.updateWidget( { disable_form: true } ); // @todo disable_form is unused?
[917] Fix | Delete
} );
[918] Fix | Delete
[919] Fix | Delete
updateWidgetDebounced = _.debounce( function() {
[920] Fix | Delete
self.updateWidget();
[921] Fix | Delete
}, 250 );
[922] Fix | Delete
[923] Fix | Delete
// Trigger widget form update when hitting Enter within an input.
[924] Fix | Delete
$widgetContent.on( 'keydown', 'input', function( e ) {
[925] Fix | Delete
if ( 13 === e.which ) { // Enter.
[926] Fix | Delete
e.preventDefault();
[927] Fix | Delete
self.updateWidget( { ignoreActiveElement: true } );
[928] Fix | Delete
}
[929] Fix | Delete
} );
[930] Fix | Delete
[931] Fix | Delete
// Handle widgets that support live previews.
[932] Fix | Delete
$widgetContent.on( 'change input propertychange', ':input', function( e ) {
[933] Fix | Delete
if ( ! self.liveUpdateMode ) {
[934] Fix | Delete
return;
[935] Fix | Delete
}
[936] Fix | Delete
if ( e.type === 'change' || ( this.checkValidity && this.checkValidity() ) ) {
[937] Fix | Delete
updateWidgetDebounced();
[938] Fix | Delete
}
[939] Fix | Delete
} );
[940] Fix | Delete
[941] Fix | Delete
// Remove loading indicators when the setting is saved and the preview updates.
[942] Fix | Delete
this.setting.previewer.channel.bind( 'synced', function() {
[943] Fix | Delete
self.container.removeClass( 'previewer-loading' );
[944] Fix | Delete
} );
[945] Fix | Delete
[946] Fix | Delete
api.previewer.bind( 'widget-updated', function( updatedWidgetId ) {
[947] Fix | Delete
if ( updatedWidgetId === self.params.widget_id ) {
[948] Fix | Delete
self.container.removeClass( 'previewer-loading' );
[949] Fix | Delete
}
[950] Fix | Delete
} );
[951] Fix | Delete
[952] Fix | Delete
formSyncHandler = api.Widgets.formSyncHandlers[ this.params.widget_id_base ];
[953] Fix | Delete
if ( formSyncHandler ) {
[954] Fix | Delete
$( document ).on( 'widget-synced', function( e, widget ) {
[955] Fix | Delete
if ( $widgetRoot.is( widget ) ) {
[956] Fix | Delete
formSyncHandler.apply( document, arguments );
[957] Fix | Delete
}
[958] Fix | Delete
} );
[959] Fix | Delete
}
[960] Fix | Delete
},
[961] Fix | Delete
[962] Fix | Delete
/**
[963] Fix | Delete
* Update widget control to indicate whether it is currently rendered.
[964] Fix | Delete
*
[965] Fix | Delete
* Overrides api.Control.toggle()
[966] Fix | Delete
*
[967] Fix | Delete
* @since 4.1.0
[968] Fix | Delete
*
[969] Fix | Delete
* @param {boolean} active
[970] Fix | Delete
* @param {Object} args
[971] Fix | Delete
* @param {function} args.completeCallback
[972] Fix | Delete
*/
[973] Fix | Delete
onChangeActive: function ( active, args ) {
[974] Fix | Delete
// Note: there is a second 'args' parameter being passed, merged on top of this.defaultActiveArguments.
[975] Fix | Delete
this.container.toggleClass( 'widget-rendered', active );
[976] Fix | Delete
if ( args.completeCallback ) {
[977] Fix | Delete
args.completeCallback();
[978] Fix | Delete
}
[979] Fix | Delete
},
[980] Fix | Delete
[981] Fix | Delete
/**
[982] Fix | Delete
* Set up event handlers for widget removal
[983] Fix | Delete
*/
[984] Fix | Delete
_setupRemoveUI: function() {
[985] Fix | Delete
var self = this, $removeBtn, replaceDeleteWithRemove;
[986] Fix | Delete
[987] Fix | Delete
// Configure remove button.
[988] Fix | Delete
$removeBtn = this.container.find( '.widget-control-remove' );
[989] Fix | Delete
$removeBtn.on( 'click', function() {
[990] Fix | Delete
// Find an adjacent element to add focus to when this widget goes away.
[991] Fix | Delete
var $adjacentFocusTarget;
[992] Fix | Delete
if ( self.container.next().is( '.customize-control-widget_form' ) ) {
[993] Fix | Delete
$adjacentFocusTarget = self.container.next().find( '.widget-action:first' );
[994] Fix | Delete
} else if ( self.container.prev().is( '.customize-control-widget_form' ) ) {
[995] Fix | Delete
$adjacentFocusTarget = self.container.prev().find( '.widget-action:first' );
[996] Fix | Delete
} else {
[997] Fix | Delete
$adjacentFocusTarget = self.container.next( '.customize-control-sidebar_widgets' ).find( '.add-new-widget:first' );
[998] Fix | Delete
}
[999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function