Edit File by line
/home/zeestwma/ajeebong.../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
x = t.intval( $('#imgedit-x-' + postid).val() ),
[146] Fix | Delete
y = t.intval( $('#imgedit-y-' + postid).val() );
[147] Fix | Delete
[148] Fix | Delete
if ( t.postid !== postid && old.length ) {
[149] Fix | Delete
t.close(t.postid);
[150] Fix | Delete
}
[151] Fix | Delete
[152] Fix | Delete
t.hold.w = t.hold.ow = x;
[153] Fix | Delete
t.hold.h = t.hold.oh = y;
[154] Fix | Delete
t.hold.xy_ratio = x / y;
[155] Fix | Delete
t.hold.sizer = parseFloat( $('#imgedit-sizer-' + postid).val() );
[156] Fix | Delete
t.postid = postid;
[157] Fix | Delete
$('#imgedit-response-' + postid).empty();
[158] Fix | Delete
[159] Fix | Delete
$('#imgedit-panel-' + postid).on( 'keypress', function(e) {
[160] Fix | Delete
var nonce = $( '#imgedit-nonce-' + postid ).val();
[161] Fix | Delete
if ( e.which === 26 && e.ctrlKey ) {
[162] Fix | Delete
imageEdit.undo( postid, nonce );
[163] Fix | Delete
}
[164] Fix | Delete
[165] Fix | Delete
if ( e.which === 25 && e.ctrlKey ) {
[166] Fix | Delete
imageEdit.redo( postid, nonce );
[167] Fix | Delete
}
[168] Fix | Delete
});
[169] Fix | Delete
[170] Fix | Delete
$('#imgedit-panel-' + postid).on( 'keypress', 'input[type="text"]', function(e) {
[171] Fix | Delete
var k = e.keyCode;
[172] Fix | Delete
[173] Fix | Delete
// Key codes 37 through 40 are the arrow keys.
[174] Fix | Delete
if ( 36 < k && k < 41 ) {
[175] Fix | Delete
$(this).trigger( 'blur' );
[176] Fix | Delete
}
[177] Fix | Delete
[178] Fix | Delete
// The key code 13 is the Enter key.
[179] Fix | Delete
if ( 13 === k ) {
[180] Fix | Delete
e.preventDefault();
[181] Fix | Delete
e.stopPropagation();
[182] Fix | Delete
return false;
[183] Fix | Delete
}
[184] Fix | Delete
});
[185] Fix | Delete
[186] Fix | Delete
$( document ).on( 'image-editor-ui-ready', this.focusManager );
[187] Fix | Delete
},
[188] Fix | Delete
[189] Fix | Delete
/**
[190] Fix | Delete
* Toggles the wait/load icon in the editor.
[191] Fix | Delete
*
[192] Fix | Delete
* @since 2.9.0
[193] Fix | Delete
* @since 5.5.0 Added the triggerUIReady parameter.
[194] Fix | Delete
*
[195] Fix | Delete
* @memberof imageEdit
[196] Fix | Delete
*
[197] Fix | Delete
* @param {number} postid The post ID.
[198] Fix | Delete
* @param {number} toggle Is 0 or 1, fades the icon in when 1 and out when 0.
[199] Fix | Delete
* @param {boolean} triggerUIReady Whether to trigger a custom event when the UI is ready. Default false.
[200] Fix | Delete
*
[201] Fix | Delete
* @return {void}
[202] Fix | Delete
*/
[203] Fix | Delete
toggleEditor: function( postid, toggle, triggerUIReady ) {
[204] Fix | Delete
var wait = $('#imgedit-wait-' + postid);
[205] Fix | Delete
[206] Fix | Delete
if ( toggle ) {
[207] Fix | Delete
wait.fadeIn( 'fast' );
[208] Fix | Delete
} else {
[209] Fix | Delete
wait.fadeOut( 'fast', function() {
[210] Fix | Delete
if ( triggerUIReady ) {
[211] Fix | Delete
$( document ).trigger( 'image-editor-ui-ready' );
[212] Fix | Delete
}
[213] Fix | Delete
} );
[214] Fix | Delete
}
[215] Fix | Delete
},
[216] Fix | Delete
[217] Fix | Delete
/**
[218] Fix | Delete
* Shows or hides image menu popup.
[219] Fix | Delete
*
[220] Fix | Delete
* @since 6.3.0
[221] Fix | Delete
*
[222] Fix | Delete
* @memberof imageEdit
[223] Fix | Delete
*
[224] Fix | Delete
* @param {HTMLElement} el The activated control element.
[225] Fix | Delete
*
[226] Fix | Delete
* @return {boolean} Always returns false.
[227] Fix | Delete
*/
[228] Fix | Delete
togglePopup : function(el) {
[229] Fix | Delete
var $el = $( el );
[230] Fix | Delete
var $targetEl = $( el ).attr( 'aria-controls' );
[231] Fix | Delete
var $target = $( '#' + $targetEl );
[232] Fix | Delete
$el
[233] Fix | Delete
.attr( 'aria-expanded', 'false' === $el.attr( 'aria-expanded' ) ? 'true' : 'false' );
[234] Fix | Delete
// Open menu and set z-index to appear above image crop area if it is enabled.
[235] Fix | Delete
$target
[236] Fix | Delete
.toggleClass( 'imgedit-popup-menu-open' ).slideToggle( 'fast' ).css( { 'z-index' : 200000 } );
[237] Fix | Delete
// Move focus to first item in menu when opening menu.
[238] Fix | Delete
if ( 'true' === $el.attr( 'aria-expanded' ) ) {
[239] Fix | Delete
$target.find( 'button' ).first().trigger( 'focus' );
[240] Fix | Delete
}
[241] Fix | Delete
[242] Fix | Delete
return false;
[243] Fix | Delete
},
[244] Fix | Delete
[245] Fix | Delete
/**
[246] Fix | Delete
* Observes whether the popup should remain open based on focus position.
[247] Fix | Delete
*
[248] Fix | Delete
* @since 6.4.0
[249] Fix | Delete
*
[250] Fix | Delete
* @memberof imageEdit
[251] Fix | Delete
*
[252] Fix | Delete
* @param {HTMLElement} el The activated control element.
[253] Fix | Delete
*
[254] Fix | Delete
* @return {boolean} Always returns false.
[255] Fix | Delete
*/
[256] Fix | Delete
monitorPopup : function() {
[257] Fix | Delete
var $parent = document.querySelector( '.imgedit-rotate-menu-container' );
[258] Fix | Delete
var $toggle = document.querySelector( '.imgedit-rotate-menu-container .imgedit-rotate' );
[259] Fix | Delete
[260] Fix | Delete
setTimeout( function() {
[261] Fix | Delete
var $focused = document.activeElement;
[262] Fix | Delete
var $contains = $parent.contains( $focused );
[263] Fix | Delete
[264] Fix | Delete
// If $focused is defined and not inside the menu container, close the popup.
[265] Fix | Delete
if ( $focused && ! $contains ) {
[266] Fix | Delete
if ( 'true' === $toggle.getAttribute( 'aria-expanded' ) ) {
[267] Fix | Delete
imageEdit.togglePopup( $toggle );
[268] Fix | Delete
}
[269] Fix | Delete
}
[270] Fix | Delete
}, 100 );
[271] Fix | Delete
[272] Fix | Delete
return false;
[273] Fix | Delete
},
[274] Fix | Delete
[275] Fix | Delete
/**
[276] Fix | Delete
* Navigate popup menu by arrow keys.
[277] Fix | Delete
*
[278] Fix | Delete
* @since 6.3.0
[279] Fix | Delete
*
[280] Fix | Delete
* @memberof imageEdit
[281] Fix | Delete
*
[282] Fix | Delete
* @param {HTMLElement} el The current element.
[283] Fix | Delete
*
[284] Fix | Delete
* @return {boolean} Always returns false.
[285] Fix | Delete
*/
[286] Fix | Delete
browsePopup : function(el) {
[287] Fix | Delete
var $el = $( el );
[288] Fix | Delete
var $collection = $( el ).parent( '.imgedit-popup-menu' ).find( 'button' );
[289] Fix | Delete
var $index = $collection.index( $el );
[290] Fix | Delete
var $prev = $index - 1;
[291] Fix | Delete
var $next = $index + 1;
[292] Fix | Delete
var $last = $collection.length;
[293] Fix | Delete
if ( $prev < 0 ) {
[294] Fix | Delete
$prev = $last - 1;
[295] Fix | Delete
}
[296] Fix | Delete
if ( $next === $last ) {
[297] Fix | Delete
$next = 0;
[298] Fix | Delete
}
[299] Fix | Delete
var $target = false;
[300] Fix | Delete
if ( event.keyCode === 40 ) {
[301] Fix | Delete
$target = $collection.get( $next );
[302] Fix | Delete
} else if ( event.keyCode === 38 ) {
[303] Fix | Delete
$target = $collection.get( $prev );
[304] Fix | Delete
}
[305] Fix | Delete
if ( $target ) {
[306] Fix | Delete
$target.focus();
[307] Fix | Delete
event.preventDefault();
[308] Fix | Delete
}
[309] Fix | Delete
[310] Fix | Delete
return false;
[311] Fix | Delete
},
[312] Fix | Delete
[313] Fix | Delete
/**
[314] Fix | Delete
* Close popup menu and reset focus on feature activation.
[315] Fix | Delete
*
[316] Fix | Delete
* @since 6.3.0
[317] Fix | Delete
*
[318] Fix | Delete
* @memberof imageEdit
[319] Fix | Delete
*
[320] Fix | Delete
* @param {HTMLElement} el The current element.
[321] Fix | Delete
*
[322] Fix | Delete
* @return {boolean} Always returns false.
[323] Fix | Delete
*/
[324] Fix | Delete
closePopup : function(el) {
[325] Fix | Delete
var $parent = $(el).parent( '.imgedit-popup-menu' );
[326] Fix | Delete
var $controlledID = $parent.attr( 'id' );
[327] Fix | Delete
var $target = $( 'button[aria-controls="' + $controlledID + '"]' );
[328] Fix | Delete
$target
[329] Fix | Delete
.attr( 'aria-expanded', 'false' ).trigger( 'focus' );
[330] Fix | Delete
$parent
[331] Fix | Delete
.toggleClass( 'imgedit-popup-menu-open' ).slideToggle( 'fast' );
[332] Fix | Delete
[333] Fix | Delete
return false;
[334] Fix | Delete
},
[335] Fix | Delete
[336] Fix | Delete
/**
[337] Fix | Delete
* Shows or hides the image edit help box.
[338] Fix | Delete
*
[339] Fix | Delete
* @since 2.9.0
[340] Fix | Delete
*
[341] Fix | Delete
* @memberof imageEdit
[342] Fix | Delete
*
[343] Fix | Delete
* @param {HTMLElement} el The element to create the help window in.
[344] Fix | Delete
*
[345] Fix | Delete
* @return {boolean} Always returns false.
[346] Fix | Delete
*/
[347] Fix | Delete
toggleHelp : function(el) {
[348] Fix | Delete
var $el = $( el );
[349] Fix | Delete
$el
[350] Fix | Delete
.attr( 'aria-expanded', 'false' === $el.attr( 'aria-expanded' ) ? 'true' : 'false' )
[351] Fix | Delete
.parents( '.imgedit-group-top' ).toggleClass( 'imgedit-help-toggled' ).find( '.imgedit-help' ).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 image edit input fields when enabled.
[358] Fix | Delete
*
[359] Fix | Delete
* @since 6.3.0
[360] Fix | Delete
*
[361] Fix | Delete
* @memberof imageEdit
[362] Fix | Delete
*
[363] Fix | Delete
* @param {HTMLElement} el The element to trigger the edit panel.
[364] Fix | Delete
*
[365] Fix | Delete
* @return {boolean} Always returns false.
[366] Fix | Delete
*/
[367] Fix | Delete
toggleControls : function(el) {
[368] Fix | Delete
var $el = $( el );
[369] Fix | Delete
var $target = $( '#' + $el.attr( 'aria-controls' ) );
[370] Fix | Delete
$el
[371] Fix | Delete
.attr( 'aria-expanded', 'false' === $el.attr( 'aria-expanded' ) ? 'true' : 'false' );
[372] Fix | Delete
$target
[373] Fix | Delete
.parent( '.imgedit-group' ).toggleClass( 'imgedit-panel-active' );
[374] Fix | Delete
[375] Fix | Delete
return false;
[376] Fix | Delete
},
[377] Fix | Delete
[378] Fix | Delete
/**
[379] Fix | Delete
* Gets the value from the image edit target.
[380] Fix | Delete
*
[381] Fix | Delete
* The image edit target contains the image sizes where the (possible) changes
[382] Fix | Delete
* have to be applied to.
[383] Fix | Delete
*
[384] Fix | Delete
* @since 2.9.0
[385] Fix | Delete
*
[386] Fix | Delete
* @memberof imageEdit
[387] Fix | Delete
*
[388] Fix | Delete
* @param {number} postid The post ID.
[389] Fix | Delete
*
[390] Fix | Delete
* @return {string} The value from the imagedit-save-target input field when available,
[391] Fix | Delete
* 'full' when not selected, or 'all' if it doesn't exist.
[392] Fix | Delete
*/
[393] Fix | Delete
getTarget : function( postid ) {
[394] Fix | Delete
var element = $( '#imgedit-save-target-' + postid );
[395] Fix | Delete
[396] Fix | Delete
if ( element.length ) {
[397] Fix | Delete
return element.find( 'input[name="imgedit-target-' + postid + '"]:checked' ).val() || 'full';
[398] Fix | Delete
}
[399] Fix | Delete
[400] Fix | Delete
return 'all';
[401] Fix | Delete
},
[402] Fix | Delete
[403] Fix | Delete
/**
[404] Fix | Delete
* Recalculates the height or width and keeps the original aspect ratio.
[405] Fix | Delete
*
[406] Fix | Delete
* If the original image size is exceeded a red exclamation mark is shown.
[407] Fix | Delete
*
[408] Fix | Delete
* @since 2.9.0
[409] Fix | Delete
*
[410] Fix | Delete
* @memberof imageEdit
[411] Fix | Delete
*
[412] Fix | Delete
* @param {number} postid The current post ID.
[413] Fix | Delete
* @param {number} x Is 0 when it applies the y-axis
[414] Fix | Delete
* and 1 when applicable for the x-axis.
[415] Fix | Delete
* @param {jQuery} el Element.
[416] Fix | Delete
*
[417] Fix | Delete
* @return {void}
[418] Fix | Delete
*/
[419] Fix | Delete
scaleChanged : function( postid, x, el ) {
[420] Fix | Delete
var w = $('#imgedit-scale-width-' + postid), h = $('#imgedit-scale-height-' + postid),
[421] Fix | Delete
warn = $('#imgedit-scale-warn-' + postid), w1 = '', h1 = '',
[422] Fix | Delete
scaleBtn = $('#imgedit-scale-button');
[423] Fix | Delete
[424] Fix | Delete
if ( false === this.validateNumeric( el ) ) {
[425] Fix | Delete
return;
[426] Fix | Delete
}
[427] Fix | Delete
[428] Fix | Delete
if ( x ) {
[429] Fix | Delete
h1 = ( w.val() !== '' ) ? Math.round( w.val() / this.hold.xy_ratio ) : '';
[430] Fix | Delete
h.val( h1 );
[431] Fix | Delete
} else {
[432] Fix | Delete
w1 = ( h.val() !== '' ) ? Math.round( h.val() * this.hold.xy_ratio ) : '';
[433] Fix | Delete
w.val( w1 );
[434] Fix | Delete
}
[435] Fix | Delete
[436] Fix | Delete
if ( ( h1 && h1 > this.hold.oh ) || ( w1 && w1 > this.hold.ow ) ) {
[437] Fix | Delete
warn.css('visibility', 'visible');
[438] Fix | Delete
scaleBtn.prop('disabled', true);
[439] Fix | Delete
} else {
[440] Fix | Delete
warn.css('visibility', 'hidden');
[441] Fix | Delete
scaleBtn.prop('disabled', false);
[442] Fix | Delete
}
[443] Fix | Delete
},
[444] Fix | Delete
[445] Fix | Delete
/**
[446] Fix | Delete
* Gets the selected aspect ratio.
[447] Fix | Delete
*
[448] Fix | Delete
* @since 2.9.0
[449] Fix | Delete
*
[450] Fix | Delete
* @memberof imageEdit
[451] Fix | Delete
*
[452] Fix | Delete
* @param {number} postid The post ID.
[453] Fix | Delete
*
[454] Fix | Delete
* @return {string} The aspect ratio.
[455] Fix | Delete
*/
[456] Fix | Delete
getSelRatio : function(postid) {
[457] Fix | Delete
var x = this.hold.w, y = this.hold.h,
[458] Fix | Delete
X = this.intval( $('#imgedit-crop-width-' + postid).val() ),
[459] Fix | Delete
Y = this.intval( $('#imgedit-crop-height-' + postid).val() );
[460] Fix | Delete
[461] Fix | Delete
if ( X && Y ) {
[462] Fix | Delete
return X + ':' + Y;
[463] Fix | Delete
}
[464] Fix | Delete
[465] Fix | Delete
if ( x && y ) {
[466] Fix | Delete
return x + ':' + y;
[467] Fix | Delete
}
[468] Fix | Delete
[469] Fix | Delete
return '1:1';
[470] Fix | Delete
},
[471] Fix | Delete
[472] Fix | Delete
/**
[473] Fix | Delete
* Removes the last action from the image edit history.
[474] Fix | Delete
* The history consist of (edit) actions performed on the image.
[475] Fix | Delete
*
[476] Fix | Delete
* @since 2.9.0
[477] Fix | Delete
*
[478] Fix | Delete
* @memberof imageEdit
[479] Fix | Delete
*
[480] Fix | Delete
* @param {number} postid The post ID.
[481] Fix | Delete
* @param {number} setSize 0 or 1, when 1 the image resets to its original size.
[482] Fix | Delete
*
[483] Fix | Delete
* @return {string} JSON string containing the history or an empty string if no history exists.
[484] Fix | Delete
*/
[485] Fix | Delete
filterHistory : function(postid, setSize) {
[486] Fix | Delete
// Apply undo state to history.
[487] Fix | Delete
var history = $('#imgedit-history-' + postid).val(), pop, n, o, i, op = [];
[488] Fix | Delete
[489] Fix | Delete
if ( history !== '' ) {
[490] Fix | Delete
// Read the JSON string with the image edit history.
[491] Fix | Delete
history = JSON.parse(history);
[492] Fix | Delete
pop = this.intval( $('#imgedit-undone-' + postid).val() );
[493] Fix | Delete
if ( pop > 0 ) {
[494] Fix | Delete
while ( pop > 0 ) {
[495] Fix | Delete
history.pop();
[496] Fix | Delete
pop--;
[497] Fix | Delete
}
[498] Fix | Delete
}
[499] Fix | Delete
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function