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