Exemple #1
0
 private void ProcessChild(HtmlNodeCollection childNodes, List <LayoutMarkUp> child)
 {
     if (childNodes != null && childNodes.Count > 0)
     {
         foreach (HtmlNode item in childNodes)
         {
             if (item.Name.ToLower() != "#text" && item.Name.ToLower() != "#comment" && item.Name.ToLower() != "#comments")
             {
                 LayoutMarkUp markUp = new LayoutMarkUp
                 {
                     tag  = item.Name,
                     attr = new Dictionary <string, object>()
                 };
                 foreach (HtmlAttribute attr in item.Attributes)
                 {
                     if (attr.Name.ToLower() == "class")
                     {
                         List <string> values = attr.Value.Split(' ').ToList();
                         markUp.attr.Add(attr.Name, values);
                     }
                     else
                     {
                         markUp.attr.Add(attr.Name, attr.Value);
                     }
                 }
                 markUp.text  = GetMarkUpText(item.ChildNodes);
                 markUp.child = new List <LayoutMarkUp>();
                 ProcessChild(item.ChildNodes, markUp.child);
                 child.Add(markUp);
             }
         }
     }
 }
Exemple #2
0
        private string GetLayoutMarkup(string TemplatePath)
        {
            string result = string.Empty;

            if (!string.IsNullOrEmpty(TemplatePath))
            {
                TemplatePath = TemplatePath.Split('?')[0].TrimStart('/').ToLower();
                if (TemplatePath.Contains("desktopmodules"))
                {
                    var splitarr = TemplatePath.Split(new string[] { "desktopmodules" }, StringSplitOptions.None);
                    if (splitarr.Length > 1)
                    {
                        TemplatePath = "desktopmodules" + splitarr[1];
                    }
                    else
                    {
                        TemplatePath = "desktopmodules" + splitarr[0];
                    }
                }
                else if (TemplatePath.Contains("portals"))
                {
                    var splitarr = TemplatePath.Split(new string[] { "portals" }, StringSplitOptions.None);
                    if (splitarr.Length > 1)
                    {
                        TemplatePath = "portals" + splitarr[1];
                    }
                    else
                    {
                        TemplatePath = "portals" + splitarr[0];
                    }
                }
                if (!TemplatePath.StartsWith("~"))
                {
                    TemplatePath = HttpContext.Current.Server.MapPath(VirtualPathUtility.ToAbsolute("~/" + TemplatePath));
                }
                else
                {
                    TemplatePath = HttpContext.Current.Server.MapPath(TemplatePath);
                }
                if (File.Exists(TemplatePath))
                {
                    result = File.ReadAllText(TemplatePath);
                    if (!string.IsNullOrEmpty(result))
                    {
                        LayoutMarkUp markUp = new LayoutMarkUp();
                        HtmlNode.ElementsFlags["option"] = HtmlElementFlag.Closed;
                        HtmlDocument html = new HtmlDocument();
                        html.LoadHtml(result);
                        var query = html.DocumentNode.Descendants("uiengine");
                        foreach (var item in query.ToList())
                        {
                            markUp.tag  = item.Name;
                            markUp.attr = new Dictionary <string, object>();
                            foreach (var attr in item.Attributes)
                            {
                                if (attr.Name.ToLower() == "class")
                                {
                                    List <string> values = attr.Value.Split(' ').ToList();
                                    markUp.attr.Add(attr.Name, values);
                                }
                                else
                                {
                                    markUp.attr.Add(attr.Name, attr.Value);
                                }
                            }
                            markUp.text  = GetMarkUpText(item.ChildNodes);
                            markUp.child = new List <LayoutMarkUp>();
                            ProcessChild(item.ChildNodes, markUp.child);
                        }
                        result = DotNetNuke.Common.Utilities.Json.Serialize(markUp);
                    }
                }
            }
            return(result);
        }