From b3ceed048bb533a00bbea542f7c12b49c8c83d9b Mon Sep 17 00:00:00 2001 From: wei <> Date: Sat, 17 Jun 2006 01:55:05 +0000 Subject: Update changes to active controls, add FT tests for active controls, add comments. --- framework/Web/Javascripts/js/ajax.js | 33 ++++++------- framework/Web/Javascripts/js/prado.js | 9 +++- framework/Web/Javascripts/prado/activecontrols3.js | 16 ++++++ framework/Web/Javascripts/prado/ajax3.js | 57 +++++++++------------- framework/Web/Javascripts/prado/element.js | 15 +++++- 5 files changed, 76 insertions(+), 54 deletions(-) (limited to 'framework/Web/Javascripts') diff --git a/framework/Web/Javascripts/js/ajax.js b/framework/Web/Javascripts/js/ajax.js index 6e6d0afb..bfc080e9 100644 --- a/framework/Web/Javascripts/js/ajax.js +++ b/framework/Web/Javascripts/js/ajax.js @@ -33,20 +33,16 @@ this.transport.onreadystatechange=Prototype.emptyFunction;},getHeaderData:functi {var json=this.header(name);return eval('('+json+')');} catch(e) {if(typeof(json)=="string") -{Logger.info("using json") -return Prado.CallbackRequest.decode(json);}}}});Prado.CallbackRequest=Class.create();Object.extend(Prado.CallbackRequest,{FIELD_CALLBACK_TARGET:'PRADO_CALLBACK_TARGET',FIELD_CALLBACK_PARAMETER:'PRADO_CALLBACK_PARAMETER',FIELD_CALLBACK_PAGESTATE:'PRADO_PAGESTATE',FIELD_POSTBACK_TARGET:'PRADO_POSTBACK_TARGET',FIELD_POSTBACK_PARAMETER:'PRADO_POSTBACK_PARAMETER',PostDataLoaders:[],DATA_HEADER:'X-PRADO-DATA',ACTION_HEADER:'X-PRADO-ACTIONS',ERROR_HEADER:'X-PRADO-ERROR',PAGESTATE_HEADER:'X-PRADO-PAGESTATE',requestInProgress:null,dispatchActions:function(transport,actions) +return Prado.CallbackRequest.decode(json);}}});Prado.CallbackRequest=Class.create();Object.extend(Prado.CallbackRequest,{FIELD_CALLBACK_TARGET:'PRADO_CALLBACK_TARGET',FIELD_CALLBACK_PARAMETER:'PRADO_CALLBACK_PARAMETER',FIELD_CALLBACK_PAGESTATE:'PRADO_PAGESTATE',FIELD_POSTBACK_TARGET:'PRADO_POSTBACK_TARGET',FIELD_POSTBACK_PARAMETER:'PRADO_POSTBACK_PARAMETER',PostDataLoaders:[],DATA_HEADER:'X-PRADO-DATA',ACTION_HEADER:'X-PRADO-ACTIONS',ERROR_HEADER:'X-PRADO-ERROR',PAGESTATE_HEADER:'X-PRADO-PAGESTATE',requestInProgress:null,addPostLoaders:function(ids) +{this.PostDataLoaders=this.PostDataLoaders.concat(ids);},dispatchActions:function(transport,actions) {if(actions&&actions.length>0) actions.each(this.__run.bind(this,transport));},__run:function(transport,command) {for(var method in command) -{if(command[method][0]) -{var id=command[method][0];if($(id)||id.indexOf("[]")>-1) {try {method.toFunction().apply(this,command[method].concat(transport));} catch(e) {if(typeof(Logger)!="undefined") -Prado.CallbackRequest.Exception.onException(null,e);}} -else if(typeof(Logger)!="undefined") -{Logger.error("Error in executing callback response:","Unable to find HTML element with ID '"+id+"' before executing "+method+"().");}}}},Exception:{"on500":function(request,transport,data) +Prado.CallbackRequest.Exception.onException(null,e);}}},Exception:{"on500":function(request,transport,data) {var e=request.getHeaderData(Prado.CallbackRequest.ERROR_HEADER);Logger.error("Callback Server Error "+e.code,this.formatException(e));},'on200':function(request,transport,data) {if(transport.status<500) {var msg='HTTP '+transport.status+" with response : \n";msg+=transport.responseText+"\n";msg+="Data : \n"+inspect(data)+"\n";msg+="Actions : \n";data=request.getHeaderData(Prado.CallbackRequest.ACTION_HEADER);if(data&&data.length>0) @@ -63,19 +59,17 @@ msg+=e.version+" "+e.time+"\n";return msg;}},encode:function(data) {if(typeof(data)=="string"&&data.trim().length>0) return Prado.JSON.parse(data);else return null;},dispatchPriorityRequest:function(callback) -{Logger.info("priority request "+callback.id) -this.abortRequestInProgress();callback.request=new Ajax.Request(callback.url,callback.options);callback.timeout=setTimeout(function() -{Logger.warn("priority timeout");Prado.CallbackRequest.abortRequestInProgress();},callback.options.RequestTimeOut);this.requestInProgress=callback;Logger.info("dispatched "+this.requestInProgress)},dispatchNormalRequest:function(callback) -{Logger.info("dispatching normal request");new Ajax.Request(callback.url,callback.options);},abortRequestInProgress:function() -{inProgress=Prado.CallbackRequest.requestInProgress;Logger.info("aborting ... "+inProgress);if(inProgress) -{Logger.warn("aborted "+inProgress.id) -inProgress.request.transport.abort();clearTimeout(inProgress.timeout);Prado.CallbackRequest.requestInProgress=null;return true;} +{this.abortRequestInProgress();callback.request=new Ajax.Request(callback.url,callback.options);callback.timeout=setTimeout(function() +{Prado.CallbackRequest.abortRequestInProgress();},callback.options.RequestTimeOut);this.requestInProgress=callback;},dispatchNormalRequest:function(callback) +{new Ajax.Request(callback.url,callback.options);},abortRequestInProgress:function() +{inProgress=Prado.CallbackRequest.requestInProgress;if(inProgress) +{inProgress.request.transport.abort();clearTimeout(inProgress.timeout);Prado.CallbackRequest.requestInProgress=null;return true;} return false;},updatePageState:function(request,transport) {pagestate=$(this.FIELD_CALLBACK_PAGESTATE);if(request.options.EnablePageStateUpdate&&request.options.HasPriority&&pagestate) {data=request.header(this.PAGESTATE_HEADER);if(typeof(data)=="string"&&data.length>0) -{Logger.warn("updating page state");pagestate.value=data;} -else -{Logger.debug("Bad page state:"+data);}}}}) +pagestate.value=data;else +{if(typeof(Logger)!="undefined") +Logger.debug("Bad page state:"+data);}}}}) Ajax.Responders.register({onComplete:function(request) {if(request.options.HasPriority) Prado.CallbackRequest.abortRequestInProgress();}});Event.OnLoad(function() @@ -199,4 +193,7 @@ this.editField=this.cached_selectTag;if(this.options.loadTextURL)this.loadExtern {this.options=options;this.baseInitialize(options.ID,options.ResultPanel,options);Object.extend(this.options,{onSuccess:this.onComplete.bind(this)});},getUpdatedChoices:function() {Prado.Callback(this.options.EventTarget,this.getToken(),null,this.options);},onComplete:function(request,boundary) {result=Prado.Element.extractContent(request.responseText,boundary);if(typeof(result)=="string"&&result.length>0) -this.updateChoices(result);}}); \ No newline at end of file +this.updateChoices(result);}});Prado.WebUI.TActiveTextBox=Class.extend(Prado.WebUI.TTextBox,{onInit:function(options) +{if(options['TextMode']!='MultiLine') +Event.observe(this.element,"keydown",this.handleReturnKey.bind(this));Event.observe(this.element,"change",this.doCallback.bindEvent(this,options));},doCallback:function(event,options) +{new Prado.CallbackRequest(options.EventTarget,options);Event.stop(event);}}); \ No newline at end of file diff --git a/framework/Web/Javascripts/js/prado.js b/framework/Web/Javascripts/js/prado.js index 65ffd1b8..d0744649 100644 --- a/framework/Web/Javascripts/js/prado.js +++ b/framework/Web/Javascripts/js/prado.js @@ -267,10 +267,15 @@ setTimeout(function(){obj.focus();},100);return false;},replace:function(element {if(boundary) {result=Prado.Element.extractContent(transport.responseText,boundary);if(result!=null) content=result;} -method.toFunction().apply(this,[element,content]);},extractContent:function(text,boundary) +if(typeof(element)=="string") +{if($(element)) +method.toFunction().apply(this,[element,content]);} +else +{method.toFunction().apply(this,[content]);}},extractContent:function(text,boundary) {f=RegExp('()([\\s\\S\\w\\W]*)()',"m");result=text.match(f);if(result&&result.length>=2) return result[2];else -return null;}} +return null;},evaluateScript:function(content) +{content.evalScripts();}} Prado.Element.Selection={inputValue:function(el,value) {switch(el.type.toLowerCase()) {case'checkbox':case'radio':return el.checked=value;}},selectValue:function(el,value) diff --git a/framework/Web/Javascripts/prado/activecontrols3.js b/framework/Web/Javascripts/prado/activecontrols3.js index 4be2779a..6fbde405 100644 --- a/framework/Web/Javascripts/prado/activecontrols3.js +++ b/framework/Web/Javascripts/prado/activecontrols3.js @@ -42,3 +42,19 @@ Prado.WebUI.TAutoComplete = Class.extend(Autocompleter.Base, this.updateChoices(result); } }); + +Prado.WebUI.TActiveTextBox = Class.extend(Prado.WebUI.TTextBox, +{ + onInit : function(options) + { + if(options['TextMode'] != 'MultiLine') + Event.observe(this.element, "keydown", this.handleReturnKey.bind(this)); + Event.observe(this.element, "change", this.doCallback.bindEvent(this,options)); + }, + + doCallback : function(event, options) + { + new Prado.CallbackRequest(options.EventTarget, options); + Event.stop(event); + } +}); diff --git a/framework/Web/Javascripts/prado/ajax3.js b/framework/Web/Javascripts/prado/ajax3.js index 1e832889..adf8534a 100644 --- a/framework/Web/Javascripts/prado/ajax3.js +++ b/framework/Web/Javascripts/prado/ajax3.js @@ -19,7 +19,7 @@ Object.extend(Ajax.Request.prototype, Prado.CallbackRequest.updatePageState(this,transport); Ajax.Responders.dispatch('on' + transport.status, this, transport, json); Prado.CallbackRequest.dispatchActions(transport,this.getHeaderData(Prado.CallbackRequest.ACTION_HEADER)); - + (this.options['on' + this.transport.status] || this.options['on' + (this.responseIsSuccess() ? 'Success' : 'Failure')] || Prototype.emptyFunction)(transport, json); @@ -57,10 +57,7 @@ Object.extend(Ajax.Request.prototype, catch (e) { if(typeof(json) == "string") - { - Logger.info("using json") return Prado.CallbackRequest.decode(json); - } } } }); @@ -117,6 +114,14 @@ Object.extend(Prado.CallbackRequest, */ requestInProgress : null, + /** + * Add ids of inputs element to post in the request. + */ + addPostLoaders : function(ids) + { + this.PostDataLoaders = this.PostDataLoaders.concat(ids); + }, + /** * Dispatch callback response actions. */ @@ -133,26 +138,14 @@ Object.extend(Prado.CallbackRequest, { for(var method in command) { - if(command[method][0]) + try { - var id = command[method][0]; - if($(id) || id.indexOf("[]") > -1) - { - try - { - method.toFunction().apply(this,command[method].concat(transport)); - } - catch(e) - { - if(typeof(Logger) != "undefined") - Prado.CallbackRequest.Exception.onException(null,e); - } - } - else if(typeof(Logger) != "undefined") - { - Logger.error("Error in executing callback response:", - "Unable to find HTML element with ID '"+id+"' before executing "+method+"()."); - } + method.toFunction().apply(this,command[method].concat(transport)); + } + catch(e) + { + if(typeof(Logger) != "undefined") + Prado.CallbackRequest.Exception.onException(null,e); } } }, @@ -251,18 +244,18 @@ Object.extend(Prado.CallbackRequest, */ dispatchPriorityRequest : function(callback) { - Logger.info("priority request "+callback.id) + //Logger.info("priority request "+callback.id) this.abortRequestInProgress(); callback.request = new Ajax.Request(callback.url, callback.options); callback.timeout = setTimeout(function() { - Logger.warn("priority timeout"); + // Logger.warn("priority timeout"); Prado.CallbackRequest.abortRequestInProgress(); },callback.options.RequestTimeOut); this.requestInProgress = callback; - Logger.info("dispatched "+this.requestInProgress) + //Logger.info("dispatched "+this.requestInProgress) }, /** @@ -270,7 +263,7 @@ Object.extend(Prado.CallbackRequest, */ dispatchNormalRequest : function(callback) { - Logger.info("dispatching normal request"); + // Logger.info("dispatching normal request"); new Ajax.Request(callback.url, callback.options); }, @@ -280,10 +273,10 @@ Object.extend(Prado.CallbackRequest, abortRequestInProgress : function() { inProgress = Prado.CallbackRequest.requestInProgress; - Logger.info("aborting ... "+inProgress); + //Logger.info("aborting ... "+inProgress); if(inProgress) { - Logger.warn("aborted "+inProgress.id) + // Logger.warn("aborted "+inProgress.id) inProgress.request.transport.abort(); clearTimeout(inProgress.timeout); Prado.CallbackRequest.requestInProgress = null; @@ -303,13 +296,11 @@ Object.extend(Prado.CallbackRequest, { data = request.header(this.PAGESTATE_HEADER); if(typeof(data) == "string" && data.length > 0) - { - Logger.warn("updating page state"); pagestate.value = data; - } else { - Logger.debug("Bad page state:"+data); + if(typeof(Logger) != "undefined") + Logger.debug("Bad page state:"+data); } } } diff --git a/framework/Web/Javascripts/prado/element.js b/framework/Web/Javascripts/prado/element.js index 0ff0e8fa..5c76d4e6 100644 --- a/framework/Web/Javascripts/prado/element.js +++ b/framework/Web/Javascripts/prado/element.js @@ -71,7 +71,15 @@ Prado.Element = if(result != null) content = result; } - method.toFunction().apply(this,[element,content]); + if(typeof(element) == "string") + { + if($(element)) + method.toFunction().apply(this,[element,content]); + } + else + { + method.toFunction().apply(this,[content]); + } }, extractContent : function(text, boundary) @@ -82,6 +90,11 @@ Prado.Element = return result[2]; else return null; + }, + + evaluateScript : function(content) + { + content.evalScripts(); } } -- cgit v1.2.3