diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/UrlBuilder.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/UrlBuilder.java index de4057d6e..bb9d7428b 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/UrlBuilder.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/UrlBuilder.java @@ -37,7 +37,7 @@ public class UrlBuilder { LOGIN("/login"), LOGOUT("/logout"), OBJECT_PROPERTY_EDIT("/propertyEdit"), - CUSTOMSEARCH("/customsearch"), + EXTENDED_SEARCH("/extendedsearch"), SEARCH("/search"), SITE_ADMIN("/siteAdmin"), TERMS_OF_USE("/termsOfUse"), diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/freemarker/config/FreemarkerConfigurationImpl.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/freemarker/config/FreemarkerConfigurationImpl.java index 85d6282cf..d4899c19a 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/freemarker/config/FreemarkerConfigurationImpl.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/freemarker/config/FreemarkerConfigurationImpl.java @@ -304,7 +304,7 @@ public class FreemarkerConfigurationImpl extends Configuration { urls.put("home", UrlBuilder.getHomeUrl()); urls.put("about", UrlBuilder.getUrl(Route.ABOUT)); urls.put("search", UrlBuilder.getUrl(Route.SEARCH)); - urls.put("customsearch", UrlBuilder.getUrl(Route.CUSTOMSEARCH)); + urls.put("extendedsearch", UrlBuilder.getUrl(Route.EXTENDED_SEARCH)); urls.put("termsOfUse", UrlBuilder.getUrl(Route.TERMS_OF_USE)); urls.put("login", UrlBuilder.getLoginUrl()); urls.put("logout", UrlBuilder.getLogoutUrl()); diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/search/controller/CustomSearchController.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/search/controller/ExtendedSearchController.java similarity index 96% rename from api/src/main/java/edu/cornell/mannlib/vitro/webapp/search/controller/CustomSearchController.java rename to api/src/main/java/edu/cornell/mannlib/vitro/webapp/search/controller/ExtendedSearchController.java index f58418f86..9bc308db0 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/search/controller/CustomSearchController.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/search/controller/ExtendedSearchController.java @@ -58,11 +58,11 @@ import edu.ucsf.vitro.opensocial.OpenSocialManager; * Paged search controller that uses the search engine */ -@WebServlet(name = "CustomSearchController", urlPatterns = {"/customsearch","/customsearch.jsp","/customfedsearch","/customsearchcontroller"} ) -public class CustomSearchController extends FreemarkerHttpServlet { +@WebServlet(name = "ExtendedSearchController", urlPatterns = {"/extendedsearch","/extendedsearch.jsp","/extendedfedsearch","/extendedsearchcontroller"} ) +public class ExtendedSearchController extends FreemarkerHttpServlet { private static final long serialVersionUID = 1L; - private static final Log log = LogFactory.getLog(CustomSearchController.class); + private static final Log log = LogFactory.getLog(ExtendedSearchController.class); protected static final int DEFAULT_HITS_PER_PAGE = 25; protected static final int DEFAULT_MAX_HIT_COUNT = 1000; @@ -74,6 +74,7 @@ public class CustomSearchController extends FreemarkerHttpServlet { private static final String PARAM_CLASSGROUP = "classgroup"; private static final String PARAM_RDFTYPE = "type"; private static final String PARAM_QUERY_TEXT = "querytext"; + private static final String EXTENDEDSEARCH = "/extendedsearch"; protected static final Map> templateTable; @@ -552,9 +553,9 @@ public class CustomSearchController extends FreemarkerHttpServlet { } public static class VClassGroupSearchLink extends LinkTemplateModel { - long count = 0; + long count = 0; VClassGroupSearchLink(String querytext, VClassGroup classgroup, long count) { - super(classgroup.getPublicName(), "/customsearch", PARAM_QUERY_TEXT, querytext, PARAM_CLASSGROUP, classgroup.getURI()); + super(classgroup.getPublicName(), EXTENDEDSEARCH, PARAM_QUERY_TEXT, querytext, PARAM_CLASSGROUP, classgroup.getURI()); this.count = count; } @@ -564,7 +565,7 @@ public class CustomSearchController extends FreemarkerHttpServlet { public static class VClassSearchLink extends LinkTemplateModel { long count = 0; VClassSearchLink(String querytext, VClass type, long count) { - super(type.getName(), "/customsearch", PARAM_QUERY_TEXT, querytext, PARAM_RDFTYPE, type.getURI()); + super(type.getName(), EXTENDEDSEARCH, PARAM_QUERY_TEXT, querytext, PARAM_RDFTYPE, type.getURI()); this.count = count; } @@ -738,15 +739,15 @@ public class CustomSearchController extends FreemarkerHttpServlet { HashMap resultsToTemplates = new HashMap(); // set up HTML format - resultsToTemplates.put(Result.PAGED, "search-pagedResults.ftl"); - resultsToTemplates.put(Result.ERROR, "search-error.ftl"); + resultsToTemplates.put(Result.PAGED, "extendedsearch-pagedResults.ftl"); + resultsToTemplates.put(Result.ERROR, "extendedsearch-error.ftl"); // resultsToTemplates.put(Result.BAD_QUERY, "search-badQuery.ftl"); table.put(Format.HTML, Collections.unmodifiableMap(resultsToTemplates)); // set up XML format resultsToTemplates = new HashMap(); - resultsToTemplates.put(Result.PAGED, "search-xmlResults.ftl"); - resultsToTemplates.put(Result.ERROR, "search-xmlError.ftl"); + resultsToTemplates.put(Result.PAGED, "extendedsearch-xmlResults.ftl"); + resultsToTemplates.put(Result.ERROR, "extendedsearch-xmlError.ftl"); // resultsToTemplates.put(Result.BAD_QUERY, "search-xmlBadQuery.ftl"); table.put(Format.XML, Collections.unmodifiableMap(resultsToTemplates)); @@ -754,8 +755,8 @@ public class CustomSearchController extends FreemarkerHttpServlet { // set up CSV format resultsToTemplates = new HashMap(); - resultsToTemplates.put(Result.PAGED, "search-csvResults.ftl"); - resultsToTemplates.put(Result.ERROR, "search-csvError.ftl"); + resultsToTemplates.put(Result.PAGED, "extendedsearch-csvResults.ftl"); + resultsToTemplates.put(Result.ERROR, "extendedsearch-csvError.ftl"); // resultsToTemplates.put(Result.BAD_QUERY, "search-xmlBadQuery.ftl"); table.put(Format.CSV, Collections.unmodifiableMap(resultsToTemplates)); diff --git a/webapp/src/main/webapp/templates/freemarker/body/search/extendedsearch-error.ftl b/webapp/src/main/webapp/templates/freemarker/body/search/extendedsearch-error.ftl new file mode 100644 index 000000000..3f08f55db --- /dev/null +++ b/webapp/src/main/webapp/templates/freemarker/body/search/extendedsearch-error.ftl @@ -0,0 +1,16 @@ +<#-- $This file is distributed under the terms of the license in LICENSE$ --> + +<#-- Template for displaying search error message --> + +<#if title??> +
+

${title?html}

+
+ +
+

+ ${message?html} +

+
+<#include "searchSelector.ftl"> +<#include "search-help.ftl" > diff --git a/webapp/src/main/webapp/templates/freemarker/body/search/extendedsearch-pagedResults.ftl b/webapp/src/main/webapp/templates/freemarker/body/search/extendedsearch-pagedResults.ftl new file mode 100644 index 000000000..83c45e9ff --- /dev/null +++ b/webapp/src/main/webapp/templates/freemarker/body/search/extendedsearch-pagedResults.ftl @@ -0,0 +1,252 @@ +<#-- $This file is distributed under the terms of the license in LICENSE$ --> + +<#-- Template for displaying paged search results --> + +

+ +<#include "searchSelector.ftl"> + +<#escape x as x?html> +
${i18n().search_results_for} '${querytext}'
+
<#if classGroupName?has_content>${i18n().limited_to_type} '${classGroupName}'
+
<#if typeName?has_content>${i18n().limited_to_type} '${typeName}'
+ + + + ${i18n().download_results} +<#-- --> +

+ +${i18n().not_expected_results} +
+ + <#-- Refinement links --> + <#if classGroupLinks?has_content && classGroupLinks?size gt 1> +
+

${i18n().display_only}

+
    + <#list classGroupLinks as link> +
  • ${link.text}(${link.count})
  • + +
+
+ + + <#if classLinks?has_content && classLinks?size gt 1 > +
+ <#if classGroupName?has_content> +

${i18n().limit} ${classGroupName} ${i18n().to}

+ <#else> +

${i18n().limit_to}

+ +
    + <#list classLinks as link> +
  • ${link.text}(${link.count})
  • + +
+
+ + + +
+ + <#if user.loggedIn> + + +
+ + + + <#-- Search results --> +
    + <#list individuals as individual> +
  • + <@shortView uri=individual.uri viewContext="search" /> +
  • + +
+ + + <#-- Paging controls --> + <#if (pagingLinks?size > 0)> +
+ ${i18n().pages}: + <#if prevPage??> + <#list pagingLinks as link> + <#if link.url??> + ${link.text} + <#else> + ${link.text} <#-- no link if current page --> + + + <#if nextPage??> +
+ +
+ + <#-- VIVO OpenSocial Extension by UCSF --> + <#if openSocial??> + <#if openSocial.visible> +

OpenSocial

+ + + + + + +
+ + + +${stylesheets.add('', + '', + '')} + +${headScripts.add('', + '', + '' + )} + +${scripts.add('')}