­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ ­ (function( $ ) { 'use strict'; $(document).ready( function() { // Place the Replace Media section after the side metaboxes $('#media-replace-div').appendTo('#postbox-container-1'); }); })( jQuery ); // let asenhaMRVars = asenhaMR; // Open media modal on clicking Select New Media File button. // This is set with onclick="replaceMedia('mime/type')" on the button HTML function replaceMedia(originalAttachmentId,oldImageMimeType) { if ( oldImageMimeType ) { // There's a mime type defined. Do nothing. } else { // We're in the grid view of an image. Get the mime type form the file info in DOM. if ( jQuery('.details .file-type').length ) { var oldImageMimeTypeFromDom = jQuery('.details .file-type').html(); } // Sometimes .file-type div is not there, and instead, a second .filename div is used to display file type info else if ( jQuery('.details .filename:nth-child(2)').length ) { var oldImageMimeTypeFromDom = jQuery('.details .filename:nth-child(2)').html(); } // Replace 'File type:' in any language with empty string oldImageMimeTypeFromDom = oldImageMimeTypeFromDom.replace(/(.*?)<\/strong>/, ''); // Replace one blank spacing with an empty space / no space oldImageMimeType = oldImageMimeTypeFromDom.replace(' ', ''); } // https://codex.wordpress.org/Javascript_Reference/wp.media // https://github.com/ericandrewlewis/wp-media-javascript-guide // Instantiate the media frame mediaFrame = wp.media({ title: mediaReplace.selectMediaText, button: { text: mediaReplace.performReplacementText }, multiple: false // Enable/disable multiple select }); // Open the media dialog and store it in a variable var mediaFrameEl = jQuery(mediaFrame.open().el); // Open the "Upload files" tab on load mediaFrameEl.find('#menu-item-upload').click(); // When an image is selected mediaFrameEl.on('click', 'li.attachment', function(e) { var mimeTypeWarning = '
The selected image is of a different type than the image to replace. Please choose an image with the same type.
'; var selectedAttachment = mediaFrame.state().get('selection').first().toJSON(); var selectedAttachmentMimeType = selectedAttachment.mime; if ( oldImageMimeType != selectedAttachmentMimeType ) { jQuery('.media-frame-toolbar .media-toolbar-primary .mime-type-warning').remove(); jQuery('.media-frame-toolbar .media-toolbar-primary').prepend(mimeTypeWarning); jQuery('.media-frame-toolbar .media-toolbar-primary .media-button-select').prop('disabled', true); } else { jQuery('.media-frame-toolbar .media-toolbar-primary .mime-type-warning').remove(); jQuery('.media-frame-toolbar .media-toolbar-primary .media-button-select').prop('disabled', false); } }); // Make sure the "Drop files to upload" blue overlay is closed after dropping one or more files jQuery('.supports-drag-drop:not(.upload.php)').on( 'drop', function() { jQuery('.uploader-window').hide(); }); // When Perform Replacement button is clicked in the media frame... mediaFrame.on('select', function() { // Get media attachment details from the frame state var attachment = mediaFrame.state().get('selection').first().toJSON(); var newImageMimeType = attachment.mime; if ( oldImageMimeType == newImageMimeType ) { // Send the attachment id of the replacement / new image to our hidden input jQuery('#new-attachment-id-'+originalAttachmentId).val(attachment.id); if (jQuery('#new-attachment-id-'+originalAttachmentId).closest('.media-modal').length) { } else { // For media library list view // "Perform Replacement" button has been clicked. Submit the edit form, which includes 'new-attachment-id' jQuery('#new-attachment-id-'+originalAttachmentId).closest("form").submit(); jQuery(mediaFrame.close()); } } }); }