opensearch.jsp revision 1478
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich<%--
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich$Id$
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen RabinovichCDDL HEADER START
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen RabinovichThe contents of this file are subject to the terms of the
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen RabinovichCommon Development and Distribution License (the "License").
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen RabinovichYou may not use this file except in compliance with the License.
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen RabinovichSee LICENSE.txt included in this distribution for the specific
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovichlanguage governing permissions and limitations under the License.
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen RabinovichWhen distributing Covered Code, include this CDDL HEADER in each
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovichfile and include the License file at LICENSE.txt.
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen RabinovichIf applicable, add the following below this CDDL HEADER, with the
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovichfields enclosed by brackets "[]" replaced with your own identifying
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovichinformation: Portions Copyright [yyyy] [name of copyright owner]
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen RabinovichCDDL HEADER END
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen RabinovichCopyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen RabinovichPortions Copyright 2011 Jens Elkner.
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich--%><%@page session="false" errorPage="error.jsp" import="
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovichjava.util.Set,
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovichorg.opensolaris.opengrok.web.PageConfig,
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovichorg.opensolaris.opengrok.web.Prefix,
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovichorg.opensolaris.opengrok.web.Util"
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich%><%@
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovichinclude file="pageconfig.jspf"
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich%><%@
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovichinclude file="projects.jspf"
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich%><%
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich /* ---------------------- opensearch.jsp start --------------------- */
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich{
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich cfg = PageConfig.get(request);
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich // Optimize for URLs up to 128 characters.
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich StringBuilder url = new StringBuilder(128);
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich String ForwardedHost = request.getHeader("X-Forwarded-Host");
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich String scheme = request.getScheme();
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich int port = request.getServerPort();
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich url.append(scheme).append("://");
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich // Play nice in proxy environment by using hostname from the original
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich // request to construct the URLs.
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich // Will not work well if the scheme or port is different for proxied server
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich // and original server. Unfortunately the X-Forwarded-Host does not seem to
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich // contain the port number so there is no way around it.
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich if (ForwardedHost != null) {
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich url.append(ForwardedHost);
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich } else {
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich url.append(request.getServerName());
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich // Append port if needed.
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich if ((port != 80 && scheme.equals("http")) ||
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich (port != 443 && scheme.equals("https"))) {
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich url.append(':').append(port);
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich }
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich }
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich String imgurl = url + cfg.getCssDir() + "/img/icon.png";
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich /* TODO Bug 11749 ??? */
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich StringBuilder text = new StringBuilder();
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich url.append(request.getContextPath()).append(Prefix.SEARCH_P).append('?');
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich Set<String> projects = cfg.getRequestedProjects();
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich for (String name : projects) {
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich text.append(name).append(',');
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich Util.appendQuery(url, "project", name);
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich }
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich if (text.length() != 0) {
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich text.setLength(text.length()-1);
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich }
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich%><?xml version="1.0" encoding="UTF-8"?>
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich <ShortName>OpenGrok <%= text.toString() %></ShortName>
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich <Description>Search in OpenGrok <%= text.toString() %></Description>
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich <InputEncoding>UTF-8</InputEncoding>
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich <Image height="16" width="16" type="image/png"><%= imgurl %></Image>
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich<%-- <Url type="application/x-suggestions+json" template="suggestionURL"/>--%>
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich <Url template="<%= url.toString() %>&amp;q={searchTerms}" type="text/html"/>
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich</OpenSearchDescription>
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich<%
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich}
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich/* ---------------------- opensearch.jsp end --------------------- */
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich%>
6a0b5391dbcaace88784e407eb97b46fc8ffb619Allen Rabinovich