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