From 1f16791d2a0978fedb207d4e61ed0d98b1c22034 Mon Sep 17 00:00:00 2001 From: rjy7 Date: Tue, 8 Feb 2011 22:33:01 +0000 Subject: [PATCH] NHIVIVO-2051 Fix values of currentServlet (was currentPage) and urls.currentPage --- .../freemarker/FreemarkerHttpServlet.java | 35 +++++++++++-------- .../webapp/web/widgets/BrowseWidget.java | 2 +- .../vitro/webapp/web/widgets/LoginWidget.java | 2 +- .../freemarker/page/partials/pageSetup.ftl | 2 +- .../freemarker/widgets/widget-login.ftl | 2 +- 5 files changed, 24 insertions(+), 19 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 16c1e487d..263d82d8d 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 @@ -263,14 +263,22 @@ public class FreemarkerHttpServlet extends VitroHttpServlet { 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("currentPage", vreq.getRequestURI()); - urls.put("currentPage", getCurrentPageValue(vreq)); + urls.put("index", UrlBuilder.getUrl("/browse")); + urls.put("currentPage", getCurrentPageUrl(vreq)); return urls; } + private String getCurrentPageUrl(HttpServletRequest request) { + String path = request.getServletPath().replaceFirst("/", ""); + String pathInfo = request.getPathInfo(); + if (pathInfo != null) { + path += pathInfo; + } + path = normalizeServletName(path); + return UrlBuilder.getUrl(path); + } + protected BeansWrapper getNonDefaultBeansWrapper(int exposureLevel) { BeansWrapper wrapper = new DefaultObjectWrapper(); // Too bad exposure levels are ints instead of enum values; what happens if @@ -392,23 +400,20 @@ public class FreemarkerHttpServlet extends VitroHttpServlet { map.put("flash", flashMessage); } - // Let the page template know which page it's processing. - String currentPage = getCurrentPageValue(vreq).replaceFirst(vreq.getContextPath() + "/", ""); - map.put("currentPage", currentPage); + // Let the page template know which page it's processing. + map.put("currentServlet", normalizeServletName(vreq.getServletPath().replaceFirst("/", ""))); // 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 String normalizeServletName(String name) { + // Return a uniform value for the home page. + // Note that if servletName is "index.jsp", it must be the home page, + // since we don't get here on other tabs. + return (name.length() == 0 || name.equals("index.jsp")) ? "home" : name; } private TabMenu getTabMenu(VitroRequest vreq) { 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 d7d087072..1dfad7e84 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 @@ -98,7 +98,7 @@ public class BrowseWidget extends Widget { values.putAll(FreemarkerHttpServlet.getDirectives()); try { values.put("urls",env.getDataModel().get("urls")); - values.put("currentPage", env.getDataModel().get("currentPage")); + values.put("currentServlet", env.getDataModel().get("currentServlet")); } catch (TemplateModelException e) { // TODO Auto-generated catch block e.printStackTrace(); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/widgets/LoginWidget.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/widgets/LoginWidget.java index 135ef2f15..eb974832c 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/web/widgets/LoginWidget.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/web/widgets/LoginWidget.java @@ -101,7 +101,7 @@ public class LoginWidget extends Widget { } values.put("urls", dataModel.get("urls")); - values.put("currentPage", dataModel.get("currentPage")); + values.put("currentServlet", dataModel.get("currentServlet")); @SuppressWarnings("unchecked") Map dm = (Map) DeepUnwrap.permissiveUnwrap(dataModel); diff --git a/webapp/web/templates/freemarker/page/partials/pageSetup.ftl b/webapp/web/templates/freemarker/page/partials/pageSetup.ftl index 15c3fbf24..fcc2d27a7 100644 --- a/webapp/web/templates/freemarker/page/partials/pageSetup.ftl +++ b/webapp/web/templates/freemarker/page/partials/pageSetup.ftl @@ -7,7 +7,7 @@ the domain of the controllers. --> <#assign bodyClasses> <#-- The compress directives and formatting here resolve whitespace issues in output; please do not alter them. --> <#compress> - <#assign bodyClassList = [currentPage!]> + <#assign bodyClassList = [currentServlet!]> <#if user.loggedIn> <#assign bodyClassList = bodyClassList + ["loggedIn"]/> diff --git a/webapp/web/templates/freemarker/widgets/widget-login.ftl b/webapp/web/templates/freemarker/widgets/widget-login.ftl index 27f97e8a5..95f8c614e 100644 --- a/webapp/web/templates/freemarker/widgets/widget-login.ftl +++ b/webapp/web/templates/freemarker/widgets/widget-login.ftl @@ -16,7 +16,7 @@ <#macro loginForm> <#-- Don't display the JavaScript required to edit message on the home page even if JavaScript is unavailable --> - <#if ( currentPage != 'home' && currentPage != 'index.jsp')> + <#if currentServlet != 'home'>