From a3cd382117f48beb9f370bf3853bd1cd5c6ead93 Mon Sep 17 00:00:00 2001 From: Graham Triggs Date: Tue, 13 Nov 2018 13:51:27 +0000 Subject: [PATCH] Multi-lingual support for menus (#91) --- .../freemarker/FreemarkerHttpServlet.java | 3 ++- .../mannlib/vitro/webapp/dao/MenuDao.java | 11 ++++++++++- .../vitro/webapp/dao/jena/MenuDaoJena.java | 16 ++++++++++++---- .../mannlib/vitro/webapp/dao/MenuDaoStub.java | 7 +++++++ 4 files changed, 31 insertions(+), 6 deletions(-) diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreemarkerHttpServlet.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreemarkerHttpServlet.java index 765d5cabd..ab339e3d8 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreemarkerHttpServlet.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreemarkerHttpServlet.java @@ -17,6 +17,7 @@ import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import edu.cornell.mannlib.vitro.webapp.dao.jena.MenuDaoJena; import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -461,7 +462,7 @@ public class FreemarkerHttpServlet extends VitroHttpServlet { protected MainMenu getDisplayModelMenu(VitroRequest vreq){ String url = vreq.getRequestURI().substring(vreq.getContextPath().length()); - return vreq.getWebappDaoFactory().getMenuDao().getMainMenu(url); + return vreq.getWebappDaoFactory().getMenuDao().getMainMenu(vreq, url); } // NIHVIVO-3307: we need this here instead of FreemarkerConfiguration.java so that updates to diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/MenuDao.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/MenuDao.java index 2e930e26b..34d75c310 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/MenuDao.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/MenuDao.java @@ -3,10 +3,19 @@ package edu.cornell.mannlib.vitro.webapp.dao; import edu.cornell.mannlib.vitro.webapp.web.templatemodels.menu.MainMenu; +import javax.servlet.ServletRequest; + public interface MenuDao { /** * @param url - url of request for setting active menu items. This should start with a / and not have the context path. * These values will be checked against urlMapping. ex. /people or /home */ - public MainMenu getMainMenu( String url); + public MainMenu getMainMenu( String url); + + /** + * @param req - the ServletRequest for the current request + * @param url - url of request for setting active menu items. This should start with a / and not have the context path. + * These values will be checked against urlMapping. ex. /people or /home + */ + public MainMenu getMainMenu(ServletRequest req, String url); } diff --git a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/MenuDaoJena.java b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/MenuDaoJena.java index 72cef5077..ef3745dc9 100644 --- a/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/MenuDaoJena.java +++ b/api/src/main/java/edu/cornell/mannlib/vitro/webapp/dao/jena/MenuDaoJena.java @@ -5,9 +5,11 @@ package edu.cornell.mannlib.vitro.webapp.dao.jena; import java.util.HashSet; import java.util.Set; +import edu.cornell.mannlib.vitro.webapp.rdfservice.filter.LanguageFilteringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.jena.ontology.OntModel; import org.apache.jena.query.Query; import org.apache.jena.query.QueryExecution; import org.apache.jena.query.QueryExecutionFactory; @@ -23,6 +25,8 @@ import edu.cornell.mannlib.vitro.webapp.dao.MenuDao; import edu.cornell.mannlib.vitro.webapp.dao.VitroVocabulary; import edu.cornell.mannlib.vitro.webapp.web.templatemodels.menu.MainMenu; +import javax.servlet.ServletRequest; + public class MenuDaoJena extends JenaBaseDao implements MenuDao { private static final Log log = LogFactory.getLog(MenuDaoJena.class); @@ -65,11 +69,15 @@ public class MenuDaoJena extends JenaBaseDao implements MenuDao { @Override public MainMenu getMainMenu( String url ) { - return getMenu( getOntModelSelector().getDisplayModel(), url ); + return getMenu( getOntModelSelector().getDisplayModel(), url ); } - - - protected MainMenu getMenu(Model displayModel, String url){ + + public MainMenu getMainMenu( ServletRequest req, String url ) { + OntModel displayModel = LanguageFilteringUtils.wrapOntModelInALanguageFilter(getOntModelSelector().getDisplayModel(), req ); + return getMenu(displayModel, url) ; + } + + protected MainMenu getMenu(Model displayModel, String url){ //setup query parameters QuerySolutionMap initialBindings = new QuerySolutionMap(); diff --git a/api/src/test/java/stubs/edu/cornell/mannlib/vitro/webapp/dao/MenuDaoStub.java b/api/src/test/java/stubs/edu/cornell/mannlib/vitro/webapp/dao/MenuDaoStub.java index 4f275659e..5d9476770 100644 --- a/api/src/test/java/stubs/edu/cornell/mannlib/vitro/webapp/dao/MenuDaoStub.java +++ b/api/src/test/java/stubs/edu/cornell/mannlib/vitro/webapp/dao/MenuDaoStub.java @@ -5,6 +5,8 @@ package stubs.edu.cornell.mannlib.vitro.webapp.dao; import edu.cornell.mannlib.vitro.webapp.dao.MenuDao; import edu.cornell.mannlib.vitro.webapp.web.templatemodels.menu.MainMenu; +import javax.servlet.ServletRequest; + /** * A minimal implementation of the MenuDao. * @@ -35,6 +37,11 @@ public class MenuDaoStub implements MenuDao { return this.mainMenu; } + @Override + public MainMenu getMainMenu(ServletRequest req, String url) { + return this.mainMenu; + } + // ---------------------------------------------------------------------- // Un-implemented methods // ----------------------------------------------------------------------