You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2016/04/19 10:58:05 UTC
svn commit: r1739871 [2/3] - in /openmeetings/application:
branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/
branches/3.2.x/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/
branches/3.2....
Copied: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java (from r1739846, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.java)
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java?p2=openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.java&p1=openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/RecordingResourceReference.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/RecordingResourceReference.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/RecordingResourceReference.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.OpenmeetingsVariables.webAppRootKey;
import static org.apache.openmeetings.web.app.Application.getBean;
@@ -25,26 +25,19 @@ import static org.apache.openmeetings.we
import static org.apache.openmeetings.web.app.WebSession.getUserId;
import static org.red5.logging.Red5LoggerFactory.getLogger;
-import java.io.File;
-import java.io.IOException;
-
-import javax.servlet.http.HttpServletResponse;
-
import org.apache.openmeetings.db.dao.record.RecordingDao;
import org.apache.openmeetings.db.dao.user.GroupUserDao;
import org.apache.openmeetings.db.dao.user.UserDao;
import org.apache.openmeetings.db.entity.record.Recording;
import org.apache.openmeetings.db.entity.user.User;
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;
import org.apache.wicket.request.resource.IResource.Attributes;
-import org.apache.wicket.resource.FileSystemResource;
-import org.apache.wicket.resource.FileSystemResourceReference;
import org.apache.wicket.util.string.StringValue;
import org.slf4j.Logger;
-public abstract class RecordingResourceReference extends FileSystemResourceReference {
+public abstract class RecordingResourceReference extends FileItemResourceReference<Recording> {
private static final long serialVersionUID = 1L;
private static final Logger log = getLogger(RecordingResourceReference.class, webAppRootKey);
@@ -53,36 +46,27 @@ public abstract class RecordingResourceR
}
@Override
- public IResource getResource() {
- return new FileSystemResource() {
- private static final long serialVersionUID = 1L;
- private File file;
-
- @Override
- protected String getMimeType() throws IOException {
- return RecordingResourceReference.this.getMimeType();
- }
-
- @Override
- protected ResourceResponse newResourceResponse(Attributes attributes) {
- Recording r = getRecording(attributes);
- if (r != null) {
- file = getFile(r);
- return createResourceResponse(file.toPath());
- } else {
- log.debug("No recording was found");
- ResourceResponse rr = new ResourceResponse();
- rr.setError(HttpServletResponse.SC_NOT_FOUND);
- return rr;
- }
+ protected Recording getFileItem(Attributes attributes) {
+ PageParameters params = attributes.getParameters();
+ StringValue _id = params.get("id");
+ Long id = null;
+ try {
+ id = _id.toOptionalLong();
+ } catch (NumberFormatException e) {
+ //no-op expected
+ }
+ WebSession ws = WebSession.get();
+ if (id != null && ws.isSignedIn()) {
+ return getRecording(id);
+ } else {
+ ws.invalidate();
+ if (ws.signIn(_id.toString(), true)) {
+ return getRecording(getRecordingId());
}
- };
+ }
+ return null;
}
- abstract String getMimeType();
- abstract String getFileName(Recording r);
- abstract File getFile(Recording r);
-
private static Recording getRecording(Long id) {
Recording r = getBean(RecordingDao.class).get(id);
// TODO should we process public?
@@ -99,32 +83,12 @@ public abstract class RecordingResourceR
//TODO external group check was added for plugin recording download
String extType = getExternalType();
if (extType != null) {
+ log.debug("External recording requested: " + extType);
User creator = getBean(UserDao.class).get(r.getInsertedBy());
if (extType.equals(creator.getExternalType())) {
return r;
}
}
return null;
- }
-
- private static Recording getRecording(Attributes attributes) {
- PageParameters params = attributes.getParameters();
- StringValue _id = params.get("id");
- Long id = null;
- try {
- id = _id.toOptionalLong();
- } catch (NumberFormatException e) {
- //no-op expected
- }
- WebSession ws = WebSession.get();
- if (id != null && ws.isSignedIn()) {
- return getRecording(id);
- } else {
- ws.invalidate();
- if (ws.signIn(_id.toString(), true)) {
- return getRecording(getRecordingId());
- }
- }
- return null;
}
}
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoPlayer.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoPlayer.java?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoPlayer.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoPlayer.java Tue Apr 19 08:58:04 2016
@@ -21,8 +21,6 @@ package org.apache.openmeetings.web.user
import static org.apache.openmeetings.util.OmFileHelper.getMp4Recording;
import org.apache.openmeetings.db.entity.record.Recording;
-import org.apache.openmeetings.web.util.Mp4RecordingResourceReference;
-import org.apache.openmeetings.web.util.OggRecordingResourceReference;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.media.Source;
Modified: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/BootstrapFileUploadBehavior.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/BootstrapFileUploadBehavior.java?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/BootstrapFileUploadBehavior.java (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/BootstrapFileUploadBehavior.java Tue Apr 19 08:58:04 2016
@@ -25,13 +25,14 @@ import org.apache.wicket.markup.head.IHe
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
import org.apache.wicket.request.resource.CssResourceReference;
import org.apache.wicket.request.resource.JavaScriptResourceReference;
+import org.apache.wicket.request.resource.ResourceReference;
public class BootstrapFileUploadBehavior extends Behavior {
private static final long serialVersionUID = 1L;
- private final static JavaScriptResourceReference BOOTSTRAP_FILEUPLOAD_JS_REFERENCE
- = new JavaScriptResourceReference(BootstrapFileUploadBehavior.class, "bootstrap-fileupload.js");
- private final static CssResourceReference BOOTSTRAP_FILEUPLOAD_CSS_REFERENCE
- = new CssResourceReference(BootstrapFileUploadBehavior.class, "bootstrap-fileupload.css");
+ private final static ResourceReference BOOTSTRAP_FILEINPUT_JS_REFERENCE
+ = new JavaScriptResourceReference(BootstrapFileUploadBehavior.class, "fileinput.js");
+ private final static ResourceReference BOOTSTRAP_FILEINPUT_CSS_REFERENCE
+ = new CssResourceReference(BootstrapFileUploadBehavior.class, "fileinput.css");
public final static BootstrapFileUploadBehavior INSTANCE = new BootstrapFileUploadBehavior();
private BootstrapFileUploadBehavior() {
@@ -40,7 +41,7 @@ public class BootstrapFileUploadBehavior
@Override
public void renderHead(Component component, IHeaderResponse response) {
super.renderHead(component, response);
- response.render(JavaScriptHeaderItem.forReference(BOOTSTRAP_FILEUPLOAD_JS_REFERENCE));
- response.render(CssHeaderItem.forReference(BOOTSTRAP_FILEUPLOAD_CSS_REFERENCE));
+ response.render(JavaScriptHeaderItem.forReference(BOOTSTRAP_FILEINPUT_JS_REFERENCE));
+ response.render(CssHeaderItem.forReference(BOOTSTRAP_FILEINPUT_CSS_REFERENCE));
}
}
Added: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java?rev=1739871&view=auto
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java (added)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/FileItemResourceReference.java Tue Apr 19 08:58:04 2016
@@ -0,0 +1,77 @@
+/*
+ * 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.util;
+
+import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
+import static org.red5.logging.Red5LoggerFactory.getLogger;
+
+import java.io.File;
+import java.io.IOException;
+
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.openmeetings.db.entity.file.FileItem;
+import org.apache.wicket.request.resource.IResource;
+import org.apache.wicket.request.resource.IResource.Attributes;
+import org.apache.wicket.resource.FileSystemResource;
+import org.apache.wicket.resource.FileSystemResourceReference;
+import org.slf4j.Logger;
+
+public abstract class FileItemResourceReference<T extends FileItem> extends FileSystemResourceReference {
+ private static final long serialVersionUID = 1L;
+ private static final Logger log = getLogger(FileItemResourceReference.class, webAppRootKey);
+
+ public FileItemResourceReference(String name) {
+ super(name);
+ }
+
+ @Override
+ public IResource getResource() {
+ return new FileSystemResource() {
+ private static final long serialVersionUID = 1L;
+ private File file;
+
+ @Override
+ protected String getMimeType() throws IOException {
+ return FileItemResourceReference.this.getMimeType();
+ }
+
+ @Override
+ protected ResourceResponse newResourceResponse(Attributes attributes) {
+ T r = getFileItem(attributes);
+ if (r != null) {
+ file = getFile(r);
+ ResourceResponse rr = createResourceResponse(file.toPath());
+ rr.setFileName(getFileName(r));
+ return rr;
+ } else {
+ log.debug("No file item was found");
+ ResourceResponse rr = new ResourceResponse();
+ rr.setError(HttpServletResponse.SC_NOT_FOUND);
+ return rr;
+ }
+ }
+ };
+ }
+
+ protected abstract String getMimeType();
+ protected abstract String getFileName(T r);
+ protected abstract File getFile(T r);
+ protected abstract T getFileItem(Attributes attributes);
+}
Copied: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.css (from r1739846, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/bootstrap-fileupload.css)
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.css?p2=openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.css&p1=openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/bootstrap-fileupload.css&r1=1739846&r2=1739871&rev=1739871&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/bootstrap-fileupload.css (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.css Tue Apr 19 08:58:04 2016
@@ -1,124 +1,234 @@
/*!
- * Bootstrap v2.3.1
- *
- * Copyright 2012 Twitter, Inc
- * Licensed under the Apache License v2.0
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Designed and built with all the love in the world @twitter by @mdo and @fat.
+ * Jasny Bootstrap v3.1.0 (http://jasny.github.com/bootstrap)
+ * Copyright 2011-2014 Arnold Daniels.
+ * Licensed under the Apache License, Version 2.0 (the "License"); (https://github.com/jasny/bootstrap/blob/master/LICENSE)
*/
-.btn-file {
- position: relative;
- overflow: hidden;
- vertical-align: middle;
-}
-
-.btn-file>input {
- position: absolute;
- top: 0;
- right: 0;
- margin: 0;
- font-size: 23px;
- cursor: pointer;
- opacity: 0;
- filter: alpha(opacity = 0);
- transform: translate(-300px, 0) scale(4);
- direction: ltr;
-}
-
-.fileupload {
- margin-bottom: 9px;
-}
-
-.fileupload .uneditable-input {
- display: inline-block;
- margin-bottom: 0;
- vertical-align: middle;
- cursor: text;
-}
-
-.fileupload .thumbnail {
- display: inline-block;
- margin-bottom: 5px;
- overflow: hidden;
- text-align: center;
- vertical-align: middle;
-}
-
-.fileupload .thumbnail>img {
- display: inline-block;
- max-height: 100%;
- vertical-align: middle;
-}
-
-.fileupload .btn {
- vertical-align: middle;
-}
-
-.fileupload-exists .fileupload-new,.fileupload-new .fileupload-exists {
- display: none;
-}
-
-.fileupload-inline .fileupload-controls {
- display: inline;
-}
-.fileupload-new .input-append .btn-file {
- -webkit-border-radius: 0 3px 3px 0;
- -moz-border-radius: 0 3px 3px 0;
- border-radius: 0 3px 3px 0;
+.btn-labeled {
+ padding-top: 0;
+ padding-bottom: 0;
+}
+.btn-label {
+ position: relative;
+ background: transparent;
+ background: rgba(0, 0, 0, 0.15);
+ display: inline-block;
+ padding: 6px 12px;
+ left: -12px;
+ border-radius: 3px 0 0 3px;
+}
+.btn-label.btn-label-right {
+ left: auto;
+ right: -12px;
+ border-radius: 0 3px 3px 0;
+}
+.btn-lg .btn-label {
+ padding: 10px 16px;
+ left: -16px;
+ border-radius: 5px 0 0 5px;
+}
+.btn-lg .btn-label.btn-label-right {
+ left: auto;
+ right: -16px;
+ border-radius: 0 5px 5px 0;
+}
+.btn-sm .btn-label {
+ padding: 5px 10px;
+ left: -10px;
+ border-radius: 2px 0 0 2px;
+}
+.btn-sm .btn-label.btn-label-right {
+ left: auto;
+ right: -10px;
+ border-radius: 0 2px 2px 0;
+}
+.btn-xs .btn-label {
+ padding: 1px 5px;
+ left: -5px;
+ border-radius: 2px 0 0 2px;
+}
+.btn-xs .btn-label.btn-label-right {
+ left: auto;
+ right: -5px;
+ border-radius: 0 2px 2px 0;
+}
+.nav-tabs-bottom {
+ border-bottom: 0;
+ border-top: 1px solid #dddddd;
+}
+.nav-tabs-bottom > li {
+ margin-bottom: 0;
+ margin-top: -1px;
+}
+.nav-tabs-bottom > li > a {
+ border-radius: 0 0 4px 4px;
+}
+.nav-tabs-bottom > li > a:hover,
+.nav-tabs-bottom > li > a:focus,
+.nav-tabs-bottom > li.active > a,
+.nav-tabs-bottom > li.active > a:hover,
+.nav-tabs-bottom > li.active > a:focus {
+ border: 1px solid #dddddd;
+ border-top-color: transparent;
+}
+.nav-tabs-left {
+ border-bottom: 0;
+ border-right: 1px solid #dddddd;
+}
+.nav-tabs-left > li {
+ margin-bottom: 0;
+ margin-right: -1px;
+ float: none;
+}
+.nav-tabs-left > li > a {
+ border-radius: 4px 0 0 4px;
+ margin-right: 0;
+ margin-bottom: 2px;
+}
+.nav-tabs-left > li > a:hover,
+.nav-tabs-left > li > a:focus,
+.nav-tabs-left > li.active > a,
+.nav-tabs-left > li.active > a:hover,
+.nav-tabs-left > li.active > a:focus {
+ border: 1px solid #dddddd;
+ border-right-color: transparent;
+}
+.row > .nav-tabs-left {
+ padding-right: 0;
+ padding-left: 15px;
+ margin-right: -1px;
+ position: relative;
+ z-index: 1;
+}
+.row > .nav-tabs-left + .tab-content {
+ border-left: 1px solid #dddddd;
+}
+.nav-tabs-right {
+ border-bottom: 0;
+ border-left: 1px solid #dddddd;
+}
+.nav-tabs-right > li {
+ margin-bottom: 0;
+ margin-left: -1px;
+ float: none;
+}
+.nav-tabs-right > li > a {
+ border-radius: 0 4px 4px 0;
+ margin-left: 0;
+ margin-bottom: 2px;
+}
+.nav-tabs-right > li > a:hover,
+.nav-tabs-right > li > a:focus,
+.nav-tabs-right > li.active > a,
+.nav-tabs-right > li.active > a:hover,
+.nav-tabs-right > li.active > a:focus {
+ border: 1px solid #dddddd;
+ border-left-color: transparent;
+}
+.row > .nav-tabs-right {
+ padding-left: 0;
+ padding-right: 15px;
}
-
-.thumbnail-borderless .thumbnail {
- padding: 0;
- border: none;
- -webkit-border-radius: 0;
- -moz-border-radius: 0;
- border-radius: 0;
- -webkit-box-shadow: none;
- -moz-box-shadow: none;
- box-shadow: none;
-}
-
-.fileupload-new.thumbnail-borderless .thumbnail {
- border: 1px solid #ddd;
-}
-
-.control-group.warning .fileupload .uneditable-input {
- color: #a47e3c;
- border-color: #a47e3c;
-}
-
-.control-group.warning .fileupload .fileupload-preview {
- color: #a47e3c;
-}
-
-.control-group.warning .fileupload .thumbnail {
- border-color: #a47e3c;
+.btn-file {
+ overflow: hidden;
+ position: relative;
+ vertical-align: middle;
+}
+.btn-file > input {
+ position: absolute;
+ top: 0;
+ right: 0;
+ margin: 0;
+ opacity: 0;
+ filter: alpha(opacity=0);
+ font-size: 23px;
+ height: 100%;
+ width: 100%;
+ direction: ltr;
+ cursor: pointer;
+}
+.fileinput {
+ margin-bottom: 9px;
+ display: inline-block;
+}
+.fileinput .form-control {
+ padding-top: 7px;
+ padding-bottom: 5px;
+ display: inline-block;
+ margin-bottom: 0px;
+ vertical-align: middle;
+ cursor: text;
+}
+.fileinput .thumbnail {
+ overflow: hidden;
+ display: inline-block;
+ margin-bottom: 5px;
+ vertical-align: middle;
+ text-align: center;
+}
+.fileinput .thumbnail > img {
+ max-height: 100%;
+}
+.fileinput .btn {
+ vertical-align: middle;
+}
+.fileinput-exists .fileinput-new,
+.fileinput-new .fileinput-exists {
+ display: none;
+}
+.fileinput-inline .fileinput-controls {
+ display: inline;
+}
+.fileinput-filename {
+ vertical-align: middle;
+ display: inline-block;
+ overflow: hidden;
+}
+.form-control .fileinput-filename {
+ vertical-align: bottom;
+}
+.fileinput.input-group {
+ display: table;
+}
+.fileinput.input-group > * {
+ position: relative;
+ z-index: 2;
+}
+.fileinput.input-group > .btn-file {
+ z-index: 1;
+}
+.fileinput-new.input-group .btn-file,
+.fileinput-new .input-group .btn-file {
+ border-radius: 0 4px 4px 0;
+}
+.fileinput-new.input-group .btn-file.btn-xs,
+.fileinput-new .input-group .btn-file.btn-xs,
+.fileinput-new.input-group .btn-file.btn-sm,
+.fileinput-new .input-group .btn-file.btn-sm {
+ border-radius: 0 3px 3px 0;
+}
+.fileinput-new.input-group .btn-file.btn-lg,
+.fileinput-new .input-group .btn-file.btn-lg {
+ border-radius: 0 6px 6px 0;
+}
+.form-group.has-warning .fileinput .fileinput-preview {
+ color: #8a6d3b;
+}
+.form-group.has-warning .fileinput .thumbnail {
+ border-color: #faebcc;
+}
+.form-group.has-error .fileinput .fileinput-preview {
+ color: #a94442;
+}
+.form-group.has-error .fileinput .thumbnail {
+ border-color: #ebccd1;
}
-
-.control-group.error .fileupload .uneditable-input {
- color: #b94a48;
- border-color: #b94a48;
+.form-group.has-success .fileinput .fileinput-preview {
+ color: #3c763d;
}
-
-.control-group.error .fileupload .fileupload-preview {
- color: #b94a48;
+.form-group.has-success .fileinput .thumbnail {
+ border-color: #d6e9c6;
}
-
-.control-group.error .fileupload .thumbnail {
- border-color: #b94a48;
+.input-group-addon:not(:first-child) {
+ border-left: 0;
}
-
-.control-group.success .fileupload .uneditable-input {
- color: #468847;
- border-color: #468847;
-}
-
-.control-group.success .fileupload .fileupload-preview {
- color: #468847;
-}
-
-.control-group.success .fileupload .thumbnail {
- border-color: #468847;
-}
\ No newline at end of file
Copied: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.js (from r1739729, openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/bootstrap-fileupload.js)
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.js?p2=openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.js&p1=openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/bootstrap-fileupload.js&r1=1739729&r2=1739871&rev=1739871&view=diff
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/bootstrap-fileupload.js (original)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.js Tue Apr 19 08:58:04 2016
@@ -1,8 +1,8 @@
/* ===========================================================
- * bootstrap-fileupload.js j2
- * http://jasny.github.com/bootstrap/javascript.html#fileupload
+ * Bootstrap: fileinput.js v3.1.3
+ * http://jasny.github.com/bootstrap/javascript/#fileinput
* ===========================================================
- * Copyright 2012 Jasny BV, Netherlands.
+ * Copyright 2012-2014 Arnold Daniels
*
* Licensed under the Apache License, Version 2.0 (the "License")
* you may not use this file except in compliance with the License.
@@ -17,152 +17,181 @@
* limitations under the License.
* ========================================================== */
-!function ($) {
++function ($) { "use strict";
- "use strict"; // jshint ;_
+ var isIE = window.navigator.appName == 'Microsoft Internet Explorer'
- /* FILEUPLOAD PUBLIC CLASS DEFINITION
- * ================================= */
+ // FILEUPLOAD PUBLIC CLASS DEFINITION
+ // =================================
- var Fileupload = function (element, options) {
+ var Fileinput = function (element, options) {
this.$element = $(element)
- this.type = this.$element.data('uploadtype') || (this.$element.find('.thumbnail').length > 0 ? "image" : "file")
-
+
this.$input = this.$element.find(':file')
if (this.$input.length === 0) return
this.name = this.$input.attr('name') || options.name
- this.$hidden = this.$element.find('input[type=hidden][name="'+this.name+'"]')
+ this.$hidden = this.$element.find('input[type=hidden][name="' + this.name + '"]')
if (this.$hidden.length === 0) {
- this.$hidden = $('<input type="hidden" />')
- this.$element.prepend(this.$hidden)
+ this.$hidden = $('<input type="hidden">').insertBefore(this.$input)
}
- this.$preview = this.$element.find('.fileupload-preview')
+ this.$preview = this.$element.find('.fileinput-preview')
var height = this.$preview.css('height')
- if (this.$preview.css('display') != 'inline' && height != '0px' && height != 'none') this.$preview.css('line-height', height)
-
+ if (this.$preview.css('display') !== 'inline' && height !== '0px' && height !== 'none') {
+ this.$preview.css('line-height', height)
+ }
+
this.original = {
- 'exists': this.$element.hasClass('fileupload-exists'),
- 'preview': this.$preview.html(),
- 'hiddenVal': this.$hidden.val()
+ exists: this.$element.hasClass('fileinput-exists'),
+ preview: this.$preview.html(),
+ hiddenVal: this.$hidden.val()
}
- this.$remove = this.$element.find('[data-dismiss="fileupload"]')
-
- this.$element.find('[data-trigger="fileupload"]').on('click.fileupload', $.proxy(this.trigger, this))
-
this.listen()
}
- Fileupload.prototype = {
+ Fileinput.prototype.listen = function() {
+ this.$input.on('change.bs.fileinput', $.proxy(this.change, this))
+ $(this.$input[0].form).on('reset.bs.fileinput', $.proxy(this.reset, this))
- listen: function() {
- this.$input.on('change.fileupload', $.proxy(this.change, this))
- $(this.$input[0].form).on('reset.fileupload', $.proxy(this.reset, this))
- if (this.$remove) this.$remove.on('click.fileupload', $.proxy(this.clear, this))
- },
+ this.$element.find('[data-trigger="fileinput"]').on('click.bs.fileinput', $.proxy(this.trigger, this))
+ this.$element.find('[data-dismiss="fileinput"]').on('click.bs.fileinput', $.proxy(this.clear, this))
+ },
+
+ Fileinput.prototype.change = function(e) {
+ var files = e.target.files === undefined ? (e.target && e.target.value ? [{ name: e.target.value.replace(/^.+\\/, '')}] : []) : e.target.files
- change: function(e, invoked) {
- if (invoked === 'clear') return
-
- var file = e.target.files !== undefined ? e.target.files[0] : (e.target.value ? { name: e.target.value.replace(/^.+\\/, '') } : null)
-
- if (!file) {
- this.clear()
- return
- }
-
- this.$hidden.val('')
- this.$hidden.attr('name', '')
- this.$input.attr('name', this.name)
-
- if (this.type === "image" && this.$preview.length > 0 && (typeof file.type !== "undefined" ? file.type.match('image.*') : file.name.match(/\.(gif|png|jpe?g)$/i)) && typeof FileReader !== "undefined") {
- var reader = new FileReader()
- var preview = this.$preview
- var element = this.$element
-
- reader.onload = function(e) {
- preview.html('<img src="' + e.target.result + '" ' + (preview.css('max-height') != 'none' ? 'style="max-height: ' + preview.css('max-height') + ';"' : '') + ' />')
- element.addClass('fileupload-exists').removeClass('fileupload-new')
- }
-
- reader.readAsDataURL(file)
- } else {
- this.$preview.text(file.name)
- this.$element.addClass('fileupload-exists').removeClass('fileupload-new')
- }
- },
+ e.stopPropagation()
- clear: function(e) {
- this.$hidden.val('')
- this.$hidden.attr('name', this.name)
- this.$input.attr('name', '')
-
- //ie8+ doesn't support changing the value of input with type=file so clone instead
- if (navigator.userAgent.match(/msie/i)){
- var inputClone = this.$input.clone(true);
- this.$input.after(inputClone);
- this.$input.remove();
- this.$input = inputClone;
- }else{
- this.$input.val('')
- }
+ if (files.length === 0) {
+ this.clear()
+ return
+ }
- this.$preview.html('')
- this.$element.addClass('fileupload-new').removeClass('fileupload-exists')
+ this.$hidden.val('')
+ this.$hidden.attr('name', '')
+ this.$input.attr('name', this.name)
+
+ var file = files[0]
+
+ if (this.$preview.length > 0 && (typeof file.type !== "undefined" ? file.type.match(/^image\/(gif|png|jpeg)$/) : file.name.match(/\.(gif|png|jpe?g)$/i)) && typeof FileReader !== "undefined") {
+ var reader = new FileReader()
+ var preview = this.$preview
+ var element = this.$element
+
+ reader.onload = function(re) {
+ var $img = $('<img>')
+ $img[0].src = re.target.result
+ files[0].result = re.target.result
+
+ element.find('.fileinput-filename').text(file.name)
+
+ // if parent has max-height, using `(max-)height: 100%` on child doesn't take padding and border into account
+ if (preview.css('max-height') != 'none') $img.css('max-height', parseInt(preview.css('max-height'), 10) - parseInt(preview.css('padding-top'), 10) - parseInt(preview.css('padding-bottom'), 10) - parseInt(preview.css('border-top'), 10) - parseInt(preview.css('border-bottom'), 10))
+
+ preview.html($img)
+ element.addClass('fileinput-exists').removeClass('fileinput-new')
- if (e) {
- this.$input.trigger('change', [ 'clear' ])
- e.preventDefault()
+ element.trigger('change.bs.fileinput', files)
}
- },
-
- reset: function(e) {
- this.clear()
+
+ reader.readAsDataURL(file)
+ } else {
+ this.$element.find('.fileinput-filename').text(file.name)
+ this.$preview.text(file.name)
- this.$hidden.val(this.original.hiddenVal)
- this.$preview.html(this.original.preview)
+ this.$element.addClass('fileinput-exists').removeClass('fileinput-new')
- if (this.original.exists) this.$element.addClass('fileupload-exists').removeClass('fileupload-new')
- else this.$element.addClass('fileupload-new').removeClass('fileupload-exists')
- },
+ this.$element.trigger('change.bs.fileinput')
+ }
+ },
+
+ Fileinput.prototype.clear = function(e) {
+ if (e) e.preventDefault()
- trigger: function(e) {
- this.$input.trigger('click')
- e.preventDefault()
+ this.$hidden.val('')
+ this.$hidden.attr('name', this.name)
+ this.$input.attr('name', '')
+
+ //ie8+ doesn't support changing the value of input with type=file so clone instead
+ if (isIE) {
+ var inputClone = this.$input.clone(true);
+ this.$input.after(inputClone);
+ this.$input.remove();
+ this.$input = inputClone;
+ } else {
+ this.$input.val('')
}
+
+ this.$preview.html('')
+ this.$element.find('.fileinput-filename').text('')
+ this.$element.addClass('fileinput-new').removeClass('fileinput-exists')
+
+ if (e !== undefined) {
+ this.$input.trigger('change')
+ this.$element.trigger('clear.bs.fileinput')
+ }
+ },
+
+ Fileinput.prototype.reset = function() {
+ this.clear()
+
+ this.$hidden.val(this.original.hiddenVal)
+ this.$preview.html(this.original.preview)
+ this.$element.find('.fileinput-filename').text('')
+
+ if (this.original.exists) this.$element.addClass('fileinput-exists').removeClass('fileinput-new')
+ else this.$element.addClass('fileinput-new').removeClass('fileinput-exists')
+
+ this.$element.trigger('reset.bs.fileinput')
+ },
+
+ Fileinput.prototype.trigger = function(e) {
+ this.$input.trigger('click')
+ e.preventDefault()
}
- /* FILEUPLOAD PLUGIN DEFINITION
- * =========================== */
+ // FILEUPLOAD PLUGIN DEFINITION
+ // ===========================
- $.fn.fileupload = function (options) {
+ var old = $.fn.fileinput
+
+ $.fn.fileinput = function (options) {
return this.each(function () {
- var $this = $(this)
- , data = $this.data('fileupload')
- if (!data) $this.data('fileupload', (data = new Fileupload(this, options)))
+ var $this = $(this),
+ data = $this.data('bs.fileinput')
+ if (!data) $this.data('bs.fileinput', (data = new Fileinput(this, options)))
if (typeof options == 'string') data[options]()
})
}
- $.fn.fileupload.Constructor = Fileupload
+ $.fn.fileinput.Constructor = Fileinput
+
+
+ // FILEINPUT NO CONFLICT
+ // ====================
+
+ $.fn.fileinput.noConflict = function () {
+ $.fn.fileinput = old
+ return this
+ }
- /* FILEUPLOAD DATA-API
- * ================== */
+ // FILEUPLOAD DATA-API
+ // ==================
- $(document).on('click.fileupload.data-api', '[data-provides="fileupload"]', function (e) {
+ $(document).on('click.fileinput.data-api', '[data-provides="fileinput"]', function (e) {
var $this = $(this)
- if ($this.data('fileupload')) return
- $this.fileupload($this.data())
+ if ($this.data('bs.fileinput')) return
+ $this.fileinput($this.data())
- var $target = $(e.target).closest('[data-dismiss="fileupload"],[data-trigger="fileupload"]');
+ var $target = $(e.target).closest('[data-dismiss="fileinput"],[data-trigger="fileinput"]');
if ($target.length > 0) {
- $target.trigger('click.fileupload')
e.preventDefault()
+ $target.trigger('click.bs.fileinput')
}
})
Added: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.min.css
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.min.css?rev=1739871&view=auto
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.min.css (added)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.min.css Tue Apr 19 08:58:04 2016
@@ -0,0 +1,7 @@
+/*!
+ * Jasny Bootstrap v3.1.0 (http://jasny.github.com/bootstrap)
+ * Copyright 2011-2014 Arnold Daniels.
+ * Licensed under the Apache License, Version 2.0 (the "License"); (https://github.com/jasny/bootstrap/blob/master/LICENSE)
+ */
+
+.btn-labeled{padding-top:0;padding-bottom:0}.btn-label{position:relative;background:transparent;background:rgba(0,0,0,0.15);display:inline-block;padding:6px 12px;left:-12px;border-radius:3px 0 0 3px}.btn-label.btn-label-right{left:auto;right:-12px;border-radius:0 3px 3px 0}.btn-lg .btn-label{padding:10px 16px;left:-16px;border-radius:5px 0 0 5px}.btn-lg .btn-label.btn-label-right{left:auto;right:-16px;border-radius:0 5px 5px 0}.btn-sm .btn-label{padding:5px 10px;left:-10px;border-radius:2px 0 0 2px}.btn-sm .btn-label.btn-label-right{left:auto;right:-10px;border-radius:0 2px 2px 0}.btn-xs .btn-label{padding:1px 5px;left:-5px;border-radius:2px 0 0 2px}.btn-xs .btn-label.btn-label-right{left:auto;right:-5px;border-radius:0 2px 2px 0}.nav-tabs-bottom{border-bottom:0;border-top:1px solid #ddd}.nav-tabs-bottom>li{margin-bottom:0;margin-top:-1px}.nav-tabs-bottom>li>a{border-radius:0 0 4px 4px}.nav-tabs-bottom>li>a:hover,.nav-tabs-bottom>li>a:focus,.nav-tabs-bottom>li.active>a,.nav-tabs-bot
tom>li.active>a:hover,.nav-tabs-bottom>li.active>a:focus{border:1px solid #ddd;border-top-color:transparent}.nav-tabs-left{border-bottom:0;border-right:1px solid #ddd}.nav-tabs-left>li{margin-bottom:0;margin-right:-1px;float:none}.nav-tabs-left>li>a{border-radius:4px 0 0 4px;margin-right:0;margin-bottom:2px}.nav-tabs-left>li>a:hover,.nav-tabs-left>li>a:focus,.nav-tabs-left>li.active>a,.nav-tabs-left>li.active>a:hover,.nav-tabs-left>li.active>a:focus{border:1px solid #ddd;border-right-color:transparent}.row>.nav-tabs-left{padding-right:0;padding-left:15px;margin-right:-1px;position:relative;z-index:1}.row>.nav-tabs-left+.tab-content{border-left:1px solid #ddd}.nav-tabs-right{border-bottom:0;border-left:1px solid #ddd}.nav-tabs-right>li{margin-bottom:0;margin-left:-1px;float:none}.nav-tabs-right>li>a{border-radius:0 4px 4px 0;margin-left:0;margin-bottom:2px}.nav-tabs-right>li>a:hover,.nav-tabs-right>li>a:focus,.nav-tabs-right>li.active>a,.nav-tabs-right>li.active>a:hover,.nav-tabs-rig
ht>li.active>a:focus{border:1px solid #ddd;border-left-color:transparent}.row>.nav-tabs-right{padding-left:0;padding-right:15px}.btn-file{overflow:hidden;position:relative;vertical-align:middle}.btn-file>input{position:absolute;top:0;right:0;margin:0;opacity:0;filter:alpha(opacity=0);font-size:23px;height:100%;width:100%;direction:ltr;cursor:pointer}.fileinput{margin-bottom:9px;display:inline-block}.fileinput .form-control{padding-top:7px;padding-bottom:5px;display:inline-block;margin-bottom:0px;vertical-align:middle;cursor:text}.fileinput .thumbnail{overflow:hidden;display:inline-block;margin-bottom:5px;vertical-align:middle;text-align:center}.fileinput .thumbnail>img{max-height:100%}.fileinput .btn{vertical-align:middle}.fileinput-exists .fileinput-new,.fileinput-new .fileinput-exists{display:none}.fileinput-inline .fileinput-controls{display:inline}.fileinput-filename{vertical-align:middle;display:inline-block;overflow:hidden}.form-control .fileinput-filename{vertical-align:botto
m}.fileinput.input-group{display:table}.fileinput.input-group>*{position:relative;z-index:2}.fileinput.input-group>.btn-file{z-index:1}.fileinput-new.input-group .btn-file,.fileinput-new .input-group .btn-file{border-radius:0 4px 4px 0}.fileinput-new.input-group .btn-file.btn-xs,.fileinput-new .input-group .btn-file.btn-xs,.fileinput-new.input-group .btn-file.btn-sm,.fileinput-new .input-group .btn-file.btn-sm{border-radius:0 3px 3px 0}.fileinput-new.input-group .btn-file.btn-lg,.fileinput-new .input-group .btn-file.btn-lg{border-radius:0 6px 6px 0}.form-group.has-warning .fileinput .fileinput-preview{color:#8a6d3b}.form-group.has-warning .fileinput .thumbnail{border-color:#faebcc}.form-group.has-error .fileinput .fileinput-preview{color:#a94442}.form-group.has-error .fileinput .thumbnail{border-color:#ebccd1}.form-group.has-success .fileinput .fileinput-preview{color:#3c763d}.form-group.has-success .fileinput .thumbnail{border-color:#d6e9c6}.input-group-addon:not(:first-child){bord
er-left:0}
Added: openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.min.js
URL: http://svn.apache.org/viewvc/openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.min.js?rev=1739871&view=auto
==============================================================================
--- openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.min.js (added)
+++ openmeetings/application/branches/3.2.x/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/fileinput.min.js Tue Apr 19 08:58:04 2016
@@ -0,0 +1,7 @@
+/*!
+ * Jasny Bootstrap v3.1.0 (http://jasny.github.com/bootstrap)
+ * Copyright 2011-2014 Arnold Daniels.
+ * Licensed under the Apache License, Version 2.0 (the "License"); (https://github.com/jasny/bootstrap/blob/master/LICENSE)
+ */
+
++function(a){"use strict";var b=window.navigator.appName=="Microsoft Internet Explorer",c=function(b,c){this.$element=a(b),this.$input=this.$element.find(":file");if(this.$input.length===0)return;this.name=this.$input.attr("name")||c.name,this.$hidden=this.$element.find('input[type=hidden][name="'+this.name+'"]'),this.$hidden.length===0&&(this.$hidden=a('<input type="hidden">').insertBefore(this.$input)),this.$preview=this.$element.find(".fileinput-preview");var d=this.$preview.css("height");this.$preview.css("display")!=="inline"&&d!=="0px"&&d!=="none"&&this.$preview.css("line-height",d),this.original={exists:this.$element.hasClass("fileinput-exists"),preview:this.$preview.html(),hiddenVal:this.$hidden.val()},this.listen()};c.prototype.listen=function(){this.$input.on("change.bs.fileinput",a.proxy(this.change,this)),a(this.$input[0].form).on("reset.bs.fileinput",a.proxy(this.reset,this)),this.$element.find('[data-trigger="fileinput"]').on("click.bs.fileinput",a.proxy(this.trigger,t
his)),this.$element.find('[data-dismiss="fileinput"]').on("click.bs.fileinput",a.proxy(this.clear,this))},c.prototype.change=function(b){var c=b.target.files===undefined?b.target&&b.target.value?[{name:b.target.value.replace(/^.+\\/,"")}]:[]:b.target.files;b.stopPropagation();if(c.length===0){this.clear();return}this.$hidden.val(""),this.$hidden.attr("name",""),this.$input.attr("name",this.name);var d=c[0];if(this.$preview.length>0&&(typeof d.type!="undefined"?d.type.match(/^image\/(gif|png|jpeg)$/):d.name.match(/\.(gif|png|jpe?g)$/i))&&typeof FileReader!="undefined"){var e=new FileReader,f=this.$preview,g=this.$element;e.onload=function(b){var e=a("<img>");e[0].src=b.target.result,c[0].result=b.target.result,g.find(".fileinput-filename").text(d.name),f.css("max-height")!="none"&&e.css("max-height",parseInt(f.css("max-height"),10)-parseInt(f.css("padding-top"),10)-parseInt(f.css("padding-bottom"),10)-parseInt(f.css("border-top"),10)-parseInt(f.css("border-bottom"),10)),f.html(e),g.a
ddClass("fileinput-exists").removeClass("fileinput-new"),g.trigger("change.bs.fileinput",c)},e.readAsDataURL(d)}else this.$element.find(".fileinput-filename").text(d.name),this.$preview.text(d.name),this.$element.addClass("fileinput-exists").removeClass("fileinput-new"),this.$element.trigger("change.bs.fileinput")},c.prototype.clear=function(a){a&&a.preventDefault(),this.$hidden.val(""),this.$hidden.attr("name",this.name),this.$input.attr("name","");if(b){var c=this.$input.clone(!0);this.$input.after(c),this.$input.remove(),this.$input=c}else this.$input.val("");this.$preview.html(""),this.$element.find(".fileinput-filename").text(""),this.$element.addClass("fileinput-new").removeClass("fileinput-exists"),a!==undefined&&(this.$input.trigger("change"),this.$element.trigger("clear.bs.fileinput"))},c.prototype.reset=function(){this.clear(),this.$hidden.val(this.original.hiddenVal),this.$preview.html(this.original.preview),this.$element.find(".fileinput-filename").text(""),this.original
.exists?this.$element.addClass("fileinput-exists").removeClass("fileinput-new"):this.$element.addClass("fileinput-new").removeClass("fileinput-exists"),this.$element.trigger("reset.bs.fileinput")},c.prototype.trigger=function(a){this.$input.trigger("click"),a.preventDefault()};var d=a.fn.fileinput;a.fn.fileinput=function(b){return this.each(function(){var d=a(this),e=d.data("bs.fileinput");e||d.data("bs.fileinput",e=new c(this,b)),typeof b=="string"&&e[b]()})},a.fn.fileinput.Constructor=c,a.fn.fileinput.noConflict=function(){return a.fn.fileinput=d,this},a(document).on("click.fileinput.data-api",'[data-provides="fileinput"]',function(b){var c=a(this);if(c.data("bs.fileinput"))return;c.fileinput(c.data());var d=a(b.target).closest('[data-dismiss="fileinput"],[data-trigger="fileinput"]');d.length>0&&(b.preventDefault(),d.trigger("click.bs.fileinput"))})}(window.jQuery)
Modified: openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/file/FileProcessor.java (original)
+++ openmeetings/application/trunk/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/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteBoardObjectSyncManager.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteBoardObjectSyncManager.java?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteBoardObjectSyncManager.java (original)
+++ openmeetings/application/trunk/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/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardManager.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardManager.java?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-core/src/main/java/org/apache/openmeetings/core/data/whiteboard/WhiteboardManager.java (original)
+++ openmeetings/application/trunk/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/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardObject.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardObject.java?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-db/src/main/java/org/apache/openmeetings/db/dto/room/WhiteboardObject.java (original)
+++ openmeetings/application/trunk/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/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=1739871&r1=1739870&r2=1739871&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 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/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ConverterProcessResultList.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ConverterProcessResultList.java?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-util/src/main/java/org/apache/openmeetings/util/process/ConverterProcessResultList.java (original)
+++ openmeetings/application/trunk/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/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.html?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.html (original)
+++ openmeetings/application/trunk/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/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.html (original)
+++ openmeetings/application/trunk/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/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java (original)
+++ openmeetings/application/trunk/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/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.html
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.html?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/UploadableProfileImagePanel.html (original)
+++ openmeetings/application/trunk/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/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=1739871&r1=1739870&r2=1739871&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 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/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomFileResourceReference.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomFileResourceReference.java?rev=1739871&view=auto
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomFileResourceReference.java (added)
+++ openmeetings/application/trunk/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/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPdfResourceReference.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPdfResourceReference.java?rev=1739871&view=auto
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPdfResourceReference.java (added)
+++ openmeetings/application/trunk/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/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java?rev=1739871&view=auto
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomResourceReference.java (added)
+++ openmeetings/application/trunk/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/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomSwfResourceReference.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomSwfResourceReference.java?rev=1739871&view=auto
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomSwfResourceReference.java (added)
+++ openmeetings/application/trunk/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/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/RoomMenuPanel.java (original)
+++ openmeetings/application/trunk/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/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomFilePanel.java (original)
+++ openmeetings/application/trunk/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/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.html
URL: http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.html?rev=1739871&r1=1739870&r2=1739871&view=diff
==============================================================================
--- openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/sidebar/RoomSidebar.html (original)
+++ openmeetings/application/trunk/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/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=1739871&r1=1739870&r2=1739871&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 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);
+ }
}