public static MvcHtmlString WriteScripts(this HtmlHelper htmlHelper, string area = null) { const ScriptType type = ScriptType.JavaScript; var catAppSetting = ConfigurationManager.AppSettings["SJ.Concatenate"]; bool concatenate = catAppSetting != null && bool.Parse(catAppSetting); if (concatenate) { var urlHelper = new UrlHelper(htmlHelper.ViewContext.RequestContext); string url = urlHelper.Content("~/ScriptManager/" + type.ToString() + "/" + area); var builder = new TagBuilder("script"); builder.Attributes.Add("type", "text/javascript"); builder.Attributes.Add("src", url); return new MvcHtmlString(builder.ToString(TagRenderMode.Normal)); } else { var manager = new ScriptManager(); string output = ""; foreach (var item in manager.ListForType(type).ScriptsForArea(area)) { var builder = new TagBuilder("script"); builder.Attributes.Add("type", "text/javascript"); if (!item.IsInline) { builder.Attributes.Add("src", item.Url); } else { builder.InnerHtml = String.Format("/* {0} */\n", item.UniqueKey) + item.Source; } output += new MvcHtmlString(builder.ToString(TagRenderMode.Normal)) + "\n"; } return new MvcHtmlString(output); } }
public void ScriptManager_ListForType_Creates_New_ScriptFileList_Test() { var cacheManager = new Mock<ICacheManager>(); var contextAccessor = new Mock<IHttpContextAccessor>(); var list = new Mock<IScriptFileList>(); var items = new Dictionary<string, object>(); items.Add("__sm__Stylesheet", list.Object); var context = new Mock<HttpContextBase> { DefaultValue = DefaultValue.Mock }; contextAccessor.Setup(c => c.Current()).Returns(context.Object); context.SetupGet(c => c.Items).Returns(items); var target = new ScriptManager(cacheManager.Object, contextAccessor.Object); var type = ScriptType.JavaScript; IScriptFileList actual; actual = target.ListForType(type); Assert.IsNotNull(actual); }
public void ScriptManager_ListForType_Returns_Existing_ScriptFileList_Test() { var cacheManager = new Mock<ICacheManager>(); var contextAccessor = new Mock<IHttpContextAccessor>(); var list = new Mock<IScriptFileList>(); var context = new Mock<HttpContextBase> { DefaultValue = DefaultValue.Mock }; contextAccessor.Setup(c => c.Current()).Returns(context.Object); context.SetupGet(c => c.Application["__sm__JavaScript"]).Returns(() => list.Object); var target = new ScriptManager(cacheManager.Object, contextAccessor.Object); context.Object.Items["__sm__JavaScript"] = list.Object; var type = ScriptType.JavaScript; IScriptFileList actual; actual = target.ListForType(type); Assert.IsNotNull(actual); Assert.AreSame(list.Object, actual); }
public static MvcHtmlString WriteStyles(this HtmlHelper htmlHelper, string area = null) { var type = ScriptType.Stylesheet; var catAppSetting = ConfigurationManager.AppSettings["SJ.Concatenate"]; bool concatenate = catAppSetting != null && bool.Parse(catAppSetting); if (concatenate) { var urlHelper = new UrlHelper(htmlHelper.ViewContext.RequestContext); string url = urlHelper.Content("~/ScriptManager/" + type.ToString() + "/" + area); var builder = new TagBuilder("link"); builder.Attributes.Add("type", "text/css"); builder.Attributes.Add("rel", "stylesheet"); builder.Attributes.Add("href", url); return new MvcHtmlString(builder.ToString(TagRenderMode.SelfClosing)); } else { var manager = new ScriptManager(); string output = ""; foreach (var item in manager.ListForType(type).ScriptsForArea(area)) { if (!item.IsInline) { var builder = new TagBuilder("link"); builder.Attributes.Add("type", "text/css"); builder.Attributes.Add("rel", "stylesheet"); builder.Attributes.Add("href", item.Url); output += builder.ToString(TagRenderMode.SelfClosing) + "\n"; } else { var builder = new TagBuilder("style"); builder.Attributes.Add("type", "text/css"); builder.InnerHtml = item.Source; output += builder.ToString(TagRenderMode.Normal) + "\n"; } } return new MvcHtmlString(output); } }