src/main/webapp/WEB-INF/jsp/issue-view.jsp

changeset 146
b0e83cab0bde
parent 142
c0549bcdf2ab
child 150
822b7e3d064d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/main/webapp/WEB-INF/jsp/issue-view.jsp	Fri Oct 23 13:29:33 2020 +0200
@@ -0,0 +1,186 @@
+<%--
+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.
+--%>
+<%@page pageEncoding="UTF-8" %>
+<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
+<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
+
+<jsp:useBean id="viewmodel" type="de.uapcore.lightpit.viewmodel.IssueDetailView" scope="request"/>
+<c:set var="issue" scope="page" value="${viewmodel.issue}" />
+
+<table class="formtable fullwidth">
+    <colgroup>
+        <col>
+        <col style="width: 100%">
+    </colgroup>
+    <tbody>
+    <c:if test="${viewmodel.issue.id ge 0}">
+    <tr>
+        <th><fmt:message key="issue.id"/></th>
+        <td>${issue.id}</td>
+    </tr>
+    </c:if>
+    <tr>
+        <th><fmt:message key="issue.project"/></th>
+        <td>
+            <c:out value="${issue.project.name}" />
+        </td>
+    </tr>
+    <tr>
+        <th><fmt:message key="issue.created"/></th>
+        <td><fmt:formatDate value="${issue.created}" /></td>
+    </tr>
+    <tr>
+        <th><fmt:message key="issue.updated"/></th>
+        <td><fmt:formatDate value="${issue.updated}" /></td>
+    </tr>
+    <tr>
+        <th><fmt:message key="issue.component"/></th>
+        <td>
+            <c:if test="${not empty issue.component}">
+                <c:out value="${issue.component.name}"/>
+            </c:if>
+            <c:if test="${empty issue.component}">
+                <fmt:message key="placeholder.null-component"/>
+            </c:if>
+        </td>
+    </tr>
+    <tr>
+        <th><fmt:message key="issue.category"/></th>
+        <td>
+            <div class="issue-tag ${issue.category}" style="width: auto">
+                <fmt:message key="issue.category.${issue.category}" />
+            </div>
+        </td>
+    </tr>
+    <tr>
+        <th><fmt:message key="issue.status"/></th>
+        <td>
+            <div class="issue-tag phase-${issue.status.phase}" style="width: auto">
+                <fmt:message key="issue.status.${issue.status}" />
+            </div>
+        </td>
+    </tr>
+    <tr>
+        <th><fmt:message key="issue.subject"/></th>
+        <td><c:out value="${issue.subject}"/></td>
+    </tr>
+    <tr>
+        <th class="vtop"><fmt:message key="issue.description"/></th>
+        <td>
+            <textarea readonly rows="10"><c:out value="${issue.description}"/></textarea>
+        </td>
+    </tr>
+    <tr>
+        <th><fmt:message key="issue.assignee"/></th>
+        <td>
+            <c:if test="${not empty issue.assignee}">
+                <c:out value="${issue.assignee.displayname}"/>
+            </c:if>
+            <c:if test="${empty issue.assignee}">
+                <fmt:message key="placeholder.null-assignee" />
+            </c:if>
+        </td>
+    </tr>
+    <tr>
+        <th class="vtop"><fmt:message key="issue.affected-versions"/></th>
+        <td>
+            <c:forEach var="version" items="${issue.affectedVersions}">
+                <c:out value="${version.name}"/>
+            </c:forEach>
+        </td>
+    </tr>
+    <tr>
+        <th class="vtop"><fmt:message key="issue.resolved-versions"/></th>
+        <td>
+            <c:forEach var="version" items="${issue.resolvedVersions}">
+                <c:out value="${version.name}"/>
+            </c:forEach>
+        </td>
+    </tr>
+    <tr>
+        <th><fmt:message key="issue.eta"/></th>
+        <td><fmt:formatDate value="${issue.eta}" /></td>
+    </tr>
+    </tbody>
+    <tfoot>
+    <tr>
+        <td colspan="2">
+            <%-- TODO: fix #14 --%>
+            <a href="./projects/${issue.project.node}/all-components/all-versions/issues/" class="button">
+                <fmt:message bundle="${lightpit_bundle}" key="button.cancel"/>
+            </a>
+            <a href="./projects/${issue.project.node}/issues/${issue.id}/edit" class="button submit">
+                <fmt:message key="button.issue.edit"/>
+            </a>
+        </td>
+    </tr>
+    </tfoot>
+</table>
+
+<hr class="comments-separator"/>
+<h2><fmt:message key="issue.comments"/></h2>
+<c:if test="${viewmodel.issue.id ge 0}">
+<form id="comment-form" action="./projects/commit-issue-comment" method="post">
+    <table class="formtable fullwidth">
+        <tbody>
+            <tr>
+                <td><textarea rows="5" name="comment" required></textarea></td>
+            </tr>
+        </tbody>
+        <tfoot>
+            <tr>
+                <td>
+                    <input type="hidden" name="issueid" value="${issue.id}"/>
+                    <button type="submit"><fmt:message key="button.comment"/></button>
+                </td>
+            </tr>
+        </tfoot>
+    </table>
+</form>
+    <c:forEach var="comment" items="${viewmodel.comments}">
+        <div class="comment">
+            <div class="caption">
+                <c:if test="${not empty comment.author}">
+                    <c:out value="${comment.author.displayname}"/>
+                </c:if>
+                <c:if test="${empty comment.author}">
+                    <fmt:message key="issue.comments.anonauthor"/>
+                </c:if>
+            </div>
+            <div class="smalltext">
+                <fmt:formatDate type="BOTH" value="${comment.created}" />
+                <c:if test="${comment.updateCount gt 0}">
+                    <!-- TODO: update count -->
+                </c:if>
+            </div>
+            <div class="medskip">
+                <c:out value="${comment.comment}"/>
+            </div>
+        </div>
+    </c:forEach>
+</c:if>
+

mercurial