public DirectoryListing(String path, bool includeSubDirectories) { this.Path = path; if (this.Path != String.Empty) { this.Title = System.IO.Path.GetFileNameWithoutExtension(this.Path); foreach (String filePath in System.IO.Directory.EnumerateFiles(this.Path)) { FileListing listing = new FileListing(filePath); _Listings.Add(listing); _Listings = _Listings.OrderBy(o => o.Title).ToList(); } if (includeSubDirectories) { foreach (String directoryPath in System.IO.Directory.EnumerateDirectories(this.Path)) { DirectoryListing listing = new DirectoryListing(directoryPath, false); _Listings.Add(listing); } } } }
// TODO: Improve refactor _Listings and GetListings() public IListing[] GetListings() { List <IListing> sortedListings = new List <IListing>(); foreach (var listing in this.listings) { sortedListings.Add(listing); if (listing is DirectoryListing) { DirectoryListing directory = listing as DirectoryListing; foreach (IListing subListing in directory.GetListings()) { if (subListing is FileListing) { sortedListings.Add(subListing); } } } } return(sortedListings.ToArray()); }
protected override void RenderContents(HtmlTextWriter output) { _directoryListing = new DirectoryListing(_serverPath); foreach (IListing listing in _directoryListing.GetListings()) { if (System.IO.Path.GetFileName(listing.Title).ToUpper() != "THUMBS") { if (listing is DirectoryListing) { DirectoryListing dl = listing as DirectoryListing; if (dl.FileCount > 0 ) { if (_directoryTitle != String.Empty && this.WriteBreak == BoolEnum.Yes.ToString()) output.WriteBreak(); _directoryTitle = listing.Title; if (!String.IsNullOrEmpty(this.HeadingClass)) { output.AddAttribute(HtmlTextWriterAttribute.Class, this.HeadingClass); } GenerateFormattedHeading(output, listing); if (this.WriteBreak == BoolEnum.Yes.ToString()) { output.WriteBreak(); } output.WriteLine(); } } else { if (_directoryTitle != String.Empty) _relativePath = VirtualPathUtility.AppendTrailingSlash(this.Path) + VirtualPathUtility.AppendTrailingSlash(_directoryTitle) + System.IO.Path.GetFileName(listing.Path); else _relativePath = VirtualPathUtility.AppendTrailingSlash(this.Path) + System.IO.Path.GetFileName(listing.Path); if (!String.IsNullOrEmpty(this.ListingClass)) { output.AddAttribute(HtmlTextWriterAttribute.Class, this.ListingClass); } GenerateFormattedListing(output, listing); if (this.WriteBreak.ToString() == BoolEnum.Yes.ToString()) { output.WriteBreak(); } output.WriteLine(); } } } }