示例#1
0
        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));
        }
示例#2
0
        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);
        }
示例#3
0
        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()));
        }