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 2013/05/30 09:09:06 UTC

[08/10] git commit: WICKET-5208 Contribute jQuery 1.x or 2.x depending on the user agent

WICKET-5208 Contribute jQuery 1.x or 2.x depending on the user agent

Introduce DynamicJQueryResourceReference - a res ref that decides which version of jQuery to contribute depending on the user agent.


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

Branch: refs/heads/wicket-6.x
Commit: 2de7d93ff0ae0ba971369db9cb9eb82b453ee7f3
Parents: 2047c4e
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Tue May 28 09:13:42 2013 +0300
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Thu May 30 10:02:49 2013 +0300

----------------------------------------------------------------------
 .../resource/DynamicJQueryResourceReference.java   |  108 +
 .../wicket/resource/JQueryResourceReference.java   |    2 +-
 .../apache/wicket/resource/jquery/jquery-1.10.0.js | 9800 +++++++++++++++
 .../wicket/resource/jquery/jquery-1.10.0.min.js    |    6 +
 .../apache/wicket/resource/jquery/jquery-2.0.1.js  | 8837 +++++++++++++
 .../wicket/resource/jquery/jquery-2.0.1.min.js     |    6 +
 .../org/apache/wicket/resource/jquery/jquery.js    | 9472 --------------
 .../apache/wicket/resource/jquery/jquery.min.js    |    2 -
 wicket-core/src/test/js/all.html                   |    2 +-
 9 files changed, 18759 insertions(+), 9476 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/2de7d93f/wicket-core/src/main/java/org/apache/wicket/resource/DynamicJQueryResourceReference.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/DynamicJQueryResourceReference.java b/wicket-core/src/main/java/org/apache/wicket/resource/DynamicJQueryResourceReference.java
new file mode 100644
index 0000000..674cbc5
--- /dev/null
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/DynamicJQueryResourceReference.java
@@ -0,0 +1,108 @@
+/*
+ * 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.resource;
+
+import org.apache.wicket.MetaDataKey;
+import org.apache.wicket.Session;
+import org.apache.wicket.protocol.http.ClientProperties;
+import org.apache.wicket.protocol.http.WebSession;
+import org.apache.wicket.protocol.http.request.WebClientInfo;
+import org.apache.wicket.request.cycle.RequestCycle;
+import org.apache.wicket.request.resource.JavaScriptResourceReference;
+import org.apache.wicket.settings.IJavaScriptLibrarySettings;
+
+
+/**
+ * A resource reference that calculates which version of jQuery JavaScript library to use depending
+ * on the user agent. For IE 6/7/8 jQuery ver. 1.x will be used, for any other browser - ver. 2.x.
+ *
+ * To use this resource reference do:
+ * <code>
+ * app.getJavaScriptLibrarySettings().setJQueryReference(DynamicJQueryResourceReference.INSTANCE)
+ * </code>
+ *
+ * @since 7.0.0
+ */
+public class DynamicJQueryResourceReference extends JavaScriptResourceReference
+{
+	private static final long serialVersionUID = 1L;
+
+	/**
+	 * The key for the metadata that is used as a cache to calculate the name
+	 * only once
+	 */
+	private static final MetaDataKey<String> KEY = new MetaDataKey<String>()
+	{
+	};
+
+	/**
+	 * jQuery ver. 1.x - works on modern browsers and IE 6/7/8
+	 */
+	private static final String VERSION_1 = "jquery/jquery-1.10.0.js";
+
+	/**
+	 * jQuery ver. 2.x - works only on modern browsers
+	 */
+	private static final String VERSION_2 = "jquery/jquery-2.0.1.js";
+
+	private static final DynamicJQueryResourceReference INSTANCE = new DynamicJQueryResourceReference();
+
+	/**
+	 * Normally you should not use this method, but use
+	 * {@link IJavaScriptLibrarySettings#getJQueryReference()} to prevent version conflicts.
+	 * 
+	 * @return the single instance of the resource reference
+	 */
+	public static DynamicJQueryResourceReference get()
+	{
+		return INSTANCE;
+	}
+
+	private DynamicJQueryResourceReference()
+	{
+		super(DynamicJQueryResourceReference.class, VERSION_1);
+	}
+
+	@Override
+	public String getName()
+	{
+		RequestCycle requestCycle = RequestCycle.get();
+		String name = requestCycle.getMetaData(KEY);
+		if (name == null)
+		{
+			WebClientInfo clientInfo;
+			name = VERSION_2;
+			if (Session.exists())
+			{
+				WebSession session = WebSession.get();
+				clientInfo = session.getClientInfo();
+			}
+			else
+			{
+				clientInfo = new WebClientInfo(requestCycle);
+			}
+			ClientProperties clientProperties = clientInfo.getProperties();
+			if (clientProperties.isBrowserInternetExplorer() && clientProperties.getBrowserVersionMajor() < 9)
+			{
+				name = VERSION_1;
+			}
+
+			requestCycle.setMetaData(KEY, name);
+		}
+		return name;
+	}
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/2de7d93f/wicket-core/src/main/java/org/apache/wicket/resource/JQueryResourceReference.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/main/java/org/apache/wicket/resource/JQueryResourceReference.java b/wicket-core/src/main/java/org/apache/wicket/resource/JQueryResourceReference.java
index 1afc797..c9bbcf8 100644
--- a/wicket-core/src/main/java/org/apache/wicket/resource/JQueryResourceReference.java
+++ b/wicket-core/src/main/java/org/apache/wicket/resource/JQueryResourceReference.java
@@ -46,6 +46,6 @@ public class JQueryResourceReference extends JavaScriptResourceReference
 
 	private JQueryResourceReference()
 	{
-		super(JQueryResourceReference.class, "jquery/jquery.js");
+		super(JQueryResourceReference.class, "jquery/jquery-1.10.0.js");
 	}
 }