Add upstream
This commit is contained in:
119
wp-content/plugins/jetpack/modules/widgets/customizer-utils.js
Normal file
119
wp-content/plugins/jetpack/modules/widgets/customizer-utils.js
Normal file
@@ -0,0 +1,119 @@
|
||||
/* global wp, gapi, FB, twttr, PaypalExpressCheckout */
|
||||
|
||||
/**
|
||||
* Utilities to work with widgets in Customizer.
|
||||
*/
|
||||
|
||||
/**
|
||||
* Checks whether this Customizer supports partial widget refresh.
|
||||
* @returns {boolean}
|
||||
*/
|
||||
wp.customizerHasPartialWidgetRefresh = function() {
|
||||
return (
|
||||
'object' === typeof wp &&
|
||||
'function' === typeof wp.customize &&
|
||||
'object' === typeof wp.customize.selectiveRefresh &&
|
||||
'object' === typeof wp.customize.widgetsPreview &&
|
||||
'function' === typeof wp.customize.widgetsPreview.WidgetPartial
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* Verifies that the placed widget ID contains the widget name.
|
||||
* @param {object} placement
|
||||
* @param {string} widgetName
|
||||
* @returns {*|boolean}
|
||||
*/
|
||||
wp.isJetpackWidgetPlaced = function( placement, widgetName ) {
|
||||
return placement.partial.widgetId && 0 === placement.partial.widgetId.indexOf( widgetName );
|
||||
};
|
||||
|
||||
/**
|
||||
* Bind events for selective refresh in Customizer.
|
||||
*/
|
||||
( function( $ ) {
|
||||
$( document ).ready( function() {
|
||||
if ( wp && wp.customize && wp.customizerHasPartialWidgetRefresh() ) {
|
||||
// Refresh widget contents when a partial is rendered.
|
||||
wp.customize.selectiveRefresh.bind( 'partial-content-rendered', function( placement ) {
|
||||
if ( placement.container ) {
|
||||
// Refresh Google+
|
||||
if (
|
||||
wp.isJetpackWidgetPlaced( placement, 'googleplus-badge' ) &&
|
||||
'object' === typeof gapi &&
|
||||
gapi.person &&
|
||||
'function' === typeof gapi.person.go
|
||||
) {
|
||||
gapi.person.go( placement.container[ 0 ] );
|
||||
}
|
||||
|
||||
// Refresh Facebook XFBML
|
||||
else if (
|
||||
wp.isJetpackWidgetPlaced( placement, 'facebook-likebox' ) &&
|
||||
'object' === typeof FB &&
|
||||
'object' === typeof FB.XFBML &&
|
||||
'function' === typeof FB.XFBML.parse
|
||||
) {
|
||||
FB.XFBML.parse( placement.container[ 0 ], function() {
|
||||
var $fbContainer = $( placement.container[ 0 ] ).find( '.fb_iframe_widget' ),
|
||||
fbWidth = $fbContainer.data( 'width' ),
|
||||
fbHeight = $fbContainer.data( 'height' );
|
||||
$fbContainer.find( 'span' ).css( { width: fbWidth, height: fbHeight } );
|
||||
setTimeout( function() {
|
||||
$fbContainer
|
||||
.find( 'iframe' )
|
||||
.css( { width: fbWidth, height: fbHeight, position: 'relative' } );
|
||||
}, 1 );
|
||||
} );
|
||||
}
|
||||
|
||||
// Refresh Twitter
|
||||
else if (
|
||||
wp.isJetpackWidgetPlaced( placement, 'twitter_timeline' ) &&
|
||||
'object' === typeof twttr &&
|
||||
'object' === typeof twttr.widgets &&
|
||||
'function' === typeof twttr.widgets.load
|
||||
) {
|
||||
twttr.widgets.load( placement.container[ 0 ] );
|
||||
} else if ( wp.isJetpackWidgetPlaced( placement, 'eu_cookie_law_widget' ) ) {
|
||||
// Refresh EU Cookie Law
|
||||
if ( $( '#eu-cookie-law' ).hasClass( 'top' ) ) {
|
||||
$( '.widget_eu_cookie_law_widget' ).addClass( 'top' );
|
||||
} else {
|
||||
$( '.widget_eu_cookie_law_widget' ).removeClass( 'top' );
|
||||
}
|
||||
placement.container.fadeIn();
|
||||
} else if ( wp.isJetpackWidgetPlaced( placement, 'jetpack_simple_payments_widget' ) ) {
|
||||
// Refresh Simple Payments Widget
|
||||
try {
|
||||
var buttonId = $( '.jetpack-simple-payments-button', placement.container )
|
||||
.attr( 'id' )
|
||||
.replace( '_button', '' );
|
||||
PaypalExpressCheckout.renderButton( null, null, buttonId, null );
|
||||
} catch ( e ) {
|
||||
// PaypalExpressCheckout may fail.
|
||||
// For the same usage, see also:
|
||||
// https://github.com/Automattic/jetpack/blob/6c1971e6bed7d3df793392a7a58ffe0afaeeb5fe/modules/simple-payments/simple-payments.php#L111
|
||||
}
|
||||
}
|
||||
}
|
||||
} );
|
||||
|
||||
// Refresh widgets when they're moved.
|
||||
wp.customize.selectiveRefresh.bind( 'partial-content-moved', function( placement ) {
|
||||
if ( placement.container ) {
|
||||
// Refresh Twitter timeline iframe, since it has to be re-built.
|
||||
if (
|
||||
wp.isJetpackWidgetPlaced( placement, 'twitter_timeline' ) &&
|
||||
placement.container.find( 'iframe.twitter-timeline:not([src]):first' ).length
|
||||
) {
|
||||
placement.partial.refresh();
|
||||
} else if ( wp.isJetpackWidgetPlaced( placement, 'jetpack_simple_payments_widget' ) ) {
|
||||
// Refresh Simple Payments Widget
|
||||
placement.partial.refresh();
|
||||
}
|
||||
}
|
||||
} );
|
||||
}
|
||||
} );
|
||||
} )( jQuery );
|
||||
Reference in New Issue
Block a user