mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-03-06 23:51:23 +00:00
Monotone-Parent: dbd490c81ea6cac4c12b2e17661e2fef43219e68 Monotone-Revision: 0801dc9f1e4fdc49ea44fc0450fb025c2639ed26 Monotone-Author: crobert@inverse.ca Monotone-Date: 2009-06-25T19:18:02 Monotone-Branch: ca.inverse.sogo
8 lines
3.7 KiB
JavaScript
8 lines
3.7 KiB
JavaScript
/*
|
|
Copyright (c) 2003-2009, CKSource - Frederico Knabben. All rights reserved.
|
|
For licensing, see LICENSE.html or http://ckeditor.com/license
|
|
*/
|
|
|
|
(function(){var a=/^[\t\r\n ]* $/,b='{cke_protected}';function c(x,y){var z=x.children,A=z[z.length-1];if(A){if((y||!CKEDITOR.env.ie)&&(A.type==CKEDITOR.NODE_ELEMENT&&A.name=='br'))z.pop();if(A.type==CKEDITOR.NODE_TEXT&&a.test(A.value))z.pop();}};function d(x){if(x.children.length<1)return true;var y=x.children[x.children.length-1];return y.type==CKEDITOR.NODE_ELEMENT&&y.name=='br';};function e(x){c(x,true);if(d(x))if(CKEDITOR.env.ie)x.add(new CKEDITOR.htmlParser.text('\xa0'));else x.add(new CKEDITOR.htmlParser.element('br',{}));};function f(x){c(x);if(d(x))x.add(new CKEDITOR.htmlParser.text('\xa0'));};var g=CKEDITOR.dtd,h=CKEDITOR.tools.extend({},g.$block,g.$listItem,g.$tableContent);for(var i in h)if(!('br' in g[i]))delete h[i];delete h.pre;var j={elementNames:[[/^(object|embed|param)$/,'cke:$1']],attributeNames:[[/^on/,'_cke_pa_on']]},k={elements:{}};for(i in h)k.elements[i]=e;var l=function(x){var y=x.attributes;if(y._cke_saved_name)delete y.name;},m={elementNames:[[/^cke:/,''],[/^\?xml:namespace$/,'']],attributeNames:[[/^_cke_(saved|pa)_/,''],[/^_cke.*/,'']],elements:{embed:function(x){var y=x.parent;if(y&&y.name=='object'){x.attributes.width=y.attributes.width;x.attributes.height=y.attributes.height;}},img:function(x){var y=x.attributes;if(y._cke_saved_name)delete y.name;if(y._cke_saved_src)delete y.src;},a:function(x){var y=x.attributes;if(y._cke_saved_name)delete y.name;if(y._cke_saved_href)delete y.href;},input:l,textarea:l,select:l,form:l},attributes:{'class':function(x,y){return CKEDITOR.tools.ltrim(x.replace(/(?:^|\s+)cke_[^\s]*/g,''))||false;}},comment:function(x){if(x.substr(0,b.length)==b)return new CKEDITOR.htmlParser.cdata(decodeURIComponent(x.substr(b.length)));return x;}},n={elements:{}};for(i in h)n.elements[i]=f;if(CKEDITOR.env.ie)m.attributes.style=function(x,y){return x.toLowerCase();};var o=/<(?:a|area|img|input).*?\s((?:href|src|name)\s*=\s*(?:(?:"[^"]*")|(?:'[^']*')|(?:[^ "'>]+)))/gi;function p(x){return x.replace(o,'$& _cke_saved_$1');};var q=/<(style)(?=[ >])[^>]*>[^<]*<\/\1>/gi,r=/<cke:encoded>([^<]*)<\/cke:encoded>/gi;function s(x){return '<cke:encoded>'+encodeURIComponent(x)+'</cke:encoded>';};function t(x){return x.replace(q,s);};function u(x,y){return decodeURIComponent(y);};function v(x){return x.replace(r,u);};function w(x,y){var z=[/<!--[\s\S]*?-->/g,/<script[\s\S]*?<\/script>/gi,/<noscript[\s\S]*?<\/noscript>/gi].concat(y);for(var A=0;A<z.length;A++)x=x.replace(z[A],function(B){return '<!--'+b+encodeURIComponent(B).replace(/--/g,'%2D%2D')+'-->';
|
|
});return x;};CKEDITOR.plugins.add('htmldataprocessor',{requires:['htmlwriter'],init:function(x){var y=x.dataProcessor=new CKEDITOR.htmlDataProcessor(x);y.writer.forceSimpleAmpersand=x.config.forceSimpleAmpersand;y.dataFilter.addRules(j);y.dataFilter.addRules(k);y.htmlFilter.addRules(m);y.htmlFilter.addRules(n);}});CKEDITOR.htmlDataProcessor=function(x){var y=this;y.editor=x;y.writer=new CKEDITOR.htmlWriter();y.dataFilter=new CKEDITOR.htmlParser.filter();y.htmlFilter=new CKEDITOR.htmlParser.filter();};CKEDITOR.htmlDataProcessor.prototype={toHtml:function(x,y){x=w(x,this.editor.config.protectedSource);x=p(x);if(CKEDITOR.env.ie)x=t(x);var z=document.createElement('div');z.innerHTML=x;x=z.innerHTML;if(CKEDITOR.env.ie)x=v(x);var A=CKEDITOR.htmlParser.fragment.fromHtml(x,y),B=new CKEDITOR.htmlParser.basicWriter();A.writeHtml(B,this.dataFilter);return B.getHtml(true);},toDataFormat:function(x,y){var z=this.writer,A=CKEDITOR.htmlParser.fragment.fromHtml(x,y);z.reset();A.writeHtml(z,this.htmlFilter);return z.getHtml(true);}};})();CKEDITOR.config.forceSimpleAmpersand=false;
|