X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/wordpress.git/blobdiff_plain/e0feb3b2e5b436a06bbb04fbc838d1cd6ec95399..b22765f41bf0b2021b9beb9120ee0ac91fa89292:/wp-includes/js/media-views.js diff --git a/wp-includes/js/media-views.js b/wp-includes/js/media-views.js index 0f53b0a8..e8a8202d 100644 --- a/wp-includes/js/media-views.js +++ b/wp-includes/js/media-views.js @@ -282,8 +282,10 @@ Cropper = wp.media.controller.State.extend({ toolbar: 'crop', content: 'crop', router: false, + canSkipCrop: false, - canSkipCrop: false + // Default doCrop Ajax arguments to allow the Customizer (for example) to inject state. + doCropArgs: {} }, activate: function() { @@ -367,11 +369,15 @@ Cropper = wp.media.controller.State.extend({ }, doCrop: function( attachment ) { - return wp.ajax.post( 'custom-header-crop', { - nonce: attachment.get('nonces').edit, - id: attachment.get('id'), - cropDetails: attachment.get('cropDetails') - } ); + return wp.ajax.post( 'custom-header-crop', _.extend( + {}, + this.defaults.doCropArgs, + { + nonce: attachment.get( 'nonces' ).edit, + id: attachment.get( 'id' ), + cropDetails: attachment.get( 'cropDetails' ) + } + ) ); } }); @@ -394,10 +400,19 @@ var Controller = wp.media.controller, CustomizeImageCropper = Controller.Cropper.extend({ doCrop: function( attachment ) { var cropDetails = attachment.get( 'cropDetails' ), - control = this.get( 'control' ); + control = this.get( 'control' ), + ratio = cropDetails.width / cropDetails.height; - cropDetails.dst_width = control.params.width; - cropDetails.dst_height = control.params.height; + // Use crop measurements when flexible in both directions. + if ( control.params.flex_width && control.params.flex_height ) { + cropDetails.dst_width = cropDetails.width; + cropDetails.dst_height = cropDetails.height; + + // Constrain flexible side based on image ratio and size of the fixed side. + } else { + cropDetails.dst_width = control.params.flex_width ? control.params.height * ratio : control.params.width; + cropDetails.dst_height = control.params.flex_height ? control.params.width / ratio : control.params.height; + } return wp.ajax.post( 'crop-image', { wp_customize: 'on', @@ -447,14 +462,14 @@ EditImage = wp.media.controller.State.extend({ * @since 3.9.0 */ activate: function() { - this.listenTo( this.frame, 'toolbar:render:edit-image', this.toolbar ); + this.frame.on( 'toolbar:render:edit-image', _.bind( this.toolbar, this ) ); }, /** * @since 3.9.0 */ deactivate: function() { - this.stopListening( this.frame ); + this.frame.off( 'toolbar:render:edit-image' ); }, /** @@ -1182,9 +1197,9 @@ Library = wp.media.controller.State.extend({ var defaultProps = wp.media.view.settings.defaultProps; this._displays = []; this._defaultDisplaySettings = { - align: defaultProps.align || getUserSetting( 'align', 'none' ), - size: defaultProps.size || getUserSetting( 'imgsize', 'medium' ), - link: defaultProps.link || getUserSetting( 'urlbutton', 'file' ) + align: getUserSetting( 'align', defaultProps.align ) || 'none', + size: getUserSetting( 'imgsize', defaultProps.size ) || 'medium', + link: getUserSetting( 'urlbutton', defaultProps.link ) || 'none' }; }, @@ -1214,13 +1229,34 @@ Library = wp.media.controller.State.extend({ * @returns {Object} */ defaultDisplaySettings: function( attachment ) { - var settings = this._defaultDisplaySettings; + var settings = _.clone( this._defaultDisplaySettings ); + if ( settings.canEmbed = this.canEmbed( attachment ) ) { settings.link = 'embed'; + } else if ( ! this.isImageAttachment( attachment ) && settings.link === 'none' ) { + settings.link = 'file'; } + return settings; }, + /** + * Whether an attachment is image. + * + * @since 4.4.1 + * + * @param {wp.media.model.Attachment} attachment + * @returns {Boolean} + */ + isImageAttachment: function( attachment ) { + // If uploading, we know the filename but not the mime type. + if ( attachment.get('uploading') ) { + return /\.(jpe?g|png|gif)$/i.test( attachment.get('filename') ); + } + + return attachment.get('type') === 'image'; + }, + /** * Whether an attachment can be embedded (audio or video). * @@ -3733,14 +3769,14 @@ AttachmentsBrowser = View.extend({ AttachmentView: wp.media.view.Attachment.Library }); - this.listenTo( this.controller, 'toggle:upload:attachment', _.bind( this.toggleUploader, this ) ); + this.controller.on( 'toggle:upload:attachment', this.toggleUploader, this ); this.controller.on( 'edit:selection', this.editSelection ); this.createToolbar(); + this.createUploader(); + this.createAttachments(); if ( this.options.sidebar ) { this.createSidebar(); } - this.createUploader(); - this.createAttachments(); this.updateContent(); if ( ! this.options.sidebar || 'errors' === this.options.sidebar ) { @@ -4049,8 +4085,8 @@ AttachmentsBrowser = View.extend({ }); // Add keydown listener to the instance of the Attachments view - this.attachments.listenTo( this.controller, 'attachment:keydown:arrow', this.attachments.arrowEvent ); - this.attachments.listenTo( this.controller, 'attachment:details:shift-tab', this.attachments.restoreFocus ); + this.controller.on( 'attachment:keydown:arrow', _.bind( this.attachments.arrowEvent, this.attachments ) ); + this.controller.on( 'attachment:details:shift-tab', _.bind( this.attachments.restoreFocus, this.attachments ) ); this.views.add( this.attachments ); @@ -7855,6 +7891,10 @@ EditorUploader = View.extend({ this.$document.on( 'dragstart dragend drop', _.bind( function( event ) { this.localDrag = event.type === 'dragstart'; + + if ( event.type === 'drop' ) { + this.containerDragleave(); + } }, this ) ); this.initialized = true;