Add previous and next links to search result paging. Small style changes.

This commit is contained in:
rjy7 2010-08-27 18:47:56 +00:00
parent 589383f15b
commit 5d53dd4b2b
3 changed files with 33 additions and 16 deletions

View file

@ -16,12 +16,9 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@ -50,9 +47,9 @@ import edu.cornell.mannlib.vitro.webapp.beans.ObjectPropertyStatement;
import edu.cornell.mannlib.vitro.webapp.beans.Portal;
import edu.cornell.mannlib.vitro.webapp.beans.VClass;
import edu.cornell.mannlib.vitro.webapp.beans.VClassGroup;
import edu.cornell.mannlib.vitro.webapp.controller.Controllers;
import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest;
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.FreemarkerHttpServlet;
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder;
import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder.Params;
import edu.cornell.mannlib.vitro.webapp.dao.DataPropertyDao;
import edu.cornell.mannlib.vitro.webapp.dao.IndividualDao;
@ -92,7 +89,7 @@ public class FreemarkerPagedSearchController extends FreemarkerHttpServlet imple
private IndexSearcher searcher = null;
private static final Log log = LogFactory.getLog(FreemarkerPagedSearchController.class.getName());
String NORESULT_MSG = "The search returned no results.";
private int defaultHitsPerPage = 25;
private int defaultHitsPerPage = 2; //25;
private int defaultMaxSearchSize= 1000;
public void init(ServletConfig config) throws ServletException {
@ -219,6 +216,7 @@ public class FreemarkerPagedSearchController extends FreemarkerHttpServlet imple
Params pagingLinkParams = new Params();
pagingLinkParams.put("querytext", qtxt);
pagingLinkParams.put("hitsPerPage", String.valueOf(hitsPerPage));
String classGroupParam = vreq.getParameter("classgroup");
String typeParam = vreq.getParameter("type");
@ -279,7 +277,14 @@ public class FreemarkerPagedSearchController extends FreemarkerHttpServlet imple
body.put("typeName", type.getName());
}
body.put("pagingLinks", getPagingLinks(startIndex, hitsPerPage, hitsLength, maxHitSize, vreq.getServletPath(), pagingLinkParams));
body.put("pagingLinks", getPagingLinks(startIndex, hitsPerPage, hitsLength, maxHitSize, vreq.getServletPath(), pagingLinkParams));
if (startIndex != 0) {
body.put("prevPage", getPreviousPageLink(startIndex, hitsPerPage, vreq.getServletPath(), pagingLinkParams));
}
if (startIndex < (hitsLength - hitsPerPage)) {
body.put("nextPage", getNextPageLink(startIndex, hitsPerPage, vreq.getServletPath(), pagingLinkParams));
}
} catch (Throwable e) {
log.error(e, e);
@ -390,14 +395,10 @@ public class FreemarkerPagedSearchController extends FreemarkerHttpServlet imple
return pagingLinks;
}
int pageNumber;
params.put("hitsPerPage", String.valueOf(hitsPerPage));
for (int i = 0; i < hitsLength; i += hitsPerPage) {
params.put("startIndex", String.valueOf(i));
if ( i < maxHitSize - hitsPerPage) {
pageNumber = i/hitsPerPage + 1;
int pageNumber = i/hitsPerPage + 1;
if (i >= startIndex && i < (startIndex + hitsPerPage)) {
pagingLinks.add(new PagingLink(pageNumber));
} else {
@ -411,6 +412,18 @@ public class FreemarkerPagedSearchController extends FreemarkerHttpServlet imple
return pagingLinks;
}
private String getPreviousPageLink(int startIndex, int hitsPerPage, String baseUrl, Params params) {
params.put("startIndex", String.valueOf(startIndex-hitsPerPage));
//return new PagingLink("Previous", baseUrl, params);
return UrlBuilder.getUrl(baseUrl, params);
}
private String getNextPageLink(int startIndex, int hitsPerPage, String baseUrl, Params params) {
params.put("startIndex", String.valueOf(startIndex+hitsPerPage));
//return new PagingLink("Next", baseUrl, params);
return UrlBuilder.getUrl(baseUrl, params);
}
private class PagingLink extends LinkTemplateModel {
PagingLink(int pageNumber, String baseUrl, Params params) {
@ -426,9 +439,6 @@ public class FreemarkerPagedSearchController extends FreemarkerHttpServlet imple
PagingLink(String text, String baseUrl, Params params) {
super(text, baseUrl, params);
}
}
private List<VClass> getVClasses(VClassDao vclassDao, TopDocs topDocs,

View file

@ -35,6 +35,9 @@ public abstract class Files extends BaseTemplateModel {
}
public void addFromTheme(String path) {
if (!path.startsWith("/")) {
path = "/" + path;
}
path = themeDir + getThemeSubDir() + path;
add(path);
}