return result;
} else {
String parentId;
if(!folder.getInode().equals(FolderAPI.SYSTEM_FOLDER)) {
Identifier ident=APILocator.getIdentifierAPI().find(folder);
parentId=ident.getParentPath().equals("/") ?
FolderAPI.SYSTEM_FOLDER : fAPI.findFolderByPath(ident.getParentPath(), host, user, false).getInode();
} else {
parentId=null;
}
result=new NavResult(parentId, host.getIdentifier(),folder.getInode());
Identifier ident=APILocator.getIdentifierAPI().find(folder);
result.setHref(ident.getURI());
result.setTitle(folder.getTitle());
result.setOrder(folder.getSortOrder());
result.setType("folder");
result.setPermissionId(folder.getPermissionId());
List<NavResult> children=new ArrayList<NavResult>();
List<String> folderIds=new ArrayList<String>();
result.setChildren(children);
result.setChildrenFolderIds(folderIds);
List menuItems;
if(path.equals("/"))
menuItems = fAPI.findSubFolders(host, true);
else
menuItems = fAPI.findMenuItems(folder, user, true);
for(Object item : menuItems) {
if(item instanceof Folder) {
Folder itemFolder=(Folder)item;
ident=APILocator.getIdentifierAPI().find(itemFolder);
NavResult nav=new NavResult(folder.getInode(),host.getIdentifier(),itemFolder.getInode());
nav.setTitle(itemFolder.getTitle());
nav.setHref(ident.getURI());
nav.setOrder(itemFolder.getSortOrder());
nav.setType("folder");
nav.setPermissionId(itemFolder.getPermissionId());
// it will load lazily its children
folderIds.add(itemFolder.getInode());
children.add(nav);
}
else if(item instanceof HTMLPage) {
final String httpProtocol = "http://";
final String httpsProtocol = "https://";
HTMLPage itemPage=(HTMLPage)item;
ident=APILocator.getIdentifierAPI().find(itemPage);
HTMLPage page = null;
page = APILocator.getHTMLPageAPI().loadLivePageById(ident.getInode(), APILocator.getUserAPI().getSystemUser(), false);
String redirectUri = page.getRedirect();
NavResult nav=new NavResult(folder.getInode(),host.getIdentifier());
nav.setTitle(itemPage.getTitle());
if(UtilMethods.isSet(redirectUri) && !redirectUri.startsWith("/")){
if(redirectUri.startsWith(httpsProtocol) || redirectUri.startsWith(httpProtocol)){
nav.setHref(redirectUri);
}else{
if(page.isHttpsRequired())
nav.setHref(httpsProtocol+redirectUri);
else
nav.setHref(httpProtocol+redirectUri);
}
}else{
nav.setHref(ident.getURI());
}
nav.setOrder(itemPage.getSortOrder());
nav.setType("htmlpage");
nav.setPermissionId(itemPage.getPermissionId());
children.add(nav);
}
else if(item instanceof Link) {
Link itemLink=(Link)item;
NavResult nav=new NavResult(folder.getInode(),host.getIdentifier());
if(itemLink.getLinkType().equals(LinkType.CODE.toString()) && LinkType.CODE.toString() !=null ) {
nav.setCodeLink(itemLink.getLinkCode());
}
else {
nav.setHref(itemLink.getWorkingURL());
}
nav.setTitle(itemLink.getTitle());
nav.setOrder(itemLink.getSortOrder());
nav.setType("link");
nav.setTarget(itemLink.getTarget());
nav.setPermissionId(itemLink.getPermissionId());
children.add(nav);
}
else if(item instanceof IFileAsset) {
IFileAsset itemFile=(IFileAsset)item;
ident=APILocator.getIdentifierAPI().find(itemFile.getPermissionId());
NavResult nav=new NavResult(folder.getInode(),host.getIdentifier());
nav.setTitle(itemFile.getFriendlyName());
nav.setHref(ident.getURI());
nav.setOrder(itemFile.getMenuOrder());
nav.setType("file");
nav.setPermissionId(itemFile.getPermissionId());
children.add(nav);
}