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
* Update error notice.
[5500] Fix | Delete
*
[5501] Fix | Delete
* @since 4.9.0
[5502] Fix | Delete
* @param {Array} errorAnnotations - Error annotations.
[5503] Fix | Delete
* @return {void}
[5504] Fix | Delete
*/
[5505] Fix | Delete
onUpdateErrorNotice: function onUpdateErrorNotice( errorAnnotations ) {
[5506] Fix | Delete
var control = this, message;
[5507] Fix | Delete
control.setting.notifications.remove( 'csslint_error' );
[5508] Fix | Delete
[5509] Fix | Delete
if ( 0 !== errorAnnotations.length ) {
[5510] Fix | Delete
if ( 1 === errorAnnotations.length ) {
[5511] Fix | Delete
message = api.l10n.customCssError.singular.replace( '%d', '1' );
[5512] Fix | Delete
} else {
[5513] Fix | Delete
message = api.l10n.customCssError.plural.replace( '%d', String( errorAnnotations.length ) );
[5514] Fix | Delete
}
[5515] Fix | Delete
control.setting.notifications.add( new api.Notification( 'csslint_error', {
[5516] Fix | Delete
message: message,
[5517] Fix | Delete
type: 'error'
[5518] Fix | Delete
} ) );
[5519] Fix | Delete
}
[5520] Fix | Delete
},
[5521] Fix | Delete
[5522] Fix | Delete
/**
[5523] Fix | Delete
* Initialize plain-textarea editor when syntax highlighting is disabled.
[5524] Fix | Delete
*
[5525] Fix | Delete
* @since 4.9.0
[5526] Fix | Delete
* @return {void}
[5527] Fix | Delete
*/
[5528] Fix | Delete
initPlainTextareaEditor: function() {
[5529] Fix | Delete
var control = this, $textarea = control.container.find( 'textarea' ), textarea = $textarea[0];
[5530] Fix | Delete
[5531] Fix | Delete
$textarea.on( 'blur', function onBlur() {
[5532] Fix | Delete
$textarea.data( 'next-tab-blurs', false );
[5533] Fix | Delete
} );
[5534] Fix | Delete
[5535] Fix | Delete
$textarea.on( 'keydown', function onKeydown( event ) {
[5536] Fix | Delete
var selectionStart, selectionEnd, value, tabKeyCode = 9, escKeyCode = 27;
[5537] Fix | Delete
[5538] Fix | Delete
if ( escKeyCode === event.keyCode ) {
[5539] Fix | Delete
if ( ! $textarea.data( 'next-tab-blurs' ) ) {
[5540] Fix | Delete
$textarea.data( 'next-tab-blurs', true );
[5541] Fix | Delete
event.stopPropagation(); // Prevent collapsing the section.
[5542] Fix | Delete
}
[5543] Fix | Delete
return;
[5544] Fix | Delete
}
[5545] Fix | Delete
[5546] Fix | Delete
// Short-circuit if tab key is not being pressed or if a modifier key *is* being pressed.
[5547] Fix | Delete
if ( tabKeyCode !== event.keyCode || event.ctrlKey || event.altKey || event.shiftKey ) {
[5548] Fix | Delete
return;
[5549] Fix | Delete
}
[5550] Fix | Delete
[5551] Fix | Delete
// Prevent capturing Tab characters if Esc was pressed.
[5552] Fix | Delete
if ( $textarea.data( 'next-tab-blurs' ) ) {
[5553] Fix | Delete
return;
[5554] Fix | Delete
}
[5555] Fix | Delete
[5556] Fix | Delete
selectionStart = textarea.selectionStart;
[5557] Fix | Delete
selectionEnd = textarea.selectionEnd;
[5558] Fix | Delete
value = textarea.value;
[5559] Fix | Delete
[5560] Fix | Delete
if ( selectionStart >= 0 ) {
[5561] Fix | Delete
textarea.value = value.substring( 0, selectionStart ).concat( '\t', value.substring( selectionEnd ) );
[5562] Fix | Delete
$textarea.selectionStart = textarea.selectionEnd = selectionStart + 1;
[5563] Fix | Delete
}
[5564] Fix | Delete
[5565] Fix | Delete
event.stopPropagation();
[5566] Fix | Delete
event.preventDefault();
[5567] Fix | Delete
});
[5568] Fix | Delete
[5569] Fix | Delete
control.deferred.codemirror.rejectWith( control );
[5570] Fix | Delete
}
[5571] Fix | Delete
});
[5572] Fix | Delete
[5573] Fix | Delete
/**
[5574] Fix | Delete
* Class wp.customize.DateTimeControl.
[5575] Fix | Delete
*
[5576] Fix | Delete
* @since 4.9.0
[5577] Fix | Delete
* @class wp.customize.DateTimeControl
[5578] Fix | Delete
* @augments wp.customize.Control
[5579] Fix | Delete
*/
[5580] Fix | Delete
api.DateTimeControl = api.Control.extend(/** @lends wp.customize.DateTimeControl.prototype */{
[5581] Fix | Delete
[5582] Fix | Delete
/**
[5583] Fix | Delete
* Initialize behaviors.
[5584] Fix | Delete
*
[5585] Fix | Delete
* @since 4.9.0
[5586] Fix | Delete
* @return {void}
[5587] Fix | Delete
*/
[5588] Fix | Delete
ready: function ready() {
[5589] Fix | Delete
var control = this;
[5590] Fix | Delete
[5591] Fix | Delete
control.inputElements = {};
[5592] Fix | Delete
control.invalidDate = false;
[5593] Fix | Delete
[5594] Fix | Delete
_.bindAll( control, 'populateSetting', 'updateDaysForMonth', 'populateDateInputs' );
[5595] Fix | Delete
[5596] Fix | Delete
if ( ! control.setting ) {
[5597] Fix | Delete
throw new Error( 'Missing setting' );
[5598] Fix | Delete
}
[5599] Fix | Delete
[5600] Fix | Delete
control.container.find( '.date-input' ).each( function() {
[5601] Fix | Delete
var input = $( this ), component, element;
[5602] Fix | Delete
component = input.data( 'component' );
[5603] Fix | Delete
element = new api.Element( input );
[5604] Fix | Delete
control.inputElements[ component ] = element;
[5605] Fix | Delete
control.elements.push( element );
[5606] Fix | Delete
[5607] Fix | Delete
// Add invalid date error once user changes (and has blurred the input).
[5608] Fix | Delete
input.on( 'change', function() {
[5609] Fix | Delete
if ( control.invalidDate ) {
[5610] Fix | Delete
control.notifications.add( new api.Notification( 'invalid_date', {
[5611] Fix | Delete
message: api.l10n.invalidDate
[5612] Fix | Delete
} ) );
[5613] Fix | Delete
}
[5614] Fix | Delete
} );
[5615] Fix | Delete
[5616] Fix | Delete
// Remove the error immediately after validity change.
[5617] Fix | Delete
input.on( 'input', _.debounce( function() {
[5618] Fix | Delete
if ( ! control.invalidDate ) {
[5619] Fix | Delete
control.notifications.remove( 'invalid_date' );
[5620] Fix | Delete
}
[5621] Fix | Delete
} ) );
[5622] Fix | Delete
[5623] Fix | Delete
// Add zero-padding when blurring field.
[5624] Fix | Delete
input.on( 'blur', _.debounce( function() {
[5625] Fix | Delete
if ( ! control.invalidDate ) {
[5626] Fix | Delete
control.populateDateInputs();
[5627] Fix | Delete
}
[5628] Fix | Delete
} ) );
[5629] Fix | Delete
} );
[5630] Fix | Delete
[5631] Fix | Delete
control.inputElements.month.bind( control.updateDaysForMonth );
[5632] Fix | Delete
control.inputElements.year.bind( control.updateDaysForMonth );
[5633] Fix | Delete
control.populateDateInputs();
[5634] Fix | Delete
control.setting.bind( control.populateDateInputs );
[5635] Fix | Delete
[5636] Fix | Delete
// Start populating setting after inputs have been populated.
[5637] Fix | Delete
_.each( control.inputElements, function( element ) {
[5638] Fix | Delete
element.bind( control.populateSetting );
[5639] Fix | Delete
} );
[5640] Fix | Delete
},
[5641] Fix | Delete
[5642] Fix | Delete
/**
[5643] Fix | Delete
* Parse datetime string.
[5644] Fix | Delete
*
[5645] Fix | Delete
* @since 4.9.0
[5646] Fix | Delete
*
[5647] Fix | Delete
* @param {string} datetime - Date/Time string. Accepts Y-m-d[ H:i[:s]] format.
[5648] Fix | Delete
* @return {Object|null} Returns object containing date components or null if parse error.
[5649] Fix | Delete
*/
[5650] Fix | Delete
parseDateTime: function parseDateTime( datetime ) {
[5651] Fix | Delete
var control = this, matches, date, midDayHour = 12;
[5652] Fix | Delete
[5653] Fix | Delete
if ( datetime ) {
[5654] Fix | Delete
matches = datetime.match( /^(\d\d\d\d)-(\d\d)-(\d\d)(?: (\d\d):(\d\d)(?::(\d\d))?)?$/ );
[5655] Fix | Delete
}
[5656] Fix | Delete
[5657] Fix | Delete
if ( ! matches ) {
[5658] Fix | Delete
return null;
[5659] Fix | Delete
}
[5660] Fix | Delete
[5661] Fix | Delete
matches.shift();
[5662] Fix | Delete
[5663] Fix | Delete
date = {
[5664] Fix | Delete
year: matches.shift(),
[5665] Fix | Delete
month: matches.shift(),
[5666] Fix | Delete
day: matches.shift(),
[5667] Fix | Delete
hour: matches.shift() || '00',
[5668] Fix | Delete
minute: matches.shift() || '00',
[5669] Fix | Delete
second: matches.shift() || '00'
[5670] Fix | Delete
};
[5671] Fix | Delete
[5672] Fix | Delete
if ( control.params.includeTime && control.params.twelveHourFormat ) {
[5673] Fix | Delete
date.hour = parseInt( date.hour, 10 );
[5674] Fix | Delete
date.meridian = date.hour >= midDayHour ? 'pm' : 'am';
[5675] Fix | Delete
date.hour = date.hour % midDayHour ? String( date.hour % midDayHour ) : String( midDayHour );
[5676] Fix | Delete
delete date.second; // @todo Why only if twelveHourFormat?
[5677] Fix | Delete
}
[5678] Fix | Delete
[5679] Fix | Delete
return date;
[5680] Fix | Delete
},
[5681] Fix | Delete
[5682] Fix | Delete
/**
[5683] Fix | Delete
* Validates if input components have valid date and time.
[5684] Fix | Delete
*
[5685] Fix | Delete
* @since 4.9.0
[5686] Fix | Delete
* @return {boolean} If date input fields has error.
[5687] Fix | Delete
*/
[5688] Fix | Delete
validateInputs: function validateInputs() {
[5689] Fix | Delete
var control = this, components, validityInput;
[5690] Fix | Delete
[5691] Fix | Delete
control.invalidDate = false;
[5692] Fix | Delete
[5693] Fix | Delete
components = [ 'year', 'day' ];
[5694] Fix | Delete
if ( control.params.includeTime ) {
[5695] Fix | Delete
components.push( 'hour', 'minute' );
[5696] Fix | Delete
}
[5697] Fix | Delete
[5698] Fix | Delete
_.find( components, function( component ) {
[5699] Fix | Delete
var element, max, min, value;
[5700] Fix | Delete
[5701] Fix | Delete
element = control.inputElements[ component ];
[5702] Fix | Delete
validityInput = element.element.get( 0 );
[5703] Fix | Delete
max = parseInt( element.element.attr( 'max' ), 10 );
[5704] Fix | Delete
min = parseInt( element.element.attr( 'min' ), 10 );
[5705] Fix | Delete
value = parseInt( element(), 10 );
[5706] Fix | Delete
control.invalidDate = isNaN( value ) || value > max || value < min;
[5707] Fix | Delete
[5708] Fix | Delete
if ( ! control.invalidDate ) {
[5709] Fix | Delete
validityInput.setCustomValidity( '' );
[5710] Fix | Delete
}
[5711] Fix | Delete
[5712] Fix | Delete
return control.invalidDate;
[5713] Fix | Delete
} );
[5714] Fix | Delete
[5715] Fix | Delete
if ( control.inputElements.meridian && ! control.invalidDate ) {
[5716] Fix | Delete
validityInput = control.inputElements.meridian.element.get( 0 );
[5717] Fix | Delete
if ( 'am' !== control.inputElements.meridian.get() && 'pm' !== control.inputElements.meridian.get() ) {
[5718] Fix | Delete
control.invalidDate = true;
[5719] Fix | Delete
} else {
[5720] Fix | Delete
validityInput.setCustomValidity( '' );
[5721] Fix | Delete
}
[5722] Fix | Delete
}
[5723] Fix | Delete
[5724] Fix | Delete
if ( control.invalidDate ) {
[5725] Fix | Delete
validityInput.setCustomValidity( api.l10n.invalidValue );
[5726] Fix | Delete
} else {
[5727] Fix | Delete
validityInput.setCustomValidity( '' );
[5728] Fix | Delete
}
[5729] Fix | Delete
if ( ! control.section() || api.section.has( control.section() ) && api.section( control.section() ).expanded() ) {
[5730] Fix | Delete
_.result( validityInput, 'reportValidity' );
[5731] Fix | Delete
}
[5732] Fix | Delete
[5733] Fix | Delete
return control.invalidDate;
[5734] Fix | Delete
},
[5735] Fix | Delete
[5736] Fix | Delete
/**
[5737] Fix | Delete
* Updates number of days according to the month and year selected.
[5738] Fix | Delete
*
[5739] Fix | Delete
* @since 4.9.0
[5740] Fix | Delete
* @return {void}
[5741] Fix | Delete
*/
[5742] Fix | Delete
updateDaysForMonth: function updateDaysForMonth() {
[5743] Fix | Delete
var control = this, daysInMonth, year, month, day;
[5744] Fix | Delete
[5745] Fix | Delete
month = parseInt( control.inputElements.month(), 10 );
[5746] Fix | Delete
year = parseInt( control.inputElements.year(), 10 );
[5747] Fix | Delete
day = parseInt( control.inputElements.day(), 10 );
[5748] Fix | Delete
[5749] Fix | Delete
if ( month && year ) {
[5750] Fix | Delete
daysInMonth = new Date( year, month, 0 ).getDate();
[5751] Fix | Delete
control.inputElements.day.element.attr( 'max', daysInMonth );
[5752] Fix | Delete
[5753] Fix | Delete
if ( day > daysInMonth ) {
[5754] Fix | Delete
control.inputElements.day( String( daysInMonth ) );
[5755] Fix | Delete
}
[5756] Fix | Delete
}
[5757] Fix | Delete
},
[5758] Fix | Delete
[5759] Fix | Delete
/**
[5760] Fix | Delete
* Populate setting value from the inputs.
[5761] Fix | Delete
*
[5762] Fix | Delete
* @since 4.9.0
[5763] Fix | Delete
* @return {boolean} If setting updated.
[5764] Fix | Delete
*/
[5765] Fix | Delete
populateSetting: function populateSetting() {
[5766] Fix | Delete
var control = this, date;
[5767] Fix | Delete
[5768] Fix | Delete
if ( control.validateInputs() || ! control.params.allowPastDate && ! control.isFutureDate() ) {
[5769] Fix | Delete
return false;
[5770] Fix | Delete
}
[5771] Fix | Delete
[5772] Fix | Delete
date = control.convertInputDateToString();
[5773] Fix | Delete
control.setting.set( date );
[5774] Fix | Delete
return true;
[5775] Fix | Delete
},
[5776] Fix | Delete
[5777] Fix | Delete
/**
[5778] Fix | Delete
* Converts input values to string in Y-m-d H:i:s format.
[5779] Fix | Delete
*
[5780] Fix | Delete
* @since 4.9.0
[5781] Fix | Delete
* @return {string} Date string.
[5782] Fix | Delete
*/
[5783] Fix | Delete
convertInputDateToString: function convertInputDateToString() {
[5784] Fix | Delete
var control = this, date = '', dateFormat, hourInTwentyFourHourFormat,
[5785] Fix | Delete
getElementValue, pad;
[5786] Fix | Delete
[5787] Fix | Delete
pad = function( number, padding ) {
[5788] Fix | Delete
var zeros;
[5789] Fix | Delete
if ( String( number ).length < padding ) {
[5790] Fix | Delete
zeros = padding - String( number ).length;
[5791] Fix | Delete
number = Math.pow( 10, zeros ).toString().substr( 1 ) + String( number );
[5792] Fix | Delete
}
[5793] Fix | Delete
return number;
[5794] Fix | Delete
};
[5795] Fix | Delete
[5796] Fix | Delete
getElementValue = function( component ) {
[5797] Fix | Delete
var value = parseInt( control.inputElements[ component ].get(), 10 );
[5798] Fix | Delete
[5799] Fix | Delete
if ( _.contains( [ 'month', 'day', 'hour', 'minute' ], component ) ) {
[5800] Fix | Delete
value = pad( value, 2 );
[5801] Fix | Delete
} else if ( 'year' === component ) {
[5802] Fix | Delete
value = pad( value, 4 );
[5803] Fix | Delete
}
[5804] Fix | Delete
return value;
[5805] Fix | Delete
};
[5806] Fix | Delete
[5807] Fix | Delete
dateFormat = [ 'year', '-', 'month', '-', 'day' ];
[5808] Fix | Delete
if ( control.params.includeTime ) {
[5809] Fix | Delete
hourInTwentyFourHourFormat = control.inputElements.meridian ? control.convertHourToTwentyFourHourFormat( control.inputElements.hour(), control.inputElements.meridian() ) : control.inputElements.hour();
[5810] Fix | Delete
dateFormat = dateFormat.concat( [ ' ', pad( hourInTwentyFourHourFormat, 2 ), ':', 'minute', ':', '00' ] );
[5811] Fix | Delete
}
[5812] Fix | Delete
[5813] Fix | Delete
_.each( dateFormat, function( component ) {
[5814] Fix | Delete
date += control.inputElements[ component ] ? getElementValue( component ) : component;
[5815] Fix | Delete
} );
[5816] Fix | Delete
[5817] Fix | Delete
return date;
[5818] Fix | Delete
},
[5819] Fix | Delete
[5820] Fix | Delete
/**
[5821] Fix | Delete
* Check if the date is in the future.
[5822] Fix | Delete
*
[5823] Fix | Delete
* @since 4.9.0
[5824] Fix | Delete
* @return {boolean} True if future date.
[5825] Fix | Delete
*/
[5826] Fix | Delete
isFutureDate: function isFutureDate() {
[5827] Fix | Delete
var control = this;
[5828] Fix | Delete
return 0 < api.utils.getRemainingTime( control.convertInputDateToString() );
[5829] Fix | Delete
},
[5830] Fix | Delete
[5831] Fix | Delete
/**
[5832] Fix | Delete
* Convert hour in twelve hour format to twenty four hour format.
[5833] Fix | Delete
*
[5834] Fix | Delete
* @since 4.9.0
[5835] Fix | Delete
* @param {string} hourInTwelveHourFormat - Hour in twelve hour format.
[5836] Fix | Delete
* @param {string} meridian - Either 'am' or 'pm'.
[5837] Fix | Delete
* @return {string} Hour in twenty four hour format.
[5838] Fix | Delete
*/
[5839] Fix | Delete
convertHourToTwentyFourHourFormat: function convertHour( hourInTwelveHourFormat, meridian ) {
[5840] Fix | Delete
var hourInTwentyFourHourFormat, hour, midDayHour = 12;
[5841] Fix | Delete
[5842] Fix | Delete
hour = parseInt( hourInTwelveHourFormat, 10 );
[5843] Fix | Delete
if ( isNaN( hour ) ) {
[5844] Fix | Delete
return '';
[5845] Fix | Delete
}
[5846] Fix | Delete
[5847] Fix | Delete
if ( 'pm' === meridian && hour < midDayHour ) {
[5848] Fix | Delete
hourInTwentyFourHourFormat = hour + midDayHour;
[5849] Fix | Delete
} else if ( 'am' === meridian && midDayHour === hour ) {
[5850] Fix | Delete
hourInTwentyFourHourFormat = hour - midDayHour;
[5851] Fix | Delete
} else {
[5852] Fix | Delete
hourInTwentyFourHourFormat = hour;
[5853] Fix | Delete
}
[5854] Fix | Delete
[5855] Fix | Delete
return String( hourInTwentyFourHourFormat );
[5856] Fix | Delete
},
[5857] Fix | Delete
[5858] Fix | Delete
/**
[5859] Fix | Delete
* Populates date inputs in date fields.
[5860] Fix | Delete
*
[5861] Fix | Delete
* @since 4.9.0
[5862] Fix | Delete
* @return {boolean} Whether the inputs were populated.
[5863] Fix | Delete
*/
[5864] Fix | Delete
populateDateInputs: function populateDateInputs() {
[5865] Fix | Delete
var control = this, parsed;
[5866] Fix | Delete
[5867] Fix | Delete
parsed = control.parseDateTime( control.setting.get() );
[5868] Fix | Delete
[5869] Fix | Delete
if ( ! parsed ) {
[5870] Fix | Delete
return false;
[5871] Fix | Delete
}
[5872] Fix | Delete
[5873] Fix | Delete
_.each( control.inputElements, function( element, component ) {
[5874] Fix | Delete
var value = parsed[ component ]; // This will be zero-padded string.
[5875] Fix | Delete
[5876] Fix | Delete
// Set month and meridian regardless of focused state since they are dropdowns.
[5877] Fix | Delete
if ( 'month' === component || 'meridian' === component ) {
[5878] Fix | Delete
[5879] Fix | Delete
// Options in dropdowns are not zero-padded.
[5880] Fix | Delete
value = value.replace( /^0/, '' );
[5881] Fix | Delete
[5882] Fix | Delete
element.set( value );
[5883] Fix | Delete
} else {
[5884] Fix | Delete
[5885] Fix | Delete
value = parseInt( value, 10 );
[5886] Fix | Delete
if ( ! element.element.is( document.activeElement ) ) {
[5887] Fix | Delete
[5888] Fix | Delete
// Populate element with zero-padded value if not focused.
[5889] Fix | Delete
element.set( parsed[ component ] );
[5890] Fix | Delete
} else if ( value !== parseInt( element(), 10 ) ) {
[5891] Fix | Delete
[5892] Fix | Delete
// Forcibly update the value if its underlying value changed, regardless of zero-padding.
[5893] Fix | Delete
element.set( String( value ) );
[5894] Fix | Delete
}
[5895] Fix | Delete
}
[5896] Fix | Delete
} );
[5897] Fix | Delete
[5898] Fix | Delete
return true;
[5899] Fix | Delete
},
[5900] Fix | Delete
[5901] Fix | Delete
/**
[5902] Fix | Delete
* Toggle future date notification for date control.
[5903] Fix | Delete
*
[5904] Fix | Delete
* @since 4.9.0
[5905] Fix | Delete
* @param {boolean} notify Add or remove the notification.
[5906] Fix | Delete
* @return {wp.customize.DateTimeControl}
[5907] Fix | Delete
*/
[5908] Fix | Delete
toggleFutureDateNotification: function toggleFutureDateNotification( notify ) {
[5909] Fix | Delete
var control = this, notificationCode, notification;
[5910] Fix | Delete
[5911] Fix | Delete
notificationCode = 'not_future_date';
[5912] Fix | Delete
[5913] Fix | Delete
if ( notify ) {
[5914] Fix | Delete
notification = new api.Notification( notificationCode, {
[5915] Fix | Delete
type: 'error',
[5916] Fix | Delete
message: api.l10n.futureDateError
[5917] Fix | Delete
} );
[5918] Fix | Delete
control.notifications.add( notification );
[5919] Fix | Delete
} else {
[5920] Fix | Delete
control.notifications.remove( notificationCode );
[5921] Fix | Delete
}
[5922] Fix | Delete
[5923] Fix | Delete
return control;
[5924] Fix | Delete
}
[5925] Fix | Delete
});
[5926] Fix | Delete
[5927] Fix | Delete
/**
[5928] Fix | Delete
* Class PreviewLinkControl.
[5929] Fix | Delete
*
[5930] Fix | Delete
* @since 4.9.0
[5931] Fix | Delete
* @class wp.customize.PreviewLinkControl
[5932] Fix | Delete
* @augments wp.customize.Control
[5933] Fix | Delete
*/
[5934] Fix | Delete
api.PreviewLinkControl = api.Control.extend(/** @lends wp.customize.PreviewLinkControl.prototype */{
[5935] Fix | Delete
[5936] Fix | Delete
defaults: _.extend( {}, api.Control.prototype.defaults, {
[5937] Fix | Delete
templateId: 'customize-preview-link-control'
[5938] Fix | Delete
} ),
[5939] Fix | Delete
[5940] Fix | Delete
/**
[5941] Fix | Delete
* Initialize behaviors.
[5942] Fix | Delete
*
[5943] Fix | Delete
* @since 4.9.0
[5944] Fix | Delete
* @return {void}
[5945] Fix | Delete
*/
[5946] Fix | Delete
ready: function ready() {
[5947] Fix | Delete
var control = this, element, component, node, url, input, button;
[5948] Fix | Delete
[5949] Fix | Delete
_.bindAll( control, 'updatePreviewLink' );
[5950] Fix | Delete
[5951] Fix | Delete
if ( ! control.setting ) {
[5952] Fix | Delete
control.setting = new api.Value();
[5953] Fix | Delete
}
[5954] Fix | Delete
[5955] Fix | Delete
control.previewElements = {};
[5956] Fix | Delete
[5957] Fix | Delete
control.container.find( '.preview-control-element' ).each( function() {
[5958] Fix | Delete
node = $( this );
[5959] Fix | Delete
component = node.data( 'component' );
[5960] Fix | Delete
element = new api.Element( node );
[5961] Fix | Delete
control.previewElements[ component ] = element;
[5962] Fix | Delete
control.elements.push( element );
[5963] Fix | Delete
} );
[5964] Fix | Delete
[5965] Fix | Delete
url = control.previewElements.url;
[5966] Fix | Delete
input = control.previewElements.input;
[5967] Fix | Delete
button = control.previewElements.button;
[5968] Fix | Delete
[5969] Fix | Delete
input.link( control.setting );
[5970] Fix | Delete
url.link( control.setting );
[5971] Fix | Delete
[5972] Fix | Delete
url.bind( function( value ) {
[5973] Fix | Delete
url.element.parent().attr( {
[5974] Fix | Delete
href: value,
[5975] Fix | Delete
target: api.settings.changeset.uuid
[5976] Fix | Delete
} );
[5977] Fix | Delete
} );
[5978] Fix | Delete
[5979] Fix | Delete
api.bind( 'ready', control.updatePreviewLink );
[5980] Fix | Delete
api.state( 'saved' ).bind( control.updatePreviewLink );
[5981] Fix | Delete
api.state( 'changesetStatus' ).bind( control.updatePreviewLink );
[5982] Fix | Delete
api.state( 'activated' ).bind( control.updatePreviewLink );
[5983] Fix | Delete
api.previewer.previewUrl.bind( control.updatePreviewLink );
[5984] Fix | Delete
[5985] Fix | Delete
button.element.on( 'click', function( event ) {
[5986] Fix | Delete
event.preventDefault();
[5987] Fix | Delete
if ( control.setting() ) {
[5988] Fix | Delete
input.element.select();
[5989] Fix | Delete
document.execCommand( 'copy' );
[5990] Fix | Delete
button( button.element.data( 'copied-text' ) );
[5991] Fix | Delete
}
[5992] Fix | Delete
} );
[5993] Fix | Delete
[5994] Fix | Delete
url.element.parent().on( 'click', function( event ) {
[5995] Fix | Delete
if ( $( this ).hasClass( 'disabled' ) ) {
[5996] Fix | Delete
event.preventDefault();
[5997] Fix | Delete
}
[5998] Fix | Delete
} );
[5999] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function