<%-- * This program is free software; you can redistribute it and/or modify it under the * terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software * Foundation. * * You should have received a copy of the GNU Lesser General Public License along with this * program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html * or from the Free Software Foundation, Inc., * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * * Copyright (c) 2002-2017 Hitachi Vantara.. All rights reserved. --%> <%@page pageEncoding="UTF-8" %> <%@ page language="java" import="org.apache.commons.lang.StringUtils, org.owasp.encoder.Encode, org.pentaho.platform.util.messages.LocaleHelper, java.util.Locale, java.net.URL, java.net.URLClassLoader, java.util.ArrayList, java.util.Iterator, java.util.LinkedHashMap, java.util.List, java.util.Map, java.util.ResourceBundle, org.pentaho.platform.engine.core.system.PentahoSystem, org.pentaho.platform.api.engine.IPluginManager, org.pentaho.platform.engine.core.system.PentahoSessionHolder"%> <% boolean hasDataAccessPlugin = PentahoSystem.get( IPluginManager.class, PentahoSessionHolder.getSession() ).getRegisteredPlugins().contains( "data-access" ); Locale effectiveLocale = request.getLocale(); if ( !StringUtils.isEmpty( request.getParameter( "locale" ) ) ) { request.getSession().setAttribute( "locale_override", request.getParameter( "locale" ) ); LocaleHelper.parseAndSetLocaleOverride( request.getParameter( "locale" ) ); } else { request.getSession().setAttribute( "locale_override", null ); LocaleHelper.setLocaleOverride( null ); } URLClassLoader loader = new URLClassLoader( new URL[] { application.getResource( "/mantle/messages/" ) } ); ResourceBundle properties = ResourceBundle.getBundle( "mantleMessages", request.getLocale(), loader ); %> <%= properties.getString("productName") %> <% boolean haveMobileRedirect = false; String ua = request.getHeader( "User-Agent" ).toLowerCase(); if ( !"desktop".equalsIgnoreCase( request.getParameter( "mode") ) ) { if ( ua.contains( "ipad" ) || ua.contains( "ipod" ) || ua.contains( "iphone" ) || ua.contains( "android" ) || "mobile".equalsIgnoreCase( request.getParameter( "mode" ) ) ) { IPluginManager pluginManager = PentahoSystem.get( IPluginManager.class, PentahoSessionHolder.getSession() ); List pluginIds = pluginManager.getRegisteredPlugins(); for ( String id : pluginIds ) { String mobileRedirect = (String)pluginManager.getPluginSetting( id, "mobile-redirect", null ); if ( mobileRedirect != null ) { // we have a mobile redirect haveMobileRedirect = true; String queryString = request.getQueryString(); if( queryString != null ) { final Map queryPairs = new LinkedHashMap(); //Check for deep linking by fetching the name and startup-url values from URL query parameters String[] pairs = queryString.split( "&" ); for ( String pair : pairs ) { int delimiter = pair.indexOf( "=" ); queryPairs.put( Encode.forJavaScript( pair.substring( 0, delimiter ) ), Encode.forJavaScript( pair.substring( delimiter + 1 ) ) ); } if ( queryPairs.size() > 0 ) { mobileRedirect += "?"; Iterator it = queryPairs.entrySet().iterator(); while ( it.hasNext() ) { Map.Entry entry = (Map.Entry) it.next(); mobileRedirect += entry.getKey() + "=" + entry.getValue(); it.remove(); if ( it.hasNext() ){ mobileRedirect += "&"; } } } } %> <% break; } } } if (!haveMobileRedirect) { %> <%if ( hasDataAccessPlugin ) {%> <%}%>
<%if ( hasDataAccessPlugin ) {%> <%}}}%>