uxmedia.js.svn-base

来自「一个使用ssh+ext的例子。 希望对开发这个应用的人带来好处。仔细研究里面的」· SVN-BASE 代码 · 共 733 行 · 第 1/2 页

SVN-BASE
733
字号
/*
 * @class Ext.ux.Media,
 *        Ext.ux.MediaComponent (xtype: media),
 *        Ext.ux.MediaPanel     (xtype: mediapanel)
 *        Ext.ux.MediaWindow
 *
 * Version:  RC1
 * Author: Doug Hendricks. doug[always-At]theactivegroup.com
 * Copyright 2007-2008, Active Group, Inc.  All rights reserved.
 *
 ************************************************************************************
 *   This file is distributed on an AS IS BASIS WITHOUT ANY WARRANTY;
 *   without even the implied warranty of MERCHANTABILITY or
 *   FITNESS FOR A PARTICULAR PURPOSE.
 ************************************************************************************

 License: ux.Media classes are licensed under the terms of
 the Open Source LGPL 3.0 license.  Commercial use is permitted to the extent
 that the code/component(s) do NOT become part of another Open Source or Commercially
 licensed development library or toolkit without explicit permission.

 Donations are welcomed: http://donate.theactivegroup.com

 License details: http://www.gnu.org/licenses/lgpl.html

 Notes: the <embed> tag is NOT used(or necessary) in this implementation
 Version:  Rc1
           Adds inline media rendering within markup: <div><script>document.write(String(new Ext.ux.Media(mediaCfg)));</script></div>
           New extensible classes :
              ux.Media
              ux.MediaComponent
              ux.MediaPanel

           Solves the Firefox reinitialization problem for Ext.Components with embedded <OBJECT> tags
           when the upstream DOM is reflowed.

           See Mozilla https://bugzilla.mozilla.org/show_bug.cgi?id=262354

 Version:  .31 Fixes to canned WMV config.
 Version:  .3  New class Heirarchy.  Adds renderMedia(mediaCfg) method for refreshing
               a mediaPanels body with a new/current mediaCfg.
 Version:  .2  Adds JW FLV Player Support and enhances mediaClass defaults mechanism.
 Version:  .11 Modified width/height defaults since CSS does not seem to
                honor height/width rules
 Version:  .1  initial release

 mediaCfg: {Object}
     { mediaType : mediaClass defined by ux.Media.mediaTypes[mediaClass]
      ,url       : Url resource to load when rendered
      ,requiredVersion : may specify a specific player/plugin version (for use with inline plugin updates where implemented)
      ,loop      : (true/false) (@macro enabled)
      ,scripting : (true/false) (@macro enabled)
      ,start     : (true/false) (@macro enabled)
      ,volume    : (number) audio volume level (@macro enabled)
      ,height    : (defaults 100%) (@macro enabled)
      ,width     : (defaults 100%) (@macro enabled)
      ,autoSize  : (true/false) If true the rendered <object> consumes 100% height/width of its
                     containing Element.  Actual container height/width are available to macro substitution
                     engine.
      ,controls  : optional: show plugins control menu (true/false) (@macro enabled)
      ,unsupportedText: (String,DomHelper cfg) Text to render if plugin is not installed/available.
      ,listeners  : {"mouseover": function() {}, .... } DOM listeners to set each time the Media is rendered.
      ,params   : { }  members/values unique to Plugin provider
     }

*/
(function(){

    /*
    * Base Media Class
    */

    var ux = Ext.ux.Media = function(config){
        Ext.apply(this,config||{});
        this.toString = this.mediaMarkup;
        this.initMedia();
        };

    ux.mediaTypes =
     {
       "PDF" : Ext.apply({
                tag     :'object'
               ,cls     : 'x-media x-media-pdf'
               ,type    : "application/pdf"
               ,style   :{position:'absolute',top:'0px',left:'0px','z-index':11002}
               ,data    : "@url"
               ,autoSize:true
               ,params  : { src : "@url" }

               },Ext.isIE?{classid :"CLSID:CA8A9780-280D-11CF-A24D-444553540000"}:false)

      ,"WMV" : Ext.apply(
              {tag      :'object'
              ,cls      : 'x-media x-media-wmv'
              ,type      :'video/x-ms-wmv'
              ,data     : "@url"
              ,params  : {
                  src          : "@url"
                 ,url          : "@url"
                 ,autostart    : "@start"
                 ,showcontrols : "@controls"
               }
               },Ext.isIE?{classid :"CLSID:6BF52A52-394A-11d3-B153-00C04F79FAA6"}:false)

       ,"SWF" :  Ext.apply({
                  tag      :'object'
                 ,cls      : 'x-media x-media-swf'
                 ,type     : 'application/x-shockwave-flash'
                 ,data     : "@url"
                 ,scripting: 'sameDomain'
                 ,loop     :  true
                 ,start    :  false
                 ,unsupportedText : {cn:['The Adobe Flash Player{0}is required.',{tag:'br'},{tag:'a',cn:'The free download is available here.',href:'http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash',target:'_flash'}]}
                 ,params   : {
                      movie     : "@url"
                     ,menu      : "@controls"
                     ,play      : "@start"
                     ,quality   : "high"
                     ,allowscriptaccess : "@scripting"
                     ,bgcolor   : "#FFFFFF"
                     ,wmode     : "opaque"
                     ,loop      : "@loop"
                    }

                },Ext.isIE?{classid :"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
                           ,codebase:"http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"
                           }:false)
        ,"JWP" :  Ext.apply({
              tag      :'object'
             ,cls      : 'x-media x-media-swf x-media-flv'
             ,type     : 'application/x-shockwave-flash'
             ,data     : "@url"
             ,loop     :  false
             ,start    :  false
             ,params   : {
                 movie     : "@url"
                ,flashVars : {
                               autostart:'@start'
                              ,repeat   :'@loop'
                              ,height   :'@height'
                              ,width    :'@width'
                              ,id       : '@id'
                              }
                }

        },Ext.isIE?{classid :"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"}:false)
        ,"MOV" : Ext.apply({
                  tag      :'object'
                 ,cls      : 'x-media x-media-mov'
                 ,type     : "video/quicktime"
                 ,data     : "@url"
                 ,params   : {
                       src          : "@url"
                      ,autoplay     : "@start"
                      ,controller   : "@controls"
                      ,enablejavascript : "@scripting"
                             }
                 },Ext.isIE?
                        {  classid      :'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B'
                          ,codebase     :'http://www.apple.com/qtactivex/qtplugin.cab'
                          ,type         : 'application/x-oleobject'
                          ,params   : { src         : "@url"
                                       ,controller  :'@controls'
                                       ,autostart   :'@start'
                                      }
                    }:false)
        ,"REAL" : Ext.apply({
                    tag     :'object'
                   ,cls     : 'x-media x-media-real'
                   ,type    : "audio/x-pn-realaudio"
                   ,data    : "@url"
                   ,standby : "Loading Real Media Player components..."
                   ,params   : {
                              src        : "@url"
                             ,autostart  : "@start"
                             ,controller : "@controls"
                             ,controlls  : "@controls"
                             ,loop       : "@loop"
                             ,console    : "TES"
                             }

                    },Ext.isIE?{classid :"clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA"}:false)

        ,"SVG" : {
                  tag      : 'object'
                 ,cls      : 'x-media x-media-img x-media-svg'
                 ,type     : "image/svg+xml"
                 ,data     : "@url"
        }
        ,"GIF" : {
                  tag      : 'img'
                 ,cls      : 'x-media x-media-img x-media-gif'
                 ,src     : "@url"
        }
        ,"JPEG" : {
                  tag      : 'img'
                 ,cls      : 'x-media x-media-img x-media-jpeg'
                 ,src     : "@url"
        }
        ,"JP2" :{
                          tag      : 'object'
                         ,cls      : 'x-media x-media-img x-media-jp2'
                         ,type     : "image/jpeg2000-image"
                         ,data     : "@url"
                }

        ,"PNG" : {
                  tag      : 'img'
                 ,cls      : 'x-media x-media-img x-media-png'
                 ,src     : "@url"
        }
        ,"HTM" : {
                  tag      : 'iframe'
                 ,cls      : 'x-media x-media-html'
                 ,frameBorder : 0
                 ,style    : {overflow:'auto'}
                 ,src     : "@url"
        }
        ,"TXT" : {
                  tag      : 'object'
                 ,cls      : 'x-media x-media-text'
                 ,type     : "text/plain"
                 ,style    : {overflow:'auto'}
                 ,data     : "@url"
        }
        ,"SILVER" : {
              tag      : 'object'
             ,cls      : 'x-media x-media-silverlight'
             ,type      :"application/x-silverlight"
             ,data     : "@url"
        }

        ,"OFFICE" : {
              tag      : 'object'
             ,cls      : 'x-media x-media-office'
             ,type      :"application/x-msoffice"
             ,data     : "@url"
        }
        ,"XML" : {  //outright dangerous on IE !
              tag      : 'iframe'
             ,cls      : 'x-media x-media-xml'
             ,style    : {overflow:'auto'}
             ,src     : "@url"
        }
        ,"QTMIDI" : Ext.apply({
              tag      : 'object'
             ,cls      : 'x-media x-media-audio x-media-midi'
             ,type     : "audio/midi"
             ,style    : {overflow:'auto'}
             ,data     : "@url"
             ,params   : {autostart    :'@start'}

            },Ext.isIE?
             { classid      :'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B'
              ,codebase     :'http://www.apple.com/qtactivex/qtplugin.cab'
              ,type         : 'application/x-oleobject'
              ,params   : { src   : "@url"
                           ,controller   :'@controls'
                           ,autostart    :'@start'
                           ,enablejavascript : "@scripting"
                          }
              }
              :false)
        ,"QTMP3" : Ext.apply({
               tag      : 'object'
              ,cls      : 'x-media x-media-audio x-media-mpeg'
              ,type     : "audio/mpeg"
              ,data     : '@url'
              ,params   : {autostart    :'@start'}

             },Ext.isIE?
                  { classid      :'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B'
                   ,codebase     :'http://www.apple.com/qtactivex/qtplugin.cab'
                   ,type         : 'application/x-oleobject'
                   ,params   : { src   : "@url"
                                ,controller   :'@controls'
                                ,autostart    :'@start'
                                ,enablejavascript : "@scripting"
                               }
                   }
              :false)
       ,"QTWAV" : Ext.apply({
                 tag      : 'object'
                ,cls      : 'x-media x-media-audio x-media-wav'
                ,type     : "audio/wav"
                ,data     : '@url'
                ,params   : {autostart    :'@start'}
           },Ext.isIE?
                { classid      :'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B'
                 ,codebase     :'http://www.apple.com/qtactivex/qtplugin.cab'
                 ,type         : 'application/x-oleobject'
                 ,params   : { src   : "@url"
                              ,controller   :'@controls'
                              ,autostart    :'@start'
                              ,enablejavascript : "@scripting"
                             }
                 }
              :false)

    };


    Ext.apply(ux.prototype , {

         mediaObject     : null,
         mediaCfg        : null,
         mediaVersion    : null,
         requiredVersion : null,
         unsupportedText : null,


         /* Component Plugins Interface
           extends the Component instance with ux.Media.* interfaces
         */
         init        : function(component){

            if(component && this.getEl == undefined){
                Ext.applyIf(component,this);
            }

         },

         initMedia      : function(){ },

         onBeforeMedia  : function(mediaCfg, ct, domPosition ){

              var m = mediaCfg || this.mediaCfg, mt;

              if( m && (mt = this.getMediaType(m.mediaType)) ){

                  m.autoSize = (m.autoSize == undefined? mt.autoSize===true:m.autoSize===true);

                  //Calculate parent container size for macros (if available)
                  if(m.autoSize && (ct = Ext.isReady?Ext.get(ct||this.lastCt):null)){
                    m.height = ct.getHeight(true) || this.assert(m.height,'100%');
                    m.width  = ct.getWidth(true)  || this.assert(m.width ,'100%');
                  }

               }

        },

         onAfterMedia   : function(){
             //Reattach any DOM Listeners after rendering.
             var L = this.mediaCfg?this.mediaCfg.listeners:null;
             if(L && this.mediaObject){  this.mediaObject.on(L); }
         },

         getMediaType: function(type){
             return ux.mediaTypes[type];
         },

         assert : function(v,def){
              v= typeof v == 'function'?v.call(v.scope||null):v;
              return Ext.value(v ,def);
         },

         mediaMarkup : function(mediaCfg, width, height, ct){

             mediaCfg = mediaCfg ||this.mediaCfg;

             if(!mediaCfg){return '';}

             var m= Ext.apply({url:false,autoSize:false}, mediaCfg); //make a copy

             m.url = this.assert(m.url,false);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?