Author: andre
Date: 2010-04-09 17:52:28 +0200 (Fri, 09 Apr 2010)
New Revision: 41826
Modified:
openimages/trunk/src/main/webapp/oiplayer/js/jquery.oiplayer.js
Log:
refactored fullscreen() for Flash/FlowPlayer to work
Modified: openimages/trunk/src/main/webapp/oiplayer/js/jquery.oiplayer.js
===================================================================
--- openimages/trunk/src/main/webapp/oiplayer/js/jquery.oiplayer.js
2010-04-09 15:50:33 UTC (rev 41825)
+++ openimages/trunk/src/main/webapp/oiplayer/js/jquery.oiplayer.js
2010-04-09 15:52:28 UTC (rev 41826)
@@ -27,7 +27,7 @@
Value 'top' will add a css class of that name and will
hide/show controls on top of the player window.
Add a css class of your own to edit the appearance of
the controls (f.e. 'top dark').
*
- * @changes: timeleft indicator
+ * @changes: made fullscreen/window work with players in absolute positioned
elements
* @version: '$Id$'
*/
@@ -71,18 +71,18 @@
$(div).width(player.width).height(player.height);
if (config.controls && player.url != undefined) {
$(div).append(createControls());
- player.controls = $(div).find('div.controls');
- $(player.controls).width(player.width);
- $(player.controls).find('li.slider').width(player.width - 190);
+ player.ctrls = $(div).find('div.controls');
+ $(player.ctrls).width(player.width);
+ $(player.ctrls).find('li.slider').width(player.width - 190);
if (config.controls != true) { // append classes
- $(player.controls).addClass(config.controls);
+ $(player.ctrls).addClass(config.controls);
if (config.controls.indexOf('top') > -1) {
- $(player.controls).hide();
+ $(player.ctrls).hide();
} else {
- $(div).height( player.height +
$(player.controls).height() );
+ $(div).height( player.height +
$(player.ctrls).height() );
}
} else {
- $(div).height( player.height + $(player.controls).height()
);
+ $(div).height( player.height + $(player.ctrls).height() );
}
}
if (player.url == undefined) { // no compatible sources to play
@@ -102,61 +102,61 @@
});
if (config.controls) {
- $(pl.controls).find('li.play a').click(function(ev) {
+ $(pl.ctrls).find('li.play a').click(function(ev) {
ev.preventDefault();
if (pl.state == 'pause') {
pl.play();
- if ($(pl.controls).find('li.pause').length == 0) {
- $(pl.controls).find('li.play').addClass('pause');
+ if ($(pl.ctrls).find('li.pause').length == 0) {
+ $(pl.ctrls).find('li.play').addClass('pause');
}
$.oiplayer.follow(pl);
} else if (pl.state == 'play') {
pl.pause();
- $(pl.controls).find('li.play').removeClass('pause');
+ $(pl.ctrls).find('li.play').removeClass('pause');
} else {
start(pl);
}
//console.log("player state: " + pl.state);
});
- $(pl.controls).find('li.sound a').click(function(ev){
+ $(pl.ctrls).find('li.sound a').click(function(ev){
if (pl.state != 'init' && pl.state != 'ended') {
pl.mute();
- $(pl.controls).find('li.sound').toggleClass('muted');
+ $(pl.ctrls).find('li.sound').toggleClass('muted');
}
});
- $(pl.controls).find('li.screen a').click(function(ev){
+ $(pl.ctrls).find('li.screen a').click(function(ev){
ev.preventDefault();
$(ev.target).parent('div').css('border', '2px solid #c00');
fullscreen(pl);
});
if (pl.duration) { // else no use
- $(pl.controls).find("div.slider > div").slider({
+ $(pl.ctrls).find("div.slider > div").slider({
animate: true,
range: 'min',
value: (pl.start ? pl.start : 0),
max: Math.round(pl.duration)
});
- $(pl.controls).find("div.slider > div").bind('slide',
function(ev, ui) {
+ $(pl.ctrls).find("div.slider > div").bind('slide',
function(ev, ui) {
pos(pl, ui.value);
});
- $(pl.controls).find("div.slider >
div").bind('slidechange', function(ev, ui) {
+ $(pl.ctrls).find("div.slider > div").bind('slidechange',
function(ev, ui) {
if (ev.originalEvent != undefined &&
ev.originalEvent.type == "mouseup") {
pos(pl, ui.value);
}
});
- $(pl.controls).find("li.slider").after('<li
class="timeleft">-' + $.oiplayer.totime(pl.duration) + '</li>');
+ $(pl.ctrls).find("li.slider").after('<li
class="timeleft">-' + $.oiplayer.totime(pl.duration) + '</li>');
}
// show/hide
if (config.controls.indexOf('top') > -1) {
$(pl.div).hover(
function() {
- $(pl.controls).fadeIn();
+ $(pl.ctrls).fadeIn();
},
function() {
- $(pl.controls).fadeOut('slow');
+ $(pl.ctrls).fadeOut('slow');
}
);
}
@@ -166,13 +166,12 @@
function pos(player, pos) {
player.seek(pos);
- //var ctrls = $(player.div).find('ul.controls');
- $(player.controls).find('li.position').text( $.oiplayer.totime(pos) );
- $(player.controls).find('li.timeleft').text('-' +
$.oiplayer.totime(player.duration - pos) );
+ $(player.ctrls).find('li.position').text( $.oiplayer.totime(pos) );
+ $(player.ctrls).find('li.timeleft').text('-' +
$.oiplayer.totime(player.duration - pos) );
if (pos > 0) {
- $(player.controls).find('li.slider').addClass("changed");
+ $(player.ctrls).find('li.slider').addClass("changed");
} else {
- $(player.controls).find('li.slider').removeClass("changed");
+ $(player.ctrls).find('li.slider').removeClass("changed");
}
}
@@ -187,9 +186,9 @@
player.play();
if (player.config.controls) {
- var timer = $(player.controls).find('li.position');
- if ($(player.controls).find('li.pause').length == 0) {
- $(player.controls).find('li.play').addClass('pause');
+ var timer = $(player.ctrls).find('li.position');
+ if ($(player.ctrls).find('li.pause').length == 0) {
+ $(player.ctrls).find('li.play').addClass('pause');
}
$.oiplayer.follow(player);
}
@@ -201,10 +200,11 @@
player.owidth = player.width;
player.oheight = player.height;
}
+ var pos = player.position();
var window_w = $(window).width();
var window_h = $(window).height();
if (player.config.controls.indexOf('top') == -1) {
- window_h = window_h - $(player.controls).height(); // available
space
+ window_h = window_h - $(player.ctrls).height(); // available
space
}
var multi_w = window_w / player.owidth;
var multi_h = window_h / player.oheight;
@@ -220,8 +220,8 @@
player.width = window_w;
player.height = Math.floor(player.oheight * multi_w);
}
-
- if (player.origpos != null && player.myname != 'flowplayer') {
+ // move and resize stuff
+ if (player.origpos != null) {
$(player.origpos).after(player.div);
$('#oiplayer-fullscreen').remove();
$(player.origpos).remove();
@@ -230,11 +230,11 @@
$(player.div).find('.preview').width(player.width).height(player.height).css('margin-left',
'0');
$(player.div).find('div.player').width(player.width).height(player.height).css('margin-left',
'0');
$(player.div).find('div.controls').width(player.width).css('margin-left',
'0').find('li.slider').width(player.width - 190);
-
+
} else {
$(player.div).wrap('<div class="oiplayer-origpos" />');
player.origpos = $(player.div).closest('div.oiplayer-origpos');
- $('body').append('<div id="oiplayer-fullscreen"><div
class="oiplayer"></div><div class="overlay"></div></div>');
+ $('body').append('<div id="oiplayer-fullscreen"><div
class="overlay"></div></div>');
$('#oiplayer-fullscreen').append(player.div);
$(player.div).find('.preview').width(player.width).height(player.height);
@@ -242,26 +242,27 @@
$(player.div).find('div.controls').width(player.width).find('li.slider').width(player.width
- 190);
}
- if (player.state == 'play' && player.myname != 'flowplayer') {
player.play(); }
+ if (player.myname == 'flowplayer') { // recreate fp
+ var fp_id = player.player.id();
+ player.player.unload();
+ var pl_div = $(player.div).find('div.player');
+ $(pl_div).empty().attr('id', fp_id);
+ player.create(fp_id, player.url, player.config);
+ }
+
+ if (player.state == 'play') {
+ player.play();
+ }
+ if (player.myname == 'flowplayer') {
+ setTimeout(function() { player.seek(pos) }, 1000); // give fp time
to reload
+ }
$(player.player).width(player.width).height(player.height);
if (player.config.controls.indexOf('top') == -1) {
- $(player.div).width(player.width).height( player.height +
$(player.controls).height() ).css('margin-left', half);
+ $(player.div).width(player.width).height( player.height +
$(player.ctrls).height() ).css('margin-left', half);
} else {
$(player.div).width(player.width).height(player.height).css('margin-left',
half);
}
-
- // this last part is for flowplayer
- var pos;
- if (player.myname == 'flowplayer') {
- pos = parseInt(player.position());
-
//player.player.getScreen().animate({width:player.width,height:player.height});
- player.player.unload();
- if (player.state == 'play') { player.player.play(); }
- }
- $(player.div).find('object').attr("width",
player.width).attr("height", player.height);
- if (player.myname == 'flowplayer') {
- setTimeout(function() { player.seek(pos) }, 1500); // give fp
time to reinitialize
- }
+
}
/*
@@ -476,7 +477,6 @@
* @param player Object of player
*/
follow: function (player) {
- //var ctrls = $(player.div).find('ul.controls');
var pos = 0;
var progress = null;
//var sec = player.start;
@@ -491,20 +491,20 @@
//sec = Math.floor(pos);
//console.log("n: " + now + ", s: " + sec + ", pos: " + pos);
if (!isNaN(pos) && pos > 0 && pos != now) {
- $(player.controls).find('li.position').text(
$.oiplayer.totime(pos) );
- $(player.controls).find('div.slider >
div').slider('option', 'value', pos);
- $(player.controls).find('li.slider').addClass('changed');
+ $(player.ctrls).find('li.position').text(
$.oiplayer.totime(pos) );
+ $(player.ctrls).find('div.slider > div').slider('option',
'value', pos);
+ $(player.ctrls).find('li.slider').addClass('changed');
//console.log("left: " + left);
if (player.duration > 0) {
left = player.duration - pos;
- $(player.controls).find('li.timeleft').text("-" +
$.oiplayer.totime(left));
+ $(player.ctrls).find('li.timeleft').text("-" +
$.oiplayer.totime(left));
}
i = 0;
now = pos;
}
- if (pos < 1) {
$(player.controls).find('li.slider').removeClass('changed'); }
+ if (pos < 1) {
$(player.ctrls).find('li.slider').removeClass('changed'); }
if (now == pos) { i++; }
if (i > 9) {
//console.log("stopped after " + (i * 0.2) + " seconds.");
@@ -573,6 +573,7 @@
Player.prototype.info = function() { }
Player.prototype._init = function(el, url, config) {
+ this.el = el;
this.player = el;
this.url = url;
this.config = config;
@@ -589,7 +590,7 @@
this.state = 'init';
this.pos = 0;
- return this.player;
+ //return this.player;
}
function MediaPlayer() {
@@ -797,20 +798,23 @@
FlowPlayer.prototype = new Player();
FlowPlayer.prototype.init = function(el, url, config) {
this._init(el, url, config);
+ var div = document.createElement('div');
+ $(el).closest('div.oiplayer').html(div);
+ $(div).addClass('player');
+
+ return this.create(div, url, config);
+}
+FlowPlayer.prototype.create = function(el, url, config) {
var flwplayer = config.server + config.flash;
var duration = (this.duration == undefined ? 0 :
Math.round(this.duration));
-
var ctrls;
if (this.controls) {
- ctrls = { height: 24, autoHide: 'always', hideDelay: 2000, fullscreen:
true };
+ ctrls = { height: 24, autoHide: 'always', hideDelay: 2000, fullscreen:
false };
} else {
ctrls = null;
}
- var div = document.createElement('div');
- $(el).closest('div.oiplayer').html(div);
- $(div).addClass('player');
- this.player = $f(div, { src: flwplayer, width: this.width, height:
this.height, wmode: 'opaque' }, {
+ this.player = $f(el, { src: flwplayer, width: this.width, height:
this.height, wmode: 'opaque' }, {
clip: {
url: this.url,
autoPlay: this.autoplay,
@@ -874,6 +878,7 @@
return this.pos;
}
FlowPlayer.prototype.seek = function(pos) {
+ pos = parseInt(pos);
this.player.seek(pos);
}
FlowPlayer.prototype.info = function() {
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs