diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/JSONServlet.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/JSONServlet.java index ea7ce7f0d..3d2ee48b2 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/JSONServlet.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/JSONServlet.java @@ -34,6 +34,7 @@ import edu.cornell.mannlib.vitro.webapp.beans.Individual; import edu.cornell.mannlib.vitro.webapp.beans.VClass; import edu.cornell.mannlib.vitro.webapp.controller.TabEntitiesController.PageRecord; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.UrlBuilder; +import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary; import edu.cornell.mannlib.vitro.webapp.dao.WebappDaoFactory; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.EditConfiguration; import edu.cornell.mannlib.vitro.webapp.edit.n3editing.SelectListGenerator; @@ -137,7 +138,20 @@ public class JSONServlet extends VitroHttpServlet { jo.put("name",ind.getName()); jo.put("thumbUrl", ind.getThumbUrl()); jo.put("imageUrl", ind.getImageUrl()); - jo.put("profileUrl", UrlBuilder.getIndividualProfileUrl(ind, vreq.getWebappDaoFactory())); + jo.put("profileUrl", UrlBuilder.getIndividualProfileUrl(ind, vreq.getWebappDaoFactory())); + + //this doesn't work as these properties are filtered out. + String fname = ind.getDataValue( "http://xmlns.com/foaf/0.1/firstName"); + if( fname != null ) + jo.put("firstName", fname); + else + jo.put("firstName", ""); + + String lname = ind.getDataValue( "http://xmlns.com/foaf/0.1/lastName"); + if( lname != null ) + jo.put("lastName", lname); + else + jo.put("lastName", ""); jInds.put(jo); } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/PageController.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/PageController.java index de0d02a6c..8c7d43ab4 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/PageController.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/PageController.java @@ -7,20 +7,21 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +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; -import edu.cornell.mannlib.vitro.webapp.beans.VClassGroup; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ExceptionResponseValues; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.ResponseValues; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.responsevalues.TemplateResponseValues; -import edu.cornell.mannlib.vitro.webapp.dao.DisplayVocabulary; -import edu.cornell.mannlib.vitro.webapp.dao.jena.VClassGroupCache; +import edu.cornell.mannlib.vitro.webapp.utils.pageDataGetter.PageDataGetter; +import edu.cornell.mannlib.vitro.webapp.utils.pageDataGetter.ClassGroupPageData; /** * Controller for getting data for pages defined in the display model. @@ -34,13 +35,24 @@ public class PageController extends FreemarkerHttpServlet{ private static final Log log = LogFactory.getLog(PageController.class); protected final static String DEFAULT_TITLE = "Page"; - protected final static String DEFAULT_BODY_TEMPLATE = "menupage.ftl"; + protected final static String DEFAULT_BODY_TEMPLATE = "menupage.ftl"; - protected static Map typeToDataGetter; + protected static final String DATA_GETTER_MAP = "pageTypeToDataGetterMap"; + + @Override + public void init() throws ServletException { + super.init(); + getServletContext().setAttribute(DATA_GETTER_MAP, new HashMap()); + + /* register all page data getters with the PageController servlet. + * There should be a better way of doing this. */ + ClassGroupPageData cgpd = new ClassGroupPageData(); + getPageDataGetterMap(getServletContext()).put(cgpd.getType(), cgpd); + } @Override protected ResponseValues processRequest(VitroRequest vreq) { - try { + try { // get URL without hostname or servlet context String url = vreq.getRequestURI().substring(vreq.getContextPath().length()); @@ -108,7 +120,7 @@ public class PageController extends FreemarkerHttpServlet{ if(type == null || type.isEmpty()) return Collections.emptyMap(); - PageDataGetter getter = typeToDataGetter.get(type); + PageDataGetter getter = getPageDataGetterMap(getServletContext()).get(type); if( getter != null ){ try{ @@ -154,72 +166,13 @@ public class PageController extends FreemarkerHttpServlet{ else throw new Exception("no page found for " + vreq.getRequestURI() ); } + + public static Map getPageDataGetterMap(ServletContext sc){ + return (Map)sc.getAttribute(DATA_GETTER_MAP); + } public static void putPageUri(HttpServletRequest req, String pageUri){ req.setAttribute("pageURI", pageUri); - } - - private interface PageDataGetter{ - Map getData(ServletContext contect, VitroRequest vreq, String pageUri, Map page, String type ); - - /** Gets the type that this class applies to */ - String getType(); - } - - /** - * This will pass these variables to the template: - * classGroupUri: uri of the classgroup associated with this page. - * vClassGroup: a data structure that is the classgroup associated with this page. - */ - static private class ClassGroupPageData implements PageDataGetter{ - public Map getData(ServletContext context, VitroRequest vreq, String pageUri, Map page, String type ){ - HashMap data = new HashMap(); - String classGroupUri = vreq.getWebappDaoFactory().getPageDao().getClassGroupPage(pageUri); - data.put("classGroupUri", classGroupUri); - - VClassGroupCache vcgc = VClassGroupCache.getVClassGroupCache(context); - List vcgList = vcgc.getGroups(vreq.getPortalId()); - VClassGroup group = null; - for( VClassGroup vcg : vcgList){ - if( vcg.getURI() != null && vcg.getURI().equals(classGroupUri)){ - group = vcg; - break; - } - } - if( classGroupUri != null && !classGroupUri.isEmpty() && group == null ){ - /*This could be for two reasons: one is that the classgroup doesn't exist - * The other is that there are no individuals in any of the classgroup's classes */ - group = vreq.getWebappDaoFactory().getVClassGroupDao().getGroupByURI(classGroupUri); - if( group != null ){ - List vcgFullList = vreq.getWebappDaoFactory().getVClassGroupDao() - .getPublicGroupsWithVClasses(false, true, false); - for( VClassGroup vcg : vcgFullList ){ - if( classGroupUri.equals(vcg.getURI()) ){ - group = vcg; - break; - } - } - if( group == null ){ - log.error("Cannot get classgroup '" + classGroupUri + "' for page '" + pageUri + "'"); - } - } - - } - - data.put("vClassGroup", group); //may put null - return data; - } - - public String getType(){ - return DisplayVocabulary.CLASSGROUP_PAGE_TYPE; - } - } - - /* register all page data getters with the PageController servlet */ - static{ - typeToDataGetter = new HashMap(); - ClassGroupPageData cgpd = new ClassGroupPageData(); - typeToDataGetter.put(cgpd.getType(), cgpd); - } + } } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/filters/PageRoutingFilter.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/filters/PageRoutingFilter.java index ac7d76590..537e45b38 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/filters/PageRoutingFilter.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/filters/PageRoutingFilter.java @@ -84,7 +84,7 @@ public class PageRoutingFilter implements Filter{ RequestDispatcher rd = filterConfig.getServletContext().getNamedDispatcher( controllerName ); rd.forward(req, response); }else if( "/".equals( path ) || path.isEmpty() ){ - log.debug("url '" +path + "' is being forward to home controller even though there is no mapping to home" ); + log.debug("url '" +path + "' is being forward to home controller" ); RequestDispatcher rd = filterConfig.getServletContext().getNamedDispatcher( HOME_CONTROLLER_NAME ); rd.forward(req, response); }else{ diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/pageDataGetter/PageDataGetter.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/pageDataGetter/PageDataGetter.java new file mode 100644 index 000000000..ed1992ad9 --- /dev/null +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/utils/pageDataGetter/PageDataGetter.java @@ -0,0 +1,16 @@ +/* $This file is distributed under the terms of the license in /doc/license.txt$ */ + +package edu.cornell.mannlib.vitro.webapp.utils.pageDataGetter; + +import java.util.Map; + +import javax.servlet.ServletContext; + +import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; + +public interface PageDataGetter{ + Map getData(ServletContext contect, VitroRequest vreq, String pageUri, Map page, String type ); + + /** Gets the type that this class applies to */ + String getType(); +} diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/widgets/BrowseWidget.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/widgets/BrowseWidget.java index 509148a31..911cad173 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/widgets/BrowseWidget.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/widgets/BrowseWidget.java @@ -11,6 +11,9 @@ import java.util.Map; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + import edu.cornell.mannlib.vitro.webapp.beans.Individual; import edu.cornell.mannlib.vitro.webapp.beans.VClass; import edu.cornell.mannlib.vitro.webapp.beans.VClassGroup; @@ -29,7 +32,8 @@ import freemarker.template.TemplateModelException; * */ public class BrowseWidget extends Widget { - + final static Log log = LogFactory.getLog(BrowseWidget.class); + @Override protected WidgetTemplateValues process(Environment env, Map params, HttpServletRequest request, ServletContext context) throws Exception @@ -60,7 +64,7 @@ public class BrowseWidget extends Widget { Map body = getAllClassGroupData(request, params); try { body.put("urls",env.getDataModel().get("urls")); - body.put("urlMapping",env.getDataModel().get("urlMapping")); + body.put("currentPage", env.getDataModel().get("currentPage")); } catch (TemplateModelException e) { // TODO Auto-generated catch block e.printStackTrace(); diff --git a/webapp/web/templates/freemarker/widgets/widget-browse.ftl b/webapp/web/templates/freemarker/widgets/widget-browse.ftl index 605ec022b..44ec26d3c 100644 --- a/webapp/web/templates/freemarker/widgets/widget-browse.ftl +++ b/webapp/web/templates/freemarker/widgets/widget-browse.ftl @@ -16,7 +16,7 @@ @@ -33,14 +33,14 @@ <#---->