Updated Branches:
  refs/heads/wicket-6.x 2468536a3 -> 432310bda

WICKET-5071 404 Error on Nested ModalWindows in IE7 and IE8

PageInstanceMapper now will match if the baseUrl is 'page?..' and the request 
url is 'page?...'
An explicit mount of a page at 'page' will have higher priority because it is 
added later in CompoundRequestMapper


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/432310bd
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/432310bd
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/432310bd

Branch: refs/heads/wicket-6.x
Commit: 432310bdae50498419ff84031430d02ba36d346d
Parents: 2468536
Author: Martin Tzvetanov Grigorov <mgrigo...@apache.org>
Authored: Fri Jun 14 16:33:17 2013 +0300
Committer: Martin Tzvetanov Grigorov <mgrigo...@apache.org>
Committed: Fri Jun 14 16:35:09 2013 +0300

----------------------------------------------------------------------
 .../core/request/mapper/PageInstanceMapper.java |  4 ++
 .../request/mapper/PageInstanceMapperTest.java  | 49 +++++++++++++++++++-
 .../ajax/markup/html/modal/ModalWindow.java     |  7 +--
 .../ajax/markup/html/modal/res/modal.js         |  6 +--
 4 files changed, 54 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/432310bd/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PageInstanceMapper.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PageInstanceMapper.java
 
b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PageInstanceMapper.java
index 9f75813..3789a9f 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PageInstanceMapper.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/core/request/mapper/PageInstanceMapper.java
@@ -185,6 +185,10 @@ public class PageInstanceMapper extends 
AbstractComponentMapper
                {
                        matches = true;
                }
+               else if (urlStartsWith(request.getClientUrl(), pageIdentifier) 
&& urlStartsWith(url, pageIdentifier))
+               {
+                       matches = true;
+               }
 
                return matches;
        }

http://git-wip-us.apache.org/repos/asf/wicket/blob/432310bd/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PageInstanceMapperTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PageInstanceMapperTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PageInstanceMapperTest.java
index a112640..d1fa307 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PageInstanceMapperTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/core/request/mapper/PageInstanceMapperTest.java
@@ -31,6 +31,7 @@ import org.apache.wicket.request.IRequestHandler;
 import org.apache.wicket.request.Request;
 import org.apache.wicket.request.Url;
 import org.apache.wicket.request.component.IRequestableComponent;
+import org.apache.wicket.request.component.IRequestablePage;
 import org.junit.Test;
 
 /**
@@ -211,7 +212,53 @@ public class PageInstanceMapperTest extends 
AbstractMapperTest
 
                IRequestHandler handler = encoder.mapRequest(request);
 
-               ((IPageRequestHandler)handler).getPage();
+               IRequestablePage page = ((IPageRequestHandler) 
handler).getPage();
+               checkPage(page, 4);
+       }
+
+
+       @Test
+       public void decode10()
+       {
+               final Url url = Url.parse("page?4");
+
+               Request request = new Request()
+               {
+                       @Override
+                       public Url getUrl()
+                       {
+                               return url;
+                       }
+
+                       @Override
+                       public Locale getLocale()
+                       {
+                               return null;
+                       }
+
+                       @Override
+                       public Charset getCharset()
+                       {
+                               return Charset.forName("UTF-8");
+                       }
+
+                       @Override
+                       public Url getClientUrl()
+                       {
+                               return Url.parse("page");
+                       }
+
+                       @Override
+                       public Object getContainerRequest()
+                       {
+                               return null;
+                       }
+               };
+
+               IRequestHandler handler = encoder.mapRequest(request);
+
+               IRequestablePage page = ((IPageRequestHandler) 
handler).getPage();
+               checkPage(page, 4);
        }
 
        /**

http://git-wip-us.apache.org/repos/asf/wicket/blob/432310bd/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java
index a7f1f76..317a5b5 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/ModalWindow.java
@@ -1080,22 +1080,17 @@ public class ModalWindow extends Panel
                        {
                                throw new WicketRuntimeException("Error 
creating page for modal dialog.");
                        }
-                       CharSequence pageUrl = null;
+                       CharSequence pageUrl;
                        RequestCycle requestCycle = RequestCycle.get();
 
                        if (page.isPageStateless())
                        {
                                pageUrl = requestCycle.urlFor(page.getClass(), 
page.getPageParameters());
-                               appendAssignment(buffer, "settings.ie8_src", 
pageUrl);
                        }
                        else
                        {
                                IRequestHandler handler = new 
RenderPageRequestHandler(new PageProvider(page));
-
                                pageUrl = requestCycle.urlFor(handler);
-                               String ie8_pageUrl = 
requestCycle.getUrlRenderer().renderRelativeUrl(
-                                       requestCycle.mapUrlFor(handler));
-                               appendAssignment(buffer, "settings.ie8_src", 
ie8_pageUrl);
                        }
 
                        appendAssignment(buffer, "settings.src", pageUrl);

http://git-wip-us.apache.org/repos/asf/wicket/blob/432310bd/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/res/modal.js
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/res/modal.js
 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/res/modal.js
index b693e63..9e3e85a 100644
--- 
a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/res/modal.js
+++ 
b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/modal/res/modal.js
@@ -632,11 +632,7 @@
 
                        try
                        {
-                               if(Wicket.Browser.isIELessThan9()){
-                                       
this.content.contentWindow.location.replace(this.settings.ie8_src);
-                               }else{
-                                       
this.content.contentWindow.location.replace(this.settings.src);
-                               }
+                               
this.content.contentWindow.location.replace(this.settings.src);
                        }
                        catch(ignore)
                        {

Reply via email to