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/wp-admin/js
File: customize-controls.js
api.notifications.remove( errorCode );
[7500] Fix | Delete
[7501] Fix | Delete
/*
[7502] Fix | Delete
* Block saving if there are any settings that are marked as
[7503] Fix | Delete
* invalid from the client (not from the server). Focus on
[7504] Fix | Delete
* the control.
[7505] Fix | Delete
*/
[7506] Fix | Delete
api.each( function( setting ) {
[7507] Fix | Delete
setting.notifications.each( function( notification ) {
[7508] Fix | Delete
if ( 'error' === notification.type && ! notification.fromServer ) {
[7509] Fix | Delete
invalidSettings.push( setting.id );
[7510] Fix | Delete
if ( ! settingInvalidities[ setting.id ] ) {
[7511] Fix | Delete
settingInvalidities[ setting.id ] = {};
[7512] Fix | Delete
}
[7513] Fix | Delete
settingInvalidities[ setting.id ][ notification.code ] = notification;
[7514] Fix | Delete
}
[7515] Fix | Delete
} );
[7516] Fix | Delete
} );
[7517] Fix | Delete
[7518] Fix | Delete
// Find all invalid setting less controls with notification type error.
[7519] Fix | Delete
api.control.each( function( control ) {
[7520] Fix | Delete
if ( ! control.setting || ! control.setting.id && control.active.get() ) {
[7521] Fix | Delete
control.notifications.each( function( notification ) {
[7522] Fix | Delete
if ( 'error' === notification.type ) {
[7523] Fix | Delete
invalidSettingLessControls.push( [ control ] );
[7524] Fix | Delete
}
[7525] Fix | Delete
} );
[7526] Fix | Delete
}
[7527] Fix | Delete
} );
[7528] Fix | Delete
[7529] Fix | Delete
invalidControls = _.union( invalidSettingLessControls, _.values( api.findControlsForSettings( invalidSettings ) ) );
[7530] Fix | Delete
if ( ! _.isEmpty( invalidControls ) ) {
[7531] Fix | Delete
[7532] Fix | Delete
invalidControls[0][0].focus();
[7533] Fix | Delete
api.unbind( 'change', captureSettingModifiedDuringSave );
[7534] Fix | Delete
[7535] Fix | Delete
if ( invalidSettings.length ) {
[7536] Fix | Delete
api.notifications.add( new api.Notification( errorCode, {
[7537] Fix | Delete
message: ( 1 === invalidSettings.length ? api.l10n.saveBlockedError.singular : api.l10n.saveBlockedError.plural ).replace( /%s/g, String( invalidSettings.length ) ),
[7538] Fix | Delete
type: 'error',
[7539] Fix | Delete
dismissible: true,
[7540] Fix | Delete
saveFailure: true
[7541] Fix | Delete
} ) );
[7542] Fix | Delete
}
[7543] Fix | Delete
[7544] Fix | Delete
deferred.rejectWith( previewer, [
[7545] Fix | Delete
{ setting_invalidities: settingInvalidities }
[7546] Fix | Delete
] );
[7547] Fix | Delete
api.state( 'saving' ).set( false );
[7548] Fix | Delete
return deferred.promise();
[7549] Fix | Delete
}
[7550] Fix | Delete
[7551] Fix | Delete
/*
[7552] Fix | Delete
* Note that excludeCustomizedSaved is intentionally false so that the entire
[7553] Fix | Delete
* set of customized data will be included if bypassed changeset update.
[7554] Fix | Delete
*/
[7555] Fix | Delete
query = $.extend( previewer.query( { excludeCustomizedSaved: false } ), {
[7556] Fix | Delete
nonce: previewer.nonce.save,
[7557] Fix | Delete
customize_changeset_status: changesetStatus
[7558] Fix | Delete
} );
[7559] Fix | Delete
[7560] Fix | Delete
if ( args && args.date ) {
[7561] Fix | Delete
query.customize_changeset_date = args.date;
[7562] Fix | Delete
} else if ( 'future' === changesetStatus && selectedChangesetDate ) {
[7563] Fix | Delete
query.customize_changeset_date = selectedChangesetDate;
[7564] Fix | Delete
}
[7565] Fix | Delete
[7566] Fix | Delete
if ( args && args.title ) {
[7567] Fix | Delete
query.customize_changeset_title = args.title;
[7568] Fix | Delete
}
[7569] Fix | Delete
[7570] Fix | Delete
// Allow plugins to modify the params included with the save request.
[7571] Fix | Delete
api.trigger( 'save-request-params', query );
[7572] Fix | Delete
[7573] Fix | Delete
/*
[7574] Fix | Delete
* Note that the dirty customized values will have already been set in the
[7575] Fix | Delete
* changeset and so technically query.customized could be deleted. However,
[7576] Fix | Delete
* it is remaining here to make sure that any settings that got updated
[7577] Fix | Delete
* quietly which may have not triggered an update request will also get
[7578] Fix | Delete
* included in the values that get saved to the changeset. This will ensure
[7579] Fix | Delete
* that values that get injected via the saved event will be included in
[7580] Fix | Delete
* the changeset. This also ensures that setting values that were invalid
[7581] Fix | Delete
* will get re-validated, perhaps in the case of settings that are invalid
[7582] Fix | Delete
* due to dependencies on other settings.
[7583] Fix | Delete
*/
[7584] Fix | Delete
request = wp.ajax.post( 'customize_save', query );
[7585] Fix | Delete
api.state( 'processing' ).set( api.state( 'processing' ).get() + 1 );
[7586] Fix | Delete
[7587] Fix | Delete
api.trigger( 'save', request );
[7588] Fix | Delete
[7589] Fix | Delete
request.always( function () {
[7590] Fix | Delete
api.state( 'processing' ).set( api.state( 'processing' ).get() - 1 );
[7591] Fix | Delete
api.state( 'saving' ).set( false );
[7592] Fix | Delete
api.unbind( 'change', captureSettingModifiedDuringSave );
[7593] Fix | Delete
} );
[7594] Fix | Delete
[7595] Fix | Delete
// Remove notifications that were added due to save failures.
[7596] Fix | Delete
api.notifications.each( function( notification ) {
[7597] Fix | Delete
if ( notification.saveFailure ) {
[7598] Fix | Delete
api.notifications.remove( notification.code );
[7599] Fix | Delete
}
[7600] Fix | Delete
});
[7601] Fix | Delete
[7602] Fix | Delete
request.fail( function ( response ) {
[7603] Fix | Delete
var notification, notificationArgs;
[7604] Fix | Delete
notificationArgs = {
[7605] Fix | Delete
type: 'error',
[7606] Fix | Delete
dismissible: true,
[7607] Fix | Delete
fromServer: true,
[7608] Fix | Delete
saveFailure: true
[7609] Fix | Delete
};
[7610] Fix | Delete
[7611] Fix | Delete
if ( '0' === response ) {
[7612] Fix | Delete
response = 'not_logged_in';
[7613] Fix | Delete
} else if ( '-1' === response ) {
[7614] Fix | Delete
// Back-compat in case any other check_ajax_referer() call is dying.
[7615] Fix | Delete
response = 'invalid_nonce';
[7616] Fix | Delete
}
[7617] Fix | Delete
[7618] Fix | Delete
if ( 'invalid_nonce' === response ) {
[7619] Fix | Delete
previewer.cheatin();
[7620] Fix | Delete
} else if ( 'not_logged_in' === response ) {
[7621] Fix | Delete
previewer.preview.iframe.hide();
[7622] Fix | Delete
previewer.login().done( function() {
[7623] Fix | Delete
previewer.save();
[7624] Fix | Delete
previewer.preview.iframe.show();
[7625] Fix | Delete
} );
[7626] Fix | Delete
} else if ( response.code ) {
[7627] Fix | Delete
if ( 'not_future_date' === response.code && api.section.has( 'publish_settings' ) && api.section( 'publish_settings' ).active.get() && api.control.has( 'changeset_scheduled_date' ) ) {
[7628] Fix | Delete
api.control( 'changeset_scheduled_date' ).toggleFutureDateNotification( true ).focus();
[7629] Fix | Delete
} else if ( 'changeset_locked' !== response.code ) {
[7630] Fix | Delete
notification = new api.Notification( response.code, _.extend( notificationArgs, {
[7631] Fix | Delete
message: response.message
[7632] Fix | Delete
} ) );
[7633] Fix | Delete
}
[7634] Fix | Delete
} else {
[7635] Fix | Delete
notification = new api.Notification( 'unknown_error', _.extend( notificationArgs, {
[7636] Fix | Delete
message: api.l10n.unknownRequestFail
[7637] Fix | Delete
} ) );
[7638] Fix | Delete
}
[7639] Fix | Delete
[7640] Fix | Delete
if ( notification ) {
[7641] Fix | Delete
api.notifications.add( notification );
[7642] Fix | Delete
}
[7643] Fix | Delete
[7644] Fix | Delete
if ( response.setting_validities ) {
[7645] Fix | Delete
api._handleSettingValidities( {
[7646] Fix | Delete
settingValidities: response.setting_validities,
[7647] Fix | Delete
focusInvalidControl: true
[7648] Fix | Delete
} );
[7649] Fix | Delete
}
[7650] Fix | Delete
[7651] Fix | Delete
deferred.rejectWith( previewer, [ response ] );
[7652] Fix | Delete
api.trigger( 'error', response );
[7653] Fix | Delete
[7654] Fix | Delete
// Start a new changeset if the underlying changeset was published.
[7655] Fix | Delete
if ( 'changeset_already_published' === response.code && response.next_changeset_uuid ) {
[7656] Fix | Delete
api.settings.changeset.uuid = response.next_changeset_uuid;
[7657] Fix | Delete
api.state( 'changesetStatus' ).set( '' );
[7658] Fix | Delete
if ( api.settings.changeset.branching ) {
[7659] Fix | Delete
parent.send( 'changeset-uuid', api.settings.changeset.uuid );
[7660] Fix | Delete
}
[7661] Fix | Delete
api.previewer.send( 'changeset-uuid', api.settings.changeset.uuid );
[7662] Fix | Delete
}
[7663] Fix | Delete
} );
[7664] Fix | Delete
[7665] Fix | Delete
request.done( function( response ) {
[7666] Fix | Delete
[7667] Fix | Delete
previewer.send( 'saved', response );
[7668] Fix | Delete
[7669] Fix | Delete
api.state( 'changesetStatus' ).set( response.changeset_status );
[7670] Fix | Delete
if ( response.changeset_date ) {
[7671] Fix | Delete
api.state( 'changesetDate' ).set( response.changeset_date );
[7672] Fix | Delete
}
[7673] Fix | Delete
[7674] Fix | Delete
if ( 'publish' === response.changeset_status ) {
[7675] Fix | Delete
[7676] Fix | Delete
// Mark all published as clean if they haven't been modified during the request.
[7677] Fix | Delete
api.each( function( setting ) {
[7678] Fix | Delete
/*
[7679] Fix | Delete
* Note that the setting revision will be undefined in the case of setting
[7680] Fix | Delete
* values that are marked as dirty when the customizer is loaded, such as
[7681] Fix | Delete
* when applying starter content. All other dirty settings will have an
[7682] Fix | Delete
* associated revision due to their modification triggering a change event.
[7683] Fix | Delete
*/
[7684] Fix | Delete
if ( setting._dirty && ( _.isUndefined( api._latestSettingRevisions[ setting.id ] ) || api._latestSettingRevisions[ setting.id ] <= latestRevision ) ) {
[7685] Fix | Delete
setting._dirty = false;
[7686] Fix | Delete
}
[7687] Fix | Delete
} );
[7688] Fix | Delete
[7689] Fix | Delete
api.state( 'changesetStatus' ).set( '' );
[7690] Fix | Delete
api.settings.changeset.uuid = response.next_changeset_uuid;
[7691] Fix | Delete
if ( api.settings.changeset.branching ) {
[7692] Fix | Delete
parent.send( 'changeset-uuid', api.settings.changeset.uuid );
[7693] Fix | Delete
}
[7694] Fix | Delete
}
[7695] Fix | Delete
[7696] Fix | Delete
// Prevent subsequent requestChangesetUpdate() calls from including the settings that have been saved.
[7697] Fix | Delete
api._lastSavedRevision = Math.max( latestRevision, api._lastSavedRevision );
[7698] Fix | Delete
[7699] Fix | Delete
if ( response.setting_validities ) {
[7700] Fix | Delete
api._handleSettingValidities( {
[7701] Fix | Delete
settingValidities: response.setting_validities,
[7702] Fix | Delete
focusInvalidControl: true
[7703] Fix | Delete
} );
[7704] Fix | Delete
}
[7705] Fix | Delete
[7706] Fix | Delete
deferred.resolveWith( previewer, [ response ] );
[7707] Fix | Delete
api.trigger( 'saved', response );
[7708] Fix | Delete
[7709] Fix | Delete
// Restore the global dirty state if any settings were modified during save.
[7710] Fix | Delete
if ( ! _.isEmpty( modifiedWhileSaving ) ) {
[7711] Fix | Delete
api.state( 'saved' ).set( false );
[7712] Fix | Delete
}
[7713] Fix | Delete
} );
[7714] Fix | Delete
};
[7715] Fix | Delete
[7716] Fix | Delete
if ( 0 === processing() ) {
[7717] Fix | Delete
submit();
[7718] Fix | Delete
} else {
[7719] Fix | Delete
submitWhenDoneProcessing = function () {
[7720] Fix | Delete
if ( 0 === processing() ) {
[7721] Fix | Delete
api.state.unbind( 'change', submitWhenDoneProcessing );
[7722] Fix | Delete
submit();
[7723] Fix | Delete
}
[7724] Fix | Delete
};
[7725] Fix | Delete
api.state.bind( 'change', submitWhenDoneProcessing );
[7726] Fix | Delete
}
[7727] Fix | Delete
[7728] Fix | Delete
return deferred.promise();
[7729] Fix | Delete
},
[7730] Fix | Delete
[7731] Fix | Delete
/**
[7732] Fix | Delete
* Trash the current changes.
[7733] Fix | Delete
*
[7734] Fix | Delete
* Revert the Customizer to its previously-published state.
[7735] Fix | Delete
*
[7736] Fix | Delete
* @since 4.9.0
[7737] Fix | Delete
*
[7738] Fix | Delete
* @return {jQuery.promise} Promise.
[7739] Fix | Delete
*/
[7740] Fix | Delete
trash: function trash() {
[7741] Fix | Delete
var request, success, fail;
[7742] Fix | Delete
[7743] Fix | Delete
api.state( 'trashing' ).set( true );
[7744] Fix | Delete
api.state( 'processing' ).set( api.state( 'processing' ).get() + 1 );
[7745] Fix | Delete
[7746] Fix | Delete
request = wp.ajax.post( 'customize_trash', {
[7747] Fix | Delete
customize_changeset_uuid: api.settings.changeset.uuid,
[7748] Fix | Delete
nonce: api.settings.nonce.trash
[7749] Fix | Delete
} );
[7750] Fix | Delete
api.notifications.add( new api.OverlayNotification( 'changeset_trashing', {
[7751] Fix | Delete
type: 'info',
[7752] Fix | Delete
message: api.l10n.revertingChanges,
[7753] Fix | Delete
loading: true
[7754] Fix | Delete
} ) );
[7755] Fix | Delete
[7756] Fix | Delete
success = function() {
[7757] Fix | Delete
var urlParser = document.createElement( 'a' ), queryParams;
[7758] Fix | Delete
[7759] Fix | Delete
api.state( 'changesetStatus' ).set( 'trash' );
[7760] Fix | Delete
api.each( function( setting ) {
[7761] Fix | Delete
setting._dirty = false;
[7762] Fix | Delete
} );
[7763] Fix | Delete
api.state( 'saved' ).set( true );
[7764] Fix | Delete
[7765] Fix | Delete
// Go back to Customizer without changeset.
[7766] Fix | Delete
urlParser.href = location.href;
[7767] Fix | Delete
queryParams = api.utils.parseQueryString( urlParser.search.substr( 1 ) );
[7768] Fix | Delete
delete queryParams.changeset_uuid;
[7769] Fix | Delete
queryParams['return'] = api.settings.url['return'];
[7770] Fix | Delete
urlParser.search = $.param( queryParams );
[7771] Fix | Delete
location.replace( urlParser.href );
[7772] Fix | Delete
};
[7773] Fix | Delete
[7774] Fix | Delete
fail = function( code, message ) {
[7775] Fix | Delete
var notificationCode = code || 'unknown_error';
[7776] Fix | Delete
api.state( 'processing' ).set( api.state( 'processing' ).get() - 1 );
[7777] Fix | Delete
api.state( 'trashing' ).set( false );
[7778] Fix | Delete
api.notifications.remove( 'changeset_trashing' );
[7779] Fix | Delete
api.notifications.add( new api.Notification( notificationCode, {
[7780] Fix | Delete
message: message || api.l10n.unknownError,
[7781] Fix | Delete
dismissible: true,
[7782] Fix | Delete
type: 'error'
[7783] Fix | Delete
} ) );
[7784] Fix | Delete
};
[7785] Fix | Delete
[7786] Fix | Delete
request.done( function( response ) {
[7787] Fix | Delete
success( response.message );
[7788] Fix | Delete
} );
[7789] Fix | Delete
[7790] Fix | Delete
request.fail( function( response ) {
[7791] Fix | Delete
var code = response.code || 'trashing_failed';
[7792] Fix | Delete
if ( response.success || 'non_existent_changeset' === code || 'changeset_already_trashed' === code ) {
[7793] Fix | Delete
success( response.message );
[7794] Fix | Delete
} else {
[7795] Fix | Delete
fail( code, response.message );
[7796] Fix | Delete
}
[7797] Fix | Delete
} );
[7798] Fix | Delete
},
[7799] Fix | Delete
[7800] Fix | Delete
/**
[7801] Fix | Delete
* Builds the front preview URL with the current state of customizer.
[7802] Fix | Delete
*
[7803] Fix | Delete
* @since 4.9.0
[7804] Fix | Delete
*
[7805] Fix | Delete
* @return {string} Preview URL.
[7806] Fix | Delete
*/
[7807] Fix | Delete
getFrontendPreviewUrl: function() {
[7808] Fix | Delete
var previewer = this, params, urlParser;
[7809] Fix | Delete
urlParser = document.createElement( 'a' );
[7810] Fix | Delete
urlParser.href = previewer.previewUrl.get();
[7811] Fix | Delete
params = api.utils.parseQueryString( urlParser.search.substr( 1 ) );
[7812] Fix | Delete
[7813] Fix | Delete
if ( api.state( 'changesetStatus' ).get() && 'publish' !== api.state( 'changesetStatus' ).get() ) {
[7814] Fix | Delete
params.customize_changeset_uuid = api.settings.changeset.uuid;
[7815] Fix | Delete
}
[7816] Fix | Delete
if ( ! api.state( 'activated' ).get() ) {
[7817] Fix | Delete
params.customize_theme = api.settings.theme.stylesheet;
[7818] Fix | Delete
}
[7819] Fix | Delete
[7820] Fix | Delete
urlParser.search = $.param( params );
[7821] Fix | Delete
return urlParser.href;
[7822] Fix | Delete
}
[7823] Fix | Delete
});
[7824] Fix | Delete
[7825] Fix | Delete
// Ensure preview nonce is included with every customized request, to allow post data to be read.
[7826] Fix | Delete
$.ajaxPrefilter( function injectPreviewNonce( options ) {
[7827] Fix | Delete
if ( ! /wp_customize=on/.test( options.data ) ) {
[7828] Fix | Delete
return;
[7829] Fix | Delete
}
[7830] Fix | Delete
options.data += '&' + $.param({
[7831] Fix | Delete
customize_preview_nonce: api.settings.nonce.preview
[7832] Fix | Delete
});
[7833] Fix | Delete
});
[7834] Fix | Delete
[7835] Fix | Delete
// Refresh the nonces if the preview sends updated nonces over.
[7836] Fix | Delete
api.previewer.bind( 'nonce', function( nonce ) {
[7837] Fix | Delete
$.extend( this.nonce, nonce );
[7838] Fix | Delete
});
[7839] Fix | Delete
[7840] Fix | Delete
// Refresh the nonces if login sends updated nonces over.
[7841] Fix | Delete
api.bind( 'nonce-refresh', function( nonce ) {
[7842] Fix | Delete
$.extend( api.settings.nonce, nonce );
[7843] Fix | Delete
$.extend( api.previewer.nonce, nonce );
[7844] Fix | Delete
api.previewer.send( 'nonce-refresh', nonce );
[7845] Fix | Delete
});
[7846] Fix | Delete
[7847] Fix | Delete
// Create Settings.
[7848] Fix | Delete
$.each( api.settings.settings, function( id, data ) {
[7849] Fix | Delete
var Constructor = api.settingConstructor[ data.type ] || api.Setting;
[7850] Fix | Delete
api.add( new Constructor( id, data.value, {
[7851] Fix | Delete
transport: data.transport,
[7852] Fix | Delete
previewer: api.previewer,
[7853] Fix | Delete
dirty: !! data.dirty
[7854] Fix | Delete
} ) );
[7855] Fix | Delete
});
[7856] Fix | Delete
[7857] Fix | Delete
// Create Panels.
[7858] Fix | Delete
$.each( api.settings.panels, function ( id, data ) {
[7859] Fix | Delete
var Constructor = api.panelConstructor[ data.type ] || api.Panel, options;
[7860] Fix | Delete
// Inclusion of params alias is for back-compat for custom panels that expect to augment this property.
[7861] Fix | Delete
options = _.extend( { params: data }, data );
[7862] Fix | Delete
api.panel.add( new Constructor( id, options ) );
[7863] Fix | Delete
});
[7864] Fix | Delete
[7865] Fix | Delete
// Create Sections.
[7866] Fix | Delete
$.each( api.settings.sections, function ( id, data ) {
[7867] Fix | Delete
var Constructor = api.sectionConstructor[ data.type ] || api.Section, options;
[7868] Fix | Delete
// Inclusion of params alias is for back-compat for custom sections that expect to augment this property.
[7869] Fix | Delete
options = _.extend( { params: data }, data );
[7870] Fix | Delete
api.section.add( new Constructor( id, options ) );
[7871] Fix | Delete
});
[7872] Fix | Delete
[7873] Fix | Delete
// Create Controls.
[7874] Fix | Delete
$.each( api.settings.controls, function( id, data ) {
[7875] Fix | Delete
var Constructor = api.controlConstructor[ data.type ] || api.Control, options;
[7876] Fix | Delete
// Inclusion of params alias is for back-compat for custom controls that expect to augment this property.
[7877] Fix | Delete
options = _.extend( { params: data }, data );
[7878] Fix | Delete
api.control.add( new Constructor( id, options ) );
[7879] Fix | Delete
});
[7880] Fix | Delete
[7881] Fix | Delete
// Focus the autofocused element.
[7882] Fix | Delete
_.each( [ 'panel', 'section', 'control' ], function( type ) {
[7883] Fix | Delete
var id = api.settings.autofocus[ type ];
[7884] Fix | Delete
if ( ! id ) {
[7885] Fix | Delete
return;
[7886] Fix | Delete
}
[7887] Fix | Delete
[7888] Fix | Delete
/*
[7889] Fix | Delete
* Defer focus until:
[7890] Fix | Delete
* 1. The panel, section, or control exists (especially for dynamically-created ones).
[7891] Fix | Delete
* 2. The instance is embedded in the document (and so is focusable).
[7892] Fix | Delete
* 3. The preview has finished loading so that the active states have been set.
[7893] Fix | Delete
*/
[7894] Fix | Delete
api[ type ]( id, function( instance ) {
[7895] Fix | Delete
instance.deferred.embedded.done( function() {
[7896] Fix | Delete
api.previewer.deferred.active.done( function() {
[7897] Fix | Delete
instance.focus();
[7898] Fix | Delete
});
[7899] Fix | Delete
});
[7900] Fix | Delete
});
[7901] Fix | Delete
});
[7902] Fix | Delete
[7903] Fix | Delete
api.bind( 'ready', api.reflowPaneContents );
[7904] Fix | Delete
$( [ api.panel, api.section, api.control ] ).each( function ( i, values ) {
[7905] Fix | Delete
var debouncedReflowPaneContents = _.debounce( api.reflowPaneContents, api.settings.timeouts.reflowPaneContents );
[7906] Fix | Delete
values.bind( 'add', debouncedReflowPaneContents );
[7907] Fix | Delete
values.bind( 'change', debouncedReflowPaneContents );
[7908] Fix | Delete
values.bind( 'remove', debouncedReflowPaneContents );
[7909] Fix | Delete
} );
[7910] Fix | Delete
[7911] Fix | Delete
// Set up global notifications area.
[7912] Fix | Delete
api.bind( 'ready', function setUpGlobalNotificationsArea() {
[7913] Fix | Delete
var sidebar, containerHeight, containerInitialTop;
[7914] Fix | Delete
api.notifications.container = $( '#customize-notifications-area' );
[7915] Fix | Delete
[7916] Fix | Delete
api.notifications.bind( 'change', _.debounce( function() {
[7917] Fix | Delete
api.notifications.render();
[7918] Fix | Delete
} ) );
[7919] Fix | Delete
[7920] Fix | Delete
sidebar = $( '.wp-full-overlay-sidebar-content' );
[7921] Fix | Delete
api.notifications.bind( 'rendered', function updateSidebarTop() {
[7922] Fix | Delete
sidebar.css( 'top', '' );
[7923] Fix | Delete
if ( 0 !== api.notifications.count() ) {
[7924] Fix | Delete
containerHeight = api.notifications.container.outerHeight() + 1;
[7925] Fix | Delete
containerInitialTop = parseInt( sidebar.css( 'top' ), 10 );
[7926] Fix | Delete
sidebar.css( 'top', containerInitialTop + containerHeight + 'px' );
[7927] Fix | Delete
}
[7928] Fix | Delete
api.notifications.trigger( 'sidebarTopUpdated' );
[7929] Fix | Delete
});
[7930] Fix | Delete
[7931] Fix | Delete
api.notifications.render();
[7932] Fix | Delete
});
[7933] Fix | Delete
[7934] Fix | Delete
// Save and activated states.
[7935] Fix | Delete
(function( state ) {
[7936] Fix | Delete
var saved = state.instance( 'saved' ),
[7937] Fix | Delete
saving = state.instance( 'saving' ),
[7938] Fix | Delete
trashing = state.instance( 'trashing' ),
[7939] Fix | Delete
activated = state.instance( 'activated' ),
[7940] Fix | Delete
processing = state.instance( 'processing' ),
[7941] Fix | Delete
paneVisible = state.instance( 'paneVisible' ),
[7942] Fix | Delete
expandedPanel = state.instance( 'expandedPanel' ),
[7943] Fix | Delete
expandedSection = state.instance( 'expandedSection' ),
[7944] Fix | Delete
changesetStatus = state.instance( 'changesetStatus' ),
[7945] Fix | Delete
selectedChangesetStatus = state.instance( 'selectedChangesetStatus' ),
[7946] Fix | Delete
changesetDate = state.instance( 'changesetDate' ),
[7947] Fix | Delete
selectedChangesetDate = state.instance( 'selectedChangesetDate' ),
[7948] Fix | Delete
previewerAlive = state.instance( 'previewerAlive' ),
[7949] Fix | Delete
editShortcutVisibility = state.instance( 'editShortcutVisibility' ),
[7950] Fix | Delete
changesetLocked = state.instance( 'changesetLocked' ),
[7951] Fix | Delete
populateChangesetUuidParam, defaultSelectedChangesetStatus;
[7952] Fix | Delete
[7953] Fix | Delete
state.bind( 'change', function() {
[7954] Fix | Delete
var canSave;
[7955] Fix | Delete
[7956] Fix | Delete
if ( ! activated() ) {
[7957] Fix | Delete
saveBtn.val( api.l10n.activate );
[7958] Fix | Delete
closeBtn.find( '.screen-reader-text' ).text( api.l10n.cancel );
[7959] Fix | Delete
[7960] Fix | Delete
} else if ( '' === changesetStatus.get() && saved() ) {
[7961] Fix | Delete
if ( api.settings.changeset.currentUserCanPublish ) {
[7962] Fix | Delete
saveBtn.val( api.l10n.published );
[7963] Fix | Delete
} else {
[7964] Fix | Delete
saveBtn.val( api.l10n.saved );
[7965] Fix | Delete
}
[7966] Fix | Delete
closeBtn.find( '.screen-reader-text' ).text( api.l10n.close );
[7967] Fix | Delete
[7968] Fix | Delete
} else {
[7969] Fix | Delete
if ( 'draft' === selectedChangesetStatus() ) {
[7970] Fix | Delete
if ( saved() && selectedChangesetStatus() === changesetStatus() ) {
[7971] Fix | Delete
saveBtn.val( api.l10n.draftSaved );
[7972] Fix | Delete
} else {
[7973] Fix | Delete
saveBtn.val( api.l10n.saveDraft );
[7974] Fix | Delete
}
[7975] Fix | Delete
} else if ( 'future' === selectedChangesetStatus() ) {
[7976] Fix | Delete
if ( saved() && selectedChangesetStatus() === changesetStatus() ) {
[7977] Fix | Delete
if ( changesetDate.get() !== selectedChangesetDate.get() ) {
[7978] Fix | Delete
saveBtn.val( api.l10n.schedule );
[7979] Fix | Delete
} else {
[7980] Fix | Delete
saveBtn.val( api.l10n.scheduled );
[7981] Fix | Delete
}
[7982] Fix | Delete
} else {
[7983] Fix | Delete
saveBtn.val( api.l10n.schedule );
[7984] Fix | Delete
}
[7985] Fix | Delete
} else if ( api.settings.changeset.currentUserCanPublish ) {
[7986] Fix | Delete
saveBtn.val( api.l10n.publish );
[7987] Fix | Delete
}
[7988] Fix | Delete
closeBtn.find( '.screen-reader-text' ).text( api.l10n.cancel );
[7989] Fix | Delete
}
[7990] Fix | Delete
[7991] Fix | Delete
/*
[7992] Fix | Delete
* Save (publish) button should be enabled if saving is not currently happening,
[7993] Fix | Delete
* and if the theme is not active or the changeset exists but is not published.
[7994] Fix | Delete
*/
[7995] Fix | Delete
canSave = ! saving() && ! trashing() && ! changesetLocked() && ( ! activated() || ! saved() || ( changesetStatus() !== selectedChangesetStatus() && '' !== changesetStatus() ) || ( 'future' === selectedChangesetStatus() && changesetDate.get() !== selectedChangesetDate.get() ) );
[7996] Fix | Delete
[7997] Fix | Delete
saveBtn.prop( 'disabled', ! canSave );
[7998] Fix | Delete
});
[7999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function