private void RegisterJavascript(ResourceRequiredContext context, string path, Dictionary <string, string> attributes) { switch (context.Settings.Location) { case ResourceLocation.Foot: this.RegisterFootScript(new ScriptEntry() { Src = path, Type = "text/javascript", Name = context.Resource.Name, Dependencies = context.Resource.Dependencies?.ToList(), IsAMD = context.Resource.IsAMD }.SetAttributes(attributes)); break; case ResourceLocation.Head: this.RegisterHeadScript(new ScriptEntry() { Src = path, Type = "text/javascript", Name = context.Resource.Name, Dependencies = context.Resource.Dependencies?.ToList(), IsAMD = context.Resource.IsAMD }.SetAttributes(attributes)); break; default: this.RegisterDisplayNonoScript(new ScriptEntry() { Src = path, Type = "text/javascript", Name = context.Resource.Name, Dependencies = context.Resource.Dependencies?.ToList(), IsAMD = context.Resource.IsAMD }.SetAttributes(attributes)); break; } }
public void WriteResources() { var defaultSettings = new RequireSettings { DebugMode = _setttingManager.GetSettingValue(typeof(DebugState).Name) == DebugState.Debug.ToString(), CdnMode = false, Culture = ""//_workContext.Value.CurrentCulture, }; var httpContext = HttpContext.Current; var appPath = httpContext == null || httpContext.Request == null ? null : httpContext.Request.ApplicationPath; var requiredResources = this.BuildRequiredResources("script"); requiredResources?.AddRange(this.BuildRequiredResources("stylesheet")); requiredResources?.AddRange(this.BuildRequiredResources("template")); foreach (var context in requiredResources) { var path = context.GetResourceUrl(defaultSettings, appPath); var condition = context.Settings.Condition; var attributes = context.Settings.HasAttributes ? context.Settings.Attributes : null; if (context.Resource.Type == "script") { var multLanguageResource = _manifests.SelectMany(m => m.GetResources("script").Values) .Where(rName => rName.Name == LocalizeNamed.GetName(context.Resource.Name, _languageManager.CurrentLanguage.Name)) .ToList(); if (multLanguageResource.Count > 0) { foreach (var languageResource in multLanguageResource) { var languageContext = new ResourceRequiredContext() { Resource = languageResource, Settings = context.Settings.AutoMapTo <RequireSettings>() }; RegisterJavascript(languageContext, languageContext.GetResourceUrl(defaultSettings, appPath), attributes); } var resources = multLanguageResource.Select(r => r.Name); context.Resource.Dependencies = context.Resource.Dependencies != null? context.Resource.Dependencies.Concat(resources) : resources; } RegisterJavascript(context, path, attributes); } else if (context.Resource.Type == "stylesheet") { this.RegisterLink(new LinkEntry() { Rel = "stylesheet", Type = "text/css", Href = path, }.SetAttributes(attributes)); } else if (context.Resource.Type == "template") { this.Templates.Add(path); } // IHtmlString result; // if (resourceType == "stylesheet") { // result = Display.Style(Url: path, Condition: condition, Resource: context.Resource, TagAttributes: attributes); // } // else if (resourceType == "script") { // result = Display.Script(Url: path, Condition: condition, Resource: context.Resource, TagAttributes: attributes); // } // else { // result = Display.Resource(Url: path, Condition: condition, Resource: context.Resource, TagAttributes: attributes); // } // Output.Write(result); } }