[ 
https://issues.apache.org/jira/browse/WICKET-7048?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17712913#comment-17712913
 ] 

ASF GitHub Bot commented on WICKET-7048:
----------------------------------------

reiern70 commented on code in PR #580:
URL: https://github.com/apache/wicket/pull/580#discussion_r1168235328


##########
wicket-core/src/main/java/org/apache/wicket/ajax/AjaxOnDomReadyClientInfoBehavior.java:
##########
@@ -0,0 +1,125 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.wicket.ajax;
+
+import org.apache.wicket.Component;
+import org.apache.wicket.Session;
+import org.apache.wicket.ajax.attributes.AjaxRequestAttributes;
+import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.JavaScriptHeaderItem;
+import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
+import org.apache.wicket.markup.html.pages.BrowserInfoForm;
+import org.apache.wicket.protocol.http.request.WebClientInfo;
+import org.apache.wicket.request.IRequestParameters;
+import org.apache.wicket.request.cycle.RequestCycle;
+import org.apache.wicket.settings.RequestCycleSettings;
+import org.apache.wicket.util.lang.Args;
+import org.danekja.java.util.function.serializable.SerializableBiConsumer;
+
+/**
+ * A behavior that collects the information to populate
+ * WebClientInfo's ClientProperties by using Ajax. Compared to
+ * {@link AjaxClientInfoBehavior} this class does not use a timer
+ * but the DOM ready "event" to collect browser info.
+ *
+ * @see #onClientInfo(AjaxRequestTarget, WebClientInfo)
+ */
+public class AjaxOnDomReadyClientInfoBehavior extends 
AbstractDefaultAjaxBehavior
+{
+       private static final long serialVersionUID = 1L;
+
+       /**
+        * Constructor.
+        *
+        */
+       public AjaxOnDomReadyClientInfoBehavior()
+       {
+               super();
+       }
+
+       @Override
+       protected void respond(AjaxRequestTarget target)
+       {
+               RequestCycle requestCycle = RequestCycle.get();
+
+               IRequestParameters requestParameters = 
requestCycle.getRequest().getRequestParameters();
+               WebClientInfo clientInfo = newWebClientInfo(requestCycle);
+               clientInfo.getProperties().read(requestParameters);
+               Session.get().setClientInfo(clientInfo);
+
+               onClientInfo(target, clientInfo);
+       }
+
+       protected WebClientInfo newWebClientInfo(RequestCycle requestCycle)
+       {
+               return new WebClientInfo(requestCycle);
+       }
+
+       /**
+        * A callback method invoked when the client info is collected.
+        * 
+        * @param target
+        *          The Ajax request handler
+        * @param clientInfo
+        *          The collected info for the client 
+        */
+       protected void onClientInfo(AjaxRequestTarget target, WebClientInfo 
clientInfo)
+       {
+       }
+
+       @Override
+       protected void updateAjaxAttributes(AjaxRequestAttributes attributes)
+       {
+               super.updateAjaxAttributes(attributes);
+
+               attributes.getDynamicExtraParameters().add("return 
Wicket.BrowserInfo.collect()");

Review Comment:
   True... Or the JavaScriot code can be removed. Checking! 





> add an AjaxExtendedClientInfoBehavior that makes use of OnDomReady
> ------------------------------------------------------------------
>
>                 Key: WICKET-7048
>                 URL: https://issues.apache.org/jira/browse/WICKET-7048
>             Project: Wicket
>          Issue Type: Improvement
>            Reporter: Ernesto Reinaldo Barreiro
>            Priority: Major
>         Attachments: image-2023-04-17-07-18-56-191.png
>
>
> We have noticed that  AjaxClientInfoBehavior only provides a limeted set of 
> cleint side properties and that 
> RequestCycleSettings#getGatherExtendedBrowserInfo()=true is requiered to 
> gather things like client time zone. This uses a redicrect to some special 
> page and this causes some problem to us. We provide an AJAX behavior that 
> gathers same info as RequestCycleSettings#getGatherExtendedBrowserInfo().
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to