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());
        }
 }


Reply via email to