Mercurial > public > sg101
view media/js/tiny_mce/plugins/fullpage/editor_plugin_src.js @ 201:bc958bc3c6eb
Futzing with CSS side blocks
author | Brian Neal <bgneal@gmail.com> |
---|---|
date | Mon, 12 Apr 2010 02:56:31 +0000 |
parents | 149c3567fec1 |
children | 6ed2932901fa |
line wrap: on
line source
/** * editor_plugin_src.js * * Copyright 2009, Moxiecode Systems AB * Released under LGPL License. * * License: http://tinymce.moxiecode.com/license * Contributing: http://tinymce.moxiecode.com/contributing */ (function() { tinymce.create('tinymce.plugins.FullPagePlugin', { init : function(ed, url) { var t = this; t.editor = ed; // Register commands ed.addCommand('mceFullPageProperties', function() { ed.windowManager.open({ file : url + '/fullpage.htm', width : 430 + parseInt(ed.getLang('fullpage.delta_width', 0)), height : 495 + parseInt(ed.getLang('fullpage.delta_height', 0)), inline : 1 }, { plugin_url : url, head_html : t.head }); }); // Register buttons ed.addButton('fullpage', {title : 'fullpage.desc', cmd : 'mceFullPageProperties'}); ed.onBeforeSetContent.add(t._setContent, t); ed.onSetContent.add(t._setBodyAttribs, t); ed.onGetContent.add(t._getContent, t); }, 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 }; }, // Private plugin internal methods _setBodyAttribs : function(ed, o) { var bdattr, i, len, kv, k, v, t, attr = this.head.match(/body(.*?)>/i); if (attr && attr[1]) { bdattr = attr[1].match(/\s*(\w+\s*=\s*".*?"|\w+\s*=\s*'.*?'|\w+\s*=\s*\w+|\w+)\s*/g); if (bdattr) { for(i = 0, len = bdattr.length; i < len; i++) { kv = bdattr[i].split('='); k = kv[0].replace(/\s/,''); v = kv[1]; if (v) { v = v.replace(/^\s+/,'').replace(/\s+$/,''); t = v.match(/^["'](.*)["']$/); if (t) v = t[1]; } else v = k; ed.dom.setAttrib(ed.getBody(), 'style', v); } } } }, _createSerializer : function() { return new tinymce.dom.Serializer({ dom : this.editor.dom, apply_source_formatting : true }); }, _setContent : function(ed, o) { var t = this, sp, ep, c = o.content, v, st = ''; if (o.source_view && ed.getParam('fullpage_hide_in_source_view')) return; // Parse out head, body and footer c = c.replace(/<(\/?)BODY/gi, '<$1body'); sp = c.indexOf('<body'); if (sp != -1) { sp = c.indexOf('>', sp); t.head = c.substring(0, sp + 1); ep = c.indexOf('</body', sp); if (ep == -1) ep = c.indexOf('</body', ep); o.content = c.substring(sp + 1, ep); t.foot = c.substring(ep); function low(s) { return s.replace(/<\/?[A-Z]+/g, function(a) { return a.toLowerCase(); }) }; t.head = low(t.head); t.foot = low(t.foot); } else { t.head = ''; if (ed.getParam('fullpage_default_xml_pi')) t.head += '<?xml version="1.0" encoding="' + ed.getParam('fullpage_default_encoding', 'ISO-8859-1') + '" ?>\n'; t.head += ed.getParam('fullpage_default_doctype', '<!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>' + ed.getParam('fullpage_default_title', 'Untitled document') + '</title>\n'; if (v = ed.getParam('fullpage_default_encoding')) t.head += '<meta http-equiv="Content-Type" content="' + v + '" />\n'; if (v = ed.getParam('fullpage_default_font_family')) st += 'font-family: ' + v + ';'; if (v = ed.getParam('fullpage_default_font_size')) st += 'font-size: ' + v + ';'; if (v = ed.getParam('fullpage_default_text_color')) st += 'color: ' + v + ';'; t.head += '</head>\n<body' + (st ? ' style="' + st + '"' : '') + '>\n'; t.foot = '\n</body>\n</html>'; } }, _getContent : function(ed, o) { var t = this; if (!o.source_view || !ed.getParam('fullpage_hide_in_source_view')) o.content = tinymce.trim(t.head) + '\n' + tinymce.trim(o.content) + '\n' + tinymce.trim(t.foot); } }); // Register plugin tinymce.PluginManager.add('fullpage', tinymce.plugins.FullPagePlugin); })();