49 mceItemShockWave : 'shockwave', |
49 mceItemShockWave : 'shockwave', |
50 mceItemWindowsMedia : 'windowsmedia', |
50 mceItemWindowsMedia : 'windowsmedia', |
51 mceItemQuickTime : 'quicktime', |
51 mceItemQuickTime : 'quicktime', |
52 mceItemRealMedia : 'realmedia' |
52 mceItemRealMedia : 'realmedia' |
53 }; |
53 }; |
|
54 |
|
55 ed.selection.onSetContent.add(function() { |
|
56 t._spansToImgs(ed.getBody()); |
|
57 }); |
|
58 |
|
59 ed.selection.onBeforeSetContent.add(t._objectsToSpans, t); |
54 |
60 |
55 if (ed.settings.content_css !== false) |
61 if (ed.settings.content_css !== false) |
56 ed.dom.loadCSS(url + "/css/content.css"); |
62 ed.dom.loadCSS(url + "/css/content.css"); |
57 |
63 |
58 if (ed.theme.onResolveName) { |
64 if (ed.theme.onResolveName) { |
76 } |
82 } |
77 }); |
83 }); |
78 } |
84 } |
79 }); |
85 }); |
80 |
86 |
81 ed.onBeforeSetContent.add(function(ed, o) { |
87 ed.onBeforeSetContent.add(t._objectsToSpans, t); |
82 var h = o.content; |
|
83 |
|
84 h = h.replace(/<script[^>]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi, function(a, b, c) { |
|
85 var o = t._parse(c); |
|
86 |
|
87 return '<img class="mceItem' + b + '" title="' + ed.dom.encode(c) + '" src="' + url + '/img/trans.gif" width="' + o.width + '" height="' + o.height + '" />' |
|
88 }); |
|
89 |
|
90 h = h.replace(/<object([^>]*)>/gi, '<span class="mceItemObject" $1>'); |
|
91 h = h.replace(/<embed([^>]*)\/>/gi, '<span class="mceItemEmbed" $1>'); |
|
92 h = h.replace(/<embed([^>]*)>/gi, '<span class="mceItemEmbed" $1>'); |
|
93 h = h.replace(/<\/(object|embed)([^>]*)>/gi, '</span>'); |
|
94 h = h.replace(/<param([^>]*)>/gi, function(a, b) {return '<span ' + b.replace(/value=/gi, '_value=') + ' class="mceItemParam"></span>'}); |
|
95 h = h.replace(/\/ class=\"mceItemParam\"><\/span>/gi, 'class="mceItemParam"></span>'); |
|
96 |
|
97 o.content = h; |
|
98 }); |
|
99 |
88 |
100 ed.onSetContent.add(function() { |
89 ed.onSetContent.add(function() { |
101 t._spansToImgs(ed.getBody()); |
90 t._spansToImgs(ed.getBody()); |
102 }); |
91 }); |
103 |
92 |
209 version : tinymce.majorVersion + "." + tinymce.minorVersion |
198 version : tinymce.majorVersion + "." + tinymce.minorVersion |
210 }; |
199 }; |
211 }, |
200 }, |
212 |
201 |
213 // Private methods |
202 // Private methods |
|
203 _objectsToSpans : function(ed, o) { |
|
204 var t = this, h = o.content; |
|
205 |
|
206 h = h.replace(/<script[^>]*>\s*write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\(\{([^\)]*)\}\);\s*<\/script>/gi, function(a, b, c) { |
|
207 var o = t._parse(c); |
|
208 |
|
209 return '<img class="mceItem' + b + '" title="' + ed.dom.encode(c) + '" src="' + t.url + '/img/trans.gif" width="' + o.width + '" height="' + o.height + '" />' |
|
210 }); |
|
211 |
|
212 h = h.replace(/<object([^>]*)>/gi, '<span class="mceItemObject" $1>'); |
|
213 h = h.replace(/<embed([^>]*)\/?>/gi, '<span class="mceItemEmbed" $1></span>'); |
|
214 h = h.replace(/<embed([^>]*)>/gi, '<span class="mceItemEmbed" $1>'); |
|
215 h = h.replace(/<\/(object)([^>]*)>/gi, '</span>'); |
|
216 h = h.replace(/<\/embed>/gi, ''); |
|
217 h = h.replace(/<param([^>]*)>/gi, function(a, b) {return '<span ' + b.replace(/value=/gi, '_mce_value=') + ' class="mceItemParam"></span>'}); |
|
218 h = h.replace(/\/ class=\"mceItemParam\"><\/span>/gi, 'class="mceItemParam"></span>'); |
|
219 |
|
220 o.content = h; |
|
221 }, |
214 |
222 |
215 _buildObj : function(o, n) { |
223 _buildObj : function(o, n) { |
216 var ob, ed = this.editor, dom = ed.dom, p = this._parse(n.title); |
224 var ob, ed = this.editor, dom = ed.dom, p = this._parse(n.title), stc; |
|
225 |
|
226 stc = ed.getParam('media_strict', true) && o.type == 'application/x-shockwave-flash'; |
217 |
227 |
218 p.width = o.width = dom.getAttrib(n, 'width') || 100; |
228 p.width = o.width = dom.getAttrib(n, 'width') || 100; |
219 p.height = o.height = dom.getAttrib(n, 'height') || 100; |
229 p.height = o.height = dom.getAttrib(n, 'height') || 100; |
220 |
230 |
221 ob = dom.create('span', { |
|
222 mce_name : 'object', |
|
223 classid : "clsid:" + o.classid, |
|
224 codebase : o.codebase, |
|
225 width : o.width, |
|
226 height : o.height |
|
227 }); |
|
228 |
|
229 if (p.src) |
231 if (p.src) |
230 p.src = ed.convertURL(p.src, 'src', n); |
232 p.src = ed.convertURL(p.src, 'src', n); |
231 |
233 |
|
234 if (stc) { |
|
235 ob = dom.create('span', { |
|
236 mce_name : 'object', |
|
237 type : 'application/x-shockwave-flash', |
|
238 data : p.src, |
|
239 width : o.width, |
|
240 height : o.height |
|
241 }); |
|
242 } else { |
|
243 ob = dom.create('span', { |
|
244 mce_name : 'object', |
|
245 classid : "clsid:" + o.classid, |
|
246 codebase : o.codebase, |
|
247 width : o.width, |
|
248 height : o.height |
|
249 }); |
|
250 } |
|
251 |
232 each (p, function(v, k) { |
252 each (p, function(v, k) { |
233 if (!/^(width|height|codebase|classid)$/.test(k)) { |
253 if (!/^(width|height|codebase|classid|_cx|_cy)$/.test(k)) { |
234 // Use url instead of src in IE for Windows media |
254 // Use url instead of src in IE for Windows media |
235 if (o.type == 'application/x-mplayer2' && k == 'src') |
255 if (o.type == 'application/x-mplayer2' && k == 'src') |
236 k = 'url'; |
256 k = 'url'; |
237 |
257 |
238 dom.add(ob, 'span', {mce_name : 'param', name : k, '_value' : v}); |
258 if (v) |
239 } |
259 dom.add(ob, 'span', {mce_name : 'param', name : k, '_mce_value' : v}); |
240 }); |
260 } |
241 |
261 }); |
242 dom.add(ob, 'span', tinymce.extend({mce_name : 'embed', type : o.type}, p)); |
262 |
|
263 if (!stc) |
|
264 dom.add(ob, 'span', tinymce.extend({mce_name : 'embed', type : o.type}, p)); |
243 |
265 |
244 return ob; |
266 return ob; |
245 }, |
267 }, |
246 |
268 |
247 _spansToImgs : function(p) { |
269 _spansToImgs : function(p) { |
311 } |
333 } |
312 }); |
334 }); |
313 }, |
335 }, |
314 |
336 |
315 _createImg : function(cl, n) { |
337 _createImg : function(cl, n) { |
316 var im, dom = this.editor.dom, pa = {}, ti = ''; |
338 var im, dom = this.editor.dom, pa = {}, ti = '', args; |
|
339 |
|
340 args = ['id', 'name', 'width', 'height', 'bgcolor', 'align', 'flashvars', 'src', 'wmode', 'allowfullscreen', 'quality']; |
317 |
341 |
318 // Create image |
342 // Create image |
319 im = dom.create('img', { |
343 im = dom.create('img', { |
320 src : this.url + '/img/trans.gif', |
344 src : this.url + '/img/trans.gif', |
321 width : dom.getAttrib(n, 'width') || 100, |
345 width : dom.getAttrib(n, 'width') || 100, |
322 height : dom.getAttrib(n, 'height') || 100, |
346 height : dom.getAttrib(n, 'height') || 100, |
323 'class' : cl |
347 'class' : cl |
324 }); |
348 }); |
325 |
349 |
326 // Setup base parameters |
350 // Setup base parameters |
327 each(['id', 'name', 'width', 'height', 'bgcolor', 'align', 'flashvars', 'src', 'wmode'], function(na) { |
351 each(args, function(na) { |
328 var v = dom.getAttrib(n, na); |
352 var v = dom.getAttrib(n, na); |
329 |
353 |
330 if (v) |
354 if (v) |
331 pa[na] = v; |
355 pa[na] = v; |
332 }); |
356 }); |
333 |
357 |
334 // Add optional parameters |
358 // Add optional parameters |
335 each(dom.select('span', n), function(n) { |
359 each(dom.select('span', n), function(n) { |
336 if (dom.hasClass(n, 'mceItemParam')) |
360 if (dom.hasClass(n, 'mceItemParam')) |
337 pa[dom.getAttrib(n, 'name')] = dom.getAttrib(n, '_value'); |
361 pa[dom.getAttrib(n, 'name')] = dom.getAttrib(n, '_mce_value'); |
338 }); |
362 }); |
339 |
363 |
340 // Use src not movie |
364 // Use src not movie |
341 if (pa.movie) { |
365 if (pa.movie) { |
342 pa.src = pa.movie; |
366 pa.src = pa.movie; |
343 delete pa.movie; |
367 delete pa.movie; |
344 } |
368 } |
345 |
369 |
|
370 // Merge with embed args |
|
371 n = dom.select('.mceItemEmbed', n)[0]; |
|
372 if (n) { |
|
373 each(args, function(na) { |
|
374 var v = dom.getAttrib(n, na); |
|
375 |
|
376 if (v && !pa[na]) |
|
377 pa[na] = v; |
|
378 }); |
|
379 } |
|
380 |
346 delete pa.width; |
381 delete pa.width; |
347 delete pa.height; |
382 delete pa.height; |
348 |
383 |
349 im.title = this._serialize(pa); |
384 im.title = this._serialize(pa); |
350 |
385 |