private void WriteScriptStatements(TextWriter writer) { string cleanUpScripts = WriteCleanUpScripts().ToString(); bool shouldWriteOnDocumentReady = scriptableComponents.Any() || OnDocumentReadyActions.Any() || OnDocumentReadyStatements.Any() || OutputGlobalization; bool shouldWriteOnWindowUnload = OnWindowUnloadActions.Any() || OnWindowUnloadStatements.Any() || cleanUpScripts.Trim().HasValue(); if (shouldWriteOnDocumentReady || shouldWriteOnWindowUnload) { bool isFirst; writer.WriteLine("<script type=\"text/javascript\">{0}//<![CDATA[".FormatWith(Environment.NewLine)); // pageLoad if (shouldWriteOnDocumentReady) { writer.WriteLine(ScriptWrapper.OnPageLoadStart); // globalization if (OutputGlobalization) { var globalizationInfo = new GlobalizationInfo(CultureInfo.CurrentCulture); writer.WriteLine("if(!jQuery.telerik) jQuery.telerik = {};"); writer.Write("jQuery.telerik.cultureInfo="); writer.Write(new JavaScriptSerializer().Serialize(globalizationInfo.ToDictionary())); writer.WriteLine(";"); } isFirst = true; foreach (IScriptableComponent component in scriptableComponents.Where(s => !s.IsSelfInitialized)) { if (!isFirst) { writer.WriteLine(); } component.WriteInitializationScript(writer); isFirst = false; } isFirst = true; foreach (Action action in OnDocumentReadyActions) { if (!isFirst) { writer.WriteLine(); } action(); isFirst = false; } isFirst = true; foreach (string statement in OnDocumentReadyStatements) { if (!isFirst) { writer.WriteLine(); } writer.Write(statement); isFirst = false; } writer.WriteLine(ScriptWrapper.OnPageLoadEnd); } // pageUnload if (shouldWriteOnWindowUnload) { writer.WriteLine(ScriptWrapper.OnPageUnloadStart); isFirst = true; foreach (Action action in OnWindowUnloadActions) { if (!isFirst) { writer.WriteLine(); } action(); isFirst = false; } isFirst = true; foreach (string statement in OnWindowUnloadStatements) { if (!isFirst) { writer.WriteLine(); } writer.Write(statement); isFirst = false; } writer.WriteLine(cleanUpScripts); // write clean up scripts writer.WriteLine(ScriptWrapper.OnPageUnloadEnd); } writer.Write("//]]>{0}</script>".FormatWith(Environment.NewLine)); } }
/// <summary> /// Write the script statements. /// </summary> /// <param name="writer">The text writer attachec to the Mvc view context output stream.</param> private void WriteScriptStatements(TextWriter writer) { StringBuilder cleanUpScripts = WriteCleanUpScripts(); bool shouldWriteOnDocumentReady = !scriptableComponents.IsEmpty() || !OnDocumentReadyActions.IsEmpty() || !OnDocumentReadyStatements.IsEmpty(); bool shouldWriteOnWindowUnload = !OnWindowUnloadActions.IsEmpty() || !OnWindowUnloadStatements.IsEmpty() || cleanUpScripts.Length > 0; if (shouldWriteOnDocumentReady || shouldWriteOnWindowUnload) { bool isFirst; writer.WriteLine("<script type=\"text/javascript\">{0}//<![CDATA[".FormatWith(Environment.NewLine)); // pageLoad if (shouldWriteOnDocumentReady) { writer.WriteLine(ScriptWrapper.OnPageLoadStart); // globalization if (EnableGlobalization && CultureInfo.CurrentCulture.Name != "en-US") { writer.WriteLine("if (!jQuery.nequeo) jQuery.nequeo = {};"); GlobalizationInfo globalizationInfo = new GlobalizationInfo(CultureInfo.CurrentCulture); writer.Write("jQuery.nequeo.cultureInfo="); writer.Write(new JavaScriptSerializer().Serialize(globalizationInfo.ToDictionary())); writer.WriteLine(";"); } isFirst = true; foreach (IScriptableComponent component in scriptableComponents.Where(s => !s.IsSelfInitialized)) { if (!isFirst) { writer.WriteLine(); } component.WriteInitializationScript(writer); isFirst = false; } isFirst = true; foreach (Action action in OnDocumentReadyActions) { if (!isFirst) { writer.WriteLine(); } action(); isFirst = false; } isFirst = true; foreach (string statement in OnDocumentReadyStatements) { if (!isFirst) { writer.WriteLine(); } writer.Write(statement); isFirst = false; } writer.WriteLine(ScriptWrapper.OnPageLoadEnd); } // pageUnload if (shouldWriteOnWindowUnload) { writer.WriteLine(ScriptWrapper.OnPageUnloadStart); isFirst = true; foreach (Action action in OnWindowUnloadActions) { if (!isFirst) { writer.WriteLine(); } action(); isFirst = false; } isFirst = true; foreach (string statement in OnWindowUnloadStatements) { if (!isFirst) { writer.WriteLine(); } writer.Write(statement); isFirst = false; } writer.WriteLine(cleanUpScripts.ToString()); // write clean up scripts writer.WriteLine(ScriptWrapper.OnPageUnloadEnd); } writer.Write("//]]>{0}</script>".FormatWith(Environment.NewLine)); } }