Esempio n. 1
0
        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;
            }
        }
Esempio n. 2
0
        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);
            }
        }