NHIVIVO-2051 Fix values of currentServlet (was currentPage) and urls.currentPage

This commit is contained in:
rjy7 2011-02-08 22:33:01 +00:00
parent afa25c7f2a
commit 1f16791d2a
5 changed files with 24 additions and 19 deletions

View file

@ -264,13 +264,21 @@ public class FreemarkerHttpServlet extends VitroHttpServlet {
urls.put("images", UrlBuilder.getUrl("/images")); urls.put("images", UrlBuilder.getUrl("/images"));
urls.put("theme", UrlBuilder.getUrl(themeDir)); urls.put("theme", UrlBuilder.getUrl(themeDir));
urls.put("index", UrlBuilder.getUrl("/browse")); urls.put("index", UrlBuilder.getUrl("/browse"));
urls.put("currentPage", getCurrentPageUrl(vreq));
//urls.put("currentPage", vreq.getRequestURI());
urls.put("currentPage", getCurrentPageValue(vreq));
return urls; 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) { protected BeansWrapper getNonDefaultBeansWrapper(int exposureLevel) {
BeansWrapper wrapper = new DefaultObjectWrapper(); BeansWrapper wrapper = new DefaultObjectWrapper();
// Too bad exposure levels are ints instead of enum values; what happens if // Too bad exposure levels are ints instead of enum values; what happens if
@ -393,8 +401,7 @@ public class FreemarkerHttpServlet extends VitroHttpServlet {
} }
// Let the page template know which page it's processing. // Let the page template know which page it's processing.
String currentPage = getCurrentPageValue(vreq).replaceFirst(vreq.getContextPath() + "/", ""); map.put("currentServlet", normalizeServletName(vreq.getServletPath().replaceFirst("/", "")));
map.put("currentPage", currentPage);
// Allow template to send domain name to JavaScript (needed for AJAX calls) // Allow template to send domain name to JavaScript (needed for AJAX calls)
map.put("requestedPage", vreq.getRequestURL().toString()); map.put("requestedPage", vreq.getRequestURL().toString());
@ -402,13 +409,11 @@ public class FreemarkerHttpServlet extends VitroHttpServlet {
return map; return map;
} }
private String getCurrentPageValue(HttpServletRequest request) { private String normalizeServletName(String name) {
String currentPage = request.getRequestURI(); // Return a uniform value for the home page.
// Return a uniform value for the home page // Note that if servletName is "index.jsp", it must be the home page,
if (currentPage.equals("") || currentPage.equals("index.jsp")) { // since we don't get here on other tabs.
currentPage = "home"; return (name.length() == 0 || name.equals("index.jsp")) ? "home" : name;
}
return currentPage;
} }
private TabMenu getTabMenu(VitroRequest vreq) { private TabMenu getTabMenu(VitroRequest vreq) {

View file

@ -98,7 +98,7 @@ public class BrowseWidget extends Widget {
values.putAll(FreemarkerHttpServlet.getDirectives()); values.putAll(FreemarkerHttpServlet.getDirectives());
try { try {
values.put("urls",env.getDataModel().get("urls")); values.put("urls",env.getDataModel().get("urls"));
values.put("currentPage", env.getDataModel().get("currentPage")); values.put("currentServlet", env.getDataModel().get("currentServlet"));
} catch (TemplateModelException e) { } catch (TemplateModelException e) {
// TODO Auto-generated catch block // TODO Auto-generated catch block
e.printStackTrace(); e.printStackTrace();

View file

@ -101,7 +101,7 @@ public class LoginWidget extends Widget {
} }
values.put("urls", dataModel.get("urls")); values.put("urls", dataModel.get("urls"));
values.put("currentPage", dataModel.get("currentPage")); values.put("currentServlet", dataModel.get("currentServlet"));
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
Map<String, Object> dm = (Map<String, Object>) DeepUnwrap.permissiveUnwrap(dataModel); Map<String, Object> dm = (Map<String, Object>) DeepUnwrap.permissiveUnwrap(dataModel);

View file

@ -7,7 +7,7 @@ the domain of the controllers. -->
<#assign bodyClasses> <#assign bodyClasses>
<#-- The compress directives and formatting here resolve whitespace issues in output; please do not alter them. --> <#-- The compress directives and formatting here resolve whitespace issues in output; please do not alter them. -->
<#compress> <#compress>
<#assign bodyClassList = [currentPage!]> <#assign bodyClassList = [currentServlet!]>
<#if user.loggedIn> <#if user.loggedIn>
<#assign bodyClassList = bodyClassList + ["loggedIn"]/> <#assign bodyClassList = bodyClassList + ["loggedIn"]/>

View file

@ -16,7 +16,7 @@
<#macro loginForm> <#macro loginForm>
<#-- Don't display the JavaScript required to edit message on the home page even if JavaScript is unavailable --> <#-- 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'>
<noscript> <noscript>
<section id="error-alert"> <section id="error-alert">
<img src="${urls.images}/iconAlertBig.png" alt="Alert Icon"/> <img src="${urls.images}/iconAlertBig.png" alt="Alert Icon"/>