diff --git a/core/src/main/java/hudson/Functions.java b/core/src/main/java/hudson/Functions.java index bbe1de2ddf..b375fad3f3 100644 --- a/core/src/main/java/hudson/Functions.java +++ b/core/src/main/java/hudson/Functions.java @@ -202,7 +202,8 @@ public class Functions { } public static void initPageVariables(JellyContext context) { - String rootURL = Stapler.getCurrentRequest().getContextPath(); + StaplerRequest currentRequest = Stapler.getCurrentRequest(); + String rootURL = currentRequest.getContextPath(); Functions h = new Functions(); context.setVariable("h", h); @@ -222,6 +223,8 @@ public class Functions { */ context.setVariable("resURL",rootURL+getResourcePath()); context.setVariable("imagesURL",rootURL+getResourcePath()+"/images"); + + context.setVariable("userAgent", currentRequest.getHeader("User-Agent")); } /** diff --git a/core/src/main/resources/lib/layout/layout.jelly b/core/src/main/resources/lib/layout/layout.jelly index 9e5ff26340..423f4f736d 100644 --- a/core/src/main/resources/lib/layout/layout.jelly +++ b/core/src/main/resources/lib/layout/layout.jelly @@ -67,6 +67,7 @@ ${h.initPageVariables(context)} this also allows us to configure HttpSessionContextIntegrationFilter not to create sessions, which I suspect can end up creating sessions for wrong resource types (such as static resources.) --> + @@ -80,6 +81,10 @@ ${h.initPageVariables(context)} ${h.checkPermission(it,permission)} + + + + ${h.appendIfNotNull(title, ' [Jenkins]', 'Jenkins')} @@ -122,6 +127,10 @@ ${h.initPageVariables(context)} diff --git a/war/src/main/webapp/scripts/msie.js b/war/src/main/webapp/scripts/msie.js new file mode 100644 index 0000000000..4ed28719df --- /dev/null +++ b/war/src/main/webapp/scripts/msie.js @@ -0,0 +1,39 @@ +/* + * The MIT License + * + * Copyright (c) 2004-2010, Sun Microsystems, Inc., Kohsuke Kawaguchi, + * Daniel Dyer, Yahoo! Inc., Alan Harder, InfraDNA, Inc. + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +function assertDocumentModeOK() { + if (YAHOO.env.ua.ie) { + setTimeout(function() { + if (YAHOO.env.ua.ie !== document.documentMode) { + alert("WARNING: Your Internet Explorer appears to be set to a non-default 'Document Mode' (see Developer Tools - press F12).\n" + + "\n" + + "Jenkins may not display properly in this browser."); + } + }, 1500); + } +} + +assertDocumentModeOK(); +