You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2017/03/20 16:28:35 UTC
wicket git commit: WICKET-6286 Add support for success callback to
'NewWindow' location
Repository: wicket
Updated Branches:
refs/heads/WICKET-6286-ajax-download bb46817f2 -> 7f646712c
WICKET-6286 Add support for success callback to 'NewWindow' location
Add 'onDownloadCompleted()' callback that is executed after any success or failure callback. Like in jQuery - do something in all cases.
WICKET-6340 Use XHTML friendly markup when creating the iframe
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/7f646712
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/7f646712
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/7f646712
Branch: refs/heads/WICKET-6286-ajax-download
Commit: 7f646712c9b1c0ca5817d7a3a4badec1da087a22
Parents: bb46817
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Mon Mar 20 17:26:23 2017 +0100
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Mon Mar 20 17:26:23 2017 +0100
----------------------------------------------------------------------
.../examples/ajax/builtin/AjaxDownloadPage.java | 9 ++++++-
.../wicket/extensions/ajax/AjaxDownload.java | 28 +++++++++++++++++++-
.../extensions/ajax/wicket-ajaxdownload.js | 24 ++++++++++-------
3 files changed, 50 insertions(+), 11 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/7f646712/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxDownloadPage.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxDownloadPage.java b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxDownloadPage.java
index 3a7ccb5..b339b64 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxDownloadPage.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AjaxDownloadPage.java
@@ -252,8 +252,15 @@ public class AjaxDownloadPage extends BasePage
downloadingContainer.setVisible(false);
target.add(downloadingContainer);
}
+
+ @Override
+ protected void onDownloadCompleted(AjaxRequestTarget target)
+ {
+ downloadingContainer.setVisible(false);
+ target.add(downloadingContainer);
+ }
};
- download.setLocation(AjaxDownload.Location.NewWindow);
+ download.setLocation(AjaxDownload.Location.SameWindow);
add(download);
add(new AjaxLink<Void>("downloadInNewWindow")
http://git-wip-us.apache.org/repos/asf/wicket/blob/7f646712/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/AjaxDownload.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/AjaxDownload.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/AjaxDownload.java
index aacbfd9..34595e6 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/AjaxDownload.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/AjaxDownload.java
@@ -72,18 +72,23 @@ public class AjaxDownload extends AbstractDefaultAjaxBehavior
* The resource will be downloaded via a temporary created iframe.
* This is recommended when there are resources in the DOM which will be
* closed automatically on JavaScript <em>unload</em> event, like WebSockets.
+ * Supports both <em>success</em> and <em>failure</em> callbacks!
*/
IFrame,
/**
* The resource will be downloaded by changing the location of the current DOM document.
* Note: This will trigger JavaScript <em>unload</em> event on the page!
+ * Supports only <em>success</em> callback, i.e. it is not possible to detect whether
+ * the download has finished successfully or not.
*/
- Self,
+ SameWindow,
/**
* The resource will be downloaded in a new browser window by using JavaScript
* <code>window.open()</code> API.
+ * Supports only <em>success</em> callback, i.e. it is not possible to detect whether
+ * the download has finished successfully or not.
*/
NewWindow
}
@@ -230,14 +235,34 @@ public class AjaxDownload extends AbstractDefaultAjaxBehavior
{
}
+ /**
+ * A callback executed when the download of the resource finished successfully.
+ *
+ * @param target The Ajax request handler
+ */
protected void onDownloadSuccess(AjaxRequestTarget target)
{
}
+ /**
+ * A callback executed when the download of the resource failed for some reason,
+ * e.g. an error at the server side.
+ *
+ * @param target The Ajax request handler
+ */
protected void onDownloadFailed(AjaxRequestTarget target)
{
}
+ /**
+ * A callback executed when the download of the resource finished successfully or with a failure.
+ *
+ * @param target The Ajax request handler
+ */
+ protected void onDownloadCompleted(AjaxRequestTarget target)
+ {
+ }
+
@Override
public void renderHead(Component component, IHeaderResponse response)
{
@@ -255,6 +280,7 @@ public class AjaxDownload extends AbstractDefaultAjaxBehavior
} else if ("failed".equals(result)) {
onDownloadFailed(target);
}
+ onDownloadCompleted(target);
}
public final Location getLocation() {
http://git-wip-us.apache.org/repos/asf/wicket/blob/7f646712/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/wicket-ajaxdownload.js
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/wicket-ajaxdownload.js b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/wicket-ajaxdownload.js
index 4c5d554..26de71e 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/wicket-ajaxdownload.js
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/wicket-ajaxdownload.js
@@ -28,6 +28,12 @@
Wicket.AjaxDownload = {
initiate : function(settings) {
+ var notifyServer = function (result) {
+ settings.attributes.ep = settings.attributes.ep || {};
+ settings.attributes.ep.result = result;
+ Wicket.Ajax.ajax(settings.attributes);
+ };
+
var checkComplete = function (frame) {
var result;
@@ -47,9 +53,7 @@
}, 0);
}
- settings.attributes.ep = settings.attributes.ep || {};
- settings.attributes.ep.result = result;
- Wicket.Ajax.ajax(settings.attributes);
+ notifyServer(result);
} else {
setTimeout(function() {
checkComplete(frame);
@@ -57,16 +61,18 @@
}
};
- if (settings.method === 'self') {
+ if (settings.method === 'samewindow') {
setTimeout(function () {
- window.location.href = settings.downloadUrl;
+ window.location.assign(settings.downloadUrl);
checkComplete();
- }, 100);
+ }, 10);
} else if (settings.method === 'newwindow') {
- window.open(settings.downloadUrl, 'ajax-download');
- checkComplete();
+ var wo = window.open(settings.downloadUrl, 'ajax-download');
+ jQuery(wo).load(function(evt) {
+ notifyServer(undefined);
+ });
} else {
- var frame = jQuery("<iframe>").hide().prop("src", settings.downloadUrl).appendTo("body");
+ var frame = jQuery("<iframe></iframe>").hide().prop("src", settings.downloadUrl).appendTo("body");
checkComplete(frame);
}
}