From: Argiris K. <be...@us...> - 2005-11-10 12:53:17
|
Update of /cvsroot/magicajax/MagicAjax NET 1.1 In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21307 Modified Files: CallBackHelper.cs MagicAjaxModule.cs Web.config Log Message: Many changes to get NoStore page mode working. Set it as the default mode. Index: Web.config =================================================================== RCS file: /cvsroot/magicajax/MagicAjax NET 1.1/Web.config,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** Web.config 7 Nov 2005 06:44:08 -0000 1.4 --- Web.config 10 Nov 2005 12:53:08 -0000 1.5 *************** *** 14,18 **** "Session" : Saves the page object in session, works only for "InProc" SessionState "Cache" : Saves the page object in cache ! Default is "Session" pageStore/cacheTimeout - The time in minutes that the page will be kept in cache, if "Cache" is selected for pageStore. Default is 5 --- 14,18 ---- "Session" : Saves the page object in session, works only for "InProc" SessionState "Cache" : Saves the page object in cache ! Default is "NoStore" pageStore/cacheTimeout - The time in minutes that the page will be kept in cache, if "Cache" is selected for pageStore. Default is 5 *************** *** 23,27 **** <magicAjax> <pageStore ! mode="Session" cacheTimeout="5" maxConcurrentPages="5" --- 23,27 ---- <magicAjax> <pageStore ! mode="NoStore" cacheTimeout="5" maxConcurrentPages="5" Index: CallBackHelper.cs =================================================================== RCS file: /cvsroot/magicajax/MagicAjax NET 1.1/CallBackHelper.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** CallBackHelper.cs 3 Nov 2005 11:38:38 -0000 1.3 --- CallBackHelper.cs 10 Nov 2005 12:53:08 -0000 1.4 *************** *** 54,57 **** --- 54,59 ---- private CallBackHelper() { } + private static System.Text.StringBuilder sbScript = null; + #region Static Properties /// <summary> *************** *** 90,94 **** { if ( IsCallBack ) ! return MagicAjaxModule.Instance.Form["__AJAX_EVENTARGUMENT"]; else return null; --- 92,96 ---- { if ( IsCallBack ) ! return MagicAjaxModule.Instance.Form["__EVENTARGUMENT"]; else return null; *************** *** 106,110 **** get { ! return ( MagicAjaxModule.Instance.Form["__AJAX_EVENTTARGET"] == "__AJAX_CALLBACKTIMER" ); } } --- 108,112 ---- get { ! return ( MagicAjaxModule.Instance.Form["__EVENTTARGET"] == "__AJAX_CALLBACKTIMER" ); } } *************** *** 335,339 **** public static void WriteSetFieldScript(string fieldName, string fieldValue) { ! Write( String.Format("AJAXCbo.SetFieldScript({0},\"{1}\");\r\n", EncodeString(fieldValue), fieldName) ); } --- 337,341 ---- public static void WriteSetFieldScript(string fieldName, string fieldValue) { ! Write( String.Format("AJAXCbo.SetFieldScript(\"{0}\",{1});\r\n", fieldName, EncodeString(fieldValue)) ); } *************** *** 415,419 **** public static void Write( string text) { ! Response.Write (text + "\r\n"); } --- 417,432 ---- public static void Write( string text) { ! // Use the string builder ! //Response.Write (text + "\r\n"); ! sbScript.Append (text + "\r\n"); ! } ! ! internal static void Init() ! { ! HttpResponse hr = CallBackHelper.Response; ! hr.StatusCode = 200; ! hr.StatusDescription = "OK"; ! ! sbScript = new System.Text.StringBuilder(); } *************** *** 430,440 **** HttpResponse hr = CallBackHelper.Response; ! hr.StatusCode = 200; ! hr.StatusDescription = "OK"; hr.Flush(); - - MagicAjaxModule.Instance.CompletedCallBack = true; hr.End(); } --- 443,453 ---- HttpResponse hr = CallBackHelper.Response; + + hr.Clear(); + hr.Write (sbScript.ToString()); ! MagicAjaxModule.Instance.CompletedCallBack = true; hr.Flush(); hr.End(); } Index: MagicAjaxModule.cs =================================================================== RCS file: /cvsroot/magicajax/MagicAjax NET 1.1/MagicAjaxModule.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** MagicAjaxModule.cs 7 Nov 2005 06:44:08 -0000 1.3 --- MagicAjaxModule.cs 10 Nov 2005 12:53:08 -0000 1.4 *************** *** 214,218 **** { // Find an empty slot ! pageInfoIndex = -1; for (int i=0; i < storedPages.Count; i++) { --- 214,218 ---- { // Find an empty slot ! pageInfoIndex = -1; for (int i=0; i < storedPages.Count; i++) { *************** *** 358,362 **** childHash = ~childHash; ! int conHash = String.Format("{0}_{1}", control.GetType(), control.ID).GetHashCode(); return conHash ^ childHash; --- 358,362 ---- childHash = ~childHash; ! int conHash = String.Format("{0}_{1}", control.GetType(), control.ID).GetHashCode(); return conHash ^ childHash; *************** *** 389,430 **** Page requestPage = (Page) _context.Handler; ! if ( PageStoreMode.NoStore == _config.PageStore.Mode ) ! { ! // The page is not stored ! string strFormData = _request.QueryString["__AJAX_FORMDATA"]; ! if (strFormData == null) ! return; ! // Get the form data ! string[] pairs = strFormData.Split('&'); ! _form = new NameValueCollection(pairs.Length); ! for (int i=0; i < pairs.Length; i++) { ! string[] parts = pairs[i].Split('='); ! _form.Add (_context.Server.UrlDecode(parts[0]), _context.Server.UrlDecode(parts[1])); ! } ! // Remove the '__AJAX_FORMDATA' query key ! int si = _request.RawUrl.IndexOf("?") + 1; ! int ei = _request.RawUrl.IndexOf("&__AJAX_FORMDATA="); ! if (ei == -1) ! ei = si; ! _context.RewritePath(_request.FilePath, _request.PathInfo, _request.RawUrl.Substring(si, ei-si)); ! _context.Handler.ProcessRequest(_context); ! _response.Clear(); ! _isCallBack = true; ! // Restore the validators ! if (requestPage.Validators.Count == 0) ! { ! ArrayList validators = FindValidators(requestPage); ! foreach (IValidator valid in validators) ! requestPage.Validators.Add (valid); } - ProcessCallBack (requestPage); - _response.Cache.SetNoStore(); - CallBackHelper.End(); } else --- 389,417 ---- Page requestPage = (Page) _context.Handler; ! // Continue only if it is a postback or a callback ! if ( "GET" == _request.HttpMethod ) ! return; ! _isCallBack = (_request.Form["__AJAX_CALLBACK"] != null); ! _form = _request.Form; ! if ( PageStoreMode.NoStore == _config.PageStore.Mode ) ! { ! if ( _isCallBack ) { ! _filter = new PageFilter(_response.Filter); ! _response.Filter = _filter; ! CallBackHelper.Init(); ! _context.Handler.ProcessRequest (_context); ! _response.Flush(); ! string vsValue = _filter.GetViewStateFieldValue(); ! if (vsValue != null && _form["__VIEWSTATE"] != vsValue) ! CallBackHelper.WriteSetFieldScript("__VIEWSTATE", vsValue); ! ! CallBackHelper.End(); } } else *************** *** 432,441 **** // The page is stored - // Continue only if it is a postback or a callback - if ( "GET" == _request.HttpMethod ) - return; - - _isCallBack = (_request.Form["__AJAX_EVENTTARGET"] != null); - _form = _request.Form; pageKey = _form[PageKeyFieldName]; --- 419,422 ---- *************** *** 478,481 **** --- 459,464 ---- } + CallBackHelper.Init(); + ProcessCallBack(_currentPageInfo.Page); *************** *** 490,497 **** protected virtual void RequestedPage_Init(object sender, EventArgs e) { ! Page requestPage = (Page) sender; System.Web.UI.HtmlControls.HtmlForm storedForm = (System.Web.UI.HtmlControls.HtmlForm) _currentPageInfo.Page.Controls[1]; ! // Remove the HtmlForm of requested page ! requestPage.Controls.RemoveAt (1); requestPage.Controls.AddAt (1, storedForm); } --- 473,480 ---- protected virtual void RequestedPage_Init(object sender, EventArgs e) { ! Page requestPage = (Page) sender; System.Web.UI.HtmlControls.HtmlForm storedForm = (System.Web.UI.HtmlControls.HtmlForm) _currentPageInfo.Page.Controls[1]; ! // Remove the HtmlForm of requested page ! requestPage.Controls.RemoveAt (1); requestPage.Controls.AddAt (1, storedForm); } *************** *** 524,532 **** else { ! // Handler Server.Transfer ! response.Clear(); string html = _filter.GetHtmlPage(); CallBackHelper.WriteSetHtmlOfPageScript (html); ! CallBackHelper.WriteEndSignature(); } } --- 507,515 ---- else { ! // Handle Server.Transfer ! CallBackHelper.Init(); string html = _filter.GetHtmlPage(); CallBackHelper.WriteSetHtmlOfPageScript (html); ! CallBackHelper.End(); } } *************** *** 551,556 **** if ( CallBackHelper.CallBackType == CallBackType.Control ) { ! string target = _form["__AJAX_EVENTTARGET"]; ! string argument = _form["__AJAX_EVENTARGUMENT"]; RaisePostBackEventInChild (page, target, argument); } --- 534,539 ---- if ( CallBackHelper.CallBackType == CallBackType.Control ) { ! string target = _form["__EVENTTARGET"]; ! string argument = _form["__EVENTARGUMENT"]; RaisePostBackEventInChild (page, target, argument); } *************** *** 674,678 **** { bool oldSelected = cbList.Items[listItem].Selected; ! handler.LoadPostData(String.Format("{0}:{1}", con.UniqueID, listItem), _form); if (oldSelected != cbList.Items[listItem].Selected) changed = true; --- 657,661 ---- { bool oldSelected = cbList.Items[listItem].Selected; ! handler.LoadPostData(String.Format("{0}:{1}", con.UniqueID, listItem), _form); if (oldSelected != cbList.Items[listItem].Selected) changed = true; *************** *** 748,766 **** private class PageFilter : Stream { ! private Stream responseStream; ! private Stream memStream; ! public PageFilter (Stream responseStream) { ! this.responseStream = responseStream; ! this.memStream = new MemoryStream(); } public string GetHtmlPage() { ! byte[] buffer = new byte[memStream.Length]; ! memStream.Position = 0; ! memStream.Read (buffer, 0, (int)memStream.Length); return HttpContext.Current.Response.ContentEncoding.GetString(buffer); --- 731,765 ---- private class PageFilter : Stream { ! private Stream _responseStream; ! private Stream _memStream; ! public PageFilter (Stream _responseStream) { ! this._responseStream = _responseStream; ! this._memStream = new MemoryStream(); ! } ! ! public string GetViewStateFieldValue() ! { ! string search = "<input type=\"hidden\" name=\"__VIEWSTATE\" value=\""; ! string html = GetHtmlPage(); ! int si = html.IndexOf(search); ! if (si == -1) ! return null; ! ! si += search.Length; ! int ei = html.IndexOf('\"', si); ! if (ei == -1) ! return null; ! ! return html.Substring(si, ei-si); } public string GetHtmlPage() { ! byte[] buffer = new byte[_memStream.Length]; ! _memStream.Position = 0; ! _memStream.Read (buffer, 0, (int)_memStream.Length); return HttpContext.Current.Response.ContentEncoding.GetString(buffer); *************** *** 785,828 **** public override void Close() { ! responseStream.Close (); } public override void Flush() { ! responseStream.Flush (); } public override long Length { ! get { return responseStream.Length; } } public override long Position { ! get { return responseStream.Position; } ! set { responseStream.Position = value; } } public override long Seek(long offset, SeekOrigin origin) { ! return responseStream.Seek (offset, origin); } public override void SetLength(long length) { ! responseStream.SetLength (length); } public override int Read(byte[] buffer, int offset, int count) { ! return responseStream.Read (buffer, offset, count); } public override void Write(byte[] buffer, int offset, int count) { - responseStream.Write (buffer, offset, count); - if ( CallBackHelper.IsCallBack ) ! memStream.Write (buffer, offset, count); } #endregion --- 784,834 ---- public override void Close() { ! _responseStream.Close (); } public override void Flush() { ! _responseStream.Flush (); } public override long Length { ! get { return _responseStream.Length; } } public override long Position { ! get { return _responseStream.Position; } ! set { _responseStream.Position = value; } } public override long Seek(long offset, SeekOrigin origin) { ! return _responseStream.Seek (offset, origin); } public override void SetLength(long length) { ! _responseStream.SetLength (length); } public override int Read(byte[] buffer, int offset, int count) { ! return _responseStream.Read (buffer, offset, count); } public override void Write(byte[] buffer, int offset, int count) { if ( CallBackHelper.IsCallBack ) ! { ! _memStream.Write (buffer, offset, count); ! ! if ( MagicAjaxModule.Instance.CompletedCallBack ) ! _responseStream.Write (buffer, offset, count); ! } ! else ! { ! _responseStream.Write (buffer, offset, count); ! } } #endregion |