includes/clientside/tinymce/plugins/media/editor_plugin_src.js
changeset 1193 e3b94bd055dc
parent 778 57ce13805b6f
equal deleted inserted replaced
1192:5882f0eebb34 1193:e3b94bd055dc
     1 /**
     1 /**
     2  * $Id: editor_plugin_src.js 952 2008-11-03 17:56:04Z spocke $
     2  * $Id: editor_plugin_src.js 1222 2009-09-03 17:26:47Z spocke $
     3  *
     3  *
     4  * @author Moxiecode
     4  * @author Moxiecode
     5  * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
     5  * @copyright Copyright © 2004-2008, Moxiecode Systems AB, All rights reserved.
     6  */
     6  */
     7 
     7 
    59 				ed.selection.onBeforeSetContent.add(t._objectsToSpans, t);
    59 				ed.selection.onBeforeSetContent.add(t._objectsToSpans, t);
    60 
    60 
    61 				if (ed.settings.content_css !== false)
    61 				if (ed.settings.content_css !== false)
    62 					ed.dom.loadCSS(url + "/css/content.css");
    62 					ed.dom.loadCSS(url + "/css/content.css");
    63 
    63 
    64 				if (ed.theme.onResolveName) {
    64 				if (ed.theme && ed.theme.onResolveName) {
    65 					ed.theme.onResolveName.add(function(th, o) {
    65 					ed.theme.onResolveName.add(function(th, o) {
    66 						if (o.name == 'img') {
    66 						if (o.name == 'img') {
    67 							each(lo, function(v, k) {
    67 							each(lo, function(v, k) {
    68 								if (ed.dom.hasClass(o.node, k)) {
    68 								if (ed.dom.hasClass(o.node, k)) {
    69 									o.name = v;
    69 									o.name = v;
   163 
   163 
   164 			ed.onPostProcess.add(function(ed, o) {
   164 			ed.onPostProcess.add(function(ed, o) {
   165 				o.content = o.content.replace(/_mce_value=/g, 'value=');
   165 				o.content = o.content.replace(/_mce_value=/g, 'value=');
   166 			});
   166 			});
   167 
   167 
   168 			if (ed.getParam('media_use_script')) {
   168 			function getAttr(s, n) {
   169 				function getAttr(s, n) {
   169 				n = new RegExp(n + '=\"([^\"]+)\"', 'g').exec(s);
   170 					n = new RegExp(n + '=\"([^\"]+)\"', 'g').exec(s);
   170 
   171 
   171 				return n ? ed.dom.decode(n[1]) : '';
   172 					return n ? ed.dom.decode(n[1]) : '';
   172 			};
   173 				};
   173 
   174 
   174 			ed.onPostProcess.add(function(ed, o) {
   175 				ed.onPostProcess.add(function(ed, o) {
   175 				if (ed.getParam('media_use_script')) {
   176 					o.content = o.content.replace(/<img[^>]+>/g, function(im) {
   176 					o.content = o.content.replace(/<img[^>]+>/g, function(im) {
   177 						var cl = getAttr(im, 'class');
   177 						var cl = getAttr(im, 'class');
   178 
   178 
   179 						if (/^(mceTempFlash|mceTempShockWave|mceTempWindowsMedia|mceTempQuickTime|mceTempRealMedia)$/.test(cl)) {
   179 						if (/^(mceTempFlash|mceTempShockWave|mceTempWindowsMedia|mceTempQuickTime|mceTempRealMedia)$/.test(cl)) {
   180 							at = t._parse(getAttr(im, 'title'));
   180 							at = t._parse(getAttr(im, 'title'));
   183 							im = '<script type="text/javascript">write' + cl.substring(7) + '({' + t._serialize(at) + '});</script>';
   183 							im = '<script type="text/javascript">write' + cl.substring(7) + '({' + t._serialize(at) + '});</script>';
   184 						}
   184 						}
   185 
   185 
   186 						return im;
   186 						return im;
   187 					});
   187 					});
   188 				});
   188 				}
   189 			}
   189 			});
   190 		},
   190 		},
   191 
   191 
   192 		getInfo : function() {
   192 		getInfo : function() {
   193 			return {
   193 			return {
   194 				longname : 'Media',
   194 				longname : 'Media',
   231 			if (p.src)
   231 			if (p.src)
   232 				p.src = ed.convertURL(p.src, 'src', n);
   232 				p.src = ed.convertURL(p.src, 'src', n);
   233 
   233 
   234 			if (stc) {
   234 			if (stc) {
   235 				ob = dom.create('span', {
   235 				ob = dom.create('span', {
       
   236 					id : p.id,
   236 					mce_name : 'object',
   237 					mce_name : 'object',
   237 					type : 'application/x-shockwave-flash',
   238 					type : 'application/x-shockwave-flash',
   238 					data : p.src,
   239 					data : p.src,
       
   240 					style : dom.getAttrib(n, 'style'),
   239 					width : o.width,
   241 					width : o.width,
   240 					height : o.height
   242 					height : o.height
   241 				});
   243 				});
   242 			} else {
   244 			} else {
   243 				ob = dom.create('span', {
   245 				ob = dom.create('span', {
       
   246 					id : p.id,
   244 					mce_name : 'object',
   247 					mce_name : 'object',
   245 					classid : "clsid:" + o.classid,
   248 					classid : "clsid:" + o.classid,
       
   249 					style : dom.getAttrib(n, 'style'),
   246 					codebase : o.codebase,
   250 					codebase : o.codebase,
   247 					width : o.width,
   251 					width : o.width,
   248 					height : o.height
   252 					height : o.height
   249 				});
   253 				});
   250 			}
   254 			}
   251 
   255 
   252 			each (p, function(v, k) {
   256 			each (p, function(v, k) {
   253 				if (!/^(width|height|codebase|classid|_cx|_cy)$/.test(k)) {
   257 				if (!/^(width|height|codebase|classid|id|_cx|_cy)$/.test(k)) {
   254 					// Use url instead of src in IE for Windows media
   258 					// Use url instead of src in IE for Windows media
   255 					if (o.type == 'application/x-mplayer2' && k == 'src')
   259 					if (o.type == 'application/x-mplayer2' && k == 'src' && !p.url)
   256 						k = 'url';
   260 						k = 'url';
   257 
   261 
   258 					if (v)
   262 					if (v)
   259 						dom.add(ob, 'span', {mce_name : 'param', name : k, '_mce_value' : v});
   263 						dom.add(ob, 'span', {mce_name : 'param', name : k, '_mce_value' : v});
   260 				}
   264 				}
   261 			});
   265 			});
   262 
   266 
   263 			if (!stc)
   267 			if (!stc)
   264 				dom.add(ob, 'span', tinymce.extend({mce_name : 'embed', type : o.type}, p));
   268 				dom.add(ob, 'span', tinymce.extend({mce_name : 'embed', type : o.type, style : dom.getAttrib(n, 'style')}, p));
   265 
   269 
   266 			return ob;
   270 			return ob;
   267 		},
   271 		},
   268 
   272 
   269 		_spansToImgs : function(p) {
   273 		_spansToImgs : function(p) {
   335 		},
   339 		},
   336 
   340 
   337 		_createImg : function(cl, n) {
   341 		_createImg : function(cl, n) {
   338 			var im, dom = this.editor.dom, pa = {}, ti = '', args;
   342 			var im, dom = this.editor.dom, pa = {}, ti = '', args;
   339 
   343 
   340 			args = ['id', 'name', 'width', 'height', 'bgcolor', 'align', 'flashvars', 'src', 'wmode', 'allowfullscreen', 'quality'];	
   344 			args = ['id', 'name', 'width', 'height', 'bgcolor', 'align', 'flashvars', 'src', 'wmode', 'allowfullscreen', 'quality', 'data'];	
   341 
   345 
   342 			// Create image
   346 			// Create image
   343 			im = dom.create('img', {
   347 			im = dom.create('img', {
   344 				src : this.url + '/img/trans.gif',
   348 				src : this.url + '/img/trans.gif',
   345 				width : dom.getAttrib(n, 'width') || 100,
   349 				width : dom.getAttrib(n, 'width') || 100,
   346 				height : dom.getAttrib(n, 'height') || 100,
   350 				height : dom.getAttrib(n, 'height') || 100,
       
   351 				style : dom.getAttrib(n, 'style'),
   347 				'class' : cl
   352 				'class' : cl
   348 			});
   353 			});
   349 
   354 
   350 			// Setup base parameters
   355 			// Setup base parameters
   351 			each(args, function(na) {
   356 			each(args, function(na) {
   365 			if (pa.movie) {
   370 			if (pa.movie) {
   366 				pa.src = pa.movie;
   371 				pa.src = pa.movie;
   367 				delete pa.movie;
   372 				delete pa.movie;
   368 			}
   373 			}
   369 
   374 
       
   375 			// No src try data
       
   376 			if (!pa.src) {
       
   377 				pa.src = pa.data;
       
   378 				delete pa.data;
       
   379 			}
       
   380 
   370 			// Merge with embed args
   381 			// Merge with embed args
   371 			n = dom.select('.mceItemEmbed', n)[0];
   382 			n = dom.select('.mceItemEmbed', n)[0];
   372 			if (n) {
   383 			if (n) {
   373 				each(args, function(na) {
   384 				each(args, function(na) {
   374 					var v = dom.getAttrib(n, na);
   385 					var v = dom.getAttrib(n, na);