private IEnumerable <IHtmlString> IncludeThemeStyles(Site site, string themeName, string baseUri = null) { if (this.PageContext.PageRequestContext.Site.EnableJquery) { yield return(Kooboo.Web.Mvc.WebResourceLoader.MvcExtensions.ExternalResources(this.Html, null, "jQuery-Styles", null, baseUri)); } string themeRuleBody; var styles = ThemeRuleParser.Parse(new Theme(site, themeName).LastVersion(), out themeRuleBody, baseUri); if (styles != null && styles.Count() > 0) { if (site.Mode == ReleaseMode.Debug) { foreach (var style in styles) { yield return(this.Html.Stylesheet(UrlUtility.ToHttpAbsolute(baseUri, style.VirtualPath))); } } else { yield return(this.Html.Stylesheet(this.PageContext.FrontUrl.SiteThemeUrl(baseUri, themeName).ToString())); } } yield return(new HtmlString(themeRuleBody)); }
public virtual ActionResult Theme(string siteName, string name) { var site = new Site(siteName).AsActual(); string cssHackBody; var styles = ThemeRuleParser.Parse(new Theme(site, name).LastVersion(), out cssHackBody); Output(CompressCss(styles), "text/css", 2592000, "*"); return(null); }
private IEnumerable <IHtmlString> IncludeThemeStyles(Site site, string themeName, string baseUri = null) { List <IHtmlString> htmlStrings = new List <IHtmlString>(); if (this.PageContext.PageRequestContext.Site.EnableJquery) { htmlStrings.Add(Kooboo.Web.Mvc.WebResourceLoader.MvcExtensions.ExternalResources(this.Html, null, "jQuery-Styles", null, baseUri)); } string themeRuleBody; var styles = ThemeRuleParser.Parse(new Theme(site, themeName).LastVersion(), out themeRuleBody, baseUri); if (styles != null && styles.Count() > 0) { if (site.Mode == ReleaseMode.Debug) { foreach (var style in styles) { var virtualPath = UrlUtility.ToHttpAbsolute(baseUri, style.VirtualPath); var dynamicCss = DynamicClientResourceFactory.Default.ResolveProvider(virtualPath); if (dynamicCss != null) { htmlStrings.Add(new HtmlString(dynamicCss.RegisterResource(virtualPath))); } else { htmlStrings.Add(this.Html.Stylesheet(virtualPath)); } } foreach (var item in DynamicClientResourceFactory.Default.ResolveAllProviders().Where(it => it.ResourceType == ResourceType.Stylesheet)) { htmlStrings.Add(new HtmlString(item.RegisterClientParser())); } } else { htmlStrings.Add(this.Html.Stylesheet(this.PageContext.FrontUrl.SiteThemeUrl(baseUri, themeName).ToString())); } } htmlStrings.Add(new HtmlString(themeRuleBody)); return(htmlStrings.Distinct(new IHtmlStringComparer())); }