From c4a443e8bdd6f85265f4c460686bc44ddc8183e1 Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Fri, 09 May 2014 09:56:22 -0400
Subject: [PATCH] Merged #67 "Allow disabling repository deletion"
---
src/main/java/com/gitblit/wicket/SessionlessForm.java | 43 +++++++++++++++++++++++++++----------------
1 files changed, 27 insertions(+), 16 deletions(-)
diff --git a/src/main/java/com/gitblit/wicket/SessionlessForm.java b/src/main/java/com/gitblit/wicket/SessionlessForm.java
index 484e85e..6f79071 100644
--- a/src/main/java/com/gitblit/wicket/SessionlessForm.java
+++ b/src/main/java/com/gitblit/wicket/SessionlessForm.java
@@ -22,6 +22,7 @@
import org.apache.wicket.markup.ComponentTag;
import org.apache.wicket.markup.MarkupStream;
import org.apache.wicket.markup.html.form.StatelessForm;
+import org.apache.wicket.protocol.http.RequestUtils;
import org.apache.wicket.protocol.http.WicketURLDecoder;
import org.apache.wicket.protocol.http.request.WebRequestCodingStrategy;
import org.apache.wicket.util.string.AppendingStringBuffer;
@@ -35,35 +36,35 @@
* This class is used to create a stateless form that can POST or GET to a
* bookmarkable page regardless of the pagemap and even after session expiration
* or a server restart.
- *
+ *
* The trick is to embed "wicket:bookmarkablePage" as a hidden field of the form.
* Wicket already has logic to extract this parameter when it is trying
* to determine which page should receive the request.
- *
+ *
* The parameters of the containing page can optionally be included as hidden
- * fields in this form. Note that if a page parameter's name collides with any
+ * fields in this form. Note that if a page parameter's name collides with any
* child's wicket:id in this form then the page parameter is excluded.
- *
+ *
* @author James Moger
*
*/
public class SessionlessForm<T> extends StatelessForm<T> {
-
+
private static final long serialVersionUID = 1L;
private static final String HIDDEN_DIV_START = "<div style=\"width:0px;height:0px;position:absolute;left:-100px;top:-100px;overflow:hidden\">";
-
- private final Class<? extends BasePage> pageClass;
-
- private final PageParameters pageParameters;
-
+
+ protected final Class<? extends BasePage> pageClass;
+
+ protected final PageParameters pageParameters;
+
private final Logger log = LoggerFactory.getLogger(SessionlessForm.class);
/**
* Sessionless forms must have a bookmarkable page class. A bookmarkable
* page is defined as a page that has only a default and/or a PageParameter
* constructor.
- *
+ *
* @param id
* @param bookmarkablePageClass
*/
@@ -75,7 +76,7 @@
* Sessionless forms must have a bookmarkable page class. A bookmarkable
* page is defined as a page that has only a default and/or a PageParameter
* constructor.
- *
+ *
* @param id
* @param bookmarkablePageClass
* @param pageParameters
@@ -87,12 +88,12 @@
this.pageParameters = pageParameters;
}
-
+
/**
* Append an additional hidden input tag that forces Wicket to correctly
* determine the destination page class even after a session expiration or
* a server restart.
- *
+ *
* @param markupStream
* The markup stream
* @param openTag
@@ -133,10 +134,10 @@
getResponse().write(buffer);
super.onComponentTagBody(markupStream, openTag);
}
-
+
/**
* Take URL-encoded query string value, unencode it and return HTML-escaped version
- *
+ *
* @param s
* value to reencode
* @return reencoded value
@@ -145,4 +146,14 @@
String un = WicketURLDecoder.QUERY_INSTANCE.decode(s);
return Strings.escapeMarkup(un).toString();
}
+
+ protected String getAbsoluteUrl() {
+ return getAbsoluteUrl(pageClass, pageParameters);
+ }
+
+ protected String getAbsoluteUrl(Class<? extends BasePage> pageClass, PageParameters pageParameters) {
+ String relativeUrl = urlFor(pageClass, pageParameters).toString();
+ String absoluteUrl = RequestUtils.toAbsolutePath(relativeUrl);
+ return absoluteUrl;
+ }
}
--
Gitblit v1.9.1