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); } } } }
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); }