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