summaryrefslogtreecommitdiff
path: root/BKUOnline/src
diff options
context:
space:
mode:
Diffstat (limited to 'BKUOnline/src')
-rw-r--r--BKUOnline/src/main/webapp/js/deployJava.js446
1 files changed, 322 insertions, 124 deletions
diff --git a/BKUOnline/src/main/webapp/js/deployJava.js b/BKUOnline/src/main/webapp/js/deployJava.js
index 75a9fe2d..829544c0 100644
--- a/BKUOnline/src/main/webapp/js/deployJava.js
+++ b/BKUOnline/src/main/webapp/js/deployJava.js
@@ -1,5 +1,6 @@
/*
- * Copyright (c) 2008 Sun Microsystems, Inc. All rights reserved.
+ * Copyright (c) 2006, 2011, Oracle and/or its affiliates. All rights reserved.
+ * ORACLE PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -12,7 +13,7 @@
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
- * - Neither the name of Sun Microsystems nor the names of its
+ * - Neither the name of Oracle nor the names of its
* contributors may be used to endorse or promote products derived
* from this software without specific prior written permission.
*
@@ -33,13 +34,13 @@
* Added by EGIZ:
* This file contains workarounds to
* [#423] Firefox 3.0.11 bug #498132 causes applet loading failure
- * (lines 95-99)
+ * (not needed anymore)
* [#424] Web Start loading via java plugin (Sun deployment script) fails on WinXP/Vista
- * (lines 501-506)
+ * (not needed anymore)
*
* features:
- * [#425] Disable WebStart Launch Button for MacOS
- * (lines 492-504)
+ * [#425] Disable WebStart Launch Button for MacOS X < 1.6
+ * (lines 595-612 & 647-662)
*
*/
@@ -48,18 +49,27 @@
*
* This file is part of the Deployment Toolkit. It provides functions for web
* pages to detect the presence of a JRE, install the latest JRE, and easily run
- * applets or Web Start programs. Usage guide may be found at http://<TBD>/.
+ * applets or Web Start programs. More Information on usage of the
+ * Deployment Toolkit can be found in the Deployment Guide at:
+ * http://java.sun.com/javase/6/docs/technotes/guides/jweb/index.html
*
- * The "live" copy of this file may be found at
+ * The "live" copy of this file may be found at :
* http://java.com/js/deployJava.js.
- * You are encouraged to link directly to the live copy of the file.
+ * For web pages provisioned using https, you may want to access the copy at:
+ * https://java.com/js/deployJava.js.
+ *
+ * You are encouraged to link directly to the live copies.
+ * The above files are stripped of comments and whitespace for performance,
+ * You can access this file w/o the whitespace and comments removed at:
+ * http://java.com/js/deployJava.txt.
*
- * @version @(#)deployJava.js 1.13 08/10/28
*/
var deployJava = {
debug: null,
+ firefoxJavaVersion: null,
+
myInterval: null,
preInstallJREList: null,
returnPage: null,
@@ -77,11 +87,16 @@ var deployJava = {
appleRedirectPage: 'http://www.apple.com/support/downloads/',
// mime-type of the DeployToolkit plugin object
- mimeType: 'application/npruntime-scriptable-plugin;DeploymentToolkit',
+ oldMimeType: 'application/npruntime-scriptable-plugin;DeploymentToolkit',
+ mimeType: 'application/java-deployment-toolkit',
// location of the Java Web Start launch button graphic
+ //launchButtonPNG: 'http://java.sun.com/products/jfc/tsc/articles/swing2d/webstart.png',
launchButtonPNG: 'img/webstart.png',
+ browserName: null,
+ browserName2: null,
+
/**
* Returns an array of currently-installed JRE version strings.
* Version strings are of the form #.#[.#[_#]], with the function returning
@@ -96,10 +111,9 @@ var deployJava = {
var list = new Array();
if (deployJava.isPluginInstalled()) {
var plugin = deployJava.getPlugin();
- //[#423] Firefox 3.0.11 bug #498132 causes applet loading failure
- var jvms = plugin.jvms;
- for (var i = 0; i < jvms.getLength(); i++) {
- list[i] = jvms.get(i).version;
+ var VMs = plugin.jvms;
+ for (var i = 0; i < VMs.getLength(); i++) {
+ list[i] = VMs.get(i).version;
}
} else {
var browser = deployJava.getBrowser();
@@ -118,30 +132,30 @@ var deployJava = {
} else if (deployJava.testForMSVM()) {
list[0] = '1.1';
}
- }
- else if (browser == 'Netscape Family') {
- if (deployJava.testUsingMimeTypes('1.8')) {
- list[0] = '1.8.0';
+ } else if (browser == 'Netscape Family') {
+ deployJava.getJPIVersionUsingMimeType();
+ if (deployJava.firefoxJavaVersion != null) {
+ list[0] = deployJava.firefoxJavaVersion;
+ } else if (deployJava.testUsingMimeTypes('1.8')) {
+ list[0] = '1.8.0';
} else if (deployJava.testUsingMimeTypes('1.7')) {
- list[0] = '1.7.0';
+ list[0] = '1.7.0';
} else if (deployJava.testUsingMimeTypes('1.6')) {
list[0] = '1.6.0';
} else if (deployJava.testUsingMimeTypes('1.5')) {
list[0] = '1.5.0';
} else if (deployJava.testUsingMimeTypes('1.4.2')) {
list[0] = '1.4.2';
- }
- } else if (browser == 'Safari') {
- if (deployJava.testUsingPluginsArray('1.8.0')) {
- list[0] = '1.8.0';
- } else if (deployJava.testUsingPluginsArray('1.7.0')) {
- list[0] = '1.7.0';
- } else if (deployJava.testUsingPluginsArray('1.6.0')) {
- list[0] = '1.6.0';
- } else if (deployJava.testUsingPluginsArray('1.5.0')) {
- list[0] = '1.5.0';
- } else if (deployJava.testUsingPluginsArray('1.4.2')) {
- list[0] = '1.4.2';
+ } else if (deployJava.browserName2 == 'Safari') {
+ if (deployJava.testUsingPluginsArray('1.7.0')) {
+ list[0] = '1.7.0';
+ } else if (deployJava.testUsingPluginsArray('1.6')) {
+ list[0] = '1.6.0';
+ } else if (deployJava.testUsingPluginsArray('1.5')) {
+ list[0] = '1.5.0';
+ } else if (deployJava.testUsingPluginsArray('1.4.2')) {
+ list[0] = '1.4.2';
+ }
}
}
}
@@ -290,7 +304,7 @@ var deployJava = {
if (matchData != null) {
var browser = deployJava.getBrowser();
- if ((browser != '?') && (browser != 'Safari')) {
+ if ((browser != '?') && ('Safari' != deployJava.browserName2)) {
if (deployJava.versionCheck(minimumVersion + '+')) {
deployJava.writeAppletTag(attributes, parameters);
} else if (deployJava.installJRE(minimumVersion + '+')) {
@@ -326,12 +340,17 @@ var deployJava = {
* has been completed.
*/
writeAppletTag: function(attributes, parameters) {
- var s = '<' + 'applet ';
+ var startApplet = '<' + 'applet ';
+ var params = '';
+ var endApplet = '<' + '/' + 'applet' + '>';
+ var addCodeAttribute = true;
+
for (var attribute in attributes) {
- s += (' ' + attribute + '="' + attributes[attribute] + '"');
+ startApplet += (' ' +attribute+ '="' +attributes[attribute] + '"');
+ if (attribute == 'code' || attribute == 'java_code') {
+ addCodeAttribute = false;
+ }
}
- s += '>';
- document.write(s);
if (parameters != 'undefined' && parameters != null) {
var codebaseParam = false;
@@ -339,15 +358,26 @@ var deployJava = {
if (parameter == 'codebase_lookup') {
codebaseParam = true;
}
- s = '<param name="' + parameter + '" value="' +
- parameters[parameter] + '">';
- document.write(s);
+ // Originally, parameter 'object' was used for serialized
+ // applets, later, to avoid confusion with object tag in IE
+ // the 'java_object' was added. Plugin supports both.
+ if (parameter == 'object' || parameter == 'java_object') {
+ addCodeAttribute = false;
+ }
+ params += '<param name="' + parameter + '" value="' +
+ parameters[parameter] + '"/>';
}
if (!codebaseParam) {
- document.write('<param name="codebase_lookup" value="false">');
+ params += '<param name="codebase_lookup" value="false"/>';
}
}
- document.write('<' + '/' + 'applet' + '>');
+
+ if (addCodeAttribute) {
+ startApplet += (' code="dummy"');
+ }
+ startApplet += '>';
+
+ document.write(startApplet + '\n' + params + '\n' + endApplet);
},
@@ -431,7 +461,7 @@ var deployJava = {
isWebStartInstalled: function(minimumVersion) {
var browser = deployJava.getBrowser();
- if ((browser == '?') || (browser == 'Safari')) {
+ if ((browser == '?') || ('Safari' == deployJava.browserName2)) {
// we really don't know - better to try to use it than reinstall
return true;
}
@@ -454,8 +484,134 @@ var deployJava = {
}
return retval;
},
+
+ // obtain JPI version using navigator.mimeTypes array
+ // if found, set the version to deployJava.firefoxJavaVersion
+ getJPIVersionUsingMimeType: function() {
+ // Walk through the full list of mime types.
+ for (var i = 0; i < navigator.mimeTypes.length; ++i) {
+ var s = navigator.mimeTypes[i].type;
+ // The jpi-version is the plug-in version. This is the best
+ // version to use.
+ var m = s.match(/^application\/x-java-applet;jpi-version=(.*)$/);
+ if (m != null) {
+ deployJava.firefoxJavaVersion = m[1];
+ // Opera puts the latest sun JRE last not first
+ if ('Opera' != deployJava.browserName2) {
+ break;
+ }
+ }
+ }
+ },
-
+ // launch the specified JNLP application using the passed in jnlp file
+ // the jnlp file does not need to have a codebase
+ // this requires JRE 7 or above to work
+ // if machine has no JRE 7 or above, we will try to auto-install and then launch
+ // (function will return false if JRE auto-install failed)
+ launchWebStartApplication: function(jnlp) {
+ var uaString = navigator.userAgent.toLowerCase();
+
+ deployJava.getJPIVersionUsingMimeType();
+
+ // make sure we are JRE 7 or above
+ if (deployJava.isWebStartInstalled('1.7.0') == false) {
+
+ // perform latest JRE auto-install
+ if ((deployJava.installJRE('1.7.0+') == false) ||
+ ((deployJava.isWebStartInstalled('1.7.0') == false))) {
+ return false;
+ }
+ }
+
+ var jnlpDocbase = null;
+
+ // use document.documentURI for docbase
+ if (document.documentURI) {
+ jnlpDocbase = document.documentURI;
+ }
+
+ // fallback to document.URL if documentURI not available
+ if (jnlpDocbase == null) {
+ jnlpDocbase = document.URL;
+ }
+
+ var browser = deployJava.getBrowser();
+
+ var launchTag;
+
+ if (browser == 'MSIE') {
+
+ launchTag = '<' +
+ 'object classid="clsid:8AD9C840-044E-11D1-B3E9-00805F499D93" ' +
+ 'width="0" height="0">' +
+ '<' + 'PARAM name="launchjnlp" value="' + jnlp + '"' + '>' +
+ '<' + 'PARAM name="docbase" value="' + jnlpDocbase + '"' + '>' +
+ '<' + '/' + 'object' + '>';
+ } else if (browser == 'Netscape Family') {
+
+ launchTag = '<' +
+ 'embed type="application/x-java-applet;jpi-version=' +
+ deployJava.firefoxJavaVersion + '" ' +
+ 'width="0" height="0" ' +
+ 'launchjnlp="' + jnlp + '"' +
+ 'docbase="' + jnlpDocbase + '"' +
+ ' />';
+ }
+
+ if (document.body == 'undefined' || document.body == null) {
+ document.write(launchTag);
+ // go back to original page, otherwise current page becomes blank
+ document.location = jnlpDocbase;
+ } else {
+ var divTag = document.createElement("div");
+ divTag.id = "div1";
+ divTag.style.position = "relative";
+ divTag.style.left = "-10000px";
+ divTag.style.margin = "0px auto";
+ divTag.className ="dynamicDiv";
+ divTag.innerHTML = launchTag;
+ document.body.appendChild(divTag);
+ }
+ },
+
+ createWebStartLaunchButtonEx: function(jnlp, minimumVersion) {
+
+ if (deployJava.returnPage == null) {
+ // if there is an install, come back and run the jnlp file
+ deployJava.returnPage = jnlp;
+ }
+
+ var url = 'javascript:deployJava.launchWebStartApplication(\'' + jnlp +
+ '\');';
+
+ document.write('<' + 'a href="' + url +
+ '" onMouseOver="window.status=\'\'; ' +
+ 'return true;"><' + 'img ' +
+ 'src="' + deployJava.launchButtonPNG + '" ' +
+ 'border="0" /><' + '/' + 'a' + '>');
+ },
+
+
+ /**
+ * Checks if MacOS Version contained in userAgent is at least a certain
+ * given Version.
+ */
+ isMacOSXVersionMin: function(userAgent, minMajor, minMinor)
+ {
+ var ver_match = /os x (\d+)[\._](\d+)/;
+ if (ver_match.exec(userAgent.toLowerCase()) == null)
+ return false;
+ var major = RegExp.$1;
+ var minor = RegExp.$2;
+ if (major > minMajor)
+ return true;
+ else if (major < minMajor)
+ return false;
+ else
+ return minor >= minMinor;
+ },
+
/**
* Outputs a launch button for the specified JNLP URL. When clicked, the
* button will ensure that an appropriate JRE is installed and then launch
@@ -472,7 +628,7 @@ var deployJava = {
* but there are circumstances (such as when the JRE installation
* requires a browser restart) when this cannot be fulfilled.
*/
- createWebStartLaunchButton: function(jnlp, minimumVersion) {
+ createWebStartLaunchButton: function(jnlp, minimumVersion) {
if (deployJava.returnPage == null) {
// if there is an install, come back and run the jnlp file
@@ -490,9 +646,8 @@ var deployJava = {
'}';
// [#425] Disable WebStart Launch Button for MacOS
- if (navigator.appVersion.toLowerCase().indexOf("mac")!=-1 &&
- navigator.userAgent.toLowerCase().indexOf("os x 10_6")==-1 &&
- navigator.userAgent.toLowerCase().indexOf("os x 10.6")==-1 )
+ if ((navigator.userAgent.toLowerCase().indexOf("mac os")!=-1) &&
+ !deployJava.isMacOSXVersionMin(navigator.userAgent, 10, 6))
{
document.write('<' + 'a disabled="disabled"' +
' onMouseOver="window.status=\'\'; ' +
@@ -513,13 +668,11 @@ var deployJava = {
* Launch a JNLP application, (using the plugin if available)
*/
launch: function(jnlp) {
- //[#424] Web Start loading via java plugin (Sun deployment script) fails on WinXP
-// if (deployJava.isPluginInstalled()) {
-// return deployJava.getPlugin().launch(jnlp);
-// } else {
- document.location=jnlp;
- return true;
-// }
+ /*
+ * Using the plugin to launch Java Web Start is disabled for the time being
+ */
+ document.location=jnlp;
+ return true;
},
@@ -548,8 +701,8 @@ var deployJava = {
/*
* sets AutoUpdate on if plugin is installed
*/
- setAutoUpdateEnabled: function() {
- if (deployJava.isPluginInstalled()) {
+ setAutoUpdateEnabled: function() {
+ if (deployJava.isPluginInstalled()) {
return deployJava.getPlugin().setAutoUpdateEnabled();
}
return false;
@@ -589,19 +742,35 @@ var deployJava = {
*/
isPlugin2: function() {
if (deployJava.isPluginInstalled()) {
- try {
- return deployJava.getPlugin().isPlugin2();
- } catch (err) {
- // older plugin w/o isPlugin2() function - just fall through
+ if (deployJava.versionCheck('1.6.0_10+')) {
+ try {
+ return deployJava.getPlugin().isPlugin2();
+ } catch (err) {
+ // older plugin w/o isPlugin2() function -
+ }
}
}
return false;
},
+ allowPlugin: function() {
+ deployJava.getBrowser();
+
+ // Safari and Opera browsers find the plugin but it
+ // doesn't work, so until we can get it to work - don't use it.
+ var ret = ('Safari' != deployJava.browserName2 &&
+ 'Opera' != deployJava.browserName2);
+
+ return ret;
+ },
getPlugin: function() {
deployJava.refresh();
- var ret = document.getElementById('deployJavaPlugin');
+
+ var ret = null;
+ if (deployJava.allowPlugin()) {
+ ret = document.getElementById('deployJavaPlugin');
+ }
return ret;
},
@@ -609,7 +778,7 @@ var deployJava = {
var regex = "^(\\d+)(?:\\.(\\d+)(?:\\.(\\d+)(?:_(\\d+))?)?)?$";
var matchData = version.match(regex);
- if (matchData != null) {
+ if (matchData != null) {
var index = 0;
var result = new Array();
@@ -647,40 +816,49 @@ var deployJava = {
getBrowser: function() {
- var browser = navigator.userAgent.toLowerCase();
-
- if (deployJava.debug) {
- alert('userAgent -> ' + browser);
- }
- if ((navigator.vendor) &&
- (navigator.vendor.toLowerCase().indexOf('apple') != -1) &&
- (browser.indexOf('safari') != -1)) {
- if (deployJava.debug) {
- alert('We claim to have detected "Safari".');
- }
- return 'Safari';
- } else if (browser.indexOf('msie') != -1) {
+ if (deployJava.browserName == null) {
+ var browser = navigator.userAgent.toLowerCase();
+
if (deployJava.debug) {
- alert('We claim to have detected "IE".');
+ alert('userAgent -> ' + browser);
}
- return 'MSIE';
-// } else if ((browser.indexOf('konqueror') != -1)) {
-// if (deployJava.debug) {
-// alert('We claim to have detected "Konqueror".');
-// }
- } else if ((browser.indexOf('mozilla') != -1) ||
- (browser.indexOf('firefox') != -1)) {
- if (deployJava.debug) {
- alert('We claim to have detected a Netscape family browser.');
+
+ // order is important here. Safari userAgent contains mozilla,
+ // and Chrome userAgent contains both mozilla and safari.
+ if (browser.indexOf('msie') != -1) {
+ deployJava.browserName = 'MSIE';
+ deployJava.browserName2 = 'MSIE';
+ } else if (browser.indexOf('iphone') != -1) {
+ // this included both iPhone and iPad
+ deployJava.browserName = 'Netscape Family';
+ deployJava.browserName2 = 'iPhone';
+ } else if (browser.indexOf('firefox') != -1) {
+ deployJava.browserName = 'Netscape Family';
+ deployJava.browserName2 = 'Firefox';
+ } else if (browser.indexOf('chrome') != -1) {
+ deployJava.browserName = 'Netscape Family';
+ deployJava.browserName2 = 'Chrome';
+ } else if (browser.indexOf('safari') != -1) {
+ deployJava.browserName = 'Netscape Family';
+ deployJava.browserName2 = 'Safari';
+ } else if (browser.indexOf('mozilla') != -1) {
+ deployJava.browserName = 'Netscape Family';
+ deployJava.browserName2 = 'Other';
+ } else if (browser.indexOf('opera') != -1) {
+ deployJava.browserName = 'Netscape Family';
+ deployJava.browserName2 = 'Opera';
+ } else {
+ deployJava.browserName = '?';
+ deployJava.browserName2 = 'unknown';
}
- return 'Netscape Family';
- } else {
+
if (deployJava.debug) {
- alert('We claim to have failed to detect a browser.');
+ alert ('Detected browser name:'+ deployJava.browserName +
+ ', ' + deployJava.browserName2);
}
- return '?';
}
+ return deployJava.browserName;
},
@@ -738,28 +916,38 @@ var deployJava = {
return false;
},
-
testUsingPluginsArray: function(version) {
if ((!navigator.plugins) || (!navigator.plugins.length)) {
- if (deployJava.debug) {
- alert ('Browser claims to be Safari, but no plugins[] array?');
- }
return false;
}
+ var platform = navigator.platform.toLowerCase();
for (var i = 0; i < navigator.plugins.length; ++i) {
s = navigator.plugins[i].description;
-
- if (s.search(/^Java Switchable Plug-in/) != -1) {
- return true;
- }
-
- m = s.match(/^Java (1\.4\.2|1\.5|1\.6|1\.7).* Plug-in/);
- if (m != null) {
- if (deployJava.compareVersions(m[1], version)) return true;
+ if (s.search(/^Java Switchable Plug-in (Cocoa)/) != -1) {
+ // Safari on MAC
+ if (deployJava.compareVersions("1.5.0", version)) {
+ return true;
+ }
+ } else if (s.search(/^Java/) != -1) {
+ if (platform.indexOf('win') != -1) {
+ // still can't tell - opera, safari on windows
+ // return true for 1.5.0 and 1.6.0
+ if (deployJava.compareVersions("1.5.0", version) ||
+ deployJava.compareVersions("1.6.0", version)) {
+ return true;
+ }
+ }
}
}
+ // if above dosn't work on Apple or Windows, just allow 1.5.0
+ if (deployJava.compareVersions("1.5.0", version)) {
+ return true;
+ }
return false;
+
+
+
},
IEInstall: function() {
@@ -826,6 +1014,8 @@ var deployJava = {
enableAlerts: function() {
+ // reset this so we can show the browser detection
+ deployJava.browserName = null;
deployJava.debug = true;
},
@@ -855,22 +1045,14 @@ var deployJava = {
writePluginTag: function() {
var browser = deployJava.getBrowser();
+
if (browser == 'MSIE') {
document.write('<' +
'object classid="clsid:CAFEEFAC-DEC7-0000-0000-ABCDEFFEDCBA" ' +
'id="deployJavaPlugin" width="0" height="0">' +
'<' + '/' + 'object' + '>');
- } else if (browser == 'Netscape Family') {
- if (navigator.mimeTypes != null) for (var i=0;
- i < navigator.mimeTypes.length; i++) {
- if (navigator.mimeTypes[i].type == deployJava.mimeType) {
- if (navigator.mimeTypes[i].enabledPlugin) {
- document.write('<' +
- 'embed id="deployJavaPlugin" type="' +
- deployJava.mimeType + '" hidden="true" />');
- }
- }
- }
+ } else if (browser == 'Netscape Family' && deployJava.allowPlugin()) {
+ deployJava.writeEmbedTag();
}
},
@@ -878,20 +1060,37 @@ var deployJava = {
navigator.plugins.refresh(false);
var browser = deployJava.getBrowser();
- if (browser == 'Netscape Family') {
+ if (browser == 'Netscape Family' && deployJava.allowPlugin()) {
var plugin = document.getElementById('deployJavaPlugin');
// only do this again if no plugin
if (plugin == null) {
- if (navigator.mimeTypes != null) for (var i=0;
- i < navigator.mimeTypes.length; i++) {
- if (navigator.mimeTypes[i].type == deployJava.mimeType) {
- if (navigator.mimeTypes[i].enabledPlugin) {
- document.write('<' +
- 'embed id="deployJavaPlugin" type="' +
- deployJava.mimeType + '" hidden="true" />');
- }
+ deployJava.writeEmbedTag();
+ }
+ }
+ },
+
+ writeEmbedTag: function() {
+ var written = false;
+ if (navigator.mimeTypes != null) {
+ for (var i=0; i < navigator.mimeTypes.length; i++) {
+ if (navigator.mimeTypes[i].type == deployJava.mimeType) {
+ if (navigator.mimeTypes[i].enabledPlugin) {
+ document.write('<' +
+ 'embed id="deployJavaPlugin" type="' +
+ deployJava.mimeType + '" hidden="true" />');
+ written = true;
}
- }
+ }
+ }
+ // if we ddn't find new mimeType, look for old mimeType
+ if (!written) for (var i=0; i < navigator.mimeTypes.length; i++) {
+ if (navigator.mimeTypes[i].type == deployJava.oldMimeType) {
+ if (navigator.mimeTypes[i].enabledPlugin) {
+ document.write('<' +
+ 'embed id="deployJavaPlugin" type="' +
+ deployJava.oldMimeType + '" hidden="true" />');
+ }
+ }
}
}
},
@@ -922,4 +1121,3 @@ var deployJava = {
};
deployJava.do_initialize();
-