From e4f36258f95f781fbbb443285bc9a1eb6537d2bd Mon Sep 17 00:00:00 2001 From: Andrew Ozz Date: Mon, 10 Feb 2020 02:54:05 +0000 Subject: [PATCH] Media: Ensure imgareaselect.js is not initialized twice for the same image. May happen when uploading an image into a post and then clicking on Edit Image. Fixes #49262. Built from https://develop.svn.wordpress.org/trunk@47229 git-svn-id: http://core.svn.wordpress.org/trunk@47029 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-admin/js/image-edit.js | 8 +++++++- wp-admin/js/image-edit.min.js | 2 +- wp-includes/version.php | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/wp-admin/js/image-edit.js b/wp-admin/js/image-edit.js index d2b0139bc1..fc84e777dd 100644 --- a/wp-admin/js/image-edit.js +++ b/wp-admin/js/image-edit.js @@ -642,9 +642,15 @@ var t = this, selW = $('#imgedit-sel-width-' + postid), selH = $('#imgedit-sel-height-' + postid), + $image = $( image ), $img; - t.iasapi = $(image).imgAreaSelect({ + // Already initialized? + if ( $image.data( 'imgAreaSelect' ) ) { + return; + } + + t.iasapi = $image.imgAreaSelect({ parent: parent, instance: true, handles: true, diff --git a/wp-admin/js/image-edit.min.js b/wp-admin/js/image-edit.min.js index 5ab7a49bf7..d133898238 100644 --- a/wp-admin/js/image-edit.min.js +++ b/wp-admin/js/image-edit.min.js @@ -1,2 +1,2 @@ /*! This file is auto-generated */ -!function(m){var l=window.imageEdit={iasapi:{},hold:{},postid:"",_view:!1,handleCropToolClick:function(i,t,e){var a=m("#image-preview-"+i),s=this.iasapi.getSelection();isNaN(s.x1)&&(this.setCropSelection(i,{x1:0,y1:0,x2:a.innerWidth(),y2:a.innerHeight(),width:a.innerWidth(),height:a.innerHeight()}),s=this.iasapi.getSelection()),0===s.x1&&0===s.y1&&0===s.x2&&0===s.y2?(this.iasapi.setSelection(0,0,a.innerWidth(),a.innerHeight(),!0),this.iasapi.setOptions({show:!0}),this.iasapi.update()):l.crop(i,t,e)},intval:function(i){return 0|i},setDisabled:function(i,t){t?i.removeClass("disabled").prop("disabled",!1):i.addClass("disabled").prop("disabled",!0)},init:function(i){var t=this,e=m("#image-editor-"+t.postid),a=t.intval(m("#imgedit-x-"+i).val()),s=t.intval(m("#imgedit-y-"+i).val());t.postid!==i&&e.length&&t.close(t.postid),t.hold.w=t.hold.ow=a,t.hold.h=t.hold.oh=s,t.hold.xy_ratio=a/s,t.hold.sizer=parseFloat(m("#imgedit-sizer-"+i).val()),t.postid=i,m("#imgedit-response-"+i).empty(),m('input[type="text"]',"#imgedit-panel-"+i).keypress(function(i){var t=i.keyCode;if(36this.hold.oh||n&&n>this.hold.ow?o.css("visibility","visible"):o.css("visibility","hidden"))},getSelRatio:function(i){var t=this.hold.w,e=this.hold.h,a=this.intval(m("#imgedit-crop-width-"+i).val()),s=this.intval(m("#imgedit-crop-height-"+i).val());return a&&s?a+":"+s:t&&e?t+":"+e:"1:1"},filterHistory:function(i,t){var e,a,s,o,n=m("#imgedit-history-"+i).val(),d=[];if(""===n)return"";if(n=JSON.parse(n),0<(e=this.intval(m("#imgedit-undone-"+i).val())))for(;0').on("load",{history:t.history},function(i){var t,e,a,s=m("#imgedit-crop-"+n),o=l;""!==i.data.history&&(a=JSON.parse(i.data.history))[a.length-1].hasOwnProperty("c")&&(o.setDisabled(m("#image-undo-"+n),!0),m("#image-undo-"+n).focus()),s.empty().append(r),t=Math.max(o.hold.w,o.hold.h),e=Math.max(m(r).width(),m(r).height()),o.hold.sizer=e

'+imageEditL10n.error+"

"),e.toggleEditor(n,0)}).attr("src",ajaxurl+"?"+m.param(t))},action:function(t,i,e){var a,s,o,n,d,r=this;if(r.notsaved(t))return!1;if(a={action:"image-editor",_ajax_nonce:i,postid:t},"scale"===e){if(s=m("#imgedit-scale-width-"+t),o=m("#imgedit-scale-height-"+t),n=r.intval(s.val()),d=r.intval(o.val()),n<1)return s.focus(),!1;if(d<1)return o.focus(),!1;if(n===r.hold.ow||d===r.hold.oh)return!1;a.do="scale",a.fwidth=n,a.fheight=d}else{if("restore"!==e)return!1;a.do="restore"}r.toggleEditor(t,1),m.post(ajaxurl,a,function(i){m("#image-editor-"+t).empty().append(i),r.toggleEditor(t,0),r._view&&r._view.refresh()})},save:function(e,i){var t,a=this.getTarget(e),s=this.filterHistory(e,0),o=this;if(""===s)return!1;this.toggleEditor(e,1),t={action:"image-editor",_ajax_nonce:i,postid:e,history:s,target:a,context:m("#image-edit-context").length?m("#image-edit-context").val():null,do:"save"},m.post(ajaxurl,t,function(i){var t=JSON.parse(i);if(t.error)return m("#imgedit-response-"+e).html('

'+t.error+"

"),void l.close(e);t.fw&&t.fh&&m("#media-dims-"+e).html(t.fw+" × "+t.fh),t.thumbnail&&m(".thumbnail","#thumbnail-head-"+e).attr("src",""+t.thumbnail),t.msg&&m("#imgedit-response-"+e).html('

'+t.msg+"

"),o._view?o._view.save():l.close(e)})},open:function(t,i,e){this._view=e;var a,s=m("#image-editor-"+t),o=m("#media-head-"+t),n=m("#imgedit-open-btn-"+t),d=n.siblings(".spinner");if(!n.hasClass("button-activated"))return d.addClass("is-active"),a={action:"image-editor",_ajax_nonce:i,postid:t,do:"open"},m.ajax({url:ajaxurl,type:"post",data:a,beforeSend:function(){n.addClass("button-activated")}}).done(function(i){s.html(i),o.fadeOut("fast",function(){s.fadeIn("fast"),n.removeClass("button-activated"),d.removeClass("is-active")}),l.init(t)})},imgLoaded:function(i){var t=m("#image-preview-"+i),e=m("#imgedit-crop-"+i);void 0===this.hold.sizer&&this.init(i),this.initCrop(i,t,e),this.setCropSelection(i,{x1:0,y1:0,x2:0,y2:0,width:t.innerWidth(),height:t.innerHeight()}),this.toggleEditor(i,0),m(".imgedit-wrap .imgedit-help-toggle").eq(0).focus()},initCrop:function(s,i,t){var o=this,a=m("#imgedit-sel-width-"+s),n=m("#imgedit-sel-height-"+s);o.iasapi=m(i).imgAreaSelect({parent:t,instance:!0,handles:!0,keys:!0,minWidth:3,minHeight:3,onInit:function(i){m(i).next().css("position","absolute").nextAll(".imgareaselect-outer").css("position","absolute"),t.children().on("mousedown, touchstart",function(i){var t,e,a=!1;i.shiftKey&&(t=o.iasapi.getSelection(),e=o.getSelRatio(s),a=t&&t.width&&t.height?t.width+":"+t.height:e),o.iasapi.setOptions({aspectRatio:a})})},onSelectStart:function(){l.setDisabled(m("#imgedit-crop-sel-"+s),1)},onSelectEnd:function(i,t){l.setCropSelection(s,t)},onSelectChange:function(i,t){var e=l.hold.sizer;a.val(l.round(t.width/e)),n.val(l.round(t.height/e))}})},setCropSelection:function(i,t){var e;if(!(t=t||0)||t.width<3&&t.height<3)return this.setDisabled(m(".imgedit-crop","#imgedit-panel-"+i),1),this.setDisabled(m("#imgedit-crop-sel-"+i),1),m("#imgedit-sel-width-"+i).val(""),m("#imgedit-sel-height-"+i).val(""),m("#imgedit-selection-"+i).val(""),!1;e={x:t.x1,y:t.y1,w:t.width,h:t.height},this.setDisabled(m(".imgedit-crop","#imgedit-panel-"+i),1),m("#imgedit-selection-"+i).val(JSON.stringify(e))},close:function(i,t){if((t=t||!1)&&this.notsaved(i))return!1;this.iasapi={},this.hold={},this._view?this._view.back():m("#image-editor-"+i).fadeOut("fast",function(){m("#media-head-"+i).fadeIn("fast",function(){m("#imgedit-open-btn-"+i).focus()}),m(this).empty()})},notsaved:function(i){var t=m("#imgedit-history-"+i).val(),e=""!==t?JSON.parse(t):[];return this.intval(m("#imgedit-undone-"+i).val())this.hold.oh||n&&n>this.hold.ow?o.css("visibility","visible"):o.css("visibility","hidden"))},getSelRatio:function(i){var t=this.hold.w,e=this.hold.h,a=this.intval(m("#imgedit-crop-width-"+i).val()),s=this.intval(m("#imgedit-crop-height-"+i).val());return a&&s?a+":"+s:t&&e?t+":"+e:"1:1"},filterHistory:function(i,t){var e,a,s,o,n=m("#imgedit-history-"+i).val(),d=[];if(""===n)return"";if(n=JSON.parse(n),0<(e=this.intval(m("#imgedit-undone-"+i).val())))for(;0').on("load",{history:t.history},function(i){var t,e,a,s=m("#imgedit-crop-"+n),o=l;""!==i.data.history&&(a=JSON.parse(i.data.history))[a.length-1].hasOwnProperty("c")&&(o.setDisabled(m("#image-undo-"+n),!0),m("#image-undo-"+n).focus()),s.empty().append(r),t=Math.max(o.hold.w,o.hold.h),e=Math.max(m(r).width(),m(r).height()),o.hold.sizer=e

'+imageEditL10n.error+"

"),e.toggleEditor(n,0)}).attr("src",ajaxurl+"?"+m.param(t))},action:function(t,i,e){var a,s,o,n,d,r=this;if(r.notsaved(t))return!1;if(a={action:"image-editor",_ajax_nonce:i,postid:t},"scale"===e){if(s=m("#imgedit-scale-width-"+t),o=m("#imgedit-scale-height-"+t),n=r.intval(s.val()),d=r.intval(o.val()),n<1)return s.focus(),!1;if(d<1)return o.focus(),!1;if(n===r.hold.ow||d===r.hold.oh)return!1;a.do="scale",a.fwidth=n,a.fheight=d}else{if("restore"!==e)return!1;a.do="restore"}r.toggleEditor(t,1),m.post(ajaxurl,a,function(i){m("#image-editor-"+t).empty().append(i),r.toggleEditor(t,0),r._view&&r._view.refresh()})},save:function(e,i){var t,a=this.getTarget(e),s=this.filterHistory(e,0),o=this;if(""===s)return!1;this.toggleEditor(e,1),t={action:"image-editor",_ajax_nonce:i,postid:e,history:s,target:a,context:m("#image-edit-context").length?m("#image-edit-context").val():null,do:"save"},m.post(ajaxurl,t,function(i){var t=JSON.parse(i);if(t.error)return m("#imgedit-response-"+e).html('

'+t.error+"

"),void l.close(e);t.fw&&t.fh&&m("#media-dims-"+e).html(t.fw+" × "+t.fh),t.thumbnail&&m(".thumbnail","#thumbnail-head-"+e).attr("src",""+t.thumbnail),t.msg&&m("#imgedit-response-"+e).html('

'+t.msg+"

"),o._view?o._view.save():l.close(e)})},open:function(t,i,e){this._view=e;var a,s=m("#image-editor-"+t),o=m("#media-head-"+t),n=m("#imgedit-open-btn-"+t),d=n.siblings(".spinner");if(!n.hasClass("button-activated"))return d.addClass("is-active"),a={action:"image-editor",_ajax_nonce:i,postid:t,do:"open"},m.ajax({url:ajaxurl,type:"post",data:a,beforeSend:function(){n.addClass("button-activated")}}).done(function(i){s.html(i),o.fadeOut("fast",function(){s.fadeIn("fast"),n.removeClass("button-activated"),d.removeClass("is-active")}),l.init(t)})},imgLoaded:function(i){var t=m("#image-preview-"+i),e=m("#imgedit-crop-"+i);void 0===this.hold.sizer&&this.init(i),this.initCrop(i,t,e),this.setCropSelection(i,{x1:0,y1:0,x2:0,y2:0,width:t.innerWidth(),height:t.innerHeight()}),this.toggleEditor(i,0),m(".imgedit-wrap .imgedit-help-toggle").eq(0).focus()},initCrop:function(s,i,t){var o=this,a=m("#imgedit-sel-width-"+s),n=m("#imgedit-sel-height-"+s),e=m(i);e.data("imgAreaSelect")||(o.iasapi=e.imgAreaSelect({parent:t,instance:!0,handles:!0,keys:!0,minWidth:3,minHeight:3,onInit:function(i){m(i).next().css("position","absolute").nextAll(".imgareaselect-outer").css("position","absolute"),t.children().on("mousedown, touchstart",function(i){var t,e,a=!1;i.shiftKey&&(t=o.iasapi.getSelection(),e=o.getSelRatio(s),a=t&&t.width&&t.height?t.width+":"+t.height:e),o.iasapi.setOptions({aspectRatio:a})})},onSelectStart:function(){l.setDisabled(m("#imgedit-crop-sel-"+s),1)},onSelectEnd:function(i,t){l.setCropSelection(s,t)},onSelectChange:function(i,t){var e=l.hold.sizer;a.val(l.round(t.width/e)),n.val(l.round(t.height/e))}}))},setCropSelection:function(i,t){var e;if(!(t=t||0)||t.width<3&&t.height<3)return this.setDisabled(m(".imgedit-crop","#imgedit-panel-"+i),1),this.setDisabled(m("#imgedit-crop-sel-"+i),1),m("#imgedit-sel-width-"+i).val(""),m("#imgedit-sel-height-"+i).val(""),m("#imgedit-selection-"+i).val(""),!1;e={x:t.x1,y:t.y1,w:t.width,h:t.height},this.setDisabled(m(".imgedit-crop","#imgedit-panel-"+i),1),m("#imgedit-selection-"+i).val(JSON.stringify(e))},close:function(i,t){if((t=t||!1)&&this.notsaved(i))return!1;this.iasapi={},this.hold={},this._view?this._view.back():m("#image-editor-"+i).fadeOut("fast",function(){m("#media-head-"+i).fadeIn("fast",function(){m("#imgedit-open-btn-"+i).focus()}),m(this).empty()})},notsaved:function(i){var t=m("#imgedit-history-"+i).val(),e=""!==t?JSON.parse(t):[];return this.intval(m("#imgedit-undone-"+i).val())