-<html>
-<head>
- <title>The source code</title>
- <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
- <script type="text/javascript" src="../resources/prettify/prettify.js"></script>
-</head>
-<body onload="prettyPrint();">
- <pre class="prettyprint lang-js">/*!
- * Ext JS Library 3.0.3
- * Copyright(c) 2006-2009 Ext JS, LLC
- * licensing@extjs.com
- * http://www.extjs.com/license
- */
-<div id="cls-Ext.tree.TreeLoader"></div>/**\r
+<html>\r
+<head>\r
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> \r
+ <title>The source code</title>\r
+ <link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />\r
+ <script type="text/javascript" src="../resources/prettify/prettify.js"></script>\r
+</head>\r
+<body onload="prettyPrint();">\r
+ <pre class="prettyprint lang-js"><div id="cls-Ext.tree.TreeLoader"></div>/**\r
* @class Ext.tree.TreeLoader\r
* @extends Ext.util.Observable\r
* A TreeLoader provides for lazy loading of an {@link Ext.tree.TreeNode}'s child\r
"loadexception"\r
);\r
Ext.tree.TreeLoader.superclass.constructor.call(this);\r
- if(typeof this.paramOrder == 'string'){\r
+ if(Ext.isString(this.paramOrder)){\r
this.paramOrder = this.paramOrder.split(/[\s,|]/);\r
}\r
};\r
\r
<div id="cfg-Ext.tree.TreeLoader-paramOrder"></div>/**\r
* @cfg {Array/String} paramOrder Defaults to <tt>undefined</tt>. Only used when using directFn.\r
- * A list of params to be executed\r
- * server side. Specify the params in the order in which they must be executed on the server-side\r
+ * Specifies the params in the order in which they must be passed to the server-side Direct method\r
* as either (1) an Array of String values, or (2) a String of params delimited by either whitespace,\r
* comma, or pipe. For example,\r
* any of the following would be acceptable:<pre><code>\r
+nodeParameter: 'node',\r
paramOrder: ['param1','param2','param3']\r
-paramOrder: 'param1 param2 param3'\r
-paramOrder: 'param1,param2,param3'\r
-paramOrder: 'param1|param2|param'\r
+paramOrder: 'node param1 param2 param3'\r
+paramOrder: 'param1,node,param2,param3'\r
+paramOrder: 'param1|param2|param|node'\r
</code></pre>\r
*/\r
paramOrder: undefined,\r
*/\r
paramsAsHash: false,\r
\r
+ <div id="cfg-Ext.tree.TreeLoader-nodeParameter"></div>/**\r
+ * @cfg {String} nodeParameter The name of the parameter sent to the server which contains\r
+ * the identifier of the node. Defaults to <tt>'node'</tt>.\r
+ */\r
+ nodeParameter: 'node',\r
+\r
<div id="cfg-Ext.tree.TreeLoader-directFn"></div>/**\r
* @cfg {Function} directFn\r
* Function to call when executing a request.\r
* This is called automatically when a node is expanded, but may be used to reload\r
* a node (or append new children if the {@link #clearOnLoad} option is false.)\r
* @param {Ext.tree.TreeNode} node\r
- * @param {Function} callback\r
- * @param (Object) scope\r
+ * @param {Function} callback Function to call after the node has been loaded. The\r
+ * function is passed the TreeNode which was requested to be loaded.\r
+ * @param (Object) scope The cope (<code>this</code> reference) in which the callback is executed.\r
+ * defaults to the loaded TreeNode.\r
*/\r
load : function(node, callback, scope){\r
if(this.clearOnLoad){\r
},\r
\r
getParams: function(node){\r
- var buf = [], bp = this.baseParams;\r
+ var bp = Ext.apply({}, this.baseParams),\r
+ np = this.nodeParameter,\r
+ po = this.paramOrder;\r
+\r
+ np && (bp[ np ] = node.id);\r
+\r
if(this.directFn){\r
- buf.push(node.id);\r
- if(bp){\r
- if(this.paramOrder){\r
- for(var i = 0, len = this.paramOrder.length; i < len; i++){\r
- buf.push(bp[this.paramOrder[i]]);\r
- }\r
- }else if(this.paramsAsHash){\r
- buf.push(bp);\r
+ var buf = [node.id];\r
+ if(po){\r
+ // reset 'buf' if the nodeParameter was included in paramOrder\r
+ if(np && po.indexOf(np) > -1){\r
+ buf = [];\r
}\r
+\r
+ for(var i = 0, len = po.length; i < len; i++){\r
+ buf.push(bp[ po[i] ]);\r
+ }\r
+ }else if(this.paramsAsHash){\r
+ buf = [bp];\r
}\r
return buf;\r
}else{\r
- for(var key in bp){\r
- if(!Ext.isFunction(bp[key])){\r
- buf.push(encodeURIComponent(key), "=", encodeURIComponent(bp[key]), "&");\r
- }\r
- }\r
- buf.push("node=", encodeURIComponent(node.id));\r
- return buf.join("");\r
+ return bp;\r
}\r
},\r
\r
if(this.applyLoader !== false && !attr.loader){\r
attr.loader = this;\r
}\r
- if(typeof attr.uiProvider == 'string'){\r
+ if(Ext.isString(attr.uiProvider)){\r
attr.uiProvider = this.uiProviders[attr.uiProvider] || eval(attr.uiProvider);\r
}\r
if(attr.nodeType){\r
var a = response.argument;\r
this.fireEvent("loadexception", this, a.node, response);\r
this.runCallback(a.callback, a.scope || a.node, [a.node]);\r
+ },\r
+\r
+ destroy : function(){\r
+ this.abort();\r
+ this.purgeListeners();\r
}\r
-});</pre>
-</body>
+});</pre> \r
+</body>\r
</html>
\ No newline at end of file