I'm using the documentation and online source to try and build my own CustomDBProvider and CustomContentProvider. I'm running into some issues and was hoping to get some help. My goal is to have some "top-level" folders which will dynamically query a third-party system (via a COM SDK) and display folders and/or documents. One of the top-level folders might be called "My Documents" and should only show documents. Another might be called "My folders" and could show folders (which might in-turn have sub-folders). Another example would be "My Labels" which might contain either documents or folders. I"m using some static pathing so that I know how to execute different commands in the third party system. I can't use DataTables because I need to load the information on-demand.
For now I just want things to be displayed in the UI. I've made everything read-only. I'm not worried about uploading at this point.
I've gotten the "My Documents" to work perfectly. But I can't get "My Containers" to work. It executes the code and loads the directories into the function, but nothing gets displayed. Any help would be greatly appreciated!
For now I just want things to be displayed in the UI. I've made everything read-only. I'm not worried about uploading at this point.
I've gotten the "My Documents" to work perfectly. But I can't get "My Containers" to work. It executes the code and loads the directories into the function, but nothing gets displayed. Any help would be greatly appreciated!
public override DirectoryItem ResolveRootDirectoryAsTree(string path){ DirectoryItem directory = null; if (path.Equals("ROOT/TE")) { directory = new DirectoryItem("File Explorer", "ROOT/TE", "ROOT/TE", "ROOT/TE", PathPermissions.Read, null, null); List<DirectoryItem> subDirs = new List<DirectoryItem>(); subDirs.Add(new DirectoryItem("My Labels", string.Empty, "ROOT/TE/TL-1", "TL-1", PathPermissions.Read, null, null)); subDirs.Add(new DirectoryItem("Recent Documents", string.Empty, "ROOT/TE/TL-2", "TL-2", PathPermissions.Read, null, null)); subDirs.Add(new DirectoryItem("Recent Folders", string.Empty, "ROOT/TE/TL-3", "TL-3", PathPermissions.Read, null, null)); directory.Directories = subDirs.ToArray(); if (directory.Directories != null) { foreach (DirectoryItem dir in directory.Directories) { dir.Permissions = GetPermissions(path); } } return directory; } else { return directory; } }public override DirectoryItem ResolveDirectory(string path){ DirectoryItem directory = dataServer.GetDirectoryItem(path, true, true); if (directory == null) return null; return directory;}public DirectoryItem GetDirectoryItem(string path, bool bIncludeSubfolders, bool bIncludeFiles){ DirectoryItem diDirectory = null; MyObject item = this.GetObjectFromPath(path); if (item != null ) { if (item.sType.Equals("TL")) { diDirectory = LoadSubNode(item, path, bIncludeSubfolders, bIncludeFiles); } else if (item.sType.Equals("C")) { //diDirectory = CreateDirectoryItem(item, true); } else if (item.sType.Equals("FP")) { //diDirectory = CreateDirectoryItem(item, true); } else if (item.sType.Equals("UL")) { //diDirectory = CreateDirectoryItem(item, true); } } return diDirectory; //return (item != null && item.sType.Equals("C")) ? this.CreateDirectoryItem(item, includeSubfolders) : null;}private DirectoryItem LoadSubNode(MyObject ktoItem, string sPath, bool bIncludeSubFolders, bool bIncludeFiles) { DirectoryItem diDirectory = null; if (ktoItem.sUri.Equals("2")) { diDirectory = GetTopLevel_RecentDocuments(sPath, bIncludeFiles); } else if (ktoItem.sUri.Equals("3")) { diDirectory = GetTopLevel_RecentContainers(sPath, bIncludeSubFolders, bIncludeFiles); } return diDirectory;}private DirectoryItem GetTopLevel_RecentDocuments(string sPath, bool bIncludeFiles) { DirectoryItem diDirectory = new DirectoryItem("Recent Documents", sPath, sPath, "TL-2", PathPermissions.Read, null, null); if (bIncludeFiles) { diDirectory.Files = LoadRecentDocuments(sPath); } return diDirectory;}private DirectoryItem GetTopLevel_RecentContainers(string sPath, bool bIncludeSubFolders, bool bIncludeFiles){ DirectoryItem diDirectory = null; diDirectory = new DirectoryItem("Recent Containers", sPath, sPath, "TL-3", PathPermissions.Read, null, null); SomeSDK.Records tRecords = tDatabase.MakeRecords(); tRecords.SearchString = "myContainers"; SomeSDK.Record tRecord = null; List<DirectoryItem> diFolders = new List<DirectoryItem>(); while ((tRecord = tRecords.Next()) != null) { string sItemPath = GetValidPath(sPath) + "C-" + tRecord.Uri.ToString(); DirectoryItem diSubItem = new DirectoryItem(tRecord.Title + " (" + tRecord.Number + ")", sItemPath, sItemPath, sItemPath, PathPermissions.Read, null, null); diSubItem.Files = (new List<FileItem>()).ToArray(); diSubItem.Directories = (new List<DirectoryItem>()).ToArray(); //diFolders.Add(new DirectoryItem(tRecord.Title + " (" + tRecord.Number + ")", sItemPath, sItemPath, sItemPath, PathPermissions.Read, null, null)); diFolders.Add(diSubItem); //diFolders.Add(new DirectoryItem("test", string.Empty, sPath + "/1", "1", PathPermissions.Read, null, null)); } diDirectory.Directories = diFolders.ToArray(); List<FileItem> fiDocuments = new List<FileItem>(); diDirectory.Files = fiDocuments.ToArray(); return diDirectory;}private FileItem[] LoadRecentDocuments(string sPath){ SomeSDK.Records tRecords = tDatabase.MakeRecords(); tRecords.SearchString = "myDocuments"; SomeSDK.Record tRecord = null; List<FileItem> fiDocuments = new List<FileItem>(); while ((tRecord = tRecords.Next()) != null) { string sItemPath = GetValidPath(sPath) + "D-" + tRecord.Uri.ToString(); fiDocuments.Add(new FileItem(tRecord.Title + " (" + tRecord.Number + ")", tRecord.Extension, tRecord.DocumentSize, sItemPath, sItemPath, tRecord.Number, PathPermissions.Read)); } return fiDocuments.ToArray();}private string GetValidPath(string sInputPath){ if (!sInputPath.EndsWith("/")) { return sInputPath + "/"; } else { return sInputPath; }}