head.jspf
<%-- Licensed Materials - Property of IBM, 5724-E76, (C) Copyright IBM Corp. 2001, 2004, 2006 - All Rights reserved. NOTE: See notes in Default.jsp for information regarding editing theme JSP fragments. --%> <%-- ****************** BIDI ****************** The following bit of code is to make BIDI support a little easier. These variables are meant to suppliment the <portal:bidi ...> tag. There are situations where it is easier to use these variables instead of the tag itself. --%> <% String bidiAlignRight = "right"; // BIDI sensitive value for align="right" attribute String bidiAlignLeft = "left"; // BIDI sensitive value for align="left" attribute String bidiDirAttr = ""; // BIDI sensitive value for dir="rtl" attribute String bidiImageRTL = null; // BIDI sensitive value for adding _rtl to a graphic boolean isRTL = false; %> <portal-fmt:bidi dir="rtl"> <% bidiAlignRight = "left"; // BIDI sensitive value for align="right" attribute bidiAlignLeft = "right"; // BIDI sensitive value for align="left" attribute bidiDirAttr = "dir=\"rtl\""; // BIDI sensitive value for dir="rtl" attribute bidiImageRTL = "_rtl"; // BIDI sensitive value for adding _rtl to a graphic isRTL = true; %> </portal-fmt:bidi> <%! private static com.ibm.portal.model.NavigationSelectionModelHome navigationSelectionModelHome; private static com.ibm.portal.identification.Identification identification; private static com.ibm.portal.model.ContentMetaDataModelHome cmdmHome; public void jspInit() { try { /* Only perform this JNDI lookup once as this is an expensive call performance wise */ javax.naming.Context ctx = new javax.naming.InitialContext(); navigationSelectionModelHome = (com.ibm.portal.model.NavigationSelectionModelHome) ctx.lookup("portal:service/model/NavigationSelectionModel"); identification = (com.ibm.portal.identification.Identification) ctx.lookup( "portal:service/Identification" ); cmdmHome = (com.ibm.portal.model.ContentMetaDataModelHome) ctx.lookup("portal:service/model/ContentMetaDataModel"); } catch ( javax.naming.NamingException ne ) { // you do not log anything here because if portal ever enters // this catch statement then there are severe problems that have // occurred while fetching the model home and will already have been // logged by errors reported by the lookup. } } protected Object getMetaData(javax.servlet.ServletRequest request, javax.servlet.ServletResponse response) throws com.ibm.portal.ModelException { com.ibm.portal.model.NavigationSelectionModelProvider nsmProvider = navigationSelectionModelHome.getNavigationSelectionModelProvider(); com.ibm.portal.navigation.NavigationSelectionModel nsm = nsmProvider.getNavigationSelectionModel(request, response); com.ibm.portal.model.ContentMetaDataModelProvider cmdmProvider = cmdmHome.getContentMetaDataModelProvider(); com.ibm.portal.content.ContentMetaDataModel cmdm = cmdmProvider.getContentMetaDataModel(request, response); com.ibm.wps.model.ModelUtil modelUtil = com.ibm.wps.model.ModelUtil.from((javax.servlet.http.HttpServletRequest)request, (javax.servlet.http.HttpServletResponse)response); Object cn = nsm.getSelectedNode(); com.ibm.portal.MetaData md = cmdm.getMetaData(cn); Object metaDataValue = md.getValue("com.ibm.portal.applicationGuid"); return metaDataValue; } %> <head> <title><portal-fmt:text key="title" bundle="nls.engine"/></title> <link href='<portal-logic:urlFindInTheme file="images/Portal.ico"/>' rel="shortcut icon"> <%-- ****************** Browser Detection ****************** This section uses the CCPP profile to detect the browser. The browser variable is passed to the CSS jsps to implement browser-specific styles. Default theme CSS needs only differentiate between IE and Mozilla-based browsers. This will be done in the cacheProxyUrlTag when the cacheproxyservlet gets deployed in the build --%> <%@ page import="javax.ccpp.Profile" %> <%@ page import="javax.ccpp.Attribute" %> <%@ page import="javax.ccpp.ProfileFactory" %> <% // Determine the browser. For the purposes, you only distinguish IE vs Moz String vendor = null; Profile clientProfile = null; ProfileFactory profileFactory = ProfileFactory.getInstance(); if (profileFactory != null) { clientProfile = profileFactory.newProfile(request); Attribute attribute = clientProfile.getAttribute("Vendor"); if (attribute != null) { vendor = attribute.toString(); } } if("Microsoft".equals(vendor)){pageContext.setAttribute("browser", "ie");} else if("Apple".equals(vendor)){pageContext.setAttribute("browser", "safari");} else{pageContext.setAttribute("browser", "Moz");} %> <c:set var="isIE" value="${browser eq 'ie'}"/> <c:set var="isSafari" value="${browser eq 'safari'}"/> <%-- ****************** CSS ****************** Currently CSS JSPs are called directly and browser and locale are passed as query params. When the cacheproxyservlet is deployed in the build, these links will switch to the form: <link href='<portal:cacheProxyUrl file="css/themeStyles.jsp"/>?browser=<%=browser%>&locale=<%=request.getLocale() %>' rel="styleSheet" type="text/css"> --%> <portal-logic:pageMetaData varname="pageMetaData"> <!-- pageMetadatatag colorPalette: ${pageMetaData.colorPalette} --> <c:set var="colorPalette" scope="request"> <c:out value="${pageMetaData.colorPalette}" default="default"/> </c:set> </portal-logic:pageMetaData> <%--link href='<portal-logic:urlFindInTheme file="./styles.jsp"/>?browser=${browser}&locale=<%=request.getLocale() %>&colorpalette=${colorPalette}' rel="styleSheet" type="text/css"--%> <portal-logic:urlFindInTheme file="./styles.jsp" id="stylesJSP" /> <link href='<portal-core:cacheProxyUrl forwardurl="<%=stylesJSP.toString()%>" />' rel="styleSheet" type="text/css" /> <%-- ****************** JavaScripts ****************** --%> <portal-logic:urlFindInTheme file="./js.jsp" id="jsJSP" /> <script type="text/javascript" src='<portal-core:cacheProxyUrl forwardurl="<%=jsJSP.toString()%>" />'></script> <%-- Lotus Collaborative Services --%> <menu:menuinit/> <pa:peopleinit/> <%-- Context Menus --%> <c:set var="contextJsHref"> <c:choose> <c:when test="${isIE}"><portal-logic:urlFindInTheme file="psw/com/ibm/psw/wcl/renderers/menu/html/context_ie.js" /></c:when> <c:otherwise><portal-logic:urlFindInTheme file="psw/com/ibm/psw/wcl/renderers/menu/html/context_ns6.js" />'</c:otherwise> </c:choose> </c:set> <script type="text/javascript" src='${contextJsHref}'></script> <%-- This includes a base URL that can be used by other applications. This can result in much shorter URLs and decrease overall page size and bandwidth use --%> <portal-core:stateBase/> <%-- Asynchronous menu methods and variables --%> <%@ page import="com.ibm.portal.ObjectID" %> <%@ page import="com.ibm.portal.content.ContentNode" %> <%@ page import="com.ibm.portal.navigation.NavigationNode" %> <% com.ibm.portal.model.NavigationSelectionModelProvider nsmProvider = navigationSelectionModelHome.getNavigationSelectionModelProvider(); com.ibm.portal.navigation.NavigationSelectionModel nsm = nsmProvider.getNavigationSelectionModel(request, response); String pageOidStr = identification.serialize( ( ( com.ibm.portal.Identifiable ) nsm.getSelectedNode() ).getObjectID()); %> <%-- Content palette flyout and People palette flyout extensions --%> <%-- javascriptEventController for disabling menus until the page has completely loaded --%> <% int arrayPosition = 0;%> <script type="text/javascript"> var javascriptEventController = new ElementJavascriptEventController(), flyOut = [ <c-rt:if test = "${themePolicy.renderContentPalette}"> { url: "<portal-navigation:urlGeneration contentNode='ibm.portal.Content Palette' layoutNode='ibm.portal.Content Palette Control' newWindow='true' portletWindowState='Maximized'><portal-navigation:urlParam name='WCN' value='<%=pageOidStr%>' type='render' /><% wpsURL.write(out); %></portal-navigation:urlGeneration>", icon: "<portal-logic:urlFindInTheme file='images/toolBar/content.gif'/>", activeIcon: "<portal-logic:urlFindInTheme file='images/toolBar/Active_content.gif'/>", hoverIcon: "<portal-logic:urlFindInTheme file='images/toolBar/EnabledHover_content.gif'/>", active:false, altText:"<portal-fmt:text key='link.palette.portlet' bundle='nls.engine'/>", activeAltText:"<portal-fmt:text key='link.palette.close' bundle='nls.engine'/>" } <%arrayPosition++;%> </c-rt:if> <c-rt:if test = "${themePolicy.renderPeoplePalette}"> <%if(arrayPosition != 0){%>,<%}%> { url:"<portal-navigation:urlGeneration contentNode='ibm.portal.People Palette' layoutNode='ibm.portal.People Palette Control' newWindow='true' portletWindowState='Maximized'><% wpsURL.write(out); %></portal-navigation:urlGeneration>", icon: "<portal-logic:urlFindInTheme file='images/toolBar/people.gif'/>", activeIcon: "<portal-logic:urlFindInTheme file='images/toolBar/Active_people.gif'/>", hoverIcon: "<portal-logic:urlFindInTheme file='images/toolBar/EnabledHover_people.gif'/>", active:false, altText:"<portal-fmt:text key='link.palette.people' bundle='nls.engine'/>", activeAltText:"<portal-fmt:text key='link.palette.close' bundle='nls.engine'/>" } <%arrayPosition++;%> </c-rt:if> <c-rt:if test = "${themePolicy.renderExtensions}"> <portal-theme-ext:themeExtension id="com.ibm.portal.theme.plugin.Flyouts" > <portal-theme-ext:themeExtensionLoop> <%if(arrayPosition != 0){%>,<%}%>{ url:"<portal-theme-ext:themeExtensionItemUrl />", icon: "<portal-theme-ext:themeExtensionItemIconUrl state='STATE_ENABLED' />", activeIcon: "<portal-theme-ext:themeExtensionItemIconUrl state='STATE_ACTIVE' />", hoverIcon: "<portal-theme-ext:themeExtensionItemIconUrl state='STATE_ENABLED_HOVER' />", active:false, altText: "<portal-fmt:title varname='<%=(com.ibm.portal.theme.plugin.ThemeItem) themeExtension%>' />", activeAltText:"<portal-fmt:text key='link.palette.close' bundle='nls.engine'/>"} <%arrayPosition++;%> </portal-theme-ext:themeExtensionLoop> </portal-theme-ext:themeExtension> </c-rt:if> ]; </script> <script type="text/javascript"> <c-rt:set var="pageNoActionsText" ><portal-fmt:text bundle='nls.engine' key='info.emptymenu' /></c-rt:set> function showMainMenu_<%=pageOidStr%>() { asynchContextMenuOnMouseClickHandler( "menu_<%=pageOidStr%>_main", <%=!isRTL%>, '<portal-navigation:url themeTemplate="mainMenu"></portal-navigation:url>', "main-menu-border", "main-menu", "main-menu-item", "main-menu-item-selected", null,'<portal-logic:urlFindInTheme file="images/banner/launch_loading.gif" />' ); } var pageMenuURL = '<portal-navigation:url theme="pageContextMenu" />'; function showPageMenu( launcher ) { <%--var menu = getPageMenu( "<%=pageOidStr%>", "<%=!isRTL%>" ); if ( menu.items.length > 0 ) { return showContextMenu( menu.name, launcher ); } else { return false; }--%> asynchContextMenuOnMouseClickHandler( 'menu_<%=pageOidStr%>',<%=!isRTL%>,pageMenuURL, "main-menu-border", "main-menu", "main-menu-item", "main-menu-item-selected", '<c-rt:out value="${pageNoActionsText}" escapeXml="true" />','<portal-logic:urlFindInTheme file="images/context_loading.gif" />' ); } function accessibleShowPageMenu( evt ) { keyCode = -1; if ( evt && evt.which ) { keyCode = evt.which; } else if ( window.event ) { keyCode = window.event.keyCode } if ( keyCode == 13 ) { <%--var menu = getPageMenu( "<%=pageOidStr%>", "<%=!isRTL%>" ); if ( menu.items.length > 0 ) { return showContextMenu( menu.name, launcher ); }--%> asynchContextMenuOnMouseClickHandler( 'menu_<%=pageOidStr%>',<%=!isRTL%>,pageMenuURL, "main-menu-border", "main-menu", "main-menu-item", "main-menu-item-selected", '<c-rt:out value="${pageNoActionsText}" escapeXml="true" />','<portal-logic:urlFindInTheme file="images/context_loading.gif" />' ); } else { return true; } } function showPageAffordance() { if ( asynchContextMenu_menuCurrentlyLoading != null ) return; <%--var menu = getPageMenu( "<%=pageOidStr%>", "<%=!isRTL%>" ); if ( menu.items.length > 0 ) {--%> document.getElementById( 'menu_<%=pageOidStr%>' ).style.cursor = 'pointer'; document.getElementById( 'menu_<%=pageOidStr%>_img' ).src="<portal-logic:urlFindInTheme file="images/topNav/menu_selected.gif" />"; <%--}--%> } function hidePageAffordance() { if ( asynchContextMenu_menuCurrentlyLoading != null ) return; <%--var menu = getPageMenu( "<%=pageOidStr%>", "<%=!isRTL%>" ); if ( menu.items.length > 0 ) {--%> document.getElementById( 'menu_<%=pageOidStr%>' ).style.cursor = 'default'; document.getElementById( 'menu_<%=pageOidStr%>_img' ).src="<portal-logic:urlFindInTheme file="images/topNav/menu_selected_disabled.gif" />"; <%--}--%> } </script> <%--@ include file="./head_pageMenu.jspf" --%> </head>