Author: solomax
Date: Wed Aug 10 10:35:29 2016
New Revision: 1755713
URL: http://svn.apache.org/viewvc?rev=1755713&view=rev
Log:
[OPENMEETINGS-1030] file type detection is changed, upload to WB is implemented
Added:
openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileDetector.java
openmeetings/application/branches/3.2.x/openmeetings-util/src/main/resources/
openmeetings/application/branches/3.2.x/openmeetings-util/src/main/resources/META-INF/
openmeetings/application/branches/3.2.x/openmeetings-util/src/main/resources/META-INF/services/
openmeetings/application/branches/3.2.x/openmeetings-util/src/main/resources/META-INF/services/java.nio.file.spi.FileTypeDetector
openmeetings/application/branches/3.2.x/openmeetings-util/src/test/java/org/apache/openmeetings/util/crypt/TestStoredFile.java
openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileDetector.java
openmeetings/application/trunk/openmeetings-util/src/main/resources/
openmeetings/application/trunk/openmeetings-util/src/main/resources/META-INF/
openmeetings/application/trunk/openmeetings-util/src/main/resources/META-INF/services/
openmeetings/application/trunk/openmeetings-util/src/main/resources/META-INF/services/java.nio.file.spi.FileTypeDetector
openmeetings/application/trunk/openmeetings-util/src/test/java/org/apache/openmeetings/util/crypt/TestStoredFile.java
Modified:
openmeetings/application/branches/3.2.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java
openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/StoredFile.java
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java
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/RoomPanel.java
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/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/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java
openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/StoredFile.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java
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/RoomPanel.java
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/room/sidebar/UploadDialog.html
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
Modified:
openmeetings/application/branches/3.2.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java?rev=1755713&r1=1755712&r2=1755713&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java
Wed Aug 10 10:35:29 2016
@@ -394,7 +394,7 @@ public class UserManager implements IUse
}
log.debug("Added user-Id " + u.getId());
- if (adr.getId() > 0 && u.getId() > 0) {
+ if (adr.getId() != null && u.getId() != null) {
return u.getId();
} else {
return -16L;
Added:
openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileDetector.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileDetector.java?rev=1755713&view=auto
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileDetector.java
(added)
+++
openmeetings/application/branches/3.2.x/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileDetector.java
Wed Aug 10 10:35:29 2016
@@ -0,0 +1,38 @@
+/*
+ * 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.util;
+
+import java.io.IOException;
+import java.nio.file.Path;
+import java.nio.file.spi.FileTypeDetector;
+
+public class OmFileDetector extends FileTypeDetector {
+ private final static String[] KNOWN_EXTS = {"dpx", "exr", "pcd",
"pcds", "xcf", "wpg", "tga"};
+ private final static String OTHER = "image/other";
+
+ @Override
+ public String probeContentType(Path path) throws IOException {
+ for (String ext : KNOWN_EXTS) {
+ if (("" + path).endsWith(ext)) {
+ return OTHER;
+ }
+ }
+ return null;
+ }
+}
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=1755713&r1=1755712&r2=1755713&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
Wed Aug 10 10:35:29 2016
@@ -18,35 +18,31 @@
*/
package org.apache.openmeetings.util;
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
import java.util.Arrays;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
+import javax.activation.MimetypesFileTypeMap;
+
import org.apache.commons.lang3.StringUtils;
+import org.apache.wicket.util.string.Strings;
public class StoredFile {
+ private final static MimetypesFileTypeMap MIMES_MAP = new
MimetypesFileTypeMap();
+ private final static String MIME_AUDIO = "audio";
+ private final static String MIME_VIDEO = "video";
+ private final static String MIME_IMAGE = "image";
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<>(Arrays.asList("avi", "mov", "flv", "mp4"));
-
private static final Set<String> asIsExtensions = new
HashSet<>(Arrays.asList("jpg", "xchart"));
private final String name;
@@ -63,26 +59,13 @@ public class StoredFile {
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);
+ StringBuilder sb = new
StringBuilder("audio/*,video/*,image/*,.");
+ sb.append(StringUtils.join(ext, ",.")); // TODO java8
String.join("|.", ext);
return sb.toString();
}
@@ -98,12 +81,29 @@ public class StoredFile {
return pdfExtensions.contains(ext);
}
+ private static String getMimeType(StoredFile f) {
+ String filename = String.format("%s%s%s", f.name,
Strings.isEmpty(f.ext) ? "" : ".", f.ext);
+ String type = "";
+ try {
+ type = Files.probeContentType(new
File(filename).toPath());
+ } catch (IOException e) {
+ //no-op
+ }
+ if (Strings.isEmpty(type)) {
+ type = MIMES_MAP.getContentType(filename);
+ }
+ String[] mime = type.split("/");
+ return mime[0];
+ }
+
public boolean isImage() {
- return imageExtensions.contains(ext);
+ String mime = getMimeType(this);
+ return MIME_IMAGE.equals(mime);
}
public boolean isVideo() {
- return videoExtensions.contains(ext);
+ String mime = getMimeType(this);
+ return MIME_AUDIO.equals(mime) || MIME_VIDEO.equals(mime);
}
public boolean isChart() {
Added:
openmeetings/application/branches/3.2.x/openmeetings-util/src/main/resources/META-INF/services/java.nio.file.spi.FileTypeDetector
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-util/src/main/resources/META-INF/services/java.nio.file.spi.FileTypeDetector?rev=1755713&view=auto
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-util/src/main/resources/META-INF/services/java.nio.file.spi.FileTypeDetector
(added)
+++
openmeetings/application/branches/3.2.x/openmeetings-util/src/main/resources/META-INF/services/java.nio.file.spi.FileTypeDetector
Wed Aug 10 10:35:29 2016
@@ -0,0 +1,12 @@
+# Licensed 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.
+org.apache.openmeetings.util.OmFileDetector
\ No newline at end of file
Added:
openmeetings/application/branches/3.2.x/openmeetings-util/src/test/java/org/apache/openmeetings/util/crypt/TestStoredFile.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-util/src/test/java/org/apache/openmeetings/util/crypt/TestStoredFile.java?rev=1755713&view=auto
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-util/src/test/java/org/apache/openmeetings/util/crypt/TestStoredFile.java
(added)
+++
openmeetings/application/branches/3.2.x/openmeetings-util/src/test/java/org/apache/openmeetings/util/crypt/TestStoredFile.java
Wed Aug 10 10:35:29 2016
@@ -0,0 +1,67 @@
+/*
+ * 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.util.crypt;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertFalse;
+
+import org.apache.openmeetings.util.StoredFile;
+import org.junit.Test;
+
+public class TestStoredFile {
+
+ @Test
+ public void testAudio() {
+ final String[] exts = {"aif", "aifc", "aiff", "au", "mp3",
"flac", "wav"}; //TODO enlarge
+ for (String ext : exts) {
+ StoredFile sf = new StoredFile("test", ext);
+ assertTrue(String.format("Files of type '%s' should be
treated as Video", ext), sf.isVideo());
+ assertFalse(String.format("Files of type '%s' should
NOT be treated as Image", ext), sf.isImage());
+ }
+ }
+
+ @Test
+ public void testVideo() {
+ final String[] exts = {"avi", "mov", "flv", "mp4"}; //TODO
enlarge
+ for (String ext : exts) {
+ StoredFile sf = new StoredFile("test", ext);
+ assertTrue(String.format("Files of type '%s' should be
treated as Video", ext), sf.isVideo());
+ assertFalse(String.format("Files of type '%s' should
NOT be treated as Image", ext), sf.isImage());
+ }
+ }
+
+ @Test
+ public void testImage() {
+ final String[] exts = {"png", "gif", "svg", "dpx", "exr",
+ "pcd", // PhotoCD
+ "pcds", // PhotoCD
+ "psd", // Adobe Photoshop
+ "tiff", // Tagged Image File Format
+ "xcf", // GIMP image
+ "wpg", // Word Perfect Graphics
+ "bmp", "ico", // Microsoft Icon
+ "tga", // Truevision Targa
+ "jpg", "jpeg"}; //TODO enlarge
+ for (String ext : exts) {
+ StoredFile sf = new StoredFile("test", ext);
+ assertTrue(String.format("Files of type '%s' should be
treated as Image", ext), sf.isImage());
+ assertFalse(String.format("Files of type '%s' should
NOT be treated as Video", ext), sf.isVideo());
+ }
+ }
+}
Modified:
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java?rev=1755713&r1=1755712&r2=1755713&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
Wed Aug 10 10:35:29 2016
@@ -92,7 +92,7 @@ public class LdapForm extends AdminBaseF
@Override
protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
LdapConfig ldapConfig = this.getModelObject();
- if (ldapConfig.getId() <= 0) {
+ if (ldapConfig.getId() != null) {
ldapConfig =
getBean(LdapConfigDao.class).get(ldapConfig.getId());
} else {
ldapConfig = new LdapConfig();
Modified:
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java?rev=1755713&r1=1755712&r2=1755713&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java
Wed Aug 10 10:35:29 2016
@@ -99,7 +99,7 @@ public class OAuthForm extends AdminBase
@Override
protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
OAuthServer server = this.getModelObject();
- if (server.getId() <= 0) {
+ if (server.getId() != null) {
server =
Application.getBean(OAuth2Dao.class).get(getModelObject().getId());
} else {
server = new OAuthServer();
Modified:
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java?rev=1755713&r1=1755712&r2=1755713&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java
Wed Aug 10 10:35:29 2016
@@ -99,7 +99,7 @@ public class ServerForm extends AdminBas
@Override
protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
Server server = getModelObject();
- if (server.getId() > 0) {
+ if (server.getId() != null) {
server =
Application.getBean(ServerDao.class).get(server.getId());
} else {
server = new Server();
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=1755713&r1=1755712&r2=1755713&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
Wed Aug 10 10:35:29 2016
@@ -146,7 +146,7 @@ public abstract class FileTreePanel exte
@Override
protected void onEvent(AjaxRequestTarget target) {
- target.add(trees);
+ update(target);
}
}));
trashToolbar.add(new ConfirmableAjaxBorder("trash",
getString("80"), getString("713")) {
@@ -155,7 +155,7 @@ public abstract class FileTreePanel exte
@Override
protected void onEvent(AjaxRequestTarget target) {
FileItem f = selected.getObject();
- if (f != null && f.getId() > 0) {
+ if (f != null && f.getId() != null) {
super.onEvent(target);
}
}
@@ -189,7 +189,7 @@ public abstract class FileTreePanel exte
getBean(FileExplorerItemDao.class).delete((FileExplorerItem)f);
}
}
- handler.add(trees);
+ update(handler);
}
protected abstract void update(AjaxRequestTarget target, FileItem f);
@@ -215,7 +215,7 @@ public abstract class FileTreePanel exte
f.setRoomId(p.getRoomId());
getBean(FileExplorerItemDao.class).update((FileExplorerItem)f);
}
- target.add(trees);
+ update(target);
}
public abstract void updateSizes();
@@ -223,7 +223,11 @@ public abstract class FileTreePanel exte
public FileItem getSelected() {
return selected.getObject();
}
-
+
+ public void update(IPartialPageRequestHandler handler) {
+ handler.add(trees);
+ }
+
void updateNode(AjaxRequestTarget target, FileItem fi) {
if (fi != null && target != null) {
if (Type.Folder == fi.getType()) {
Modified:
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java?rev=1755713&r1=1755712&r2=1755713&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
Wed Aug 10 10:35:29 2016
@@ -170,13 +170,7 @@ public class RoomPanel extends BasePanel
public void onDrop(AjaxRequestTarget target, Component
component) {
Object o = component.getDefaultModelObject();
if (activeWbId > -1 && o instanceof FileItem) {
- FileItem fi = (FileItem)o;
- if (fi.getType() ==
FileItem.Type.WmlFile) {
-
getBean(ConferenceLibrary.class).sendToWhiteboard(getClient().getUid(),
activeWbId, fi);
- } else {
- String url = urlFor(new
RoomResourceReference(), new PageParameters().add("id", fi.getId())).toString();
-
getBean(ScopeApplicationAdapter.class).sendToWhiteboard(getClient().getUid(),
activeWbId, fi, url);
- }
+ sendFileToWb((FileItem)o);
}
}
};
@@ -534,4 +528,15 @@ public class RoomPanel extends BasePanel
public String getPublishingUser() {
return publishingUser;
}
+
+ public void sendFileToWb(FileItem fi) {
+ if (activeWbId > -1) {
+ if (fi.getType() == FileItem.Type.WmlFile) {
+
getBean(ConferenceLibrary.class).sendToWhiteboard(getClient().getUid(),
activeWbId, fi);
+ } else {
+ String url = urlFor(new
RoomResourceReference(), new PageParameters().add("id", fi.getId())).toString();
+
getBean(ScopeApplicationAdapter.class).sendToWhiteboard(getClient().getUid(),
activeWbId, fi, url);
+ }
+ }
+ }
}
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=1755713&r1=1755712&r2=1755713&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
Wed Aug 10 10:35:29 2016
@@ -203,7 +203,7 @@ public class RoomSidebar extends Panel {
private void updateShowFiles() {
showFiles = !room.getRoom().isHidden(RoomElement.Files) &&
room.getClient().hasRight(Right.whiteBoard);
}
-
+
public void updateUsers(IPartialPageRequestHandler handler) {
updateShowFiles();
updateUsers();
@@ -212,6 +212,10 @@ public class RoomSidebar extends Panel {
handler.add(tabs);
}
+ public void updateFiles(IPartialPageRequestHandler handler) {
+ roomFiles.update(handler);
+ }
+
public boolean isShowFiles() {
return showFiles;
}
Modified:
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=1755713&r1=1755712&r2=1755713&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.html
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.html
Wed Aug 10 10:35:29 2016
@@ -31,7 +31,7 @@
</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>
+ <div style="margin-top: 30px;"><input wicket:id="to-wb"
type="checkbox"/><label wicket:for="to-wb"><wicket:message
key="1312"/></label></div>
</form>
<form wicket:id="name-form">
<input type="hidden" wicket:id="name"/>
Modified:
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=1755713&r1=1755712&r2=1755713&view=diff
==============================================================================
---
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
(original)
+++
openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
Wed Aug 10 10:35:29 2016
@@ -41,6 +41,7 @@ import org.apache.wicket.extensions.ajax
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.CheckBox;
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;
@@ -64,6 +65,7 @@ public class UploadDialog extends Abstra
private final DialogButton cancel;
private final FileUploadField uploadField;
private final HiddenField<String> fileName;
+ private final CheckBox toWb = new CheckBox("to-wb", Model.of(false));
private final RoomFilePanel roomFiles;
private final RoomPanel room;
@@ -81,7 +83,7 @@ public class UploadDialog extends Abstra
}
};
cancel = new DialogButton("close", Application.getString(85));
- form.add(feedback.setOutputMarkupId(true));
+ form.add(feedback.setOutputMarkupId(true), toWb);
form.setMultiPart(true);
form.setMaxSize(Bytes.bytes(getBean(ConfigurationDao.class).getMaxUploadSize()));
@@ -167,7 +169,7 @@ public class UploadDialog extends Abstra
} else {
f.setRoomId(parent.getRoomId());
f.setOwnerId(parent.getOwnerId());
- if (parent.getId() > 0) {
+ if (parent.getId() != null) {
f.setParentId(FileItem.Type.Folder ==
parent.getType() ? parent.getId() : parent.getParentId());
}
}
@@ -175,9 +177,13 @@ public class UploadDialog extends Abstra
try {
ConverterProcessResultList result =
getBean(FileProcessor.class).processFile(getUserId(), f, fu.getInputStream());
+ room.getSidebar().updateFiles(target);
if (result.hasError()) {
error(result.getLogMessage());
} else {
+ if (toWb.getModelObject()) {
+ room.sendFileToWb(f);
+ }
close(target, null);
}
} catch (Exception e) {
Modified:
openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java?rev=1755713&r1=1755712&r2=1755713&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java
(original)
+++
openmeetings/application/trunk/openmeetings-service/src/main/java/org/apache/openmeetings/service/user/UserManager.java
Wed Aug 10 10:35:29 2016
@@ -394,7 +394,7 @@ public class UserManager implements IUse
}
log.debug("Added user-Id " + u.getId());
- if (adr.getId() > 0 && u.getId() > 0) {
+ if (adr.getId() != null && u.getId() != null) {
return u.getId();
} else {
return -16L;
Added:
openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileDetector.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileDetector.java?rev=1755713&view=auto
==============================================================================
---
openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileDetector.java
(added)
+++
openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmFileDetector.java
Wed Aug 10 10:35:29 2016
@@ -0,0 +1,38 @@
+/*
+ * 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.util;
+
+import java.io.IOException;
+import java.nio.file.Path;
+import java.nio.file.spi.FileTypeDetector;
+
+public class OmFileDetector extends FileTypeDetector {
+ private final static String[] KNOWN_EXTS = {"dpx", "exr", "pcd",
"pcds", "xcf", "wpg", "tga"};
+ private final static String OTHER = "image/other";
+
+ @Override
+ public String probeContentType(Path path) throws IOException {
+ for (String ext : KNOWN_EXTS) {
+ if (("" + path).endsWith(ext)) {
+ return OTHER;
+ }
+ }
+ return null;
+ }
+}
Modified:
openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/StoredFile.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/StoredFile.java?rev=1755713&r1=1755712&r2=1755713&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/StoredFile.java
(original)
+++
openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/StoredFile.java
Wed Aug 10 10:35:29 2016
@@ -18,35 +18,31 @@
*/
package org.apache.openmeetings.util;
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
import java.util.Arrays;
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
+import javax.activation.MimetypesFileTypeMap;
+
import org.apache.commons.lang3.StringUtils;
+import org.apache.wicket.util.string.Strings;
public class StoredFile {
+ private final static MimetypesFileTypeMap MIMES_MAP = new
MimetypesFileTypeMap();
+ private final static String MIME_AUDIO = "audio";
+ private final static String MIME_VIDEO = "video";
+ private final static String MIME_IMAGE = "image";
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<>(Arrays.asList("avi", "mov", "flv", "mp4"));
-
private static final Set<String> asIsExtensions = new
HashSet<>(Arrays.asList("jpg", "xchart"));
private final String name;
@@ -63,26 +59,13 @@ public class StoredFile {
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);
+ StringBuilder sb = new
StringBuilder("audio/*,video/*,image/*,.");
+ sb.append(StringUtils.join(ext, ",.")); // TODO java8
String.join("|.", ext);
return sb.toString();
}
@@ -98,12 +81,29 @@ public class StoredFile {
return pdfExtensions.contains(ext);
}
+ private static String getMimeType(StoredFile f) {
+ String filename = String.format("%s%s%s", f.name,
Strings.isEmpty(f.ext) ? "" : ".", f.ext);
+ String type = "";
+ try {
+ type = Files.probeContentType(new
File(filename).toPath());
+ } catch (IOException e) {
+ //no-op
+ }
+ if (Strings.isEmpty(type)) {
+ type = MIMES_MAP.getContentType(filename);
+ }
+ String[] mime = type.split("/");
+ return mime[0];
+ }
+
public boolean isImage() {
- return imageExtensions.contains(ext);
+ String mime = getMimeType(this);
+ return MIME_IMAGE.equals(mime);
}
public boolean isVideo() {
- return videoExtensions.contains(ext);
+ String mime = getMimeType(this);
+ return MIME_AUDIO.equals(mime) || MIME_VIDEO.equals(mime);
}
public boolean isChart() {
Added:
openmeetings/application/trunk/openmeetings-util/src/main/resources/META-INF/services/java.nio.file.spi.FileTypeDetector
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-util/src/main/resources/META-INF/services/java.nio.file.spi.FileTypeDetector?rev=1755713&view=auto
==============================================================================
---
openmeetings/application/trunk/openmeetings-util/src/main/resources/META-INF/services/java.nio.file.spi.FileTypeDetector
(added)
+++
openmeetings/application/trunk/openmeetings-util/src/main/resources/META-INF/services/java.nio.file.spi.FileTypeDetector
Wed Aug 10 10:35:29 2016
@@ -0,0 +1,12 @@
+# Licensed 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.
+org.apache.openmeetings.util.OmFileDetector
\ No newline at end of file
Added:
openmeetings/application/trunk/openmeetings-util/src/test/java/org/apache/openmeetings/util/crypt/TestStoredFile.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-util/src/test/java/org/apache/openmeetings/util/crypt/TestStoredFile.java?rev=1755713&view=auto
==============================================================================
---
openmeetings/application/trunk/openmeetings-util/src/test/java/org/apache/openmeetings/util/crypt/TestStoredFile.java
(added)
+++
openmeetings/application/trunk/openmeetings-util/src/test/java/org/apache/openmeetings/util/crypt/TestStoredFile.java
Wed Aug 10 10:35:29 2016
@@ -0,0 +1,67 @@
+/*
+ * 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.util.crypt;
+
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertFalse;
+
+import org.apache.openmeetings.util.StoredFile;
+import org.junit.Test;
+
+public class TestStoredFile {
+
+ @Test
+ public void testAudio() {
+ final String[] exts = {"aif", "aifc", "aiff", "au", "mp3",
"flac", "wav"}; //TODO enlarge
+ for (String ext : exts) {
+ StoredFile sf = new StoredFile("test", ext);
+ assertTrue(String.format("Files of type '%s' should be
treated as Video", ext), sf.isVideo());
+ assertFalse(String.format("Files of type '%s' should
NOT be treated as Image", ext), sf.isImage());
+ }
+ }
+
+ @Test
+ public void testVideo() {
+ final String[] exts = {"avi", "mov", "flv", "mp4"}; //TODO
enlarge
+ for (String ext : exts) {
+ StoredFile sf = new StoredFile("test", ext);
+ assertTrue(String.format("Files of type '%s' should be
treated as Video", ext), sf.isVideo());
+ assertFalse(String.format("Files of type '%s' should
NOT be treated as Image", ext), sf.isImage());
+ }
+ }
+
+ @Test
+ public void testImage() {
+ final String[] exts = {"png", "gif", "svg", "dpx", "exr",
+ "pcd", // PhotoCD
+ "pcds", // PhotoCD
+ "psd", // Adobe Photoshop
+ "tiff", // Tagged Image File Format
+ "xcf", // GIMP image
+ "wpg", // Word Perfect Graphics
+ "bmp", "ico", // Microsoft Icon
+ "tga", // Truevision Targa
+ "jpg", "jpeg"}; //TODO enlarge
+ for (String ext : exts) {
+ StoredFile sf = new StoredFile("test", ext);
+ assertTrue(String.format("Files of type '%s' should be
treated as Image", ext), sf.isImage());
+ assertFalse(String.format("Files of type '%s' should
NOT be treated as Video", ext), sf.isVideo());
+ }
+ }
+}
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java?rev=1755713&r1=1755712&r2=1755713&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/ldaps/LdapForm.java
Wed Aug 10 10:35:29 2016
@@ -92,7 +92,7 @@ public class LdapForm extends AdminBaseF
@Override
protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
LdapConfig ldapConfig = this.getModelObject();
- if (ldapConfig.getId() <= 0) {
+ if (ldapConfig.getId() != null) {
ldapConfig =
getBean(LdapConfigDao.class).get(ldapConfig.getId());
} else {
ldapConfig = new LdapConfig();
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java?rev=1755713&r1=1755712&r2=1755713&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/oauth/OAuthForm.java
Wed Aug 10 10:35:29 2016
@@ -99,7 +99,7 @@ public class OAuthForm extends AdminBase
@Override
protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
OAuthServer server = this.getModelObject();
- if (server.getId() <= 0) {
+ if (server.getId() != null) {
server =
Application.getBean(OAuth2Dao.class).get(getModelObject().getId());
} else {
server = new OAuthServer();
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java?rev=1755713&r1=1755712&r2=1755713&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/servers/ServerForm.java
Wed Aug 10 10:35:29 2016
@@ -99,7 +99,7 @@ public class ServerForm extends AdminBas
@Override
protected void onRefreshSubmit(AjaxRequestTarget target, Form<?> form) {
Server server = getModelObject();
- if (server.getId() > 0) {
+ if (server.getId() != null) {
server =
Application.getBean(ServerDao.class).get(server.getId());
} else {
server = new Server();
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java?rev=1755713&r1=1755712&r2=1755713&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/FileTreePanel.java
Wed Aug 10 10:35:29 2016
@@ -146,7 +146,7 @@ public abstract class FileTreePanel exte
@Override
protected void onEvent(AjaxRequestTarget target) {
- target.add(trees);
+ update(target);
}
}));
trashToolbar.add(new ConfirmableAjaxBorder("trash",
getString("80"), getString("713")) {
@@ -155,7 +155,7 @@ public abstract class FileTreePanel exte
@Override
protected void onEvent(AjaxRequestTarget target) {
FileItem f = selected.getObject();
- if (f != null && f.getId() > 0) {
+ if (f != null && f.getId() != null) {
super.onEvent(target);
}
}
@@ -189,7 +189,7 @@ public abstract class FileTreePanel exte
getBean(FileExplorerItemDao.class).delete((FileExplorerItem)f);
}
}
- handler.add(trees);
+ update(handler);
}
protected abstract void update(AjaxRequestTarget target, FileItem f);
@@ -215,7 +215,7 @@ public abstract class FileTreePanel exte
f.setRoomId(p.getRoomId());
getBean(FileExplorerItemDao.class).update((FileExplorerItem)f);
}
- target.add(trees);
+ update(target);
}
public abstract void updateSizes();
@@ -223,7 +223,11 @@ public abstract class FileTreePanel exte
public FileItem getSelected() {
return selected.getObject();
}
-
+
+ public void update(IPartialPageRequestHandler handler) {
+ handler.add(trees);
+ }
+
void updateNode(AjaxRequestTarget target, FileItem fi) {
if (fi != null && target != null) {
if (Type.Folder == fi.getType()) {
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java?rev=1755713&r1=1755712&r2=1755713&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java
Wed Aug 10 10:35:29 2016
@@ -137,6 +137,7 @@ public class RoomPanel extends BasePanel
private String sharingUser = null;
private String recordingUser = null;
private String publishingUser = null; //TODO add
+ private long activeWbId = -1;
public RoomPanel(String id, Room r) {
super(id);
@@ -167,7 +168,8 @@ public class RoomPanel extends BasePanel
@Override
public void onDrop(AjaxRequestTarget target, Component
component) {
Object o = component.getDefaultModelObject();
- if (o instanceof FileItem) {
+ if (activeWbId > -1 && o instanceof FileItem) {
+ sendFileToWb((FileItem)o);
}
}
};
@@ -538,4 +540,15 @@ public class RoomPanel extends BasePanel
public String getPublishingUser() {
return publishingUser;
}
+
+ public void sendFileToWb(FileItem fi) {
+ if (activeWbId > -1) {
+ if (fi.getType() == FileItem.Type.WmlFile) {
+
getBean(ConferenceLibrary.class).sendToWhiteboard(getClient().getUid(),
activeWbId, fi);
+ } else {
+ String url = urlFor(new
RoomResourceReference(), new PageParameters().add("id", fi.getId())).toString();
+
getBean(ScopeApplicationAdapter.class).sendToWhiteboard(getClient().getUid(),
activeWbId, fi, url);
+ }
+ }
+ }
}
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java?rev=1755713&r1=1755712&r2=1755713&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.java
Wed Aug 10 10:35:29 2016
@@ -203,7 +203,7 @@ public class RoomSidebar extends Panel {
private void updateShowFiles() {
showFiles = !room.getRoom().isHidden(RoomElement.Files) &&
room.getClient().hasRight(Right.whiteBoard);
}
-
+
public void updateUsers(IPartialPageRequestHandler handler) {
updateShowFiles();
updateUsers();
@@ -212,6 +212,10 @@ public class RoomSidebar extends Panel {
handler.add(tabs);
}
+ public void updateFiles(IPartialPageRequestHandler handler) {
+ roomFiles.update(handler);
+ }
+
public boolean isShowFiles() {
return showFiles;
}
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.html
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.html?rev=1755713&r1=1755712&r2=1755713&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.html
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.html
Wed Aug 10 10:35:29 2016
@@ -31,7 +31,7 @@
</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>
+ <div style="margin-top: 30px;"><input wicket:id="to-wb"
type="checkbox"/><label wicket:for="to-wb"><wicket:message
key="1312"/></label></div>
</form>
<form wicket:id="name-form">
<input type="hidden" wicket:id="name"/>
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java?rev=1755713&r1=1755712&r2=1755713&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/UploadDialog.java
Wed Aug 10 10:35:29 2016
@@ -41,6 +41,7 @@ import org.apache.wicket.extensions.ajax
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.CheckBox;
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;
@@ -64,6 +65,7 @@ public class UploadDialog extends Abstra
private final DialogButton cancel;
private final FileUploadField uploadField;
private final HiddenField<String> fileName;
+ private final CheckBox toWb = new CheckBox("to-wb", Model.of(false));
private final RoomFilePanel roomFiles;
private final RoomPanel room;
@@ -81,7 +83,7 @@ public class UploadDialog extends Abstra
}
};
cancel = new DialogButton("close", Application.getString(85));
- form.add(feedback.setOutputMarkupId(true));
+ form.add(feedback.setOutputMarkupId(true), toWb);
form.setMultiPart(true);
form.setMaxSize(Bytes.bytes(getBean(ConfigurationDao.class).getMaxUploadSize()));
@@ -167,7 +169,7 @@ public class UploadDialog extends Abstra
} else {
f.setRoomId(parent.getRoomId());
f.setOwnerId(parent.getOwnerId());
- if (parent.getId() > 0) {
+ if (parent.getId() != null) {
f.setParentId(FileItem.Type.Folder ==
parent.getType() ? parent.getId() : parent.getParentId());
}
}
@@ -175,9 +177,13 @@ public class UploadDialog extends Abstra
try {
ConverterProcessResultList result =
getBean(FileProcessor.class).processFile(getUserId(), f, fu.getInputStream());
+ room.getSidebar().updateFiles(target);
if (result.hasError()) {
error(result.getLogMessage());
} else {
+ if (toWb.getModelObject()) {
+ room.sendFileToWb(f);
+ }
close(target, null);
}
} catch (Exception e) {