From: Dion O. <dol...@us...> - 2005-11-15 14:07:52
|
Update of /cvsroot/magicajax/magicajax/Core In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv12449/magicajax/Core Modified Files: AssemblyInfo.cs MagicAjax NET 2.0.csproj MagicAjaxModule.cs Log Message: Added code for using embedded 'WebParts.js' file inside ASP.NET 2.0 WebPart pages. Index: MagicAjax NET 2.0.csproj =================================================================== RCS file: /cvsroot/magicajax/magicajax/Core/MagicAjax NET 2.0.csproj,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** MagicAjax NET 2.0.csproj 15 Nov 2005 11:47:52 -0000 1.4 --- MagicAjax NET 2.0.csproj 15 Nov 2005 14:07:31 -0000 1.5 *************** *** 149,152 **** --- 149,153 ---- </Compile> <EmbeddedResource Include="script\AjaxCallObject.js" /> + <EmbeddedResource Include="script\WebParts.js" /> <Content Include="Web.config" /> </ItemGroup> Index: AssemblyInfo.cs =================================================================== RCS file: /cvsroot/magicajax/magicajax/Core/AssemblyInfo.cs,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** AssemblyInfo.cs 14 Nov 2005 18:50:43 -0000 1.2 --- AssemblyInfo.cs 15 Nov 2005 14:07:31 -0000 1.3 *************** *** 22,25 **** --- 22,26 ---- //Webresources [assembly: WebResourceAttribute("MagicAjax.script.AjaxCallObject.js", "text/javascript")] + [assembly: WebResourceAttribute("MagicAjax.script.WebParts.js", "text/javascript")] #endif Index: MagicAjaxModule.cs =================================================================== RCS file: /cvsroot/magicajax/magicajax/Core/MagicAjaxModule.cs,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** MagicAjaxModule.cs 15 Nov 2005 11:47:52 -0000 1.7 --- MagicAjaxModule.cs 15 Nov 2005 14:07:31 -0000 1.8 *************** *** 137,141 **** public virtual void EnableAjaxOnPage(Page page) { ! if ( _isAjaxCall ) return; string STARTUP_SCRIPT_FORMAT = @" --- 137,141 ---- public virtual void EnableAjaxOnPage(Page page) { ! if (_isAjaxCall || page == null) return; string STARTUP_SCRIPT_FORMAT = @" *************** *** 189,192 **** --- 189,238 ---- } } + + #if NET_2_0 + /// <summary> + /// Adds WebPart client scriptfile to the page. + /// This scriptfile adds functions to reset the WebPartManager object on the client after a callback + /// </summary> + /// <param name="page"></param> + public virtual void AddWebPartClientFunctions(Page page) + { + if (_isAjaxCall || page == null) return; + + if (!HttpContext.Current.Items.Contains("AJAX_WEBPARTCLIENTSCRIPT_REGISTERED")) + { + // if this is a WebPart page, and IE browser, add our 'WebParts.js' script + System.Web.UI.WebControls.WebParts.WebPartManager wpm = System.Web.UI.WebControls.WebParts.WebPartManager.GetCurrentWebPartManager(page); + if (wpm != null && wpm.EnableClientScript) + { + HttpBrowserCapabilities capabilities = page.Request.Browser; + if (capabilities.Win32 && (capabilities.MSDomVersion.CompareTo(new Version(5, 5)) >= 0)) + { + string location = _config.ScriptPath; + if (location == null) + { + // Use embedded clientscipt resource + page.ClientScript.RegisterClientScriptResource(typeof(MagicAjaxModule), "MagicAjax.script.WebParts.js"); + } + else + { + // Point to external script source file + string includeScript = String.Format("<script type=\"text/javascript\" src=\"{0}/{1}\"></script>", location, "WebParts.js"); + page.RegisterClientScriptBlock("AJAX_WEBPARTCLIENTSCRIPT_REGISTERED", includeScript); + } + + string AJAX_WEBPARTCLIENTSCRIPT_CHECK_FORMAT = @" + <script language='javascript'> + if (typeof(WebPartManager_Cleanup) == 'undefined') + alert(""Unable to find script library '{0}/{1}'. Copy the file to the required location, or change the 'ajaxCallScriptPath' setting at magicAjax section of web.config.""); + </script>"; + + page.RegisterStartupScript("AJAX_WEBPARTCLIENTSCRIPT_CHECK", string.Format(AJAX_WEBPARTCLIENTSCRIPT_CHECK_FORMAT, location, "WebParts.js")); + } + } + HttpContext.Current.Items.Add("AJAX_WEBPARTCLIENTSCRIPT_REGISTERED", true); + } + } + #endif #endregion *************** *** 446,484 **** 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(); ! }"; ! AjaxCallHelper.Write(wpm_Dispose_script); // Send script to setup webpartmanager drag&drop + webpartmenu's --- 492,497 ---- if (wpmValue != null) { ! // Send script to cleanup current clientside WebPartManager object ! AjaxCallHelper.Write("if (typeof(WebPartManager_Cleanup) == 'function') { WebPartManager_Cleanup(); }"); // Send script to setup webpartmanager drag&drop + webpartmenu's |