X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fclass%2FSystem.Web%2FSystem.Web.UI%2FClientScriptManager.cs;h=0ad416d30f211adde4e86ddedee0872bae3adb0e;hb=d7ae726e3583ed1e363247cae6b76307189cd807;hp=9156712c95edd39aabc64908a0522ecd2f9312e7;hpb=a5e40870bd3bb18e1681afed6c71e7edfdb80534;p=mono.git diff --git a/mcs/class/System.Web/System.Web.UI/ClientScriptManager.cs b/mcs/class/System.Web/System.Web.UI/ClientScriptManager.cs index 9156712c95e..0ad416d30f2 100644 --- a/mcs/class/System.Web/System.Web.UI/ClientScriptManager.cs +++ b/mcs/class/System.Web/System.Web.UI/ClientScriptManager.cs @@ -8,7 +8,7 @@ // Lluis Sanchez (lluis@novell.com) // // (C) 2002,2003 Ximian, Inc. (http://www.ximian.com) -// (c) 2003 Novell, Inc. (http://www.novell.com) +// (c) 2003-2010 Novell, Inc. (http://www.novell.com) // // @@ -34,9 +34,7 @@ using System; using System.Collections; -#if NET_2_0 using System.Collections.Generic; -#endif using System.Text; using System.Collections.Specialized; using System.Web.Util; @@ -44,12 +42,7 @@ using System.Globalization; namespace System.Web.UI { - #if NET_2_0 - public sealed partial - #else - internal - #endif - class ClientScriptManager + public sealed partial class ClientScriptManager { internal const string EventStateFieldName = "__EVENTVALIDATION"; @@ -59,47 +52,46 @@ namespace System.Web.UI internal Hashtable hiddenFields; ScriptEntry submitStatements; Page page; -#if NET_2_0 int [] eventValidationValues; int eventValidationPos = 0; Hashtable expandoAttributes; bool _hasRegisteredForEventValidationOnCallback; bool _pageInRender; bool _initCallBackRegistered; -#endif + bool _webFormClientScriptRendered; + bool _webFormClientScriptRequired; + + internal bool ScriptsPresent { + get { + return _webFormClientScriptRequired || + _initCallBackRegistered || + _hasRegisteredForEventValidationOnCallback || + clientScriptBlocks != null || + startupScriptBlocks != null || + submitStatements != null || + registeredArrayDeclares != null || + expandoAttributes != null; + } + } internal ClientScriptManager (Page page) { this.page = page; } -#if !NET_2_0 - public string GetPostBackClientEvent (Control control, string argument) - { - return GetPostBackEventReference (control, argument); - } -#endif - public string GetPostBackClientHyperlink (Control control, string argument) { return "javascript:" + GetPostBackEventReference (control, argument); } -#if NET_2_0 public string GetPostBackClientHyperlink (Control control, string argument, bool registerForEventValidation) { if (registerForEventValidation) RegisterForEventValidation (control.UniqueID, argument); return "javascript:" + GetPostBackEventReference (control, argument); } -#endif -#if !NET_2_0 - internal -#else - public -#endif - string GetPostBackEventReference (Control control, string argument) + public string GetPostBackEventReference (Control control, string argument) { if (control == null) throw new ArgumentNullException ("control"); @@ -111,7 +103,6 @@ namespace System.Web.UI return "__doPostBack('" + control.UniqueID + "','" + argument + "')"; } -#if NET_2_0 public string GetPostBackEventReference (Control control, string argument, bool registerForEventValidation) { if (control == null) @@ -157,7 +148,7 @@ namespace System.Web.UI if(options.TrackFocus) RegisterHiddenField (Page.LastFocusID, String.Empty); - string prefix = options.RequiresJavaScriptProtocol ? "javascript:" : ""; + string prefix = options.RequiresJavaScriptProtocol ? "javascript:" : String.Empty; if (page.IsMultiForm) prefix += page.theForm + "."; @@ -181,9 +172,6 @@ namespace System.Web.UI _webFormClientScriptRequired = true; } - bool _webFormClientScriptRendered; - bool _webFormClientScriptRequired; - internal void WriteWebFormClientScript (HtmlTextWriter writer) { if (!_webFormClientScriptRendered && _webFormClientScriptRequired) { writer.WriteLine (); @@ -231,14 +219,8 @@ namespace System.Web.UI (clientErrorCallback ?? "null") + "," + (useAsync ? "true" : "false") + ")"; } -#endif -#if NET_2_0 - public -#else - internal -#endif - string GetWebResourceUrl(Type type, string resourceName) + public string GetWebResourceUrl(Type type, string resourceName) { if (type == null) throw new ArgumentNullException ("type"); @@ -309,6 +291,7 @@ namespace System.Web.UI registeredArrayDeclares.Add (arrayName, new ArrayList()); ((ArrayList) registeredArrayDeclares[arrayName]).Add(arrayValue); + page.RequiresFormScriptDeclaration (); } void RegisterScript (ref ScriptEntry scriptList, Type type, string key, string script, bool addScriptTags) @@ -407,7 +390,6 @@ namespace System.Web.UI RegisterScript (ref clientScriptBlocks, type, "include-" + key, url, ScriptEntryFormat.Include); } -#if NET_2_0 public void RegisterClientScriptResource (Type type, string resourceName) { RegisterScript (ref clientScriptBlocks, type, "resource-" + resourceName, GetWebResourceUrl (type, resourceName), ScriptEntryFormat.Include); @@ -523,7 +505,7 @@ namespace System.Web.UI throw InvalidPostBackException (); } -#endif + void WriteScripts (HtmlTextWriter writer, ScriptEntry scriptList) { if (scriptList == null) @@ -567,7 +549,6 @@ namespace System.Web.UI } } -#if NET_2_0 internal void RestoreEventValidationState (string fieldValue) { if (!page.EnableEventValidation || fieldValue == null || fieldValue.Length == 0) @@ -622,30 +603,19 @@ namespace System.Web.UI writer.WriteLine (); } -#endif - -#if NET_2_0 internal const string SCRIPT_BLOCK_START = "//"; -#else - internal const string SCRIPT_BLOCK_START = ""; -#endif + internal const string SCRIPT_ELEMENT_START = @""; internal static void WriteBeginScriptBlock (HtmlTextWriter writer) { - writer.WriteLine (""); - writer.WriteLine (SCRIPT_BLOCK_START); + writer.WriteLine (SCRIPT_ELEMENT_START); } internal static void WriteEndScriptBlock (HtmlTextWriter writer) { - writer.WriteLine (SCRIPT_BLOCK_END); - writer.WriteLine (""); + writer.WriteLine (SCRIPT_ELEMENT_END); } internal void WriteHiddenFields (HtmlTextWriter writer) @@ -653,16 +623,34 @@ namespace System.Web.UI if (hiddenFields == null) return; -#if NET_2_0 - writer.RenderBeginTag (HtmlTextWriterTag.Div); + writer.WriteLine (); +#if NET_4_0 + writer.AddAttribute (HtmlTextWriterAttribute.Class, "aspNetHidden"); #endif + writer.RenderBeginTag (HtmlTextWriterTag.Div); + int oldIndent = writer.Indent; + writer.Indent = 0; + bool first = true; + var sb = new StringBuilder (); + foreach (string key in hiddenFields.Keys) { string value = hiddenFields [key] as string; - writer.WriteLine ("", key, HttpUtility.HtmlAttributeEncode (value)); + if (first) + first = false; + else + writer.WriteLine (); + sb.Append (""); } -#if NET_2_0 + writer.Write (sb.ToString ()); + writer.Indent = oldIndent; writer.RenderEndTag (); // DIV -#endif + writer.WriteLine (); hiddenFields = null; } @@ -720,13 +708,11 @@ namespace System.Web.UI } } -#if NET_2_0 internal string GetClientValidationEvent (string validationGroup) { if (page.IsMultiForm) return "if (typeof(" + page.theForm + ".Page_ClientValidate) == 'function') " + page.theForm + ".Page_ClientValidate('" + validationGroup + "');"; return "if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate('" + validationGroup + "');"; } -#endif internal string GetClientValidationEvent () { @@ -743,14 +729,9 @@ namespace System.Web.UI StringBuilder sb = new StringBuilder (); ScriptEntry entry = submitStatements; while (entry != null) { -#if NET_2_0 sb.Append (EnsureEndsWithSemicolon (entry.Script)); -#else - sb.Append (entry.Script); -#endif entry = entry.Next; } -#if NET_2_0 RegisterClientScriptBlock (GetType(), "HtmlForm-OnSubmitStatemen", @" " + page.WebFormScriptReference + @".WebForm_OnSubmit = function () { @@ -759,10 +740,6 @@ return true; } ", true); return "javascript:return " + page.WebFormScriptReference + ".WebForm_OnSubmit();"; - -#else - return sb.ToString (); -#endif } internal static string GetScriptLiteral (object ob) @@ -798,7 +775,7 @@ return true; return sb.ToString (); } else if (ob is bool) { - return ob.ToString ().ToLower (CultureInfo.InvariantCulture); + return ob.ToString ().ToLower (Helpers.InvariantCulture); } else { return ob.ToString (); } @@ -827,13 +804,11 @@ return true; Include, } -#if NET_2_0 // helper method internal static string EnsureEndsWithSemicolon (string value) { if (value != null && value.Length > 0 && value [value.Length - 1] != ';') return value += ";"; return value; } -#endif } }