Edit File by line
/home/zeestwma/redstone.../wp-admin/js
File: image-edit.js
/**
[0] Fix | Delete
* The functions necessary for editing images.
[1] Fix | Delete
*
[2] Fix | Delete
* @since 2.9.0
[3] Fix | Delete
* @output wp-admin/js/image-edit.js
[4] Fix | Delete
*/
[5] Fix | Delete
[6] Fix | Delete
/* global ajaxurl, confirm */
[7] Fix | Delete
[8] Fix | Delete
(function($) {
[9] Fix | Delete
var __ = wp.i18n.__;
[10] Fix | Delete
[11] Fix | Delete
/**
[12] Fix | Delete
* Contains all the methods to initialize and control the image editor.
[13] Fix | Delete
*
[14] Fix | Delete
* @namespace imageEdit
[15] Fix | Delete
*/
[16] Fix | Delete
var imageEdit = window.imageEdit = {
[17] Fix | Delete
iasapi : {},
[18] Fix | Delete
hold : {},
[19] Fix | Delete
postid : '',
[20] Fix | Delete
_view : false,
[21] Fix | Delete
[22] Fix | Delete
/**
[23] Fix | Delete
* Enable crop tool.
[24] Fix | Delete
*/
[25] Fix | Delete
toggleCropTool: function( postid, nonce, cropButton ) {
[26] Fix | Delete
var img = $( '#image-preview-' + postid ),
[27] Fix | Delete
selection = this.iasapi.getSelection();
[28] Fix | Delete
[29] Fix | Delete
imageEdit.toggleControls( cropButton );
[30] Fix | Delete
var $el = $( cropButton );
[31] Fix | Delete
var state = ( $el.attr( 'aria-expanded' ) === 'true' ) ? 'true' : 'false';
[32] Fix | Delete
// Crop tools have been closed.
[33] Fix | Delete
if ( 'false' === state ) {
[34] Fix | Delete
// Cancel selection, but do not unset inputs.
[35] Fix | Delete
this.iasapi.cancelSelection();
[36] Fix | Delete
imageEdit.setDisabled($('.imgedit-crop-clear'), 0);
[37] Fix | Delete
} else {
[38] Fix | Delete
imageEdit.setDisabled($('.imgedit-crop-clear'), 1);
[39] Fix | Delete
// Get values from inputs to restore previous selection.
[40] Fix | Delete
var startX = ( $( '#imgedit-start-x-' + postid ).val() ) ? $('#imgedit-start-x-' + postid).val() : 0;
[41] Fix | Delete
var startY = ( $( '#imgedit-start-y-' + postid ).val() ) ? $('#imgedit-start-y-' + postid).val() : 0;
[42] Fix | Delete
var width = ( $( '#imgedit-sel-width-' + postid ).val() ) ? $('#imgedit-sel-width-' + postid).val() : img.innerWidth();
[43] Fix | Delete
var height = ( $( '#imgedit-sel-height-' + postid ).val() ) ? $('#imgedit-sel-height-' + postid).val() : img.innerHeight();
[44] Fix | Delete
// Ensure selection is available, otherwise reset to full image.
[45] Fix | Delete
if ( isNaN( selection.x1 ) ) {
[46] Fix | Delete
this.setCropSelection( postid, { 'x1': startX, 'y1': startY, 'x2': width, 'y2': height, 'width': width, 'height': height } );
[47] Fix | Delete
selection = this.iasapi.getSelection();
[48] Fix | Delete
}
[49] Fix | Delete
[50] Fix | Delete
// If we don't already have a selection, select the entire image.
[51] Fix | Delete
if ( 0 === selection.x1 && 0 === selection.y1 && 0 === selection.x2 && 0 === selection.y2 ) {
[52] Fix | Delete
this.iasapi.setSelection( 0, 0, img.innerWidth(), img.innerHeight(), true );
[53] Fix | Delete
this.iasapi.setOptions( { show: true } );
[54] Fix | Delete
this.iasapi.update();
[55] Fix | Delete
} else {
[56] Fix | Delete
this.iasapi.setSelection( startX, startY, width, height, true );
[57] Fix | Delete
this.iasapi.setOptions( { show: true } );
[58] Fix | Delete
this.iasapi.update();
[59] Fix | Delete
}
[60] Fix | Delete
}
[61] Fix | Delete
},
[62] Fix | Delete
[63] Fix | Delete
/**
[64] Fix | Delete
* Handle crop tool clicks.
[65] Fix | Delete
*/
[66] Fix | Delete
handleCropToolClick: function( postid, nonce, cropButton ) {
[67] Fix | Delete
[68] Fix | Delete
if ( cropButton.classList.contains( 'imgedit-crop-clear' ) ) {
[69] Fix | Delete
this.iasapi.cancelSelection();
[70] Fix | Delete
imageEdit.setDisabled($('.imgedit-crop-apply'), 0);
[71] Fix | Delete
[72] Fix | Delete
$('#imgedit-sel-width-' + postid).val('');
[73] Fix | Delete
$('#imgedit-sel-height-' + postid).val('');
[74] Fix | Delete
$('#imgedit-start-x-' + postid).val('0');
[75] Fix | Delete
$('#imgedit-start-y-' + postid).val('0');
[76] Fix | Delete
$('#imgedit-selection-' + postid).val('');
[77] Fix | Delete
} else {
[78] Fix | Delete
// Otherwise, perform the crop.
[79] Fix | Delete
imageEdit.crop( postid, nonce , cropButton );
[80] Fix | Delete
}
[81] Fix | Delete
},
[82] Fix | Delete
[83] Fix | Delete
/**
[84] Fix | Delete
* Converts a value to an integer.
[85] Fix | Delete
*
[86] Fix | Delete
* @since 2.9.0
[87] Fix | Delete
*
[88] Fix | Delete
* @memberof imageEdit
[89] Fix | Delete
*
[90] Fix | Delete
* @param {number} f The float value that should be converted.
[91] Fix | Delete
*
[92] Fix | Delete
* @return {number} The integer representation from the float value.
[93] Fix | Delete
*/
[94] Fix | Delete
intval : function(f) {
[95] Fix | Delete
/*
[96] Fix | Delete
* Bitwise OR operator: one of the obscure ways to truncate floating point figures,
[97] Fix | Delete
* worth reminding JavaScript doesn't have a distinct "integer" type.
[98] Fix | Delete
*/
[99] Fix | Delete
return f | 0;
[100] Fix | Delete
},
[101] Fix | Delete
[102] Fix | Delete
/**
[103] Fix | Delete
* Adds the disabled attribute and class to a single form element or a field set.
[104] Fix | Delete
*
[105] Fix | Delete
* @since 2.9.0
[106] Fix | Delete
*
[107] Fix | Delete
* @memberof imageEdit
[108] Fix | Delete
*
[109] Fix | Delete
* @param {jQuery} el The element that should be modified.
[110] Fix | Delete
* @param {boolean|number} s The state for the element. If set to true
[111] Fix | Delete
* the element is disabled,
[112] Fix | Delete
* otherwise the element is enabled.
[113] Fix | Delete
* The function is sometimes called with a 0 or 1
[114] Fix | Delete
* instead of true or false.
[115] Fix | Delete
*
[116] Fix | Delete
* @return {void}
[117] Fix | Delete
*/
[118] Fix | Delete
setDisabled : function( el, s ) {
[119] Fix | Delete
/*
[120] Fix | Delete
* `el` can be a single form element or a fieldset. Before #28864, the disabled state on
[121] Fix | Delete
* some text fields was handled targeting $('input', el). Now we need to handle the
[122] Fix | Delete
* disabled state on buttons too so we can just target `el` regardless if it's a single
[123] Fix | Delete
* element or a fieldset because when a fieldset is disabled, its descendants are disabled too.
[124] Fix | Delete
*/
[125] Fix | Delete
if ( s ) {
[126] Fix | Delete
el.removeClass( 'disabled' ).prop( 'disabled', false );
[127] Fix | Delete
} else {
[128] Fix | Delete
el.addClass( 'disabled' ).prop( 'disabled', true );
[129] Fix | Delete
}
[130] Fix | Delete
},
[131] Fix | Delete
[132] Fix | Delete
/**
[133] Fix | Delete
* Initializes the image editor.
[134] Fix | Delete
*
[135] Fix | Delete
* @since 2.9.0
[136] Fix | Delete
*
[137] Fix | Delete
* @memberof imageEdit
[138] Fix | Delete
*
[139] Fix | Delete
* @param {number} postid The post ID.
[140] Fix | Delete
*
[141] Fix | Delete
* @return {void}
[142] Fix | Delete
*/
[143] Fix | Delete
init : function(postid) {
[144] Fix | Delete
var t = this, old = $('#image-editor-' + t.postid);
[145] Fix | Delete
[146] Fix | Delete
if ( t.postid !== postid && old.length ) {
[147] Fix | Delete
t.close(t.postid);
[148] Fix | Delete
}
[149] Fix | Delete
[150] Fix | Delete
t.hold.sizer = parseFloat( $('#imgedit-sizer-' + postid).val() );
[151] Fix | Delete
t.postid = postid;
[152] Fix | Delete
$('#imgedit-response-' + postid).empty();
[153] Fix | Delete
[154] Fix | Delete
$('#imgedit-panel-' + postid).on( 'keypress', function(e) {
[155] Fix | Delete
var nonce = $( '#imgedit-nonce-' + postid ).val();
[156] Fix | Delete
if ( e.which === 26 && e.ctrlKey ) {
[157] Fix | Delete
imageEdit.undo( postid, nonce );
[158] Fix | Delete
}
[159] Fix | Delete
[160] Fix | Delete
if ( e.which === 25 && e.ctrlKey ) {
[161] Fix | Delete
imageEdit.redo( postid, nonce );
[162] Fix | Delete
}
[163] Fix | Delete
});
[164] Fix | Delete
[165] Fix | Delete
$('#imgedit-panel-' + postid).on( 'keypress', 'input[type="text"]', function(e) {
[166] Fix | Delete
var k = e.keyCode;
[167] Fix | Delete
[168] Fix | Delete
// Key codes 37 through 40 are the arrow keys.
[169] Fix | Delete
if ( 36 < k && k < 41 ) {
[170] Fix | Delete
$(this).trigger( 'blur' );
[171] Fix | Delete
}
[172] Fix | Delete
[173] Fix | Delete
// The key code 13 is the Enter key.
[174] Fix | Delete
if ( 13 === k ) {
[175] Fix | Delete
e.preventDefault();
[176] Fix | Delete
e.stopPropagation();
[177] Fix | Delete
return false;
[178] Fix | Delete
}
[179] Fix | Delete
});
[180] Fix | Delete
[181] Fix | Delete
$( document ).on( 'image-editor-ui-ready', this.focusManager );
[182] Fix | Delete
},
[183] Fix | Delete
[184] Fix | Delete
/**
[185] Fix | Delete
* Calculate the image size and save it to memory.
[186] Fix | Delete
*
[187] Fix | Delete
* @since 6.7.0
[188] Fix | Delete
*
[189] Fix | Delete
* @memberof imageEdit
[190] Fix | Delete
*
[191] Fix | Delete
* @param {number} postid The post ID.
[192] Fix | Delete
*
[193] Fix | Delete
* @return {void}
[194] Fix | Delete
*/
[195] Fix | Delete
calculateImgSize: function( postid ) {
[196] Fix | Delete
var t = this,
[197] Fix | Delete
x = t.intval( $( '#imgedit-x-' + postid ).val() ),
[198] Fix | Delete
y = t.intval( $( '#imgedit-y-' + postid ).val() );
[199] Fix | Delete
[200] Fix | Delete
t.hold.w = t.hold.ow = x;
[201] Fix | Delete
t.hold.h = t.hold.oh = y;
[202] Fix | Delete
t.hold.xy_ratio = x / y;
[203] Fix | Delete
t.hold.sizer = parseFloat( $( '#imgedit-sizer-' + postid ).val() );
[204] Fix | Delete
t.currentCropSelection = null;
[205] Fix | Delete
},
[206] Fix | Delete
[207] Fix | Delete
/**
[208] Fix | Delete
* Toggles the wait/load icon in the editor.
[209] Fix | Delete
*
[210] Fix | Delete
* @since 2.9.0
[211] Fix | Delete
* @since 5.5.0 Added the triggerUIReady parameter.
[212] Fix | Delete
*
[213] Fix | Delete
* @memberof imageEdit
[214] Fix | Delete
*
[215] Fix | Delete
* @param {number} postid The post ID.
[216] Fix | Delete
* @param {number} toggle Is 0 or 1, fades the icon in when 1 and out when 0.
[217] Fix | Delete
* @param {boolean} triggerUIReady Whether to trigger a custom event when the UI is ready. Default false.
[218] Fix | Delete
*
[219] Fix | Delete
* @return {void}
[220] Fix | Delete
*/
[221] Fix | Delete
toggleEditor: function( postid, toggle, triggerUIReady ) {
[222] Fix | Delete
var wait = $('#imgedit-wait-' + postid);
[223] Fix | Delete
[224] Fix | Delete
if ( toggle ) {
[225] Fix | Delete
wait.fadeIn( 'fast' );
[226] Fix | Delete
} else {
[227] Fix | Delete
wait.fadeOut( 'fast', function() {
[228] Fix | Delete
if ( triggerUIReady ) {
[229] Fix | Delete
$( document ).trigger( 'image-editor-ui-ready' );
[230] Fix | Delete
}
[231] Fix | Delete
} );
[232] Fix | Delete
}
[233] Fix | Delete
},
[234] Fix | Delete
[235] Fix | Delete
/**
[236] Fix | Delete
* Shows or hides image menu popup.
[237] Fix | Delete
*
[238] Fix | Delete
* @since 6.3.0
[239] Fix | Delete
*
[240] Fix | Delete
* @memberof imageEdit
[241] Fix | Delete
*
[242] Fix | Delete
* @param {HTMLElement} el The activated control element.
[243] Fix | Delete
*
[244] Fix | Delete
* @return {boolean} Always returns false.
[245] Fix | Delete
*/
[246] Fix | Delete
togglePopup : function(el) {
[247] Fix | Delete
var $el = $( el );
[248] Fix | Delete
var $targetEl = $( el ).attr( 'aria-controls' );
[249] Fix | Delete
var $target = $( '#' + $targetEl );
[250] Fix | Delete
$el
[251] Fix | Delete
.attr( 'aria-expanded', 'false' === $el.attr( 'aria-expanded' ) ? 'true' : 'false' );
[252] Fix | Delete
// Open menu and set z-index to appear above image crop area if it is enabled.
[253] Fix | Delete
$target
[254] Fix | Delete
.toggleClass( 'imgedit-popup-menu-open' ).slideToggle( 'fast' ).css( { 'z-index' : 200000 } );
[255] Fix | Delete
// Move focus to first item in menu when opening menu.
[256] Fix | Delete
if ( 'true' === $el.attr( 'aria-expanded' ) ) {
[257] Fix | Delete
$target.find( 'button' ).first().trigger( 'focus' );
[258] Fix | Delete
}
[259] Fix | Delete
[260] Fix | Delete
return false;
[261] Fix | Delete
},
[262] Fix | Delete
[263] Fix | Delete
/**
[264] Fix | Delete
* Observes whether the popup should remain open based on focus position.
[265] Fix | Delete
*
[266] Fix | Delete
* @since 6.4.0
[267] Fix | Delete
*
[268] Fix | Delete
* @memberof imageEdit
[269] Fix | Delete
*
[270] Fix | Delete
* @param {HTMLElement} el The activated control element.
[271] Fix | Delete
*
[272] Fix | Delete
* @return {boolean} Always returns false.
[273] Fix | Delete
*/
[274] Fix | Delete
monitorPopup : function() {
[275] Fix | Delete
var $parent = document.querySelector( '.imgedit-rotate-menu-container' );
[276] Fix | Delete
var $toggle = document.querySelector( '.imgedit-rotate-menu-container .imgedit-rotate' );
[277] Fix | Delete
[278] Fix | Delete
setTimeout( function() {
[279] Fix | Delete
var $focused = document.activeElement;
[280] Fix | Delete
var $contains = $parent.contains( $focused );
[281] Fix | Delete
[282] Fix | Delete
// If $focused is defined and not inside the menu container, close the popup.
[283] Fix | Delete
if ( $focused && ! $contains ) {
[284] Fix | Delete
if ( 'true' === $toggle.getAttribute( 'aria-expanded' ) ) {
[285] Fix | Delete
imageEdit.togglePopup( $toggle );
[286] Fix | Delete
}
[287] Fix | Delete
}
[288] Fix | Delete
}, 100 );
[289] Fix | Delete
[290] Fix | Delete
return false;
[291] Fix | Delete
},
[292] Fix | Delete
[293] Fix | Delete
/**
[294] Fix | Delete
* Navigate popup menu by arrow keys.
[295] Fix | Delete
*
[296] Fix | Delete
* @since 6.3.0
[297] Fix | Delete
* @since 6.7.0 Added the event parameter.
[298] Fix | Delete
*
[299] Fix | Delete
* @memberof imageEdit
[300] Fix | Delete
*
[301] Fix | Delete
* @param {Event} event The key or click event.
[302] Fix | Delete
* @param {HTMLElement} el The current element.
[303] Fix | Delete
*
[304] Fix | Delete
* @return {boolean} Always returns false.
[305] Fix | Delete
*/
[306] Fix | Delete
browsePopup : function(event, el) {
[307] Fix | Delete
var $el = $( el );
[308] Fix | Delete
var $collection = $( el ).parent( '.imgedit-popup-menu' ).find( 'button' );
[309] Fix | Delete
var $index = $collection.index( $el );
[310] Fix | Delete
var $prev = $index - 1;
[311] Fix | Delete
var $next = $index + 1;
[312] Fix | Delete
var $last = $collection.length;
[313] Fix | Delete
if ( $prev < 0 ) {
[314] Fix | Delete
$prev = $last - 1;
[315] Fix | Delete
}
[316] Fix | Delete
if ( $next === $last ) {
[317] Fix | Delete
$next = 0;
[318] Fix | Delete
}
[319] Fix | Delete
var target = false;
[320] Fix | Delete
if ( event.keyCode === 40 ) {
[321] Fix | Delete
target = $collection.get( $next );
[322] Fix | Delete
} else if ( event.keyCode === 38 ) {
[323] Fix | Delete
target = $collection.get( $prev );
[324] Fix | Delete
}
[325] Fix | Delete
if ( target ) {
[326] Fix | Delete
target.focus();
[327] Fix | Delete
event.preventDefault();
[328] Fix | Delete
}
[329] Fix | Delete
[330] Fix | Delete
return false;
[331] Fix | Delete
},
[332] Fix | Delete
[333] Fix | Delete
/**
[334] Fix | Delete
* Close popup menu and reset focus on feature activation.
[335] Fix | Delete
*
[336] Fix | Delete
* @since 6.3.0
[337] Fix | Delete
*
[338] Fix | Delete
* @memberof imageEdit
[339] Fix | Delete
*
[340] Fix | Delete
* @param {HTMLElement} el The current element.
[341] Fix | Delete
*
[342] Fix | Delete
* @return {boolean} Always returns false.
[343] Fix | Delete
*/
[344] Fix | Delete
closePopup : function(el) {
[345] Fix | Delete
var $parent = $(el).parent( '.imgedit-popup-menu' );
[346] Fix | Delete
var $controlledID = $parent.attr( 'id' );
[347] Fix | Delete
var $target = $( 'button[aria-controls="' + $controlledID + '"]' );
[348] Fix | Delete
$target
[349] Fix | Delete
.attr( 'aria-expanded', 'false' ).trigger( 'focus' );
[350] Fix | Delete
$parent
[351] Fix | Delete
.toggleClass( 'imgedit-popup-menu-open' ).slideToggle( 'fast' );
[352] Fix | Delete
[353] Fix | Delete
return false;
[354] Fix | Delete
},
[355] Fix | Delete
[356] Fix | Delete
/**
[357] Fix | Delete
* Shows or hides the image edit help box.
[358] Fix | Delete
*
[359] Fix | Delete
* @since 2.9.0
[360] Fix | Delete
*
[361] Fix | Delete
* @memberof imageEdit
[362] Fix | Delete
*
[363] Fix | Delete
* @param {HTMLElement} el The element to create the help window in.
[364] Fix | Delete
*
[365] Fix | Delete
* @return {boolean} Always returns false.
[366] Fix | Delete
*/
[367] Fix | Delete
toggleHelp : function(el) {
[368] Fix | Delete
var $el = $( el );
[369] Fix | Delete
$el
[370] Fix | Delete
.attr( 'aria-expanded', 'false' === $el.attr( 'aria-expanded' ) ? 'true' : 'false' )
[371] Fix | Delete
.parents( '.imgedit-group-top' ).toggleClass( 'imgedit-help-toggled' ).find( '.imgedit-help' ).slideToggle( 'fast' );
[372] Fix | Delete
[373] Fix | Delete
return false;
[374] Fix | Delete
},
[375] Fix | Delete
[376] Fix | Delete
/**
[377] Fix | Delete
* Shows or hides image edit input fields when enabled.
[378] Fix | Delete
*
[379] Fix | Delete
* @since 6.3.0
[380] Fix | Delete
*
[381] Fix | Delete
* @memberof imageEdit
[382] Fix | Delete
*
[383] Fix | Delete
* @param {HTMLElement} el The element to trigger the edit panel.
[384] Fix | Delete
*
[385] Fix | Delete
* @return {boolean} Always returns false.
[386] Fix | Delete
*/
[387] Fix | Delete
toggleControls : function(el) {
[388] Fix | Delete
var $el = $( el );
[389] Fix | Delete
var $target = $( '#' + $el.attr( 'aria-controls' ) );
[390] Fix | Delete
$el
[391] Fix | Delete
.attr( 'aria-expanded', 'false' === $el.attr( 'aria-expanded' ) ? 'true' : 'false' );
[392] Fix | Delete
$target
[393] Fix | Delete
.parent( '.imgedit-group' ).toggleClass( 'imgedit-panel-active' );
[394] Fix | Delete
[395] Fix | Delete
return false;
[396] Fix | Delete
},
[397] Fix | Delete
[398] Fix | Delete
/**
[399] Fix | Delete
* Gets the value from the image edit target.
[400] Fix | Delete
*
[401] Fix | Delete
* The image edit target contains the image sizes where the (possible) changes
[402] Fix | Delete
* have to be applied to.
[403] Fix | Delete
*
[404] Fix | Delete
* @since 2.9.0
[405] Fix | Delete
*
[406] Fix | Delete
* @memberof imageEdit
[407] Fix | Delete
*
[408] Fix | Delete
* @param {number} postid The post ID.
[409] Fix | Delete
*
[410] Fix | Delete
* @return {string} The value from the imagedit-save-target input field when available,
[411] Fix | Delete
* 'full' when not selected, or 'all' if it doesn't exist.
[412] Fix | Delete
*/
[413] Fix | Delete
getTarget : function( postid ) {
[414] Fix | Delete
var element = $( '#imgedit-save-target-' + postid );
[415] Fix | Delete
[416] Fix | Delete
if ( element.length ) {
[417] Fix | Delete
return element.find( 'input[name="imgedit-target-' + postid + '"]:checked' ).val() || 'full';
[418] Fix | Delete
}
[419] Fix | Delete
[420] Fix | Delete
return 'all';
[421] Fix | Delete
},
[422] Fix | Delete
[423] Fix | Delete
/**
[424] Fix | Delete
* Recalculates the height or width and keeps the original aspect ratio.
[425] Fix | Delete
*
[426] Fix | Delete
* If the original image size is exceeded a red exclamation mark is shown.
[427] Fix | Delete
*
[428] Fix | Delete
* @since 2.9.0
[429] Fix | Delete
*
[430] Fix | Delete
* @memberof imageEdit
[431] Fix | Delete
*
[432] Fix | Delete
* @param {number} postid The current post ID.
[433] Fix | Delete
* @param {number} x Is 0 when it applies the y-axis
[434] Fix | Delete
* and 1 when applicable for the x-axis.
[435] Fix | Delete
* @param {jQuery} el Element.
[436] Fix | Delete
*
[437] Fix | Delete
* @return {void}
[438] Fix | Delete
*/
[439] Fix | Delete
scaleChanged : function( postid, x, el ) {
[440] Fix | Delete
var w = $('#imgedit-scale-width-' + postid), h = $('#imgedit-scale-height-' + postid),
[441] Fix | Delete
warn = $('#imgedit-scale-warn-' + postid), w1 = '', h1 = '',
[442] Fix | Delete
scaleBtn = $('#imgedit-scale-button');
[443] Fix | Delete
[444] Fix | Delete
if ( false === this.validateNumeric( el ) ) {
[445] Fix | Delete
return;
[446] Fix | Delete
}
[447] Fix | Delete
[448] Fix | Delete
if ( x ) {
[449] Fix | Delete
h1 = ( w.val() !== '' ) ? Math.round( w.val() / this.hold.xy_ratio ) : '';
[450] Fix | Delete
h.val( h1 );
[451] Fix | Delete
} else {
[452] Fix | Delete
w1 = ( h.val() !== '' ) ? Math.round( h.val() * this.hold.xy_ratio ) : '';
[453] Fix | Delete
w.val( w1 );
[454] Fix | Delete
}
[455] Fix | Delete
[456] Fix | Delete
if ( ( h1 && h1 > this.hold.oh ) || ( w1 && w1 > this.hold.ow ) ) {
[457] Fix | Delete
warn.css('visibility', 'visible');
[458] Fix | Delete
scaleBtn.prop('disabled', true);
[459] Fix | Delete
} else {
[460] Fix | Delete
warn.css('visibility', 'hidden');
[461] Fix | Delete
scaleBtn.prop('disabled', false);
[462] Fix | Delete
}
[463] Fix | Delete
},
[464] Fix | Delete
[465] Fix | Delete
/**
[466] Fix | Delete
* Gets the selected aspect ratio.
[467] Fix | Delete
*
[468] Fix | Delete
* @since 2.9.0
[469] Fix | Delete
*
[470] Fix | Delete
* @memberof imageEdit
[471] Fix | Delete
*
[472] Fix | Delete
* @param {number} postid The post ID.
[473] Fix | Delete
*
[474] Fix | Delete
* @return {string} The aspect ratio.
[475] Fix | Delete
*/
[476] Fix | Delete
getSelRatio : function(postid) {
[477] Fix | Delete
var x = this.hold.w, y = this.hold.h,
[478] Fix | Delete
X = this.intval( $('#imgedit-crop-width-' + postid).val() ),
[479] Fix | Delete
Y = this.intval( $('#imgedit-crop-height-' + postid).val() );
[480] Fix | Delete
[481] Fix | Delete
if ( X && Y ) {
[482] Fix | Delete
return X + ':' + Y;
[483] Fix | Delete
}
[484] Fix | Delete
[485] Fix | Delete
if ( x && y ) {
[486] Fix | Delete
return x + ':' + y;
[487] Fix | Delete
}
[488] Fix | Delete
[489] Fix | Delete
return '1:1';
[490] Fix | Delete
},
[491] Fix | Delete
[492] Fix | Delete
/**
[493] Fix | Delete
* Removes the last action from the image edit history.
[494] Fix | Delete
* The history consist of (edit) actions performed on the image.
[495] Fix | Delete
*
[496] Fix | Delete
* @since 2.9.0
[497] Fix | Delete
*
[498] Fix | Delete
* @memberof imageEdit
[499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function