Ok, here the code snippet:
Code:
Container.add({
id : 'someId',
border : false,
width : 700,
style : {
textAlign : 'left'
},
defaults : {
border : false,
},
items : [{
xtype : 'treepanel',
id : 'treeId',
rootVisible : false,
autoScroll : true,
root : {
nodeType : 'async'
},
loader : {
url : 'functions/getTree.php',
baseParams :{
id : 'treeLoader',
root : ''
}
},
listeners : {
'expandnode' : function(node){
var getChildNodes = node.findChild('cls','file');
if(getChildNodes == null){
var nodeChecked = node.getUI().isChecked();
var showFiles = Ext.getCmp('showFiles').getValue();
if(showFiles){
var waitNode = new Ext.tree.TreeNode({
id : 'waitNode',
text : "Wait...",
leaf : true,
cls : 'waitNode'
});
node.appendChild(waitNode);
Ext.Ajax.request({
url : 'functions/get_set.php',
params : {
action : 'filesOfFolder',
dir : node.id,
checked : nodeChecked,
source : showFilesAction
},
success : function(response){
var first = 0;
var last = 199;
var fofProvider = new Ext.direct.PollingProvider({
type : 'polling',
url : 'functions/outputFof.php?folder='+node.id+'&first='+first+'&last='+last,
interval : '1000',
id : 'fofProvider'
});
Ext.Direct.on('message', function(e){
if(fofProvider.isConnected()){
var respText = e.data;
if(respText == "finished"){
fofProvider.disconnect();
node.removeChild(waitNode,true);
}
else{
fofProvider.disconnect();
getChildNodes = node.findChild('cls','file');
if(getChildNodes == null){
var checked = node.checked;
if(respText != "" && respText != "[]"){
var jsonNode = eval("({nodes:" + respText + "})");
var jsonArrayCt = jsonNode.nodes.length;
var newNodes;
for(var i = 0; i < jsonArrayCt; i++){
newNode = new Ext.tree.TreeNode(jsonNode.nodes[i]);
node.appendChild(newNode);
}
}
}
first += 200;
last += 200;
fofProvider.url = 'functions/outputFof.php?folder='+node.id+'&first='+first+'&last='+last;
fofProvider.connect();
}
}
});
Ext.Direct.addProvider(fofProvider);
},
failure : function(response){
node.removeChild(waitNode);
}
});
}
}
}
}
}]
});