//+ //- ~Write- // internal String Write(ClientController controller) { String provider = controller.FrameworkElement.Provider; if (!String.IsNullOrEmpty(provider)) { Provider = Nalarium.Activation.ObjectCreator.CreateAs<ProviderBase>(provider); if (Provider == null) { throw new InvalidOperationException("Framework provider for " + controller.Framework() + " not found (" + provider + ")."); } } if (Provider == null) { switch (controller.Framework().ToLower()) { case Nalarium.Client.Framework.None: Provider = new NoneProvider(); break; case Nalarium.Client.Framework.Basic: Provider = new BasicProvider(); break; case Nalarium.Client.Framework.Enhanced: Provider = new EnhancedProvider(); break; case Nalarium.Client.Framework.Prototype: Provider = new PrototypeProvider(); break; case Nalarium.Client.Framework.JQuery: Provider = new JQueryProvider(); break; default: if (String.IsNullOrEmpty(provider)) { throw new InvalidOperationException("Framework provider for " + controller.Framework() + " not set."); } break; } } //+ Provider.Controller = controller; this.Provider.ImportInto(this); ScriptResourceList = ScriptResourceList.OrderBy(s => s.ScriptPriority()).ToList(); //++ copy for serialization Combine = controller.Combine(); Minimize = controller.Minimize(); Compress = controller.Compress(); IncludeTracing = controller.IncludeTracing; DomLoadTemplate = Provider.DomLoadTemplate; PageLoadTemplate = Provider.PageLoadTemplate; Framework = Provider.Framework; //+ flatten data String leftover = String.Empty; String volatileData = GetVolatileData(this); //+ String scriptBasePath = controller.ScriptBasePath; //+ StringBuilder output = new StringBuilder(); if (this.Combine) { String data = ScriptCatalog.Serialize(this); SHA1CryptoServiceProvider sha1 = new SHA1CryptoServiceProvider(); String hash = UTF8Encoding.UTF8.GetString(sha1.ComputeHash(UTF8Encoding.UTF8.GetBytes(data))); String base64Id = Convert.ToBase64String(UTF8Encoding.UTF8.GetBytes(hash)); lock (this) { if (_scriptCache.ContainsKey(base64Id)) { _scriptCache.Remove(base64Id); } _scriptCache.Add(base64Id, data); } List<ScriptInclude> doNotCombineIncludeList = ScriptIncludeList.Where(p => p.DoNotCombine()).ToList(); List<ScriptInclude> remoteIncludeList = ScriptIncludeList.Where(p => !p.DoNotCombine() && p.Path().StartsWith("http://") || p.Path().StartsWith("https://")).ToList(); //+ remoteIncludeList.ForEach(p => Http.Page.ClientScript.RegisterClientScriptInclude(p.Path(), p.Path())); doNotCombineIncludeList.ForEach(p => Http.Page.ClientScript.RegisterClientScriptInclude(p.Path(), p.Path())); String path = Nalarium.Client.Configuration.ClientSection.GetConfigSection().ResourceHandlerPath + "?c=" + base64Id; if (controller.OutputMode() == OutputMode.Manual) { Http.Page.ClientScript.RegisterClientScriptInclude("__$ClientResource", path); } else { Http.Response.Write(CreateScriptElement(path)); } //+ leftover = volatileData; } else { if (controller.OutputMode() == OutputMode.Classic) { FrameworkCoreIncludeList.ForEach(p => Http.Page.ClientScript.RegisterClientScriptInclude(p.Path(), p.Path())); ScriptResourceList.ForEach(p => Http.Page.ClientScript.RegisterClientScriptResource(p.ScriptType(), p.ResourceName())); ScriptIncludeList.ForEach(p => Http.Page.ClientScript.RegisterClientScriptInclude(p.Path(), p.Path())); leftover = GetNonVolatileData(this) + "\n" + volatileData; Http.Page.ClientScript.RegisterClientScriptBlock(_type, "AdHoc", CreateScriptWrapElement(leftover)); } else { FrameworkCoreIncludeList.ForEach(p => output.AppendLine(CreateScriptElement(p.Path()))); ScriptResourceList.ForEach(p => { //String contentType; //output.AppendLine(ResourceReader.ReadResource(p.ScriptType.Assembly.FullName, p.ResourceName, out contentType)); output.AppendLine(CreateScriptElement(CreateExternalResourceUrl(new ResourceItem { AssemblyName = p.ScriptType().Assembly.FullName, ResourceName = p.ResourceName() }))); }); ScriptIncludeList.ForEach(p => output.AppendLine(CreateScriptElement(p.Path()))); output.AppendLine(CreateScriptWrapElement(GetNonVolatileData(this) + "\n" + volatileData)); } //+ //+ return output.ToString(); } //+ return leftover; }
//+ //- @Ctor -// public ClientHelper(ClientController controller) { controller.OutputMode(OutputMode.Manual); _controller = controller; }
public ClientManager() { CheckAndSave(); _controller = new ClientController(); _controller.Framework(Nalarium.Client.Framework.None); IncludeTracing = true; }
public static void RegisterToPage(System.Web.UI.Page page, ClientController controller) { RegisterToPage(page, new ClientManager(controller)); }
//+ //- @Ctor -// public ClientManager(ClientController controller) { if (_controller == null) { throw new InvalidOperationException("Controller may not be null"); } CheckAndSave(); _controller = controller; _controller.Framework(Nalarium.Client.Framework.None); IncludeTracing = true; }