diff options
Diffstat (limited to 'plugins/jetpack/modules/videopress/js/media-video-widget-extensions.js')
-rw-r--r-- | plugins/jetpack/modules/videopress/js/media-video-widget-extensions.js | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/plugins/jetpack/modules/videopress/js/media-video-widget-extensions.js b/plugins/jetpack/modules/videopress/js/media-video-widget-extensions.js new file mode 100644 index 00000000..d7d9845c --- /dev/null +++ b/plugins/jetpack/modules/videopress/js/media-video-widget-extensions.js @@ -0,0 +1,52 @@ +window.wp = window.wp || {}; + +( function( wp ) { + if ( wp.mediaWidgets ) { + // Over-ride core media_video#mapMediaToModelProps to set the url based upon videopress_guid if it exists. + wp.mediaWidgets.controlConstructors.media_video.prototype.mapMediaToModelProps = ( function( + originalMapMediaToModelProps + ) { + return function( mediaFrameProps ) { + var newProps, originalProps, videoPressGuid; + originalProps = originalMapMediaToModelProps.call( this, mediaFrameProps ); + newProps = _.extend( {}, originalProps ); + + // API response on new media will have the guid at videopress.guid. + if ( mediaFrameProps.videopress && mediaFrameProps.videopress.guid ) { + videoPressGuid = mediaFrameProps.videopress.guid; + } + + // Selecting an existing VideoPress file will have the guid at .videopress_guid[ 0 ]. + if ( + ! videoPressGuid && + mediaFrameProps.videopress_guid && + mediaFrameProps.videopress_guid.length + ) { + videoPressGuid = mediaFrameProps.videopress_guid[ 0 ]; + } + + if ( videoPressGuid ) { + newProps = _.extend( {}, originalProps, { + url: 'https://videopress.com/v/' + videoPressGuid, + attachment_id: 0, + } ); + } + return newProps; + }; + } )( wp.mediaWidgets.controlConstructors.media_video.prototype.mapMediaToModelProps ); + + // Over-ride core media_video#isHostedVideo() to add support for videopress oembed urls. + wp.mediaWidgets.controlConstructors.media_video.prototype.isHostedVideo = ( function( + originalIsHostedVideo + ) { + return function( url ) { + var parsedUrl = document.createElement( 'a' ); + parsedUrl.href = url; + if ( 'videopress.com' === parsedUrl.hostname ) { + return true; + } + return originalIsHostedVideo.call( this, url ); + }; + } )( wp.mediaWidgets.controlConstructors.media_video.prototype.isHostedVideo ); + } +} )( window.wp ); |