Author: solomax Date: Thu Nov 26 19:51:00 2015 New Revision: 1716760 URL: http://svn.apache.org/viewvc?rev=1716760&view=rev Log: [OPENMEETINGS-1279] add folder works as expected (almost)
Modified: openmeetings/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java openmeetings/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerItemDTO.java openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/dragItemFileExplorer.lzx openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/dynamicFileName.lzx openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/fileExplorer.lzx openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/restCall.lzx openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/baseFileExplorerItem.lzx openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/documentFileExplorerItem.lzx openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/folderFileExplorerItem.lzx openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/imageFileExplorerItem.lzx openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/rootFileExplorerItem.lzx openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/videoFileExplorerItem.lzx openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/wmlFileExplorerItem.lzx openmeetings/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java openmeetings/branches/3.1.x/openmeetings-web/src/main/webapp/public/config.xml openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerItemDTO.java openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java Modified: openmeetings/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java?rev=1716760&r1=1716759&r2=1716760&view=diff ============================================================================== --- openmeetings/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java (original) +++ openmeetings/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java Thu Nov 26 19:51:00 2015 @@ -93,19 +93,6 @@ public class FileExplorerItemDao { return null; } - public Long addFileExplorerItem(FileExplorerItem fileItem) { - try { - - fileItem = em.merge(fileItem); - Long fileItemId = fileItem.getId(); - - return fileItemId; - } catch (Exception ex2) { - log.error("[addFileExplorerItem]", ex2); - } - return null; - } - public List<FileExplorerItem> getFileExplorerItemsByRoomAndOwner(Long roomId, Long ownerId) { log.debug(".getFileExplorerItemsByRoomAndOwner() started"); try { @@ -238,11 +225,11 @@ public class FileExplorerItemDao { // fId.setUpdated(new Date()); if (f.getId() == null) { + f.setInserted(new Date()); em.persist(f); } else { - if (!em.contains(f)) { - f = em.merge(f); - } + f.setUpdated(new Date()); + f = em.merge(f); } return f; } Modified: openmeetings/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerItemDTO.java URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerItemDTO.java?rev=1716760&r1=1716759&r2=1716760&view=diff ============================================================================== --- openmeetings/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerItemDTO.java (original) +++ openmeetings/branches/3.1.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerItemDTO.java Thu Nov 26 19:51:00 2015 @@ -44,6 +44,7 @@ public class FileExplorerItemDTO impleme private String hash; private Long parentId; private Long roomId; + private Long ownerId; private Long size; private String externalId; private String externalType; @@ -59,6 +60,7 @@ public class FileExplorerItemDTO impleme hash = f.getHash(); parentId = f.getParentId(); roomId = f.getRoomId(); + ownerId = f.getOwnerId(); size = f.getSize(); externalId = f.getExternalId(); externalType = f.getExternalType(); @@ -74,6 +76,7 @@ public class FileExplorerItemDTO impleme f.setHash(hash); f.setParentId(parentId); f.setRoomId(roomId); + f.setOwnerId(ownerId); f.setSize(size); f.setExternalId(externalId); f.setExternalType(externalType); @@ -90,7 +93,7 @@ public class FileExplorerItemDTO impleme public void setId(Long id) { this.id = id; } - + public String getName() { return name; } @@ -123,6 +126,14 @@ public class FileExplorerItemDTO impleme this.roomId = roomId; } + public Long getOwnerId() { + return ownerId; + } + + public void setOwnerId(Long ownerId) { + this.ownerId = ownerId; + } + public Long getSize() { return size; } Modified: openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/dragItemFileExplorer.lzx URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/dragItemFileExplorer.lzx?rev=1716760&r1=1716759&r2=1716760&view=diff ============================================================================== --- openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/dragItemFileExplorer.lzx (original) +++ openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/dragItemFileExplorer.lzx Thu Nov 26 19:51:00 2015 @@ -47,8 +47,8 @@ <![CDATA[ if (this.refObj != itemRef) { - if (this.refObj.isFolder) { - if (!itemRef.isTrashCan && !itemRef.isFolder) { + if (this.refObj.type == 'Folder') { + if (!itemRef.isTrashCan && itemRef.type != 'Folder') { //No Folders to the whiteboard please return; } @@ -97,7 +97,7 @@ showCheckBox:false, refReturnMethod:"sendConfirmation" }); - } else if (this.overItem["isFolder"] && this.overItem.isFolder){ + } else if (this.overItem["type"] && this.overItem.type == 'Folder'){ if ($debug) Debug.write("MOVE ITEM",this.refObj.fileId); if ($debug) Debug.write("MOVE TO PARENT",this.overItem.fileId); this.fileId = this.refObj.fileId; @@ -121,17 +121,22 @@ this.moveFile(); } else { if ($debug) Debug.warn("Drag to whiteboard !!! "); - if (this.refObj.isVideo) { - this.refObj.playVideo(); - } else if (this.refObj.isPresentation) { - this.refObj.loadDocumentToWhiteboard(); - } else if (this.refObj.isImage) { - this.refObj.loadImageToWhiteboard(); - } else if (this.refObj.isWmlFile) { - this.refObj.loadWmlFile(); - } else { - if ($debug) Debug.warn("Should never happen dragItemFileExplorer unhandled case"); - } + switch (this.refObj.type) { + case 'Video': + this.refObj.playVideo(); + break; + case 'WmlFile': + this.refObj.loadWmlFile(); + break; + case 'Presentation': + this.refObj.loadDocumentToWhiteboard(); + break; + case 'Image': + this.refObj.loadImageToWhiteboard(); + break; + default: + if ($debug) Debug.warn("Should never happen dragItemFileExplorer unhandled case"); + } this.destroy(); } } else { Modified: openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/dynamicFileName.lzx URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/dynamicFileName.lzx?rev=1716760&r1=1716759&r2=1716760&view=diff ============================================================================== --- openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/dynamicFileName.lzx (original) +++ openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/dynamicFileName.lzx Thu Nov 26 19:51:00 2015 @@ -20,64 +20,79 @@ --> <library> -<class name="dynamicFileName" extends="customInputtext" - fontsize="10" bgcolor="0xFFFFFF"> - - <attribute name="isNew" value="false" type="boolean" /> - - <!-- Only used in case its an update --> - <attribute name="fileId" value="0" type="number" /> - - <attribute name="parentId" value="0" type="number" /> - <attribute name="isOwner" value="false" type="boolean" /> +<class name="dynamicFileName" extends="customInputtext" fontsize="10" bgcolor="0xFFFFFF"> + <switch> + <when property="$as3"> + <passthrough> + import flash.net.*; + </passthrough> + </when> + </switch> <attribute name="refObj" value="null" /> + <attribute name="addFolderLoader"/> <handler name="onblur"> lz.ModeManager.release(this); - if ($debug) Debug.write("Store and Destroy ",this.parentId); - if (this.isNew) { - this.addFolder(); + if ($debug) Debug.write("Store and Destroy ", this.refObj.parentId); + if (this.refObj.fileId == 0) { + this.add(); } else { - this.updateFileOrFolderName(); + this.rename(); } </handler> <handler name="onkeydown" args="k"> - <![CDATA[ - if (k == 13 || k == 27) { - this.onblur.sendEvent(); - } - ]]> + <![CDATA[ + if (k == 13 || k == 27) { + this.onblur.sendEvent(); + } + ]]> </handler> - <method name="addFolder"> + <method name="add"> <![CDATA[ - if ($debug) Debug.write("addFolder HTTP 1: "); - var downloadurl = canvas.getUrl()+'services/FileService/addFolderSelfInternal?' - +'SID='+canvas.sessionId - +'&parentId='+this.parentId - +'&fileName='+this.text - +'&roomId='+hib.currentroomid - +'&isOwner='+this.isOwner; - - this.addFolderSelf.setAttribute("src", downloadurl); - if ($debug) Debug.write("addFolderSelf doRequest ", downloadurl); - this.addFolderSelf.doRequest(); + if ($debug) Debug.write("addFolder:: ", this); + if (!addFolderLoader) { + addFolderLoader = new RestCall({ + url: canvas.getUrl() + 'services/file/' + , method: URLRequestMethod.POST + , dataFormat: URLLoaderDataFormat.BINARY + , contentType: "multipart/form-data; boundary=" + UploadPostHelper.getBoundary() + , errorCallback: httpRequestError + , successCallback: addFolderComplete + }); + } + var vars = UploadPostHelper.getPostData(null, null, [ + { + name: 'file' + , type: 'application/json' + , value: JSON.stringify({fileExplorerItemDTO: { + name: this.text + , parentId: this.refObj.parentId > 0 ? this.refObj.parentId : null + , roomId: this.refObj.roomId > 0 ? this.refObj.roomId : null + , ownerId: this.refObj.ownerId > 0 ? this.refObj.ownerId : null + , type: this.refObj.type + }}) + } + ]); + if ($debug) Debug.write("addFolder:: ", vars); + addFolderLoader.load(vars); + //FIXME TODO revert changes on error ]]> </method> - <dataset name="addFolderSelf" type="http" > - <handler name="ondata" args="d"> - <![CDATA[ - //if ($debug) Debug.write("ondata ",d); - if ($debug) Debug.write("addFolderSelf: ",d); - parent.completed(); - ]]> - </handler> - </dataset> + <method name="addFolderComplete" args="event"> + if ($debug) Debug.info("addFolderComplete ", event); + completed(); + </method> + + <method name="httpRequestError" args="event"> + if ($debug) Debug.error("httpRequestError ", event); + completed(); + </method> - <method name="updateFileOrFolderName"> + <method name="rename"> <![CDATA[ if ($debug) Debug.write("moveFile HTTP 1: "); var downloadurl = canvas.getUrl()+'services/FileService/updateFileOrFolderNameSelf?' @@ -102,13 +117,13 @@ </dataset> <method name="completed"> - this.refObj.setAttribute("fileName",this.getText()); + this.refObj.setAttribute("fileName", this.text); this.refObj.parent.parent.doOpen(); this.destroy(); </method> <method name="completedRename"> - this.refObj.setAttribute("fileName",this.getText()); + this.refObj.setAttribute("fileName",this.text); this.destroy(); </method> Modified: openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/fileExplorer.lzx URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/fileExplorer.lzx?rev=1716760&r1=1716759&r2=1716760&view=diff ============================================================================== --- openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/fileExplorer.lzx (original) +++ openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/fileExplorer.lzx Thu Nov 26 19:51:00 2015 @@ -28,12 +28,10 @@ <switch> <when property="$as3"> <passthrough> - import flash.events.*; import flash.net.*; </passthrough> </when> </switch> - <attribute name="parentFolderId" value="-2" type="number" /> <attribute name="_selected" value="null" /> <attribute name="rootFileLoader" /> @@ -47,7 +45,7 @@ <handler name="onvisible"> if ($debug) Debug.write("fileExplorer::onvisible this._selected ", this._selected); //This is thrown whenever an uploaded Document has completed - if (this._selected == null || !this._selected.isFolder) { + if (this._selected == null || this._selected.type == 'Folder') { this.loadFiles(); } else { this._selected.refresh(); @@ -65,9 +63,6 @@ //Set parent folder id for next Folder or uploaded file if (this._selected.fileId == 0) { if (this._selected.isOwner) { - this.parentFolderId = -2; - } else { - this.parentFolderId = 0; } } else { this.parentFolderId = this._selected.fileId; @@ -77,7 +72,7 @@ <method name="addFile"> <![CDATA[ - if ($debug) Debug.write("addFile :: ",this._selected,this.parentFolderId); + if ($debug) Debug.write("addFile :: ",this._selected); if (!canvas.isAllowedToDraw && !canvas.ismoderator) { new lz.labelerrorPopup(canvas,{errorlabelid:1462}); @@ -122,11 +117,11 @@ if ($debug) Debug.write("addFolder ::1 ",this._selected); this._filearea._contentarea.subviews[0].addFolder(); } else { - if (this._selected.isFolder) { - if ($debug) Debug.write("-1 this._selected.isFolder ",this._selected); + if (this._selected.type == 'Folder') { + if ($debug) Debug.write("-1 this._selected->Folder ", this._selected); this._selected.addFolder(); } else { - if ($debug) Debug.write("-2 !this._selected.isFolder ",this._selected); + if ($debug) Debug.write("-2 this._selected->!Folder ", this._selected); this._selected.parent.parent.addFolder(); } } @@ -164,23 +159,20 @@ <method name="loadFiles"> <![CDATA[ if (!rootFileLoader) { - rootFileLoader = new lz.restCall(this, { - restUrl: canvas.getUrl() + 'services/file/room/' + hib.currentroomid - , restMethod: URLRequestMethod.GET + rootFileLoader = new RestCall({ + url: canvas.getUrl() + 'services/file/room/' + hib.currentroomid + , method: URLRequestMethod.GET , errorCallback: httpRequestError - , successCallback: httpRequestComplete + , successCallback: loadFilesComplete }); } - var variables:URLVariables = new URLVariables(); - variables.sid = canvas.sessionId; - rootFileLoader.load(variables); + rootFileLoader.load(''); ]]> </method> - <method name="httpRequestComplete" args="event"> + <method name="loadFilesComplete" args="event"> var o = JSON.parse(event.target.data); - if ($debug) Debug.info("httpRequestComplete ", this); - if ($debug) Debug.info("httpRequestComplete ", o); + if ($debug) Debug.info("loadFilesComplete ", o); createRootItems(o.fileExplorerObject); </method> @@ -195,51 +187,60 @@ <method name="setNodes" args="list, root"> <![CDATA[ + //if ($debug) Debug.info("setNodes:: ", list.length, list); if (!list) { return; } + if (!list.length) { + list = [list]; + } for (var i = 0; i < list.length; ++i) { var f = list[i]; - //if ($debug) Debug.write("fileItem, ", f); + //if ($debug) Debug.write("fileItem, ", f, root); switch (f.type) { case 'Folder': new lz.folderFileExplorerItem(root.content,{ fileId: f.id , fileName: f.name , fileIcon: 'icon_folder_rsc' + , type: f.type + , ownerId: f.ownerId + , roomId: f.roomId , refObjListRoot:this }); break; case 'Image': new lz.imageFileExplorerItem(root.content,{ - isFolder: false - , fileId: f.id + fileId: f.id , fileName: f.name , fileHash: f.hash - , isImage: true + , type: f.type + , ownerId: f.ownerId + , roomId: f.roomId , fileIcon: 'file_explorer_image_rsc' , refObjListRoot: this }); break; case 'Presentation': new lz.documentFileExplorerItem(root.content,{ - isFolder: false - , fileId: f.id + fileId: f.id , fileName: f.name , fileHash: f.hash - , isPresentation: true + , type: f.type + , ownerId: f.ownerId + , roomId: f.roomId , fileIcon: 'file_explorer_document_rsc' , refObjListRoot: this }); break; case 'Video': new lz.videoFileExplorerItem(root.content,{ - isFolder: false - , isVideo: true - , fileId: f.id + fileId: f.id , fileName: f.name , fileHash: f.hash - , isImage: true + , type: f.type + , ownerId: f.ownerId + , roomId: f.roomId , fileIcon: 'file_explorer_video_rsc' , flvHeight: f.flvHeight , flvWidth: f.flvWidth @@ -248,21 +249,24 @@ break; case 'WmlFile': new lz.wmlFileExplorerItem(root.content,{ - isFolder: false - , fileId: f.id + fileId: f.id , fileName: f.name , fileIcon: 'file_explorer_wml_rsc' + , type: f.type + , ownerId: f.ownerId + , roomId: f.roomId , isWmlFile: true , refObjListRoot: this }); break; case 'PollChart': new lz.wmlFileExplorerItem(root.content,{ - isFolder: false - , fileId: f.id + fileId: f.id , fileName: f.name , fileIcon: 'file_explorer_chart_rsc' - , isChart: true + , type: f.type + , ownerId: f.ownerId + , roomId: f.roomId , refObjListRoot: this }); break; @@ -284,20 +288,21 @@ , fileId: -1 , fileName:canvas.getLabelName(706) , name: '_userHome' - , isRoot:true - , fileIcon:'file_explorer_folder_home_rsc' - , isOwner:true - , refObjListRoot:this + , isRoot: true + , ownerId: canvas.userId + , fileIcon: 'file_explorer_folder_home_rsc' + , refObjListRoot: this }); userHome.content.setAttribute("visibility", "visible"); userHome.icon_folder_pre.setAttribute("frame", 2); userHome._folderIcon.setAttribute("frame", 2); - + if ($debug) Debug.info("createUserRootItems "); setNodes(roomObject.userHome, userHome); var roomHome = new lz.rootFileExplorerItem(this._filearea._contentarea,{ open: true , fileId: -2 + , roomId: hib.currentroomid , fileName: canvas.getLabelName(707) , name: '_roomHome' , isRoot: true @@ -307,7 +312,7 @@ roomHome.content.setAttribute("visibility", "visible"); roomHome.icon_folder_pre.setAttribute("frame", 2); roomHome._folderIcon.setAttribute("frame", 2); - + if ($debug) Debug.info("createRoomRootItems "); setNodes(roomObject.roomHome, roomHome); ]]> </method> Modified: openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/restCall.lzx URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/restCall.lzx?rev=1716760&r1=1716759&r2=1716760&view=diff ============================================================================== --- openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/restCall.lzx (original) +++ openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/restCall.lzx Thu Nov 26 19:51:00 2015 @@ -8,8 +8,8 @@ "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at - http://www.apache.org/licenses/LICENSE-2.0 - + http://www.apache.org/licenses/LICENSE-2.0 + Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY @@ -19,43 +19,237 @@ --> <library> - <!-- ################### - Class restCall - --> - <class name="restCall" > - <switch> - <when property="$as3"> - <passthrough> - import flash.events.*; - import flash.net.*; - </passthrough> - </when> - </switch> - <attribute name="restUrl" type="string" /> - <attribute name="restMethod" type="string" /> - <attribute name="errorCallback" /> - <attribute name="successCallback" /> - <attribute name="requestor" /> - - <handler name="oninit"> - <![CDATA[ - if ($debug) Debug.write("restCall:: ", restUrl); - requestor = new URLLoader(); + <switch> + <when runtime="swf11"> + <script when="immediate"> + <![CDATA[ + + /** + * Take a fileName, byteArray, and parameters object as input and return ByteArray post data suitable for a UrlRequest as output + * + * @see http://www.marstonstudio.com/?p=36 + * @see http://www.w3.org/TR/html4/interact/forms.html + * @see http://www.jooce.com/blog/?p=143 + * @see http://www.jooce.com/blog/wp%2Dcontent/uploads/2007/06/uploadFile.txt + * @see http://blog.je2050.de/2006/05/01/save-bytearray-to-file-with-php/ + * + * @author Jonathan Marston + * @version 2007.08.19 + * + * This work is licensed under a Creative Commons Attribution NonCommercial ShareAlike 3.0 License. + * @see http://creativecommons.org/licenses/by-nc-sa/3.0/ + * + */ + public class UploadPostHelper { + #passthrough (toplevel:true) { + import flash.events.*; + import flash.net.*; + import flash.utils.ByteArray; + import flash.utils.Endian; + }# + + /** + * Boundary used to break up different parts of the http POST body + */ + private static var _boundary:String = ""; + + /** + * Get the boundary for the post. + * Must be passed as part of the contentType of the UrlRequest + */ + public static function getBoundary():String { + if (_boundary.length == 0) { + for (var i:int = 0; i < 0x20; i++ ) { + _boundary += String.fromCharCode( int( 97 + Math.random() * 25 ) ); + } + } + return _boundary; + } + + private static function addContentType(postData:ByteArray, type:String):void { + var bytes:String = 'Content-Type: ' + type; + for (var i:int = 0; i < bytes.length; ++i) { + postData.writeByte(bytes.charCodeAt(i)); + } + postData = LINEBREAK(postData); + postData = LINEBREAK(postData); + } - //Initiate the transaction - requestor.addEventListener(Event.COMPLETE, successCallback); - requestor.addEventListener("ioError", errorCallback); //IOErrorEvent.IOERROR - requestor.addEventListener(SecurityErrorEvent.SECURITY_ERROR, errorCallback); - ]]> - </handler> + /** + * Create post data to send in a UrlRequest + */ + public static function getPostData(fileName:String, byteArray:ByteArray, parameters:Array = null):ByteArray { + var i:int; + var bytes:String; + + var postData:ByteArray = new ByteArray(); + postData.endian = Endian.BIG_ENDIAN; + + //add Filename to parameters + if(parameters == null) { + parameters = []; + } + if (fileName) { + parameters[parameters.length] = {name: 'Filename', value: fileName}; + } + + //add parameters to postData + for (var j:int = 0; j < parameters.length; ++j) { + postData = BOUNDARY(postData); + postData = LINEBREAK(postData); + bytes = 'Content-Disposition: form-data; name="' + parameters[j].name + '"'; + for (i = 0; i < bytes.length; ++i) { + postData.writeByte(bytes.charCodeAt(i)); + } + postData = LINEBREAK(postData); + if (parameters[j].type) { + addContentType(postData, parameters[j].type) + } else { + postData = LINEBREAK(postData); + } + postData.writeUTFBytes(parameters[j].value); + postData = LINEBREAK(postData); + } + + if (fileName && byteArray) { + //add Filedata to postData + postData = BOUNDARY(postData); + postData = LINEBREAK(postData); + bytes = 'Content-Disposition: form-data; name="Filedata"; filename="'; + for (i = 0; i < bytes.length; ++i) { + postData.writeByte( bytes.charCodeAt(i) ); + } + postData.writeUTFBytes(fileName); + postData = QUOTATIONMARK(postData); + postData = LINEBREAK(postData); + addContentType(postData, "application/octet-stream"); + postData.writeBytes(byteArray, 0, byteArray.length); + postData = LINEBREAK(postData); + + //add upload filed to postData + postData = LINEBREAK(postData); + postData = BOUNDARY(postData); + postData = LINEBREAK(postData); + bytes = 'Content-Disposition: form-data; name="Upload"'; + for (i = 0; i < bytes.length; ++i) { + postData.writeByte(bytes.charCodeAt(i)); + } + postData = LINEBREAK(postData); + postData = LINEBREAK(postData); + bytes = 'Submit Query'; + for (i = 0; i < bytes.length; ++i) { + postData.writeByte(bytes.charCodeAt(i)); + } + postData = LINEBREAK(postData); - <method name="load" args="params"> - var request:URLRequest = new URLRequest(restUrl); - request.method = restMethod; - //Add the URL variables - request.data = params; + //closing boundary + postData = BOUNDARY(postData); + postData = DOUBLEDASH(postData); + } + return postData; + } + + /** + * Add a boundary to the PostData with leading doubledash + */ + private static function BOUNDARY(p:ByteArray):ByteArray { + var l:int = UploadPostHelper.getBoundary().length; + + p = DOUBLEDASH(p); + for (var i:int = 0; i < l; i++ ) { + p.writeByte( _boundary.charCodeAt( i ) ); + } + return p; + } + + /** + * Add one linebreak + */ + private static function LINEBREAK(p:ByteArray):ByteArray { + p.writeShort(0x0d0a); + return p; + } + + /** + * Add quotation mark + */ + private static function QUOTATIONMARK(p:ByteArray):ByteArray { + p.writeByte(0x22); + return p; + } + + /** + * Add Double Dash + */ + private static function DOUBLEDASH(p:ByteArray):ByteArray { + p.writeShort(0x2d2d); + return p; + } + + } + + public class RestCall { + #passthrough (toplevel:true) { + import flash.events.*; + import flash.net.*; + }# + private var url:String = null; + private var method:String = null; + private var contentType:String = null; + private var dataFormat:String = "text"; + private var errorCallback:Function; + private var successCallback:Function; + private var hdrs:Array = []; + private var requestor:URLLoader = null; + + public function RestCall(options:Object) { + if (options["url"]) { + this.url = options.url; + } + if (options["method"]) { + this.method = options.method; + } + if (options["contentType"]) { + this.contentType = options.contentType; + } + if (options["dataFormat"]) { + this.dataFormat = options.dataFormat; + } + if (options["errorCallback"]) { + this.errorCallback = options.errorCallback; + } + if (options["successCallback"]) { + this.successCallback = options.successCallback; + } + if (options["hdrs"]) { + this.hdrs = options.hdrs; + } + requestor = new URLLoader(); + requestor.dataFormat = dataFormat; + + //Initiate the transaction + requestor.addEventListener(Event.COMPLETE, successCallback); + requestor.addEventListener("ioError", errorCallback); //IOErrorEvent.IOERROR + requestor.addEventListener(SecurityErrorEvent.SECURITY_ERROR, errorCallback); + } - requestor.load(request); - </method> - </class> + public function load(vars):void { + var request:URLRequest = new URLRequest(url + '?sid=' + canvas.sessionId); //FIXME TODO + request.method = method; + if (contentType) { + request.contentType = contentType; + } + for (var i = 0; i < hdrs.length; ++i) { + request.requestHeaders.push(hdrs[i]); + } + //Add the URL vars + request.data = vars; + + requestor.load(request); + } + } + ]]> + </script> + </when> +</switch> </library> Modified: openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/baseFileExplorerItem.lzx URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/baseFileExplorerItem.lzx?rev=1716760&r1=1716759&r2=1716760&view=diff ============================================================================== --- openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/baseFileExplorerItem.lzx (original) +++ openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/baseFileExplorerItem.lzx Thu Nov 26 19:51:00 2015 @@ -21,52 +21,37 @@ <library> <class name="baseFileExplorerItem" extends="view"> - <attribute name="refObjListRoot" value="null"/> - <attribute name="isRoot" value="false" type="boolean" /> - <attribute name="fileIcon" type="string" value="string" /> - <attribute name="open" value="false" type="boolean" /> - <attribute name="fileId" value="0" type="number" /> - <attribute name="isOwner" value="false" type="boolean" /> - - <attribute name="isFolder" value="true" type="boolean" /> - <attribute name="isImage" value="false" type="boolean" /> - <attribute name="isPresentation" value="false" type="boolean" /> - <attribute name="isVideo" value="false" type="boolean" /> - + <attribute name="ownerId" value="0" type="number" /> + <attribute name="roomId" value="0" type="number" /> + <attribute name="type" type="string" /> <attribute name="fileName" value="" type="string" /> <attribute name="fileHash" value="" type="string" /> - <attribute name="selected" value="false" type="boolean"/> - <attribute name="singleClickDelegate" value="null" /> <attribute name="singleClickStarted" value="false" type="boolean" /> - <attribute name="isMouseDownDragAction" value="false" type="boolean"/> - - <!-- If this is true, then this item has been drag-n-droped and it makes no - sense to handle any single or double click event --> + <!-- If this is true, then this item has been drag-n-droped and it makes no sense to handle any single or double click event --> <attribute name="mouseDownClickUsed" value="false" type="boolean" /> <attribute name="mouseDownClickDelegate" value="null" /> - <attribute name="isTrashCan" value="false" type="boolean" /> <handler name="oninit"> this.singleClickDelegate = new LzDelegate( this, "doSingleClick" ); this.resetClickDelegate = new LzDelegate( this, "doResetSingleClick" ); this.mouseDownClickDelegate = new LzDelegate( this, "doMouseDownClick" ); - if (this.isFolder) { + if (this.type = 'Folder') { lz.Track.register(this._fileName, canvas.currentImagesListdraw.currentTrackGroupName); } </handler> <method name="doOpen"> this.open = true; - if (this.isFolder) { + if (this.type = 'Folder') { this.icon_folder_pre.setAttribute("frame",2); this.content.setAttribute("visibility","visible"); this._folderIcon.setAttribute("frame",2); @@ -76,7 +61,7 @@ <method name="doClose"> this.open = false; - if (this.isFolder) { + if (this.type = 'Folder') { this.icon_folder_pre.setAttribute("frame",1); this.content.setAttribute("visibility","hidden"); this._folderIcon.setAttribute("frame",1); @@ -173,7 +158,6 @@ if ($debug) Debug.write("deleteFileOrFolder: ",d); parent.parent.parent.doOpen(); parent.refObjListRoot._selected = null; - parent.refObjListRoot.parentFolderId = -2; ]]> </handler> </dataset> @@ -184,7 +168,7 @@ if (this.isRoot) { return; } - this.addOrUpdateFolderName(this.fileId,false); + this.addOrUpdateFolderName(); </method> <method name="doResetSingleClick" args="itmeObj"> @@ -197,30 +181,31 @@ </method> <method name="addFolder"> - <![CDATA[ - if (!canvas.isAllowedToDraw && !canvas.ismoderator) { - new lz.labelerrorPopup(canvas,{errorlabelid:1462}); - return; - } - - if (this.isFolder) { - if ($debug) Debug.write("NEW this.fileId INTO ",this); - if ($debug) Debug.write("NEW this.fileId ",this.fileId); - if (this["icon_folder_pre"]) { - this.icon_folder_pre.setAttribute("frame",2); - this.content.setAttribute("visibility","visible"); - this._folderIcon.setAttribute("frame",2); - var t = new lz.folderFileExplorerItem(this.content,{ - isOwner:this.isOwner, - isFolder:true, - fileIcon:'icon_folder_rsc', - refObjListRoot:this.refObjListRoot, - fileName:canvas.getLabelName(712) - }); - t.addOrUpdateFolderName(this.fileId,true); - } + <![CDATA[ + if (!canvas.isAllowedToDraw && !canvas.ismoderator) { + new lz.labelerrorPopup(canvas,{errorlabelid:1462}); + return; + } + if (this.type == 'Folder') { + if ($debug) Debug.write("NEW this.fileId INTO ", this); + if ($debug) Debug.write("NEW this.fileId ", this.fileId); + if (this["icon_folder_pre"]) { + this.icon_folder_pre.setAttribute("frame", 2); + this.content.setAttribute("visibile", true); + this._folderIcon.setAttribute("frame", 2); + var t = new lz.folderFileExplorerItem(this.content, { + parentId: this.fileId + , ownerId: this.ownerId + , roomId: this.roomId + , type: 'Folder' + , fileIcon: 'icon_folder_rsc' + , refObjListRoot: this.refObjListRoot + , fileName: canvas.getLabelName(712) + }); + t.addOrUpdateFolderName(); } - ]]> + } + ]]> </method> <method name="refresh"> @@ -243,7 +228,7 @@ new lz.labelerrorPopup(canvas,{errorlabelid:1462}); return; } - this.addOrUpdateFolderName(this.fileId,false); + this.addOrUpdateFolderName(); ]]> </method> @@ -277,40 +262,36 @@ ]]> </method> - <method name="addOrUpdateFolderName" args="fileId,isNew"> - <![CDATA[ - if (!canvas.isAllowedToDraw && !canvas.ismoderator) { - new lz.labelerrorPopup(canvas,{errorlabelid:1462}); - return; - } + <method name="addOrUpdateFolderName"> + <![CDATA[ + if (!canvas.isAllowedToDraw && !canvas.ismoderator) { + new lz.labelerrorPopup(canvas,{errorlabelid:1462}); + return; + } - if ($debug) Debug.write("addOrUpdateFolderName ",fileId); - var tWidth = this._fileName.width; - if (tWidth < 160) { - tWidth = 160; - } - var _y = this._fileName.getAttributeRelative("y",canvas); - var _x = this._fileName.getAttributeRelative("x",canvas); - if (isNew) { - _y = 65; - _x += 10; - } - - var t = new lz.dynamicFileName(canvas,{ - parentId:fileId, - fileId:this.fileId, //Only used at update Name - isOwner:this.isOwner, - text:this.fileName, - isNew:isNew, //false means its a renaming - refObj:this,width:tWidth+10, - x:_x, - y:_y - }); - - lz.Focus.setFocus(t,true); - lz.ModeManager.makeModal(t); - - ]]> + if ($debug) Debug.write("addOrUpdateFolderName ", this.parentId); + var tWidth = this._fileName.width; + if (tWidth < 160) { + tWidth = 160; + } + var _y = this._fileName.getAttributeRelative("y", canvas); + var _x = this._fileName.getAttributeRelative("x", canvas); + if (this.fileId == 0) { + _y = 65; + _x += 10; + } + + var t = new lz.dynamicFileName(canvas, { + text: this.fileName + , refObj: this + , width: tWidth + 10 + , x: _x + , y: _y + }); + + lz.Focus.setFocus(t,true); + lz.ModeManager.makeModal(t); + ]]> </method> <method name="toggleOpen" args="setSelection"> @@ -331,18 +312,22 @@ return; } - if (this.isVideo) { - this.playVideo(); - } else if (this.isWmlFile){ - this.loadWmlFile(); - } else if (this.isFolder) { - this.doSingleClick(null); - } else if (this.isPresentation) { - this.loadDocument(); + switch (this.type) { + case 'Video': + this.playVideo(); + break; + case 'WmlFile': + this.loadWmlFile(); + break; + case 'Folder': + this.doSingleClick(null); + break; + case 'Presentation': + this.loadDocument(); + break; } } else { - - if (this.isFolder){ + if (this.type == 'Folder'){ if (!this.open) { this.doOpen(); } else { @@ -350,11 +335,11 @@ if (this.selected) { if ($debug) Debug.write("Is this selected => Do Edit !!!"); this.singleClickStarted = true; - lz.Timer.addTimer( this.singleClickDelegate, 300 ); + lz.Timer.addTimer(this.singleClickDelegate, 300); } else { this.singleClickStarted = true; - lz.Timer.addTimer( this.resetClickDelegate, 300 ); + lz.Timer.addTimer(this.resetClickDelegate, 300); } } else { this.doClose(); @@ -365,10 +350,10 @@ if (this.selected) { if ($debug) Debug.write("Is this selected => Do Edit !!!"); this.singleClickStarted = true; - lz.Timer.addTimer( this.singleClickDelegate, 300 ); + lz.Timer.addTimer(this.singleClickDelegate, 300); } else { this.singleClickStarted = true; - lz.Timer.addTimer( this.resetClickDelegate, 300 ); + lz.Timer.addTimer(this.resetClickDelegate, 300); } } } @@ -424,7 +409,7 @@ </handler> </dataset> - <view name="icon_folder_pre" visibility="$once{ (parent.isFolder) ? 'visible' : 'hidden' }" resource="icon_folder_pre_rsc" frame="1" > + <view name="icon_folder_pre" visible="$once{ parent.type == 'Folder' }" resource="icon_folder_pre_rsc" frame="1" > <handler name="onclick"> parent.toggleOpen(false); </handler> Modified: openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/documentFileExplorerItem.lzx URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/documentFileExplorerItem.lzx?rev=1716760&r1=1716759&r2=1716760&view=diff ============================================================================== --- openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/documentFileExplorerItem.lzx (original) +++ openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/documentFileExplorerItem.lzx Thu Nov 26 19:51:00 2015 @@ -21,7 +21,7 @@ <library> -<class name="documentFileExplorerItem" extends="baseFileExplorerItem" isFolder="true"> +<class name="documentFileExplorerItem" extends="baseFileExplorerItem" type="Presentation"> <method name="formatURL" args="filename"> <![CDATA[ Modified: openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/folderFileExplorerItem.lzx URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/folderFileExplorerItem.lzx?rev=1716760&r1=1716759&r2=1716760&view=diff ============================================================================== --- openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/folderFileExplorerItem.lzx (original) +++ openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/folderFileExplorerItem.lzx Thu Nov 26 19:51:00 2015 @@ -20,7 +20,7 @@ --> <library> -<class name="folderFileExplorerItem" extends="baseFileExplorerItem" isFolder="true"> +<class name="folderFileExplorerItem" extends="baseFileExplorerItem" type="Folder"> <text name="_fileName" x="36" text="${ parent.fileName }" fontsize="10" resize="true" y="1"> <contextmenu> Modified: openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/imageFileExplorerItem.lzx URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/imageFileExplorerItem.lzx?rev=1716760&r1=1716759&r2=1716760&view=diff ============================================================================== --- openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/imageFileExplorerItem.lzx (original) +++ openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/imageFileExplorerItem.lzx Thu Nov 26 19:51:00 2015 @@ -20,7 +20,7 @@ --> <library> -<class name="imageFileExplorerItem" extends="baseFileExplorerItem" isFolder="true"> +<class name="imageFileExplorerItem" extends="baseFileExplorerItem" type="Image"> <method name="generateFileLink"> <![CDATA[ Modified: openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/rootFileExplorerItem.lzx URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/rootFileExplorerItem.lzx?rev=1716760&r1=1716759&r2=1716760&view=diff ============================================================================== --- openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/rootFileExplorerItem.lzx (original) +++ openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/rootFileExplorerItem.lzx Thu Nov 26 19:51:00 2015 @@ -20,7 +20,7 @@ --> <library> -<class name="rootFileExplorerItem" extends="baseFileExplorerItem" isFolder="true" isRoot="true"> +<class name="rootFileExplorerItem" extends="baseFileExplorerItem" type="Folder" isRoot="true"> <text name="_fileName" x="36" text="${ parent.fileName }" fontsize="10" resize="true" y="1"> <contextmenu> Modified: openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/videoFileExplorerItem.lzx URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/videoFileExplorerItem.lzx?rev=1716760&r1=1716759&r2=1716760&view=diff ============================================================================== --- openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/videoFileExplorerItem.lzx (original) +++ openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/videoFileExplorerItem.lzx Thu Nov 26 19:51:00 2015 @@ -20,7 +20,7 @@ --> <library> -<class name="videoFileExplorerItem" extends="baseFileExplorerItem" isFolder="true" isVideo="true"> +<class name="videoFileExplorerItem" extends="baseFileExplorerItem" type="Video"> <method name="generateFileLink"> <![CDATA[ Modified: openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/wmlFileExplorerItem.lzx URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/wmlFileExplorerItem.lzx?rev=1716760&r1=1716759&r2=1716760&view=diff ============================================================================== --- openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/wmlFileExplorerItem.lzx (original) +++ openmeetings/branches/3.1.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/wmlFileExplorerItem.lzx Thu Nov 26 19:51:00 2015 @@ -20,9 +20,7 @@ --> <library> -<class name="wmlFileExplorerItem" extends="baseFileExplorerItem" isFolder="true"> - - <attribute name="isWmlFile" type="boolean" value="true"/> +<class name="wmlFileExplorerItem" extends="baseFileExplorerItem" type="WmlFile"> <text name="_fileName" x="36" text="${ parent.fileName }" fontsize="10" resize="true" y="1"> <contextmenu> Modified: openmeetings/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java?rev=1716760&r1=1716759&r2=1716760&view=diff ============================================================================== --- openmeetings/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java (original) +++ openmeetings/branches/3.1.x/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java Thu Nov 26 19:51:00 2015 @@ -595,7 +595,7 @@ public class BackupImport { if (file.getParentId() != null && file.getParentId() <= 0L) { file.setParentId(null); } - fileExplorerItemDao.addFileExplorerItem(file); + fileExplorerItemDao.update(file); } } Modified: openmeetings/branches/3.1.x/openmeetings-web/src/main/webapp/public/config.xml URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-web/src/main/webapp/public/config.xml?rev=1716760&r1=1716759&r2=1716760&view=diff ============================================================================== --- openmeetings/branches/3.1.x/openmeetings-web/src/main/webapp/public/config.xml (original) +++ openmeetings/branches/3.1.x/openmeetings-web/src/main/webapp/public/config.xml Thu Nov 26 19:51:00 2015 @@ -148,14 +148,6 @@ of the red5-servlet <showRecording>hidden</showRecording> <!-- - - To enable the modern whiteboard Panel you need to switch this to y - old menu bar is not active any more - -<showmodernWhiteBoard>y</showmodernWhiteBoard> - --> - -<!-- First day in the Week used by the Calendar 0 means Sunday 1 means Monday Modified: openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java URL: http://svn.apache.org/viewvc/openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java?rev=1716760&r1=1716759&r2=1716760&view=diff ============================================================================== --- openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java (original) +++ openmeetings/branches/3.1.x/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java Thu Nov 26 19:51:00 2015 @@ -29,6 +29,7 @@ import java.util.Set; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebService; +import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; import javax.ws.rs.GET; import javax.ws.rs.POST; @@ -161,15 +162,18 @@ public class FileWebService { * The SID of the User. This SID must be marked as logged in * @param file * the The file to be added + * @param stream + * the The file to be added * @return - Object created * @throws ServiceException */ @WebMethod @POST + @Consumes(MediaType.MULTIPART_FORM_DATA) @Path("/") public FileExplorerItemDTO add(@WebParam(name="sid") @QueryParam("sid") String sid - , @Multipart(value = "file") @WebParam(name="file") FileExplorerItemDTO file - , @Multipart(value = "attach", type = "application/octet-stream", required = false) @WebParam(name="attach") InputStream attach //TODO check this + , @Multipart(value = "file", type = MediaType.APPLICATION_JSON) @WebParam(name="file") FileExplorerItemDTO file + , @Multipart(value = "stream", type = MediaType.APPLICATION_OCTET_STREAM, required = false) @WebParam(name="stream") InputStream attach //TODO check this ) throws ServiceException { try { @@ -180,11 +184,14 @@ public class FileWebService { throw new ServiceException("Bad id");//TODO err code -1 ???? } Set<Right> rights = userDao.getRights(userId); + /* FIXME TODO permissions if (AuthLevelUtil.hasWebServiceLevel(rights) - || (AuthLevelUtil.hasUserLevel(rights) && userId.equals(f.getOwnerId()))) + || (AuthLevelUtil.hasUserLevel(rights) && userId.equals(f.getOwnerId())))*/ + if (AuthLevelUtil.hasUserLevel(rights)) { //TODO permissions //TODO attachment + f.setInsertedBy(userId); fileDao.update(f); return new FileExplorerItemDTO(f); } else { Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java?rev=1716760&r1=1716759&r2=1716760&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java (original) +++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/file/FileExplorerItemDao.java Thu Nov 26 19:51:00 2015 @@ -93,19 +93,6 @@ public class FileExplorerItemDao { return null; } - public Long addFileExplorerItem(FileExplorerItem fileItem) { - try { - - fileItem = em.merge(fileItem); - Long fileItemId = fileItem.getId(); - - return fileItemId; - } catch (Exception ex2) { - log.error("[addFileExplorerItem]", ex2); - } - return null; - } - public List<FileExplorerItem> getFileExplorerItemsByRoomAndOwner(Long roomId, Long ownerId) { log.debug(".getFileExplorerItemsByRoomAndOwner() started"); try { @@ -238,11 +225,11 @@ public class FileExplorerItemDao { // fId.setUpdated(new Date()); if (f.getId() == null) { + f.setInserted(new Date()); em.persist(f); } else { - if (!em.contains(f)) { - f = em.merge(f); - } + f.setUpdated(new Date()); + f = em.merge(f); } return f; } Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerItemDTO.java URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerItemDTO.java?rev=1716760&r1=1716759&r2=1716760&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerItemDTO.java (original) +++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/file/FileExplorerItemDTO.java Thu Nov 26 19:51:00 2015 @@ -44,6 +44,7 @@ public class FileExplorerItemDTO impleme private String hash; private Long parentId; private Long roomId; + private Long ownerId; private Long size; private String externalId; private String externalType; @@ -59,6 +60,7 @@ public class FileExplorerItemDTO impleme hash = f.getHash(); parentId = f.getParentId(); roomId = f.getRoomId(); + ownerId = f.getOwnerId(); size = f.getSize(); externalId = f.getExternalId(); externalType = f.getExternalType(); @@ -74,6 +76,7 @@ public class FileExplorerItemDTO impleme f.setHash(hash); f.setParentId(parentId); f.setRoomId(roomId); + f.setOwnerId(ownerId); f.setSize(size); f.setExternalId(externalId); f.setExternalType(externalType); @@ -123,6 +126,14 @@ public class FileExplorerItemDTO impleme this.roomId = roomId; } + public Long getOwnerId() { + return ownerId; + } + + public void setOwnerId(Long ownerId) { + this.ownerId = ownerId; + } + public Long getSize() { return size; } Modified: openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java?rev=1716760&r1=1716759&r2=1716760&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java (original) +++ openmeetings/trunk/singlewebapp/openmeetings-install/src/main/java/org/apache/openmeetings/backup/BackupImport.java Thu Nov 26 19:51:00 2015 @@ -595,7 +595,7 @@ public class BackupImport { if (file.getParentId() != null && file.getParentId() <= 0L) { file.setParentId(null); } - fileExplorerItemDao.addFileExplorerItem(file); + fileExplorerItemDao.update(file); } } Modified: openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java?rev=1716760&r1=1716759&r2=1716760&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java (original) +++ openmeetings/trunk/singlewebapp/openmeetings-webservice/src/main/java/org/apache/openmeetings/webservice/FileWebService.java Thu Nov 26 19:51:00 2015 @@ -29,6 +29,7 @@ import java.util.Set; import javax.jws.WebMethod; import javax.jws.WebParam; import javax.jws.WebService; +import javax.ws.rs.Consumes; import javax.ws.rs.DELETE; import javax.ws.rs.GET; import javax.ws.rs.POST; @@ -161,15 +162,18 @@ public class FileWebService { * The SID of the User. This SID must be marked as logged in * @param file * the The file to be added + * @param stream + * the The file to be added * @return - Object created * @throws ServiceException */ @WebMethod @POST + @Consumes(MediaType.MULTIPART_FORM_DATA) @Path("/") public FileExplorerItemDTO add(@WebParam(name="sid") @QueryParam("sid") String sid - , @Multipart(value = "file") @WebParam(name="file") FileExplorerItemDTO file - , @Multipart(value = "attach", type = "application/octet-stream", required = false) @WebParam(name="attach") InputStream attach //TODO check this + , @Multipart(value = "file", type = MediaType.APPLICATION_JSON) @WebParam(name="file") FileExplorerItemDTO file + , @Multipart(value = "stream", type = MediaType.APPLICATION_OCTET_STREAM, required = false) @WebParam(name="stream") InputStream attach //TODO check this ) throws ServiceException { try { @@ -180,11 +184,14 @@ public class FileWebService { throw new ServiceException("Bad id");//TODO err code -1 ???? } Set<Right> rights = userDao.getRights(userId); + /* FIXME TODO permissions if (AuthLevelUtil.hasWebServiceLevel(rights) - || (AuthLevelUtil.hasUserLevel(rights) && userId.equals(f.getOwnerId()))) + || (AuthLevelUtil.hasUserLevel(rights) && userId.equals(f.getOwnerId())))*/ + if (AuthLevelUtil.hasUserLevel(rights)) { //TODO permissions //TODO attachment + f.setInsertedBy(userId); fileDao.update(f); return new FileExplorerItemDTO(f); } else {