Нет описания

media-video-widget-extensions.js 1.8KB

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