private static DirectoryInfo[] SortFolders(DirectoryInfo root, DirectoryInfo[] folders) { string cfgPath = root.FullName + "\\config.xml"; if (File.Exists(root.FullName + "\\config.xml")) { ExampleConfig rootCfg = new ExampleConfig(cfgPath); if (rootCfg.OrderFolders.Count > 0) { List<DirectoryInfo> list = new List<DirectoryInfo>(folders); int pasteIndex = 0; foreach (string orderFolder in rootCfg.OrderFolders) { int dIndex = 0; for (int ind = 0; ind < list.Count; ind++) { if (list[ind].Name.ToLower() == orderFolder) { dIndex = ind; } } if (dIndex > 0) { DirectoryInfo di = list[dIndex]; list.RemoveAt(dIndex); list.Insert(pasteIndex++, di); } } folders = list.ToArray(); } } return folders; }
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.Leaf = true; areaNode.Children.Add(node); } }
private static bool IsNew(string folder) { if (ExamplesModel.rootCfg == null) { ExamplesModel.rootCfg = new ExampleConfig(new DirectoryInfo(HttpContext.Current.Server.MapPath(ExamplesModel.ExamplesRoot)) + "\\config.xml"); } foreach (string newFolder in rootCfg.NewFolders) { if (string.Concat(HttpContext.Current.Server.MapPath(ExamplesModel.ExamplesRoot), newFolder).StartsWith(folder, StringComparison.CurrentCultureIgnoreCase)) { return true; } } return false; }
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); 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); node.IconCls = iconCls; if (ExamplesModel.IsNew(folder.FullName)) { node.CustomAttributes.Add(new ConfigItem("isNew", "true", ParameterMode.Raw)); } } else { 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 (iconCls.IsNotEmpty()) { node.IconCls = iconCls; } if (ExamplesModel.IsNew(folder.FullName) && !node.CustomAttributes.Contains("isNew")) { node.CustomAttributes.Add(new ConfigItem("isNew", "true", ParameterMode.Raw)); } var groupNode = new Node(); groupNode.NodeID = BaseControl.GenerateID(); groupNode.Text = folder.Name.Substring(index + 1).Replace("_", " "); 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; }