Public Class CustomFileBrowserProviderWithFilter
Inherits FileSystemContentProvider
Public Sub New(ByVal context As HttpContext, ByVal searchPatterns As String(), ByVal viewPaths As String(), ByVal uploadPaths As String(), ByVal deletePaths As String(), ByVal selectedUrl As String, ByVal selectedItemTag As String)
MyBase.New(context, searchPatterns, viewPaths, uploadPaths, deletePaths, selectedUrl, selectedItemTag)
End Sub
Public Overloads Overrides Function ResolveDirectory(ByVal path As String) As DirectoryItem
Dim originalFolder As DirectoryItem = MyBase.ResolveDirectory(path)
Dim originalFiles As FileItem() = originalFolder.Files
Dim filteredFiles As New List(Of FileItem)()
' Filter the files
For Each originalFile As FileItem In originalFiles
If Not Me.IsFiltered(originalFile.Name) Then
filteredFiles.Add(originalFile)
End If
Next
Dim newFolder As New DirectoryItem(originalFolder.Name, originalFolder.Location, originalFolder.FullPath, originalFolder.Tag, originalFolder.Permissions, filteredFiles.ToArray(), originalFolder.Directories)
Return newFolder
End Function
Public Overloads Overrides Function ResolveRootDirectoryAsTree(ByVal path As String) As DirectoryItem
Dim originalFolder As DirectoryItem = MyBase.ResolveRootDirectoryAsTree(path)
Dim originalDirectories As DirectoryItem() = originalFolder.Directories
Dim filteredDirectories As New List(Of DirectoryItem)()
' Filter the folders
For Each originalDir As DirectoryItem In originalDirectories
If Not Me.IsFiltered(originalDir.Name) Then
filteredDirectories.Add(originalDir)
End If
Next
For N As Integer = 0 To filteredDirectories.Count - 1
filteredDirectories(N).Name = filteredDirectories(N).Name.Replace("_", " ").Split("$")(1)
Next
Dim newFolder As New DirectoryItem(originalFolder.Name, originalFolder.Location, originalFolder.FullPath, originalFolder.Tag, originalFolder.Permissions, originalFolder.Files, filteredDirectories.ToArray())
Return newFolder
End Function
Private Function IsFiltered(ByVal name As String) As Boolean
If name.ToLower().EndsWith(".vb") Or name.ToLower().EndsWith(".aspx") Then
Return True
End If
' else
Return False
End Function
End Class