This commit is contained in:
Damien Churchill 2009-09-14 16:32:23 +00:00
parent 137be4c8f1
commit 45840727e9
1 changed files with 47 additions and 1 deletions

View File

@ -994,3 +994,49 @@ Ext.override(Ext.form.TriggerField, {
onShow: Ext.form.TriggerField.superclass.onShow,
onHide: Ext.form.TriggerField.superclass.onHide
});
Ext.ux.JSLoader = function(options) {
Ext.ux.JSLoader.scripts[++Ext.ux.JSLoader.index] = {
url: options.url,
success: true,
jsLoadObj: null,
options: options,
onLoad: options.onLoad || Ext.emptyFn,
onError: options.onError || Ext.ux.JSLoader.stdError
};
Ext.Ajax.request({
url: options.url,
params: options.params,
scriptIndex: Ext.ux.JSLoader.index,
success: function(response, options) {
var script = Ext.ux.JSLoader.scripts[options.scriptIndex];
try {
script.jsLoadObj = Ext.decode(response.responseText);
Ext.applyIf(script.jsLoadObj,{jsLoad: function(){return Ext.ComponentMgr.create(script.jsLoadObj);}});
var comp = script.jsLoadObj.jsLoad();
if (comp.remoteInit){
comp.remoteInit();
}
} catch(e) {
script.success = false;
script.onError(script.options, e);
}
if (script.success) script.onLoad(comp,script.options);
},
failure: function(response, options) {
var script = Ext.ux.JSLoader.scripts[options.scriptIndex];
script.success = false;
script.onError(script.options, response.status);
}
});
}
Ext.ux.JSLoader.index = 0;
Ext.ux.JSLoader.scripts = [];
Ext.ux.JSLoader.stdError = function(options, e) {
// throw(e);
window.alert('Error loading script:\n\n' + options.url + '\n\nstatus: ' + e);
}