mast.jsp revision c23e82b612acd5e947c164114377578116f6d298
be6ad6e46ecb8c7126b421819046e7f4857a2babTimo SirainenCDDL HEADER START
be6ad6e46ecb8c7126b421819046e7f4857a2babTimo SirainenThe contents of this file are subject to the terms of the
be6ad6e46ecb8c7126b421819046e7f4857a2babTimo SirainenCommon Development and Distribution License (the "License").
f1ed4fa248aaf6841ba638b9d66b2738d9f7aa18Timo SirainenYou may not use this file except in compliance with the License.
f9b6b5e9c4e18682321959883c888035a56b6be9Timo SirainenSee LICENSE.txt included in this distribution for the specific
be6ad6e46ecb8c7126b421819046e7f4857a2babTimo Sirainenlanguage governing permissions and limitations under the License.
be6ad6e46ecb8c7126b421819046e7f4857a2babTimo SirainenWhen distributing Covered Code, include this CDDL HEADER in each
be6ad6e46ecb8c7126b421819046e7f4857a2babTimo Sirainenfile and include the License file at LICENSE.txt.
be6ad6e46ecb8c7126b421819046e7f4857a2babTimo SirainenIf applicable, add the following below this CDDL HEADER, with the
be6ad6e46ecb8c7126b421819046e7f4857a2babTimo Sirainenfields enclosed by brackets "[]" replaced with your own identifying
f1ed4fa248aaf6841ba638b9d66b2738d9f7aa18Timo Siraineninformation: Portions Copyright [yyyy] [name of copyright owner]
be6ad6e46ecb8c7126b421819046e7f4857a2babTimo SirainenCDDL HEADER END
be6ad6e46ecb8c7126b421819046e7f4857a2babTimo SirainenCopyright 2005 Sun Microsystems, Inc. All rights reserved.
be6ad6e46ecb8c7126b421819046e7f4857a2babTimo SirainenUse is subject to license terms.
f1ed4fa248aaf6841ba638b9d66b2738d9f7aa18Timo Sirainenident "%Z%%M% %I% %E% SMI"
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen--%><%@ page import = "javax.servlet.*,
b367011da1a2ba3e9113dfbc601aaa4b6b04317dTimo Sirainen%><%@ page session="false" %><%@ page errorPage="error.jsp"%><%
3281669db44d09a087a203201248abbc81b3cc1aTimo SirainenString context = request.getContextPath();
f1ed4fa248aaf6841ba638b9d66b2738d9f7aa18Timo SirainenString servlet = request.getServletPath();
f1ed4fa248aaf6841ba638b9d66b2738d9f7aa18Timo SirainenString reqURI = request.getRequestURI();
f1ed4fa248aaf6841ba638b9d66b2738d9f7aa18Timo Sirainenif (path == null) path = "";
f1ed4fa248aaf6841ba638b9d66b2738d9f7aa18Timo SirainenString rawSource = getServletContext().getInitParameter("SRC_ROOT");
f1ed4fa248aaf6841ba638b9d66b2738d9f7aa18Timo SirainenString resourcePath = rawSource + path;
f1ed4fa248aaf6841ba638b9d66b2738d9f7aa18Timo SirainenFile resourceFile = new File(resourcePath);
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainenboolean valid;
f1ed4fa248aaf6841ba638b9d66b2738d9f7aa18Timo Sirainenboolean noHistory = true;
be6ad6e46ecb8c7126b421819046e7f4857a2babTimo SirainenString basename = resourceFile.getName();
f1ed4fa248aaf6841ba638b9d66b2738d9f7aa18Timo Sirainenif("/".equals(path)) {
f1ed4fa248aaf6841ba638b9d66b2738d9f7aa18Timo Sirainen basename = "Cross Reference";
f1ed4fa248aaf6841ba638b9d66b2738d9f7aa18Timo Sirainenboolean isDir = false;
f1ed4fa248aaf6841ba638b9d66b2738d9f7aa18Timo SirainenEftarFileReader ef = null;
f1ed4fa248aaf6841ba638b9d66b2738d9f7aa18Timo SirainenString parent = null;
f1ed4fa248aaf6841ba638b9d66b2738d9f7aa18Timo SirainenString parentBasename = resourceFile.getParentFile().getName();
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen|| IgnoredNames.ignore.contains(parentBasename)
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen valid = false;
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen} else if (!resourceFile.canRead() && resourcePath.startsWith(rawSource)) {
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen String newPath = rawSource + "/on/" + path;
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen File newFile = new File(newPath);
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen if(newFile.isDirectory() && servlet.startsWith("/xref") && !path.endsWith("/")) {
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen response.sendRedirect(context + servlet + "/on" + path + "/");
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen response.sendRedirect(context + servlet + "/on" + path);
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen valid = false;
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen valid = true;
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen path = resourcePath.substring(rawSource.length());
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen path = path.replace('\\','/');
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen if (isDir && !servlet.startsWith("/xref") && !servlet.startsWith("/hist")) { //if it is an existing directory perhaps people wanted directory xref
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen response.sendRedirect(context + "/xref" + path + "/");
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen response.sendRedirect(context + "/xref" + path);
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen } if (isDir && !reqURI.endsWith("/")) {
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen response.sendRedirect(context + servlet + path +"/");
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen String dtag = "";
f1ed4fa248aaf6841ba638b9d66b2738d9f7aa18Timo Sirainen if (request.getDateHeader("If-Modified-Since") >= flast ) {
f1ed4fa248aaf6841ba638b9d66b2738d9f7aa18Timo Sirainen response.setStatus(HttpServletResponse.SC_NOT_MODIFIED);
be6ad6e46ecb8c7126b421819046e7f4857a2babTimo Sirainen valid = false;
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen response.setDateHeader("Last-Modified", flast);
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen int lastSlash = path.lastIndexOf('/');
be6ad6e46ecb8c7126b421819046e7f4857a2babTimo Sirainen parent = (lastSlash != -1) ? path.substring(0, lastSlash) : "";
be6ad6e46ecb8c7126b421819046e7f4857a2babTimo Sirainen int pLastSlash = parent.lastIndexOf('/');
be6ad6e46ecb8c7126b421819046e7f4857a2babTimo Sirainen parentBasename = pLastSlash != -1 ? parent.substring(pLastSlash+1) : parent;
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen noHistory = !(isDir || HistoryGuru.getInstance().hasHistory(rawSource + "/" + parent));
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen ef = new EftarFileReader(getServletContext().getInitParameter("DATA_ROOT") + "/index/dtags.eftar");
be6ad6e46ecb8c7126b421819046e7f4857a2babTimo Sirainen dtag = ef.get(path);
4c05697a4f3958c836e23e1eff5b4b7c49ef6617Timo Sirainen if(ef != null) {
4c05697a4f3958c836e23e1eff5b4b7c49ef6617Timo Sirainen } catch (IOException e) {
f1ed4fa248aaf6841ba638b9d66b2738d9f7aa18Timo Sirainen } catch (Exception e) {
f1ed4fa248aaf6841ba638b9d66b2738d9f7aa18Timo Sirainen%><?xml version="1.0" encoding="iso-8859-1"?>
f1ed4fa248aaf6841ba638b9d66b2738d9f7aa18Timo Sirainen<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
f1ed4fa248aaf6841ba638b9d66b2738d9f7aa18Timo Sirainen<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen <title><%=basename%></title>
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen <link rel="icon" href="<%=context%>/img/icon.png" type="image/png"/>
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen <link rel="stylesheet" type="text/css" href="<%=context%>/style.css"/>
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen <link rel="stylesheet" type="text/css" href="<%=context%>/print.css" media="print" />
f1ed4fa248aaf6841ba638b9d66b2738d9f7aa18Timo Sirainen <link rel="alternate stylesheet" type="text/css" media="all" title="Paper White" href="<%=context%>/print.css"/>
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen<body><div id="page">
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen<form action="<%=context%>/search">
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen <div id="header">
76d4ff1c1b31a1a09f6cbfe613a8d0efe62cbfd2Timo Sirainen <%= getServletContext().getInitParameter("HEADER") %>
640c1f9731a2e0368546bf675110ced42a589a04Timo Sirainen <div id="pagetitle"><b id="filename"><%=basename%><%= isDir ? "/" : "" %></b><br/><%=dtag%></div>
be6ad6e46ecb8c7126b421819046e7f4857a2babTimo Sirainen<div id="Masthead"><tt><a href="<%=context%>/xref/">xref</a>: <%=org.opensolaris.opengrok.web.Util.breadcrumbPath(context + "/xref", path)%><%= isDir ? "/" : "" %></tt></div>
be6ad6e46ecb8c7126b421819046e7f4857a2babTimo Sirainen<div id="bar"><a href="<%=context%>" id="home">Home</a> |
6307d76096764e66bddc63d4a3e5a1aa19cc528fJosef 'Jeff' Sipekif ((!isDir && noHistory) || servlet.startsWith("/hi")) {
be6ad6e46ecb8c7126b421819046e7f4857a2babTimo Sirainen %> <span class="c" id="history">History</span> |<%
f9b6b5e9c4e18682321959883c888035a56b6be9Timo Sirainen %><a id="history" href="<%=context%>/history<%=path%>">History</a> |<%
f9b6b5e9c4e18682321959883c888035a56b6be9Timo Sirainen if (!isDir) {
f9b6b5e9c4e18682321959883c888035a56b6be9Timo Sirainen %> <a id="download" href="<%=context%>/raw<%=path%>">Download</a> | <%
f9b6b5e9c4e18682321959883c888035a56b6be9Timo Sirainen%> <input id="search" name="q" class="q"/>
f9b6b5e9c4e18682321959883c888035a56b6be9Timo Sirainen<input type="submit" value="Search" class="submit"/><%
f9b6b5e9c4e18682321959883c888035a56b6be9Timo Sirainen %><input type="checkbox" name="path" value="<%=path%>"/> only in <b><%=basename%></b><%
f9b6b5e9c4e18682321959883c888035a56b6be9Timo Sirainen %><input type="checkbox" name="path" value="<%=parent%>"/> only in <b><%=parentBasename%></b><%
f9b6b5e9c4e18682321959883c888035a56b6be9Timo Sirainen%></div></form><%
f9b6b5e9c4e18682321959883c888035a56b6be9Timo Sirainen} // date check
f9b6b5e9c4e18682321959883c888035a56b6be9Timo Sirainen } // not a directory redirect