public boolean _updateFolder(ActionRequest req, ActionResponse res,PortletConfig config, ActionForm form) throws Exception
{
Folder old = (Folder) req.getAttribute(WebKeys.FOLDER_EDIT);
Folder f = (Folder) req.getAttribute(WebKeys.FOLDER_EDIT);
Folder parentFolder = (Folder) req.getAttribute(WebKeys.FOLDER_PARENT);
Host parentHost = (Host) req.getAttribute(WebKeys.HOST_PARENT);
User user = _getUser(req);
PermissionAPI permAPI = APILocator.getPermissionAPI();
if(!InodeUtils.isSet(f.getInode()) && parentFolder != null && !permAPI.doesUserHavePermission(parentFolder, PermissionAPI.PERMISSION_CAN_ADD_CHILDREN, user)){
if(!InodeUtils.isSet(f.getInode()) && parentHost != null && !permAPI.doesUserHavePermission(parentHost, PermissionAPI.PERMISSION_CAN_ADD_CHILDREN, user)){
throw new DotSecurityException("You don't have permissions to add this folder");
}
} else if(InodeUtils.isSet(f.getInode()) && !permAPI.doesUserHavePermission(f, PermissionAPI.PERMISSION_EDIT, user)){
throw new DotSecurityException("You don't have permissions to edit this folder");
}
FolderForm folderForm = (FolderForm) form;
HibernateUtil.startTransaction();
try {
if (InodeUtils.isSet(f.getInode()) && !folderForm.getName().equalsIgnoreCase(f.getName())) {
if (!folderAPI.renameFolder(f,folderForm.getName(),user,false)) {
// For messages to be displayed on messages page
SessionMessages.add(req, "message", "message.folder.alreadyexists");
return false;
}
}
f.setName(folderForm.getName());
f.setTitle(folderForm.getTitle());
f.setFilesMasks(folderForm.getFilesMasks());
f.setShowOnMenu(folderForm.isShowOnMenu());
f.setSortOrder(folderForm.getSortOrder());
f.setOwner(folderForm.getOwner());
String defaultFileType = req.getParameter("defaultFileType");
if(!InodeUtils.isSet(defaultFileType)){
SessionMessages.add(req, "message", "message.folder.defaultfiletype.required");
return false;
}
Structure defaultStr = StructureCache.getStructureByInode(defaultFileType);
if(defaultStr==null || !InodeUtils.isSet(defaultStr.getInode())){
SessionMessages.add(req, "message", "message.folder.defaultfiletype.required");
return false;
}
f.setDefaultFileType(defaultFileType);
java.util.List<String> reservedFolderNames = new java.util.ArrayList<String>();
String[] reservedFolderNamesArray = Config.getStringArrayProperty("RESERVEDFOLDERNAMES");
for(String name:reservedFolderNamesArray){
reservedFolderNames.add(name.toUpperCase());
}
if (parentFolder == null && reservedFolderNames.contains(f.getName().toUpperCase())) {
// For messages to be displayed on messages page
SessionMessages.add(req, "message",
"message.folder.save.reservedName");
} else {
if(!InodeUtils.isSet(f.getInode())) {
// check if the new folder already exists
Identifier prevId = null;
if (parentFolder != null) {
String uri=APILocator.getIdentifierAPI().find(parentFolder).getPath()+ f.getName();
prevId = APILocator.getIdentifierAPI().find(parentHost, uri);
} else {
String uri="/" + f.getName();
prevId = APILocator.getIdentifierAPI().find(parentHost, uri);
}
if (InodeUtils.isSet(prevId.getInode())) {
// For messages to be displayed on messages page
SessionMessages.add(req, "message",
"message.folder.alreadyexists");
return false;
}
}
boolean previousShowMenu = ((Boolean) req
.getAttribute(WebKeys.FOLDER_SHOWMENU)).booleanValue();
if (parentFolder instanceof Folder){
if(f.getName().equalsIgnoreCase("admin")){
SessionMessages.add(req, "message",
"message.folder.admin.doesnotallow");
return false;
}
}
if(!InodeUtils.isSet(f.getInode())){
f.setOwner(_getUser(req).getUserId());
}
//set hostId to folder to persist in Identifier table.
f.setHostId(parentHost.getIdentifier());
final boolean isNew=!UtilMethods.isSet(f.getIdentifier());
if(isNew) {
Treeable parent;
if(UtilMethods.isSet(parentFolder))
parent=parentFolder;