]> git.wh0rd.org - tt-rss.git/blobdiff - lib/dijit/_editor/html.js
update dojo to 1.7.3
[tt-rss.git] / lib / dijit / _editor / html.js
index 196c8a3097ca3bbbec6b67e7ee224593682172a5..45becc4b0bf3897518b3c6421e019bfe93d8db05 100644 (file)
@@ -1,193 +1,2 @@
-/*
-       Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved.
-       Available via Academic Free License >= 2.1 OR the modified BSD license.
-       see: http://dojotoolkit.org/license for details
-*/
-
-
-if(!dojo._hasResource["dijit._editor.html"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
-dojo._hasResource["dijit._editor.html"] = true;
-dojo.provide("dijit._editor.html");
-
-dojo.getObject("_editor", true, dijit);
-
-dijit._editor.escapeXml=function(/*String*/str, /*Boolean?*/noSingleQuotes){
-       // summary:
-       //              Adds escape sequences for special characters in XML: &<>"'
-       //              Optionally skips escapes for single quotes
-       str = str.replace(/&/gm, "&amp;").replace(/</gm, "&lt;").replace(/>/gm, "&gt;").replace(/"/gm, "&quot;");
-       if(!noSingleQuotes){
-               str = str.replace(/'/gm, "&#39;");
-       }
-       return str; // string
-};
-
-dijit._editor.getNodeHtml=function(/* DomNode */node){
-       var output;
-       switch(node.nodeType){
-               case 1: //element node
-                       var lName = node.nodeName.toLowerCase();
-                       if(!lName || lName.charAt(0) == "/"){
-                               // IE does some strange things with malformed HTML input, like
-                               // treating a close tag </span> without an open tag <span>, as
-                               // a new tag with tagName of /span.  Corrupts output HTML, remove
-                               // them.  Other browsers don't prefix tags that way, so will
-                               // never show up.
-                               return "";
-                       }
-                       output = '<' + lName;
-
-                       //store the list of attributes and sort it to have the
-                       //attributes appear in the dictionary order
-                       var attrarray = [];
-                       var attr;
-                       if(dojo.isIE && node.outerHTML){
-                               var s = node.outerHTML;
-                               s = s.substr(0, s.indexOf('>'))
-                                       .replace(/(['"])[^"']*\1/g, ''); //to make the following regexp safe
-                               var reg = /(\b\w+)\s?=/g;
-                               var m, key;
-                               while((m = reg.exec(s))){
-                                       key = m[1];
-                                       if(key.substr(0,3) != '_dj'){
-                                               if(key == 'src' || key == 'href'){
-                                                       if(node.getAttribute('_djrealurl')){
-                                                               attrarray.push([key,node.getAttribute('_djrealurl')]);
-                                                               continue;
-                                                       }
-                                               }
-                                               var val, match;
-                                               switch(key){
-                                                       case 'style':
-                                                               val = node.style.cssText.toLowerCase();
-                                                               break;
-                                                       case 'class':
-                                                               val = node.className;
-                                                               break;
-                                                       case 'width':
-                                                               if(lName === "img"){
-                                                                       // This somehow gets lost on IE for IMG tags and the like
-                                                                       // and we have to find it in outerHTML, known IE oddity.
-                                                                       match=/width=(\S+)/i.exec(s);
-                                                                       if(match){
-                                                                               val = match[1];
-                                                                       }
-                                                                       break;
-                                                               }
-                                                       case 'height':
-                                                               if(lName === "img"){
-                                                                       // This somehow gets lost on IE for IMG tags and the like
-                                                                       // and we have to find it in outerHTML, known IE oddity.
-                                                                       match=/height=(\S+)/i.exec(s);
-                                                                       if(match){
-                                                                               val = match[1];
-                                                                       }
-                                                                       break;
-                                                               }
-                                                       default:
-                                                               val = node.getAttribute(key);
-                                               }
-                                               if(val != null){
-                                                       attrarray.push([key, val.toString()]);
-                                               }
-                                       }
-                               }
-                       }else{
-                               var i = 0;
-                               while((attr = node.attributes[i++])){
-                                       //ignore all attributes starting with _dj which are
-                                       //internal temporary attributes used by the editor
-                                       var n = attr.name;
-                                       if(n.substr(0,3) != '_dj' /*&&
-                                               (attr.specified == undefined || attr.specified)*/){
-                                               var v = attr.value;
-                                               if(n == 'src' || n == 'href'){
-                                                       if(node.getAttribute('_djrealurl')){
-                                                               v = node.getAttribute('_djrealurl');
-                                                       }
-                                               }
-                                               attrarray.push([n,v]);
-                                       }
-                               }
-                       }
-                       attrarray.sort(function(a,b){
-                               return a[0] < b[0] ? -1 : (a[0] == b[0] ? 0 : 1);
-                       });
-                       var j = 0;
-                       while((attr = attrarray[j++])){
-                               output += ' ' + attr[0] + '="' +
-                                       (dojo.isString(attr[1]) ? dijit._editor.escapeXml(attr[1], true) : attr[1]) + '"';
-                       }
-                       if(lName === "script"){
-                               // Browsers handle script tags differently in how you get content,
-                               // but innerHTML always seems to work, so insert its content that way
-                               // Yes, it's bad to allow script tags in the editor code, but some people
-                               // seem to want to do it, so we need to at least return them right.
-                               // other plugins/filters can strip them.
-                               output += '>' + node.innerHTML +'</' + lName + '>';
-                       }else{
-                               if(node.childNodes.length){
-                                       output += '>' + dijit._editor.getChildrenHtml(node)+'</' + lName +'>';
-                               }else{
-                                       switch(lName){
-                                               case 'br':
-                                               case 'hr':
-                                               case 'img':
-                                               case 'input':
-                                               case 'base':
-                                               case 'meta':
-                                               case 'area':
-                                               case 'basefont':
-                                                       // These should all be singly closed
-                                                       output += ' />';
-                                                       break;
-                                               default:
-                                                       // Assume XML style separate closure for everything else.
-                                                       output += '></' + lName + '>';
-                                       }
-                               }
-                       }
-                       break;
-               case 4: // cdata
-               case 3: // text
-                       // FIXME:
-                       output = dijit._editor.escapeXml(node.nodeValue, true);
-                       break;
-               case 8: //comment
-                       // FIXME:
-                       output = '<!--' + dijit._editor.escapeXml(node.nodeValue, true) + '-->';
-                       break;
-               default:
-                       output = "<!-- Element not recognized - Type: " + node.nodeType + " Name: " + node.nodeName + "-->";
-       }
-       return output;
-};
-
-dijit._editor.getChildrenHtml = function(/* DomNode */dom){
-       // summary:
-       //              Returns the html content of a DomNode and children
-       var out = "";
-       if(!dom){ return out; }
-       var nodes = dom["childNodes"] || dom;
-
-       //IE issue.
-       //If we have an actual node we can check parent relationships on for IE,
-       //We should check, as IE sometimes builds invalid DOMS.  If no parent, we can't check
-       //And should just process it and hope for the best.
-       var checkParent = !dojo.isIE || nodes !== dom;
-
-       var node, i = 0;
-       while((node = nodes[i++])){
-               //IE is broken.  DOMs are supposed to be a tree.  But in the case of malformed HTML, IE generates a graph
-               //meaning one node ends up with multiple references (multiple parents).  This is totally wrong and invalid, but
-               //such is what it is.  We have to keep track and check for this because otherise the source output HTML will have dups.
-               //No other browser generates a graph.  Leave it to IE to break a fundamental DOM rule.  So, we check the parent if we can
-               //If we can't, nothing more we can do other than walk it.
-               if(!checkParent || node.parentNode == dom){
-                       out += dijit._editor.getNodeHtml(node);
-               }
-       }
-       return out; // String
-};
-
-}
+//>>built
+define("dijit/_editor/html",["dojo/_base/lang","dojo/_base/sniff",".."],function(_1,_2,_3){_1.getObject("_editor",true,_3);_3._editor.escapeXml=function(_4,_5){_4=_4.replace(/&/gm,"&amp;").replace(/</gm,"&lt;").replace(/>/gm,"&gt;").replace(/"/gm,"&quot;");if(!_5){_4=_4.replace(/'/gm,"&#39;");}return _4;};_3._editor.getNodeHtml=function(_6){var _7;switch(_6.nodeType){case 1:var _8=_6.nodeName.toLowerCase();if(!_8||_8.charAt(0)=="/"){return "";}_7="<"+_8;var _9=[];var _a;if(_2("ie")&&_6.outerHTML){var s=_6.outerHTML;s=s.substr(0,s.indexOf(">")).replace(/(['"])[^"']*\1/g,"");var _b=/(\b\w+)\s?=/g;var m,_c;while((m=_b.exec(s))){_c=m[1];if(_c.substr(0,3)!="_dj"){if(_c=="src"||_c=="href"){if(_6.getAttribute("_djrealurl")){_9.push([_c,_6.getAttribute("_djrealurl")]);continue;}}var _d,_e;switch(_c){case "style":_d=_6.style.cssText.toLowerCase();break;case "class":_d=_6.className;break;case "width":if(_8==="img"){_e=/width=(\S+)/i.exec(s);if(_e){_d=_e[1];}break;}case "height":if(_8==="img"){_e=/height=(\S+)/i.exec(s);if(_e){_d=_e[1];}break;}default:_d=_6.getAttribute(_c);}if(_d!=null){_9.push([_c,_d.toString()]);}}}}else{var i=0;while((_a=_6.attributes[i++])){var n=_a.name;if(n.substr(0,3)!="_dj"){var v=_a.value;if(n=="src"||n=="href"){if(_6.getAttribute("_djrealurl")){v=_6.getAttribute("_djrealurl");}}_9.push([n,v]);}}}_9.sort(function(a,b){return a[0]<b[0]?-1:(a[0]==b[0]?0:1);});var j=0;while((_a=_9[j++])){_7+=" "+_a[0]+"=\""+(_1.isString(_a[1])?_3._editor.escapeXml(_a[1],true):_a[1])+"\"";}if(_8==="script"){_7+=">"+_6.innerHTML+"</"+_8+">";}else{if(_6.childNodes.length){_7+=">"+_3._editor.getChildrenHtml(_6)+"</"+_8+">";}else{switch(_8){case "br":case "hr":case "img":case "input":case "base":case "meta":case "area":case "basefont":_7+=" />";break;default:_7+="></"+_8+">";}}}break;case 4:case 3:_7=_3._editor.escapeXml(_6.nodeValue,true);break;case 8:_7="<!--"+_3._editor.escapeXml(_6.nodeValue,true)+"-->";break;default:_7="<!-- Element not recognized - Type: "+_6.nodeType+" Name: "+_6.nodeName+"-->";}return _7;};_3._editor.getChildrenHtml=function(_f){var out="";if(!_f){return out;}var _10=_f["childNodes"]||_f;var _11=!_2("ie")||_10!==_f;var _12,i=0;while((_12=_10[i++])){if(!_11||_12.parentNode==_f){out+=_3._editor.getNodeHtml(_12);}}return out;};return _3._editor;});
\ No newline at end of file