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="20250313"/> |
34 <c:set scope="page" var="versionSuffix" value="20250517"/> |
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 --%> |
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> |
88 <script> |
89 const baseHref='${baseHref}'; |
89 const baseHref='${baseHref}'; |
|
90 <c:if test="${showWhatsNew}"> |
|
91 function closeWhatsNew(showMore) { |
|
92 if (showMore) { |
|
93 location.assign(baseHref + 'about'); |
|
94 } else { |
|
95 document.getElementById('whats-new').style.display = 'none'; |
|
96 document.getElementById('page-area').classList.remove('blurred'); |
|
97 } |
|
98 } |
|
99 </c:if> |
90 </script> |
100 </script> |
91 <script src="issue-search.js?v=${versionSuffix}" type="text/javascript"></script> |
101 <script src="issue-search.js?v=${versionSuffix}" type="text/javascript"></script> |
92 <c:if test="${not empty javascriptFile}"> |
102 <c:if test="${not empty javascriptFile}"> |
93 <script src="${javascriptFile}?v=${versionSuffix}" type="text/javascript"></script> |
103 <script src="${javascriptFile}?v=${versionSuffix}" type="text/javascript"></script> |
94 </c:if> |
104 </c:if> |
95 </head> |
105 </head> |
96 <body> |
106 <body> |
97 <div id="page-area"> |
107 <div id="page-area" <c:if test="${showWhatsNew}">class="blurred"</c:if> > |
98 <div id="mainMenu"> |
108 <div id="mainMenu"> |
99 <div class="menuEntry" |
109 <div class="menuEntry" |
100 <c:if test="${fn:startsWith(requestPath, '/projects/')}">data-active</c:if> > |
110 <c:if test="${fn:startsWith(requestPath, '/projects/')}">data-active</c:if> > |
101 <a href="projects/"> |
111 <a href="projects/"> |
102 <fmt:message key="menu.projects"/> |
112 <fmt:message key="menu.projects"/> |