Index: lams_central/conf/language/lams/ApplicationResources.properties =================================================================== RCS file: /usr/local/cvsroot/lams_central/conf/language/lams/ApplicationResources.properties,v diff -u -r1.138.2.37 -r1.138.2.38 --- lams_central/conf/language/lams/ApplicationResources.properties 1 Dec 2016 08:46:40 -0000 1.138.2.37 +++ lams_central/conf/language/lams/ApplicationResources.properties 4 Dec 2016 12:33:31 -0000 1.138.2.38 @@ -460,6 +460,7 @@ authoring.fla.region.fit.button.tooltip =Fit authoring.fla.new.folder.button =New authoring.fla.copy.button =Copy +authoring.fla.cut.button =Cut authoring.fla.paste.button =Paste authoring.fla.delete.button =Delete authoring.fla.rename.button =Rename @@ -488,6 +489,8 @@ authoring.fla.sequence.not.selected.error =Please choose a sequence authoring.fla.sequence.load.error =Error while loading the sequence authoring.fla.transition.from.exists.error =Transition from this activity already exists +authoring.fla.modify.error =You can not modify this resource +authoring.fla.folder.move.to.child.error =Can not move a folder into its child authoring.fla.export.image.dialog.title =Image export authoring.fla.export.sequence.dialog.title =Sequence export authoring.fla.activity.copy.title.prefix =Copy [0] of Index: lams_central/src/java/org/lamsfoundation/lams/workspace/service/IWorkspaceManagementService.java =================================================================== RCS file: /usr/local/cvsroot/lams_central/src/java/org/lamsfoundation/lams/workspace/service/IWorkspaceManagementService.java,v diff -u -r1.24.2.5 -r1.24.2.6 --- lams_central/src/java/org/lamsfoundation/lams/workspace/service/IWorkspaceManagementService.java 11 May 2016 07:07:59 -0000 1.24.2.5 +++ lams_central/src/java/org/lamsfoundation/lams/workspace/service/IWorkspaceManagementService.java 4 Dec 2016 12:33:31 -0000 1.24.2.6 @@ -206,6 +206,11 @@ throws IOException, LearningDesignException, UserException, WorkspaceFolderException; /** + * Changes the parent of given Learning Design or WorkspaceFolder to the target WorkspaceFolder + */ + void moveResource(Long resourceID, String resourceType, Integer targetFolderID) throws WorkspaceFolderException; + + /** * This method returns a list of organisation workspace folders. * * The organisation folders returned are determined based on whether the user has "write" access. A user can Index: lams_central/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java =================================================================== RCS file: /usr/local/cvsroot/lams_central/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java,v diff -u -r1.61.2.10 -r1.61.2.11 --- lams_central/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java 29 Jun 2016 07:43:28 -0000 1.61.2.10 +++ lams_central/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java 4 Dec 2016 12:33:31 -0000 1.61.2.11 @@ -577,6 +577,28 @@ } } + @Override + public void moveResource(Long resourceID, String resourceType, Integer targetFolderID) + throws WorkspaceFolderException { + WorkspaceFolder targetFolder = getWorkspaceFolder(targetFolderID); + if (FolderContentDTO.DESIGN.equals(resourceType)) { + LearningDesign learningDesign = learningDesignDAO.getLearningDesignById(resourceID); + learningDesign.setWorkspaceFolder(targetFolder); + learningDesignDAO.insertOrUpdate(learningDesign); + } else if (FolderContentDTO.FOLDER.equals(resourceType)) { + WorkspaceFolder folder = getWorkspaceFolder(resourceID.intValue()); + WorkspaceFolder parent = targetFolder.getParentWorkspaceFolder(); + while (parent != null) { + if (parent.equals(folder)) { + throw new WorkspaceFolderException("Can not move a folder into its descendant"); + } + parent = parent.getParentWorkspaceFolder(); + } + folder.setParentWorkspaceFolder(targetFolder); + baseDAO.update(folder); + } + } + /** * This method copies one folder inside another folder. To be able to successfully perform this action following * conditions must be met in the order they are listed. Index: lams_central/src/java/org/lamsfoundation/lams/workspace/web/WorkspaceAction.java =================================================================== RCS file: /usr/local/cvsroot/lams_central/src/java/org/lamsfoundation/lams/workspace/web/WorkspaceAction.java,v diff -u -r1.26.2.4 -r1.26.2.5 --- lams_central/src/java/org/lamsfoundation/lams/workspace/web/WorkspaceAction.java 11 May 2016 07:07:59 -0000 1.26.2.4 +++ lams_central/src/java/org/lamsfoundation/lams/workspace/web/WorkspaceAction.java 4 Dec 2016 12:33:31 -0000 1.26.2.5 @@ -169,8 +169,8 @@ Integer targetFolderID = WebUtil.readIntParam(request, "targetFolderID", false); if (targetFolderID == null) { - log.error("Can not create folder, parent folder ID is NULL"); - response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Parent folder ID is NULL"); + log.error("Can not copy resource, missing target folder ID"); + response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Missing target folder ID"); return null; } @@ -180,6 +180,28 @@ return null; } + public ActionForward moveResource(ActionMapping mapping, ActionForm form, HttpServletRequest request, + HttpServletResponse response) throws IOException { + Long resourceID = WebUtil.readLongParam(request, WorkspaceAction.RESOURCE_ID, false); + String resourceType = WebUtil.readStrParam(request, WorkspaceAction.RESOURCE_TYPE, false); + Integer targetFolderID = WebUtil.readIntParam(request, "targetFolderID", false); + + if (targetFolderID == null) { + log.error("Can not move resource, missing target folder ID"); + response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Missing target folder ID"); + return null; + } + + try { + getWorkspaceManagementService().moveResource(resourceID, resourceType, targetFolderID); + } catch (WorkspaceFolderException e) { + log.error("Error while moving a resource", e); + response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Error while moving a resource"); + return null; + } + return null; + } + public ActionForward renameResource(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException, UserException, WorkspaceFolderException { Index: lams_central/web/authoring/authoring.jsp =================================================================== RCS file: /usr/local/cvsroot/lams_central/web/authoring/authoring.jsp,v diff -u -r1.6.2.43 -r1.6.2.44 --- lams_central/web/authoring/authoring.jsp 3 Dec 2016 11:33:14 -0000 1.6.2.43 +++ lams_central/web/authoring/authoring.jsp 4 Dec 2016 12:33:31 -0000 1.6.2.44 @@ -124,6 +124,10 @@ SEQUENCE_NOT_SELECTED_ERROR : decoderDiv.html('').text(), SEQUENCE_LOAD_ERROR : decoderDiv.html('').text(), + + RESOURCE_MODIFY_ERROR : decoderDiv.html('').text(), + + FOLDER_MOVE_TO_CHILD_ERROR : decoderDiv.html('').text(), // HandlerLib @@ -497,6 +501,11 @@ + +