diff --git a/src/admin/js/media-manager/sidebar-info.js b/src/admin/js/media-manager/sidebar-info.js index 64d4bfa..645a167 100644 --- a/src/admin/js/media-manager/sidebar-info.js +++ b/src/admin/js/media-manager/sidebar-info.js @@ -62,87 +62,159 @@ function getMediaTypeLabel( mimetype ) { } } +function injectCimoMetadata( { + model, + container, +} ) { + if ( ! model || ! container ) { + return + } + + // Prevent duplicate inserts + if ( container.querySelector( '.cimo-media-manager-metadata' ) ) { + return + } + + let customMetadata = model.get( 'cimo' ) || null + + if ( ! customMetadata || Object.keys( customMetadata ).length === 0 ) { + customMetadata = getCachedMetadata( + model.get( 'originalImageName' ) || model.get( 'filename' ) + ) + } + + if ( ! customMetadata ) { + return + } + + const customContent = document.createElement( 'div' ) + customContent.className = 'cimo-media-manager-metadata' + + const convertedFormatRaw = customMetadata.convertedFormat || model.get( 'mime' ) || '' + const mediaTypeLabel = getMediaTypeLabel( convertedFormatRaw ) + + let html = ` +
+ + + +

+ ${ escape( sprintf( __( '%s Optimized by Cimo', 'cimo-image-optimizer' ), mediaTypeLabel ) ) } +

+
+ + ` + + customContent.innerHTML = html + container.appendChild( customContent ) +} + domReady( () => { // Only proceed if wp.media is available (media library is loaded) - if ( typeof wp === 'undefined' || ! wp.media || ! wp.media.view || ! wp.media.view.Attachment || ! wp.media.view.Attachment.Details ) { + if ( + typeof wp === 'undefined' || + ! wp.media || + ! wp.media.view || + ! wp.media.view.Attachment || + ! wp.media.view.Attachment.Details + ) { return } - wp.media.view.Attachment.Details = wp.media.view.Attachment.Details.extend( { - template: function template( view ) { - const html = wp.media.template( 'attachment-details' )( view ) - const dom = document.createElement( 'div' ) - dom.innerHTML = html - - // Get the metadata from the model or the cache - let customMetadata = view.model.get( 'cimo' ) || null - - // If the attachment was just uploaded, the model data won't be available, fetch it from the cache - if ( ! customMetadata || Object.keys( customMetadata ).length === 0 ) { - customMetadata = getCachedMetadata( view.model.get( 'originalImageName' ) || view.model.get( 'filename' ) ) - } - - // TODO: Translate this - const details = dom.querySelector( '.attachment-info' ) - if ( customMetadata && details ) { - const customContent = document.createElement( 'div' ) - customContent.className = 'cimo-media-manager-metadata' - - const convertedFormatRaw = customMetadata.convertedFormat || view.model.get( 'mime' ) || '' - const mediaTypeLabel = getMediaTypeLabel( convertedFormatRaw ) - - let html = `
- -

${ escape( sprintf( __( '%s Optimized by Cimo', 'cimo-image-optimizer' ), mediaTypeLabel ) ) }

-
-