Author: andre
Date: 2010-03-16 13:40:44 +0100 (Tue, 16 Mar 2010)
New Revision: 41414

Modified:
   openimages/trunk/src/main/webapp/oiplayer/js/jquery.oiplayer.js
Log:
fixed binding issue that prevented from using more than 1 player on a page


Modified: openimages/trunk/src/main/webapp/oiplayer/js/jquery.oiplayer.js
===================================================================
--- openimages/trunk/src/main/webapp/oiplayer/js/jquery.oiplayer.js     
2010-03-16 11:15:01 UTC (rev 41413)
+++ openimages/trunk/src/main/webapp/oiplayer/js/jquery.oiplayer.js     
2010-03-16 12:40:44 UTC (rev 41414)
@@ -27,16 +27,16 @@
  * @version: '$Id$'
 */
 
-jQuery.fn.oiplayer = function(conf) {
-    return this.each(function() {
-        var self = this;
-        var config = jQuery.extend({    // example configuration
-            server : 'http://www.openimages.eu',
-            jar : '/player/cortado-ovt-stripped-wm_r38710.jar',
-            flash : '/player/plugins/flowplayer-3.1.1.swf',
-            controls : true
-        }, conf);
-        
+jQuery.fn.oiplayer = function(settings) {
+    var config = {
+        server : 'http://www.openimages.eu',
+        jar : '/player/cortado-ovt-stripped-wm_r38710.jar',
+        flash : '/player/plugins/flowplayer-3.1.1.swf',
+        controls : true
+    };
+    if (settings) $.extend(config, settings);
+    var players = new Array();
+    this.each(function() {
         var mediatags = $(this).find('video, audio');
         $.each(mediatags, function(i, mt) {
             var sources = $(mt).find('source');
@@ -49,7 +49,8 @@
             $(mt).wrap('<div class="oiplayer"><div 
class="player"></div></div>');
             var div = $(mt).closest('div.oiplayer');
             var player = createPlayer(mt, sources, config);
-            //console.log("info: " + player.info);
+            $(div).addClass(player.type);
+            //console.log("info: " + player.info);            
             var poster = createPoster(self, player);
             $(div).find('div.player').hide();
             $(div).prepend(poster);
@@ -57,64 +58,78 @@
             if ($.browser.msie) { 
                 //$('p.oiplayer-warn').hide(); // MSIE places stuff partly 
outside mediatag
             }
-
-            $(div).find('.preview').click(function(ev) {
-                ev.preventDefault();
-                start(player, div);
-            });     
             
             if (config.controls) {
                 $(div).append(createControls());
-                var ctrls = $(div).find('ul.controls');
+            }
+            
+            players.push(player);
+
+        }); // end for each
+        
+        /* html ready, bind controls */
+        $.each(players, function(i, pl) {
+            var el;
+            if (pl.myname == 'flowplayer') {
+                el = $(pl.player.getParent()).closest('div.oiplayer');
+            } else {
+                el = $(pl.player).closest('div.oiplayer');
+            }
+            
+            $(el).find('.preview').click(function(ev) {
+                ev.preventDefault();
+                start(pl, el);
+            });
                 
+            if (config.controls) {
+                var ctrls = $(el).find('ul.controls');
                 $(ctrls).find('li.play a').click(function(ev) {
                     ev.preventDefault();
-                    if (player.state == 'pause') {
-                        player.play();
+                    if (pl.state == 'pause') {
+                        pl.play();
                         if ($(ctrls).find('li.pause').length == 0) {
                             $(ctrls).find('li.play').addClass('pause');
                         }
                         var slider = $(ctrls).find("div.slider > div");
-                        $.oiplayer.follow(player, ctrls);
-                    } else if (player.state == 'play') {
-                        player.pause();
+                        $.oiplayer.follow(pl, ctrls);
+                    } else if (pl.state == 'play') {
+                        pl.pause();
                         $(ctrls).find('li.play').removeClass('pause');
                     } else {
-                        start(player, div);
+                        start(pl, el);
                     }
-                    //console.log("player state: " + player.state);
+                    //console.log("player state: " + pl.state);
                 });
-                
+
                 $(ctrls).find('li.sound a').click(function(ev){
-                    if (player.state != 'init') {
-                        player.mute();
+                    if (pl.state != 'init') {
+                        pl.mute();
                         $(ctrls).find('li.sound').toggleClass('off');
                     }
                 });
                 $(ctrls).find('li.screen a').click(function(ev){
                     ev.preventDefault();
-                    fullscreen(player, div);
+                    fullscreen(pl, el);
                 });
                 
-                //console.log("duration: " + player.duration + ", start: " + 
player.start);
-                if (player.duration) {  // else no use
+                if (pl.duration) {  // else no use
                     $(ctrls).find("div.slider > div").slider({
                             animate: 'fast',
                             range: 'min',
-                            value: (player.start ? player.start : 0),
-                            max: Math.round(player.duration)
+                            value: (pl.start ? pl.start : 0),
+                            max: Math.round(pl.duration)
                     });
                     $(ctrls).find("div.slider > div").bind('slide', 
function(ev, ui) {
-                        newPos(player, ctrls, ui.value);
+                        newPos(pl, ctrls, ui.value);
                     });
                     $(ctrls).find("div.slider > div").bind('slidechange', 
function(ev, ui) {
                         if (ev.originalEvent.type == "mouseup") { 
-                            newPos(player, ctrls, ui.value);
+                            newPos(pl, ctrls, ui.value);
                         }
                     });
                 }
-            }
-
+                
+            } // config.controls
         });
         
         return this; // plugin convention
@@ -191,7 +206,7 @@
         }
         
         $('div.player').find('object').attr("width", 
player.width).attr("height", player.height);
-        if (player.info.indexOf('flash') > -1) {
+        if (player.myname == 'flowplayer') {
             setTimeout(function() { player.seek(pos) }, 1500);   // give fp 
time to reinitialize
         }
     }
@@ -732,3 +747,4 @@
 FlowPlayer.prototype.info = function() {
     //return "Playing: " + this.url;
 }
+

_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to