Brion VIBBER has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/314313

Change subject: WIP: optional integration of TMH video.js into MMV
......................................................................

WIP: optional integration of TMH video.js into MMV

Similar to the mwembed popup transform, but not quite. :)
Currently using iframe embed

Todo:
* show play cursor on the placeholders
* autoplay
* use inline hidden player instead of iframe
* fix for aspect ratio
* fix on resize
* make loading not suck

Change-Id: I2343d913936d5b077a56fa9caff1f534dcaf7b75
---
M TimedMediaHandler.hooks.php
M TimedMediaHandler.php
M TimedMediaTransformOutput.php
A resources/mmv.tmh.js
4 files changed, 85 insertions(+), 4 deletions(-)


  git pull 
ssh://gerrit.wikimedia.org:29418/mediawiki/extensions/TimedMediaHandler 
refs/changes/13/314313/1

diff --git a/TimedMediaHandler.hooks.php b/TimedMediaHandler.hooks.php
index beeffa7..f2735d8 100644
--- a/TimedMediaHandler.hooks.php
+++ b/TimedMediaHandler.hooks.php
@@ -32,7 +32,7 @@
        // But for now we register them dynamically, because they are config 
dependent,
        // while we have two players
        public static function resourceLoaderRegisterModules( &$resourceLoader 
) {
-               global $wgTmhWebPlayer;
+               global $wgTmhWebPlayer, $wgTmhUseMultimediaViewer;
 
                $baseExtensionResource = [
                        'localBasePath' => __DIR__,
@@ -189,6 +189,16 @@
                                                'targets' => [ 'mobile', 
'desktop' ],
                                        ],
                        ];
+
+                       if ( $wgTmhUseMultimediaViewer ) {
+                               $resourceModules['mmv.tmh'] = 
$baseExtensionResource + [
+                                       'scripts' => 'resources/mmv.tmh.js',
+                                       'targets' => [ 'desktop' ],
+                                       'dependencies' => [
+                                               'mmv'
+                                       ],
+                               ];
+                       }
                }
 
                $resourceLoader->register( $resourceModules );
@@ -201,7 +211,8 @@
                $wgResourceModules, $wgExcludeFromThumbnailPurge,
                $wgFileExtensions, $wgTmhEnableMp4Uploads, 
$wgExtensionAssetsPath,
                $wgMwEmbedModuleConfig, $wgEnableLocalTimedText, 
$wgTmhFileExtensions,
-               $wgTmhTheoraTwoPassEncoding, $wgTmhWebPlayer, 
$wgWikimediaJenkinsCI;
+               $wgTmhTheoraTwoPassEncoding, $wgTmhWebPlayer, 
$wgWikimediaJenkinsCI,
+               $wgTmhUseMultimediaViewer;
 
                // set config for parser tests
                if ( isset( $wgWikimediaJenkinsCI ) && $wgWikimediaJenkinsCI  
=== true ) {
@@ -227,6 +238,14 @@
                        }
                }
 
+               if ( $wgTmhUseMultimediaViewer ) {
+                       global $wgMediaViewerExtensions;
+                       $formats = [ 'ogg', 'oga', 'ogv', 'ogm', 'opus', 
'webm', 'mp4' ];
+                       foreach ( $formats as $ext ) {
+                               $wgMediaViewerExtensions[$ext] = 'mmv.tmh';
+                       }
+               }
+
                if ( $wgTmhWebPlayer === 'mwembed' ) {
                        if ( !class_exists( 'MwEmbedResourceManager' ) ) {
                                echo "TimedMediaHandler requires the 
MwEmbedSupport extension.\n";
diff --git a/TimedMediaHandler.php b/TimedMediaHandler.php
index ada8f33..59bae64 100644
--- a/TimedMediaHandler.php
+++ b/TimedMediaHandler.php
@@ -20,6 +20,9 @@
 // Configure the webplayer. Allowed values: mwembed, videojs
 $wgTmhWebPlayer = 'mwembed';
 
+// Integrate with MultimediaViewer extension
+$wgTmhUseMultimediaViewer = false;
+
 /*** MwEmbed module configuration: *********************************/
 
 // Show a warning to the user if they are not using an html5 browser with high 
quality ogg support
diff --git a/TimedMediaTransformOutput.php b/TimedMediaTransformOutput.php
index 36ce32a..cea2977 100644
--- a/TimedMediaTransformOutput.php
+++ b/TimedMediaTransformOutput.php
@@ -1,6 +1,6 @@
 <?php
 
-class TimedMediaTransformOutput extends MediaTransformOutput {
+class TimedMediaTransformOutput extends ThumbnailImage {
        private static $serial = 0;
 
        // Video file sources object lazy init in getSources()
@@ -139,11 +139,14 @@
                        $this->width = $options['override-width'];
                }
 
-               if ( $this->useImagePopUp() && $wgTmhWebPlayer === 'mwembed' ) {
+               if ( $wgTmhWebPlayer === 'mwembed' && $this->useImagePopUp() ) {
                        $res = $this->getImagePopUp();
+               } else if ( $wgTmhWebPlayer === 'videojs' && 
$this->useImagePlaceholder() ) {
+                       $res = $this->getImagePlaceholder();
                } else {
                        $res = $this->getHtmlMediaTagOutput();
                }
+
                $this->width = $oldWidth;
                $this->height = $oldHeight;
                return $res;
@@ -164,6 +167,11 @@
                        && $this->getPlayerWidth() < $wgMinimumVideoPlayerSize
                        // Do not do pop-up if its going to be the same size as 
inline player anyways
                        && $this->getPlayerWidth() < 
$this->getPopupPlayerWidth();
+       }
+
+       private function useImagePlaceholder() {
+               global $wgTmhUseMultimediaViewer;
+               return $this->isVideo && !$this->fillwindow && !$this->inline;
        }
 
        /**
@@ -243,6 +251,20 @@
        }
 
        /**
+        * Return a plain-image version of the image
+        */
+       private function getImagePlaceholder() {
+               $poster = $this->getUrl();
+               $thumb = new ThumbnailImage( $this->file, $poster, false, [
+                       'width' => intval( $this->width ),
+                       'height' => intval( $this->height ),
+               ] );
+               return $thumb->toHtml( [
+                       'desc-link' => true,
+               ] );
+       }
+
+       /**
         * Sort media by bandwidth, but with things not wide enough at end
         *
         * The list should be in preferred source order, so we want the file
diff --git a/resources/mmv.tmh.js b/resources/mmv.tmh.js
new file mode 100644
index 0000000..cb551c0
--- /dev/null
+++ b/resources/mmv.tmh.js
@@ -0,0 +1,37 @@
+( function ( mw, $ ) {
+
+  $( document ).on( 'mmv-metadata.tmh', function ( e ) {
+    var formats = [ 'ogg', 'oga', 'ogv', 'ogm', 'webm', 'mp4', 'm4a', 'm4v' ];
+    var extension = e.image.filePageTitle.ext;
+    if ( $.inArray( extension, formats ) !== -1 ) {
+      // do stuff
+      console.log('e.viewer', e.viewer);
+      console.log('e.image', e.image);
+      console.log('e.imageInfo', e.imageInfo);
+      /*
+      e.viewer
+      e.imageInfo.url
+      this.progressBar = viewer.ui.panel.progressBar;
+      this.$container = viewer.ui.canvas.$imageDiv;
+      var width = $( window ).width(),
+        height = this.viewer.ui.canvas.$imageWrapper.height();
+      */
+
+      var viewer = e.viewer,
+        image = e.image,
+        $container = viewer.ui.canvas.$imageDiv;
+
+      var iframe = document.createElement( 'iframe' ),
+        $iframe = $( iframe );
+      $iframe.attr( {
+        width: $container.width(),
+        height: $container.height(),
+        border: 0,
+        src: image.filePageLink + '?embedplayer=yes'
+      } );
+      
+      $container.empty().append( $iframe );
+    }
+  } );
+
+}( mediaWiki, jQuery ) );

-- 
To view, visit https://gerrit.wikimedia.org/r/314313
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I2343d913936d5b077a56fa9caff1f534dcaf7b75
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/extensions/TimedMediaHandler
Gerrit-Branch: master
Gerrit-Owner: Brion VIBBER <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to