includes/clientside/tinymce/plugins/preview/editor_plugin_src.js
changeset 335 67bd3121a12e
parent 1 fe660c52c48f
child 395 fa4c5ecb7c9a
--- a/includes/clientside/tinymce/plugins/preview/editor_plugin_src.js	Wed Dec 26 00:37:26 2007 -0500
+++ b/includes/clientside/tinymce/plugins/preview/editor_plugin_src.js	Thu Dec 27 22:09:33 2007 -0500
@@ -1,205 +1,190 @@
 /**
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
+ * $Id: editor_plugin_src.js 444 2007-11-26 16:17:54Z spocke $
  *
  * @author Moxiecode
  * @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
  */
 
-/* Import plugin specific language pack */
-tinyMCE.importPluginLanguagePack('preview');
+(function() {
+	tinymce.create('tinymce.plugins.Preview', {
+		init : function(ed, url) {
+			var t = this;
 
-var TinyMCE_PreviewPlugin = {
-	getInfo : function() {
-		return {
-			longname : 'Preview',
-			author : 'Moxiecode Systems AB',
-			authorurl : 'http://tinymce.moxiecode.com',
-			infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview',
-			version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
-		};
-	},
+			t.editor = ed;
+
+			ed.addCommand('mcePreview', t._preview, t);
+			ed.addButton('preview', {title : 'preview.preview_desc', cmd : 'mcePreview'});
+		},
 
-	/**
-	 * Returns the HTML contents of the preview control.
-	 */
-	getControlHTML : function(cn) {
-		switch (cn) {
-			case "preview":
-				return tinyMCE.getButtonHTML(cn, 'lang_preview_desc', '{$pluginurl}/images/preview.gif', 'mcePreview');
-		}
-
-		return "";
-	},
+		getInfo : function() {
+			return {
+				longname : 'Preview',
+				author : 'Moxiecode Systems AB',
+				authorurl : 'http://tinymce.moxiecode.com',
+				infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/preview',
+				version : tinymce.majorVersion + "." + tinymce.minorVersion
+			};
+		},
 
-	/**
-	 * Executes the mcePreview command.
-	 */
-	execCommand : function(editor_id, element, command, user_interface, value) {
-		// Handle commands
-		switch (command) {
-			case "mcePreview":
-				var previewPage = tinyMCE.getParam("plugin_preview_pageurl", null);
-				var previewWidth = tinyMCE.getParam("plugin_preview_width", "550");
-				var previewHeight = tinyMCE.getParam("plugin_preview_height", "600");
+		// Private methods
 
-				// Use a custom preview page
-				if (previewPage) {
-					var template = new Array();
+		_preview : function() {
+			var ed = this.editor, win, html, c, pos, pos2, css, i, page = ed.getParam("plugin_preview_pageurl", null), w = ed.getParam("plugin_preview_width", "550"), h = ed.getParam("plugin_preview_height", "600");
 
-					template['file'] = previewPage;
-					template['width'] = previewWidth;
-					template['height'] = previewHeight;
-
-					tinyMCE.openWindow(template, {editor_id : editor_id, resizable : "yes", scrollbars : "yes", inline : "yes", content : tinyMCE.getContent(), content_css : tinyMCE.getParam("content_css")});
-				} else {
-					var win = window.open("", "mcePreview", "menubar=no,toolbar=no,scrollbars=yes,resizable=yes,left=20,top=20,width=" + previewWidth + ",height="  + previewHeight);
-					var html = "", i;
-					var c = tinyMCE.getContent();
-					var pos = c.indexOf('<body'), pos2, css = tinyMCE.getParam("content_css").split(',');
-
-					if (pos != -1) {
-						pos = c.indexOf('>', pos);
-						pos2 = c.lastIndexOf('</body>');
-						c = c.substring(pos + 1, pos2);
-					}
+			// Use a custom preview page
+			if (page) {
+				ed.windowManager.open({
+					file : ed.getParam("plugin_preview_pageurl", null),
+					width : w,
+					height : h
+				}, {
+					editor_id : editor_id,
+					resizable : "yes",
+					scrollbars : "yes",
+					inline : 1,
+					content : ed.getContent(),
+					content_css : ed.getParam("content_css")
+				});
+			} else {
+				win = window.open("", "mcePreview", "menubar=no,toolbar=no,scrollbars=yes,resizable=yes,left=20,top=20,width=" + w + ",height="  + h);
+				html = "";
+				c = ed.getContent();
+				pos = c.indexOf('<body');
+				css = ed.getParam("content_css", '').split(',');
 
-					html += tinyMCE.getParam('doctype');
-					html += '<html xmlns="http://www.w3.org/1999/xhtml">';
-					html += '<head>';
-					html += '<title>' + tinyMCE.getLang('lang_preview_desc') + '</title>';
-					html += '<base href="' + tinyMCE.settings['base_href'] + '" />';
-					html += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
-
-					for (i=0; i<css.length; i++)
-						html += '<link href="' + css[i] + '" rel="stylesheet" type="text/css" />';
+				tinymce.map(css, function(u) {
+					return ed.documentBaseURI.toAbsolute(u);
+				});
 
-					html += '<script type="text/javascript">';
-					html += 'window.opener.TinyMCE_PreviewPlugin._setDoc(document);';
-					html += 'window.opener.TinyMCE_PreviewPlugin._setWin(window);';
-					html += 'writeFlash = window.opener.TinyMCE_PreviewPlugin._writeFlash;';
-					html += 'writeShockWave = window.opener.TinyMCE_PreviewPlugin._writeShockWave;';
-					html += 'writeQuickTime = window.opener.TinyMCE_PreviewPlugin._writeQuickTime;';
-					html += 'writeRealMedia = window.opener.TinyMCE_PreviewPlugin._writeRealMedia;';
-					html += 'writeWindowsMedia = window.opener.TinyMCE_PreviewPlugin._writeWindowsMedia;';
-					html += 'writeEmbed = window.opener.TinyMCE_PreviewPlugin._writeEmbed;';
-					html += '</script>';
-					html += '</head>';
-					html += '<body dir="' + tinyMCE.getParam("directionality") + '" onload="window.opener.TinyMCE_PreviewPlugin._onLoad();">';
-					html += c;
-					html += '</body>';
-					html += '</html>';
-
-					win.document.write(html);
-					win.document.close();
+				if (pos != -1) {
+					pos = c.indexOf('>', pos);
+					pos2 = c.lastIndexOf('</body>');
+					c = c.substring(pos + 1, pos2);
 				}
 
-				return true;
-		}
+				html += ed.getParam('doctype');
+				html += '<html xmlns="http://www.w3.org/1999/xhtml">';
+				html += '<head>';
+				html += '<title>' + ed.getLang('preview.preview_desc') + '</title>';
+				html += '<base href="' + ed.documentBaseURI.getURI() + '" />';
+				html += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
 
-		return false;
-	},
-
-	_setDoc : function(d) {
-		TinyMCE_PreviewPlugin._doc = d;
-		d._embeds = new Array();
-	},
+				for (i=0; i<css.length; i++)
+					html += '<link href="' + css[i] + '" rel="stylesheet" type="text/css" />';
 
-	_setWin : function(d) {
-		TinyMCE_PreviewPlugin._win = d;
-	},
-
-	_onLoad : function() {
-		var nl, i, el = new Array(), d = TinyMCE_PreviewPlugin._doc, sv, ne;
+				html += '</head>';
+				html += '<body dir="' + ed.getParam("directionality") + '" onload="window.opener.tinymce.EditorManager.get(\'' + ed.id + '\').plugins[\'preview\']._onLoad(window,document);">';
+				html += c;
+				html += '</body>';
+				html += '</html>';
 
-		nl = d.getElementsByTagName("script");
-		for (i=0; i<nl.length; i++) {
-			sv = tinyMCE.isMSIE ? nl[i].innerHTML : nl[i].firstChild.nodeValue;
+				win.document.write(html);
+				win.document.close();
+			}
+		},
 
-			if (new RegExp('write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\\(.*', 'g').test(sv))
-				el[el.length] = nl[i];
-		}
+		_onLoad : function(w, d) {
+			var t = this, nl, i, el = [], sv, ne;
 
-		for (i=0; i<el.length; i++) {
-			ne = d.createElement("div");
-			ne.innerHTML = d._embeds[i];
-			el[i].parentNode.insertBefore(ne.firstChild, el[i]);
-		}
-	},
+			t._doc = d;
+			w.writeFlash = t._writeFlash;
+			w.writeShockWave = t._writeShockWave;
+			w.writeQuickTime = t._writeQuickTime;
+			w.writeRealMedia = t._writeRealMedia;
+			w.writeWindowsMedia = t._writeWindowsMedia;
+			w.writeEmbed = t._writeEmbed;
+
+			nl = d.getElementsByTagName("script");
+			for (i=0; i<nl.length; i++) {
+				sv = tinymce.isIE ? nl[i].innerHTML : nl[i].firstChild.nodeValue;
+
+				if (new RegExp('write(Flash|ShockWave|WindowsMedia|QuickTime|RealMedia)\\(.*', 'g').test(sv))
+					el[el.length] = nl[i];
+			}
 
-	_writeFlash : function(p) {
-		p.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], p.src);
-		TinyMCE_PreviewPlugin._writeEmbed(
-			'D27CDB6E-AE6D-11cf-96B8-444553540000',
-			'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
-			'application/x-shockwave-flash',
-			p
-		);
-	},
+			for (i=0; i<el.length; i++) {
+				ne = d.createElement("div");
+				ne.innerHTML = d._embeds[i];
+				el[i].parentNode.insertBefore(ne.firstChild, el[i]);
+			}
+		},
 
-	_writeShockWave : function(p) {
-		p.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], p.src);
-		TinyMCE_PreviewPlugin._writeEmbed(
-			'166B1BCA-3F9C-11CF-8075-444553540000',
-			'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0',
-			'application/x-director',
-			p
-		);
-	},
+		_writeFlash : function(p) {
+			p.src = this.editor.documentBaseURI.toAbsolute(p.src);
+			TinyMCE_PreviewPlugin._writeEmbed(
+				'D27CDB6E-AE6D-11cf-96B8-444553540000',
+				'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
+				'application/x-shockwave-flash',
+				p
+			);
+		},
 
-	_writeQuickTime : function(p) {
-		p.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], p.src);
-		TinyMCE_PreviewPlugin._writeEmbed(
-			'02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
-			'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0',
-			'video/quicktime',
-			p
-		);
-	},
+		_writeShockWave : function(p) {
+			this.editor.documentBaseURI.toAbsolute(p.src);
+			TinyMCE_PreviewPlugin._writeEmbed(
+				'166B1BCA-3F9C-11CF-8075-444553540000',
+				'http://download.macromedia.com/pub/shockwave/cabs/director/sw.cab#version=8,5,1,0',
+				'application/x-director',
+				p
+			);
+		},
 
-	_writeRealMedia : function(p) {
-		p.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], p.src);
-		TinyMCE_PreviewPlugin._writeEmbed(
-			'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA',
-			'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
-			'audio/x-pn-realaudio-plugin',
-			p
-		);
-	},
+		_writeQuickTime : function(p) {
+			this.editor.documentBaseURI.toAbsolute(p.src);
+			TinyMCE_PreviewPlugin._writeEmbed(
+				'02BF25D5-8C17-4B23-BC80-D3488ABDDC6B',
+				'http://www.apple.com/qtactivex/qtplugin.cab#version=6,0,2,0',
+				'video/quicktime',
+				p
+			);
+		},
+
+		_writeRealMedia : function(p) {
+			this.editor.documentBaseURI.toAbsolute(p.src);
+			TinyMCE_PreviewPlugin._writeEmbed(
+				'CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA',
+				'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0',
+				'audio/x-pn-realaudio-plugin',
+				p
+			);
+		},
 
-	_writeWindowsMedia : function(p) {
-		p.src = tinyMCE.convertRelativeToAbsoluteURL(tinyMCE.settings['base_href'], p.src);
-		p.url = p.src;
-		TinyMCE_PreviewPlugin._writeEmbed(
-			'6BF52A52-394A-11D3-B153-00C04F79FAA6',
-			'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',
-			'application/x-mplayer2',
-			p
-		);
-	},
+		_writeWindowsMedia : function(p) {
+			this.editor.documentBaseURI.toAbsolute(p.src);
+			p.url = p.src;
+			TinyMCE_PreviewPlugin._writeEmbed(
+				'6BF52A52-394A-11D3-B153-00C04F79FAA6',
+				'http://activex.microsoft.com/activex/controls/mplayer/en/nsmp2inf.cab#Version=5,1,52,701',
+				'application/x-mplayer2',
+				p
+			);
+		},
 
-	_writeEmbed : function(cls, cb, mt, p) {
-		var h = '', n, d = TinyMCE_PreviewPlugin._doc, ne, c;
+		_writeEmbed : function(cls, cb, mt, p) {
+			var h = '', n, d = t._doc, ne, c;
 
-		h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';
-		h += typeof(p.id) != "undefined" ? 'id="' + p.id + '"' : '';
-		h += typeof(p.name) != "undefined" ? 'name="' + p.name + '"' : '';
-		h += typeof(p.width) != "undefined" ? 'width="' + p.width + '"' : '';
-		h += typeof(p.height) != "undefined" ? 'height="' + p.height + '"' : '';
-		h += typeof(p.align) != "undefined" ? 'align="' + p.align + '"' : '';
-		h += '>';
+			h += '<object classid="clsid:' + cls + '" codebase="' + cb + '"';
+			h += typeof(p.id) != "undefined" ? 'id="' + p.id + '"' : '';
+			h += typeof(p.name) != "undefined" ? 'name="' + p.name + '"' : '';
+			h += typeof(p.width) != "undefined" ? 'width="' + p.width + '"' : '';
+			h += typeof(p.height) != "undefined" ? 'height="' + p.height + '"' : '';
+			h += typeof(p.align) != "undefined" ? 'align="' + p.align + '"' : '';
+			h += '>';
 
-		for (n in p)
-			h += '<param name="' + n + '" value="' + p[n] + '">';
+			for (n in p)
+				h += '<param name="' + n + '" value="' + p[n] + '">';
+
+			h += '<embed type="' + mt + '"';
 
-		h += '<embed type="' + mt + '"';
+			for (n in p)
+				h += n + '="' + p[n] + '" ';
 
-		for (n in p)
-			h += n + '="' + p[n] + '" ';
+			h += '></embed></object>';
 
-		h += '></embed></object>';
+			d._embeds[d._embeds.length] = h;
+		}
+	});
 
-		d._embeds[d._embeds.length] = h;
-	}
-};
-
-tinyMCE.addPlugin("preview", TinyMCE_PreviewPlugin);
+	// Register plugin
+	tinymce.PluginManager.add('preview', tinymce.plugins.Preview);
+})();
\ No newline at end of file