| 29 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> |
29 <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> |
| 30 <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> |
30 <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> |
| 31 <%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> |
31 <%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> |
| 32 |
32 |
| 33 <%-- Version suffix for forcing browsers to update the CSS / JS files --%> |
33 <%-- Version suffix for forcing browsers to update the CSS / JS files --%> |
| 34 <c:set scope="page" var="versionSuffix" value="20250307"/> |
34 <c:set scope="page" var="versionSuffix" value="20250309"/> |
| 35 |
35 |
| 36 <%-- Make the base href easily available at request scope --%> |
36 <%-- Make the base href easily available at request scope --%> |
| 37 <c:set scope="page" var="baseHref" value="${requestScope[Constants.REQ_ATTR_BASE_HREF]}"/> |
37 <c:set scope="page" var="baseHref" value="${requestScope[Constants.REQ_ATTR_BASE_HREF]}"/> |
| 38 |
38 |
| 39 <%-- Define an alias for the request path --%> |
39 <%-- Define an alias for the request path --%> |
| 83 <c:if test="${not empty extraCss}"> |
83 <c:if test="${not empty extraCss}"> |
| 84 <c:forEach items="${extraCss}" var="cssFile"> |
84 <c:forEach items="${extraCss}" var="cssFile"> |
| 85 <link rel="stylesheet" href="${cssFile}?v=${versionSuffix}" type="text/css"> |
85 <link rel="stylesheet" href="${cssFile}?v=${versionSuffix}" type="text/css"> |
| 86 </c:forEach> |
86 </c:forEach> |
| 87 </c:if> |
87 </c:if> |
| |
88 <script> |
| |
89 const baseHref='${baseHref}'; |
| |
90 </script> |
| |
91 <script src="issue-search.js?v=${versionSuffix}" type="text/javascript"></script> |
| 88 <c:if test="${not empty javascriptFile}"> |
92 <c:if test="${not empty javascriptFile}"> |
| 89 <script src="${javascriptFile}?v=${versionSuffix}" type="text/javascript"></script> |
93 <script src="${javascriptFile}?v=${versionSuffix}" type="text/javascript"></script> |
| 90 </c:if> |
94 </c:if> |
| 91 </head> |
95 </head> |
| 92 <body> |
96 <body> |
| 93 <div id="body-area"> |
97 <div id="body-area"> |
| 94 <div id="mainMenu"> |
98 <div id="mainMenu"> |
| 120 <c:if test="${fn:startsWith(requestPath, '/about/')}">data-active</c:if> > |
124 <c:if test="${fn:startsWith(requestPath, '/about/')}">data-active</c:if> > |
| 121 <a href="about/"> |
125 <a href="about/"> |
| 122 <fmt:message key="menu.about"/> |
126 <fmt:message key="menu.about"/> |
| 123 </a> |
127 </a> |
| 124 </div> |
128 </div> |
| |
129 <div class="searchBox"> |
| |
130 🔍 |
| |
131 <input id="search-box" list="search-box-list" autocomplete="off"> |
| |
132 <datalist id="search-box-list"></datalist> |
| |
133 </div> |
| 125 </div> |
134 </div> |
| 126 <c:if test="${not empty navMenu}"> |
135 <c:if test="${not empty navMenu}"> |
| 127 <div id="sideMenu"> |
136 <div id="sideMenu"> |
| 128 <%@include file="../jspf/navmenu.jspf" %> |
137 <%@include file="../jspf/navmenu.jspf" %> |
| 129 </div> |
138 </div> |