--- a/includes/clientside/tinymce/plugins/fullpage/editor_plugin_src.js Wed Dec 26 00:37:26 2007 -0500
+++ b/includes/clientside/tinymce/plugins/fullpage/editor_plugin_src.js Thu Dec 27 22:09:33 2007 -0500
@@ -1,227 +1,88 @@
/**
- * $Id: editor_plugin_src.js 201 2007-02-12 15:56:56Z spocke $
+ * $Id: editor_plugin_src.js 373 2007-11-12 17:57:47Z spocke $
*
* @author Moxiecode
* @copyright Copyright © 2004-2007, Moxiecode Systems AB, All rights reserved.
*/
-/* Import plugin specific language pack */
-tinyMCE.importPluginLanguagePack('fullpage');
-
-var TinyMCE_FullPagePlugin = {
- getInfo : function() {
- return {
- longname : 'Fullpage',
- author : 'Moxiecode Systems AB',
- authorurl : 'http://tinymce.moxiecode.com',
- infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage',
- version : tinyMCE.majorVersion + "." + tinyMCE.minorVersion
- };
- },
-
- getControlHTML : function(cn) {
- switch (cn) {
- case "fullpage":
- return tinyMCE.getButtonHTML(cn, 'lang_fullpage_desc', '{$pluginurl}/images/fullpage.gif', 'mceFullPageProperties');
- }
-
- return "";
- },
+(function() {
+ tinymce.create('tinymce.plugins.FullPagePlugin', {
+ init : function(ed, url) {
+ var t = this;
- execCommand : function(editor_id, element, command, user_interface, value) {
- // Handle commands
- switch (command) {
- case "mceFullPageProperties":
- var template = new Array();
-
- template['file'] = '../../plugins/fullpage/fullpage.htm';
- template['width'] = 430;
- template['height'] = 485 + (tinyMCE.isOpera ? 5 : 0);
-
- template['width'] += tinyMCE.getLang('lang_fullpage_delta_width', 0);
- template['height'] += tinyMCE.getLang('lang_fullpage_delta_height', 0);
-
- tinyMCE.openWindow(template, {editor_id : editor_id, inline : "yes"});
- return true;
-
- case "mceFullPageUpdate":
- TinyMCE_FullPagePlugin._addToHead(tinyMCE.getInstanceById(editor_id));
- return true;
- }
-
- // Pass to next handler in chain
- return false;
- },
-
- cleanup : function(type, content, inst) {
- switch (type) {
- case "insert_to_editor":
- var tmp = content.toLowerCase();
- var pos = tmp.indexOf('<body'), pos2;
+ t.editor = ed;
- // Split page in header and body chunks
- if (pos != -1) {
- pos = tmp.indexOf('>', pos);
- pos2 = tmp.lastIndexOf('</body>');
- inst.fullpageTopContent = content.substring(0, pos + 1);
- content = content.substring(pos + 1, pos2);
- // tinyMCE.debug(inst.fullpageTopContent, content);
- } else {
- if (!inst.fullpageTopContent) {
- var docType = tinyMCE.getParam("fullpage_default_doctype", '<!DOCTYPE html PUBLIC "-/'+'/W3C//DTD XHTML 1.0 Transitional/'+'/EN" "http:/'+'/www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">');
- var enc = tinyMCE.getParam("fullpage_default_encoding", 'utf-8');
- var title = tinyMCE.getParam("fullpage_default_title", 'Untitled document');
- var lang = tinyMCE.getParam("fullpage_default_langcode", 'en');
- var pi = tinyMCE.getParam("fullpage_default_xml_pi", true);
- var ff = tinyMCE.getParam("fullpage_default_font_family", "");
- var fz = tinyMCE.getParam("fullpage_default_font_size", "");
- var ds = tinyMCE.getParam("fullpage_default_style", "");
- var dtc = tinyMCE.getParam("fullpage_default_text_color", "");
+ // Register commands
+ ed.addCommand('mceFullPageProperties', function() {
+ ed.windowManager.open({
+ file : url + '/fullpage.htm',
+ width : 430 + ed.getLang('fullpage.delta_width', 0),
+ height : 495 + ed.getLang('fullpage.delta_height', 0),
+ inline : 1
+ }, {
+ plugin_url : url,
+ head_html : t.head
+ });
+ });
- // Xml encode it
- title = title.replace(/&/g, '&');
- title = title.replace(/\"/g, '"');
- title = title.replace(/</g, '<');
- title = title.replace(/>/g, '>');
-
- tmp = '';
+ // Register buttons
+ ed.addButton('fullpage', {title : 'fullpage.desc', cmd : 'mceFullPageProperties'});
- // Make default chunk
- if (pi)
- tmp += '<?xml version="1.0" encoding="' + enc + '"?>\n';
-
- tmp += docType + '\n';
- tmp += '<html xmlns="http:/'+'/www.w3.org/1999/xhtml" lang="' + lang + '" xml:lang="' + lang + '">\n';
- tmp += '<head>\n';
- tmp += '\t<title>' + title + '</title>\n';
- tmp += '\t<meta http-equiv="Content-Type" content="text/html; charset=' + enc + '" />\n';
- tmp += '</head>\n';
- tmp += '<body';
+ ed.onBeforeSetContent.add(t._setContent, t);
+ ed.onGetContent.add(t._getContent, t);
+ },
- if (ff != '' || fz != '') {
- tmp += ' style="';
-
- if (ds != '')
- tmp += ds + ";";
+ getInfo : function() {
+ return {
+ longname : 'Fullpage',
+ author : 'Moxiecode Systems AB',
+ authorurl : 'http://tinymce.moxiecode.com',
+ infourl : 'http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullpage',
+ version : tinymce.majorVersion + "." + tinymce.minorVersion
+ };
+ },
- if (ff != '')
- tmp += 'font-family: ' + ff + ";";
-
- if (fz != '')
- tmp += 'font-size: ' + fz + ";";
-
- tmp += '"';
- }
+ // Private plugin internal methods
- if (dtc != '')
- tmp += ' text="' + dtc + '"';
-
- tmp += '>\n';
-
- inst.fullpageTopContent = tmp;
- }
- }
-
- this._addToHead(inst);
-
- break;
-
- case "get_from_editor":
- if (inst.fullpageTopContent)
- content = inst.fullpageTopContent + content + "\n</body>\n</html>";
-
- break;
- }
-
- // Pass through to next handler in chain
- return content;
- },
-
- // Private plugin internal methods
+ _createSerializer : function() {
+ return new tinymce.dom.Serializer({
+ dom : this.editor.dom,
+ apply_source_formatting : true
+ });
+ },
- _addToHead : function(inst) {
- var doc = inst.getDoc();
- var head = doc.getElementsByTagName("head")[0];
- var body = doc.body;
- var h = inst.fullpageTopContent;
- var e = doc.createElement("body");
- var nl, i, le, tmp;
+ _setContent : function(ed, o) {
+ var t = this, sp, ep, c = o.content;
- // Remove stuff we don't want
- h = h.replace(/(\r|\n)/gi, '');
- h = h.replace(/<\?[^\>]*\>/gi, '');
- h = h.replace(/<\/?(!DOCTYPE|head|html)[^\>]*\>/gi, '');
- h = h.replace(/<script(.*?)<\/script>/gi, '');
- h = h.replace(/<title(.*?)<\/title>/gi, '');
- h = h.replace(/<(meta|base)[^>]*>/gi, '');
+ // Parse out head, body and footer
+ sp = c.indexOf('<body');
+ if (sp == -1)
+ sp = c.indexOf('<BODY');
- // Make link and style elements into pre
- h = h.replace(/<link([^>]*)\/>/gi, '<pre mce_type="link" $1></pre>');
- //h = h.replace(/<style([^>]*)>(.*?)<\/style>/gi, '<pre mce_type="style" $1>$2</pre>');
-
- // Make body a div
- h = h.replace(/<body/gi, '<div mce_type="body"');
- h += '</div>';
-
- // Now crapy MSIE can parse it
- e.innerHTML = h;
+ if (sp != -1) {
+ sp = c.indexOf('>', sp);
+ t.head = c.substring(0, sp + 1);
- // Reset all body attributes
- body.vLink = body.aLink = body.link = body.text = '';
- body.style.cssText = '';
-
- // Delete all old links
- nl = head.getElementsByTagName('link');
- for (i=0; i<nl.length; i++) {
- if (tinyMCE.getAttrib(nl[i], 'mce_head') == "true")
- nl[i].parentNode.removeChild(nl[i]);
- }
-
- // Add link elements
- nl = e.getElementsByTagName('pre');
- for (i=0; i<nl.length; i++) {
- tmp = tinyMCE.getAttrib(nl[i], 'media');
- if (tinyMCE.getAttrib(nl[i], 'mce_type') == "link" && (tmp == "" || tmp == "screen" || tmp == "all") && tinyMCE.getAttrib(nl[i], 'rel') == "stylesheet") {
- le = doc.createElement("link");
-
- le.rel = "stylesheet";
- le.href = tinyMCE.getAttrib(nl[i], 'href');
- le.setAttribute("mce_head", "true");
-
- head.appendChild(le);
- }
- }
+ ep = c.indexOf('</body', sp);
+ if (ep == -1)
+ ep = c.indexOf('</body', ep);
- // Add body attributes
- nl = e.getElementsByTagName('div');
- if (nl.length > 0) {
- body.style.cssText = tinyMCE.getAttrib(nl[0], 'style');
-
- if ((tmp = tinyMCE.getAttrib(nl[0], 'leftmargin')) != '' && body.style.marginLeft == '')
- body.style.marginLeft = tmp + "px";
-
- if ((tmp = tinyMCE.getAttrib(nl[0], 'rightmargin')) != '' && body.style.marginRight == '')
- body.style.marginRight = tmp + "px";
-
- if ((tmp = tinyMCE.getAttrib(nl[0], 'topmargin')) != '' && body.style.marginTop == '')
- body.style.marginTop = tmp + "px";
-
- if ((tmp = tinyMCE.getAttrib(nl[0], 'bottommargin')) != '' && body.style.marginBottom == '')
- body.style.marginBottom = tmp + "px";
+ o.content = c.substring(sp + 1, ep);
+ t.foot = c.substring(ep);
+ } else {
+ t.head = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">';
+ t.head += '\n<html>\n<head>\n<title>Untitled document</title>\n</head>\n<body>\n';
+ t.foot = '\n</body>\n</html>';
+ }
+ },
- body.dir = tinyMCE.getAttrib(nl[0], 'dir');
- body.vLink = tinyMCE.getAttrib(nl[0], 'vlink');
- body.aLink = tinyMCE.getAttrib(nl[0], 'alink');
- body.link = tinyMCE.getAttrib(nl[0], 'link');
- body.text = tinyMCE.getAttrib(nl[0], 'text');
+ _getContent : function(ed, o) {
+ var t = this;
- if ((tmp = tinyMCE.getAttrib(nl[0], 'background')) != '')
- body.style.backgroundImage = "url('" + tmp + "')";
+ o.content = tinymce.trim(t.head) + '\n' + tinymce.trim(o.content) + '\n' + tinymce.trim(t.foot);
+ }
+ });
- if ((tmp = tinyMCE.getAttrib(nl[0], 'bgcolor')) != '')
- body.style.backgroundColor = tmp;
- }
- }
-};
-
-tinyMCE.addPlugin("fullpage", TinyMCE_FullPagePlugin);
+ // Register plugin
+ tinymce.PluginManager.add('fullpage', tinymce.plugins.FullPagePlugin);
+})();
\ No newline at end of file