Index: lams_central/src/java/org/lamsfoundation/lams/workspace/service/IWorkspaceManagementService.java =================================================================== diff -u -r18ee903dfc2e0bd139881af731e60abcb0aac27c -r24e81813a7f7ce5a240c6bf7f4e3b70d55ce2f56 --- lams_central/src/java/org/lamsfoundation/lams/workspace/service/IWorkspaceManagementService.java (.../IWorkspaceManagementService.java) (revision 18ee903dfc2e0bd139881af731e60abcb0aac27c) +++ lams_central/src/java/org/lamsfoundation/lams/workspace/service/IWorkspaceManagementService.java (.../IWorkspaceManagementService.java) (revision 24e81813a7f7ce5a240c6bf7f4e3b70d55ce2f56) @@ -304,6 +304,33 @@ public String getAccessibleWorkspaceFolders(Integer userID)throws IOException; /** + * This method returns a list of workspace folders for which + * the user has "write" access. A user can write/save his content + * in a folder in one of the following cases + *
    + *
  1. He is the OWNER of the given workspace folder
  2. + *
  3. He is a MEMBER of the organisation to which the + * folder belongs and he has one or all of the follwing + * roles (SYSADMIN. ADMIN, AUTHOR, STAFF, TEACHER)
  4. + *
+ * + * The information returned is categorized under 3 main heads + * + * + * This is a modified version which returns FolderContentDTO, rather than UserAccessFoldersDTO + * + * @param userID The user_id of the user for whom the + * folders have to fetched + * @return String The required information in WDDX format + * @throws IOException + */ + public String getAccessibleWorkspaceFoldersNew(Integer userID)throws IOException; + + /** * This method moves a Learning Design from one workspace * folder to another.But before it does that it checks whether * the given User is authorized to do so. Index: lams_central/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java =================================================================== diff -u -rc382154c8eff02f91720683d45613d47a9fc553f -r24e81813a7f7ce5a240c6bf7f4e3b70d55ce2f56 --- lams_central/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java (.../WorkspaceManagementService.java) (revision c382154c8eff02f91720683d45613d47a9fc553f) +++ lams_central/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java (.../WorkspaceManagementService.java) (revision 24e81813a7f7ce5a240c6bf7f4e3b70d55ce2f56) @@ -1037,7 +1037,54 @@ return flashMessage.serializeMessage(); } + /** + * (non-Javadoc) + * @see org.lamsfoundation.lams.workspace.service.IWorkspaceManagementService#getAccessibleWorkspaceFolders(java.lang.Integer) + */ + public String getAccessibleWorkspaceFoldersNew(Integer userID) throws IOException { + User user = userDAO.getUserById(userID); + Hashtable table = new Hashtable(); + Vector workspaces = new Vector(); + + if (user != null) { + //add the user's own folder to the list + WorkspaceFolder privateFolder = user.getWorkspace().getRootFolder(); + Integer permissions = getPermissions(privateFolder,user); + table.put("PRIVATE", new FolderContentDTO(privateFolder, permissions)); + + // Get a list of organisations of which the given user is a member + List userMemberships = userOrganisationDAO.getUserOrganisationsByUser(user); + if (userMemberships != null) { + Iterator memberships = userMemberships.iterator(); + while (memberships.hasNext()) { + UserOrganisation member = (UserOrganisation) memberships.next(); + // Get a list of roles that the user has in this organisation + Set roles = member.getUserOrganisationRoles(); + + /*Check if the user has write access, which is available + * only if the user has an AUTHOR, TEACHER or STAFF role. If + * he has acess add that folder to the list. + */ + if (hasWriteAccess(roles)) { + WorkspaceFolder orgFolder = member.getOrganisation().getWorkspace().getRootFolder(); + workspaces.add(new FolderContentDTO(orgFolder,getPermissions(orgFolder,user))); + } + } + table.put("ORGANISATIONS", workspaces); + flashMessage = new FlashMessage("getAccessibleWorkspaceFolders", table); + }else + flashMessage = new FlashMessage("getAccessibleWorkspaceFolders", + "User with user_id of: " + userID + + " is not a member of any organisation", + FlashMessage.ERROR); + } else + flashMessage = FlashMessage.getNoSuchUserExists("getAccessibleWorkspaceFolders", userID); + + return flashMessage.serializeMessage(); + } + + /** * This a utility method that checks whether user has write access. He can * save his contents to a folder only if he is an AUTHOR,TEACHER or STAFF * Index: lams_central/src/java/org/lamsfoundation/lams/workspace/web/WorkspaceAction.java =================================================================== diff -u -r18ee903dfc2e0bd139881af731e60abcb0aac27c -r24e81813a7f7ce5a240c6bf7f4e3b70d55ce2f56 --- lams_central/src/java/org/lamsfoundation/lams/workspace/web/WorkspaceAction.java (.../WorkspaceAction.java) (revision 18ee903dfc2e0bd139881af731e60abcb0aac27c) +++ lams_central/src/java/org/lamsfoundation/lams/workspace/web/WorkspaceAction.java (.../WorkspaceAction.java) (revision 24e81813a7f7ce5a240c6bf7f4e3b70d55ce2f56) @@ -359,6 +359,26 @@ * @return ActionForward * @throws IOException */ + public ActionForward getAccessibleWorkspaceFoldersNew(ActionMapping mapping, + ActionForm form, + HttpServletRequest request, + HttpServletResponse response)throws IOException{ + Integer userID = new Integer(WebUtil.readIntParam(request,"userID")); + IWorkspaceManagementService workspaceManagementService = getWorkspaceManagementService(); + String wddxPacket = workspaceManagementService.getAccessibleWorkspaceFoldersNew(userID); + return outputPacket(mapping, request, response, wddxPacket, "details"); + } + /** + * For details please refer to + * org.lamsfoundation.lams.workspace.service.IWorkspaceManagementService + * + * @param mapping + * @param form + * @param request + * @param response + * @return ActionForward + * @throws IOException + */ public ActionForward moveLearningDesign(ActionMapping mapping, ActionForm form, HttpServletRequest request, Index: lams_central/test/java/org/lamsfoundation/lams/workspace/service/TestWorkspaceManagement.java =================================================================== diff -u -r0badad92963e07de13c104187ca773f8d1abec70 -r24e81813a7f7ce5a240c6bf7f4e3b70d55ce2f56 --- lams_central/test/java/org/lamsfoundation/lams/workspace/service/TestWorkspaceManagement.java (.../TestWorkspaceManagement.java) (revision 0badad92963e07de13c104187ca773f8d1abec70) +++ lams_central/test/java/org/lamsfoundation/lams/workspace/service/TestWorkspaceManagement.java (.../TestWorkspaceManagement.java) (revision 24e81813a7f7ce5a240c6bf7f4e3b70d55ce2f56) @@ -101,7 +101,6 @@ String name = "testCreateWorkspaceFolderContent"+System.currentTimeMillis(); String message = workspaceManagementService.createWorkspaceFolderContent(WorkspaceFolderContent.CONTENT_TYPE_FILE, name,"Manpreet's Description", - new Date(),new Date(), MELCOE_WORKSPACE_FOLDER, "TXT",testFileString); System.out.println(message); @@ -118,7 +117,6 @@ String message = workspaceManagementService.createWorkspaceFolderContent( WorkspaceFolderContent.CONTENT_TYPE_FILE, name,"This content is to be updated.", - new Date(),new Date(), DOCUMENTS_WORKSPACE_FOLDER, "TXT",testFileString); @@ -171,7 +169,6 @@ String message = workspaceManagementService.createWorkspaceFolderContent( WorkspaceFolderContent.CONTENT_TYPE_FILE, name,"This content is to be deleted.", - new Date(),new Date(), DOCUMENTS_WORKSPACE_FOLDER, "TXT",testFileString);