private static void BuildViewsLevel(DirectoryInfo area, Node areaNode) { DirectoryInfo[] folders = new DirectoryInfo(area.FullName + "\\Views").GetDirectories(); folders = ExamplesModel.SortFolders(area, folders); foreach (DirectoryInfo folder in folders) { if ((folder.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden || excludeList.Contains(folder.Name) || folder.Name.StartsWith("_")) { continue; } ExampleConfig cfg = new ExampleConfig(folder.FullName + "\\config.xml"); string iconCls = string.IsNullOrEmpty(cfg.IconCls) ? "" : cfg.IconCls; Node node = new Node(); string folderName = folder.Name.Replace("_", " "); node.Text = folderName; if (ExamplesModel.IsNew(folder.FullName)) { node.CustomAttributes.Add(new ConfigItem("isNew", "true", ParameterMode.Raw)); } node.IconCls = iconCls; string url = string.Concat(ExamplesModel.ApplicationRoot, "/", area.Name, "/", folder.Name, "/"); node.NodeID = "e" + Math.Abs(url.ToLower().GetHashCode()); //node.Href = url; node.CustomAttributes.Add(new ConfigItem("url", url)); node.Leaf = true; node.CustomAttributes.Add(new { tags = cfg.Tags.Select(item => item.ToLower()) }); areaNode.Children.Add(node); } }
private static NodeCollection BuildAreasLevel() { string path = HttpContext.Current.Server.MapPath(ExamplesModel.ExamplesRoot); DirectoryInfo root = new DirectoryInfo(path); DirectoryInfo[] folders = root.GetDirectories(); folders = ExamplesModel.SortFolders(root, folders); NodeCollection nodes = new NodeCollection(false); var staticIcons = new StaticNodeIcon(path); foreach (DirectoryInfo folder in folders) { if ((folder.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden || excludeList.Contains(folder.Name) || folder.Name.StartsWith("_")) { continue; } ExampleConfig cfg = new ExampleConfig(folder.FullName + "\\config.xml"); string iconCls = string.IsNullOrEmpty(cfg.IconCls) ? "" : cfg.IconCls; Node node = null; var index = folder.Name.IndexOf('_'); if (cfg.MainGroup || index < 0) { node = new Node(); node.NodeID = BaseControl.GenerateID(); node.Text = folder.Name.Replace("_", " "); nodes.Add(node); if (String.IsNullOrWhiteSpace(iconCls)) { staticIcons.TryGetIconCLS(out iconCls, folder.Name); } node.IconCls = iconCls; if (ExamplesModel.IsNew(folder.FullName)) { node.CustomAttributes.Add(new ConfigItem("isNew", "true", ParameterMode.Raw)); } } else { string otherIconCls; var mainGroupName = folder.Name.Substring(0, index); node = nodes.FirstOrDefault(n => n.Text == mainGroupName); if (node == null) { node = new Node(); node.NodeID = BaseControl.GenerateID(); node.Text = mainGroupName; nodes.Add(node); } if (staticIcons.TryGetIconCLS(out otherIconCls, mainGroupName)) { node.IconCls = otherIconCls; } if (ExamplesModel.IsNew(folder.FullName) && !node.CustomAttributes.Contains("isNew")) { node.CustomAttributes.Add(new ConfigItem("isNew", "true", ParameterMode.Raw)); } var groupNode = new Node(); var subGroupNodeName = folder.Name.Substring(index + 1); groupNode.NodeID = BaseControl.GenerateID(); groupNode.Text = subGroupNodeName.Replace("_", " "); if (iconCls.IsNotEmpty()) { groupNode.IconCls = iconCls; } else if (staticIcons.TryGetIconCLS(out otherIconCls, mainGroupName, subGroupNodeName)) { groupNode.IconCls = otherIconCls; } if (ExamplesModel.IsNew(folder.FullName) && !groupNode.CustomAttributes.Contains("isNew")) { groupNode.CustomAttributes.Add(new ConfigItem("isNew", "true", ParameterMode.Raw)); } node.Children.Add(groupNode); node = groupNode; } ExamplesModel.BuildViewsLevel(folder, node); } return(nodes); }