Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/xml/Parse.js
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/xml/Parse.js?view=auto&rev=509273
==============================================================================
--- ofbiz/trunk/framework/images/webapp/images/dojo/src/xml/Parse.js (added)
+++ ofbiz/trunk/framework/images/webapp/images/dojo/src/xml/Parse.js Mon Feb 19 
09:56:06 2007
@@ -0,0 +1,282 @@
+/*
+       Copyright (c) 2004-2006, The Dojo Foundation
+       All Rights Reserved.
+
+       Licensed under the Academic Free License version 2.1 or above OR the
+       modified BSD license. For more information on Dojo licensing, see:
+
+               http://dojotoolkit.org/community/licensing.shtml
+*/
+
+dojo.provide("dojo.xml.Parse");
+dojo.require("dojo.dom");
+
+//TODO: determine dependencies
+// currently has dependency on dojo.xml.DomUtil nodeTypes constants...
+
+// using documentFragment nomenclature to generalize in case we don't want to 
require passing a collection of nodes with a single parent
+
+dojo.xml.Parse = function(){
+       // summary:
+       //              generic class for taking a DOM node and parsing it into 
an object
+       //              based on the "dojo tag name" of that node.
+       // 
+       //              supported dojoTagName's:
+       //                      <prefix:tag> => prefix:tag
+       //                      <dojo:tag> => dojo:tag
+       //                      <dojoTag> => dojo:tag
+       //                      <tag dojoType="type"> => dojo:type
+       //                      <tag dojoType="prefix:type"> => prefix:type
+       //                      <tag dojo:type="type"> => dojo:type
+       //                      <tag class="classa dojo-type classb"> => 
dojo:type      
+
+       var isIE = ((dojo.render.html.capable)&&(dojo.render.html.ie));
+
+       // get normalized (lowercase) tagName
+       // some browsers report tagNames in lowercase no matter what
+       function getTagName(node){
+               /*
+               return ((node)&&(node["tagName"]) ? node.tagName.toLowerCase() 
: '');
+               */
+               try{
+                       return node.tagName.toLowerCase();
+               }catch(e){
+                       return "";
+               }
+       }
+
+       // locate dojo qualified tag name
+       function getDojoTagName(node){
+               var tagName = getTagName(node);
+               if (!tagName){
+                               return '';
+               }
+               // any registered tag
+               if((dojo.widget)&&(dojo.widget.tags[tagName])){
+                       return tagName;
+               }
+               // <prefix:tag> => prefix:tag
+               var p = tagName.indexOf(":");
+               if(p>=0){
+                       return tagName;
+               }
+               // <dojo:tag> => dojo:tag
+               if(tagName.substr(0,5) == "dojo:"){
+                       return tagName;
+               }
+               if(dojo.render.html.capable && dojo.render.html.ie && 
node.scopeName != 'HTML'){
+                       return node.scopeName.toLowerCase() + ':' + tagName;
+               }
+               // <dojoTag> => dojo:tag
+               if(tagName.substr(0,4) == "dojo"){
+                       // FIXME: this assumes tag names are always lower case
+                       return "dojo:" + tagName.substring(4);
+               }
+               // <tag dojoType="prefix:type"> => prefix:type
+               // <tag dojoType="type"> => dojo:type
+               var djt = node.getAttribute("dojoType") || 
node.getAttribute("dojotype");
+               if(djt){
+                       if (djt.indexOf(":")<0){
+                               djt = "dojo:"+djt;
+                       }
+                       return djt.toLowerCase();
+               }
+               // <tag dojo:type="type"> => dojo:type
+               djt = node.getAttributeNS && 
node.getAttributeNS(dojo.dom.dojoml,"type");
+               if(djt){
+                       return "dojo:" + djt.toLowerCase();
+               }
+               // <tag dojo:type="type"> => dojo:type
+               try{
+                       // FIXME: IE really really doesn't like this, so we 
squelch errors for it
+                       djt = node.getAttribute("dojo:type");
+               }catch(e){ 
+                       // FIXME: log?  
+               }
+               if(djt){ return "dojo:"+djt.toLowerCase(); }
+               // <tag class="classa dojo-type classb"> => dojo:type   
+               if((dj_global["djConfig"])&&(!djConfig["ignoreClassNames"])){ 
+                       // FIXME: should we make this optionally enabled via 
djConfig?
+                       var classes = 
node.className||node.getAttribute("class");
+                       // FIXME: following line, without check for existence 
of classes.indexOf
+                       // breaks firefox 1.5's svg widgets
+                       if((classes 
)&&(classes.indexOf)&&(classes.indexOf("dojo-")!=-1)){
+                               var aclasses = classes.split(" ");
+                               for(var x=0, c=aclasses.length; x<c; x++){
+                                       if(aclasses[x].slice(0, 5) == "dojo-"){
+                                               return 
"dojo:"+aclasses[x].substr(5).toLowerCase(); 
+                                       }
+                               }
+                       }
+               }
+               // no dojo-qualified name
+               return '';
+       }
+
+
+       this.parseElement = function(   /*DomNode*/node,
+                                                                       
/*Boolean*/hasParentNodeSet, 
+                                                                       
/*Boolean*/optimizeForDojoML, 
+                                                                       
/*Integer*/thisIdx      ){
+               // summary:
+               //              recursively parse the passed node, returning a 
normalized data
+               //              structure that represents the "attributes of 
interest" of said
+               //              elements. If optimizeForDojoML is true, only 
nodes that contain
+               //              a "dojo tag name" will be inspected for 
attributes.
+               // node: the DomNode to be treated as the root of inspection
+               // hasParentNodeSet: no-op, please pass "null"
+               // optimizeForDojoML: should we ignore non-Dojo nodes? Defaults 
to false.
+               // thisIdx:
+               //              a way to specify a synthetic "index" property 
in the resulting
+               //              data structure. Otherwise the index property of 
the top-level
+               //              return element is always "0".
+
+               // TODOC: document return structure of a non-trivial element set
+
+               // run shortcuts to bail out of processing up front to save 
time and
+               // object alloc if possible.
+               var tagName = getTagName(node);
+               //There's a weird bug in IE where it counts end tags, e.g. 
</dojo:button> as nodes that should be parsed.  Ignore these
+               if(isIE && tagName.indexOf("/")==0){ return null; }
+
+               try{
+                       var attr = node.getAttribute("parseWidgets");
+                       if(attr && attr.toLowerCase() == "false"){
+                               return {};
+                       }
+               }catch(e){/*continue*/}
+
+               
+               // look for a dojoml qualified name
+               // process dojoml only when optimizeForDojoML is true
+               var process = true;
+               if(optimizeForDojoML){
+                       var dojoTagName = getDojoTagName(node);
+                       tagName = dojoTagName || tagName;
+                       process = Boolean(dojoTagName);
+               }
+
+               var parsedNodeSet = {};
+               parsedNodeSet[tagName] = [];
+               var pos = tagName.indexOf(":");
+               if(pos>0){
+                       var ns = tagName.substring(0,pos);
+                       parsedNodeSet["ns"] = ns;
+                       // honor user namespace filters
+                       if((dojo.ns)&&(!dojo.ns.allow(ns))){process=false;}
+               }
+
+               if(process){
+                       var attributeSet = this.parseAttributes(node);
+                       for(var attr in attributeSet){
+                               if((!parsedNodeSet[tagName][attr])||(typeof 
parsedNodeSet[tagName][attr] != "array")){
+                                       parsedNodeSet[tagName][attr] = [];
+                               }
+                               
parsedNodeSet[tagName][attr].push(attributeSet[attr]);
+                       }       
+                       // FIXME: we might want to make this optional or 
provide cloning instead of
+                       // referencing, but for now, we include a node 
reference to allow
+                       // instantiated components to figure out their "roots"
+                       parsedNodeSet[tagName].nodeRef = node;
+                       parsedNodeSet.tagName = tagName;
+                       parsedNodeSet.index = thisIdx||0;
+               }
+
+               var count = 0;
+               for(var i = 0; i < node.childNodes.length; i++){
+                       var tcn = node.childNodes.item(i);
+                       switch(tcn.nodeType){
+                               case  dojo.dom.ELEMENT_NODE: // element nodes, 
call this function recursively
+                                       var ctn = getDojoTagName(tcn) || 
getTagName(tcn);
+                                       if(!parsedNodeSet[ctn]){
+                                               parsedNodeSet[ctn] = [];
+                                       }
+                                       
parsedNodeSet[ctn].push(this.parseElement(tcn, true, optimizeForDojoML, count));
+                                       if(     (tcn.childNodes.length == 1)&&
+                                               
(tcn.childNodes.item(0).nodeType == dojo.dom.TEXT_NODE)){
+                                               
parsedNodeSet[ctn][parsedNodeSet[ctn].length-1].value = 
tcn.childNodes.item(0).nodeValue;
+                                       }
+                                       count++;
+                                       break;
+                               case  dojo.dom.TEXT_NODE: // if a single text 
node is the child, treat it as an attribute
+                                       if(node.childNodes.length == 1){
+                                               parsedNodeSet[tagName].push({ 
value: node.childNodes.item(0).nodeValue });
+                                       }
+                                       break;
+                               default: break;
+                               /*
+                               case  dojo.dom.ATTRIBUTE_NODE: // attribute 
node... not meaningful here
+                                       break;
+                               case  dojo.dom.CDATA_SECTION_NODE: // cdata 
section... not sure if this would ever be meaningful... might be...
+                                       break;
+                               case  dojo.dom.ENTITY_REFERENCE_NODE: // entity 
reference node... not meaningful here
+                                       break;
+                               case  dojo.dom.ENTITY_NODE: // entity node... 
not sure if this would ever be meaningful
+                                       break;
+                               case  dojo.dom.PROCESSING_INSTRUCTION_NODE: // 
processing instruction node... not meaningful here
+                                       break;
+                               case  dojo.dom.COMMENT_NODE: // comment node... 
not not sure if this would ever be meaningful 
+                                       break;
+                               case  dojo.dom.DOCUMENT_NODE: // document 
node... not sure if this would ever be meaningful
+                                       break;
+                               case  dojo.dom.DOCUMENT_TYPE_NODE: // document 
type node... not meaningful here
+                                       break;
+                               case  dojo.dom.DOCUMENT_FRAGMENT_NODE: // 
document fragment node... not meaningful here
+                                       break;
+                               case  dojo.dom.NOTATION_NODE:// notation 
node... not meaningful here
+                                       break;
+                               */
+                       }
+               }
+               //return (hasParentNodeSet) ? parsedNodeSet[node.tagName] : 
parsedNodeSet;
+               //if(parsedNodeSet.tagName)dojo.debug("parseElement: RETURNING 
NODE WITH TAGNAME "+parsedNodeSet.tagName);
+               return parsedNodeSet;
+       };
+
+
+       /* parses a set of attributes on a node into an object tree */
+       this.parseAttributes = function(/*DomNode*/node){
+               // summary:
+               //              creates an attribute object that maps attribute 
values for the
+               //              passed node. Note that this is similar to 
creating a JSON
+               //              representation of a DOM node.
+               // usage:
+               //              a node with the following serialization:
+               //                      <div foo="bar" baz="thud">...</div>     
+               //              would yeild the following return structure when 
passed into this
+               //              function:
+               //                      {
+               //                              "foo": {
+               //                                      "value": "bar"
+               //                              },
+               //                              "baz": {
+               //                                      "value": "thud"
+               //                              }
+               //                      }
+               //
+               var parsedAttributeSet = {};
+               var atts = node.attributes;
+               // TODO: should we allow for duplicate attributes at this 
point...
+               // would any of the relevant dom implementations even allow 
this?
+               var attnode, i=0;
+               while((attnode=atts[i++])){
+                       if(isIE){
+                               if(!attnode){ continue; }
+                               if((typeof attnode == "object")&&
+                                       (typeof attnode.nodeValue == 
'undefined')||
+                                       (attnode.nodeValue == null)||
+                                       (attnode.nodeValue == '')){ 
+                                       continue; 
+                               }
+                       }
+
+                       var nn = attnode.nodeName.split(":");
+                       nn = (nn.length == 2) ? nn[1] : attnode.nodeName;
+                                               
+                       parsedAttributeSet[nn] = { 
+                               value: attnode.nodeValue 
+                       };
+               }
+               return parsedAttributeSet;
+       };
+};

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/xml/Parse.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/xml/Parse.js
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/xml/Parse.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/xml/XslTransform.js
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/xml/XslTransform.js?view=auto&rev=509273
==============================================================================
--- ofbiz/trunk/framework/images/webapp/images/dojo/src/xml/XslTransform.js 
(added)
+++ ofbiz/trunk/framework/images/webapp/images/dojo/src/xml/XslTransform.js Mon 
Feb 19 09:56:06 2007
@@ -0,0 +1,249 @@
+/*
+       Copyright (c) 2004-2006, The Dojo Foundation
+       All Rights Reserved.
+
+       Licensed under the Academic Free License version 2.1 or above OR the
+       modified BSD license. For more information on Dojo licensing, see:
+
+               http://dojotoolkit.org/community/licensing.shtml
+*/
+
+dojo.provide("dojo.xml.XslTransform");
+
+dojo.xml.XslTransform = function(/*String*/xsltUri){
+       //      summary:
+       //              dojo.xml.XslTransform is a convenience object that 
takes the URI
+       //              String of an XSL file as a constructor argument. After 
each
+       //              transformation all parameters will be cleared. 
Transformation is
+       //              supported by IE, Mozilla, and partially by Opera. Other 
browsers
+       //              (notably Safari) have not yet exposed their 
transformation
+       //              primtives well enough to be useful.
+       // xsltUri:
+       //              Url of the xslt document to transform nodes with. 
Transformation is
+       //              acheived with the transformTo* methods on instances of 
this class.
+
+       dojo.debug("XslTransform is supported by Internet Explorer and Mozilla, 
with limited support in Opera 9 (no document function support).");
+       var IS_IE = dojo.render.html.ie;
+       var ACTIVEX_DOMS = [
+               "Msxml2.DOMDocument.5.0", 
+               "Msxml2.DOMDocument.4.0", 
+               "Msxml2.DOMDocument.3.0", 
+               "MSXML2.DOMDocument", 
+               "MSXML.DOMDocument", 
+               "Microsoft.XMLDOM"
+       ];
+       var ACTIVEX_FT_DOMS = [
+               "Msxml2.FreeThreadedDOMDocument.5.0", 
+               "MSXML2.FreeThreadedDOMDocument.4.0", 
+               "MSXML2.FreeThreadedDOMDocument.3.0"
+       ];
+       var ACTIVEX_TEMPLATES = [
+               "Msxml2.XSLTemplate.5.0", 
+               "Msxml2.XSLTemplate.4.0", 
+               "MSXML2.XSLTemplate.3.0"
+       ];
+  
+       function getActiveXImpl(activeXArray){
+               for(var i=0; i < activeXArray.length; i++){
+                       try{
+                               var testObj = new 
ActiveXObject(activeXArray[i]);
+                               if(testObj){
+                                       return activeXArray[i];
+                               }
+                       }catch(e){}
+               }
+               dojo.raise("Could not find an ActiveX implementation in:\n\n " 
+ activeXArray);
+       }
+    
+    if(xsltUri == null || xsltUri == undefined){
+        dojo.raise("You must pass the URI String for the XSL file to be 
used!");
+        return false;
+    }
+    
+       var xsltDocument = null;
+       var xsltProcessor = null;
+       if(IS_IE){
+               xsltDocument = new 
ActiveXObject(getActiveXImpl(ACTIVEX_FT_DOMS));
+               xsltDocument.async = false;
+       }else{
+               xsltProcessor = new XSLTProcessor();
+               xsltDocument = document.implementation.createDocument("", "", 
null);
+               xsltDocument.addEventListener("load", onXslLoad, false);
+       }
+       xsltDocument.load(xsltUri);
+
+       if(IS_IE){
+               var xslt = new ActiveXObject(getActiveXImpl(ACTIVEX_TEMPLATES));
+               xslt.stylesheet = xsltDocument;  
+               xsltProcessor = xslt.createProcessor();
+       }
+
+       function onXslLoad(){
+               xsltProcessor.importStylesheet(xsltDocument); 
+       }
+
+       function getResultDom(xmlDoc, params){
+               if(IS_IE){
+                       addIeParams(params);
+                       var result = getIeResultDom(xmlDoc);
+                       removeIeParams(params);   
+                       return result;
+               }else{
+                       return getMozillaResultDom(xmlDoc, params);
+               }
+       }
+
+       function addIeParams(params){
+               if(!params){ return; }
+               for(var i=0; i<params.length; i++){
+                       xsltProcessor.addParameter(params[i][0], params[i][1]);
+               }
+       }
+
+    function removeIeParams(params){
+               if(!params){ return; }
+               for(var i=0; i<params.length; i++){
+                       xsltProcessor.addParameter(params[i][0], "");
+               }
+    }
+
+       function getIeResultDom(xmlDoc){
+               xsltProcessor.input = xmlDoc;
+               var outDoc = new ActiveXObject(getActiveXImpl(ACTIVEX_DOMS));
+               outDoc.async = false;  
+               outDoc.validateOnParse = false;
+               xsltProcessor.output = outDoc;
+               xsltProcessor.transform();
+               if(outDoc.parseError.errorCode != 0){
+                       var err = outDoc.parseError;
+                       dojo.raise("err.errorCode: " + err.errorCode + 
"\n\nerr.reason: " + err.reason + "\n\nerr.url: " + err.url + "\n\nerr.srcText: 
" + err.srcText);
+               }
+               return outDoc;
+       }
+
+       function getIeResultStr(xmlDoc, params){
+               xsltProcessor.input = xmlDoc;
+               xsltProcessor.transform();    
+               return xsltProcessor.output;
+       }
+
+       function addMozillaParams(params){
+               if(!params){ return; }
+               for(var i=0; i<params.length; i++){
+                       xsltProcessor.setParameter(null, params[i][0], 
params[i][1]);
+               }
+       }
+
+       function getMozillaResultDom(xmlDoc, params){
+               addMozillaParams(params);
+               var resultDoc = xsltProcessor.transformToDocument(xmlDoc);
+               xsltProcessor.clearParameters();
+               return resultDoc;
+       }
+
+       function getMozillaResultStr(xmlDoc, params, parentDoc){
+               addMozillaParams(params);
+               var resultDoc = xsltProcessor.transformToFragment(xmlDoc, 
parentDoc);
+               var serializer = new XMLSerializer();
+               xsltProcessor.clearParameters();
+               return serializer.serializeToString(resultDoc);
+       }
+
+       this.getResultString = function(        /*XMLDocument*/xmlDoc, 
+                                                                               
/*2 Dimensional Array*/params, 
+                                                                               
/*HTMLDocument*/parentDoc){
+               // summary:
+               //              transform the xmlDoc and return the result as a 
string.
+               // xmlDoc: an XML Document to transform
+               // params:
+               //              a set of configuration parameters to pass to 
the transformation
+               //              engine.
+               // parentDoc: The HTML docuemnt to transform the subdocument 
"under"
+               var content = null;
+               if(IS_IE){
+                       addIeParams(params);
+                       content = getIeResultStr(xmlDoc, params);
+                       removeIeParams(params);  
+               }else{
+                       content = getMozillaResultStr(xmlDoc, params, 
parentDoc);
+               } 
+               //dojo.debug(content);
+               return content;
+       };
+
+       this.transformToContentPane = function( /*XMLDocument*/xmlDoc,
+                                                                               
        /*2 Dimensional Array*/params, 
+                                                                               
        /*ContentPane*/contentPane, 
+                                                                               
        /*HTMLDocument*/parentDoc){
+               // summary:
+               //              transform the xmlDoc and put the result into 
the passed
+               //              ContentPane instance
+               // xmlDoc: an XML Document to transform
+               // params:
+               //              a set of configuration parameters to pass to 
the transformation
+               //              engine.
+               // contentPane:
+               //              instance of dojo.widget.ContentPane to assign 
the transform
+               //              results to
+               // parentDoc: The HTML docuemnt to transform the subdocument 
"under"
+
+               // FIXME: do we need this function?
+               var content = this.getResultString(xmlDoc, params, parentDoc);
+               contentPane.setContent(content);
+       };
+
+       this.transformToRegion = function(      /*XMLDocument*/xmlDoc, 
+                                                                               
/*2 Dimensional Array*/params, 
+                                                                               
/*HTMLElement*/region, 
+                                                                               
/*HTMLDocument*/parentDoc){
+               // summary:
+               //              transform the xmlDoc and put the result into 
the passed
+               //              DomNode using innerHTML
+               // xmlDoc: an XML Document to transform
+               // params:
+               //              a set of configuration parameters to pass to 
the transformation
+               //              engine.
+               // region: node to put transform results in
+               // parentDoc: The HTML docuemnt to transform the subdocument 
"under"
+               try{
+                       var content = this.getResultString(xmlDoc, params, 
parentDoc);
+                       region.innerHTML = content;
+               }catch (e){
+                       dojo.raise(e.message + "\n\n xsltUri: " + xsltUri)
+               }
+       };
+
+       this.transformToDocument = function(    /*XMLDocument*/ xmlDoc, 
+                                                                               
        /*2 Dimensional Array*/params){
+               // summary:
+               //              transform the xmlDoc and return a new XML 
document containing
+               //              the result
+               // xmlDoc: an XML Document to transform
+               // params:
+               //              a set of configuration parameters to pass to 
the transformation
+               //              engine.
+               return getResultDom(xmlDoc, params); // XMLDocument
+       }
+
+       this.transformToWindow = function(      /*XMLDocument*/ xmlDoc,
+                                                                               
/*2 Dimensional Array*/params, 
+                                                                               
/*HTMLDocument*/windowDoc, 
+                                                                               
/*HTMLDocument*/parentDoc){
+               // summary:
+               //              transform the xmlDoc and put the contents in 
the passed
+               //              windowDoc, blowing away any previous contents.
+               // xmlDoc: an XML Document to transform
+               // params:
+               //              a set of configuration parameters to pass to 
the transformation
+               //              engine.
+               // windowDoc: the HTMLDocument to assign the contents to
+               // parentDoc: The HTML docuemnt to transform the subdocument 
"under"
+               try{
+                       windowDoc.open();
+                       windowDoc.write(this.getResultString(xmlDoc, params, 
parentDoc));
+                       windowDoc.close();
+               }catch(e){
+                       dojo.raise(e.message + "\n\n xsltUri: " + xsltUri)
+               }
+       };
+};

Propchange: 
ofbiz/trunk/framework/images/webapp/images/dojo/src/xml/XslTransform.js
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: 
ofbiz/trunk/framework/images/webapp/images/dojo/src/xml/XslTransform.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/xml/__package__.js
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/xml/__package__.js?view=auto&rev=509273
==============================================================================
--- ofbiz/trunk/framework/images/webapp/images/dojo/src/xml/__package__.js 
(added)
+++ ofbiz/trunk/framework/images/webapp/images/dojo/src/xml/__package__.js Mon 
Feb 19 09:56:06 2007
@@ -0,0 +1,17 @@
+/*
+       Copyright (c) 2004-2006, The Dojo Foundation
+       All Rights Reserved.
+
+       Licensed under the Academic Free License version 2.1 or above OR the
+       modified BSD license. For more information on Dojo licensing, see:
+
+               http://dojotoolkit.org/community/licensing.shtml
+*/
+
+dojo.require("dojo.xml.Parse");
+dojo.kwCompoundRequire({
+       common:         ["dojo.dom"],
+    browser:   ["dojo.html.*"],
+    dashboard:         ["dojo.html.*"]
+});
+dojo.provide("dojo.xml.*");

Propchange: 
ofbiz/trunk/framework/images/webapp/images/dojo/src/xml/__package__.js
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
ofbiz/trunk/framework/images/webapp/images/dojo/src/xml/__package__.js
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: 
ofbiz/trunk/framework/images/webapp/images/dojo/src/xml/__package__.js
------------------------------------------------------------------------------
    svn:mime-type = text/plain


Reply via email to