From a05a0017045540e2eb8ee2ed413a010969ce6c3c Mon Sep 17 00:00:00 2001 From: rjy7 Date: Tue, 8 Feb 2011 16:50:19 +0000 Subject: [PATCH] NIHVIVO-2051 Fix currentPage value sent to template: make home page value consistent regardless of the requested url, and change from servletPath to requestURI so we get full path value below the context path. Also add urls.currentPage to replace ${urls.base}/${currentPage} in templates. This value is similarly normalized for the home page. --- .../freemarker/FreemarkerHttpServlet.java | 32 ++++++++++++------- .../templates/freemarker/body/menuN3Edit.ftl | 2 +- .../body/partials/browse-classgroups.ftl | 6 +--- .../freemarker/widgets/widget-browse.ftl | 4 +-- 4 files changed, 24 insertions(+), 20 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreemarkerHttpServlet.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreemarkerHttpServlet.java index c26dc5b49..16c1e487d 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreemarkerHttpServlet.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreemarkerHttpServlet.java @@ -242,16 +242,13 @@ public class FreemarkerHttpServlet extends VitroHttpServlet { // Define the URLs that are accessible to the templates. Note that we do not create menus here, // because we want the templates to be free to define the link text and where the links are displayed. - private final Map getUrls(String themeDir, UrlBuilder urlBuilder) { - // The urls that are accessible to the templates. - // NB We are not using our menu object mechanism to build menus here, because we want the - // view to control which links go where, and the link text and title. + private final Map getUrls(String themeDir, UrlBuilder urlBuilder, VitroRequest vreq) { Map urls = new HashMap(); urls.put("home", urlBuilder.getHomeUrl()); // Templates use this to construct urls. - urls.put("base", urlBuilder.contextPath); + urls.put("base", UrlBuilder.contextPath); urls.put("about", urlBuilder.getPortalUrl(Route.ABOUT)); if (ContactMailServlet.getSmtpHostFromProperties() != null) { @@ -264,9 +261,12 @@ public class FreemarkerHttpServlet extends VitroHttpServlet { urls.put("siteAdmin", urlBuilder.getPortalUrl(Route.SITE_ADMIN)); urls.put("siteIcons", urlBuilder.getPortalUrl(themeDir + "/site_icons")); // deprecated urls.put("themeImages", urlBuilder.getPortalUrl(themeDir + "/images")); - urls.put("images", urlBuilder.getUrl("/images")); - urls.put("theme", urlBuilder.getUrl(themeDir)); - urls.put("index", urlBuilder.getUrl("/browse")); + urls.put("images", UrlBuilder.getUrl("/images")); + urls.put("theme", UrlBuilder.getUrl(themeDir)); + urls.put("index", UrlBuilder.getUrl("/browse")); + + //urls.put("currentPage", vreq.getRequestURI()); + urls.put("currentPage", getCurrentPageValue(vreq)); return urls; } @@ -353,15 +353,13 @@ public class FreemarkerHttpServlet extends VitroHttpServlet { String themeDir = getThemeDir(portal); UrlBuilder urlBuilder = new UrlBuilder(portal); - map.put("urls", getUrls(themeDir, urlBuilder)); + map.put("urls", getUrls(themeDir, urlBuilder, vreq)); map.put("themeDir", themeDir); map.put("currentTheme", themeDir.substring(themeDir.lastIndexOf('/')+1)); map.put("stylesheets", getStylesheetList(themeDir)); map.put("scripts", getScriptList(themeDir)); map.put("headScripts", getScriptList(themeDir)); - - map.put("currentPage", vreq.getServletPath().replaceFirst("/", "")); map.putAll(getDirectives()); map.putAll(getMethods()); @@ -395,13 +393,23 @@ public class FreemarkerHttpServlet extends VitroHttpServlet { } // Let the page template know which page it's processing. - map.put("currentPage", vreq.getServletPath().replaceFirst("/", "")); + String currentPage = getCurrentPageValue(vreq).replaceFirst(vreq.getContextPath() + "/", ""); + map.put("currentPage", currentPage); // Allow template to send domain name to JavaScript (needed for AJAX calls) map.put("requestedPage", vreq.getRequestURL().toString()); return map; } + + private String getCurrentPageValue(HttpServletRequest request) { + String currentPage = request.getRequestURI(); + // Return a uniform value for the home page + if (currentPage.equals("") || currentPage.equals("index.jsp")) { + currentPage = "home"; + } + return currentPage; + } private TabMenu getTabMenu(VitroRequest vreq) { int portalId = vreq.getPortal().getPortalId(); diff --git a/webapp/web/templates/freemarker/body/menuN3Edit.ftl b/webapp/web/templates/freemarker/body/menuN3Edit.ftl index 321f93561..eb6ad2c52 100644 --- a/webapp/web/templates/freemarker/body/menuN3Edit.ftl +++ b/webapp/web/templates/freemarker/body/menuN3Edit.ftl @@ -15,7 +15,7 @@ <#if menuN3??> -
+