From: Dion O. <dol...@us...> - 2005-11-14 16:12:07
|
Update of /cvsroot/magicajax/magicajax/Core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27833/magicajax/Core Modified Files: MagicAjaxModule.cs Log Message: Some fixes for supporting ASP.NET 2.0 WebParts Index: MagicAjaxModule.cs =================================================================== RCS file: /cvsroot/magicajax/magicajax/Core/MagicAjaxModule.cs,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** MagicAjaxModule.cs 11 Nov 2005 22:29:39 -0000 1.2 --- MagicAjaxModule.cs 14 Nov 2005 16:11:56 -0000 1.3 *************** *** 434,451 **** // Check if this request is to add/remove/replace a WebPart // If so, send back updated WebPartManager drag&drop javascript (IE only) ! if (!string.IsNullOrEmpty(_form["__EVENTTARGET"]) && !string.IsNullOrEmpty(_form["__EVENTARGUMENT"])) { ! Control webPartControl = requestPage.FindControl(_form["__EVENTTARGET"]); ! if ((webPartControl is System.Web.UI.WebControls.WebParts.WebPartZone && (_form["__EVENTARGUMENT"].StartsWith("delete:") || _form["__EVENTARGUMENT"].StartsWith("Drag:") || _form["__EVENTARGUMENT"].StartsWith("close:"))) ! || (webPartControl is System.Web.UI.WebControls.WebParts.CatalogZone && _form["__EVENTARGUMENT"] == "add")) { ! string wpmValue = _filter.GetWebPartManagerScriptValue(); ! if (wpmValue != null) { ! // Send script to dispose current webpartmanager ! CallBackHelper.Write("if (typeof(WebPartManager_Dispose) == 'function'){WebPartManager_Dispose();}\r\n"); ! // Send script to setup webpartmanager drag&drop + webpartmenu's ! CallBackHelper.Write(wpmValue); ! } } } --- 434,484 ---- // Check if this request is to add/remove/replace a WebPart // If so, send back updated WebPartManager drag&drop javascript (IE only) ! if (!string.IsNullOrEmpty(_form["__WPPS"])) { ! //Control webPartControl = requestPage.FindControl(_form["__EVENTTARGET"]); ! //if ((webPartControl is System.Web.UI.WebControls.WebParts.WebPartZone && (_form["__EVENTARGUMENT"].StartsWith("delete:") || _form["__EVENTARGUMENT"].StartsWith("Drag:") || _form["__EVENTARGUMENT"].StartsWith("close:"))) ! // || (webPartControl is System.Web.UI.WebControls.WebParts.CatalogZone && _form["__EVENTARGUMENT"] == "add")) ! ! string wpmValue = _filter.GetWebPartManagerScriptValue(requestPage.Form.ClientID); ! if (wpmValue != null) { ! //TODO: read wpm_Dispose_script from file ! string wpm_Dispose_script = @" ! // Send script to dispose current webpartmanager ! if (__wpm != null && __wpm.zones != null) { ! //loop zones ! for (var i = 0; i < __wpm.zones.length; i++) ! { ! var zone = __wpm.zones[i]; ! //detach current zone events ! if (zone.webPartTable != null) ! { ! zone.webPartTable.detachEvent('ondragenter', Zone_OnDragEnter); ! zone.webPartTable.detachEvent('ondrop', Zone_OnDrop); ! zone.webPartTable.detachEvent('ondrop', Zone_OnDrop); ! } ! //loop webparts of current zone ! if (zone.webParts != null) ! { ! for (var j = 0; j < zone.webParts.length; j++) ! { ! var webpart = zone.webParts[j]; ! //detach current webpart events ! webpart.webPartElement.detachEvent('ondragstart', WebPart_OnDragStart); ! webpart.webPartElement.detachEvent('ondrag', WebPart_OnDrag); ! webpart.webPartElement.detachEvent('ondragend', WebPart_OnDragEnd); ! } ! } ! //dispose zone ! __wpm.zones[i].Dispose(); ! } ! //reset zone array in webpartmanager ! __wpm.zones = new Array(); ! }"; ! CallBackHelper.Write(wpm_Dispose_script); ! ! // Send script to setup webpartmanager drag&drop + webpartmenu's ! CallBackHelper.Write(wpmValue); } } *************** *** 804,812 **** /// Look for javascript generated for draggable webparts (IE only), and returns these javascripts. /// </summary> ! public string GetWebPartManagerScriptValue() { string html = GetHtmlPage(); ! string searchWPManager = "<script type=\"text\\/javascript\">\\r\\n\\r\\n(?<WPManagerScript>__wpm = new WebPartManager\\(\\);.*?)<\\/script>"; Regex regExWPManager = new Regex(searchWPManager, RegexOptions.Singleline | RegexOptions.Compiled); Match match = regExWPManager.Match(html); --- 837,846 ---- /// Look for javascript generated for draggable webparts (IE only), and returns these javascripts. /// </summary> ! public string GetWebPartManagerScriptValue(string formID) { string html = GetHtmlPage(); ! // Look for webpartmanager object creation script ! string searchWPManager = "<script type=\"text\\/javascript\">\\r\\n\\r\\n__wpm = new WebPartManager\\(\\);\\r\\n(?<WPManagerScript>.*?)<\\/script>"; Regex regExWPManager = new Regex(searchWPManager, RegexOptions.Singleline | RegexOptions.Compiled); Match match = regExWPManager.Match(html); *************** *** 816,823 **** return null; ! StringBuilder wpmScript = new StringBuilder(match.Groups["WPManagerScript"].Value); ! wpmScript.AppendLine(); ! // Now look for webpart menu scripts string searchWPMenus = "<script type=\"text\\/javascript\">\\r\\n(?<MenuScript>var menuWebPart_.*?)<\\/script>"; Regex regExMenuScripts = new Regex(searchWPMenus, RegexOptions.Singleline | RegexOptions.Compiled); --- 850,872 ---- return null; ! // Stringbuilder to hold the output script ! StringBuilder wpmScript = new StringBuilder(); ! // First look for hidden drag element (if not exists : add this to page) ! string searchDragElm = "<div id=\"(?<DragElmId>.+?___Drag)\" style=\"display:none.+?><\\/div>"; ! Regex regExDragElm = new Regex(searchDragElm, RegexOptions.Multiline | RegexOptions.Compiled); ! Match matchDragElm = regExDragElm.Match(html); ! if (matchDragElm.Success) ! { ! //add this element to the html page, if it didn't exist ! string elmID = matchDragElm.Groups["DragElmId"].Value; ! wpmScript.AppendLine(string.Format("if (document.getElementById('{0}') == null)", elmID)); ! wpmScript.AppendLine(string.Format(" AJAXCbo.AddElementScript('{0}','span','__DragHolder',{1},'null');", formID, CallBackHelper.EncodeString(matchDragElm.Value))); ! } ! ! // Now append the WebpartManager script ! wpmScript.AppendLine(match.Groups["WPManagerScript"].Value); ! ! // Now append the webpart menu scripts string searchWPMenus = "<script type=\"text\\/javascript\">\\r\\n(?<MenuScript>var menuWebPart_.*?)<\\/script>"; Regex regExMenuScripts = new Regex(searchWPMenus, RegexOptions.Singleline | RegexOptions.Compiled); |