From ca8bfe2df81479fb150a83ee7b5f19240da8e2eb Mon Sep 17 00:00:00 2001 From: Michael Dale Date: Wed, 25 Nov 2009 22:16:55 +0000 Subject: [PATCH] * added k-attribution link in credits --- js2/mwEmbed/libSequencer/mvFirefoggRender.js | 2 +- js2/mwEmbed/libSequencer/mvPlayList.js | 38 +++-- js2/mwEmbed/mv_embed.js | 19 ++- js2/mwEmbed/skins/ctrlBuilder.js | 39 ++--- js2/mwEmbed/skins/kskin/kskin.js | 19 ++- js2/mwEmbed/skins/kskin/playerSkin.css | 10 ++ js2/mwEmbed/skins/kskin/styles.css | 144 ------------------- 7 files changed, 84 insertions(+), 187 deletions(-) delete mode 100644 js2/mwEmbed/skins/kskin/styles.css diff --git a/js2/mwEmbed/libSequencer/mvFirefoggRender.js b/js2/mwEmbed/libSequencer/mvFirefoggRender.js index 0725c333cd..0c00040a73 100644 --- a/js2/mwEmbed/libSequencer/mvFirefoggRender.js +++ b/js2/mwEmbed/libSequencer/mvFirefoggRender.js @@ -27,7 +27,7 @@ mvFirefoggRender.prototype = { } ); // check for firefogg: - if ( this.myFogg.firefoggCheck() ) { + if ( this.myFogg.getFirefogg() ) { this.enabled = true; } else { this.enabled = false; diff --git a/js2/mwEmbed/libSequencer/mvPlayList.js b/js2/mwEmbed/libSequencer/mvPlayList.js index 204d9e8f1d..e0d9be42ac 100644 --- a/js2/mwEmbed/libSequencer/mvPlayList.js +++ b/js2/mwEmbed/libSequencer/mvPlayList.js @@ -312,6 +312,9 @@ mvPlayList.prototype = { } ); } }, + getSrc: function(){ + return this.src; + }, getSourceType:function() { js_log( 'data type of: ' + this.src + ' = ' + typeof ( this.data ) + "\n" + this.data ); this.srcType = null; @@ -1926,7 +1929,7 @@ var smilPlaylist = { doParse:function() { var _this = this; js_log( 'f:doParse smilPlaylist' ); - // @@todo get/parse meta that we are intersted in: + // @@todo get/parse meta that we are interested in: var meta_tags = this.data.getElementsByTagName( 'meta' ); var metaNames = { 'title':'', @@ -1941,13 +1944,13 @@ var smilPlaylist = { if ( $j( meta_elm ).attr( 'name' ) in metaNames ) { _this[ $j( meta_elm ).attr( 'name' ) ] = $j( meta_elm ).attr( 'content' ); } - // special check for wikiDesc + // Special check for wikiDesc if ( $j( meta_elm ).attr( 'name' ) == 'wikiDesc' ) { if ( meta_elm.firstChild ) _this.wikiDesc = meta_elm.firstChild.nodeValue; } } ); - // add transition objects: + // Add transition objects: var transition_tags = this.data.getElementsByTagName( 'transition' ); $j.each( transition_tags, function( i, trans_elm ) { if ( $j( trans_elm ).attr( "id" ) ) { @@ -1957,13 +1960,14 @@ var smilPlaylist = { } } ); js_log( 'loaded transitions:' + _this.transitions.length ); - // add seq (latter we will have support more than one seq tag) / more than one "track" + + // Add seq (latter we will have support more than one seq tag) / more than one "track" var seq_tags = this.data.getElementsByTagName( 'seq' ); $j.each( seq_tags, function( i, seq_elm ) { var inx = 0; // get all the clips for the given seq: $j.each( seq_elm.childNodes, function( i, mediaElement ) { - // ~complex~ @@todo to handlde a lot like "switch" "region" etc + // ~complex~ @@todo to handle a lot like "switch" "region" etc // js_log('process: ' + mediaElemnt.tagName); if ( typeof mediaElement.tagName != 'undefined' ) { if ( _this.tryAddMedia( mediaElement, inx ) ) { @@ -1989,14 +1993,15 @@ var smilPlaylist = { js_log( 'SMIL:tryAddMedia:' + mediaElement ); var _this = this; - // set up basic mvSMILClip send it the mediaElemnt & mvClip init: + // Set up basic mvSMILClip send it the mediaElemnt & mvClip init: var clipObj = { }; var cConfig = { - "id" : 'p_' + _this.id + '_c_' + order, - "pp" : this, // set the parent playlist object pointer - "order" : order - }; + "id" : 'p_' + _this.id + '_c_' + order, + "pp" : this, // set the parent playlist object pointer + "order" : order + }; var clipObj = new mvSMILClip( mediaElement, cConfig ); + // set optional params track if ( typeof track_id != 'undefined' ) clipObj["track_id"] = track_id; @@ -2012,7 +2017,6 @@ var smilPlaylist = { return true; } - // @@todo we could throw error details here once we integrate try catches everywhere :P return false; } } @@ -2059,12 +2063,16 @@ mvSMILClip.prototype = { // get supported media attr init non-set for ( var i = 0; i < mv_smil_ref_supported_attributes.length; i++ ) { var attr = mv_smil_ref_supported_attributes[i]; - if ( $j( sClipElm ).attr( attr ) ) { + if ( $j( sClipElm ).attr( attr ) ) { _this[attr] = $j( sClipElm ).attr( attr ); } } this['tagName'] = sClipElm.tagName; + // Fix url paths (if needed) + if( _this['src'] && _this.src.indexOf('/') != 0 && _this.src.indexOf('://') === -1) + _this['src'] = mw.absoluteUrl( _this['src'], mvClipInit.pp.getSrc() ); + if ( sClipElm.firstChild ) { this['wholeText'] = sClipElm.firstChild.nodeValue; js_log( "SET wholeText for: " + this['tagName'] + ' ' + this['wholeText'] ); @@ -2103,7 +2111,7 @@ mvSMILClip.prototype = { if ( !this.type && this.wholeText ) { this.type = 'text/html'; } - // also grab andy child param elements if present: + // Also grab any child param elements if present: if ( sClipElm.getElementsByTagName( 'param' )[0] ) { for ( var i = 0; i < sClipElm.getElementsByTagName( 'param' ).length; i++ ) { this.params[ sClipElm.getElementsByTagName( 'param' )[i].getAttribute( "name" ) ] = @@ -2112,7 +2120,9 @@ mvSMILClip.prototype = { } return this; }, - // returns the values of supported_attributes: + /** + * Returns the values of supported_attributes: + */ getAttributeObj:function() { var elmObj = { }; for ( var i = 0; i < mv_smil_ref_supported_attributes.length; i++ ) { diff --git a/js2/mwEmbed/mv_embed.js b/js2/mwEmbed/mv_embed.js index 9c29c4c187..e7874af08c 100644 --- a/js2/mwEmbed/mv_embed.js +++ b/js2/mwEmbed/mv_embed.js @@ -803,22 +803,26 @@ var global_req_cb = new Array(); // The global request callback array } }; - /* - * getAbsoluteUrl takes a src and returns the aboluste location given the document.URL + /** + * getAbsoluteUrl takes a src and returns the absolute location given the document.URL * @param {String} src path or url */ - $.absoluteUrl = function( src ){ + $.absoluteUrl = function( src, contextUrl ){ var pSrc = mw.parseUri( src ); if( pSrc.protocol != '') return src; - // Get the document path - var pDoc = mw.parseUri( document.URL ); + // Get parent Url location the context URL + if( contextUrl){ + var pUrl = mw.parseUri( contextUrl ); + } else { + var pUrl = mw.parseUri( document.URL ); + } // If a leading slash: if( src.indexOf( '/' ) == 1 ){ - return pDoc.protocol + '://' + pDoc.authority + src; + return pUrl.protocol + '://' + pUrl.authority + src; }else{ - return pDoc.protocol + '://' + pDoc.authority + pDoc.directory + src; + return pUrl.protocol + '://' + pUrl.authority + pUrl.directory + src; } }; /** @@ -1543,6 +1547,7 @@ function mv_jqueryBindings() { // Add the selector iObj['player_target'] = this.selector; mvJsLoader.doLoad( [ + 'mvBaseUploadInterface', 'mvFirefogg', 'mvFirefoggRender' ], function() { diff --git a/js2/mwEmbed/skins/ctrlBuilder.js b/js2/mwEmbed/skins/ctrlBuilder.js index 85c289150c..f9cb92eafb 100644 --- a/js2/mwEmbed/skins/ctrlBuilder.js +++ b/js2/mwEmbed/skins/ctrlBuilder.js @@ -90,21 +90,20 @@ ctrlBuilder.prototype = { * to be run once controls are attached to the dom */ addControlHooks:function( $tp ) { - // set up local pointer to the embedObj + // Set up local pointer to the embedObj var embedObj = this.embedObj; - var _this = this; - // var embed_id = (embedObj.pc!=null)?embedObj.pc.pp.id:embedObj.id; + var _this = this; if ( !$tp ) $tp = $j( '#' + embedObj.id ); - // add play hook: + // Add play hook: $tp.find( '.play-btn,.play-btn-large' ).unbind().btnBind().click( function() { embedObj.play(); } ); - // add recommend firefox if we have non-native playback: + // Add recommend firefox if we have non-native playback: if ( embedObj.doNativeWarningCheck() ) { $j( '#dc_' + embedObj.id ).hover( function() { @@ -146,17 +145,17 @@ ctrlBuilder.prototype = { } - // captions binding: + // Captions binding: $tp.find( '.timed-text' ).unbind().btnBind().click( function() { embedObj.showTextInterface(); } ); - // options binding: + // Options binding: $tp.find( '.options-btn' ).unbind().btnBind().click( function() { embedObj.doOptionsHTML(); } ); - // fullscreen binding: + // Fullscreen binding: $tp.find( '.fullscreen-btn' ).unbind().btnBind().click( function() { embedObj.fullscreen(); } ); @@ -208,11 +207,13 @@ ctrlBuilder.prototype = { } } } ); - // up the z-index of the default status indicator: + // Up the z-index of the default status indicator: $tp.find( '.play_head .ui-slider-handle' ).css( 'z-index', 4 ); $tp.find( '.play_head .ui-slider-range' ).addClass( 'ui-corner-all' ).css( 'z-index', 2 ); - // extended class list for jQuery ui themeing (we can probably refactor this with custom buffering highlighter) - $tp.find( '.play_head' ).append( this.getMvBufferHtml() ); + + // Extended class list for jQuery ui themeing + //(we can probably refactor this with custom buffering highlighter) + $tp.find( '.play_head' ).append( this.getBufferHtml() ); $opt = $j( '#mv_vid_options_' + embedObj.id ); // videoOptions ... @@todo should be merged with something more like kskin.js: @@ -236,9 +237,9 @@ ctrlBuilder.prototype = { } ); this.doVolumeBinding(); - // check if we have any custom skin hooks to run (only one per skin) - if ( this.addSkinControlHooks && typeof( this.addSkinControlHooks ) == 'function' ) - this.addSkinControlHooks(); + // Check if we have any custom skin Bindings to run + if ( this.addSkinControlBindings && typeof( this.addSkinControlBindings ) == 'function' ) + this.addSkinControlBindings(); }, doVolumeBinding:function() { var embedObj = this.embedObj; @@ -248,7 +249,8 @@ ctrlBuilder.prototype = { js_log( 'clicked volume control' ); $j( '#' + embedObj.id ).get( 0 ).toggleMute(); } ); - // add vertical volume display hover + + // Add vertical volume display hover if ( this.volume_layout == 'vertical' ) { // default volume binding: var hoverOverDelay = false; @@ -274,7 +276,7 @@ ctrlBuilder.prototype = { ); } - // setup slider: + // Setup play-head slider: var sliderConf = { range: "min", value: 80, @@ -302,7 +304,10 @@ ctrlBuilder.prototype = { $tp.find( '.volume-slider' ).slider( sliderConf ); }, - getMvBufferHtml:function() { + /* + * Gets the Buffer Html that overlays the playhead + */ + getBufferHtml:function() { return '
'; diff --git a/js2/mwEmbed/skins/kskin/kskin.js b/js2/mwEmbed/skins/kskin/kskin.js index ab5f7b9b2a..c7e42a70d5 100644 --- a/js2/mwEmbed/skins/kskin/kskin.js +++ b/js2/mwEmbed/skins/kskin/kskin.js @@ -3,7 +3,8 @@ */ loadGM( { - "mwe-credit-title" : "Title: $1" + "mwe-credit-title" : "Title: $1", + "mwe-kaltura-platform-title" : "Kaltura open source video platform" } ); var kskinConfig = { @@ -62,7 +63,10 @@ var kskinConfig = { } } }, - addSkinControlHooks: function() { + /** + * Adds the skin Control Bindings + */ + addSkinControlBindings: function() { var embedObj = this.embedObj; var _this = this; var $tp = $j( '#' + embedObj.id ); @@ -141,15 +145,22 @@ var kskinConfig = { embedObj = this.embedObj; var _this = this; $target = $j( '#' + embedObj.id + ' .menu-credits' ); + $target.html( '

' + gM( 'mwe-credits' ) + '

' + '
' + mv_get_loading_img() + '
' ); - + if( mw.conf.k_attribution == true ){ $target.append( - $j('
').addClass( 'k-attribution') + $j('
').addClass( 'k-attribution' ) + .attr({ + 'title': gM('mwe-kaltura-platform-title') + }) + .click( function(){ + window.location = 'http://kaltura.com'; + }) ); } diff --git a/js2/mwEmbed/skins/kskin/playerSkin.css b/js2/mwEmbed/skins/kskin/playerSkin.css index 30b9eab9dd..3f6bb44145 100644 --- a/js2/mwEmbed/skins/kskin/playerSkin.css +++ b/js2/mwEmbed/skins/kskin/playerSkin.css @@ -413,4 +413,14 @@ float: left; width: 90px; margin: 4px; +} + +.k-player .k-attribution{ + position:absolute; + bottom: 15px; + right : 62px; + background: url("images/kaltura_open_source_video_platform.png"); + width : 51px; + height : 12px; + cursor: pointer; } \ No newline at end of file diff --git a/js2/mwEmbed/skins/kskin/styles.css b/js2/mwEmbed/skins/kskin/styles.css deleted file mode 100644 index 96ddaf918a..0000000000 --- a/js2/mwEmbed/skins/kskin/styles.css +++ /dev/null @@ -1,144 +0,0 @@ - -/* player styles */ -.k-player { width:400px; height:340px; position:relative;} /* inline via jq */ -.k-player * { padding:0; margin:0;} /* inline via jq */ -.k-edit-bar { } -.k-edit-bar a { width:33px; padding: 1px 0 0; display:block; text-align:center; font-weight:bold; color:#888; text-decoration:none; background:#F2F2F2;} - -.k-video { width:400px; height:300px; background:#000; margin-bottom:1px;} /* h & w inline via jq */ -.k-control-bar { height:21px; padding: 2px 0 0 6px; margin-top:1px; background: url(images/ksprite.png) repeat-x 0 -81px; font: normal 11px arial,sans-serif; color:#555;} -.k-control-bar button, .k-control-bar div.ui-slider, .k-control-bar div.k-timer { float:left;} -.k-timer { margin-top:2px;} -.k-volume-slider { width:26px;} -.k-control-bar .k-options { width:50px; height:22px; text-transform:uppercase; margin-top:-2px; border: solid 1px #aaa; border-top:none; float:right; font: bold 11px arial,sans-serif; color:#555;} - -span.ui-icon.ui-icon-k-menu { width:auto; padding-left:2px; background:none; outline:none; cursor:default;} -.k-menu { opacity:0.9; filter:alpha(opacity=90); z-index:1; width:400px; height:300px; background:#181818; position:absolute; top:0px; left:0px;} /* h, w, top inline via jq top:15px*/ - -ul.k-menu-bar{ height:128px; padding: 0 0 5px;position:absolute; bottom:5px;right:0px; list-style: none outside none; background: url(images/ksprite.png) -99px -104px no-repeat;} /* eventually: mtop inline via jq */ -.k-menu-bar li a { display:block; width:49px; height:32px; margin-left:1px; text-indent:99999px; background: url(images/ksprite.png) -51px -110px no-repeat; overflow:hidden;} -.k-menu-bar li a:hover { background-position: -1px -110px;} - - -.k-menu-bar li.k-download-btn a { background-position: -51px -203px;} -.k-menu-bar li.k-download-btn a:hover { background-position: -1px -203px;} - -.k-menu-bar li.k-share-btn a { background-position: -51px -172px;} -.k-menu-bar li.k-share-btn a:hover { background-position: -1px -172px;} - -.k-menu-bar li.k-credits-btn a { background-position: -51px -141px;} -.k-menu-bar li.k-credits-btn a:hover { background-position: -1px -141px;} - - - -.k-menu-screens { width:320px; padding: 13px 10px 15px 15px; float:left;} /* w & h inline via jq */ -.k-menu-screens h2 { padding: 0 0 5px 1px; clear:both; font-size:12px; color:#666;} -.k-menu-screens p { margin: 6px 0;} -.k-menu-screens a { ;} -.k-menu-screens a img { border:none;} -.k-menu-screens ul { padding:0; margin: 6px 0 0; list-style: none outside none;} - -.k-edit-screen { width:370px; height:223px; padding-top:77px; text-align:center; background:#181818; color:#fff;} -.k-edit-screen div { } -.k-edit-screen a { color:#7BB8FC;} -.k-edit-screen a img { border:none;} - -/* end player */ - -.k-slide-window { overflow:hidden;} -.k-menu-screens .menu-credits ul { float:left;} -.k-menu-screens .menu-credits li { height:39px; padding: 11px 11px 11px 11px; margin-bottom:12px; display:block; background:#333;} -.k-menu-screens .menu-credits li a { padding:0; background:none;} -.k-menu-screens .menu-credits li img { float:left; background:blue;} -.k-menu-screens .menu-credits li div { height:39px; padding-left:11px; floats:left; overflow:hidden;} - -a.k-prev-credit, a.k-next-credit { width:65px; height:28px; margin: -13px auto -6px; display:block; background: url(images/ksprite.png) 0px -320px no-repeat;} -a.k-next-credit { margin: 0 0 1px; position:absolute; bottom:0; background-position: -0px -290px;} -a:hover.k-prev-credit { background-position: 0px -238px;} -a:hover.k-next-credit { background-position: 0px -260px;} - -.k-logo { margin:8px 0 0 1px; display:block;} - -.k_field_wrap { border: solid 1px #444; margin-bottom:7px;} -.k-screen.k-share button { width:70px; padding:2px 5px 3px; border:1px solid #000; float:right; background: #D4D4D4 url(images/ksprite.png) no-repeat -32px 0; color:#000; float:right;} -.k-menu textarea { width:100%; height:15px; border: solid 2px #000; border-bottom:none; border-right:none; background:transparent; color:#ccc; overflow:hidden;} - -.k-screen.k-share div.ui-state-highlight { width:90px; padding:2px 5px; border-color:#554926; float:left; background:none; color:#FFE96E;} -.k-screen.k-share div.ui-state-highlight a { color:#FFE96E; font-weight:bold;} -.k-screen.k-share div.ui-state-highlight a:hover { } - -.k-menu-screens li { height:14px; margin-bottom:6px;} -.k-menu-screens li a { padding-left:22px; background:url(images/ksprite.png) no-repeat -85px -274px; text-decoration:none;} -.k-menu-screens li a.active, .k-menu-screens li a:hover.active { background-position: -85px -247px;} -.k-menu-screens li a:hover { background-position: -85px -260px;} - -.k-options.ui-state-hover { color:blue;} - -.k-player .ui-state-default .ui-icon, .k-player .ui-state-hover .ui-icon {background:transparent url(images/ksprite.png) no-repeat scroll 0 -48px;} - -.k-player .ui-state-default .ui-icon-arrow-4-diag { background-position: 0 -32px;} /* fullscreen */ -.k-player .ui-state-hover .ui-icon-arrow-4-diag { background-position: -16px -32px;} -.k-player .ui-state-default .ui-icon-volume-on, .ui-state-hover .ui-icon-volume-off, { margin-left:-6px; background-position: -16px -48px;} -.k-player .ui-state-hover .ui-icon-volume-on, .ui-state-default .ui-icon-volume-off { margin-left:-6px; background-position: 0 -48px;} - -.k-player .ui-state-default .ui-icon-play { background:url(images/ksprite.png) no-repeat 0 0;} -.k-player .ui-state-hover .ui-icon-play { background-position: -16px 0;} - -.k-player .ui-state-default .ui-icon-pause { background:url(images/ksprite.png) no-repeat 0 -17px;} -.k-player .ui-state-hover .ui-icon-pause { background-position: -16px -17px;} - -.k-control-bar .ui-slider { height:8px; border: solid 1px #eee; margin: 4px 10px 0 7px; position:relative; background:url(images/ksprite.png) repeat-x 0 -350px;} -.k-control-bar .ui-slider-handle { width:8px; height:8px; top:0px; border: solid 1px #888; margin: -1px 0 0 -5px; display:block; position:relative; background: url(images/ksprite.png) no-repeat -67px -341px; position:absolute;} -.k-control-bar .ui-slider-range { height:8px; position:absolute; background: url(images/ksprite.png) repeat-x 0 -368px; -moz-border-radius:5px; -webkit-border-radius:5px;} -.k-control-bar .ui-slider-buffer { height:8px; position:absolute; background: url(images/ksprite.png) repeat-x 0 -359px; -moz-border-radius:5px; -webkit-border-radius:5px;} - -.k-control-bar .ui-slider.k-volume-slider { height:15px; margin: 2px 3px 0 -4px; /* ie = m: 3 3 0 -2 */ border:none; background-position: -66px -323px; -moz-border-radius:0px; -webkit-border-radius:0px;} -.k-control-bar .k-volume-slider a.ui-slider-handle { width:8px; height:18px; margin: -3px 5px 0 -1px; border:none; display:block; position:absolute; background:none;} -.k-control-bar .k-volume-slider a:hover.ui-slider-handle { border: solid 1px #999;} -.k-control-bar .k-volume-slider .ui-slider-range { height:17px; position:absolute; background: url(images/ksprite.png) repeat-x -66px -306px; -moz-border-radius:0; -webkit-border-radius:0;} - -.play-btn-large { width:120px; height:55px; background: url(images/ksprite.png) no-repeat 28px -433px; position:absolute; cursor:pointer;} /*.ui-state-default */ -.play-btn-large.ui-state-hover { background: url(images/ksprite.png) no-repeat 28px -377px; } - -.k-volume.ui-state-hover { margin-left:6px; } - -/* move to ie css */ -.k-volume-slider span, span.ui-icon-play, span.ui-icon-volume-on, button.k-fullscreen { *margin-top:-1px;} -span.ui-icon-volume-on { *margin-left:0 !important;} -.ui-state-hover.k-volume { *margin-left:0 !important;} -span.ui-icon-k-menu { *margin-top:3px;} -.k-control-bar .ui-slider.k-volume-slider { *margin-left:-2px;} -/* end IE css */ - -/* fixes for jquery.ui themes */ -.play-btn-large.ui-state-default{ border:none; } -.k-control-bar button{ border:none; background:transparent;} -.k-control-bar.ui-widget-header{ border:none; margin-top:0px;} - -ui-widget-content a { - text-decoration:underline; -} - -.ui-icon_link { - padding:0.4em 1em 0.4em 20px; - position:relative; - text-decoration:none; -} -.ui-icon_link span.ui-icon { - left:0.2em; - margin:-8px 5px 0 0; - position:absolute; - right:auto; - top:50%; -} -.ui-dialog-buttonpane { - padding:10px !important; -} - -.mv_clip_box_result { -border:thin solid #BBBBBB; -float:left; -overflow:hidden; -padding:10px; -} - -- 2.20.1