Open-Source PHP Framework - Designed for rapid development of performance-oriented scalable applications

/webroot/js/tinymce/plugins/media/js/media.js

[return to app]
1 tinyMCEPopup.requireLangPack();
2
3 var 
oldWidtholdHeightedurl;
4
5 if (
url tinyMCEPopup.getParam("media_external_list_url"))
6     
document.write('<script language="javascript" type="text/javascript" src="' +
 
tinyMCEPopup.editor.documentBaseURI.toAbsolute(url) + '"></script>');
7
8 function 
init() {
9     var 
pl ""fval;
10     var 
type "flash"fei;
11
12     
ed tinyMCEPopup.editor;
13
14     
tinyMCEPopup.resizeToInnerSize();
15     
document.forms[0]
16
17     
fe ed.selection.getNode();
18     if (/
mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(ed.dom.getAttrib(fe'class'))) {
19         
pl fe.title;
20
21         switch (
ed.dom.getAttrib(fe'class')) {
22             case 
'mceItemFlash':
23                 
type 'flash';
24                 break;
25
26             case 
'mceItemFlashVideo':
27                 
type 'flv';
28                 break;
29
30             case 
'mceItemShockWave':
31                 
type 'shockwave';
32                 break;
33
34             case 
'mceItemWindowsMedia':
35                 
type 'wmp';
36                 break;
37
38             case 
'mceItemQuickTime':
39                 
type 'qt';
40                 break;
41
42             case 
'mceItemRealMedia':
43                 
type 'rmp';
44                 break;
45         }
46
47         
document.forms[0].insert.value ed.getLang('update''Insert'true); 
48     }
49
50     
document.getElementById('filebrowsercontainer').innerHTML getBrowserHTML('filebrowser','src','media','media');
51     
document.getElementById('qtsrcfilebrowsercontainer').innerHTML =
 
getBrowserHTML('qtsrcfilebrowser','qt_qtsrc','media','media');
52     
document.getElementById('bgcolor_pickcontainer').innerHTML getColorPickerHTML('bgcolor_pick','bgcolor');
53
54     var 
html getMediaListHTML('medialist','src','media','media');
55     if (
html == "")
56         
document.getElementById("linklistrow").style.display 'none';
57     else
58         
document.getElementById("linklistcontainer").innerHTML html;
59
60     
// Resize some elements
61     
if (isVisible('filebrowser'))
62         
document.getElementById('src').style.width '230px';
63
64     
// Setup form
65     
if (pl != "") {
66         
pl tinyMCEPopup.editor.plugins.media._parse(pl);
67
68         switch (
type) {
69             case 
"flash":
70                 
setBool(pl'flash''play');
71                 
setBool(pl'flash''loop');
72                 
setBool(pl'flash''menu');
73                 
setBool(pl'flash''swliveconnect');
74                 
setStr(pl'flash''quality');
75                 
setStr(pl'flash''scale');
76                 
setStr(pl'flash''salign');
77                 
setStr(pl'flash''wmode');
78                 
setStr(pl'flash''base');
79                 
setStr(pl'flash''flashvars');
80             break;
81
82             case 
"qt":
83                 
setBool(pl'qt''loop');
84                 
setBool(pl'qt''autoplay');
85                 
setBool(pl'qt''cache');
86                 
setBool(pl'qt''controller');
87                 
setBool(pl'qt''correction');
88                 
setBool(pl'qt''enablejavascript');
89                 
setBool(pl'qt''kioskmode');
90                 
setBool(pl'qt''autohref');
91                 
setBool(pl'qt''playeveryframe');
92                 
setBool(pl'qt''tarsetcache');
93                 
setStr(pl'qt''scale');
94                 
setStr(pl'qt''starttime');
95                 
setStr(pl'qt''endtime');
96                 
setStr(pl'qt''tarset');
97                 
setStr(pl'qt''qtsrcchokespeed');
98                 
setStr(pl'qt''volume');
99                 
setStr(pl'qt''qtsrc');
100             break;
101
102             case 
"shockwave":
103                 
setBool(pl'shockwave''sound');
104                 
setBool(pl'shockwave''progress');
105                 
setBool(pl'shockwave''autostart');
106                 
setBool(pl'shockwave''swliveconnect');
107                 
setStr(pl'shockwave''swvolume');
108                 
setStr(pl'shockwave''swstretchstyle');
109                 
setStr(pl'shockwave''swstretchhalign');
110                 
setStr(pl'shockwave''swstretchvalign');
111             break;
112
113             case 
"wmp":
114                 
setBool(pl'wmp''autostart');
115                 
setBool(pl'wmp''enabled');
116                 
setBool(pl'wmp''enablecontextmenu');
117                 
setBool(pl'wmp''fullscreen');
118                 
setBool(pl'wmp''invokeurls');
119                 
setBool(pl'wmp''mute');
120                 
setBool(pl'wmp''stretchtofit');
121                 
setBool(pl'wmp''windowlessvideo');
122                 
setStr(pl'wmp''balance');
123                 
setStr(pl'wmp''baseurl');
124                 
setStr(pl'wmp''captioningid');
125                 
setStr(pl'wmp''currentmarker');
126                 
setStr(pl'wmp''currentposition');
127                 
setStr(pl'wmp''defaultframe');
128                 
setStr(pl'wmp''playcount');
129                 
setStr(pl'wmp''rate');
130                 
setStr(pl'wmp''uimode');
131                 
setStr(pl'wmp''volume');
132             break;
133
134             case 
"rmp":
135                 
setBool(pl'rmp''autostart');
136                 
setBool(pl'rmp''loop');
137                 
setBool(pl'rmp''autogotourl');
138                 
setBool(pl'rmp''center');
139                 
setBool(pl'rmp''imagestatus');
140                 
setBool(pl'rmp''maintainaspect');
141                 
setBool(pl'rmp''nojava');
142                 
setBool(pl'rmp''prefetch');
143                 
setBool(pl'rmp''shuffle');
144                 
setStr(pl'rmp''console');
145                 
setStr(pl'rmp''controls');
146                 
setStr(pl'rmp''numloop');
147                 
setStr(pl'rmp''scriptcallbacks');
148             break;
149         }
150
151         
setStr(plnull'src');
152         
setStr(plnull'id');
153         
setStr(plnull'name');
154         
setStr(plnull'vspace');
155         
setStr(plnull'hspace');
156         
setStr(plnull'bgcolor');
157         
setStr(plnull'align');
158         
setStr(plnull'width');
159         
setStr(plnull'height');
160
161         if ((
val ed.dom.getAttrib(fe"width")) != "")
162             
pl.width f.width.value val;
163
164         if ((
val ed.dom.getAttrib(fe"height")) != "")
165             
pl.height f.height.value val;
166
167         
oldWidth pl.width parseInt(pl.width) : 0;
168         
oldHeight pl.height parseInt(pl.height) : 0;
169     } else
170         
oldWidth oldHeight 0;
171
172     
selectByValue(f'media_type'type);
173     
changedType(type);
174     
updateColor('bgcolor_pick''bgcolor');
175
176     
TinyMCE_EditableSelects.init();
177     
generatePreview();
178 }
179
180 function 
insertMedia() {
181     var 
fedocument.forms[0], h;
182
183     
tinyMCEPopup.restoreSelection();
184
185     if (!
AutoValidator.validate(f)) {
186         
tinyMCEPopup.alert(ed.getLang('invalid_data'));
187         return 
false;
188     }
189
190     
f.width.value f.width.value == "" 100 f.width.value;
191     
f.height.value f.height.value == "" 100 f.height.value;
192
193     
fe ed.selection.getNode();
194     if (
fe != null && /mceItem(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)/.test(ed.dom.getAttrib(fe,
 
'class'))) {
195         switch (
f.media_type.options[f.media_type.selectedIndex].value) {
196             case 
"flash":
197                 
fe.className "mceItemFlash";
198                 break;
199
200             case 
"flv":
201                 
fe.className "mceItemFlashVideo";
202                 break;
203
204             case 
"shockwave":
205                 
fe.className "mceItemShockWave";
206                 break;
207
208             case 
"qt":
209                 
fe.className "mceItemQuickTime";
210                 break;
211
212             case 
"wmp":
213                 
fe.className "mceItemWindowsMedia";
214                 break;
215
216             case 
"rmp":
217                 
fe.className "mceItemRealMedia";
218                 break;
219         }
220
221         if (
fe.width != f.width.value || fe.height != f.height.value)
222             
ed.execCommand('mceRepaint');
223
224         
fe.title serializeParameters();
225         
fe.width f.width.value;
226         
fe.height f.height.value;
227         
fe.style.width f.width.value + (f.width.value.indexOf('%') == -'px' '');
228         
fe.style.height f.height.value + (f.height.value.indexOf('%') == -'px' '');
229         
fe.align f.align.options[f.align.selectedIndex].value;
230     } else {
231         
'<img src="' tinyMCEPopup.getWindowArg("plugin_url") + '/img/trans.gif"' ;
232
233         switch (
f.media_type.options[f.media_type.selectedIndex].value) {
234             case 
"flash":
235                 
+= ' class="mceItemFlash"';
236                 break;
237
238             case 
"flv":
239                 
+= ' class="mceItemFlashVideo"';
240                 break;
241
242             case 
"shockwave":
243                 
+= ' class="mceItemShockWave"';
244                 break;
245
246             case 
"qt":
247                 
+= ' class="mceItemQuickTime"';
248                 break;
249
250             case 
"wmp":
251                 
+= ' class="mceItemWindowsMedia"';
252                 break;
253
254             case 
"rmp":
255                 
+= ' class="mceItemRealMedia"';
256                 break;
257         }
258
259         
+= ' title="' serializeParameters() + '"';
260         
+= ' width="' f.width.value '"';
261         
+= ' height="' f.height.value '"';
262         
+= ' align="' f.align.options[f.align.selectedIndex].value '"';
263
264         
+= ' />';
265
266         
ed.execCommand('mceInsertContent'falseh);
267     }
268
269     
tinyMCEPopup.close();
270 }
271
272 function 
updatePreview() {
273     var 
document.forms[0], type;
274
275     
f.width.value f.width.value || '320';
276     
f.height.value f.height.value || '240';
277
278     
type getType(f.src.value);
279     
selectByValue(f'media_type'type);
280     
changedType(type);
281     
generatePreview();
282 }
283
284 function 
getMediaListHTML() {
285     if (
typeof(tinyMCEMediaList) != "undefined" && tinyMCEMediaList.length 0) {
286         var 
html "";
287
288         
html += '<select id="linklist" name="linklist" style="width: 250px"
 onchange="this.form.src.value=this.options[this.selectedIndex].value;updatePreview();">'
;
289         
html += '<option value="">---</option>';
290
291         for (var 
i=0i<tinyMCEMediaList.lengthi++)
292             
html += '<option value="' tinyMCEMediaList[i][1] + '">' tinyMCEMediaList[i][0] + '</option>';
293
294         
html += '</select>';
295
296         return 
html;
297     }
298
299     return 
"";
300 }
301
302 function 
getType(v) {
303     var 
foicelxdocument.forms[0];
304
305     
fo ed.getParam("media_types",
 
"flash=swf;flv=flv;shockwave=dcr;qt=mov,qt,mpg,mp3,mp4,mpeg;shockwave=dcr;wmp=avi,wmv,wm,asf,asx,wmx,wvx;rmp=rm,ra
 ,ram"
).split(';');
306
307     
// YouTube
308     
if (v.match(/watch\?v=(.+)(.*)/)) {
309         
f.width.value '425';
310         
f.height.value '350';
311         
f.src.value 'http://www.youtube.com/v/' v.match(/v=(.*)(.*)/)[0].split('=')[1];
312         return 
'flash';
313     }
314
315     
// Google video
316     
if (v.indexOf('http://video.google.com/videoplay?docid=') == 0) {
317         
f.width.value '425';
318         
f.height.value '326';
319         
f.src.value 'http://video.google.com/googleplayer.swf?docId=' +
 
v.substring('http://video.google.com/videoplay?docid='.length) + '&hl=en';
320         return 
'flash';
321     }
322
323     for (
i=0i<fo.lengthi++) {
324         
fo[i].split('=');
325
326         
el c[1].split(',');
327         for (
x=0x<el.lengthx++)
328         if (
v.indexOf('.' el[x]) != -1)
329             return 
c[0];
330     }
331
332     return 
null;
333 }
334
335 function 
switchType(v) {
336     var 
getType(v), documentd.forms[0];
337
338     if (!
t)
339         return;
340
341     
selectByValue(d.forms[0], 'media_type't);
342     
changedType(t);
343
344     
// Update qtsrc also
345     
if (== 'qt' && f.src.value.toLowerCase().indexOf('rtsp://') != -1) {
346         
alert(ed.getLang("media_qt_stream_warn"));
347
348         if (
f.qt_qtsrc.value == '')
349             
f.qt_qtsrc.value f.src.value;
350     }
351 }
352
353 function 
changedType(t) {
354     var 
document;
355
356     
d.getElementById('flash_options').style.display 'none';
357     
d.getElementById('flv_options').style.display 'none';
358     
d.getElementById('qt_options').style.display 'none';
359     
d.getElementById('shockwave_options').style.display 'none';
360     
d.getElementById('wmp_options').style.display 'none';
361     
d.getElementById('rmp_options').style.display 'none';
362
363     if (
t)
364         
d.getElementById('_options').style.display 'block';
365 }
366
367 function 
serializeParameters() {
368     var 
documentd.forms[0], '';
369
370     switch (
f.media_type.options[f.media_type.selectedIndex].value) {
371         case 
"flash":
372             
+= getBool('flash''play'true);
373             
+= getBool('flash''loop'true);
374             
+= getBool('flash''menu'true);
375             
+= getBool('flash''swliveconnect'false);
376             
+= getStr('flash''quality');
377             
+= getStr('flash''scale');
378             
+= getStr('flash''salign');
379             
+= getStr('flash''wmode');
380             
+= getStr('flash''base');
381             
+= getStr('flash''flashvars');
382         break;
383
384         case 
"qt":
385             
+= getBool('qt''loop'false);
386             
+= getBool('qt''autoplay'true);
387             
+= getBool('qt''cache'false);
388             
+= getBool('qt''controller'true);
389             
+= getBool('qt''correction'false'none''full');
390             
+= getBool('qt''enablejavascript'false);
391             
+= getBool('qt''kioskmode'false);
392             
+= getBool('qt''autohref'false);
393             
+= getBool('qt''playeveryframe'false);
394             
+= getBool('qt''targetcache'false);
395             
+= getStr('qt''scale');
396             
+= getStr('qt''starttime');
397             
+= getStr('qt''endtime');
398             
+= getStr('qt''target');
399             
+= getStr('qt''qtsrcchokespeed');
400             
+= getStr('qt''volume');
401             
+= getStr('qt''qtsrc');
402         break;
403
404         case 
"shockwave":
405             
+= getBool('shockwave''sound');
406             
+= getBool('shockwave''progress');
407             
+= getBool('shockwave''autostart');
408             
+= getBool('shockwave''swliveconnect');
409             
+= getStr('shockwave''swvolume');
410             
+= getStr('shockwave''swstretchstyle');
411             
+= getStr('shockwave''swstretchhalign');
412             
+= getStr('shockwave''swstretchvalign');
413         break;
414
415         case 
"wmp":
416             
+= getBool('wmp''autostart'true);
417             
+= getBool('wmp''enabled'false);
418             
+= getBool('wmp''enablecontextmenu'true);
419             
+= getBool('wmp''fullscreen'false);
420             
+= getBool('wmp''invokeurls'true);
421             
+= getBool('wmp''mute'false);
422             
+= getBool('wmp''stretchtofit'false);
423             
+= getBool('wmp''windowlessvideo'false);
424             
+= getStr('wmp''balance');
425             
+= getStr('wmp''baseurl');
426             
+= getStr('wmp''captioningid');
427             
+= getStr('wmp''currentmarker');
428             
+= getStr('wmp''currentposition');
429             
+= getStr('wmp''defaultframe');
430             
+= getStr('wmp''playcount');
431             
+= getStr('wmp''rate');
432             
+= getStr('wmp''uimode');
433             
+= getStr('wmp''volume');
434         break;
435
436         case 
"rmp":
437             
+= getBool('rmp''autostart'false);
438             
+= getBool('rmp''loop'false);
439             
+= getBool('rmp''autogotourl'true);
440             
+= getBool('rmp''center'false);
441             
+= getBool('rmp''imagestatus'true);
442             
+= getBool('rmp''maintainaspect'false);
443             
+= getBool('rmp''nojava'false);
444             
+= getBool('rmp''prefetch'false);
445             
+= getBool('rmp''shuffle'false);
446             
+= getStr('rmp''console');
447             
+= getStr('rmp''controls');
448             
+= getStr('rmp''numloop');
449             
+= getStr('rmp''scriptcallbacks');
450         break;
451     }
452
453     
+= getStr(null'id');
454     
+= getStr(null'name');
455     
+= getStr(null'src');
456     
+= getStr(null'align');
457     
+= getStr(null'bgcolor');
458     
+= getInt(null'vspace');
459     
+= getInt(null'hspace');
460     
+= getStr(null'width');
461     
+= getStr(null'height');
462
463     
s.length s.substring(0s.length 1) : s;
464
465     return 
s;
466 }
467
468 function 
setBool(plpn) {
469     if (
typeof(pl[n]) == "undefined")
470         return;
471
472     
document.forms[0].elements["_" n].checked pl[n] != 'false';
473 }
474
475 function 
setStr(plpn) {
476     var 
document.forms[0], f.elements[(!= null "_" '') + n];
477
478     if (
typeof(pl[n]) == "undefined")
479         return;
480
481     if (
e.type == "text")
482         
e.value pl[n];
483     else
484         
selectByValue(f, (!= null "_" '') + npl[n]);
485 }
486
487 function 
getBool(pndtvfv) {
488     var 
document.forms[0].elements["_" n].checked;
489
490     
tv typeof(tv) == 'undefined' 'true' "'" jsEncode(tv) + "'";
491     
fv typeof(fv) == 'undefined' 'false' "'" jsEncode(fv) + "'";
492
493     return (
== d) ? '' + (':' tv ',' ":\'" fv "\',");
494 }
495
496 function 
getStr(pnd) {
497     var 
document.forms[0].elements[(!= null "_" "") + n];
498     var 
e.type == "text" e.value e.options[e.selectedIndex].value;
499
500     if (
== 'src')
501         
tinyMCEPopup.editor.convertURL(v'src'null);
502
503     return ((
== || == '') ? '' ":'" jsEncode(v) + "',");
504 }
505
506 function 
getInt(pnd) {
507     var 
document.forms[0].elements[(!= null "_" "") + n];
508     var 
e.type == "text" e.value e.options[e.selectedIndex].value;
509
510     return ((
== || == '') ? '' ":" v.replace(/[^0-9]+/g'') + ",");
511 }
512
513 function 
jsEncode(s) {
514     
s.replace(new RegExp('\\\\''g'), '\\\\');
515     
s.replace(new RegExp('"''g'), '\\"');
516     
s.replace(new RegExp("'"'g'), "\\'");
517
518     return 
s;
519 }
520
521 function 
generatePreview(c) {
522     var 
document.forms[0], document.getElementById('prev'), ''clsplntypecodebasewphpnw,
 
nh;
523
524     
p.innerHTML '<!-- x --->';
525
526     
nw parseInt(f.width.value);
527     
nh parseInt(f.height.value);
528
529     if (
f.width.value != "" && f.height.value != "") {
530         if (
f.constrain.checked) {
531             if (
== 'width' && oldWidth != 0) {
532                 
wp nw oldWidth;
533                 
nh Math.round(wp nh);
534                 
f.height.value nh;
535             } else if (
== 'height' && oldHeight != 0) {
536                 
hp nh oldHeight;
537                 
nw Math.round(hp nw);
538                 
f.width.value nw;
539             }
540         }
541     }
542
543     if (
f.width.value != "")
544         
oldWidth nw;
545
546     if (
f.height.value != "")
547         
oldHeight nh;
548
549     
// After constrain
550     
pl serializeParameters();
551
552     switch (
f.media_type.options[f.media_type.selectedIndex].value) {
553         case 
"flash":
554             
cls 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000';
555             
codebase 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0';
556             
type 'application/x-shockwave-flash';
557             break;
558
559         case 
"shockwave":
560             
cls 'clsid:166B1BCA-3F9C-11CF-8075-444553540000';
561             
codebase 'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0';
562             
type 'application/x-director';
563             break;
564
565         case 
"qt":
566             
cls 'clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B';
567             
codebase 'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0';
568             
type 'video/quicktime';
569             break;
570
571         case 
"wmp":
572             
cls ed.getParam('media_wmp6_compatible') ? 'clsid:05589FA1-C356-11CE-BF01-00AA0055595A' :
 
'clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6';
573             
codebase 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';
574             
type 'application/x-mplayer2';
575             break;
576
577         case 
"rmp":
578             
cls 'clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA';
579             
codebase 'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701';
580             
type 'audio/x-pn-realaudio-plugin';
581             break;
582     }
583
584     if (
pl == '') {
585         
p.innerHTML '';
586         return;
587     }
588
589     
pl tinyMCEPopup.editor.plugins.media._parse(pl);
590
591     if (!
pl.src) {
592         
p.innerHTML '';
593         return;
594     }
595
596     
pl.src tinyMCEPopup.editor.documentBaseURI.toAbsolute(pl.src);
597     
pl.width = !pl.width 100 pl.width;
598     
pl.height = !pl.height 100 pl.height;
599     
pl.id = !pl.id 'obj' pl.id;
600     
pl.name = !pl.name 'eobj' pl.name;
601     
pl.align = !pl.align '' pl.align;
602
603     
// Avoid annoying warning about insecure items
604     
if (!tinymce.isIE || document.location.protocol != 'https:') {
605         
+= '<object classid="' cls '" codebase="' codebase '" width="' pl.width '" height="' pl.height +
 
'" id="' pl.id '" name="' pl.name '" align="' pl.align '">';
606
607         for (
n in pl) {
608             
+= '<param name="' '" value="' pl[n] + '">';
609
610             
// Add extra url parameter if it's an absolute URL
611             
if (== 'src' && pl[n].indexOf('://') != -1)
612                 
+= '<param name="url" value="' pl[n] + '" />';
613         }
614     }
615
616     
+= '<embed type="' type '" ';
617
618     for (
n in pl)
619         
+= '="' pl[n] + '" ';
620
621     
+= '></embed>';
622
623     
// Avoid annoying warning about insecure items
624     
if (!tinymce.isIE || document.location.protocol != 'https:')
625         
+= '</object>';
626
627     
p.innerHTML "<!-- x --->" h;
628 }
629
630
tinyMCEPopup.onInit.add(init);
631