Repository: wicket
Updated Branches:
  refs/heads/wicket-8.x 4f9b029fa -> 23c46412d


[WICKET-6617] headers are added to header-items if specified


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

Branch: refs/heads/wicket-8.x
Commit: 23c46412d175c914ec6c09910cfc4af83bd75cde
Parents: 4f9b029
Author: Maxim Solodovnik <solomax...@gmail.com>
Authored: Sat Dec 8 11:48:12 2018 +0700
Committer: Maxim Solodovnik <solomax...@gmail.com>
Committed: Sat Dec 8 11:48:12 2018 +0700

----------------------------------------------------------------------
 .../wicket/ajax/res/js/wicket-ajax-jquery.js    | 11 +++--
 .../html/internal/HtmlHeaderContainer.java      | 46 ++++++++++----------
 .../html/internal/HtmlHeaderItemsContainer.java |  9 ++++
 3 files changed, 40 insertions(+), 26 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/23c46412/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js 
b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
index 8370208..b93a98b 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
+++ 
b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
@@ -2116,10 +2116,15 @@
 
                        // Adds the element to page head
                        addElement: function (element) {
-                               var head = 
document.getElementsByTagName("head");
+                               var headItems = document.querySelector('head 
meta[name="wicket.header.items"]');
+                               if (headItems) {
+                                       
headItems.parentNode.insertBefore(element, headItems);
+                               } else {
+                                       var head = 
document.querySelector("head");
 
-                               if (head[0]) {
-                                       head[0].appendChild(element);
+                                       if (head) {
+                                               head.appendChild(element);
+                                       }
                                }
                        },
 

http://git-wip-us.apache.org/repos/asf/wicket/blob/23c46412/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderContainer.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderContainer.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderContainer.java
index e906560..ebe0de3 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderContainer.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderContainer.java
@@ -66,7 +66,7 @@ import org.apache.wicket.response.StringResponse;
  * <li>&lt;wicket:head&gt; and it's content is copied to the output. 
Components contained in
  * &lt;wicket:head&gt; are rendered as usual</li>
  * </ul>
- * 
+ *
  * @author Juergen Donnerstag
  */
 public class HtmlHeaderContainer extends TransparentWebMarkupContainer
@@ -89,7 +89,7 @@ public class HtmlHeaderContainer extends 
TransparentWebMarkupContainer
        /**
         * Combines the {@link MarkupStream} with the open tag, together 
representing the header section
         * in the markup.
-        * 
+        *
         * @author papegaaij
         */
        public static class HeaderStreamState
@@ -122,7 +122,7 @@ public class HtmlHeaderContainer extends 
TransparentWebMarkupContainer
 
        /**
         * Construct
-        * 
+        *
         * @see Component#Component(String)
         */
        public HtmlHeaderContainer(final String id)
@@ -161,19 +161,19 @@ public class HtmlHeaderContainer extends 
TransparentWebMarkupContainer
                        final StringResponse response = new StringResponse();
                        getRequestCycle().setResponse(response);
 
-                       IHeaderResponse headerResponse = getHeaderResponse();
-                       if (!response.equals(headerResponse.getResponse()))
-                       {
-                               
getRequestCycle().setResponse(headerResponse.getResponse());
-                       }
+                       try (IHeaderResponse headerResponse = 
getHeaderResponse()) {
+                               if 
(!response.equals(headerResponse.getResponse()))
+                               {
+                                       
getRequestCycle().setResponse(headerResponse.getResponse());
+                               }
 
-                       // Render the header sections of all components on the 
page
-                       AbstractHeaderRenderStrategy.get().renderHeader(this,
-                               new HeaderStreamState(markupStream, openTag), 
getPage());
+                               // Render the header sections of all components 
on the page
+                               
AbstractHeaderRenderStrategy.get().renderHeader(this,
+                                       new HeaderStreamState(markupStream, 
openTag), getPage());
 
-                       // Close the header response before rendering the 
header container itself
-                       // See https://issues.apache.org/jira/browse/WICKET-3728
-                       headerResponse.close();
+                               // Header response will be auto-closed before 
rendering the header container itself
+                               // See 
https://issues.apache.org/jira/browse/WICKET-3728
+                       };
 
                        // Cleanup extraneous CR and LF from the response
                        CharSequence output = getCleanResponse(response);
@@ -205,7 +205,7 @@ public class HtmlHeaderContainer extends 
TransparentWebMarkupContainer
         * Renders the content of the &lt;head&gt; section of the page, 
including &lt;wicket:head&gt;
         * sections in subclasses of the page. For every child-component, the 
content is rendered to a
         * string and passed to {@link IHeaderResponse}.
-        * 
+        *
         * @param headerStreamState
         */
        public void renderHeaderTagBody(HeaderStreamState headerStreamState)
@@ -236,11 +236,11 @@ public class HtmlHeaderContainer extends 
TransparentWebMarkupContainer
        }
 
        /**
-        * 
+        *
         * @param response
         * @return Cleaned up response
         */
-       private CharSequence getCleanResponse(final StringResponse response)
+       private static CharSequence getCleanResponse(final StringResponse 
response)
        {
                CharSequence output = response.getBuffer();
                if (output.length() > 0)
@@ -274,7 +274,7 @@ public class HtmlHeaderContainer extends 
TransparentWebMarkupContainer
        }
 
        /**
-        * 
+        *
         * @return True if open and close tag are to be rendered.
         */
        protected boolean renderOpenAndCloseTags()
@@ -284,7 +284,7 @@ public class HtmlHeaderContainer extends 
TransparentWebMarkupContainer
 
        /**
         * Check if the header component is ok to render within the scope given.
-        * 
+        *
         * @param scope
         *            The scope of the header component
         * @param id
@@ -295,13 +295,13 @@ public class HtmlHeaderContainer extends 
TransparentWebMarkupContainer
        {
                if (renderedComponentsPerScope == null)
                {
-                       renderedComponentsPerScope = new HashMap<String, 
List<String>>();
+                       renderedComponentsPerScope = new HashMap<>();
                }
 
                List<String> componentScope = 
renderedComponentsPerScope.get(scope);
                if (componentScope == null)
                {
-                       componentScope = new ArrayList<String>();
+                       componentScope = new ArrayList<>();
                        renderedComponentsPerScope.put(scope, componentScope);
                }
 
@@ -323,7 +323,7 @@ public class HtmlHeaderContainer extends 
TransparentWebMarkupContainer
 
        /**
         * Factory method for creating header response
-        * 
+        *
         * @return new header response
         */
        protected IHeaderResponse newHeaderResponse()
@@ -340,7 +340,7 @@ public class HtmlHeaderContainer extends 
TransparentWebMarkupContainer
 
        /**
         * Returns the header response.
-        * 
+        *
         * @return header response
         */
        public IHeaderResponse getHeaderResponse()

http://git-wip-us.apache.org/repos/asf/wicket/blob/23c46412/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderItemsContainer.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderItemsContainer.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderItemsContainer.java
index 636eac3..4249c6a 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderItemsContainer.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/internal/HtmlHeaderItemsContainer.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.markup.html.internal;
 
+import org.apache.wicket.request.Response;
+
 /**
  * A specialization of HtmlHeaderContainer that doesn't render
  * &lt;head&gt; and &l;/head&gt; around the header contributions.
@@ -39,6 +41,13 @@ public class HtmlHeaderItemsContainer extends 
HtmlHeaderContainer
        }
 
        @Override
+       protected void onAfterRender() {
+               super.onAfterRender();
+               final Response webResponse = getResponse();
+               webResponse.write("<meta name=\"wicket.header.items\"/>");
+       }
+
+       @Override
        protected boolean renderOpenAndCloseTags()
        {
                return false;

Reply via email to