You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2016/04/19 10:58:05 UTC

svn commit: r1739871 [1/3] - in /openmeetings/application: branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/ branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/ branches/3.2....

Author: solomax
Date: Tue Apr 19 08:58:04 2016
New Revision: 1739871

URL: http://svn.apache.org/viewvc?rev=1739871&view=rev
Log:
[OPENMEETINGS-1030] file upload is partially added

Added:
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomFileResourceReference.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPdfResourceReference.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomSwfResourceReference.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.html
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/upload.js
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/AviRecordingResourceReference.java
      - copied, changed from r1739859, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/AviRecordingResourceReference.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/FlvRecordingResourceReference.java
      - copied, changed from r1739846, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FlvRecordingResourceReference.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/JpgRecordingResourceReference.java
      - copied, changed from r1739846, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/JpgRecordingResourceReference.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/Mp4RecordingResourceReference.java
      - copied, changed from r1739846, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/Mp4RecordingResourceReference.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/OggRecordingResourceReference.java
      - copied, changed from r1739846, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/OggRecordingResourceReference.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java
      - copied, changed from r1739846, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.css
      - copied, changed from r1739846, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/bootstrap-fileupload.css
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.js
      - copied, changed from r1739729, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/bootstrap-fileupload.js
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.min.css
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.min.js
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomFileResourceReference.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPdfResourceReference.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomSwfResourceReference.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.html
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/upload.js
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/AviRecordingResourceReference.java
      - copied, changed from r1739688, openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/AviRecordingResourceReference.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/FlvRecordingResourceReference.java
      - copied, changed from r1739688, openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FlvRecordingResourceReference.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/JpgRecordingResourceReference.java
      - copied, changed from r1739688, openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/JpgRecordingResourceReference.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/Mp4RecordingResourceReference.java
      - copied, changed from r1739688, openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/Mp4RecordingResourceReference.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/OggRecordingResourceReference.java
      - copied, changed from r1739688, openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/OggRecordingResourceReference.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java
      - copied, changed from r1739688, openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.css
      - copied, changed from r1739688, openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/bootstrap-fileupload.css
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.js
      - copied, changed from r1739688, openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/bootstrap-fileupload.js
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.min.css
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.min.js
Removed:
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/AviRecordingResourceReference.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FlvRecordingResourceReference.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/JpgRecordingResourceReference.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/Mp4RecordingResourceReference.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/OggRecordingResourceReference.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/bootstrap-fileupload.css
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/bootstrap-fileupload.js
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/AviRecordingResourceReference.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FlvRecordingResourceReference.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/JpgRecordingResourceReference.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/Mp4RecordingResourceReference.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/OggRecordingResourceReference.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/bootstrap-fileupload.css
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/bootstrap-fileupload.js
Modified:
    openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
    openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteBoardObjectSyncManager.java
    openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardManager.java
    openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardObject.java
    openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/documentFileExplorerItem.lzx
    openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/baseDrawObject.lzx
    openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/StoredFile.java
    openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ConverterProcessResultList.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.html
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.html
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.html
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoPlayer.java
    openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/BootstrapFileUploadBehavior.java
    openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
    openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteBoardObjectSyncManager.java
    openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardManager.java
    openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardObject.java
    openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/StoredFile.java
    openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ConverterProcessResultList.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.html
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.html
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.html
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoPlayer.java
    openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/BootstrapFileUploadBehavior.java

Modified: openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java Tue Apr 19 08:58:04 2016
@@ -26,8 +26,8 @@ import static org.apache.openmeetings.ut
 
 import java.io.File;
 import java.io.InputStream;
-import java.util.Date;
 import java.util.List;
+import java.util.UUID;
 
 import org.apache.commons.transaction.util.FileHelper;
 import org.apache.openmeetings.core.converter.FlvExplorerConverter;
@@ -38,7 +38,6 @@ import org.apache.openmeetings.db.dao.fi
 import org.apache.openmeetings.db.entity.file.FileExplorerItem;
 import org.apache.openmeetings.db.entity.file.FileItem.Type;
 import org.apache.openmeetings.util.StoredFile;
-import org.apache.openmeetings.util.crypt.MD5;
 import org.apache.openmeetings.util.process.ConverterProcessResult;
 import org.apache.openmeetings.util.process.ConverterProcessResultList;
 import org.red5.logging.Red5LoggerFactory;
@@ -60,18 +59,21 @@ public class FileProcessor {
 	@Autowired
 	private GeneratePDF generatePDF;
 
+	public static String getExt(FileExplorerItem f) {
+		int dotidx = f.getName().lastIndexOf('.');
+		return dotidx < 0 ? "" : f.getName().substring(dotidx + 1).toLowerCase();
+	}
+	
 	//FIXME TODO this method need to be refactored to throw exceptions
 	public ConverterProcessResultList processFile(Long userId, FileExplorerItem f, InputStream is) throws Exception {
 		ConverterProcessResultList returnError = new ConverterProcessResultList();
 		
-		int dotidx = f.getName().lastIndexOf('.');
-
 		// Generate a random string to prevent any problems with
 		// foreign characters and duplicates
-		String newName = MD5.checksum("FILE_" + new Date().getTime());
+		String newName = UUID.randomUUID().toString();
 
-		String extDot = f.getName().substring(dotidx, f.getName().length()).toLowerCase();
-		String ext = extDot.substring(1);
+		String ext = getExt(f);
+		String extDot = String.format(".%s", ext);
 		log.debug("file extension: " + ext);
 		StoredFile storedFile = new StoredFile(newName, ext); 
 
@@ -145,7 +147,7 @@ public class FileProcessor {
 		// has to happen at the end, otherwise it will be overwritten
 		//cause the variable is new initialized
 		returnError.setCompleteName(completeName.getName());
-		returnError.setFileExplorerItemId(f.getId());
+		returnError.setFileItemId(f.getId());
 		
 		return returnError;
 	}

Modified: openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteBoardObjectSyncManager.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteBoardObjectSyncManager.java?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteBoardObjectSyncManager.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteBoardObjectSyncManager.java Tue Apr 19 08:58:04 2016
@@ -18,12 +18,12 @@
  */
 package org.apache.openmeetings.core.data.whiteboard;
 
-import java.util.HashMap;
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.openmeetings.db.dto.room.WhiteboardSyncLockObject;
-import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 import org.red5.logging.Red5LoggerFactory;
 import org.slf4j.Logger;
 
@@ -50,7 +50,7 @@ public class WhiteBoardObjectSyncManager
 		if (whiteBoardSyncList.containsKey(roomId)) {
 			return whiteBoardSyncList.get(roomId);
 		} else {
-			return new HashMap<String, WhiteboardSyncLockObject>();
+			return new ConcurrentHashMap<>();
 		}
 	}
 
@@ -75,7 +75,7 @@ public class WhiteBoardObjectSyncManager
 		if (whiteBoardObjectSyncList.containsKey(roomId)) {
 			return whiteBoardObjectSyncList.get(roomId);
 		} else {
-			return new HashMap<String, Map<String, WhiteboardSyncLockObject>>();
+			return new ConcurrentHashMap<>();
 		}
 	}
 
@@ -91,7 +91,7 @@ public class WhiteBoardObjectSyncManager
 		}
 		Map<String, WhiteboardSyncLockObject> imageSyncList = roomList.get(objectId);
 		if (imageSyncList == null) {
-			imageSyncList = new HashMap<String, WhiteboardSyncLockObject>();
+			imageSyncList = new ConcurrentHashMap<>();
 		}
 		return imageSyncList;
 	}

Modified: openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardManager.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardManager.java?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardManager.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardManager.java Tue Apr 19 08:58:04 2016
@@ -20,10 +20,10 @@ package org.apache.openmeetings.core.dat
 
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
+import java.util.concurrent.ConcurrentHashMap;
 
 import org.apache.openmeetings.db.dto.room.WhiteboardObject;
 import org.red5.logging.Red5LoggerFactory;
@@ -70,7 +70,7 @@ public class WhiteboardManager {
 				}
 			} else if (action.equals("clear")) {
 				WhiteboardObject whiteboardObject = wbListManagerById.getWhiteBoardObjectListByRoomIdAndWhiteboard(roomId, whiteBoardId);
-				whiteboardObject.setRoomItems(new HashMap<String, List>());
+				whiteboardObject.setRoomItems(new ConcurrentHashMap<String, List>());
 				wbListManagerById.setWhiteBoardObjectListRoomObjAndWhiteboardId(roomId, whiteboardObject, whiteBoardId);
 			} else if (action.equals("delete") || action.equals("undo")) {
 				WhiteboardObject whiteboardObject = wbListManagerById.getWhiteBoardObjectListByRoomIdAndWhiteboard(roomId, whiteBoardId);

Modified: openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardObject.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardObject.java?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardObject.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardObject.java Tue Apr 19 08:58:04 2016
@@ -19,9 +19,9 @@
 package org.apache.openmeetings.db.dto.room;
 
 import java.util.Date;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
 
 public class WhiteboardObject {
 
@@ -31,7 +31,7 @@ public class WhiteboardObject {
 	private Integer zoom = 100;
 	private Boolean fullFit = true;
 	@SuppressWarnings("rawtypes")
-	private Map<String, List> roomItems = new HashMap<String, List>();
+	private Map<String, List> roomItems = new ConcurrentHashMap<>();
 	private Date created = new Date();
 
 	public WhiteboardObject() {}

Modified: openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/documentFileExplorerItem.lzx
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/documentFileExplorerItem.lzx?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/documentFileExplorerItem.lzx (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/tabcontent/fileexplorer/treeitems/documentFileExplorerItem.lzx Tue Apr 19 08:58:04 2016
@@ -22,30 +22,10 @@
 
  
 <class name="documentFileExplorerItem" extends="baseFileExplorerItem" type="Presentation">
-	
-	<method name="formatURL" args="filename">
-        <![CDATA[
-            var uploadmoduleimgfolderVar = '/' + this.fileHash;
-            var downloadurl = canvas.getUrl()+'DownloadHandler?' +
-                'fileName=' + encodeURIComponent(this.fileHash + ".swf") +
-                '&moduleName=' + 'videoconf1' + 
-                '&parentPath=' + encodeURIComponent(uploadmoduleimgfolderVar + '/' )+
-                '&room_id=files'+ 
-                '&sid='+canvas.sessionId;
-            ////Debug.write("downloadurl: ",downloadurl);
-            return downloadurl;
-        ]]>
-    </method>    
-    
 	<method name="loadDocumentToWhiteboard">
 		if (canvas.ismoderator || canvas.isAllowedToDraw) {
-    		var uploadmoduleimgfolderVar = '/' + this.fileHash;
-            
-            if ($debug) Debug.write("loadDocumentToWhiteboard ",this.fileName);
-            
-    		canvas._drawarea.loadSWFPresentationSynced(this.formatURL(this.fileHash),this.fileHash + ".swf",
-    		              "videoconf1",uploadmoduleimgfolderVar,"files",hib.conferencedomain,1,
-                          this.fileName);
+    		canvas._drawarea.loadSWFPresentationSynced("room/swf/" + fileId, this.fileHash + ".swf",
+    		              "videoconf1", "", "files", hib.conferencedomain, 1, this.fileName);
 		} else {
 			new lz.errorModeratorPopup(canvas,{error:canvas.getLabelName(721)});
 		}

Modified: openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/baseDrawObject.lzx
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/baseDrawObject.lzx?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/baseDrawObject.lzx (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-flash/src/main/swf/modules/conference/whiteboard/base/baseDrawObject.lzx Tue Apr 19 08:58:04 2016
@@ -157,14 +157,10 @@
 	 -->
   	<method name="addPresentationToLayer" args="obj,urlName,nameing,posx,posy,width,height,alterModus,baseurl,fileName,moduleName,parentPath,room,domain,slideNumber,currentzoom,innerwidth,innerheight,innerx,innery,uniqueObjectSyncName,standardFileName,fullFit">
 	<![CDATA[
-		if ($debug) Debug.write("addPresentationToLayer",standardFileName);
+		if ($debug) Debug.write("addPresentationToLayer", standardFileName);
 		
-		var downloadurl = canvas.getUrl() + 'DownloadHandler?' +
-				'fileName=' + encodeURIComponent(fileName) +
-				'&moduleName=' + moduleName + 
-				'&parentPath=' + encodeURIComponent(parentPath + '/') +
-				'&room_id='+room + 
-				'&sid='+canvas.sessionId;
+		var downloadurl = canvas.getUrl() + urlName + "?uid=" + canvas.publicSID;
+		if ($debug) Debug.write("addPresentationToLayer:: downloadurl=", downloadurl);
 		
 		this.currentlayer = new lz.swfResourceView(obj,{refObj:this,name:nameing,
 			x:posx,y:posy,alterModus:alterModus,
@@ -178,8 +174,6 @@
 			, swfUrl: downloadurl
 			});
 
-		//this.currentlayer._swfView.setSource(downloadurl);
-		
 		this.addItemToDocumentToolBar();
 		this.doUpdateDocumentToolBar();
 	]]>

Modified: openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/StoredFile.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/StoredFile.java?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/StoredFile.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/StoredFile.java Tue Apr 19 08:58:04 2016
@@ -20,105 +20,101 @@ package org.apache.openmeetings.util;
 
 import java.util.Arrays;
 import java.util.HashSet;
+import java.util.LinkedHashSet;
 import java.util.Set;
 
+import org.apache.commons.lang3.StringUtils;
+
 public class StoredFile {
-    private static final Set<String> convertExtensions = new HashSet<String>(
-            Arrays.asList(new String[] { "ppt", "odp", "odt", "sxw", "wpd",
-                    "doc", "rtf", "txt", "ods", "sxc", "xls", "sxi", "pptx",
-                    "docx", "xlsx" }));
-
-    private static final Set<String> pdfExtensions = new HashSet<String>(
-            Arrays.asList(new String[] { "pdf", "ps" }));
-
-    private static final Set<String> imageExtensions = new HashSet<String>(
-            Arrays.asList(new String[] { "png", "gif", "svg", "dpx", "exr",
-                    "pcd", // PhotoCD
-                    "pcds", // PhotoCD
-                    "psd", // Adobe Photoshop
-                    "tiff", // Tagged Image File Format
-                    "ttf", // TrueType font
-                    "xcf", // GIMP image
-                    "wpg", // Word Perfect Graphics
-                    "bmp", "ico", // Microsoft Icon
-                    "tga", // Truevision Targa
-                    "jpg", "jpeg" }));
-
-    private static final Set<String> chartExtensions = new HashSet<String>(
-            Arrays.asList(new String[] { "xchart" }));
+	private static final Set<String> convertExtensions = new HashSet<>(
+			Arrays.asList("ppt", "odp", "odt", "sxw", "wpd", "doc", "rtf", "txt", "ods", "sxc", "xls", "sxi", "pptx", "docx", "xlsx"));
+
+	private static final Set<String> pdfExtensions = new HashSet<>(Arrays.asList("pdf", "ps"));
+
+	private static final Set<String> imageExtensions = new HashSet<>(Arrays.asList("png", "gif", "svg", "dpx", "exr",
+			"pcd", // PhotoCD
+			"pcds", // PhotoCD
+			"psd", // Adobe Photoshop
+			"tiff", // Tagged Image File Format
+			"ttf", // TrueType font
+			"xcf", // GIMP image
+			"wpg", // Word Perfect Graphics
+			"bmp", "ico", // Microsoft Icon
+			"tga", // Truevision Targa
+			"jpg", "jpeg"));
+
+	private static final Set<String> chartExtensions = new HashSet<>(Arrays.asList("xchart"));
 
-    private static final Set<String> videoExtensions = new HashSet<String>(
-            Arrays.asList(new String[] { "avi", "mov", "flv", "mp4" }));
+	private static final Set<String> videoExtensions = new HashSet<>(Arrays.asList("avi", "mov", "flv", "mp4"));
 
-    private static final Set<String> asIsExtensions = new HashSet<String>(
-            Arrays.asList(new String[] { "jpg", "xchart" }));
+	private static final Set<String> asIsExtensions = new HashSet<>(Arrays.asList("jpg", "xchart"));
 
-    private final String name;
+	private final String name;
 	private final String ext;
 
-    public StoredFile(String fullname) {
-    	int idx = fullname.lastIndexOf('.');
-    	name = idx < 0 ? fullname : fullname.substring(0, idx);
-    	ext = idx < 0 ? "" : fullname.substring(idx + 1).toLowerCase();
-    }
-    
-    public StoredFile(String name, String ext) {
-        this.name = name;
-        this.ext = ext != null ? ext.toLowerCase() : "";
-    }
-    
-    public static String[] getExtensions(){
-    	
-    	Set<String> extensions = new HashSet<String>();
-    	extensions.addAll(convertExtensions);
-    	extensions.addAll(pdfExtensions);
-    	extensions.addAll(imageExtensions);
-    	extensions.addAll(chartExtensions);
-    	extensions.addAll(videoExtensions);
-    	extensions.addAll(asIsExtensions);
-    	
-    	Object[] returnObj = extensions.toArray();
-    	
-    	String[] returnStr = new String[returnObj.length];
-    	
-    	int i=0;
-    	for (Object obj : returnObj) {
-    		returnStr[i] = obj.toString();
-    		i++;
-    	}
-    	
-    	return returnStr;
-    }
-
-    public boolean isConvertable() {
-        return convertExtensions.contains(ext);
-    }
-
-    public boolean isPresentation() {
-        return isConvertable() || isPdf();
-    }
-
-    public boolean isPdf() {
-        return pdfExtensions.contains(ext);
-    }
-
-    public boolean isImage() {
-        return imageExtensions.contains(ext);
-    }
-
-    public boolean isVideo() {
-        return videoExtensions.contains(ext);
-    }
-
-    public boolean isChart() {
-        return chartExtensions.contains(ext);
-    }
-
-    public boolean isAsIs() {
-        return asIsExtensions.contains(ext);
-    }
+	public StoredFile(String fullname) {
+		int idx = fullname.lastIndexOf('.');
+		name = idx < 0 ? fullname : fullname.substring(0, idx);
+		ext = idx < 0 ? "" : fullname.substring(idx + 1).toLowerCase();
+	}
+
+	public StoredFile(String name, String ext) {
+		this.name = name;
+		this.ext = ext != null ? ext.toLowerCase() : "";
+	}
+
+	public static String[] getExtensions() {
+		Set<String> extensions = new HashSet<>();
+		extensions.addAll(convertExtensions);
+		extensions.addAll(pdfExtensions);
+		extensions.addAll(imageExtensions);
+		extensions.addAll(chartExtensions);
+		extensions.addAll(videoExtensions);
+		extensions.addAll(asIsExtensions);
+
+		return extensions.toArray(new String[extensions.size()]);
+	}
+
+	public static String getAcceptAttr() {
+		Set<String> ext = new LinkedHashSet<>();
+		ext.addAll(convertExtensions);
+		ext.addAll(pdfExtensions);
+		ext.addAll(chartExtensions);
+		StringBuilder sb = new StringBuilder("video/*,image/*,."); // TODO add audio/*,
+		sb.append(StringUtils.join(ext, ",."));
+		// TODO java8 String.join("|.", ext);
+		return sb.toString();
+	}
+
+	public boolean isConvertable() {
+		return convertExtensions.contains(ext);
+	}
+
+	public boolean isPresentation() {
+		return isConvertable() || isPdf();
+	}
+
+	public boolean isPdf() {
+		return pdfExtensions.contains(ext);
+	}
+
+	public boolean isImage() {
+		return imageExtensions.contains(ext);
+	}
+
+	public boolean isVideo() {
+		return videoExtensions.contains(ext);
+	}
+
+	public boolean isChart() {
+		return chartExtensions.contains(ext);
+	}
+
+	public boolean isAsIs() {
+		return asIsExtensions.contains(ext);
+	}
 
-    public String getName() {
+	public String getName() {
 		return name;
 	}
 }

Modified: openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ConverterProcessResultList.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ConverterProcessResultList.java?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ConverterProcessResultList.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ConverterProcessResultList.java Tue Apr 19 08:58:04 2016
@@ -21,7 +21,7 @@ package org.apache.openmeetings.util.pro
 import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
 import static org.red5.logging.Red5LoggerFactory.getLogger;
 
-import java.util.HashMap;
+import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Map.Entry;
 
@@ -37,17 +37,17 @@ import org.slf4j.Logger;
 public class ConverterProcessResultList {
 	private static final Logger log = getLogger(ConverterProcessResultList.class, webAppRootKey);
 
-	private Map<String, ConverterProcessResult> jobslist = new HashMap<String, ConverterProcessResult>();
+	private Map<String, ConverterProcessResult> jobslist = new LinkedHashMap<>();
 
-	private Long fileExplorerItemId;
+	private Long fileItemId;
 	private String completeName;
 
-	public Long getFileExplorerItemId() {
-		return fileExplorerItemId;
+	public Long getFileItemId() {
+		return fileItemId;
 	}
 
-	public void setFileExplorerItemId(Long fileExplorerItemId) {
-		this.fileExplorerItemId = fileExplorerItemId;
+	public void setFileItemId(Long fileItemId) {
+		this.fileItemId = fileItemId;
 	}
 
 	public String getCompleteName() {
@@ -58,8 +58,7 @@ public class ConverterProcessResultList
 		this.completeName = completeName;
 	}
 
-	public ConverterProcessResult addItem(String name,
-			ConverterProcessResult processResult) {
+	public ConverterProcessResult addItem(String name, ConverterProcessResult processResult) {
 		if (jobslist.containsKey(name)) {
 			log.error("Duplicate key in jobslist");
 			return null;
@@ -74,7 +73,7 @@ public class ConverterProcessResultList
 	 */
 	public boolean hasError() {
 		for (Entry<String, ConverterProcessResult> entry : jobslist.entrySet()) {
-			if (entry.getValue().getExitValue().equals("-1")) {
+			if ("-1".equals(entry.getValue().getExitValue())) {
 				return true;
 			}
 		}
@@ -97,32 +96,6 @@ public class ConverterProcessResultList
 		return logMessage.toString();
 	}
 
-	/**
-	 * Axis need Objects or array of objects, Map won't work
-	 * 
-	 * @return
-	 */
-	public FileImportError[] convertToFileImportErrors() {
-		FileImportError[] errors = new FileImportError[jobslist.size()];
-
-		int i = 0;
-		// Axis need Objects or array of objects, Map won't work
-		for (Map.Entry<String, ConverterProcessResult> me : jobslist.entrySet()) {
-
-			ConverterProcessResult result = me.getValue();
-
-			errors[i] = new FileImportError();
-			errors[i].setCommand((result.getCommand() != null) ? result.getCommand().toString() : "");
-			errors[i].setError((result.getError() != null) ? result.getError().toString() : "");
-			errors[i].setExitValue((result.getExitValue() != null) ? Integer.valueOf(result.getExitValue().toString()) : 0);
-			errors[i].setProcess((result.getProcess() != null) ? result.getProcess().toString() : "");
-
-			i++;
-		}
-		
-		return errors;
-	}
-
 	public int size() {
 		return jobslist.size();
 	}

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.html?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.html (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.html Tue Apr 19 08:58:04 2016
@@ -25,33 +25,33 @@
 			<fieldset class="ui-widget-content">
 				<legend class="ui-widget-header"><wicket:message key="1066" /></legend>
 				<div class="formelement">
-				    <div class="info-text"><wicket:message key="1065" /></div>
-	            </div>
-	            <div class="formelement">
-                   <label><wicket:message key="1537" /></label> <input type="checkbox" wicket:id="includeFilesInBackup" />
-	            </div>
-	            <div class="formelement">
-	               <span wicket:id="progress"></span>
-	               <div wicket:id="dprogress"></div>
-	            </div>
-	            <div class="formelement">
-		            <!-- Perform Download -->
+					<div class="info-text"><wicket:message key="1065" /></div>
+				</div>
+				<div class="formelement">
+					<label><wicket:message key="1537" /></label> <input type="checkbox" wicket:id="includeFilesInBackup" />
+				</div>
+				<div class="formelement">
+					<span wicket:id="progress"></span>
+					<div wicket:id="dprogress"></div>
+				</div>
+				<div class="formelement">
+					<!-- Perform Download -->
 					<div wicket:id="download" class="btn"><wicket:message key="1066"/></div>
 					<!-- Perform Upload -->
-					<div class="fileupload fileupload-new" data-provides="fileupload" style="margin: 0; display: inline-block;">
+					<div class="fileinput fileinput-new" data-provides="fileinput" style="margin: 0; display: inline-block;">
 						<span class="btn btn-file ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"><span 
 							class="ui-button-text"><wicket:message key="1536"/></span><input class="uploadFileField" wicket:id="fileInput" type="file"/></span>
 					</div>
-	            </div>
-	            <div class="formelement">
-		            <!-- Max upload size -->
-		            <wicket:message key="1491" /> <span wicket:id="MaxUploadSize" /><span>MB</span>
-	            </div>
-	            <div class="formelement">
-		            <!-- Backup CLI import information -->
-	               <div class="info-text" wicket:id="cmdLineDesc"></div>
-	            </div>
-	        </fieldset>
+				</div>
+				<div class="formelement">
+					<!-- Max upload size -->
+					<wicket:message key="1491" /> <span wicket:id="MaxUploadSize" /><span>MB</span>
+				</div>
+				<div class="formelement">
+					<!-- Backup CLI import information -->
+					<div class="info-text" wicket:id="cmdLineDesc"></div>
+				</div>
+			</fieldset>
 		</form>
 	</wicket:panel>
 </html>

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html Tue Apr 19 08:58:04 2016
@@ -52,7 +52,7 @@
 								<span wicket:id="export" class="btn"><wicket:message key="360"/></span>
 							</td>
 							<td>
-								<div class="fileupload fileupload-new" data-provides="fileupload" style="margin: 0;">
+								<div class="fileinput fileinput-new" data-provides="fileinput" style="margin: 0;">
 									<span class="btn btn-file ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only"><span class="ui-button-text"><wicket:message key="387"/></span><input type="file" accept="text/xml" wicket:id="fileInput"/></span>
 								</div>
 								<span wicket:id="progress">[progressbar]</span>

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java Tue Apr 19 08:58:04 2016
@@ -57,16 +57,17 @@ import org.apache.openmeetings.web.pages
 import org.apache.openmeetings.web.pages.SwfPage;
 import org.apache.openmeetings.web.pages.auth.SignInPage;
 import org.apache.openmeetings.web.pages.install.InstallWizardPage;
+import org.apache.openmeetings.web.room.RoomSwfResourceReference;
 import org.apache.openmeetings.web.user.dashboard.MyRoomsWidgetDescriptor;
 import org.apache.openmeetings.web.user.dashboard.RssWidgetDescriptor;
 import org.apache.openmeetings.web.user.dashboard.StartWidgetDescriptor;
 import org.apache.openmeetings.web.user.dashboard.WelcomeWidgetDescriptor;
 import org.apache.openmeetings.web.user.dashboard.admin.AdminWidgetDescriptor;
-import org.apache.openmeetings.web.util.AviRecordingResourceReference;
-import org.apache.openmeetings.web.util.FlvRecordingResourceReference;
-import org.apache.openmeetings.web.util.JpgRecordingResourceReference;
-import org.apache.openmeetings.web.util.Mp4RecordingResourceReference;
-import org.apache.openmeetings.web.util.OggRecordingResourceReference;
+import org.apache.openmeetings.web.user.record.AviRecordingResourceReference;
+import org.apache.openmeetings.web.user.record.FlvRecordingResourceReference;
+import org.apache.openmeetings.web.user.record.JpgRecordingResourceReference;
+import org.apache.openmeetings.web.user.record.Mp4RecordingResourceReference;
+import org.apache.openmeetings.web.user.record.OggRecordingResourceReference;
 import org.apache.openmeetings.web.util.ProfileImageResourceReference;
 import org.apache.openmeetings.web.util.UserDashboardPersister;
 import org.apache.wicket.Localizer;
@@ -154,7 +155,8 @@ public class Application extends Authent
 		mountResource("/recordings/mp4/${id}", new Mp4RecordingResourceReference());
 		mountResource("/recordings/ogg/${id}", new OggRecordingResourceReference());
 		mountResource("/recordings/jpg/${id}", new JpgRecordingResourceReference()); //should be in sync with VideoPlayer
-		mountResource("/profile/${id}", new ProfileImageResourceReference()); //should be in sync with VideoPlayer
+		mountResource("/room/swf/${id}", new RoomSwfResourceReference());
+		mountResource("/profile/${id}", new ProfileImageResourceReference());
 	}
 
 	private static class NoVersionMapper extends MountedMapper {
@@ -218,6 +220,10 @@ public class Application extends Authent
 		}
 	}
 	
+	public static boolean isUserOnline(String uid) {
+		return ONLINE_USERS.containsKey(uid);
+	}
+	
 	public static boolean isUserOnline(Long userId) {
 		boolean isUserOnline = false;
 		for (Map.Entry<String, Client> e : ONLINE_USERS.entrySet()) {

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.html
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.html?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.html (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.html Tue Apr 19 08:58:04 2016
@@ -21,7 +21,7 @@
 <html xmlns:wicket="http://wicket.apache.org">
 	<wicket:extend>
 		<form wicket:id="form"><div 
-			class="fileupload fileupload-new" data-provides="fileupload" style="margin: 0;"><span 
+			class="fileinput fileinput-new" data-provides="fileinput" style="margin: 0;"><span 
 			class="btn btn-file ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" 
 			style="width: 120px;"><span class="ui-button-text"><wicket:message key="379"/></span><input 
 			type="file" accept="image/*" wicket:id="image"/></span></div><span wicket:id="progress">[progressbar]</span></form>

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java Tue Apr 19 08:58:04 2016
@@ -179,6 +179,10 @@ public abstract class FileTreePanel exte
 
 	public abstract void updateSizes();
 	
+	public FileItem getSelectedFile() {
+		return selectedFile.getObject();
+	}
+	
 	@Override
 	protected void onDetach() {
 		selectedFile.detach();

Added: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomFileResourceReference.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomFileResourceReference.java?rev=1739871&view=auto
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomFileResourceReference.java (added)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomFileResourceReference.java Tue Apr 19 08:58:04 2016
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "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
+ *
+ * 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
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.room;
+
+import java.io.File;
+
+import org.apache.openmeetings.core.data.file.FileProcessor;
+import org.apache.openmeetings.db.entity.file.FileExplorerItem;
+
+public class RoomFileResourceReference extends RoomResourceReference {
+	private static final long serialVersionUID = 1L;
+
+	public RoomFileResourceReference() {
+		super("original-room-file");
+	}
+
+	@Override
+	protected String getMimeType() {
+		return "application/octet-stream";
+	}
+
+	@Override
+	protected String getFileName(FileExplorerItem r) {
+		return r.getName();
+	}
+
+	@Override
+	protected File getFile(FileExplorerItem r) {
+		return getFile(r, FileProcessor.getExt(r));
+	}
+}

Added: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPdfResourceReference.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPdfResourceReference.java?rev=1739871&view=auto
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPdfResourceReference.java (added)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPdfResourceReference.java Tue Apr 19 08:58:04 2016
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "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
+ *
+ * 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
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.room;
+
+import java.io.File;
+
+import org.apache.openmeetings.db.entity.file.FileExplorerItem;
+
+public class RoomPdfResourceReference extends RoomResourceReference {
+	private static final long serialVersionUID = 1L;
+
+	public RoomPdfResourceReference() {
+		super("pdf-room-file");
+	}
+
+	@Override
+	protected String getMimeType() {
+		return "application/pdf";
+	}
+
+	@Override
+	protected String getFileName(FileExplorerItem r) {
+		return r.getName();
+	}
+
+	@Override
+	protected File getFile(FileExplorerItem r) {
+		return getFile(r, "pdf");
+	}
+}

Added: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java?rev=1739871&view=auto
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java (added)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java Tue Apr 19 08:58:04 2016
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "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
+ *
+ * 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
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.room;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.Application.isUserOnline;
+
+import java.io.File;
+
+import org.apache.openmeetings.db.dao.file.FileExplorerItemDao;
+import org.apache.openmeetings.db.entity.file.FileExplorerItem;
+import org.apache.openmeetings.util.OmFileHelper;
+import org.apache.openmeetings.web.app.WebSession;
+import org.apache.openmeetings.web.util.FileItemResourceReference;
+import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.apache.wicket.request.resource.IResource.Attributes;
+import org.apache.wicket.util.string.StringValue;
+import org.apache.wicket.util.string.Strings;
+
+public abstract class RoomResourceReference extends FileItemResourceReference<FileExplorerItem> {
+	private static final long serialVersionUID = 1L;
+
+	public RoomResourceReference(String name) {
+		super(name);
+	}
+
+	@Override
+	protected FileExplorerItem getFileItem(Attributes attributes) {
+		PageParameters params = attributes.getParameters();
+		StringValue _id = params.get("id");
+		String uid = params.get("uid").toString();
+		Long id = null;
+		try {
+			id = _id.toOptionalLong();
+		} catch (NumberFormatException e) {
+			//no-op expected
+		}
+		WebSession ws = WebSession.get();
+		if (id != null && ws.isSignedIn() && !Strings.isEmpty(uid) && isUserOnline(uid)) {
+			//TODO ADDITIONALLY CHECK Rights !! and room !!
+			return getBean(FileExplorerItemDao.class).get(id);
+		}
+		return null;
+	}
+
+	protected File getFile(FileExplorerItem r, String ext) {
+		File d = new File(OmFileHelper.getUploadFilesDir(), r.getHash());
+		return new File(d, String.format("%s.%s", r.getHash(), ext));
+	}
+}

Added: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomSwfResourceReference.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomSwfResourceReference.java?rev=1739871&view=auto
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomSwfResourceReference.java (added)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomSwfResourceReference.java Tue Apr 19 08:58:04 2016
@@ -0,0 +1,46 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "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
+ *
+ * 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
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.room;
+
+import java.io.File;
+
+import org.apache.openmeetings.db.entity.file.FileExplorerItem;
+
+public class RoomSwfResourceReference extends RoomResourceReference {
+	private static final long serialVersionUID = 1L;
+
+	public RoomSwfResourceReference() {
+		super("swf-room-file");
+	}
+
+	@Override
+	protected String getMimeType() {
+		return "application/x-shockwave-flash";
+	}
+
+	@Override
+	protected String getFileName(FileExplorerItem r) {
+		return r.getName();
+	}
+
+	@Override
+	protected File getFile(FileExplorerItem r) {
+		return getFile(r, "swf");
+	}
+}

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java Tue Apr 19 08:58:04 2016
@@ -186,7 +186,14 @@ public class RoomMenuPanel extends Panel
 		exitMenuItem.setTop(true);
 		menu.add(exitMenuItem);
 		
-		filesMenu.getItems().add(new RoomMenuItem(Application.getString(15), Application.getString(1479)));
+		filesMenu.getItems().add(new RoomMenuItem(Application.getString(15), Application.getString(1479)) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			public void onClick(AjaxRequestTarget target) {
+				room.getSidebar().showUpload(target);
+			}
+		});
 		filesMenu.setTop(true);
 		menu.add(filesMenu);
 		

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/room.js Tue Apr 19 08:58:04 2016
@@ -17,7 +17,7 @@
  * under the License.
  */
 function setHeight() {
-	var h = $(window).height() - $('#roomMenu').height();
+	var h = $(window).height() - $('#menu').height();
 	$(".room.sidebar.left").height(h);
 	var p = $(".room.sidebar.left .tabs");
 	p.height(h - 5); //FIXME hacks

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java Tue Apr 19 08:58:04 2016
@@ -39,7 +39,9 @@ import org.apache.openmeetings.web.commo
 import org.apache.openmeetings.web.common.tree.FileTreePanel;
 import org.apache.openmeetings.web.common.tree.MyRecordingTreeProvider;
 import org.apache.openmeetings.web.common.tree.PublicRecordingTreeProvider;
+import org.apache.openmeetings.web.room.RoomPanel;
 import org.apache.wicket.Component;
+import org.apache.wicket.ajax.AjaxEventBehavior;
 import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.extensions.markup.html.repeater.tree.ITreeProvider;
 import org.apache.wicket.model.IModel;
@@ -47,11 +49,11 @@ import org.apache.wicket.model.Model;
 
 public class RoomFilePanel extends FileTreePanel {
 	private static final long serialVersionUID = 1L;
-	private final long roomId;
+	private final RoomPanel room;
 
-	public RoomFilePanel(String id, final long roomId) {
+	public RoomFilePanel(String id, RoomPanel room) {
 		super(id);
-		this.roomId = roomId;
+		this.room = room;
 	}
 	
 	@Override
@@ -70,6 +72,14 @@ public class RoomFilePanel extends FileT
 	protected Component getUpload(String id) {
 		Component u = super.getUpload(id);
 		u.setVisible(true);
+		u.add(new AjaxEventBehavior("click") {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onEvent(AjaxRequestTarget target) {
+				room.getSidebar().showUpload(target);
+			}
+		});
 		return u;
 	}
 	
@@ -79,7 +89,7 @@ public class RoomFilePanel extends FileT
 		f.setOwnerId(getUserId());
 		selectedFile.setObject(f);
 		treesView.add(selected = new FileItemTree<FileExplorerItem>(treesView.newChildId(), this, new FilesTreeProvider(null)));
-		treesView.add(new FileItemTree<FileExplorerItem>(treesView.newChildId(), this, new FilesTreeProvider(roomId)));
+		treesView.add(new FileItemTree<FileExplorerItem>(treesView.newChildId(), this, new FilesTreeProvider(room.getRoom().getId())));
 		treesView.add(new FileItemTree<Recording>(treesView.newChildId(), this, new MyRecordingTreeProvider()));
 		treesView.add(new FileItemTree<Recording>(treesView.newChildId(), this, new PublicRecordingTreeProvider(null, null)));
 		for (GroupUser ou : getBean(UserDao.class).get(getUserId()).getGroupUsers()) {

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.html
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.html?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.html (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.html Tue Apr 19 08:58:04 2016
@@ -38,5 +38,6 @@
 	<wicket:fragment wicket:id="file-panel">
 		<div class="file list" wicket:id="tree"></div>
 	</wicket:fragment>
+	<div wicket:id="upload"></div>
 </wicket:panel>
 </html>

Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java Tue Apr 19 08:58:04 2016
@@ -53,6 +53,8 @@ public class RoomSidebar extends Panel {
 	private final TabbedPanel tabs;
 	private final ITab userTab;
 	private final ITab fileTab;
+	private final UploadDialog upload;
+	private final RoomFilePanel roomFiles;
 	private boolean showFiles;
 	private final ListView<RoomClient> users = new ListView<RoomClient>("user", new ArrayList<RoomClient>()) {
 		private static final long serialVersionUID = 1L;
@@ -121,6 +123,8 @@ public class RoomSidebar extends Panel {
 			}
 		};
 		add(tabs = new TabbedPanel("tabs", Arrays.asList(userTab, fileTab)).setActiveTab(room.getRoom().isFilesOpened() ? 1 : 0));
+		roomFiles = new RoomFilePanel("tree", room);
+		add(upload = new UploadDialog("upload", room, roomFiles));
 	}
 	
 	public class UserFragment extends Fragment {
@@ -137,7 +141,7 @@ public class RoomSidebar extends Panel {
 
 		public FileFragment(String id, String markupId) {
 			super(id, markupId, RoomSidebar.this);
-			add(new RoomFilePanel("tree", room.getRoom().getId()));
+			add(roomFiles);
 		}
 	}
 
@@ -173,4 +177,8 @@ public class RoomSidebar extends Panel {
 	public boolean isShowFiles() {
 		return showFiles;
 	}
+	
+	public void showUpload(IPartialPageRequestHandler handler) {
+		upload.open(handler);
+	}
 }

Added: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.html
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.html?rev=1739871&view=auto
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.html (added)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.html Tue Apr 19 08:58:04 2016
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "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
+    	  
+  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
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+  
+-->
+<html xmlns:wicket="http://wicket.apache.org">
+<wicket:panel>
+	<form wicket:id="form">
+		<div style="margin-bottom: 30px;"><wicket:message key="594"/></div>
+		<div class="fileinput fileinput-new" data-provides="fileinput" style="margin: 0;">
+			<div style="display: block;" class="fileinput-filename"></div>
+			<span class="btn btn-file ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" style="width: 120px;">
+				<span class="ui-button-text"><wicket:message key="596"/></span>
+				<input type="file" wicket:id="file"/>
+			</span>
+		</div>
+		<div wicket:id="feedback"></div>
+		<span wicket:id="progress">[progressbar]</span>
+		<div style="margin-top: 30px;"><input type="checkbox"/><label><wicket:message key="1312"/></label></div>
+	</form>
+	<form wicket:id="name-form">
+		<input type="hidden" wicket:id="name"/>
+	</form>
+</wicket:panel>
+</html>

Added: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java?rev=1739871&view=auto
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java (added)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java Tue Apr 19 08:58:04 2016
@@ -0,0 +1,194 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "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
+ *
+ * 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
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.openmeetings.web.room.sidebar;
+
+import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.openmeetings.web.app.WebSession.getUserId;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.apache.openmeetings.core.data.file.FileProcessor;
+import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
+import org.apache.openmeetings.db.entity.file.FileExplorerItem;
+import org.apache.openmeetings.db.entity.file.FileItem;
+import org.apache.openmeetings.util.StoredFile;
+import org.apache.openmeetings.util.process.ConverterProcessResultList;
+import org.apache.openmeetings.web.app.Application;
+import org.apache.openmeetings.web.room.RoomPanel;
+import org.apache.openmeetings.web.util.BootstrapFileUploadBehavior;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
+import org.apache.wicket.behavior.AttributeAppender;
+import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
+import org.apache.wicket.extensions.ajax.markup.html.form.upload.UploadProgressBar;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.markup.head.PriorityHeaderItem;
+import org.apache.wicket.markup.html.form.Form;
+import org.apache.wicket.markup.html.form.HiddenField;
+import org.apache.wicket.markup.html.form.upload.FileUpload;
+import org.apache.wicket.markup.html.form.upload.FileUploadField;
+import org.apache.wicket.model.IModel;
+import org.apache.wicket.model.Model;
+import org.apache.wicket.request.resource.JavaScriptResourceReference;
+import org.apache.wicket.util.lang.Bytes;
+import org.apache.wicket.util.string.Strings;
+
+import com.googlecode.wicket.jquery.core.Options;
+import com.googlecode.wicket.jquery.ui.widget.dialog.AbstractFormDialog;
+import com.googlecode.wicket.jquery.ui.widget.dialog.DialogButton;
+import com.googlecode.wicket.kendo.ui.panel.KendoFeedbackPanel;
+
+public class UploadDialog extends AbstractFormDialog<String> {
+	private static final long serialVersionUID = 1L;
+	private final KendoFeedbackPanel feedback = new KendoFeedbackPanel("feedback", new Options("button", true));
+	private final Form<String> form;
+	private final DialogButton upload;
+	private final DialogButton cancel;
+	private final FileUploadField uploadField;
+	private final HiddenField<String> fileName;
+	private final RoomFilePanel roomFiles;
+	private final RoomPanel room;
+
+	public UploadDialog(String id, RoomPanel room, RoomFilePanel roomFiles) {
+		super(id, Application.getString(304));
+		this.roomFiles = roomFiles;
+		this.room = room;
+		add(form = new Form<>("form"));
+		upload = new DialogButton("upload", Application.getString(593), false) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			public boolean isIndicating() {
+				return true;
+			}
+		};
+		cancel = new DialogButton("close", Application.getString(85));
+		form.add(feedback.setOutputMarkupId(true));
+	
+		form.setMultiPart(true);
+		form.setMaxSize(Bytes.bytes(getBean(ConfigurationDao.class).getMaxUploadSize()));
+		// Model is necessary here to avoid writing image to the User object
+		form.add(uploadField = new FileUploadField("file", new IModel<List<FileUpload>>() {
+			private static final long serialVersionUID = 1L;
+
+			//FIXME this need to be eliminated
+			@Override
+			public void detach() {
+			}
+			
+			@Override
+			public void setObject(List<FileUpload> object) {
+			}
+			
+			@Override
+			public List<FileUpload> getObject() {
+				return null;
+			}
+		}));
+		uploadField.add(AttributeAppender.append("accept", StoredFile.getAcceptAttr()));
+		Form<String> nameForm = new Form<>("name-form");
+		fileName = new HiddenField<>("name", Model.of(""));
+		fileName.add(new AjaxFormSubmitBehavior(nameForm, "change") {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			protected void onSubmit(AjaxRequestTarget target) {
+				if (!Strings.isEmpty(getComponent().getDefaultModelObjectAsString())) {
+					upload.setEnabled(true, target);
+				}
+			}
+		}).setOutputMarkupId(true);
+		form.add(new UploadProgressBar("progress", form, uploadField));
+		add(nameForm.add(fileName.setOutputMarkupId(true)));
+		add(BootstrapFileUploadBehavior.INSTANCE);
+	}
+
+	@Override
+	public void onClick(AjaxRequestTarget target, DialogButton button) {
+		if (button == null || button.match("close")) {
+			super.onClick(target, button);
+		}
+	}
+	
+	@Override
+	protected List<DialogButton> getButtons() {
+		return Arrays.asList(upload, cancel);
+	}
+	
+	@Override
+	public DialogButton getSubmitButton() {
+		return upload;
+	}
+
+	@Override
+	public Form<?> getForm() {
+		return form;
+	}
+
+	@Override
+	protected void onOpen(IPartialPageRequestHandler handler) {
+		super.onOpen(handler);
+		handler.appendJavaScript(String.format("bindUpload('%s', '%s');", form.getMarkupId(), fileName.getMarkupId()));
+	}
+	
+	@Override
+	protected void onError(AjaxRequestTarget target) {
+		target.add(feedback);
+	}
+
+	@Override
+	protected void onSubmit(AjaxRequestTarget target) {
+		FileUpload fu = uploadField.getFileUpload();
+		if (fu != null) {
+			FileExplorerItem f = new FileExplorerItem();
+			f.setSize(fu.getSize());
+			f.setName(fu.getClientFileName());
+			FileItem parent = roomFiles.getSelectedFile();
+			if (parent == null || !(parent instanceof FileExplorerItem)) {
+				f.setOwnerId(getUserId());
+			} else {
+				f.setRoomId(parent.getRoomId());
+				f.setOwnerId(parent.getOwnerId());
+				if (parent.getId() > 0) {
+					f.setParentId(FileItem.Type.Folder == parent.getType() ? parent.getId() : parent.getParentId());
+				}
+			}
+			f.setInsertedBy(getUserId());
+			
+			try {
+				ConverterProcessResultList result = getBean(FileProcessor.class).processFile(getUserId(), f, fu.getInputStream());
+				if (result.hasError()) {
+					error(result.getLogMessage());
+				} else {
+					close(target, null);
+				}
+			} catch (Exception e) {
+				error(e.getMessage());
+			}
+		}
+	}
+
+	@Override
+	public void renderHead(IHeaderResponse response) {
+		super.renderHead(response);
+		response.render(new PriorityHeaderItem(JavaScriptHeaderItem.forReference(new JavaScriptResourceReference(UploadDialog.class, "upload.js"))));
+	}
+}

Added: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/upload.js
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/upload.js?rev=1739871&view=auto
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/upload.js (added)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/upload.js Tue Apr 19 08:58:04 2016
@@ -0,0 +1,31 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "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
+ *
+ * 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
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+function bindUpload(markupId, hiddenId) {
+	var fi = $('#' + markupId + ' .fileinput');
+	if (!fi.eventAdded) {
+		$('#' + markupId + ' .fileinput').on('change.bs.fileinput', function(event) {
+			event.stopPropagation();
+			var hi = $('#' + hiddenId);
+			hi.val($('#' + markupId + ' .fileinput .fileinput-filename').text());
+			hi.trigger('change');
+			return false;
+		});
+		fi.eventAdded = true;
+	}
+}

Copied: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/AviRecordingResourceReference.java (from r1739859, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/AviRecordingResourceReference.java)
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/AviRecordingResourceReference.java?p2=openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/AviRecordingResourceReference.java&p1=openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/AviRecordingResourceReference.java&r1=1739859&r2=1739871&rev=1739871&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/AviRecordingResourceReference.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/AviRecordingResourceReference.java Tue Apr 19 08:58:04 2016
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.web.util;
+package org.apache.openmeetings.web.user.record;
 
 import static org.apache.openmeetings.util.OmFileHelper.getRecording;
 
@@ -37,12 +37,12 @@ public class AviRecordingResourceReferen
 	}
 	
 	@Override
-	String getFileName(Recording r) {
+	protected String getFileName(Recording r) {
 		return r.getAlternateDownload();
 	}
 	
 	@Override
-	File getFile(Recording r) {
+	protected File getFile(Recording r) {
 		return getRecording(r.getAlternateDownload());
 	}
 }

Copied: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/FlvRecordingResourceReference.java (from r1739846, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FlvRecordingResourceReference.java)
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/FlvRecordingResourceReference.java?p2=openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/FlvRecordingResourceReference.java&p1=openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FlvRecordingResourceReference.java&r1=1739846&r2=1739871&rev=1739871&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FlvRecordingResourceReference.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/FlvRecordingResourceReference.java Tue Apr 19 08:58:04 2016
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.web.util;
+package org.apache.openmeetings.web.user.record;
 
 import static org.apache.openmeetings.util.OmFileHelper.getRecording;
 
@@ -37,12 +37,12 @@ public class FlvRecordingResourceReferen
 	}
 	
 	@Override
-	String getFileName(Recording r) {
+	protected String getFileName(Recording r) {
 		return r.getHash();
 	}
 	
 	@Override
-	File getFile(Recording r) {
+	protected File getFile(Recording r) {
 		return getRecording(r.getHash());
 	}
 }

Copied: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/JpgRecordingResourceReference.java (from r1739846, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/JpgRecordingResourceReference.java)
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/JpgRecordingResourceReference.java?p2=openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/JpgRecordingResourceReference.java&p1=openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/JpgRecordingResourceReference.java&r1=1739846&r2=1739871&rev=1739871&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/JpgRecordingResourceReference.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/JpgRecordingResourceReference.java Tue Apr 19 08:58:04 2016
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.web.util;
+package org.apache.openmeetings.web.user.record;
 
 import static org.apache.openmeetings.util.OmFileHelper.getRecording;
 
@@ -37,12 +37,12 @@ public class JpgRecordingResourceReferen
 	}
 	
 	@Override
-	String getFileName(Recording r) {
+	protected String getFileName(Recording r) {
 		return r.getPreviewImage();
 	}
 	
 	@Override
-	File getFile(Recording r) {
+	protected File getFile(Recording r) {
 		return getRecording(r.getPreviewImage());
 	}
 }

Copied: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/Mp4RecordingResourceReference.java (from r1739846, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/Mp4RecordingResourceReference.java)
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/Mp4RecordingResourceReference.java?p2=openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/Mp4RecordingResourceReference.java&p1=openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/Mp4RecordingResourceReference.java&r1=1739846&r2=1739871&rev=1739871&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/Mp4RecordingResourceReference.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/Mp4RecordingResourceReference.java Tue Apr 19 08:58:04 2016
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.web.util;
+package org.apache.openmeetings.web.user.record;
 
 import static org.apache.openmeetings.util.OmFileHelper.MP4_EXTENSION;
 import static org.apache.openmeetings.util.OmFileHelper.getMp4Recording;
@@ -38,12 +38,12 @@ public class Mp4RecordingResourceReferen
 	}
 	
 	@Override
-	String getFileName(Recording r) {
+	protected String getFileName(Recording r) {
 		return r.getHash() + MP4_EXTENSION;
 	}
 	
 	@Override
-	File getFile(Recording r) {
+	protected File getFile(Recording r) {
 		return getMp4Recording(r.getHash());
 	}
 }

Copied: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/OggRecordingResourceReference.java (from r1739846, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/OggRecordingResourceReference.java)
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/OggRecordingResourceReference.java?p2=openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/OggRecordingResourceReference.java&p1=openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/OggRecordingResourceReference.java&r1=1739846&r2=1739871&rev=1739871&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/OggRecordingResourceReference.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/OggRecordingResourceReference.java Tue Apr 19 08:58:04 2016
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package org.apache.openmeetings.web.util;
+package org.apache.openmeetings.web.user.record;
 
 import static org.apache.openmeetings.util.OmFileHelper.OGG_EXTENSION;
 import static org.apache.openmeetings.util.OmFileHelper.getOggRecording;
@@ -38,12 +38,12 @@ public class OggRecordingResourceReferen
 	}
 	
 	@Override
-	String getFileName(Recording r) {
+	protected String getFileName(Recording r) {
 		return r.getHash() + OGG_EXTENSION;
 	}
 	
 	@Override
-	File getFile(Recording r) {
+	protected File getFile(Recording r) {
 		return getOggRecording(r.getHash());
 	}
 }