diff options
Diffstat (limited to 'includes/js/dojox/wire/ml/util.js')
-rw-r--r-- | includes/js/dojox/wire/ml/util.js | 295 |
1 files changed, 0 insertions, 295 deletions
diff --git a/includes/js/dojox/wire/ml/util.js b/includes/js/dojox/wire/ml/util.js deleted file mode 100644 index a336b28..0000000 --- a/includes/js/dojox/wire/ml/util.js +++ /dev/null @@ -1,295 +0,0 @@ -if(!dojo._hasResource["dojox.wire.ml.util"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. -dojo._hasResource["dojox.wire.ml.util"] = true; -dojo.provide("dojox.wire.ml.util"); - -dojo.require("dojox.data.dom"); -dojo.require("dojox.wire.Wire"); - -dojox.wire.ml._getValue = function(/*String*/source, /*Array*/args){ - // summary: - // Return a value - // description: - // This method obtains an object by an ID of a widget or an DOM - // element. - // If 'source' specifies a dotted notation to its property, a Wire is - // used to get the object property. - // If 'source' starts with "arguments", 'args' is used as a root - // object for the Wire. - // source: - // A string to specify an object and its property - // args: - // An optional arguments array - // returns: - // A value - if(!source){ - return undefined; //undefined - } - var property = undefined; - if(args && source.length >= 9 && source.substring(0, 9) == "arguments"){ - property = source.substring(9); - return new dojox.wire.Wire({property: property}).getValue(args); - } - var i = source.indexOf('.'); - if(i >= 0){ - property = source.substring(i + 1); - source = source.substring(0, i); - } - var object = (dijit.byId(source) || dojo.byId(source) || dojo.getObject(source)); - if(!object){ - return undefined; //undefined - } - if(!property){ - return object; //Object - }else{ - return new dojox.wire.Wire({object: object, property: property}).getValue(); //anything - } -}; - -dojox.wire.ml._setValue = function(/*String*/target, /*anything*/value){ - // summary: - // Store a value - // description: - // This method stores a value by an ID of a widget or an DOM - // element with a dotted notation to its property, using a Wire. - // target: - // A string to specify an object and its property - // value: - // A value - if(!target){ - return; //undefined - } - var i = target.indexOf('.'); - if(i < 0){ - return; //undefined - } - var object = this._getValue(target.substring(0, i)); - if(!object){ - return; //undefined - } - var property = target.substring(i + 1); - new dojox.wire.Wire({object: object, property: property}).setValue(value); -}; - -dojo.declare("dojox.wire.ml.XmlElement", null, { - // summary: - // An object wrapping an XML element - // description: - // This class represents an XML element. - - constructor: function(/*Element||String*/element){ - // summary: - // Initialize with an XML element or a tag name - // element: - // An XML element or a tag name - if(dojo.isString(element)){ - element = this._getDocument().createElement(element); - } - this.element = element; - }, - getPropertyValue: function(/*String*/property){ - // summary: - // Return a property value - // description: - // If 'property' starts with '@', the attribute value is returned. - // If 'property' specifies "text()", the value of the first child - // text is returned. - // Otherwise, child elements of the tag name specified with - // 'property' are returned. - // property: - // A property name - // returns: - // A property value - var value = undefined; - if(!this.element){ - return value; //undefined - } - if(!property){ - return value; //undefined - } - - if(property.charAt(0) == '@'){ - var attribute = property.substring(1); - value = this.element.getAttribute(attribute); - }else if(property == "text()"){ - var text = this.element.firstChild; - if(text){ - value = text.nodeValue; - } - }else{ // child elements - var elements = []; - for(var i = 0; i < this.element.childNodes.length; i++){ - var child = this.element.childNodes[i]; - if(child.nodeType === 1 /* ELEMENT_NODE */ && child.nodeName == property){ - elements.push(new dojox.wire.ml.XmlElement(child)); - } - } - if(elements.length > 0){ - if(elements.length === 1){ - value = elements[0]; - }else{ - value = elements; - } - } - } - return value; //String||Array||XmlElement - }, - - setPropertyValue: function(/*String*/property, /*String||Array||XmlElement*/value){ - // summary: - // Store a property value - // description: - // If 'property' starts with '@', 'value' is set to the attribute. - // If 'property' specifies "text()", 'value' is set as the first - // child text. - // If 'value' is a string, a child element of the tag name - // specified with 'property' is created and 'value' is set as - // the first child text of the child element. - // Otherwise, 'value' is set to as child elements. - // property: - // A property name - // value: - // A property value - if(!this.element){ - return; //undefined - } - if(!property){ - return; //undefined - } - - if(property.charAt(0) == '@'){ - var attribute = property.substring(1); - if(value){ - this.element.setAttribute(attribute, value); - }else{ - this.element.removeAttribute(attribute); - } - }else if(property == "text()"){ - while(this.element.firstChild){ - this.element.removeChild(this.element.firstChild); - } - if(value){ - var text = this._getDocument().createTextNode(value); - this.element.appendChild(text); - } - }else{ // child elements - var nextChild = null; - for(var i = this.element.childNodes.length - 1; i >= 0; i--){ - var child = this.element.childNodes[i]; - if(child.nodeType === 1 /* ELEMENT_NODE */ && child.nodeName == property){ - if(!nextChild){ - nextChild = child.nextSibling; - } - this.element.removeChild(child); - } - } - if(value){ - if(dojo.isArray(value)){ - for(var i in value){ - var e = value[i]; - if(e.element){ - this.element.insertBefore(e.element, nextChild); - } - } - }else if(value instanceof dojox.wire.ml.XmlElement){ - if(value.element){ - this.element.insertBefore(value.element, nextChild); - } - }else{ // assume string - var child = this._getDocument().createElement(property); - var text = this._getDocument().createTextNode(value); - child.appendChild(text); - this.element.insertBefore(child, nextChild); - } - } - } - }, - - toString: function(){ - // summary: - // Return a value of the first text child of the element - // description: - // A value of the first text child of the element is returned. - // returns: - // A value of the first text child of the element - var s = ""; - if(this.element){ - var text = this.element.firstChild; - if(text){ - s = text.nodeValue; - } - } - return s; //String - }, - - toObject: function(){ - // summary: - // Return an object representation of the element - // description: - // An object with properties for child elements, attributes and - // text is returned. - // returns: - // An object representation of the element - if(!this.element){ - return null; //null - } - var text = ""; - var obj = {}; - var elements = 0; - for(var i = 0; i < this.element.childNodes.length; i++){ - var child = this.element.childNodes[i]; - if(child.nodeType === 1 /* ELEMENT_NODE */){ - elements++; - var o = new dojox.wire.ml.XmlElement(child).toObject(); - var name = child.nodeName; - var p = obj[name]; - if(!p){ - obj[name] = o; - }else if(dojo.isArray(p)){ - p.push(o); - }else{ - obj[name] = [p, o]; // make them array - } - }else if(child.nodeType === 3 /* TEXT_NODE */ || - child.nodeType === 4 /* CDATA_SECTION_NODE */){ - text += child.nodeValue; - } - } - var attributes = 0; - if(this.element.nodeType === 1 /* ELEMENT_NODE */){ - attributes = this.element.attributes.length; - for(var i = 0; i < attributes; i++){ - var attr = this.element.attributes[i]; - obj["@" + attr.nodeName] = attr.nodeValue; - } - } - if(elements === 0){ - if(attributes === 0){ - // text only - return text; //String - } - // text with attributes - obj["text()"] = text; - } - // else ignore text - return obj; //Object - }, - - _getDocument: function(){ - // summary: - // Return a DOM document - // description: - // If 'element' is specified, a DOM document of the element is - // returned. - // Otherwise, a DOM document is created. - // returns: - // A DOM document - if(this.element){ - return (this.element.nodeType == 9 /* DOCUMENT_NODE */ ? - this.element : this.element.ownerDocument); //Document - }else{ - return dojox.data.dom.createDocument(); //Document - } - } -}); - -} |