Index: lams_central/src/flash/org/lamsfoundation/lams/authoring/DesignDataModel.as =================================================================== diff -u -r735adeb5d2ea7849b86d4991480630c4613fadec -re21e46d35a751657ff3b63704419ad212747425e --- lams_central/src/flash/org/lamsfoundation/lams/authoring/DesignDataModel.as (.../DesignDataModel.as) (revision 735adeb5d2ea7849b86d4991480630c4613fadec) +++ lams_central/src/flash/org/lamsfoundation/lams/authoring/DesignDataModel.as (.../DesignDataModel.as) (revision e21e46d35a751657ff3b63704419ad212747425e) @@ -83,6 +83,8 @@ private var _lastModifiedDateTime:Date; private var _dateReadOnly:Date; + private var _contentFolderID:String; + //These are defined so that the compiler can 'see' the events that are added at runtime by EventDispatcher private var dispatchEvent:Function; public var addEventListener:Function; @@ -963,6 +965,24 @@ public function get parentLearningDesignID ():Number { return _parentLearningDesignID; } + + /** + * + * @usage + * @param newparentLearningDesignID + * @return + */ + public function set contentFolderID (newcontentFolderID:String):Void { + _contentFolderID = newcontentFolderID; + } + /** + * + * @usage + * @return + */ + public function get contentFolderID ():String { + return _contentFolderID; + } } \ No newline at end of file Index: lams_central/src/flash/org/lamsfoundation/lams/authoring/cv/Canvas.as =================================================================== diff -u -rf13ccb75a8e8dc3aa154449e7ad5481ecc907c84 -re21e46d35a751657ff3b63704419ad212747425e --- lams_central/src/flash/org/lamsfoundation/lams/authoring/cv/Canvas.as (.../Canvas.as) (revision f13ccb75a8e8dc3aa154449e7ad5481ecc907c84) +++ lams_central/src/flash/org/lamsfoundation/lams/authoring/cv/Canvas.as (.../Canvas.as) (revision e21e46d35a751657ff3b63704419ad212747425e) @@ -168,6 +168,7 @@ canvasModel.autoSaveWait = true; } setInterval(Proxy.create(this,autoSave), autosave_config_interval); + } dispatchEvent({type:'load',target:this}); @@ -657,6 +658,8 @@ checkReadOnlyDesign(); canvasModel.setDirty(); + createContentFolder(); + return true; }else{ var fn:Function = Proxy.create(ref,confirmedClearDesign, ref); @@ -966,7 +969,23 @@ var learningDesignID = _ddm.learningDesignID; JsPopup.getInstance().launchPopupWindow(serverUrl+'authoring/exportToolContent.do?learningDesignID=' + learningDesignID, 'Export', 298, 712, true, true, false, false, false); } + + private function createContentFolder():Void{ + Debugger.log('instance is Tool',Debugger.GEN,'setPastedItem','Canvas'); + var callback:Function = Proxy.create(this,setNewContentFolderID); + Application.getInstance().getComms().getRequest('authoring/author.do?method=createUniqueContentFolder&userID='+_root.userID,callback, false); + } + + private function setNewContentFolderID(o:Object) { + if(o instanceof LFError){ + o.showMessageConfirm(); + }else{ + _ddm.contentFolderID = String(o); + } + + } + /** * Used by application to set the size * @param width The desired width Index: lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java =================================================================== diff -u -r016db2a9e2faacd0b9d20dd874571756eea79a14 -re21e46d35a751657ff3b63704419ad212747425e --- lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java (.../AuthoringService.java) (revision 016db2a9e2faacd0b9d20dd874571756eea79a14) +++ lams_central/src/java/org/lamsfoundation/lams/authoring/service/AuthoringService.java (.../AuthoringService.java) (revision e21e46d35a751657ff3b63704419ad212747425e) @@ -24,6 +24,7 @@ package org.lamsfoundation.lams.authoring.service; import java.io.IOException; +import java.io.File; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -39,6 +40,7 @@ import org.apache.log4j.Logger; import org.lamsfoundation.lams.authoring.IObjectExtractor; +import org.lamsfoundation.lams.authoring.web.AuthoringConstants; import org.lamsfoundation.lams.dao.hibernate.BaseDAO; import org.lamsfoundation.lams.learningdesign.Activity; import org.lamsfoundation.lams.learningdesign.ActivityOrderComparator; @@ -78,12 +80,20 @@ import org.lamsfoundation.lams.util.MessageService; import org.lamsfoundation.lams.util.wddx.FlashMessage; import org.lamsfoundation.lams.util.wddx.WDDXProcessor; +import org.lamsfoundation.lams.util.FileUtil; +import org.lamsfoundation.lams.util.FileUtilException; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanFactoryAware; import org.springframework.context.MessageSource; import org.springframework.context.i18n.LocaleContextHolder; +import org.hibernate.id.UUIDHexGenerator; +import org.hibernate.id.IdentifierGenerator; +import org.hibernate.id.Configurable; +import org.hibernate.Hibernate; +import java.util.Properties; + /** * @author Manpreet Minhas */ @@ -653,6 +663,33 @@ // remove the learning design learningDesignDAO.delete(design); } + + /** @see org.lamsfoundation.lams.authoring.service.IAuthoringService#generateUniqueContentFolder() */ + public String generateUniqueContentFolder() throws FileUtilException, IOException { + + String newUniqueContentFolderID = null; + FlashMessage flashMessag = null; + + Properties props = new Properties(); + + IdentifierGenerator uuidGen = new UUIDHexGenerator(); + ( (Configurable) uuidGen).configure(Hibernate.STRING, props, null); + + // lowercase to resolve OS issues + newUniqueContentFolderID = ((String) uuidGen.generate(null, null)).toLowerCase(); + + // directory pathname + String dirPath = Configuration.get(ConfigurationKeys.LAMS_EAR_DIR) + File.separator + AuthoringConstants.LAMS_WWW_DIR + File.separator + AuthoringConstants.LAMS_WWW_SECURE_DIR + File.separator + newUniqueContentFolderID; + + // create new directory + if(FileUtil.createDirectory(dirPath)){ + flashMessage = new FlashMessage("createUniqueContentFolder", newUniqueContentFolderID); + } else { + throw new FileUtilException(); + } + + return flashMessage.serializeMessage(); + } public MessageService getMessageService() { return messageService; Index: lams_central/src/java/org/lamsfoundation/lams/authoring/service/IAuthoringService.java =================================================================== diff -u -r3b957ffde3889e778d34eca3d3f7289976252e70 -re21e46d35a751657ff3b63704419ad212747425e --- lams_central/src/java/org/lamsfoundation/lams/authoring/service/IAuthoringService.java (.../IAuthoringService.java) (revision 3b957ffde3889e778d34eca3d3f7289976252e70) +++ lams_central/src/java/org/lamsfoundation/lams/authoring/service/IAuthoringService.java (.../IAuthoringService.java) (revision e21e46d35a751657ff3b63704419ad212747425e) @@ -35,6 +35,7 @@ import org.lamsfoundation.lams.usermanagement.exception.UserException; import org.lamsfoundation.lams.usermanagement.exception.WorkspaceFolderException; import org.lamsfoundation.lams.util.MessageService; +import org.lamsfoundation.lams.util.FileUtilException; /** * @author Manpreet Minhas @@ -212,6 +213,13 @@ * that is done by the LamsCoreToolService */ public void deleteLearningDesign(LearningDesign design); + /** + * Generates a unique content folder for the newly created design to store + * + * @return String The unique content folder id in WDDX Format + */ + public String generateUniqueContentFolder() throws FileUtilException, IOException; + /** Get the message service, which gives access to the I18N text */ public MessageService getMessageService(); Index: lams_central/src/java/org/lamsfoundation/lams/authoring/web/AuthoringAction.java =================================================================== diff -u -rd98b61a50b1a6f7cbaf419e9904fc4eebe91ac5d -re21e46d35a751657ff3b63704419ad212747425e --- lams_central/src/java/org/lamsfoundation/lams/authoring/web/AuthoringAction.java (.../AuthoringAction.java) (revision d98b61a50b1a6f7cbaf419e9904fc4eebe91ac5d) +++ lams_central/src/java/org/lamsfoundation/lams/authoring/web/AuthoringAction.java (.../AuthoringAction.java) (revision e21e46d35a751657ff3b63704419ad212747425e) @@ -36,6 +36,7 @@ import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.lamsfoundation.lams.authoring.service.IAuthoringService; +import org.lamsfoundation.lams.util.FileUtilException; import org.lamsfoundation.lams.util.WebUtil; import org.lamsfoundation.lams.util.audit.IAuditService; import org.lamsfoundation.lams.util.wddx.FlashMessage; @@ -227,6 +228,26 @@ return null; } + public ActionForward createUniqueContentFolder(ActionMapping mapping, + ActionForm form, + HttpServletRequest request, + HttpServletResponse response)throws ServletException, Exception{ + + String wddxPacket; + IAuthoringService authoringService = getAuthoringService(); + + try { + wddxPacket = authoringService.generateUniqueContentFolder(); + } catch (FileUtilException fue) { + wddxPacket = handleException(fue, "createUniqueContentFolder", authoringService).serializeMessage(); + } catch (Exception e) { + wddxPacket = handleException(e, "createUniqueContentFolder", authoringService).serializeMessage(); + } + + PrintWriter writer = response.getWriter(); + writer.println(wddxPacket); + return null; + } /** * Handle flash error. * @param e Index: lams_central/src/java/org/lamsfoundation/lams/authoring/web/AuthoringConstants.java =================================================================== diff -u -r486b433974e9f87034b1c4a16ec7d21f7072b964 -re21e46d35a751657ff3b63704419ad212747425e --- lams_central/src/java/org/lamsfoundation/lams/authoring/web/AuthoringConstants.java (.../AuthoringConstants.java) (revision 486b433974e9f87034b1c4a16ec7d21f7072b964) +++ lams_central/src/java/org/lamsfoundation/lams/authoring/web/AuthoringConstants.java (.../AuthoringConstants.java) (revision e21e46d35a751657ff3b63704419ad212747425e) @@ -36,4 +36,8 @@ //used by all tool authoring action class to mark the success flag. public static final String LAMS_AUTHORING_SUCCESS_FLAG = "LAMS_AUTHORING_SUCCESS_FLAG"; + + // used for tool content folder creation. + public static final String LAMS_WWW_DIR = "lams-www.war"; + public static final String LAMS_WWW_SECURE_DIR = "secure"; } Index: lams_central/web/lams_authoring.swf =================================================================== diff -u -r864787160de9a4e85e4ca088129cfc6d0f2e5d7b -re21e46d35a751657ff3b63704419ad212747425e Binary files differ Index: lams_central/web/lams_authoring_library.swf =================================================================== diff -u -r864787160de9a4e85e4ca088129cfc6d0f2e5d7b -re21e46d35a751657ff3b63704419ad212747425e Binary files differ