This repository has been archived on 2024-04-08. You can view files and clone it, but cannot push or open issues or pull requests.
khosb/includes/tinymce/jscripts/tiny_mce/plugins/media/editor_plugin.js

1 line
9.6 KiB
JavaScript

(function(){var c=tinymce.makeMap("id,width,height,type"),b=tinymce.html.Node,e,a,f=tinymce.util.JSON,d;e=[["Flash","d27cdb6e-ae6d-11cf-96b8-444553540000","application/x-shockwave-flash","http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"],["ShockWave","166b1bca-3f9c-11cf-8075-444553540000","application/x-director","http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0"],["WindowsMedia","6bf52a52-394a-11d3-b153-00c04f79faa6,22d6f312-b0f6-11d0-94ab-0080c74c7e95,05589fa1-c356-11ce-bf01-00aa0055595a","application/x-mplayer2","http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701"],["QuickTime","02bf25d5-8c17-4b23-bc80-d3488abddc6b","video/quicktime","http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0"],["RealMedia","cfcdaa03-8be4-11cf-b84b-0020afbbccfa","audio/x-pn-realaudio-plugin","http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"],["Java","8ad9c840-044e-11d1-b3e9-00805f499d93","application/x-java-applet","http://java.sun.com/products/plugin/autodl/jinstall-1_5_0-windows-i586.cab#Version=1,5,0,0"],["Silverlight","dfeaf541-f3e1-4c24-acac-99c30715084a","application/x-silverlight-2"],["Video"]];tinymce.create("tinymce.plugins.MediaPlugin",{init:function(l,g){var p=this,j={},k,n,o,h;function m(q){return q&&q.nodeName==="IMG"&&l.dom.hasClass(q,"mceItemMedia")}p.editor=l;p.url=g;a="";for(k=0;k<e.length;k++){h=e[k][0];o={name:h,clsids:tinymce.explode(e[k][1]||""),mimes:tinymce.explode(e[k][2]||""),codebase:e[k][3]};for(n=0;n<o.clsids.length;n++){j["clsid:"+o.clsids[n]]=o}for(n=0;n<o.mimes.length;n++){j[o.mimes[n]]=o}j["mceItem"+h]=o;j[h.toLowerCase()]=o;a+=(a?"|":"")+h}tinymce.each(l.getParam("media_types","video=mp4,m4v,ogv,webm;silverlight=xap;flash=swf;shockwave=dcr;quicktime=mov,qt,mpg,mp3,mpeg;shockwave=dcr;windowsmedia=avi,wmv,wm,asf,asx,wmx,wvx;realmedia=rm,ra,ram;java=jar").split(";"),function(t){var q,s,r;t=t.split(/=/);s=tinymce.explode(t[1].toLowerCase());for(q=0;q<s.length;q++){r=j[t[0].toLowerCase()];if(r){j[s[q]]=r}}});a=new RegExp("write("+a+")\\(([^)]+)\\)");p.lookup=j;l.onPreInit.add(function(){l.schema.addValidElements("object[id|style|width|height|classid|codebase|*],param[name|value],embed[id|style|width|height|type|src|*],video[*],audio[*],source[*]");l.parser.addNodeFilter("object,embed,video,audio,script",function(q){var r=q.length;while(r--){p.objectToImg(q[r])}});l.serializer.addNodeFilter("img",function(q){var r=q.length,s;while(r--){s=q[r];if((s.attr("class")||"").indexOf("mceItemMedia")!==-1){p.imgToObject(s)}}})});if(l.settings.content_css!==false){l.contentCSS.push(g+"/css/content.css")}l.onInit.add(function(){if(l.theme&&l.theme.onResolveName){l.theme.onResolveName.add(function(q,r){if(r.name==="img"&&l.dom.hasClass(r.node,"mceItemMedia")){r.name="media"}})}if(l&&l.plugins.contextmenu){l.plugins.contextmenu.onContextMenu.add(function(r,s,q){if(q.nodeName==="IMG"&&q.className.indexOf("mceItemMedia")!==-1){s.add({title:"media.edit",icon:"media",cmd:"mceMedia"})}})}});l.addCommand("mceMedia",function(){var r,q;q=l.selection.getNode();if(m(q)){r=f.parse(l.dom.getAttrib(q,"data-mce-json"));tinymce.each("id,width,height,class".split(","),function(s){var t=l.dom.getAttrib(q,s);if(t){r[s]=t}});r.type=p.getType(q.className).name.toLowerCase()}if(!r){r={type:"flash",video:{sources:[]},params:{}}}l.windowManager.open({file:g+"/media.htm",width:430+parseInt(l.getLang("media.delta_width",0)),height:470+parseInt(l.getLang("media.delta_height",0)),inline:1},{plugin_url:g,data:r})});l.addButton("media",{title:"media.desc",cmd:"mceMedia"});l.onNodeChange.add(function(r,q,s){q.setActive("media",m(s))})},getInfo:function(){return{longname:"Media",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/media",version:tinymce.majorVersion+"."+tinymce.minorVersion}},dataToImg:function(m,n){var l=this.editor,o=l.documentBaseURI,j,h,g;function k(p){if(!p){return p}if(n){return o.toAbsolute(p)}else{return l.convertURL(p,"src","object")}}m.params.src=k(m.params.src);h=m.video.attrs;if(h){h.src=k(h.src)}if(h){h.poster=k(h.poster)}j=m.video.sources;if(j){for(i=0;i<j.length;i++){j[i].src=k(j[i].src)}}g=this.editor.dom.create("img",{id:m.id,style:m.style,src:this.url+"/img/trans.gif","class":"mceItemMedia mceItem"+this.getType(m.type).name,"data-mce-json":f.serialize(m,"'")});g.width=m.width||"320";g.height=m.height||"240";return g},dataToHtml:function(g,h){return this.editor.serializer.serialize(this.dataToImg(g,h))},htmlToData:function(j){var h,g,k;k={type:"flash",video:{sources:[]},params:{}};h=this.editor.parser.parse(j);g=h.getAll("img")[0];if(g){k=f.parse(g.attr("data-mce-json"));k.type=this.getType(g.attr("class")).name.toLowerCase();tinymce.each("id,width,height,class".split(","),function(l){var m=g.attr(l);if(m){k[l]=m}})}return k},getType:function(k){var h,g,j;g=tinymce.explode(k," ");for(h=0;h<g.length;h++){j=this.lookup[g[h]];if(j){return j}}},imgToObject:function(r){var l=this.editor,u,y,g,z,q,x,p,h,w,o,n,s,v,k,j,m,t;x=f.parse(r.attr("data-mce-json"));n=this.getType(r.attr("class"));t=r.attr("data-mce-style");if(!t){t=r.attr("style");if(t){t=l.dom.serializeStyle(l.dom.parseStyle(t,"img"))}}if(this.editor.settings.media_use_script){replacement=new b("script",1).attr("type","text/javascript");q=new b("#text",3);q.value="write"+n.name+"("+f.serialize(tinymce.extend(x.params,{width:r.attr("width"),height:r.attr("height")}))+");";replacement.append(q);r.replace(replacement);return}if(n.name==="Video"&&x.video.sources[0]){u=new b("video",1).attr(tinymce.extend({id:r.attr("id"),width:r.attr("width"),height:r.attr("height"),style:t},x.video.attrs));if(x.video.attrs){j=x.video.attrs.poster}h=x.video.sources;for(s=0;s<h.length;s++){if(/\.mp4$/.test(h[s].src)){k=h[s].src}}if(!h[0].type){u.attr("src",h[0].src);h.splice(0,1)}for(s=0;s<h.length;s++){p=new b("source",1).attr(h[s]);p.shortEnded=true;u.append(p)}if(k){x.params.src=l.getParam("flash_video_player_url",this.url+"/img/flv_player.swf");m="";flashVars=l.getParam("flash_video_player_flashvars",{url:"$url",poster:"$poster"});tinymce.each(flashVars,function(B,A){B=B.replace(/\$url/,k||"");B=B.replace(/\$poster/,j||"");if(B.length>0){m+=(m?"&":"")+A+"="+escape(B)}});x.params.flashvars=m;w=l.getParam("flash_video_player_params",{allowfullscreen:true,allowscriptaccess:true});tinymce.each(w,function(B,A){x.params[A]=""+B});n=this.getType("flash")}else{x.params.src=""}}if(x.params.src){y=new b("object",1).attr({id:r.attr("id"),width:r.attr("width"),height:r.attr("height"),style:t});tinymce.each(tinymce.explode("name,bgcolor,align,vspace,hspace"),function(A){if(x[A]){y.attr(A,x[A])}});for(z in x.params){o=new b("param",1);o.shortEnded=true;q=x.params[z];if(z==="src"&&n.name==="WindowsMedia"){z="url"}o.attr({name:z,value:q});y.append(o)}if(this.editor.getParam("media_strict",true)){y.attr({data:x.params.src,type:n.mimes[0]})}else{y.attr({classid:"clsid:"+n.clsids[0],codebase:n.codebase});g=new b("embed",1);g.shortEnded=true;g.attr({id:r.attr("id"),width:r.attr("width"),height:r.attr("height"),style:t,type:n.mimes[0]});for(z in x.params){g.attr(z,x.params[z])}tinymce.each(tinymce.explode("name,bgcolor,align,vspace,hspace"),function(A){if(x[A]){g.attr(A,x[A])}});y.append(g)}if(x.object_html){q=new b("#text",3);q.raw=true;q.value=x.object_html;y.append(q)}if(u){u.append(y)}}if(u){if(x.video_html){q=new b("#text",3);q.raw=true;q.value=x.video_html;u.append(q)}}if(u||y){r.replace(u||y)}else{r.remove()}},objectToImg:function(v){var C,g,x,D,E,r,t,q,y,w,n,m,A,u,h,B,l,z=this.lookup,j,s,p=this.editor.settings.url_converter,k=this.editor.settings.url_converter_scope;function o(F){return new tinymce.html.Serializer({inner:true,validate:false}).serialize(F)}if(!v.parent){return}if(v.name==="script"){if(v.firstChild){j=a.exec(v.firstChild.value)}if(!j){return}l=j[1];B={video:{},params:f.parse(j[2])};t=B.params.width;q=B.params.height}B=B||{video:{},params:{}};D=new b("img",1);D.attr({src:this.url+"/img/trans.gif"});E=v.name;if(E==="video"){x=v;C=v.getAll("object")[0];g=v.getAll("embed")[0];t=x.attr("width");q=x.attr("height");r=x.attr("id");B.video={attrs:{},sources:[]};s=B.video.attrs;for(E in x.attributes.map){s[E]=x.attributes.map[E]}u=v.attr("src");if(u){B.video.sources.push({src:p.call(k,u,"src","video")})}h=x.getAll("source");for(w=0;w<h.length;w++){u=h[w].remove();B.video.sources.push({src:p.call(k,u.attr("src"),"src","source"),type:u.attr("type"),media:u.attr("media")})}if(s.poster){s.poster=p.call(k,s.poster,"poster","video")}}if(v.name==="object"){C=v;g=v.getAll("embed")[0]}if(v.name==="embed"){g=v}if(C){t=t||C.attr("width");q=q||C.attr("height");y=y||C.attr("style");r=r||C.attr("id");A=C.getAll("param");for(w=0;w<A.length;w++){m=A[w];E=m.remove().attr("name");if(!c[E]){B.params[E]=m.attr("value")}}B.params.src=B.params.src||C.attr("data")}if(g){t=t||g.attr("width");q=q||g.attr("height");y=y||g.attr("style");r=r||g.attr("id");for(E in g.attributes.map){if(!c[E]&&!B.params[E]){B.params[E]=g.attributes.map[E]}}}if(B.params.movie){B.params.src=B.params.src||B.params.movie;delete B.params.movie}if(B.params.src){B.params.src=p.call(k,B.params.src,"src","object")}if(x){l=z.video.name}if(C&&!l){l=(z[(C.attr("clsid")||"").toLowerCase()]||z[(C.attr("type")||"").toLowerCase()]||{}).name}if(g&&!l){l=(z[(g.attr("type")||"").toLowerCase()]||{}).name}v.replace(D);if(g){g.remove()}if(C){n=o(C.remove());if(n){B.object_html=n}}if(x){n=o(x.remove());if(n){B.video_html=n}}D.attr({id:r,"class":"mceItemMedia mceItem"+(l||"Flash"),style:y,width:t||"320",height:q||"240","data-mce-json":f.serialize(B,"'")})}});tinymce.PluginManager.add("media",tinymce.plugins.MediaPlugin)})();