Author: solomax
Date: Wed Apr 19 04:59:55 2017
New Revision: 1791855
URL: http://svn.apache.org/viewvc?rev=1791855&view=rev
Log:
[OPENMEETINGS-1632] wicket AjaxDownload is used
Removed:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/AjaxDownload.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/util/ajax-download.js
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.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/menu/StartSharingButton.java
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java?rev=1791855&r1=1791854&r2=1791855&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/backup/BackupPanel.java
Wed Apr 19 04:59:55 2017
@@ -20,8 +20,10 @@ package org.apache.openmeetings.web.admi
import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
import static org.apache.openmeetings.web.app.Application.getBean;
+import static org.apache.wicket.util.time.Duration.NONE;
import java.io.File;
+import java.nio.file.Path;
import java.text.DecimalFormat;
import java.util.Date;
@@ -33,11 +35,11 @@ import org.apache.openmeetings.util.Cale
import org.apache.openmeetings.util.OmFileHelper;
import org.apache.openmeetings.web.admin.AdminPanel;
import org.apache.openmeetings.web.app.Application;
-import org.apache.openmeetings.web.util.AjaxDownload;
import org.apache.openmeetings.web.util.upload.BootstrapFileUploadBehavior;
import org.apache.wicket.ajax.AbstractAjaxTimerBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
+import org.apache.wicket.extensions.ajax.AjaxDownload;
import
org.apache.wicket.extensions.ajax.markup.html.form.upload.UploadProgressBar;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.CheckBox;
@@ -45,8 +47,9 @@ import org.apache.wicket.markup.html.for
import org.apache.wicket.markup.html.form.upload.FileUpload;
import org.apache.wicket.markup.html.form.upload.FileUploadField;
import org.apache.wicket.model.Model;
+import org.apache.wicket.request.resource.IResource;
+import org.apache.wicket.resource.FileSystemResource;
import org.apache.wicket.util.lang.Bytes;
-import org.apache.wicket.util.resource.FileResourceStream;
import org.apache.wicket.util.time.Duration;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
@@ -106,7 +109,23 @@ public class BackupPanel extends AdminPa
setMaxSize(Bytes.bytes(maxBytes));
// Add a component to download a file without page
refresh
- final AjaxDownload download = new AjaxDownload();
+ final AjaxDownload download = new AjaxDownload(new
IResource() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void respond(Attributes attributes) {
+ new
FileSystemResource(backupFile.toPath()) {
+ private static final long
serialVersionUID = 1L;
+
+ @Override
+ protected ResourceResponse
createResourceResponse(Attributes attr, Path path) {
+ ResourceResponse
response = super.createResourceResponse(attr, path);
+
response.setCacheDuration(NONE);
+ return response;
+ }
+ }.respond(attributes);
+ }
+ });
add(download);
// add an download button
add(new AjaxButton("download", this) {
@@ -164,8 +183,6 @@ public class BackupPanel extends AdminPa
timer.stop(target);
target.add(progressBar.setVisible(false));
-
download.setFileName(backupFile.getName());
- download.setResourceStream(new
FileResourceStream(backupFile));
download.initiate(target);
}
}).setVisible(false).setOutputMarkupPlaceholderTag(true));
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java?rev=1791855&r1=1791854&r2=1791855&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/admin/labels/LangPanel.java
Wed Apr 19 04:59:55 2017
@@ -38,20 +38,23 @@ import org.apache.openmeetings.web.commo
import org.apache.openmeetings.web.data.DataViewContainer;
import org.apache.openmeetings.web.data.OmOrderByBorder;
import org.apache.openmeetings.web.data.SearchableDataProvider;
-import org.apache.openmeetings.web.util.AjaxDownload;
import org.apache.openmeetings.web.util.upload.BootstrapFileUploadBehavior;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior;
import org.apache.wicket.ajax.markup.html.AjaxLink;
+import org.apache.wicket.extensions.ajax.AjaxDownload;
import
org.apache.wicket.extensions.ajax.markup.html.form.upload.UploadProgressBar;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.upload.FileUpload;
import org.apache.wicket.markup.html.form.upload.FileUploadField;
import org.apache.wicket.markup.repeater.Item;
+import org.apache.wicket.request.resource.ContentDisposition;
+import org.apache.wicket.request.resource.ResourceStreamResource;
import org.apache.wicket.util.resource.AbstractResourceStream;
+import org.apache.wicket.util.resource.IResourceStream;
import org.apache.wicket.util.resource.ResourceStreamNotFoundException;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
@@ -172,17 +175,18 @@ public class LangPanel extends AdminPane
});
// Add a component to download a file without page refresh
- final AjaxDownload download = new AjaxDownload();
- langForm.add(download);
-
- langForm.add(new AjaxButton("export"){
+ final AjaxDownload download = new AjaxDownload(new
ResourceStreamResource() {
private static final long serialVersionUID = 1L;
+ {
+
setContentDisposition(ContentDisposition.ATTACHMENT);
+ }
+
@Override
- protected void onSubmit(AjaxRequestTarget target) {
+ protected IResourceStream getResourceStream(Attributes
attributes) {
final String name =
LabelDao.getLabelFileName(language.getValue());
- download.setFileName(name);
- download.setResourceStream(new
AbstractResourceStream() {
+ setFileName(name);
+ return new AbstractResourceStream() {
private static final long
serialVersionUID = 1L;
private transient InputStream is;
@@ -203,7 +207,16 @@ public class LangPanel extends AdminPane
is = null;
}
}
- });
+ };
+ }
+ });
+ langForm.add(download);
+
+ langForm.add(new AjaxButton("export"){
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected void onSubmit(AjaxRequestTarget target) {
download.initiate(target);
// repaint the feedback panel so that it is
hidden
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java?rev=1791855&r1=1791854&r2=1791855&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/common/tree/DownloadMenuItem.java
Wed Apr 19 04:59:55 2017
@@ -30,7 +30,6 @@ import org.apache.openmeetings.db.entity
import org.apache.openmeetings.db.entity.file.FileItem.Type;
import org.apache.openmeetings.util.OmFileHelper;
import org.apache.wicket.ajax.AjaxRequestTarget;
-import org.apache.wicket.util.resource.FileResourceStream;
import com.googlecode.wicket.jquery.ui.JQueryIcon;
import com.googlecode.wicket.jquery.ui.widget.menu.MenuItem;
@@ -66,8 +65,7 @@ public class DownloadMenuItem extends Me
f = ff[0];
}
}
- tree.downloader.setFileName(f.getName());
- tree.downloader.setResourceStream(new
FileResourceStream(f));
+ tree.dwnldFile = f;
tree.downloader.initiate(target);
}
}
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=1791855&r1=1791854&r2=1791855&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 Apr 19 04:59:55 2017
@@ -23,7 +23,10 @@ import static org.apache.openmeetings.ut
import static org.apache.openmeetings.util.OmFileHelper.EXTENSION_PDF;
import static org.apache.openmeetings.web.app.Application.getBean;
import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.wicket.util.time.Duration.NONE;
+import java.io.File;
+import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
@@ -41,19 +44,21 @@ import org.apache.openmeetings.db.entity
import org.apache.openmeetings.web.common.ConfirmableAjaxBorder;
import
org.apache.openmeetings.web.common.ConfirmableAjaxBorder.ConfirmableBorderDialog;
import org.apache.openmeetings.web.common.NameDialog;
-import org.apache.openmeetings.web.util.AjaxDownload;
import org.apache.wicket.AttributeModifier;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.attributes.CallbackParameter;
import org.apache.wicket.core.request.handler.IPartialPageRequestHandler;
+import org.apache.wicket.extensions.ajax.AjaxDownload;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
+import org.apache.wicket.request.resource.IResource;
+import org.apache.wicket.resource.FileSystemResource;
import com.googlecode.wicket.jquery.core.JQueryBehavior;
import com.googlecode.wicket.jquery.core.Options;
@@ -77,7 +82,24 @@ public abstract class FileTreePanel exte
private final WebMarkupContainer sizes = new
WebMarkupContainer("sizes");
private FileItem lastSelected = null;
private Map<String, FileItem> selected = new HashMap<>();
- final AjaxDownload downloader = new AjaxDownload();
+ File dwnldFile;
+ final AjaxDownload downloader = new AjaxDownload(new IResource() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void respond(Attributes attributes) {
+ new FileSystemResource(dwnldFile.toPath()) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected ResourceResponse
createResourceResponse(Attributes attr, Path path) {
+ ResourceResponse response =
super.createResourceResponse(attr, path);
+ response.setCacheDuration(NONE);
+ return response;
+ }
+ }.respond(attributes);
+ }
+ });
protected final IModel<String> homeSize = Model.of((String)null);
protected final IModel<String> publicSize = Model.of((String)null);
final ConvertingErrorsDialog errorsDialog = new
ConvertingErrorsDialog("errors", Model.of((Recording)null));
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java?rev=1791855&r1=1791854&r2=1791855&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/menu/StartSharingButton.java
Wed Apr 19 04:59:55 2017
@@ -27,6 +27,7 @@ import static org.apache.openmeetings.ut
import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey;
import static org.apache.openmeetings.web.app.Application.getBean;
import static org.apache.openmeetings.web.app.WebSession.getLanguage;
+import static org.apache.wicket.util.time.Duration.NONE;
import java.io.InputStream;
@@ -41,9 +42,11 @@ import org.apache.openmeetings.web.app.A
import org.apache.openmeetings.web.app.WebSession;
import org.apache.openmeetings.web.common.OmButton;
import org.apache.openmeetings.web.room.VideoSettings;
-import org.apache.openmeetings.web.util.AjaxDownload;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.behavior.AttributeAppender;
+import org.apache.wicket.extensions.ajax.AjaxDownload;
+import org.apache.wicket.request.resource.ResourceStreamResource;
+import org.apache.wicket.util.resource.IResourceStream;
import org.apache.wicket.util.resource.StringResourceStream;
import org.red5.logging.Red5LoggerFactory;
import org.slf4j.Logger;
@@ -57,6 +60,7 @@ public class StartSharingButton extends
private static final String CDATA_END = "]]>";
private final AjaxDownload download;
private final Client c;
+ private String app = "";
public StartSharingButton(String id, Client c) {
super(id);
@@ -64,20 +68,26 @@ public class StartSharingButton extends
setOutputMarkupPlaceholderTag(true);
setVisible(false);
add(new AttributeAppender("title",
Application.getString(1480)));
- add(download = new AjaxDownload(true) {
+ add(download = new AjaxDownload(new ResourceStreamResource() {
private static final long serialVersionUID = 1L;
+ {
+ setFileName(String.format("public_%s.jnlp",
StartSharingButton.this.c.getRoomId()));
+ setCacheDuration(NONE);
+ }
+
@Override
- protected String getFileName() {
- return String.format("public_%s.jnlp",
StartSharingButton.this.c.getRoomId());
+ protected IResourceStream getResourceStream(Attributes
attributes) {
+ StringResourceStream srs = new
StringResourceStream(app, "application/x-java-jnlp-file");
+ srs.setCharset(UTF_8);
+ return srs;
}
- });
+ }));
}
@Override
public void onClick(AjaxRequestTarget target) {
//TODO deny download in case other screen sharing is in progress
- String app = "";
try (InputStream jnlp =
getClass().getClassLoader().getResourceAsStream("APPLICATION.jnlp")) {
ConfigurationDao cfgDao =
getBean(ConfigurationDao.class);
app = IOUtils.toString(jnlp, UTF_8);
@@ -108,10 +118,6 @@ public class StartSharingButton extends
.replace("$allowRecording", "" +
(room.isAllowRecording() && (0 == sessionManager.getRecordingCount(roomId))))
.replace("$allowPublishing", "" + (0 ==
sessionManager.getPublishingCount(roomId)))
;
-
- StringResourceStream srs = new
StringResourceStream(app, "application/x-java-jnlp-file");
- srs.setCharset(UTF_8);
- download.setResourceStream(srs);
download.initiate(target);
} catch (Exception e) {
log.error("Unexpected error while creating jnlp file",
e);
Modified:
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
URL:
http://svn.apache.org/viewvc/openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java?rev=1791855&r1=1791854&r2=1791855&view=diff
==============================================================================
---
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
(original)
+++
openmeetings/application/trunk/openmeetings-web/src/main/java/org/apache/openmeetings/web/user/record/VideoInfo.java
Wed Apr 19 04:59:55 2017
@@ -22,8 +22,10 @@ import static org.apache.openmeetings.ut
import static org.apache.openmeetings.util.OmFileHelper.getRecordingMetaData;
import static org.apache.openmeetings.web.app.Application.getBean;
import static org.apache.openmeetings.web.app.WebSession.getUserId;
+import static org.apache.wicket.util.time.Duration.NONE;
import java.io.File;
+import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
@@ -38,15 +40,16 @@ import org.apache.openmeetings.db.entity
import org.apache.openmeetings.db.entity.record.RecordingMetaData;
import org.apache.openmeetings.db.entity.room.Room;
import org.apache.openmeetings.web.common.InvitationDialog;
-import org.apache.openmeetings.web.util.AjaxDownload;
import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.extensions.ajax.AjaxDownload;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.model.CompoundPropertyModel;
import org.apache.wicket.model.IModel;
import org.apache.wicket.model.Model;
-import org.apache.wicket.util.resource.FileResourceStream;
+import org.apache.wicket.request.resource.IResource;
+import org.apache.wicket.resource.FileSystemResource;
import com.googlecode.wicket.jquery.ui.JQueryIcon;
import com.googlecode.wicket.jquery.ui.form.button.AjaxButton;
@@ -77,7 +80,24 @@ public class VideoInfo extends Panel {
}.start();
}
};
- private final AjaxDownload download = new AjaxDownload();
+ private final AjaxDownload download = new AjaxDownload(new IResource() {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ public void respond(Attributes attributes) {
+ File f = rm.getObject().getFile(EXTENSION_MP4);
+ new FileSystemResource(f.toPath()) {
+ private static final long serialVersionUID = 1L;
+
+ @Override
+ protected ResourceResponse
createResourceResponse(Attributes attr, Path path) {
+ ResourceResponse response =
super.createResourceResponse(attr, path);
+ response.setCacheDuration(NONE);
+ return response;
+ }
+ }.respond(attributes);
+ }
+ });
private final IModel<Recording> rm = new CompoundPropertyModel<>(new
Recording());
private final IModel<String> roomName = Model.of((String)null);
private boolean isInterview = false;
@@ -184,9 +204,6 @@ public class VideoInfo extends Panel {
@Override
public void onClick(AjaxRequestTarget target) {
- File f = rm.getObject().getFile(EXTENSION_MP4);
- download.setFileName(f.getName());
- download.setResourceStream(new
FileResourceStream(f));
download.initiate(target);
}
});