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
} );
[7000] Fix | Delete
[7001] Fix | Delete
// Focus on the first invalid control.
[7002] Fix | Delete
if ( ! wasFocused && ! _.isEmpty( invalidSettingControls ) ) {
[7003] Fix | Delete
_.values( invalidSettingControls )[0][0].focus();
[7004] Fix | Delete
}
[7005] Fix | Delete
}
[7006] Fix | Delete
};
[7007] Fix | Delete
[7008] Fix | Delete
/**
[7009] Fix | Delete
* Find all controls associated with the given settings.
[7010] Fix | Delete
*
[7011] Fix | Delete
* @alias wp.customize.findControlsForSettings
[7012] Fix | Delete
*
[7013] Fix | Delete
* @since 4.6.0
[7014] Fix | Delete
* @param {string[]} settingIds Setting IDs.
[7015] Fix | Delete
* @return {Object<string, wp.customize.Control>} Mapping setting ids to arrays of controls.
[7016] Fix | Delete
*/
[7017] Fix | Delete
api.findControlsForSettings = function findControlsForSettings( settingIds ) {
[7018] Fix | Delete
var controls = {}, settingControls;
[7019] Fix | Delete
_.each( _.unique( settingIds ), function( settingId ) {
[7020] Fix | Delete
var setting = api( settingId );
[7021] Fix | Delete
if ( setting ) {
[7022] Fix | Delete
settingControls = setting.findControls();
[7023] Fix | Delete
if ( settingControls && settingControls.length > 0 ) {
[7024] Fix | Delete
controls[ settingId ] = settingControls;
[7025] Fix | Delete
}
[7026] Fix | Delete
}
[7027] Fix | Delete
} );
[7028] Fix | Delete
return controls;
[7029] Fix | Delete
};
[7030] Fix | Delete
[7031] Fix | Delete
/**
[7032] Fix | Delete
* Sort panels, sections, controls by priorities. Hide empty sections and panels.
[7033] Fix | Delete
*
[7034] Fix | Delete
* @alias wp.customize.reflowPaneContents
[7035] Fix | Delete
*
[7036] Fix | Delete
* @since 4.1.0
[7037] Fix | Delete
*/
[7038] Fix | Delete
api.reflowPaneContents = _.bind( function () {
[7039] Fix | Delete
[7040] Fix | Delete
var appendContainer, activeElement, rootHeadContainers, rootNodes = [], wasReflowed = false;
[7041] Fix | Delete
[7042] Fix | Delete
if ( document.activeElement ) {
[7043] Fix | Delete
activeElement = $( document.activeElement );
[7044] Fix | Delete
}
[7045] Fix | Delete
[7046] Fix | Delete
// Sort the sections within each panel.
[7047] Fix | Delete
api.panel.each( function ( panel ) {
[7048] Fix | Delete
if ( 'themes' === panel.id ) {
[7049] Fix | Delete
return; // Don't reflow theme sections, as doing so moves them after the themes container.
[7050] Fix | Delete
}
[7051] Fix | Delete
[7052] Fix | Delete
var sections = panel.sections(),
[7053] Fix | Delete
sectionHeadContainers = _.pluck( sections, 'headContainer' );
[7054] Fix | Delete
rootNodes.push( panel );
[7055] Fix | Delete
appendContainer = ( panel.contentContainer.is( 'ul' ) ) ? panel.contentContainer : panel.contentContainer.find( 'ul:first' );
[7056] Fix | Delete
if ( ! api.utils.areElementListsEqual( sectionHeadContainers, appendContainer.children( '[id]' ) ) ) {
[7057] Fix | Delete
_( sections ).each( function ( section ) {
[7058] Fix | Delete
appendContainer.append( section.headContainer );
[7059] Fix | Delete
} );
[7060] Fix | Delete
wasReflowed = true;
[7061] Fix | Delete
}
[7062] Fix | Delete
} );
[7063] Fix | Delete
[7064] Fix | Delete
// Sort the controls within each section.
[7065] Fix | Delete
api.section.each( function ( section ) {
[7066] Fix | Delete
var controls = section.controls(),
[7067] Fix | Delete
controlContainers = _.pluck( controls, 'container' );
[7068] Fix | Delete
if ( ! section.panel() ) {
[7069] Fix | Delete
rootNodes.push( section );
[7070] Fix | Delete
}
[7071] Fix | Delete
appendContainer = ( section.contentContainer.is( 'ul' ) ) ? section.contentContainer : section.contentContainer.find( 'ul:first' );
[7072] Fix | Delete
if ( ! api.utils.areElementListsEqual( controlContainers, appendContainer.children( '[id]' ) ) ) {
[7073] Fix | Delete
_( controls ).each( function ( control ) {
[7074] Fix | Delete
appendContainer.append( control.container );
[7075] Fix | Delete
} );
[7076] Fix | Delete
wasReflowed = true;
[7077] Fix | Delete
}
[7078] Fix | Delete
} );
[7079] Fix | Delete
[7080] Fix | Delete
// Sort the root panels and sections.
[7081] Fix | Delete
rootNodes.sort( api.utils.prioritySort );
[7082] Fix | Delete
rootHeadContainers = _.pluck( rootNodes, 'headContainer' );
[7083] Fix | Delete
appendContainer = $( '#customize-theme-controls .customize-pane-parent' ); // @todo This should be defined elsewhere, and to be configurable.
[7084] Fix | Delete
if ( ! api.utils.areElementListsEqual( rootHeadContainers, appendContainer.children() ) ) {
[7085] Fix | Delete
_( rootNodes ).each( function ( rootNode ) {
[7086] Fix | Delete
appendContainer.append( rootNode.headContainer );
[7087] Fix | Delete
} );
[7088] Fix | Delete
wasReflowed = true;
[7089] Fix | Delete
}
[7090] Fix | Delete
[7091] Fix | Delete
// Now re-trigger the active Value callbacks so that the panels and sections can decide whether they can be rendered.
[7092] Fix | Delete
api.panel.each( function ( panel ) {
[7093] Fix | Delete
var value = panel.active();
[7094] Fix | Delete
panel.active.callbacks.fireWith( panel.active, [ value, value ] );
[7095] Fix | Delete
} );
[7096] Fix | Delete
api.section.each( function ( section ) {
[7097] Fix | Delete
var value = section.active();
[7098] Fix | Delete
section.active.callbacks.fireWith( section.active, [ value, value ] );
[7099] Fix | Delete
} );
[7100] Fix | Delete
[7101] Fix | Delete
// Restore focus if there was a reflow and there was an active (focused) element.
[7102] Fix | Delete
if ( wasReflowed && activeElement ) {
[7103] Fix | Delete
activeElement.trigger( 'focus' );
[7104] Fix | Delete
}
[7105] Fix | Delete
api.trigger( 'pane-contents-reflowed' );
[7106] Fix | Delete
}, api );
[7107] Fix | Delete
[7108] Fix | Delete
// Define state values.
[7109] Fix | Delete
api.state = new api.Values();
[7110] Fix | Delete
_.each( [
[7111] Fix | Delete
'saved',
[7112] Fix | Delete
'saving',
[7113] Fix | Delete
'trashing',
[7114] Fix | Delete
'activated',
[7115] Fix | Delete
'processing',
[7116] Fix | Delete
'paneVisible',
[7117] Fix | Delete
'expandedPanel',
[7118] Fix | Delete
'expandedSection',
[7119] Fix | Delete
'changesetDate',
[7120] Fix | Delete
'selectedChangesetDate',
[7121] Fix | Delete
'changesetStatus',
[7122] Fix | Delete
'selectedChangesetStatus',
[7123] Fix | Delete
'remainingTimeToPublish',
[7124] Fix | Delete
'previewerAlive',
[7125] Fix | Delete
'editShortcutVisibility',
[7126] Fix | Delete
'changesetLocked',
[7127] Fix | Delete
'previewedDevice'
[7128] Fix | Delete
], function( name ) {
[7129] Fix | Delete
api.state.create( name );
[7130] Fix | Delete
});
[7131] Fix | Delete
[7132] Fix | Delete
$( function() {
[7133] Fix | Delete
api.settings = window._wpCustomizeSettings;
[7134] Fix | Delete
api.l10n = window._wpCustomizeControlsL10n;
[7135] Fix | Delete
[7136] Fix | Delete
// Check if we can run the Customizer.
[7137] Fix | Delete
if ( ! api.settings ) {
[7138] Fix | Delete
return;
[7139] Fix | Delete
}
[7140] Fix | Delete
[7141] Fix | Delete
// Bail if any incompatibilities are found.
[7142] Fix | Delete
if ( ! $.support.postMessage || ( ! $.support.cors && api.settings.isCrossDomain ) ) {
[7143] Fix | Delete
return;
[7144] Fix | Delete
}
[7145] Fix | Delete
[7146] Fix | Delete
if ( null === api.PreviewFrame.prototype.sensitivity ) {
[7147] Fix | Delete
api.PreviewFrame.prototype.sensitivity = api.settings.timeouts.previewFrameSensitivity;
[7148] Fix | Delete
}
[7149] Fix | Delete
if ( null === api.Previewer.prototype.refreshBuffer ) {
[7150] Fix | Delete
api.Previewer.prototype.refreshBuffer = api.settings.timeouts.windowRefresh;
[7151] Fix | Delete
}
[7152] Fix | Delete
[7153] Fix | Delete
var parent,
[7154] Fix | Delete
body = $( document.body ),
[7155] Fix | Delete
overlay = body.children( '.wp-full-overlay' ),
[7156] Fix | Delete
title = $( '#customize-info .panel-title.site-title' ),
[7157] Fix | Delete
closeBtn = $( '.customize-controls-close' ),
[7158] Fix | Delete
saveBtn = $( '#save' ),
[7159] Fix | Delete
btnWrapper = $( '#customize-save-button-wrapper' ),
[7160] Fix | Delete
publishSettingsBtn = $( '#publish-settings' ),
[7161] Fix | Delete
footerActions = $( '#customize-footer-actions' );
[7162] Fix | Delete
[7163] Fix | Delete
// Add publish settings section in JS instead of PHP since the Customizer depends on it to function.
[7164] Fix | Delete
api.bind( 'ready', function() {
[7165] Fix | Delete
api.section.add( new api.OuterSection( 'publish_settings', {
[7166] Fix | Delete
title: api.l10n.publishSettings,
[7167] Fix | Delete
priority: 0,
[7168] Fix | Delete
active: api.settings.theme.active
[7169] Fix | Delete
} ) );
[7170] Fix | Delete
} );
[7171] Fix | Delete
[7172] Fix | Delete
// Set up publish settings section and its controls.
[7173] Fix | Delete
api.section( 'publish_settings', function( section ) {
[7174] Fix | Delete
var updateButtonsState, trashControl, updateSectionActive, isSectionActive, statusControl, dateControl, toggleDateControl, publishWhenTime, pollInterval, updateTimeArrivedPoller, cancelScheduleButtonReminder, timeArrivedPollingInterval = 1000;
[7175] Fix | Delete
[7176] Fix | Delete
trashControl = new api.Control( 'trash_changeset', {
[7177] Fix | Delete
type: 'button',
[7178] Fix | Delete
section: section.id,
[7179] Fix | Delete
priority: 30,
[7180] Fix | Delete
input_attrs: {
[7181] Fix | Delete
'class': 'button-link button-link-delete',
[7182] Fix | Delete
value: api.l10n.discardChanges
[7183] Fix | Delete
}
[7184] Fix | Delete
} );
[7185] Fix | Delete
api.control.add( trashControl );
[7186] Fix | Delete
trashControl.deferred.embedded.done( function() {
[7187] Fix | Delete
trashControl.container.find( '.button-link' ).on( 'click', function() {
[7188] Fix | Delete
if ( confirm( api.l10n.trashConfirm ) ) {
[7189] Fix | Delete
wp.customize.previewer.trash();
[7190] Fix | Delete
}
[7191] Fix | Delete
} );
[7192] Fix | Delete
} );
[7193] Fix | Delete
[7194] Fix | Delete
api.control.add( new api.PreviewLinkControl( 'changeset_preview_link', {
[7195] Fix | Delete
section: section.id,
[7196] Fix | Delete
priority: 100
[7197] Fix | Delete
} ) );
[7198] Fix | Delete
[7199] Fix | Delete
/**
[7200] Fix | Delete
* Return whether the publish settings section should be active.
[7201] Fix | Delete
*
[7202] Fix | Delete
* @return {boolean} Is section active.
[7203] Fix | Delete
*/
[7204] Fix | Delete
isSectionActive = function() {
[7205] Fix | Delete
if ( ! api.state( 'activated' ).get() ) {
[7206] Fix | Delete
return false;
[7207] Fix | Delete
}
[7208] Fix | Delete
if ( api.state( 'trashing' ).get() || 'trash' === api.state( 'changesetStatus' ).get() ) {
[7209] Fix | Delete
return false;
[7210] Fix | Delete
}
[7211] Fix | Delete
if ( '' === api.state( 'changesetStatus' ).get() && api.state( 'saved' ).get() ) {
[7212] Fix | Delete
return false;
[7213] Fix | Delete
}
[7214] Fix | Delete
return true;
[7215] Fix | Delete
};
[7216] Fix | Delete
[7217] Fix | Delete
// Make sure publish settings are not available while the theme is not active and the customizer is in a published state.
[7218] Fix | Delete
section.active.validate = isSectionActive;
[7219] Fix | Delete
updateSectionActive = function() {
[7220] Fix | Delete
section.active.set( isSectionActive() );
[7221] Fix | Delete
};
[7222] Fix | Delete
api.state( 'activated' ).bind( updateSectionActive );
[7223] Fix | Delete
api.state( 'trashing' ).bind( updateSectionActive );
[7224] Fix | Delete
api.state( 'saved' ).bind( updateSectionActive );
[7225] Fix | Delete
api.state( 'changesetStatus' ).bind( updateSectionActive );
[7226] Fix | Delete
updateSectionActive();
[7227] Fix | Delete
[7228] Fix | Delete
// Bind visibility of the publish settings button to whether the section is active.
[7229] Fix | Delete
updateButtonsState = function() {
[7230] Fix | Delete
publishSettingsBtn.toggle( section.active.get() );
[7231] Fix | Delete
saveBtn.toggleClass( 'has-next-sibling', section.active.get() );
[7232] Fix | Delete
};
[7233] Fix | Delete
updateButtonsState();
[7234] Fix | Delete
section.active.bind( updateButtonsState );
[7235] Fix | Delete
[7236] Fix | Delete
function highlightScheduleButton() {
[7237] Fix | Delete
if ( ! cancelScheduleButtonReminder ) {
[7238] Fix | Delete
cancelScheduleButtonReminder = api.utils.highlightButton( btnWrapper, {
[7239] Fix | Delete
delay: 1000,
[7240] Fix | Delete
[7241] Fix | Delete
/*
[7242] Fix | Delete
* Only abort the reminder when the save button is focused.
[7243] Fix | Delete
* If the user clicks the settings button to toggle the
[7244] Fix | Delete
* settings closed, we'll still remind them.
[7245] Fix | Delete
*/
[7246] Fix | Delete
focusTarget: saveBtn
[7247] Fix | Delete
} );
[7248] Fix | Delete
}
[7249] Fix | Delete
}
[7250] Fix | Delete
function cancelHighlightScheduleButton() {
[7251] Fix | Delete
if ( cancelScheduleButtonReminder ) {
[7252] Fix | Delete
cancelScheduleButtonReminder();
[7253] Fix | Delete
cancelScheduleButtonReminder = null;
[7254] Fix | Delete
}
[7255] Fix | Delete
}
[7256] Fix | Delete
api.state( 'selectedChangesetStatus' ).bind( cancelHighlightScheduleButton );
[7257] Fix | Delete
[7258] Fix | Delete
section.contentContainer.find( '.customize-action' ).text( api.l10n.updating );
[7259] Fix | Delete
section.contentContainer.find( '.customize-section-back' ).removeAttr( 'tabindex' );
[7260] Fix | Delete
publishSettingsBtn.prop( 'disabled', false );
[7261] Fix | Delete
[7262] Fix | Delete
publishSettingsBtn.on( 'click', function( event ) {
[7263] Fix | Delete
event.preventDefault();
[7264] Fix | Delete
section.expanded.set( ! section.expanded.get() );
[7265] Fix | Delete
} );
[7266] Fix | Delete
[7267] Fix | Delete
section.expanded.bind( function( isExpanded ) {
[7268] Fix | Delete
var defaultChangesetStatus;
[7269] Fix | Delete
publishSettingsBtn.attr( 'aria-expanded', String( isExpanded ) );
[7270] Fix | Delete
publishSettingsBtn.toggleClass( 'active', isExpanded );
[7271] Fix | Delete
[7272] Fix | Delete
if ( isExpanded ) {
[7273] Fix | Delete
cancelHighlightScheduleButton();
[7274] Fix | Delete
return;
[7275] Fix | Delete
}
[7276] Fix | Delete
[7277] Fix | Delete
defaultChangesetStatus = api.state( 'changesetStatus' ).get();
[7278] Fix | Delete
if ( '' === defaultChangesetStatus || 'auto-draft' === defaultChangesetStatus ) {
[7279] Fix | Delete
defaultChangesetStatus = 'publish';
[7280] Fix | Delete
}
[7281] Fix | Delete
[7282] Fix | Delete
if ( api.state( 'selectedChangesetStatus' ).get() !== defaultChangesetStatus ) {
[7283] Fix | Delete
highlightScheduleButton();
[7284] Fix | Delete
} else if ( 'future' === api.state( 'selectedChangesetStatus' ).get() && api.state( 'selectedChangesetDate' ).get() !== api.state( 'changesetDate' ).get() ) {
[7285] Fix | Delete
highlightScheduleButton();
[7286] Fix | Delete
}
[7287] Fix | Delete
} );
[7288] Fix | Delete
[7289] Fix | Delete
statusControl = new api.Control( 'changeset_status', {
[7290] Fix | Delete
priority: 10,
[7291] Fix | Delete
type: 'radio',
[7292] Fix | Delete
section: 'publish_settings',
[7293] Fix | Delete
setting: api.state( 'selectedChangesetStatus' ),
[7294] Fix | Delete
templateId: 'customize-selected-changeset-status-control',
[7295] Fix | Delete
label: api.l10n.action,
[7296] Fix | Delete
choices: api.settings.changeset.statusChoices
[7297] Fix | Delete
} );
[7298] Fix | Delete
api.control.add( statusControl );
[7299] Fix | Delete
[7300] Fix | Delete
dateControl = new api.DateTimeControl( 'changeset_scheduled_date', {
[7301] Fix | Delete
priority: 20,
[7302] Fix | Delete
section: 'publish_settings',
[7303] Fix | Delete
setting: api.state( 'selectedChangesetDate' ),
[7304] Fix | Delete
minYear: ( new Date() ).getFullYear(),
[7305] Fix | Delete
allowPastDate: false,
[7306] Fix | Delete
includeTime: true,
[7307] Fix | Delete
twelveHourFormat: /a/i.test( api.settings.timeFormat ),
[7308] Fix | Delete
description: api.l10n.scheduleDescription
[7309] Fix | Delete
} );
[7310] Fix | Delete
dateControl.notifications.alt = true;
[7311] Fix | Delete
api.control.add( dateControl );
[7312] Fix | Delete
[7313] Fix | Delete
publishWhenTime = function() {
[7314] Fix | Delete
api.state( 'selectedChangesetStatus' ).set( 'publish' );
[7315] Fix | Delete
api.previewer.save();
[7316] Fix | Delete
};
[7317] Fix | Delete
[7318] Fix | Delete
// Start countdown for when the dateTime arrives, or clear interval when it is .
[7319] Fix | Delete
updateTimeArrivedPoller = function() {
[7320] Fix | Delete
var shouldPoll = (
[7321] Fix | Delete
'future' === api.state( 'changesetStatus' ).get() &&
[7322] Fix | Delete
'future' === api.state( 'selectedChangesetStatus' ).get() &&
[7323] Fix | Delete
api.state( 'changesetDate' ).get() &&
[7324] Fix | Delete
api.state( 'selectedChangesetDate' ).get() === api.state( 'changesetDate' ).get() &&
[7325] Fix | Delete
api.utils.getRemainingTime( api.state( 'changesetDate' ).get() ) >= 0
[7326] Fix | Delete
);
[7327] Fix | Delete
[7328] Fix | Delete
if ( shouldPoll && ! pollInterval ) {
[7329] Fix | Delete
pollInterval = setInterval( function() {
[7330] Fix | Delete
var remainingTime = api.utils.getRemainingTime( api.state( 'changesetDate' ).get() );
[7331] Fix | Delete
api.state( 'remainingTimeToPublish' ).set( remainingTime );
[7332] Fix | Delete
if ( remainingTime <= 0 ) {
[7333] Fix | Delete
clearInterval( pollInterval );
[7334] Fix | Delete
pollInterval = 0;
[7335] Fix | Delete
publishWhenTime();
[7336] Fix | Delete
}
[7337] Fix | Delete
}, timeArrivedPollingInterval );
[7338] Fix | Delete
} else if ( ! shouldPoll && pollInterval ) {
[7339] Fix | Delete
clearInterval( pollInterval );
[7340] Fix | Delete
pollInterval = 0;
[7341] Fix | Delete
}
[7342] Fix | Delete
};
[7343] Fix | Delete
[7344] Fix | Delete
api.state( 'changesetDate' ).bind( updateTimeArrivedPoller );
[7345] Fix | Delete
api.state( 'selectedChangesetDate' ).bind( updateTimeArrivedPoller );
[7346] Fix | Delete
api.state( 'changesetStatus' ).bind( updateTimeArrivedPoller );
[7347] Fix | Delete
api.state( 'selectedChangesetStatus' ).bind( updateTimeArrivedPoller );
[7348] Fix | Delete
updateTimeArrivedPoller();
[7349] Fix | Delete
[7350] Fix | Delete
// Ensure dateControl only appears when selected status is future.
[7351] Fix | Delete
dateControl.active.validate = function() {
[7352] Fix | Delete
return 'future' === api.state( 'selectedChangesetStatus' ).get();
[7353] Fix | Delete
};
[7354] Fix | Delete
toggleDateControl = function( value ) {
[7355] Fix | Delete
dateControl.active.set( 'future' === value );
[7356] Fix | Delete
};
[7357] Fix | Delete
toggleDateControl( api.state( 'selectedChangesetStatus' ).get() );
[7358] Fix | Delete
api.state( 'selectedChangesetStatus' ).bind( toggleDateControl );
[7359] Fix | Delete
[7360] Fix | Delete
// Show notification on date control when status is future but it isn't a future date.
[7361] Fix | Delete
api.state( 'saving' ).bind( function( isSaving ) {
[7362] Fix | Delete
if ( isSaving && 'future' === api.state( 'selectedChangesetStatus' ).get() ) {
[7363] Fix | Delete
dateControl.toggleFutureDateNotification( ! dateControl.isFutureDate() );
[7364] Fix | Delete
}
[7365] Fix | Delete
} );
[7366] Fix | Delete
} );
[7367] Fix | Delete
[7368] Fix | Delete
// Prevent the form from saving when enter is pressed on an input or select element.
[7369] Fix | Delete
$('#customize-controls').on( 'keydown', function( e ) {
[7370] Fix | Delete
var isEnter = ( 13 === e.which ),
[7371] Fix | Delete
$el = $( e.target );
[7372] Fix | Delete
[7373] Fix | Delete
if ( isEnter && ( $el.is( 'input:not([type=button])' ) || $el.is( 'select' ) ) ) {
[7374] Fix | Delete
e.preventDefault();
[7375] Fix | Delete
}
[7376] Fix | Delete
});
[7377] Fix | Delete
[7378] Fix | Delete
// Expand/Collapse the main customizer customize info.
[7379] Fix | Delete
$( '.customize-info' ).find( '> .accordion-section-title .customize-help-toggle' ).on( 'click', function() {
[7380] Fix | Delete
var section = $( this ).closest( '.accordion-section' ),
[7381] Fix | Delete
content = section.find( '.customize-panel-description:first' );
[7382] Fix | Delete
[7383] Fix | Delete
if ( section.hasClass( 'cannot-expand' ) ) {
[7384] Fix | Delete
return;
[7385] Fix | Delete
}
[7386] Fix | Delete
[7387] Fix | Delete
if ( section.hasClass( 'open' ) ) {
[7388] Fix | Delete
section.toggleClass( 'open' );
[7389] Fix | Delete
content.slideUp( api.Panel.prototype.defaultExpandedArguments.duration, function() {
[7390] Fix | Delete
content.trigger( 'toggled' );
[7391] Fix | Delete
} );
[7392] Fix | Delete
$( this ).attr( 'aria-expanded', false );
[7393] Fix | Delete
} else {
[7394] Fix | Delete
content.slideDown( api.Panel.prototype.defaultExpandedArguments.duration, function() {
[7395] Fix | Delete
content.trigger( 'toggled' );
[7396] Fix | Delete
} );
[7397] Fix | Delete
section.toggleClass( 'open' );
[7398] Fix | Delete
$( this ).attr( 'aria-expanded', true );
[7399] Fix | Delete
}
[7400] Fix | Delete
});
[7401] Fix | Delete
[7402] Fix | Delete
/**
[7403] Fix | Delete
* Initialize Previewer
[7404] Fix | Delete
*
[7405] Fix | Delete
* @alias wp.customize.previewer
[7406] Fix | Delete
*/
[7407] Fix | Delete
api.previewer = new api.Previewer({
[7408] Fix | Delete
container: '#customize-preview',
[7409] Fix | Delete
form: '#customize-controls',
[7410] Fix | Delete
previewUrl: api.settings.url.preview,
[7411] Fix | Delete
allowedUrls: api.settings.url.allowed
[7412] Fix | Delete
},/** @lends wp.customize.previewer */{
[7413] Fix | Delete
[7414] Fix | Delete
nonce: api.settings.nonce,
[7415] Fix | Delete
[7416] Fix | Delete
/**
[7417] Fix | Delete
* Build the query to send along with the Preview request.
[7418] Fix | Delete
*
[7419] Fix | Delete
* @since 3.4.0
[7420] Fix | Delete
* @since 4.7.0 Added options param.
[7421] Fix | Delete
* @access public
[7422] Fix | Delete
*
[7423] Fix | Delete
* @param {Object} [options] Options.
[7424] Fix | Delete
* @param {boolean} [options.excludeCustomizedSaved=false] Exclude saved settings in customized response (values pending writing to changeset).
[7425] Fix | Delete
* @return {Object} Query vars.
[7426] Fix | Delete
*/
[7427] Fix | Delete
query: function( options ) {
[7428] Fix | Delete
var queryVars = {
[7429] Fix | Delete
wp_customize: 'on',
[7430] Fix | Delete
customize_theme: api.settings.theme.stylesheet,
[7431] Fix | Delete
nonce: this.nonce.preview,
[7432] Fix | Delete
customize_changeset_uuid: api.settings.changeset.uuid
[7433] Fix | Delete
};
[7434] Fix | Delete
if ( api.settings.changeset.autosaved || ! api.state( 'saved' ).get() ) {
[7435] Fix | Delete
queryVars.customize_autosaved = 'on';
[7436] Fix | Delete
}
[7437] Fix | Delete
[7438] Fix | Delete
/*
[7439] Fix | Delete
* Exclude customized data if requested especially for calls to requestChangesetUpdate.
[7440] Fix | Delete
* Changeset updates are differential and so it is a performance waste to send all of
[7441] Fix | Delete
* the dirty settings with each update.
[7442] Fix | Delete
*/
[7443] Fix | Delete
queryVars.customized = JSON.stringify( api.dirtyValues( {
[7444] Fix | Delete
unsaved: options && options.excludeCustomizedSaved
[7445] Fix | Delete
} ) );
[7446] Fix | Delete
[7447] Fix | Delete
return queryVars;
[7448] Fix | Delete
},
[7449] Fix | Delete
[7450] Fix | Delete
/**
[7451] Fix | Delete
* Save (and publish) the customizer changeset.
[7452] Fix | Delete
*
[7453] Fix | Delete
* Updates to the changeset are transactional. If any of the settings
[7454] Fix | Delete
* are invalid then none of them will be written into the changeset.
[7455] Fix | Delete
* A revision will be made for the changeset post if revisions support
[7456] Fix | Delete
* has been added to the post type.
[7457] Fix | Delete
*
[7458] Fix | Delete
* @since 3.4.0
[7459] Fix | Delete
* @since 4.7.0 Added args param and return value.
[7460] Fix | Delete
*
[7461] Fix | Delete
* @param {Object} [args] Args.
[7462] Fix | Delete
* @param {string} [args.status=publish] Status.
[7463] Fix | Delete
* @param {string} [args.date] Date, in local time in MySQL format.
[7464] Fix | Delete
* @param {string} [args.title] Title
[7465] Fix | Delete
* @return {jQuery.promise} Promise.
[7466] Fix | Delete
*/
[7467] Fix | Delete
save: function( args ) {
[7468] Fix | Delete
var previewer = this,
[7469] Fix | Delete
deferred = $.Deferred(),
[7470] Fix | Delete
changesetStatus = api.state( 'selectedChangesetStatus' ).get(),
[7471] Fix | Delete
selectedChangesetDate = api.state( 'selectedChangesetDate' ).get(),
[7472] Fix | Delete
processing = api.state( 'processing' ),
[7473] Fix | Delete
submitWhenDoneProcessing,
[7474] Fix | Delete
submit,
[7475] Fix | Delete
modifiedWhileSaving = {},
[7476] Fix | Delete
invalidSettings = [],
[7477] Fix | Delete
invalidControls = [],
[7478] Fix | Delete
invalidSettingLessControls = [];
[7479] Fix | Delete
[7480] Fix | Delete
if ( args && args.status ) {
[7481] Fix | Delete
changesetStatus = args.status;
[7482] Fix | Delete
}
[7483] Fix | Delete
[7484] Fix | Delete
if ( api.state( 'saving' ).get() ) {
[7485] Fix | Delete
deferred.reject( 'already_saving' );
[7486] Fix | Delete
deferred.promise();
[7487] Fix | Delete
}
[7488] Fix | Delete
[7489] Fix | Delete
api.state( 'saving' ).set( true );
[7490] Fix | Delete
[7491] Fix | Delete
function captureSettingModifiedDuringSave( setting ) {
[7492] Fix | Delete
modifiedWhileSaving[ setting.id ] = true;
[7493] Fix | Delete
}
[7494] Fix | Delete
[7495] Fix | Delete
submit = function () {
[7496] Fix | Delete
var request, query, settingInvalidities = {}, latestRevision = api._latestRevision, errorCode = 'client_side_error';
[7497] Fix | Delete
[7498] Fix | Delete
api.bind( 'change', captureSettingModifiedDuringSave );
[7499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function