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