Example #1
0
 public StyleQueueItem(IArea site, string styleTag, StyleRelativePosition position, string url, bool forceCombin)
 {
     Site        = site;
     StyleTag    = styleTag;
     Position    = position;
     Url         = url;
     ForceCombin = forceCombin;
 }
        /// <summary>
        /// 输出样式表
        /// </summary>
        /// <param name="writer">The writer.</param>
        /// <param name="position">The position.</param>
        protected virtual void RenderStyleSheets(HtmlTextWriter writer, StyleRelativePosition position)
        {
            Queue queue = Context.Items[styleKey] as Queue;

            if (queue != null && queue.Count > 0)
            {
                IEnumerator ie = queue.GetEnumerator();
                while (ie.MoveNext())
                {
                    StyleQueueItem si = (StyleQueueItem)ie.Current;
                    if (si.Position == position)
                    {
                        writer.WriteLine(si.StyleTag);
                    }
                }
            }
        }
        /// <summary>
        /// 添加样式表
        /// </summary>
        /// <param name="url">样式 URL.</param>
        /// <param name="media"> media 类型.</param>
        /// <param name="position">The position.</param>
        public void AddStyle(string url, HtmlLinkMedia media, StyleRelativePosition position)
        {
            if (GlobalSettings.IsNullOrEmpty(url))
            {
                return;
            }
            HttpContext context    = HttpContext.Current;
            Queue       styleQueue = context.Items[styleKey] as Queue;

            if (styleQueue == null)
            {
                styleQueue = new Queue();
                context.Items[styleKey] = styleQueue;
            }
            styleQueue.Enqueue(new StyleQueueItem(string.Format(styleFormat,
                                                                GlobalSettings.EnsureHtmlEncoded(url),
                                                                (media == HtmlLinkMedia.none?"":" media=\"" + media.ToString() + "\"")), position));
        }
Example #4
0
        public static void AddStyle(IArea site, string url, string media, HttpContext context, StyleRelativePosition position, bool enqueue)
        {
            Queue styleQueue = context.Items[styleKey] as Queue;

            if (styleQueue == null)
            {
                styleQueue = new Queue();
                context.Items[styleKey] = styleQueue;
            }
            styleQueue.Enqueue(new StyleQueueItem(site, string.Format(styleFormat, url, media), position, url, enqueue));
        }
Example #5
0
        protected virtual void RenderStyleSheets(HtmlTextWriter writer, StyleRelativePosition position)
        {
            Queue queue = Context.Items[styleKey] as Queue;

            if (queue == null || queue.Count == 0)
            {
                return;
            }

            Dictionary <IArea, Dictionary <string, List <string> > > di = new Dictionary <IArea, Dictionary <string, List <string> > >();

            foreach (StyleQueueItem si in queue)
            {
                if (si.Position != position)
                {
                    continue;
                }

                if (!si.Site.CombineCss || !si.ForceCombin)
                {
                    writer.Write(si.StyleTag);
                }
                else if (si.Site.CombineCss)
                {
                    string url   = si.Url;
                    int    index = url.LastIndexOf("/");
                    if (index == -1)
                    {
                        continue;
                    }

                    if (!di.ContainsKey(si.Site))
                    {
                        di[si.Site] = new Dictionary <string, List <string> >();
                    }

                    string path = url.Substring(0, index + 1);
                    if (!di[si.Site].ContainsKey(path))
                    {
                        di[si.Site][path] = new List <string>();
                    }

                    di[si.Site][path].Add(url);
                }
            }

            foreach (IArea s in di.Keys)
            {
                if (!s.CombineCss)
                {
                    continue;
                }

                foreach (string path in di[s].Keys)
                {
                    string dir = path;

                    int index = path.IndexOf(s.VirtualPath);
                    if (index != -1)
                    {
                        dir = path.Substring(index + s.VirtualPath.Length);

                        writer.Write(string.Format(styleFormat,
                                                   Utility.FormatCssUrl(s, string.Format("{2}_resc.aspx?f={0}&t=text/css&v={1}",
                                                                                         ServerUtil.UrlEncode(StringUtil.CollectionToCommaDelimitedString(di[s][path])),
                                                                                         AreaConfig.Instance.CssVersion,
                                                                                         dir)),
                                                   "all"));
                    }
                    else
                    {
                        if (dir == "/")
                        {
                            dir = AreaConfig.Instance.VirtualPath;// res.aspx
                        }
                        writer.Write(string.Format(styleFormat,
                                                   StringUtil.CombinUrl(s.CssHost, string.Format("{2}_resc.aspx?f={0}&t=text/css&v={1}",
                                                                                                 ServerUtil.UrlEncode(StringUtil.CollectionToCommaDelimitedString(di[s][path])),
                                                                                                 AreaConfig.Instance.CssVersion,
                                                                                                 dir)),
                                                   "all"));
                    }
                }
            }
        }
Example #6
0
 public static void AddStyle(IArea site, string url, string media, HttpContext context, StyleRelativePosition position, bool enqueue)
 {
     Queue styleQueue = context.Items[styleKey] as Queue;
     if (styleQueue == null)
     {
         styleQueue = new Queue();
         context.Items[styleKey] = styleQueue;
     }
     styleQueue.Enqueue(new StyleQueueItem(site, string.Format(styleFormat, url, media), position, url, enqueue));
 }
Example #7
0
        protected virtual void RenderStyleSheets(HtmlTextWriter writer, StyleRelativePosition position)
        {
            Queue queue = Context.Items[styleKey] as Queue;
            if (queue == null || queue.Count == 0)
                return;

            Dictionary<IArea, Dictionary<string, List<string>>> di = new Dictionary<IArea, Dictionary<string, List<string>>>();

            foreach (StyleQueueItem si in queue)
            {
                if (si.Position != position) continue;

                if (!si.Site.CombineCss || !si.ForceCombin)
                    writer.Write(si.StyleTag);
                else if (si.Site.CombineCss)
                {
                    string url = si.Url;
                    int index = url.LastIndexOf("/");
                    if (index == -1)
                        continue;

                    if (!di.ContainsKey(si.Site))
                        di[si.Site] = new Dictionary<string, List<string>>();

                    string path = url.Substring(0, index + 1);
                    if (!di[si.Site].ContainsKey(path))
                        di[si.Site][path] = new List<string>();

                    di[si.Site][path].Add(url);
                }
            }

            foreach (IArea s in di.Keys)
            {
                if (!s.CombineCss)
                    continue;

                foreach (string path in di[s].Keys)
                {
                    string dir = path;

                    int index = path.IndexOf(s.VirtualPath);
                    if (index != -1)
                    {
                        dir = path.Substring(index + s.VirtualPath.Length);

                        writer.Write(string.Format(styleFormat,
                                        Utility.FormatCssUrl(s, string.Format("{2}_resc.aspx?f={0}&t=text/css&v={1}",
                                                                ServerUtil.UrlEncode(StringUtil.CollectionToCommaDelimitedString(di[s][path])),
                                                                AreaConfig.Instance.CssVersion,
                                                                dir)),
                                        "all"));
                    }
                    else
                    {
                        if (dir == "/")
                            dir = AreaConfig.Instance.VirtualPath;// res.aspx

                        writer.Write(string.Format(styleFormat,
                                                  StringUtil.CombinUrl(s.CssHost, string.Format("{2}_resc.aspx?f={0}&t=text/css&v={1}",
                                                                ServerUtil.UrlEncode(StringUtil.CollectionToCommaDelimitedString(di[s][path])),
                                                                AreaConfig.Instance.CssVersion,
                                                                dir)),
                                                   "all"));
                    }
                }
            }
        }
Example #8
0
 public StyleQueueItem(IArea site, string styleTag, StyleRelativePosition position, string url, bool forceCombin)
 {
     Site = site;
     StyleTag = styleTag;
     Position = position;
     Url = url;
     ForceCombin = forceCombin;
 }
Example #9
0
 public StyleQueueItem(string styleTag, StyleRelativePosition position)
 {
     StyleTag = styleTag;
     Position = position;
 }