media-video-widget-extensions.js 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. window.wp = window.wp || {};
  2. ( function( wp ) {
  3. if ( wp.mediaWidgets ) {
  4. // Over-ride core media_video#mapMediaToModelProps to set the url based upon videopress_guid if it exists.
  5. wp.mediaWidgets.controlConstructors.media_video.prototype.mapMediaToModelProps = ( function( originalMapMediaToModelProps ) {
  6. return function( mediaFrameProps ) {
  7. var newProps, originalProps, videoPressGuid;
  8. originalProps = originalMapMediaToModelProps.call( this, mediaFrameProps );
  9. newProps = _.extend( {}, originalProps );
  10. // API response on new media will have the guid at videopress.guid.
  11. if ( mediaFrameProps.videopress && mediaFrameProps.videopress.guid ) {
  12. videoPressGuid = mediaFrameProps.videopress.guid;
  13. }
  14. // Selecting an existing VideoPress file will have the guid at .videopress_guid[ 0 ].
  15. if ( ! videoPressGuid && mediaFrameProps.videopress_guid && mediaFrameProps.videopress_guid.length ) {
  16. videoPressGuid = mediaFrameProps.videopress_guid[ 0 ];
  17. }
  18. if ( videoPressGuid ) {
  19. newProps = _.extend( {}, originalProps, {
  20. url: 'https://videopress.com/v/' + videoPressGuid,
  21. attachment_id: 0
  22. });
  23. }
  24. return newProps;
  25. };
  26. }( wp.mediaWidgets.controlConstructors.media_video.prototype.mapMediaToModelProps ));
  27. // Over-ride core media_video#isHostedVideo() to add support for videopress oembed urls.
  28. wp.mediaWidgets.controlConstructors.media_video.prototype.isHostedVideo = (function( originalIsHostedVideo ) {
  29. return function( url ) {
  30. var parsedUrl = document.createElement( 'a' );
  31. parsedUrl.href = url;
  32. if ( 'videopress.com' === parsedUrl.hostname ) {
  33. return true;
  34. }
  35. return originalIsHostedVideo.call( this, url );
  36. };
  37. }( wp.mediaWidgets.controlConstructors.media_video.prototype.isHostedVideo ));
  38. }
  39. } )( window.wp );