Index: lams_central/conf/language/lams/ApplicationResources.properties
===================================================================
diff -u -r4748085544e1f504bda46f614c2bb53f5d397a74 -r3750d4ca838633d6f19b1f4e1a8e13d9fc41d7c7
--- lams_central/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 4748085544e1f504bda46f614c2bb53f5d397a74)
+++ lams_central/conf/language/lams/ApplicationResources.properties (.../ApplicationResources.properties) (revision 3750d4ca838633d6f19b1f4e1a8e13d9fc41d7c7)
@@ -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
===================================================================
diff -u -r51fb2a37254f24bb2a805d4ffd54482c779f43fa -r3750d4ca838633d6f19b1f4e1a8e13d9fc41d7c7
--- lams_central/src/java/org/lamsfoundation/lams/workspace/service/IWorkspaceManagementService.java (.../IWorkspaceManagementService.java) (revision 51fb2a37254f24bb2a805d4ffd54482c779f43fa)
+++ lams_central/src/java/org/lamsfoundation/lams/workspace/service/IWorkspaceManagementService.java (.../IWorkspaceManagementService.java) (revision 3750d4ca838633d6f19b1f4e1a8e13d9fc41d7c7)
@@ -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
===================================================================
diff -u -r6cab7eecbb7a5b12bcb147db234ff5b6f80d72ab -r3750d4ca838633d6f19b1f4e1a8e13d9fc41d7c7
--- lams_central/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java (.../WorkspaceManagementService.java) (revision 6cab7eecbb7a5b12bcb147db234ff5b6f80d72ab)
+++ lams_central/src/java/org/lamsfoundation/lams/workspace/service/WorkspaceManagementService.java (.../WorkspaceManagementService.java) (revision 3750d4ca838633d6f19b1f4e1a8e13d9fc41d7c7)
@@ -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
===================================================================
diff -u -r51fb2a37254f24bb2a805d4ffd54482c779f43fa -r3750d4ca838633d6f19b1f4e1a8e13d9fc41d7c7
--- lams_central/src/java/org/lamsfoundation/lams/workspace/web/WorkspaceAction.java (.../WorkspaceAction.java) (revision 51fb2a37254f24bb2a805d4ffd54482c779f43fa)
+++ lams_central/src/java/org/lamsfoundation/lams/workspace/web/WorkspaceAction.java (.../WorkspaceAction.java) (revision 3750d4ca838633d6f19b1f4e1a8e13d9fc41d7c7)
@@ -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
===================================================================
diff -u -r784fd323a58e84e5d935014177523105f1e99b84 -r3750d4ca838633d6f19b1f4e1a8e13d9fc41d7c7
--- lams_central/web/authoring/authoring.jsp (.../authoring.jsp) (revision 784fd323a58e84e5d935014177523105f1e99b84)
+++ lams_central/web/authoring/authoring.jsp (.../authoring.jsp) (revision 3750d4ca838633d6f19b1f4e1a8e13d9fc41d7c7)
@@ -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 @@
+
+