From 019d525d74b195fb6ddabb6f9fd52da38d9fe26f Mon Sep 17 00:00:00 2001 From: Monika Mevenkamp Date: Wed, 11 May 2016 09:50:20 -0400 Subject: [PATCH 1/4] annotate main HTML with classes derived from handles of displayed DspaceObject and its parents --- .../app/webui/servlet/DSpaceServlet.java | 18 +++++++++++++++++ .../app/webui/servlet/HandleServlet.java | 2 ++ .../src/main/webapp/layout/header-default.jsp | 20 +++++++++++++++++-- 3 files changed, 38 insertions(+), 2 deletions(-) diff --git a/dspace-jspui/src/main/java/org/dspace/app/webui/servlet/DSpaceServlet.java b/dspace-jspui/src/main/java/org/dspace/app/webui/servlet/DSpaceServlet.java index a0063d5b8e80..bbdd0954f62c 100644 --- a/dspace-jspui/src/main/java/org/dspace/app/webui/servlet/DSpaceServlet.java +++ b/dspace-jspui/src/main/java/org/dspace/app/webui/servlet/DSpaceServlet.java @@ -9,6 +9,8 @@ import java.io.IOException; import java.sql.SQLException; +import java.util.ArrayList; +import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; @@ -20,6 +22,8 @@ import org.dspace.app.webui.util.JSPManager; import org.dspace.app.webui.util.UIUtil; import org.dspace.authorize.AuthorizeException; +import org.dspace.content.DSpaceObject; +import org.dspace.core.Constants; import org.dspace.core.Context; import org.dspace.core.LogManager; @@ -212,4 +216,18 @@ protected void doDSPost(Context context, HttpServletRequest request, // indicate that POST is not supported by this servlet. super.doGet(request, response); } + + protected void setDSpaceObjectAndHandle(Context context, HttpServletRequest request, DSpaceObject dso) throws SQLException { + if (dso != null && request.getAttribute("dspaceObject") == null) { + request.setAttribute("dspaceObject", dso); + List handles = new ArrayList(); + while (dso != null) { + if (dso.getType() != Constants.ITEM){ + handles.add(dso.getHandle()); + } + dso = dso.getParentObject(); + } + request.setAttribute("dspaceObject.parents.handles", handles); + } + } } diff --git a/dspace-jspui/src/main/java/org/dspace/app/webui/servlet/HandleServlet.java b/dspace-jspui/src/main/java/org/dspace/app/webui/servlet/HandleServlet.java index 5f504a0670fd..f7c42b770f62 100644 --- a/dspace-jspui/src/main/java/org/dspace/app/webui/servlet/HandleServlet.java +++ b/dspace-jspui/src/main/java/org/dspace/app/webui/servlet/HandleServlet.java @@ -136,6 +136,8 @@ protected void doDSGet(Context context, HttpServletRequest request, return; } + setDSpaceObjectAndHandle(context, request, dso); + if("/statistics".equals(extraPathInfo)) { // Check configuration properties, auth, etc. diff --git a/dspace-jspui/src/main/webapp/layout/header-default.jsp b/dspace-jspui/src/main/webapp/layout/header-default.jsp index 523c75c54266..0a2c9c67ad29 100644 --- a/dspace-jspui/src/main/webapp/layout/header-default.jsp +++ b/dspace-jspui/src/main/webapp/layout/header-default.jsp @@ -40,6 +40,21 @@ String dsVersion = Util.getSourceVersion(); String generator = dsVersion == null ? "DSpace" : "DSpace "+dsVersion; String analyticsKey = ConfigurationManager.getProperty("jspui.google.analytics.key"); + + // use handles of parents as classes on main div + // Grab parents from the attributes - these should have been picked up + // by the HandleServlet + String main_classes = ""; + { + + if (null != request.getAttribute("dspaceObject.parents.handles")) { + List handles = (List) request.getAttribute("dspaceObject.parents.handles"); + + for (String hdl : handles) { + main_classes = main_classes + " hdl-" + hdl.replace('/', '-'); + } + } + } %> @@ -144,8 +159,9 @@ %> -
-