Changeset 1206


Ignore:
Timestamp:
08/12/10 19:06:46 (3 years ago)
Author:
pablo
Message:

Integrating embedder and API into testing tool.

Location:
trunk/js
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/js/bin-debug/jwplayer.js

    r1200 r1206  
    8484                        src: 'file', 
    8585                        type: 'type', 
    86                         media: 'media' 
     86                        media: 'media', 
     87                        'data-jw-width': 'width', 
     88                        'data-jw-bitrate': 'bitrate' 
     89                                 
    8790                }, 
    8891                video: { 
     
    160163                attributes = getAttributeList('source', attributes); 
    161164                var result = parseElement(domElement, attributes); 
    162                 result.width = 0; 
    163                 result.bitrate = 0; 
     165                result.width = result.width ? result.width : 0; 
     166                result.bitrate = result.bitrate ? result.bitrate : 0; 
    164167                return result; 
    165168        } 
     
    340343                 
    341344                this.callInternal = function(funcName, args) { 
    342                         if (_player && typeof _player[funcName] == "function") { 
     345                        if (typeof _player != "undefined" && typeof _player[funcName] == "function") { 
    343346                                if (args !== undefined) { 
    344347                                        return (_player[funcName])(args); 
     
    383386                getMute: function() { return this.callInternal('getMute'); }, 
    384387                getPlaylist: function() { return this.callInternal('getPlaylist'); }, 
    385                 getPlaylistItem: function(item) { return this.callInternal('getPlaylist')[item]; }, 
     388                getPlaylistItem: function(item) { 
     389                        if (item == undefined) item = 0; 
     390                        return this.getPlaylist()[item];  
     391                }, 
    386392                getPosition: function() { return this.callInternal('getPosition'); }, 
    387393                getState: function() { return this.callInternal('getState'); }, 
     
    416422                        return this;  
    417423                }, 
    418                 pause: function(state) { 
    419                         if (typeof state === "undefined") { 
    420                                 var state = this.getState(); 
    421                                 if (state == jwplayer.api.events.state.PAUSED) { 
    422                                         this.callInternal("play"); 
    423                                 } else { 
    424                                         this.callInternal("pause"); 
    425                                 } 
    426                         } else { 
    427                                 this.callInternal("pause", state);  
     424                pause: function() { 
     425                        var state = this.getState(); 
     426                        switch (state) { 
     427                        case jwplayer.api.events.state.PLAYING: 
     428                        case jwplayer.api.events.state.BUFFERING: 
     429                                this.callInternal("pause"); 
     430                                break; 
     431                        case jwplayer.api.events.state.PAUSED: 
     432                                this.callInternal("play"); 
     433                                break; 
    428434                        } 
    429435                        return this;  
     
    477483                        } else { 
    478484                                // Todo: register new object 
    479                                 return new jwplayer.api.PlayerAPI(_container);  
     485                                return jwplayer.api.addPlayer(new jwplayer.api.PlayerAPI(_container)); 
    480486                        } 
    481487                } else if (typeof identifier == 'number') { 
     
    495501        }; 
    496502         
    497         jwplayer.register = jwplayer.api.addPlayer = function(player) { 
     503        jwplayer.api.addPlayer = function(player) { 
    498504                for (var i in _players) { 
    499505                        if (_players[i] == player) { 
     
    561567                                        var html5player = jwplayer.embed.embedHTML5(this.api.container, player, this.config); 
    562568                                        this.api.setPlayer(html5player); 
     569                                        //TODO: Remove this once HTML5 player calls playerReady() 
    563570                                        this.api.playerReady({id:this.api.container.id}); 
    564571                                        break; 
     
    655662                        container.innerHTML = "<p>Embedded HTML5 player goes here</p>"; 
    656663                        // TODO: remove this requirement from the html5 player (sources instead of levels) 
    657                         return new (jwplayer.html5(container)).setup(jwplayer.utils.extend({sources:options.levels, playerready:'playerReady'}, jwplayer.embed.defaults, options)); 
     664                        var playerOptions = jwplayer.utils.extend({}, jwplayer.embed.defaults, options); 
     665                        if (playerOptions.levels && !playerOptions.sources) playerOptions.sources = options.levels; 
     666                        return new (jwplayer.html5(container)).setup(playerOptions); 
    658667                } else { 
    659668                        return null; 
     
    696705        jwplayer.api.PlayerAPI.prototype.setup = function(options, player) { 
    697706                this.config = options; 
    698                 jwplayer.register(this); 
    699707                return (new jwplayer.embed.Embedder(this)).embedPlayer(); 
    700708        }; 
  • trunk/js/src/api/jwplayer.api.js

    r1200 r1206  
    117117                 
    118118                this.callInternal = function(funcName, args) { 
    119                         if (_player && typeof _player[funcName] == "function") { 
     119                        if (typeof _player != "undefined" && typeof _player[funcName] == "function") { 
    120120                                if (args !== undefined) { 
    121121                                        return (_player[funcName])(args); 
     
    160160                getMute: function() { return this.callInternal('getMute'); }, 
    161161                getPlaylist: function() { return this.callInternal('getPlaylist'); }, 
    162                 getPlaylistItem: function(item) { return this.callInternal('getPlaylist')[item]; }, 
     162                getPlaylistItem: function(item) { 
     163                        if (item == undefined) item = 0; 
     164                        return this.getPlaylist()[item];  
     165                }, 
    163166                getPosition: function() { return this.callInternal('getPosition'); }, 
    164167                getState: function() { return this.callInternal('getState'); }, 
     
    193196                        return this;  
    194197                }, 
    195                 pause: function(state) { 
    196                         if (typeof state === "undefined") { 
    197                                 var state = this.getState(); 
    198                                 if (state == jwplayer.api.events.state.PAUSED) { 
    199                                         this.callInternal("play"); 
    200                                 } else { 
    201                                         this.callInternal("pause"); 
    202                                 } 
    203                         } else { 
    204                                 this.callInternal("pause", state);  
     198                pause: function() { 
     199                        var state = this.getState(); 
     200                        switch (state) { 
     201                        case jwplayer.api.events.state.PLAYING: 
     202                        case jwplayer.api.events.state.BUFFERING: 
     203                                this.callInternal("pause"); 
     204                                break; 
     205                        case jwplayer.api.events.state.PAUSED: 
     206                                this.callInternal("play"); 
     207                                break; 
    205208                        } 
    206209                        return this;  
     
    254257                        } else { 
    255258                                // Todo: register new object 
    256                                 return new jwplayer.api.PlayerAPI(_container);  
     259                                return jwplayer.api.addPlayer(new jwplayer.api.PlayerAPI(_container)); 
    257260                        } 
    258261                } else if (typeof identifier == 'number') { 
     
    272275        }; 
    273276         
    274         jwplayer.register = jwplayer.api.addPlayer = function(player) { 
     277        jwplayer.api.addPlayer = function(player) { 
    275278                for (var i in _players) { 
    276279                        if (_players[i] == player) { 
  • trunk/js/src/embed/jwplayer.embed.js

    r1200 r1206  
    3737                                        var html5player = jwplayer.embed.embedHTML5(this.api.container, player, this.config); 
    3838                                        this.api.setPlayer(html5player); 
     39                                        //TODO: Remove this once HTML5 player calls playerReady() 
    3940                                        this.api.playerReady({id:this.api.container.id}); 
    4041                                        break; 
     
    131132                        container.innerHTML = "<p>Embedded HTML5 player goes here</p>"; 
    132133                        // TODO: remove this requirement from the html5 player (sources instead of levels) 
    133                         return new (jwplayer.html5(container)).setup(jwplayer.utils.extend({sources:options.levels, playerready:'playerReady'}, jwplayer.embed.defaults, options)); 
     134                        var playerOptions = jwplayer.utils.extend({}, jwplayer.embed.defaults, options); 
     135                        if (playerOptions.levels && !playerOptions.sources) playerOptions.sources = options.levels; 
     136                        return new (jwplayer.html5(container)).setup(playerOptions); 
    134137                } else { 
    135138                        return null; 
     
    172175        jwplayer.api.PlayerAPI.prototype.setup = function(options, player) { 
    173176                this.config = options; 
    174                 jwplayer.register(this); 
    175177                return (new jwplayer.embed.Embedder(this)).embedPlayer(); 
    176178        }; 
  • trunk/js/test/index.php

    r1197 r1206  
    77<script type="text/javascript" src="settings.js"></script> 
    88<script type="text/javascript" src="../bin-debug/jwplayer.js"></script> 
     9<script type="text/javascript" src="../../html5/jwplayer.html5.js"></script> 
    910<script type="text/javascript"> 
    1011 
     
    237238   } 
    238239    
     240   function registerobjectembed() { 
     241           player = jwplayer('preview'); 
     242           player.setPlayer(document.getElementById('preview')); 
     243   } 
    239244    
    240245   function swfobjectembed(){ 
     
    244249                $('#preview').css('height',vrs['height']); 
    245250                $('#preview').html('<div id="container"></div>'); 
    246                 var player = ""; 
     251                var playerLocation = ""; 
    247252                var players = eval($('#player').val()); 
    248253                for (var plr in players){ 
    249254                        if (players[plr]['type'] == 'flash'){ 
    250                                 player = players[plr]['src']; 
     255                                playerLocation = players[plr]['src']; 
    251256                        } 
    252257                } 
    253258                swfobject.embedSWF( 
    254                         player, 
     259                        playerLocation, 
    255260                        'container', 
    256261                        vrs['width'], 
     
    260265                        vrs, 
    261266                        {allowfullscreen:'true',allowscriptaccess:'always'}, 
    262                         {id:'player',name:'player'} 
     267                        {id:'newPlayer',name:'newPlayer'} 
    263268                ); 
    264269                var lnk = 'http://developer.longtailvideo.com/trac/testing/'; 
    265270                $("#permalink").val(lnk+'?'+$.param(variables)); 
     271                player = jwplayer('newPlayer'); 
     272                player.setPlayer(document.getElementById('newPlayer')); 
    266273   } 
    267274 
     
    279286        } 
    280287 
    281         jwplayer('preview').setup($.extend(vrs, { 
     288        player = jwplayer('preview').setup($.extend(vrs, { 
    282289                "players": eval($('#player').val()), 
    283290                "events": events 
     
    307314        /** Reference to the player **/ 
    308315        var player; 
    309         /** When the player is ready and the API forms can be shown, display them. **/ 
    310         function playerReady(obj) { 
    311                 player = document.getElementById(obj['id']); 
    312         }; 
     316 
    313317        /** Get a variable from the player. **/ 
    314318        function getVariable(evt) { 
     
    339343                        } 
    340344                } 
    341                 player[typ](dat); 
     345                if (dat.toString == "") { 
     346                        player[typ](); 
     347                } else { 
     348                        player[typ](dat); 
     349                } 
    342350        }; 
    343351        /** Set a listener to the player. **/ 
     
    364372        function alertValue(obj) { 
    365373                var txt = ''; 
    366                 for (itm in obj) { 
    367                         if(typeof(obj[itm]) == 'object') { 
    368                                 txt += itm+':\n'; 
    369                                 for (ent in obj[itm]) { 
    370                                         txt += '  '+ent+': '+obj[itm][ent]+'\n'; 
    371                                 } 
    372                         } else { 
    373                                 txt += itm+': '+obj[itm]+'\n'; 
    374                         } 
    375                 } 
    376                 alert(txt); 
     374                if (typeof obj == "object") { 
     375                        for (itm in obj) { 
     376                                if(typeof(obj[itm]) == 'object') { 
     377                                        txt += itm+':\n'; 
     378                                        for (ent in obj[itm]) { 
     379                                                txt += '  '+ent+': '+obj[itm][ent]+'\n'; 
     380                                        } 
     381                                } else { 
     382                                        txt += itm+': '+obj[itm]+'\n'; 
     383                                } 
     384                        } 
     385                        alert(txt); 
     386                } else { 
     387                        alert(obj) 
     388                } 
    377389        }; 
    378390         
  • trunk/js/test/settings.js

    r1197 r1206  
    33  "html":{ 
    44    "default": "<div id='preview'><p>Testing is simple: choose an example, change the flashvars and see if it works.</p></div>", 
    5     "object": "<embed id='preview' name='preview' src='players/player-5.2.swf' width='470' height='320' bgcolor='#000000' allowscriptaccess='always' allowfullscreen='true' flashvars='file=http://content.longtailvideo.com/videos/flvplayer.flv' />", 
    6     "embed": "<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' width='470' height='320' id='preview' name='preview'><param name='movie' value='players/player-5.2.swf'><param name='allowfullscreen' value='true'> <param name='allowscriptaccess' value='always'> <param name='wmode' value='transparent'>  <param name='flashvars' value='file=http://content.longtailvideo.com/videos/flvplayer.flv'>", 
    7     "video": "<video id='preview' height='270' poster='files/bunny.jpg' src='files/bunny.mp4' width='480'></video>" 
     5    "object": "<embed id='preview' name='preview' src='players/player-5.3.swf' width='470' height='320' bgcolor='#000000' allowscriptaccess='always' allowfullscreen='true' flashvars='file=http://content.longtailvideo.com/videos/flvplayer.flv' />", 
     6    "embed": "<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' width='470' height='320' id='preview' name='preview'><param name='movie' value='players/player-5.3.swf'><param name='allowfullscreen' value='true'> <param name='allowscriptaccess' value='always'> <param name='wmode' value='transparent'>  <param name='flashvars' value='file=http://content.longtailvideo.com/videos/flvplayer.flv'>", 
     7    "video": "<video id='preview' height='270' poster='files/bunny.jpg' width='480'><source src='files/bunny.mp4'/></video>" 
    88  }, 
    99  /** The embed script to use **/ 
    1010  "script":{ 
    11     "none":"(function() {})", 
     11    "none":"registerobjectembed", 
    1212    "swfobject":"swfobjectembed", 
    1313    "jwembed":"jwplayersetup" 
     
    1515        /** Player versions to test. **/ 
    1616        "players": { 
     17                "flash-5.3":[{"type":"flash","src":"players/player-5.3.swf"}], 
    1718                "flash-5.2":[{"type":"flash","src":"players/player-5.2.swf"}], 
    1819                "flash-5.1":[{"type":"flash","src":"players/player-5.1.swf"}], 
Note: See TracChangeset for help on using the changeset viewer.