Author: siren Date: Mon May 8 09:25:53 2006 New Revision: 405088 URL: http://svn.apache.org/viewcvs?rev=405088&view=rev Log: removed log flooding, removed unneycessaru code from PreferencesController, integrated displaying information of index-more plugin
Added: lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/controller/MoreController.java Modified: lucene/nutch/trunk/contrib/web2/README.txt lucene/nutch/trunk/contrib/web2/build.xml lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/NavigationHelper.java lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/Search.java lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/controller/NutchController.java lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/controller/PreferencesController.java lucene/nutch/trunk/contrib/web2/src/main/webapp/WEB-INF/jsp/more.jsp lucene/nutch/trunk/contrib/web2/src/main/webapp/WEB-INF/jsp/preferences.jsp lucene/nutch/trunk/contrib/web2/src/main/webapp/WEB-INF/jsp/results.jsp lucene/nutch/trunk/contrib/web2/src/main/webapp/WEB-INF/jsp/search.jsp lucene/nutch/trunk/contrib/web2/src/main/webapp/WEB-INF/jsp/template.jsp lucene/nutch/trunk/contrib/web2/src/main/webapp/WEB-INF/tiles-defs.xml Modified: lucene/nutch/trunk/contrib/web2/README.txt URL: http://svn.apache.org/viewcvs/lucene/nutch/trunk/contrib/web2/README.txt?rev=405088&r1=405087&r2=405088&view=diff ============================================================================== --- lucene/nutch/trunk/contrib/web2/README.txt (original) +++ lucene/nutch/trunk/contrib/web2/README.txt Mon May 8 09:25:53 2006 @@ -9,9 +9,9 @@ (and related) pages. Layout is constructed by using following tag libraries: -struts-logic +jstl-c +jstl-fmt struts-tiles -struts-bean These tiles blocks can be extended or overridden by plugins implementing org.apache.nutch.webapp.UIExtensionPoint. A @@ -36,8 +36,10 @@ Todo: --Provide some samples of ui plugins - +-provide some samples of ui plugins +-move "more" functionality to plugin +-remove table structures from html to allow more flexible css layouts +-add mechanism for adding binary items (ie. images) Directory contents Modified: lucene/nutch/trunk/contrib/web2/build.xml URL: http://svn.apache.org/viewcvs/lucene/nutch/trunk/contrib/web2/build.xml?rev=405088&r1=405087&r2=405088&view=diff ============================================================================== --- lucene/nutch/trunk/contrib/web2/build.xml (original) +++ lucene/nutch/trunk/contrib/web2/build.xml Mon May 8 09:25:53 2006 @@ -287,6 +287,7 @@ includes="**/*.html"/> <replace dir="${docs.dir}" token="help.html" value="help.do" includes="**/*.html"/> + <replace dir="${docs.dir}" token="about.html" value="about.do" includes="**/*.html"/> <replace dir="${docs.dir}" token="search.jsp" value="search.do" includes="**/*.html"/> <replace dir="${docs.dir}" token="../" value="" includes="**/*.html"/> Modified: lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/NavigationHelper.java URL: http://svn.apache.org/viewcvs/lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/NavigationHelper.java?rev=405088&r1=405087&r2=405088&view=diff ============================================================================== --- lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/NavigationHelper.java (original) +++ lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/NavigationHelper.java Mon May 8 09:25:53 2006 @@ -62,9 +62,6 @@ * @return */ protected boolean hasNext() { - System.out.println("totalIsExact" + totalIsExact); - System.out.println("end" + end); - System.out.println("totalHits" + totalHits); return end < totalHits && (!getShowAllHits()); } Modified: lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/Search.java URL: http://svn.apache.org/viewcvs/lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/Search.java?rev=405088&r1=405087&r2=405088&view=diff ============================================================================== --- lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/Search.java (original) +++ lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/common/Search.java Mon May 8 09:25:53 2006 @@ -89,18 +89,12 @@ hits = new Hits(0, new Hit[0]); } - LOG.info("form:"); - LOG.info(locator.getSearchForm().toString()); - LOG.info("performing search"); - int realEnd = (int) Math.min(hits.getLength(), getStartOffset() + getMaxHits()); int endOffset=hits.getLength(); show = hits.getHits(getStartOffset(), realEnd - getStartOffset()); - - navigationHelper = new NavigationHelper(startOffset, endOffset, hitsPerPage, hits .getTotal(), hits.totalIsExact()); Added: lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/controller/MoreController.java URL: http://svn.apache.org/viewcvs/lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/controller/MoreController.java?rev=405088&view=auto ============================================================================== --- lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/controller/MoreController.java (added) +++ lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/controller/MoreController.java Mon May 8 09:25:53 2006 @@ -0,0 +1,72 @@ +/* + * Copyright 2006 The Apache Software Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.nutch.webapp.controller; + +import java.io.IOException; +import java.util.Date; + +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.apache.nutch.webapp.common.SearchResultBean; +import org.apache.struts.tiles.ComponentContext; + +/** + * This is the controller used when rendering a hit. Basically what + * happens here is that we get some meta data values from HitDetails + * and stick them into request object so the jsp can display them. + * + */ +public class MoreController extends NutchController { + + public void nutchPerform(ComponentContext tileContext, + HttpServletRequest request, HttpServletResponse response, + ServletContext servletContext) throws ServletException, IOException { + + SearchResultBean hit = (SearchResultBean) request.getAttribute("hit"); + + if (hit != null) { + + // Content-Type + String primaryType = hit.getDetails().getValue("primaryType"); + String subType = hit.getDetails().getValue("subType"); + + String contentType = subType; + if (contentType == null) + contentType = primaryType; + if (contentType != null) { + request.setAttribute("contentType", contentType); + } + // Content-Length + String contentLength = hit.getDetails().getValue("contentLength"); + if (contentLength != null) { + request.setAttribute("contentLength", contentLength); + } + + // Last-Modified + String lastModified = hit.getDetails().getValue("lastModified"); + if (lastModified != null) { + long millis = new Long(lastModified).longValue(); + Date date = new Date(millis); + request.setAttribute("lastModified", date); + } + } else { + LOG.info("hit was null?"); + } + } +} Modified: lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/controller/NutchController.java URL: http://svn.apache.org/viewcvs/lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/controller/NutchController.java?rev=405088&r1=405087&r2=405088&view=diff ============================================================================== --- lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/controller/NutchController.java (original) +++ lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/controller/NutchController.java Mon May 8 09:25:53 2006 @@ -55,8 +55,9 @@ LOG.info("Exception occured while executing nutch controller:"); e.printStackTrace(System.err); } - LOG.info("request processing time: " + (System.currentTimeMillis() - t) +/* LOG.info("Controller processing time: " + (System.currentTimeMillis() - t) + "ms"); + */ } /** Modified: lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/controller/PreferencesController.java URL: http://svn.apache.org/viewcvs/lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/controller/PreferencesController.java?rev=405088&r1=405087&r2=405088&view=diff ============================================================================== --- lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/controller/PreferencesController.java (original) +++ lucene/nutch/trunk/contrib/web2/src/main/java/org/apache/nutch/webapp/controller/PreferencesController.java Mon May 8 09:25:53 2006 @@ -48,12 +48,5 @@ LOG.info("view"); request.setAttribute("preferences", locator.getPreferences()); } - - // add List languages (defined in tles-defs) - request.setAttribute("languages", tileContext.getAttribute("languages")); - - // add List hitsPerPages (defined in tles-defs) - request.setAttribute("hitsPerPage", tileContext.getAttribute("hitsPerPage")); - } } Modified: lucene/nutch/trunk/contrib/web2/src/main/webapp/WEB-INF/jsp/more.jsp URL: http://svn.apache.org/viewcvs/lucene/nutch/trunk/contrib/web2/src/main/webapp/WEB-INF/jsp/more.jsp?rev=405088&r1=405087&r2=405088&view=diff ============================================================================== --- lucene/nutch/trunk/contrib/web2/src/main/webapp/WEB-INF/jsp/more.jsp (original) +++ lucene/nutch/trunk/contrib/web2/src/main/webapp/WEB-INF/jsp/more.jsp Mon May 8 09:25:53 2006 @@ -1,54 +1,14 @@ -<%@ include file="common.jsp" %> -<jsp:useBean id="hit" scope="request" type="org.apache.nutch.webapp.SearchResultBean"/> -<% - // @author John Xing - // show meta info (currently type, size, date of last-modified) - // for each hit. These info are indexed by ./src/plugin/index-more. - - // do not show unless we have something - boolean showMore = false; - - // Content-Type - String primaryType = hit.getDetails().getValue("primaryType"); - String subType = hit.getDetails().getValue("subType"); - - String contentType = subType; - if (contentType == null) - contentType = primaryType; - if (contentType != null) { - contentType = "[<span class=\"contentType\">" + contentType + "</span>]"; - showMore = true; - } else { - contentType = ""; - } - - // Content-Length - String contentLength = hit.getDetails().getValue("contentLength"); - if (contentLength != null) { - contentLength = "(" + contentLength + " bytes)"; - showMore = true; - } else { - contentLength = ""; - } - - // Last-Modified - String lastModified = hit.getDetails().getValue("lastModified"); - if (lastModified != null) { - java.util.Calendar cal = new java.util.GregorianCalendar(); - cal.setTimeInMillis(new Long(lastModified).longValue()); - lastModified = cal.get(java.util.Calendar.YEAR) - + "." + (1+cal.get(java.util.Calendar.MONTH)) // it is 0-based - + "." + cal.get(java.util.Calendar.DAY_OF_MONTH); - showMore = true; - } else { - lastModified = ""; - } -%> - -<% if (showMore) { - if ("text".equalsIgnoreCase(primaryType)) { %> - <br><font size=-1><nobr><%=contentType%> <%=contentLength%> <%=lastModified%></nobr></font> -<% } else { %> - <br><font size=-1><nobr><%=contentType%> <%=contentLength%> <%=lastModified%> - <a href="../text.jsp?<jsp:getProperty name="hit" property="id"/>"><i18n:message key="viewAsText"/></a></nobr></font> -<% } - } %> +<%@ include file="common.jsp"%> +<c:if + test="${contentType!=null || contentLength!=null ||lastModified!=null }"> + <fmt:message key="search.contentType"> + <fmt:param value="${contentType}" /> + </fmt:message> + <fmt:message key="search.contentLength"> + <fmt:param value="${contentLength}" /> + </fmt:message> + <fmt:message key="search.lastModified"> + <fmt:param><fmt:formatDate value="${lastModified}" /></fmt:param> + </fmt:message> + <br /> +</c:if> Modified: lucene/nutch/trunk/contrib/web2/src/main/webapp/WEB-INF/jsp/preferences.jsp URL: http://svn.apache.org/viewcvs/lucene/nutch/trunk/contrib/web2/src/main/webapp/WEB-INF/jsp/preferences.jsp?rev=405088&r1=405087&r2=405088&view=diff ============================================================================== --- lucene/nutch/trunk/contrib/web2/src/main/webapp/WEB-INF/jsp/preferences.jsp (original) +++ lucene/nutch/trunk/contrib/web2/src/main/webapp/WEB-INF/jsp/preferences.jsp Mon May 8 09:25:53 2006 @@ -1,4 +1,5 @@ <%@ include file="common.jsp"%> +<tiles:importAttribute/> <form action="preferencesSave.do"><fmt:message key="preferences.ui.language" /> <select name="L"> <c:forEach var="language" items="${languages}"> Modified: lucene/nutch/trunk/contrib/web2/src/main/webapp/WEB-INF/jsp/results.jsp URL: http://svn.apache.org/viewcvs/lucene/nutch/trunk/contrib/web2/src/main/webapp/WEB-INF/jsp/results.jsp?rev=405088&r1=405087&r2=405088&view=diff ============================================================================== --- lucene/nutch/trunk/contrib/web2/src/main/webapp/WEB-INF/jsp/results.jsp (original) +++ lucene/nutch/trunk/contrib/web2/src/main/webapp/WEB-INF/jsp/results.jsp Mon May 8 09:25:53 2006 @@ -1,7 +1,8 @@ <%@ include file="common.jsp" %> <c:forEach var="hit" items="${nutchSearch.results}"> + <c:set var="hit" scope="request" value="${hit}"/> <b><a href="<c:out value="${hit.url}"/>"><c:out value="${hit.title}"/></a></b><br/> - <tiles:insert name="more" flush="false" beanName="hit"/> + <tiles:insert name="more" /> <c:out value="${hit.summary}" escapeXml="false"/> <br> <span class="url"><c:out value="${hit.encodedUrl}"/></span> Modified: lucene/nutch/trunk/contrib/web2/src/main/webapp/WEB-INF/jsp/search.jsp URL: http://svn.apache.org/viewcvs/lucene/nutch/trunk/contrib/web2/src/main/webapp/WEB-INF/jsp/search.jsp?rev=405088&r1=405087&r2=405088&view=diff ============================================================================== --- lucene/nutch/trunk/contrib/web2/src/main/webapp/WEB-INF/jsp/search.jsp (original) +++ lucene/nutch/trunk/contrib/web2/src/main/webapp/WEB-INF/jsp/search.jsp Mon May 8 09:25:53 2006 @@ -15,7 +15,7 @@ <fmt:param value="${resultInfo[3]}" /> </fmt:message> <br /> - <tiles:insert name="results" /> + <tiles:insert name="results" flush="true"/> <tiles:insert name="cluster" /> <tiles:insert name="navigate" /> </c:when> Modified: lucene/nutch/trunk/contrib/web2/src/main/webapp/WEB-INF/jsp/template.jsp URL: http://svn.apache.org/viewcvs/lucene/nutch/trunk/contrib/web2/src/main/webapp/WEB-INF/jsp/template.jsp?rev=405088&r1=405087&r2=405088&view=diff ============================================================================== --- lucene/nutch/trunk/contrib/web2/src/main/webapp/WEB-INF/jsp/template.jsp (original) +++ lucene/nutch/trunk/contrib/web2/src/main/webapp/WEB-INF/jsp/template.jsp Mon May 8 09:25:53 2006 @@ -2,15 +2,13 @@ <%@ include file="common.jsp"%> <html lang="<fmt:message key="lang"/>"> <head> -<tiles:insert name="header"> +<tiles:insert name="header" flush="true"> <tiles:put name="title" beanName="title" /> - <tiles:put name="basePage" content="/include/header.html" /> - <tiles:put name="attrName" content="headerContent" /> </tiles:insert> </head> <body onLoad="queryfocus();"> <c:out default="" value="${headerContent}" escapeXml="false"/> -<tiles:insert name="pageBody" /> +<tiles:insert name="pageBody" flush="true"/> <tiles:insert name="footer" /> </body> </html> Modified: lucene/nutch/trunk/contrib/web2/src/main/webapp/WEB-INF/tiles-defs.xml URL: http://svn.apache.org/viewcvs/lucene/nutch/trunk/contrib/web2/src/main/webapp/WEB-INF/tiles-defs.xml?rev=405088&r1=405087&r2=405088&view=diff ============================================================================== --- lucene/nutch/trunk/contrib/web2/src/main/webapp/WEB-INF/tiles-defs.xml (original) +++ lucene/nutch/trunk/contrib/web2/src/main/webapp/WEB-INF/tiles-defs.xml Mon May 8 09:25:53 2006 @@ -1,73 +1,111 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 1.1//EN" "dtd/tiles-config_1_1.dtd"> <tiles-definitions> - <definition name=".configurable"> + <definition name="stylable"> <put name="style" value="/include/style.html" /> </definition> - <definition name=".layout" extends=".configurable" + + <definition name="masterlayout" extends="stylable" path="/WEB-INF/jsp/template.jsp"> + </definition> + + <definition name="template" extends="masterlayout"> <put name="title" value="title" /> <put name="header" value=".header" /> - <put name="footer" value="/WEB-INF/jsp/footer.jsp" /> + <put name="footer" value="footer" /> </definition> - <!-- Search page --> - <definition name="searchPage" extends=".layout" + + <!-- Footer --> + <definition name="footer" path="/WEB-INF/jsp/footer.jsp"/> + + <!-- Search --> + <definition name="searchPage" extends="template" controllerClass="org.apache.nutch.webapp.controller.SearchController"> <put name="title" value="search.title" /> - <put name="pageBody" value="/WEB-INF/jsp/search.jsp" /> + <put name="pageBody" value="search" /> </definition> + <definition name="search" path="/WEB-INF/jsp/search.jsp"/> + <!-- Cached --> <definition name="cachedPage" path="/WEB-INF/jsp/cached.jsp" controllerClass="org.apache.nutch.webapp.controller.CachedController"> <put name="title" value="cached.title" /> </definition> + <!-- Explain --> - <definition name="explainPage" extends=".layout" + <definition name="explainPage" extends="template" controllerClass="org.apache.nutch.webapp.controller.ExplainController"> - <put name="pageBody" value="/WEB-INF/jsp/explain.jsp" /> + <put name="pageBody" value="explain" /> <put name="title" value="explain.title" /> </definition> + <definition name="explain" path="/WEB-INF/jsp/explain.jsp"/> + <!-- Anchors --> - <definition name="anchorsPage" extends=".layout" + <definition name="anchorsPage" extends="template" controllerClass="org.apache.nutch.webapp.controller.AnchorsController"> - <put name="pageBody" value="/WEB-INF/jsp/anchors.jsp" /> + <put name="pageBody" value="anchors" /> <put name="title" value="anchors.title" /> </definition> - <!-- Tile that displays the search results --> + <definition name="anchors" path="/WEB-INF/jsp/anchors.jsp"/> + + <!-- Search results --> <definition name="results" path="/WEB-INF/jsp/results.jsp"> </definition> - <definition name="more" path="/WEB-INF/jsp/more.jsp" /> - <!-- Tile that displays the search result navigation --> + + <!-- Index more ui extension, should really be in own plugin --> + <definition name="more" path="/WEB-INF/jsp/more.jsp" controllerClass="org.apache.nutch.webapp.controller.MoreController"> + <putList name="moreNames" id="moreNames"> + <add value="primaryType" type="string"/> + <add value="subType" type="string"/> + <add value="contentLength" type="string"/> + <add value="lastModified" type="string"/> + </putList> + </definition> + <!-- Search result navigation --> <definition name="navigate" path="/WEB-INF/jsp/navigate.jsp" /> - <definition name=".header" extends=".configurable" + + <definition name=".header" extends="stylable" path="/WEB-INF/jsp/header.jsp" - controllerClass="org.apache.nutch.webapp.controller.I18NPageController" /> - <definition name="localizedPage" extends=".layout" + controllerClass="org.apache.nutch.webapp.controller.I18NPageController" > + <put name="basePage" content="/include/header.html" /> + <put name="attrName" content="headerContent" /> + </definition> + + <!-- Localized pages (help, about,...) --> + <definition name="localizedPage" extends="template" controllerClass="org.apache.nutch.webapp.controller.I18NPageController"> - <put name="pageBody" value="/WEB-INF/jsp/i18ncontent.jsp" /> + <put name="pageBody" value="localized" /> </definition> + <definition name="localized" path="/WEB-INF/jsp/i18ncontent.jsp"/> + <!-- Help --> <definition name="helpPage" extends="localizedPage"> <put name="basePage" value="/help.html" /> <put name="title" value="help.title" /> </definition> + <!-- About --> <definition name="aboutPage" extends="localizedPage"> <put name="basePage" value="/about.html" /> </definition> + <!-- No Results --> <definition name="noResults" path="/WEB-INF/jsp/noResults.jsp" /> - <!-- i18n component --> + + <!-- Loclaized component --> <definition name="i18nComponent" path="/WEB-INF/jsp/i18ncontent.jsp" controllerClass="org.apache.nutch.webapp.controller.I18NPageController"> </definition> <!-- Preferences --> - <definition name="preferencesPage" extends=".layout" + <definition name="preferencesPage" extends="template" controllerClass="org.apache.nutch.webapp.controller.PreferencesController"> <put name="title" value="preferences.title" /> <put name="action" value="edit" /> - <put name="pageBody" value="/WEB-INF/jsp/preferences.jsp" /> + <put name="pageBody" value="preferences" /> + </definition> + + <definition name="preferences" page="/WEB-INF/jsp/preferences.jsp"> <putList name="languages"> <add value="ca"/> <add value="de"/> @@ -91,7 +129,7 @@ <add value="20"/> <add value="50"/> </putList> - </definition> + </definition> <definition name="preferencesSavePage" extends="preferencesPage"> <put name="action" value="save" />