Fri, 23 Oct 2020 12:38:20 +0200
removes (now) unnecessary possibility to customize the main menu
--- a/src/main/java/de/uapcore/lightpit/AbstractLightPITServlet.java Fri Oct 23 12:26:08 2020 +0200 +++ b/src/main/java/de/uapcore/lightpit/AbstractLightPITServlet.java Fri Oct 23 12:38:20 2020 +0200 @@ -376,24 +376,6 @@ } } - private void forwardToFullView(HttpServletRequest req, HttpServletResponse resp) - throws IOException, ServletException { - - final String lightpitBundle = "localization.lightpit"; - final var mainMenu = List.of( - new MenuEntry(new ResourceKey(lightpitBundle, "menu.projects"), "projects/"), - new MenuEntry(new ResourceKey(lightpitBundle, "menu.users"), "teams/"), - new MenuEntry(new ResourceKey(lightpitBundle, "menu.languages"), "language/") - ); - for (var entry : mainMenu) { - if (Functions.fullPath(req).startsWith("/" + entry.getPathName())) { - entry.setActive(true); - } - } - req.setAttribute(Constants.REQ_ATTR_MENU, mainMenu); - req.getRequestDispatcher(SITE_JSP).forward(req, resp); - } - private String sanitizeRequestPath(HttpServletRequest req) { return Optional.ofNullable(req.getPathInfo()).orElse("/"); } @@ -412,7 +394,7 @@ case NONE: return; case HTML: - forwardToFullView(req, resp); + req.getRequestDispatcher(SITE_JSP).forward(req, resp); return; // TODO: implement remaining response types default:
--- a/src/main/java/de/uapcore/lightpit/Constants.java Fri Oct 23 12:26:08 2020 +0200 +++ b/src/main/java/de/uapcore/lightpit/Constants.java Fri Oct 23 12:38:20 2020 +0200 @@ -67,11 +67,6 @@ public static final String REQ_ATTR_RESOURCE_BUNDLE = fqn(AbstractLightPITServlet.class, "bundleName"); /** - * Key for the request attribute containing the menu list. - */ - public static final String REQ_ATTR_MENU = fqn(AbstractLightPITServlet.class, "mainMenu"); - - /** * Key for the request attribute containing the optional navigation menu jsp. */ public static final String REQ_ATTR_NAVIGATION = fqn(AbstractLightPITServlet.class, "navMenu");
--- a/src/main/java/de/uapcore/lightpit/MenuEntry.java Fri Oct 23 12:26:08 2020 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,78 +0,0 @@ -/* - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. - * - * Copyright 2018 Mike Becker. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. - * - */ -package de.uapcore.lightpit; - -public class MenuEntry { - - /** - * Resource key for the menu label. - */ - private final ResourceKey resourceKey; - - /** - * Custom menu text. - */ - private final String text; - - /** - * Path name of the module, linked by this menu entry. - */ - private final String pathName; - - /** - * True if this menu entry is active. - */ - private boolean active = false; - - public MenuEntry(ResourceKey resourceKey, String pathName) { - this.text = null; - this.resourceKey = resourceKey; - this.pathName = pathName; - } - - public ResourceKey getResourceKey() { - return resourceKey; - } - - public String getText() { - return text; - } - - public String getPathName() { - return pathName; - } - - public boolean isActive() { - return this.active; - } - - public void setActive(boolean active) { - this.active = active; - } -}
--- a/src/main/webapp/WEB-INF/jsp/site.jsp Fri Oct 23 12:26:08 2020 +0200 +++ b/src/main/webapp/WEB-INF/jsp/site.jsp Fri Oct 23 12:38:20 2020 +0200 @@ -36,9 +36,6 @@ <%-- Define an alias for the request path --%> <c:set scope="page" var="requestPath" value="${requestScope[Constants.REQ_ATTR_PATH]}"/> -<%-- Define an alias for the main menu --%> -<c:set scope="page" var="mainMenu" value="${requestScope[Constants.REQ_ATTR_MENU]}"/> - <%-- Define an alias for the navigation menu --%> <c:set scope="page" var="navMenu" value="${requestScope[Constants.REQ_ATTR_NAVIGATION]}"/> @@ -79,9 +76,21 @@ </head> <body> <div id="mainMenu"> - <c:forEach var="menu" items="${mainMenu}"> - <%@include file="../jspf/menu-entry.jspf" %> - </c:forEach> + <div class="menuEntry" <c:if test="${fn:startsWith(requestPath, '/projects/')}">data-active</c:if> > + <a href="projects/"> + <fmt:message bundle="${lightpit_bundle}" key="menu.projects"/> + </a> + </div> + <div class="menuEntry" <c:if test="${fn:startsWith(requestPath, '/teams/')}">data-active</c:if> > + <a href="teams/"> + <fmt:message bundle="${lightpit_bundle}" key="menu.users"/> + </a> + </div> + <div class="menuEntry" <c:if test="${fn:startsWith(requestPath, '/language/')}">data-active</c:if> > + <a href="language/"> + <fmt:message bundle="${lightpit_bundle}" key="menu.languages"/> + </a> + </div> </div> <div> <c:if test="${not empty navMenu}">
--- a/src/main/webapp/WEB-INF/jspf/menu-entry.jspf Fri Oct 23 12:26:08 2020 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,13 +0,0 @@ -<div class="menuEntry" - <c:if test="${menu.active}">data-active</c:if> > - <a href="${menu.pathName}"> - <c:if test="${empty menu.resourceKey}"> - <c:out value="${menu.text}"/> - </c:if> - <c:if test="${not empty menu.resourceKey}"> - <fmt:bundle basename="${menu.resourceKey.bundle}"> - <fmt:message key="${menu.resourceKey.key}"/> - </fmt:bundle> - </c:if> - </a> -</div> \ No newline at end of file