diff options
| author | wei <> | 2006-12-09 09:17:22 +0000 | 
|---|---|---|
| committer | wei <> | 2006-12-09 09:17:22 +0000 | 
| commit | 3c03a42d1edb0ec26110ace00f42e156cabff67b (patch) | |
| tree | 66baa1cd4afca87668be07e62406e7d538dd1fbb /framework/Web/Javascripts | |
| parent | 33b2284955a8f0015922d4c69c5082141b584f27 (diff) | |
Fixed #433, #384, #439, #477, #435, #422, #401, #359. Add more class docs for sqlmap.
Diffstat (limited to 'framework/Web/Javascripts')
| -rw-r--r-- | framework/Web/Javascripts/js/compressed/ajax.js | 63 | ||||
| -rw-r--r-- | framework/Web/Javascripts/js/compressed/prado.js | 16 | ||||
| -rw-r--r-- | framework/Web/Javascripts/js/debug/ajax.js | 169 | ||||
| -rw-r--r-- | framework/Web/Javascripts/js/debug/prado.js | 23 | ||||
| -rw-r--r-- | framework/Web/Javascripts/prado/activecontrols3.js | 56 | ||||
| -rw-r--r-- | framework/Web/Javascripts/prado/ajax3.js | 113 | ||||
| -rw-r--r-- | framework/Web/Javascripts/prado/controls.js | 23 | 
7 files changed, 196 insertions, 267 deletions
| diff --git a/framework/Web/Javascripts/js/compressed/ajax.js b/framework/Web/Javascripts/js/compressed/ajax.js index 4b260ab3..593b4c15 100644 --- a/framework/Web/Javascripts/js/compressed/ajax.js +++ b/framework/Web/Javascripts/js/compressed/ajax.js @@ -22,7 +22,8 @@ if(this.responseIsSuccess()){if(this.onComplete)  setTimeout(this.onComplete.bind(this),10);}}});Ajax.PeriodicalUpdater=Class.create();Ajax.PeriodicalUpdater.prototype=Object.extend(new Ajax.Base(),{initialize:function(container,url,options){this.setOptions(options);this.onComplete=this.options.onComplete;this.frequency=(this.options.frequency||2);this.decay=(this.options.decay||1);this.updater={};this.container=container;this.url=url;this.start();},start:function(){this.options.onComplete=this.updateComplete.bind(this);this.onTimerEvent();},stop:function(){this.updater.onComplete=undefined;clearTimeout(this.timer);(this.onComplete||Prototype.emptyFunction).apply(this,arguments);},updateComplete:function(request){if(this.options.decay){this.decay=(request.responseText==this.lastText?this.decay*this.options.decay:1);this.lastText=request.responseText;}  this.timer=setTimeout(this.onTimerEvent.bind(this),this.decay*this.frequency*1000);},onTimerEvent:function(){this.updater=new Ajax.Updater(this.container,this.url,this.options);}});Object.extend(Ajax.Request.prototype,{respondToReadyState:function(readyState)  {var event=Ajax.Request.Events[readyState];var transport=this.transport,json=this.getHeaderData(Prado.CallbackRequest.DATA_HEADER);if(event=='Complete') -{if((this.header('Content-type')||'').match(/^text\/javascript/i)) +{if(this.header('X-PRADO-REDIRECT')) +document.location.href=this.header('X-PRADO-REDIRECT');if((this.header('Content-type')||'').match(/^text\/javascript/i))  {try  {json=eval('('+transport.responseText+')');}catch(e)  {if(typeof(json)=="string") @@ -36,7 +37,7 @@ this.transport.onreadystatechange=Prototype.emptyFunction;},getHeaderData:functi  {var json=this.header(name);return eval('('+json+')');}  catch(e)  {if(typeof(json)=="string") -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',currentRequest:null,requestQueue:[],addPostLoaders:function(ids) +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',requestQueue:[],addPostLoaders:function(ids)  {var self=Prado.CallbackRequest;self.PostDataLoaders=self.PostDataLoaders.concat(ids);var list=[];self.PostDataLoaders.each(function(id)  {if(list.indexOf(id)<0)  list.push(id);});self.PostDataLoaders=list;},dispatchActions:function(transport,actions) @@ -65,35 +66,28 @@ msg+=e.version+" "+e.time+"\n";return msg;}},encode:function(data)  {return Prado.JSON.stringify(data);},decode:function(data)  {if(typeof(data)=="string"&&data.trim().length>0)  return Prado.JSON.parse(data);else -return null;},dispatchPriorityRequest:function(callback) -{var self=Prado.CallbackRequest;callback.request=new Ajax.Request(callback.url,callback.options);callback.timeout=setTimeout(function() -{self.abortCurrentRequest();},callback.options.RequestTimeOut);self.currentRequest=callback;return true;},dispatchNormalRequest:function(callback) -{new Ajax.Request(callback.url,callback.options);return true;},abortCurrentRequest:function() -{var self=Prado.CallbackRequest;var inProgress=self.currentRequest;if(inProgress) -{clearTimeout(inProgress.timeout);self.currentRequest=null;if(inProgress.request.transport.readyState<4) -inProgress.request.transport.abort();return self.dispatchQueue();} -else -return self.dispatchQueue();},updatePageState:function(request,transport) +return null;},dispatchNormalRequest:function(callback) +{new Ajax.Request(callback.url,callback.options);return true;},tryNextRequest:function() +{var self=Prado.CallbackRequest;if(typeof(self.currentRequest)=='undefined'||self.currentRequest==null) +{if(self.requestQueue.length>0) +return self.dispatchQueue();}},updatePageState:function(request,transport)  {var self=Prado.CallbackRequest;var pagestate=$(self.FIELD_CALLBACK_PAGESTATE);var enabled=request.options.EnablePageStateUpdate&&request.options.HasPriority;var aborted=self.currentRequest==null;if(enabled&&!aborted&&pagestate)  {var data=request.header(self.PAGESTATE_HEADER);if(typeof(data)=="string"&&data.length>0)  pagestate.value=data;else  {if(typeof(Logger)!="undefined") -Logger.warn("Missing page state:"+data);return false;}} -return true;},enqueue:function(callback) -{var self=Prado.CallbackRequest;if(self.currentRequest==null) -self.dispatchPriorityRequest(callback);else -self.requestQueue.push(callback);},dispatchQueue:function() -{var self=Prado.CallbackRequest;if(self.requestQueue.length>0) -{var callback=self.requestQueue.shift();return self.dispatchPriorityRequest(callback);} -return false;},abortRequest:function(id) -{var self=Prado.CallbackRequest;if(self.currentRequest!=null&&self.currentRequest.id==id) -self.abortCurrentRequest();else -{var queque=[];self.requestQueue.each(function(callback) -{if(callback.id!=id) -queque.push(callback);});self.requestQueue=queque;}}}) +Logger.warn("Missing page state:"+data);self.endCurrentRequest();return false;}} +self.endCurrentRequest();return true;},enqueue:function(callback) +{var self=Prado.CallbackRequest;self.requestQueue.push(callback);self.tryNextRequest();},dispatchQueue:function() +{var self=Prado.CallbackRequest;var callback=self.requestQueue.shift();self.currentRequest=callback;callback.options.postBody=callback._getPostData(),callback.request=new Ajax.Request(callback.url,callback.options);callback.timeout=setTimeout(function() +{self.abortRequest(callback.id);},callback.options.RequestTimeOut);},endCurrentRequest:function() +{var self=Prado.CallbackRequest;clearTimeout(self.currentRequest.timeout);self.currentRequest=null;},abortRequest:function(id) +{var self=Prado.CallbackRequest;if(typeof(self.currentRequest)!='undefined'&&self.currentRequest!=null&&self.currentRequest.id==id) +{var request=self.currentRequest.request;if(request.transport.readyState<4) +request.transport.abort();self.endCurrentRequest();} +self.tryNextRequest();}})  Ajax.Responders.register({onComplete:function(request)  {if(request.options.HasPriority) -Prado.CallbackRequest.abortCurrentRequest();}});Event.OnLoad(function() +Prado.CallbackRequest.tryNextRequest();}});Event.OnLoad(function()  {if(typeof Logger!="undefined")  Ajax.Responders.register(Prado.CallbackRequest.Exception);});Prado.CallbackRequest.prototype={url:window.location.href,options:{},id:null,request:null,Enabled:true,initialize:function(id,options)  {this.id=id;this.options=Object.extend({RequestTimeOut:30000,EnablePageStateUpdate:true,HasPriority:true,CausesValidation:true,ValidationGroup:null,PostInputs:true},options||{});},setCallbackParameter:function(value) @@ -106,7 +100,7 @@ Ajax.Responders.register(Prado.CallbackRequest.Exception);});Prado.CallbackReque  {this.options['ValidationGroup']=group;},getValidationGroup:function()  {return this.options['ValidationGroup'];},dispatch:function()  {if(typeof tinyMCE!="undefined") -tinyMCE.triggerSave();Object.extend(this.options,{postBody:this._getPostData(),parameters:''});if(this.options.CausesValidation&&typeof(Prado.Validation)!="undefined") +tinyMCE.triggerSave();Object.extend(this.options,{parameters:''});if(this.options.CausesValidation&&typeof(Prado.Validation)!="undefined")  {var form=this.options.Form||Prado.Validation.getForm();if(Prado.Validation.validate(form,this.options.ValidationGroup,this)==false)  return false;}  if(this.options.onPreDispatch) @@ -241,16 +235,13 @@ this.onInit(options);},doCallback:function(event,options)  {var element=Event.findElement(event,'LI');this.index=element.autocompleteIndex;this.selectEntry();this.hide();Event.fireEvent(this.element,"change");},getUpdatedChoices:function()  {var options=new Array(this.getToken(),"__TAutoComplete_onSuggest__");Prado.Callback(this.options.EventTarget,options,null,this.options);},onComplete:function(request,boundary)  {var result=Prado.Element.extractContent(request.transport.responseText,boundary);if(typeof(result)=="string"&&result.length>0) -this.updateChoices(result);}});Prado.WebUI.TTimeTriggeredCallback=Base.extend({count:0,timeout:0,constructor:function(options) -{this.options=Object.extend({Interval:1,DecayRate:0},options||{}) -this.onComplete=this.options.onComplete;Prado.WebUI.TTimeTriggeredCallback.register(this);},startTimer:function() -{this.options.onComplete=this.onRequestComplete.bind(this);this.timer=setTimeout(this.onTimerEvent.bind(this),200);},stopTimer:function() -{(this.onComplete||Prototype.emptyFunction).apply(this,arguments);this.options.onComplete=undefined;clearTimeout(this.timer);this.timer=undefined;this.count=0;},onTimerEvent:function() -{this.options.params=this.timeout/1000;var request=new Prado.CallbackRequest(this.options.EventTarget,this.options);request.dispatch();},onRequestComplete:function() -{(this.onComplete||Prototype.emptyFunction).apply(this,arguments);this.timer=setTimeout(this.onTimerEvent.bind(this),this.getNewTimeout())},getNewTimeout:function() -{switch(this.options.DecayType) -{case'Exponential':t=(Math.exp(this.options.DecayRate*this.count*this.options.Interval))-1;break;case'Linear':t=this.options.DecayRate*this.count*this.options.Interval;break;case'Quadratic':t=this.options.DecayRate*this.count*this.count*this.options.Interval;break;case'Cubic':t=this.options.DecayRate*this.count*this.count*this.count*this.options.Interval;break;default:t=0;} -this.timeout=(t+this.options.Interval)*1000;this.count++;return parseInt(this.timeout);}},{timers:{},register:function(timer) +this.updateChoices(result);}});Prado.WebUI.TTimeTriggeredCallback=Base.extend({constructor:function(options) +{this.options=Object.extend({Interval:1},options||{});Prado.WebUI.TTimeTriggeredCallback.register(this);},startTimer:function() +{setTimeout(this.onTimerEvent.bind(this),100);if(typeof(this.timer)=='undefined'||this.timer==null) +this.timer=setInterval(this.onTimerEvent.bind(this),this.options.Interval*1000);},stopTimer:function() +{if(typeof(this.timer)!='undefined') +{clearInterval(this.timer);this.timer=null;}},onTimerEvent:function() +{var request=new Prado.CallbackRequest(this.options.EventTarget,this.options);request.dispatch();}},{timers:{},register:function(timer)  {Prado.WebUI.TTimeTriggeredCallback.timers[timer.options.ID]=timer;},start:function(id)  {Prado.WebUI.TTimeTriggeredCallback.timers[id].startTimer();},stop:function(id)  {Prado.WebUI.TTimeTriggeredCallback.timers[id].stopTimer();}});Prado.WebUI.ActiveListControl=Base.extend({constructor:function(options) diff --git a/framework/Web/Javascripts/js/compressed/prado.js b/framework/Web/Javascripts/js/compressed/prado.js index 9f8cdb19..9e0b9ba8 100644 --- a/framework/Web/Javascripts/js/compressed/prado.js +++ b/framework/Web/Javascripts/js/compressed/prado.js @@ -371,11 +371,17 @@ else  {y_input=INPUT({type:'hidden',name:id+'_y','id':id+'_y',value:y});this.element.parentNode.appendChild(y_input);}}});Prado.WebUI.TRadioButton=Class.extend(Prado.WebUI.PostBackControl);Prado.WebUI.TRadioButton.prototype.onRadioButtonInitialize=Prado.WebUI.TRadioButton.prototype.initialize;Object.extend(Prado.WebUI.TRadioButton.prototype,{initialize:function(options)  {this.element=$(options['ID']);if(!this.element.checked)  this.onRadioButtonInitialize(options);}});Prado.WebUI.TTextBox=Class.extend(Prado.WebUI.PostBackControl,{onInit:function(options) -{if(options['TextMode']!='MultiLine') -Event.observe(this.element,"keydown",this.handleReturnKey.bind(this));Event.observe(this.element,"change",Prado.PostBack.bindEvent(this,options));},handleReturnKey:function(e) +{this.options=options;if(options['TextMode']!='MultiLine') +Event.observe(this.element,"keydown",this.handleReturnKey.bind(this));if(this.options['AutoPostBack']==true) +Event.observe(this.element,"change",Prado.PostBack.bindEvent(this,options));},handleReturnKey:function(e)  {if(Event.keyCode(e)==Event.KEY_RETURN)  {var target=Event.element(e);if(target) -{Event.fireEvent(target,"change");Event.stop(e);}}}});Prado.WebUI.TListControl=Class.extend(Prado.WebUI.PostBackControl,{onInit:function(options) +{if(this.options['AutoPostBack']==true) +{Event.fireEvent(target,"change");Event.stop(e);} +else +{if(this.options['CausesValidation']&&typeof(Prado.Validation)!="undefined") +{if(!Prado.Validation.validate(this.options['FormID'],this.options['ValidationGroup'],$(this.options['ID']))) +return Event.stop(e);}}}}}});Prado.WebUI.TListControl=Class.extend(Prado.WebUI.PostBackControl,{onInit:function(options)  {Event.observe(this.element,"change",Prado.PostBack.bindEvent(this,options));}});Prado.WebUI.TListBox=Class.extend(Prado.WebUI.TListControl);Prado.WebUI.TDropDownList=Class.extend(Prado.WebUI.TListControl);Prado.WebUI.DefaultButton=Class.create();Prado.WebUI.DefaultButton.prototype={initialize:function(options)  {this.options=options;this._event=this.triggerEvent.bindEvent(this);Event.observe(options['Panel'],'keydown',this._event);},triggerEvent:function(ev,target)  {var enterPressed=Event.keyCode(ev)==Event.KEY_RETURN;var isTextArea=Event.element(ev).tagName.toLowerCase()=="textarea";if(enterPressed&&!isTextArea) @@ -392,6 +398,6 @@ window.clipboardData.setData("Text",text);},hover:function(obj)  {obj.parentNode.className="copycode copycode_hover";},out:function(obj)  {obj.parentNode.className="copycode";}});Prado.WebUI.TCheckBoxList=Base.extend({constructor:function(options)  {for(var i=0;i<options.ItemCount;i++) -{var checkBoxOptions=Object.extend({ID:options.ListID+"_c"+i,EventTarget:options.ListID+"$c"+i},options);new Prado.WebUI.TCheckBox(checkBoxOptions);}}});Prado.WebUI.TRadioButtonList=Base.extend({constructor:function(options) +{var checkBoxOptions=Object.extend({ID:options.ListID+"_c"+i,EventTarget:options.ListName+"$c"+i},options);new Prado.WebUI.TCheckBox(checkBoxOptions);}}});Prado.WebUI.TRadioButtonList=Base.extend({constructor:function(options)  {for(var i=0;i<options.ItemCount;i++) -{var radioButtonOptions=Object.extend({ID:options.ListID+"_c"+i,EventTarget:options.ListID+"$c"+i},options);new Prado.WebUI.TRadioButton(radioButtonOptions);}}});
\ No newline at end of file +{var radioButtonOptions=Object.extend({ID:options.ListID+"_c"+i,EventTarget:options.ListName+"$c"+i},options);new Prado.WebUI.TRadioButton(radioButtonOptions);}}});
\ No newline at end of file diff --git a/framework/Web/Javascripts/js/debug/ajax.js b/framework/Web/Javascripts/js/debug/ajax.js index d26ad640..e5c05510 100644 --- a/framework/Web/Javascripts/js/debug/ajax.js +++ b/framework/Web/Javascripts/js/debug/ajax.js @@ -302,6 +302,9 @@ Object.extend(Ajax.Request.prototype,  	    if (event == 'Complete')
  	    {
 +	    	if(this.header('X-PRADO-REDIRECT'))
 +	    		document.location.href = this.header('X-PRADO-REDIRECT');
 +
  	      if ((this.header('Content-type') || '').match(/^text\/javascript/i))
  	      {
  	        try
 @@ -407,10 +410,6 @@ Object.extend(Prado.CallbackRequest,  	 * Page state header name.
  	 */
  	PAGESTATE_HEADER : 'X-PRADO-PAGESTATE',
 -	/**
 -	 * Current requests in progress.
 -	 */
 -	currentRequest : null,
  	requestQueue : [],
 @@ -553,25 +552,6 @@ Object.extend(Prado.CallbackRequest,  	},
  	/**
 -	 * Dispatch a priority request, it will call abortRequestInProgress first.
 -	 */
 -	dispatchPriorityRequest : function(callback)
 -	{
 -		var self = Prado.CallbackRequest;
 -
 -		callback.request = new Ajax.Request(callback.url, callback.options);
 -		callback.timeout = setTimeout(function()
 -		{
 -			//Logger.warn("priority timeout");
 -			self.abortCurrentRequest();
 -		},callback.options.RequestTimeOut);
 -
 -		//Logger.info("dispatched "+this.currentRequest)
 -		self.currentRequest = callback;
 -		return true;
 -	},
 -
 -	/**
  	 * Dispatch a normal request, no timeouts or aborting of requests.
  	 */
  	dispatchNormalRequest : function(callback)
 @@ -584,23 +564,19 @@ Object.extend(Prado.CallbackRequest,  	/**
  	 * Abort the current priority request in progress.
  	 */
 -	abortCurrentRequest : function()
 +	tryNextRequest : function()
  	{
  		var self = Prado.CallbackRequest;
 -		var inProgress = self.currentRequest;
 -		//Logger.info("aborting ... "+inProgress);
 -		if(inProgress)
 +		//Logger.debug('trying next request');
 +		if(typeof(self.currentRequest) == 'undefined' || self.currentRequest==null)
  		{
 -			clearTimeout(inProgress.timeout);
 -			self.currentRequest = null;
 -			//Logger.info("aborted");
 -			//abort if not ready.
 -			if(inProgress.request.transport.readyState < 4)
 -				inProgress.request.transport.abort();
 -			return self.dispatchQueue();
 +			if(self.requestQueue.length > 0)
 +				return self.dispatchQueue();
 +			//else
 +				//Logger.warn('empty queque');
  		}
 -		else
 -			return self.dispatchQueue();
 +//		else
 +	//		Logger.warn('current request ' + self.currentRequest.id);
  	},
  	/**
 @@ -622,51 +598,66 @@ Object.extend(Prado.CallbackRequest,  			{
  				if(typeof(Logger) != "undefined")
  					Logger.warn("Missing page state:"+data);
 +//				Logger.warn('## bad state: setting current request to null');
 +				self.endCurrentRequest();
 +				//self.tryNextRequest();
  				return false;
  			}
  		}
 +		self.endCurrentRequest();
 +	//	Logger.warn('## state updated: setting current request to null');
 +	//	self.tryNextRequest();
  		return true;
  	},
  	enqueue : function(callback)
  	{
  		var self = Prado.CallbackRequest;
 -		if(self.currentRequest==null)
 -			self.dispatchPriorityRequest(callback);
 -		else
 -			self.requestQueue.push(callback);
 -		//Logger.info("current queque length="+self.requestQueue.length);
 +		self.requestQueue.push(callback);
 +		//Logger.warn("equeued "+callback.id+", current queque length="+self.requestQueue.length);
 +		self.tryNextRequest();
  	},
  	dispatchQueue : function()
  	{
  		var self = Prado.CallbackRequest;
 -		//Logger.info("dispatching queque, length="+self.requestQueue.length+" request="+self.currentRequest);
 -		if(self.requestQueue.length > 0)
 +		//Logger.warn("dispatching queque, length="+self.requestQueue.length+" request="+self.currentRequest);
 +		var callback = self.requestQueue.shift();
 +		self.currentRequest = callback;
 +
 +		//get data
 +		callback.options.postBody = callback._getPostData(),
 +
 +		callback.request = new Ajax.Request(callback.url, callback.options);
 +		callback.timeout = setTimeout(function()
  		{
 -			var callback = self.requestQueue.shift();
 -			//Logger.info("do dispatch request");
 -			return self.dispatchPriorityRequest(callback);
 -		}
 -		return false;
 +			//Logger.warn("priority timeout");
 +			self.abortRequest(callback.id);
 +		},callback.options.RequestTimeOut);
 +		//Logger.debug("dispatched "+self.currentRequest.id + " ...")
 +	},
 +
 +	endCurrentRequest : function()
 +	{
 +		var self = Prado.CallbackRequest;
 +		clearTimeout(self.currentRequest.timeout);
 +		self.currentRequest=null;
  	},
  	abortRequest : function(id)
  	{
 -		//Logger.info("abort id="+id);
 +		//Logger.warn("abort id="+id);
  		var self = Prado.CallbackRequest;
 -		if(self.currentRequest != null && self.currentRequest.id == id)
 -			self.abortCurrentRequest();
 -		else
 +		if(typeof(self.currentRequest) != 'undefined'
 +			&& self.currentRequest != null && self.currentRequest.id == id)
  		{
 -			var queque = [];
 -			self.requestQueue.each(function(callback)
 -			{
 -				if(callback.id != id)
 -					queque.push(callback);
 -			});
 -			self.requestQueue = queque;
 +			var request = self.currentRequest.request;
 +			if(request.transport.readyState < 4)
 +				request.transport.abort();
 +			//Logger.warn('## aborted: setting current request to null');
 +			self.endCurrentRequest();
  		}
 +		self.tryNextRequest();
  	}
  })
 @@ -676,7 +667,7 @@ Object.extend(Prado.CallbackRequest,  Ajax.Responders.register({onComplete : function(request)
  {
  	if(request.options.HasPriority)
 -		Prado.CallbackRequest.abortCurrentRequest();
 +		Prado.CallbackRequest.tryNextRequest();
  }});
  //Add HTTP exception respones when logger is enabled.
 @@ -816,7 +807,7 @@ Prado.CallbackRequest.prototype =  		//override parameter and postBody options.
  		Object.extend(this.options,
  		{
 -			postBody : this._getPostData(),
 +//			postBody : this._getPostData(),
  			parameters : ''
  		});
 @@ -2221,70 +2212,32 @@ Prado.WebUI.TAutoComplete = Class.extend(Prado.WebUI.TAutoComplete,   */
  Prado.WebUI.TTimeTriggeredCallback = Base.extend(
  {
 -	count : 0,
 -	timeout : 0,
 -
  	constructor : function(options)
  	{
 -		this.options = Object.extend(
 -		{
 -			Interval : 1,
 -			DecayRate : 0
 -		}, options || {})
 -
 -		this.onComplete = this.options.onComplete;
 +		this.options = Object.extend({ Interval : 1	}, options || {});
  		Prado.WebUI.TTimeTriggeredCallback.register(this);
  	},
  	startTimer : function()
  	{
 -		this.options.onComplete = this.onRequestComplete.bind(this);
 -		this.timer = setTimeout(this.onTimerEvent.bind(this), 200);
 +		setTimeout(this.onTimerEvent.bind(this), 100);
 +		if(typeof(this.timer) == 'undefined' || this.timer == null)
 +			this.timer = setInterval(this.onTimerEvent.bind(this),this.options.Interval*1000);
  	},
  	stopTimer : function()
  	{
 -		(this.onComplete || Prototype.emptyFunction).apply(this, arguments);
 -		this.options.onComplete = undefined;
 -		clearTimeout(this.timer);
 -		this.timer = undefined;
 -		this.count = 0;
 +		if(typeof(this.timer) != 'undefined')
 +		{
 +			clearInterval(this.timer);
 +			this.timer = null;
 +		}
  	},
  	onTimerEvent : function()
  	{
 -		this.options.params = this.timeout/1000;
  		var request = new Prado.CallbackRequest(this.options.EventTarget, this.options);
  		request.dispatch();
 -	},
 -
 -	onRequestComplete : function()
 -	{
 -		(this.onComplete || Prototype.emptyFunction).apply(this, arguments);
 -		this.timer = setTimeout(this.onTimerEvent.bind(this), this.getNewTimeout())
 -	},
 -
 -	getNewTimeout : function()
 -	{
 -		switch(this.options.DecayType)
 -		{
 -			case 'Exponential':
 -				t = (Math.exp(this.options.DecayRate*this.count*this.options.Interval))-1;
 -			break;
 -			case 'Linear':
 -				t = this.options.DecayRate*this.count*this.options.Interval;
 -			break;
 -			case 'Quadratic':
 -				t = this.options.DecayRate*this.count*this.count*this.options.Interval;
 -			break;
 -			case 'Cubic':
 -				t = this.options.DecayRate*this.count*this.count*this.count*this.options.Interval;
 -			break;
 -			default : t = 0;
 -		}
 -		this.timeout = (t + this.options.Interval)*1000;
 -		this.count++;
 -		return parseInt(this.timeout);
  	}
  },
  //class methods
 diff --git a/framework/Web/Javascripts/js/debug/prado.js b/framework/Web/Javascripts/js/debug/prado.js index aaae6bad..4ab0a415 100644 --- a/framework/Web/Javascripts/js/debug/prado.js +++ b/framework/Web/Javascripts/js/debug/prado.js @@ -3389,9 +3389,11 @@ Prado.WebUI.TTextBox = Class.extend(Prado.WebUI.PostBackControl,  {
  	onInit : function(options)
  	{
 +		this.options=options;
  		if(options['TextMode'] != 'MultiLine')
  			Event.observe(this.element, "keydown", this.handleReturnKey.bind(this));
 -		Event.observe(this.element, "change", Prado.PostBack.bindEvent(this,options));
 +		if(this.options['AutoPostBack']==true)
 +			Event.observe(this.element, "change", Prado.PostBack.bindEvent(this,options));
  	},
  	handleReturnKey : function(e)
 @@ -3401,8 +3403,19 @@ Prado.WebUI.TTextBox = Class.extend(Prado.WebUI.PostBackControl,  			var target = Event.element(e);
  			if(target)
  			{
 -				Event.fireEvent(target, "change");
 -				Event.stop(e);
 +				if(this.options['AutoPostBack']==true)
 +				{
 +					Event.fireEvent(target, "change");
 +					Event.stop(e);
 +				}
 +				else
 +				{
 +					if(this.options['CausesValidation'] && typeof(Prado.Validation) != "undefined")
 +					{
 +						if(!Prado.Validation.validate(this.options['FormID'], this.options['ValidationGroup'], $(this.options['ID'])))
 +							return Event.stop(e);
 +					}
 +				}
  			}
  		}
  	}
 @@ -3504,7 +3517,7 @@ Prado.WebUI.TCheckBoxList = Base.extend(  			var checkBoxOptions = Object.extend(
  			{
  				ID : options.ListID+"_c"+i,
 -				EventTarget : options.ListID+"$c"+i
 +				EventTarget : options.ListName+"$c"+i
  			}, options);
  			new Prado.WebUI.TCheckBox(checkBoxOptions);
  		}
 @@ -3520,7 +3533,7 @@ Prado.WebUI.TRadioButtonList = Base.extend(  			var radioButtonOptions = Object.extend(
  			{
  				ID : options.ListID+"_c"+i,
 -				EventTarget : options.ListID+"$c"+i
 +				EventTarget : options.ListName+"$c"+i
  			}, options);
  			new Prado.WebUI.TRadioButton(radioButtonOptions);
  		}
 diff --git a/framework/Web/Javascripts/prado/activecontrols3.js b/framework/Web/Javascripts/prado/activecontrols3.js index cb787571..e30fb702 100644 --- a/framework/Web/Javascripts/prado/activecontrols3.js +++ b/framework/Web/Javascripts/prado/activecontrols3.js @@ -145,70 +145,32 @@ Prado.WebUI.TAutoComplete = Class.extend(Prado.WebUI.TAutoComplete,   */
  Prado.WebUI.TTimeTriggeredCallback = Base.extend(
  {
 -	count : 0,
 -	timeout : 0,
 -
  	constructor : function(options)
  	{
 -		this.options = Object.extend(
 -		{
 -			Interval : 1,
 -			DecayRate : 0
 -		}, options || {})
 -
 -		this.onComplete = this.options.onComplete;
 +		this.options = Object.extend({ Interval : 1	}, options || {});
  		Prado.WebUI.TTimeTriggeredCallback.register(this);
  	},
  	startTimer : function()
  	{
 -		this.options.onComplete = this.onRequestComplete.bind(this);
 -		this.timer = setTimeout(this.onTimerEvent.bind(this), 200);
 +		setTimeout(this.onTimerEvent.bind(this), 100);
 +		if(typeof(this.timer) == 'undefined' || this.timer == null)
 +			this.timer = setInterval(this.onTimerEvent.bind(this),this.options.Interval*1000);
  	},
  	stopTimer : function()
  	{
 -		(this.onComplete || Prototype.emptyFunction).apply(this, arguments);
 -		this.options.onComplete = undefined;
 -		clearTimeout(this.timer);
 -		this.timer = undefined;
 -		this.count = 0;
 +		if(typeof(this.timer) != 'undefined')
 +		{
 +			clearInterval(this.timer);
 +			this.timer = null;
 +		}
  	},
  	onTimerEvent : function()
  	{
 -		this.options.params = this.timeout/1000;
  		var request = new Prado.CallbackRequest(this.options.EventTarget, this.options);
  		request.dispatch();
 -	},
 -
 -	onRequestComplete : function()
 -	{
 -		(this.onComplete || Prototype.emptyFunction).apply(this, arguments);
 -		this.timer = setTimeout(this.onTimerEvent.bind(this), this.getNewTimeout())
 -	},
 -
 -	getNewTimeout : function()
 -	{
 -		switch(this.options.DecayType)
 -		{
 -			case 'Exponential':
 -				t = (Math.exp(this.options.DecayRate*this.count*this.options.Interval))-1;
 -			break;
 -			case 'Linear':
 -				t = this.options.DecayRate*this.count*this.options.Interval;
 -			break;
 -			case 'Quadratic':
 -				t = this.options.DecayRate*this.count*this.count*this.options.Interval;
 -			break;
 -			case 'Cubic':
 -				t = this.options.DecayRate*this.count*this.count*this.count*this.options.Interval;
 -			break;
 -			default : t = 0;
 -		}
 -		this.timeout = (t + this.options.Interval)*1000;
 -		this.count++;
 -		return parseInt(this.timeout);
  	}
  },
  //class methods
 diff --git a/framework/Web/Javascripts/prado/ajax3.js b/framework/Web/Javascripts/prado/ajax3.js index c5402ea4..f540813c 100644 --- a/framework/Web/Javascripts/prado/ajax3.js +++ b/framework/Web/Javascripts/prado/ajax3.js @@ -14,6 +14,9 @@ Object.extend(Ajax.Request.prototype,  	    if (event == 'Complete')
  	    {
 +	    	if(this.header('X-PRADO-REDIRECT'))
 +	    		document.location.href = this.header('X-PRADO-REDIRECT');
 +
  	      if ((this.header('Content-type') || '').match(/^text\/javascript/i))
  	      {
  	        try
 @@ -119,10 +122,6 @@ Object.extend(Prado.CallbackRequest,  	 * Page state header name.
  	 */
  	PAGESTATE_HEADER : 'X-PRADO-PAGESTATE',
 -	/**
 -	 * Current requests in progress.
 -	 */
 -	currentRequest : null,
  	requestQueue : [],
 @@ -265,25 +264,6 @@ Object.extend(Prado.CallbackRequest,  	},
  	/**
 -	 * Dispatch a priority request, it will call abortRequestInProgress first.
 -	 */
 -	dispatchPriorityRequest : function(callback)
 -	{
 -		var self = Prado.CallbackRequest;
 -
 -		callback.request = new Ajax.Request(callback.url, callback.options);
 -		callback.timeout = setTimeout(function()
 -		{
 -			//Logger.warn("priority timeout");
 -			self.abortCurrentRequest();
 -		},callback.options.RequestTimeOut);
 -
 -		//Logger.info("dispatched "+this.currentRequest)
 -		self.currentRequest = callback;
 -		return true;
 -	},
 -
 -	/**
  	 * Dispatch a normal request, no timeouts or aborting of requests.
  	 */
  	dispatchNormalRequest : function(callback)
 @@ -296,23 +276,19 @@ Object.extend(Prado.CallbackRequest,  	/**
  	 * Abort the current priority request in progress.
  	 */
 -	abortCurrentRequest : function()
 +	tryNextRequest : function()
  	{
  		var self = Prado.CallbackRequest;
 -		var inProgress = self.currentRequest;
 -		//Logger.info("aborting ... "+inProgress);
 -		if(inProgress)
 +		//Logger.debug('trying next request');
 +		if(typeof(self.currentRequest) == 'undefined' || self.currentRequest==null)
  		{
 -			clearTimeout(inProgress.timeout);
 -			self.currentRequest = null;
 -			//Logger.info("aborted");
 -			//abort if not ready.
 -			if(inProgress.request.transport.readyState < 4)
 -				inProgress.request.transport.abort();
 -			return self.dispatchQueue();
 +			if(self.requestQueue.length > 0)
 +				return self.dispatchQueue();
 +			//else
 +				//Logger.warn('empty queque');
  		}
 -		else
 -			return self.dispatchQueue();
 +//		else
 +	//		Logger.warn('current request ' + self.currentRequest.id);
  	},
  	/**
 @@ -334,51 +310,66 @@ Object.extend(Prado.CallbackRequest,  			{
  				if(typeof(Logger) != "undefined")
  					Logger.warn("Missing page state:"+data);
 +//				Logger.warn('## bad state: setting current request to null');
 +				self.endCurrentRequest();
 +				//self.tryNextRequest();
  				return false;
  			}
  		}
 +		self.endCurrentRequest();
 +	//	Logger.warn('## state updated: setting current request to null');
 +	//	self.tryNextRequest();
  		return true;
  	},
  	enqueue : function(callback)
  	{
  		var self = Prado.CallbackRequest;
 -		if(self.currentRequest==null)
 -			self.dispatchPriorityRequest(callback);
 -		else
 -			self.requestQueue.push(callback);
 -		//Logger.info("current queque length="+self.requestQueue.length);
 +		self.requestQueue.push(callback);
 +		//Logger.warn("equeued "+callback.id+", current queque length="+self.requestQueue.length);
 +		self.tryNextRequest();
  	},
  	dispatchQueue : function()
  	{
  		var self = Prado.CallbackRequest;
 -		//Logger.info("dispatching queque, length="+self.requestQueue.length+" request="+self.currentRequest);
 -		if(self.requestQueue.length > 0)
 +		//Logger.warn("dispatching queque, length="+self.requestQueue.length+" request="+self.currentRequest);
 +		var callback = self.requestQueue.shift();
 +		self.currentRequest = callback;
 +
 +		//get data
 +		callback.options.postBody = callback._getPostData(),
 +
 +		callback.request = new Ajax.Request(callback.url, callback.options);
 +		callback.timeout = setTimeout(function()
  		{
 -			var callback = self.requestQueue.shift();
 -			//Logger.info("do dispatch request");
 -			return self.dispatchPriorityRequest(callback);
 -		}
 -		return false;
 +			//Logger.warn("priority timeout");
 +			self.abortRequest(callback.id);
 +		},callback.options.RequestTimeOut);
 +		//Logger.debug("dispatched "+self.currentRequest.id + " ...")
 +	},
 +
 +	endCurrentRequest : function()
 +	{
 +		var self = Prado.CallbackRequest;
 +		clearTimeout(self.currentRequest.timeout);
 +		self.currentRequest=null;
  	},
  	abortRequest : function(id)
  	{
 -		//Logger.info("abort id="+id);
 +		//Logger.warn("abort id="+id);
  		var self = Prado.CallbackRequest;
 -		if(self.currentRequest != null && self.currentRequest.id == id)
 -			self.abortCurrentRequest();
 -		else
 +		if(typeof(self.currentRequest) != 'undefined'
 +			&& self.currentRequest != null && self.currentRequest.id == id)
  		{
 -			var queque = [];
 -			self.requestQueue.each(function(callback)
 -			{
 -				if(callback.id != id)
 -					queque.push(callback);
 -			});
 -			self.requestQueue = queque;
 +			var request = self.currentRequest.request;
 +			if(request.transport.readyState < 4)
 +				request.transport.abort();
 +			//Logger.warn('## aborted: setting current request to null');
 +			self.endCurrentRequest();
  		}
 +		self.tryNextRequest();
  	}
  })
 @@ -388,7 +379,7 @@ Object.extend(Prado.CallbackRequest,  Ajax.Responders.register({onComplete : function(request)
  {
  	if(request.options.HasPriority)
 -		Prado.CallbackRequest.abortCurrentRequest();
 +		Prado.CallbackRequest.tryNextRequest();
  }});
  //Add HTTP exception respones when logger is enabled.
 @@ -528,7 +519,7 @@ Prado.CallbackRequest.prototype =  		//override parameter and postBody options.
  		Object.extend(this.options,
  		{
 -			postBody : this._getPostData(),
 +//			postBody : this._getPostData(),
  			parameters : ''
  		});
 diff --git a/framework/Web/Javascripts/prado/controls.js b/framework/Web/Javascripts/prado/controls.js index c26026ae..97969f87 100644 --- a/framework/Web/Javascripts/prado/controls.js +++ b/framework/Web/Javascripts/prado/controls.js @@ -137,9 +137,11 @@ Prado.WebUI.TTextBox = Class.extend(Prado.WebUI.PostBackControl,  {
  	onInit : function(options)
  	{
 +		this.options=options;
  		if(options['TextMode'] != 'MultiLine')
  			Event.observe(this.element, "keydown", this.handleReturnKey.bind(this));
 -		Event.observe(this.element, "change", Prado.PostBack.bindEvent(this,options));
 +		if(this.options['AutoPostBack']==true)
 +			Event.observe(this.element, "change", Prado.PostBack.bindEvent(this,options));
  	},
  	handleReturnKey : function(e)
 @@ -149,8 +151,19 @@ Prado.WebUI.TTextBox = Class.extend(Prado.WebUI.PostBackControl,  			var target = Event.element(e);
  			if(target)
  			{
 -				Event.fireEvent(target, "change");
 -				Event.stop(e);
 +				if(this.options['AutoPostBack']==true)
 +				{
 +					Event.fireEvent(target, "change");
 +					Event.stop(e);
 +				}
 +				else
 +				{
 +					if(this.options['CausesValidation'] && typeof(Prado.Validation) != "undefined")
 +					{
 +						if(!Prado.Validation.validate(this.options['FormID'], this.options['ValidationGroup'], $(this.options['ID'])))
 +							return Event.stop(e);
 +					}
 +				}
  			}
  		}
  	}
 @@ -252,7 +265,7 @@ Prado.WebUI.TCheckBoxList = Base.extend(  			var checkBoxOptions = Object.extend(
  			{
  				ID : options.ListID+"_c"+i,
 -				EventTarget : options.ListID+"$c"+i
 +				EventTarget : options.ListName+"$c"+i
  			}, options);
  			new Prado.WebUI.TCheckBox(checkBoxOptions);
  		}
 @@ -268,7 +281,7 @@ Prado.WebUI.TRadioButtonList = Base.extend(  			var radioButtonOptions = Object.extend(
  			{
  				ID : options.ListID+"_c"+i,
 -				EventTarget : options.ListID+"$c"+i
 +				EventTarget : options.ListName+"$c"+i
  			}, options);
  			new Prado.WebUI.TRadioButton(radioButtonOptions);
  		}
 | 
