diff --git a/webui/src/main/java/com/muwire/webui/FileInfoServlet.java b/webui/src/main/java/com/muwire/webui/FileInfoServlet.java index 77f51fc7..df0ea217 100644 --- a/webui/src/main/java/com/muwire/webui/FileInfoServlet.java +++ b/webui/src/main/java/com/muwire/webui/FileInfoServlet.java @@ -165,6 +165,7 @@ public class FileInfoServlet extends HttpServlet { if (certificate.getComment() != null) sb.append("").append(Util.escapeHTMLinXML(certificate.getComment().getName())).append(""); sb.append("").append(DataHelper.formatTime(certificate.getTimestamp())).append(""); + sb.append("").append(certificate.getTimestamp()).append(""); sb.append("").append(Util.escapeHTMLinXML(certificate.getIssuer().getHumanReadableName())).append(""); sb.append(""); } diff --git a/webui/src/main/js/fileDetails.js b/webui/src/main/js/fileDetails.js index ebdd74d2..1857c9fe 100644 --- a/webui/src/main/js/fileDetails.js +++ b/webui/src/main/js/fileDetails.js @@ -30,7 +30,9 @@ class CertificateEntry { constructor(xmlNode) { this.name = xmlNode.getElementsByTagName("Name")[0].childNodes[0].nodeValue this.timestamp = xmlNode.getElementsByTagName("Timestamp")[0].childNodes[0].nodeValue + this.timestampLong = xmlNode.getElementsByTagName("TimestampLong")[0].childNodes[0].nodeValue this.issuer = xmlNode.getElementsByTagName("Issuer")[0].childNodes[0].nodeValue + this.id = this.issuer + "_" + this.timestampLong try { this.comment = xmlNode.getElementsByTagName("Comment")[0].childNodes[0].nodeValue } catch (ignored) { @@ -40,12 +42,29 @@ class CertificateEntry { getMapping() { var mapping = new Map() - // TODO: comments - mapping.set("Name", this.name) + mapping.set("Name", this.name + this.getCommentBlock()) mapping.set("Timestamp", this.timestamp) mapping.set("Issuer", this.issuer) return mapping } + + getCommentBlock() { + if (this.comment == null) + return "" + if (expandedComments.get(this.id)) { + var link = new Link(_t("Hide Comment"), "hideComment", [this.id]) + var html = "" + html += "
" + html += "
" + this.comment + "
" + html += "
" + return html + } else { + var link = new Link(_t("Show Comment"), "showComment", [this.id]) + var html = "" + html += "
" + return html + } + } } function initFileDetails() { @@ -131,11 +150,14 @@ function refreshCertificates() { var xmlhttp = new XMLHttpRequest() xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { + certificatesById.clear() var certificates = [] var certNodes = this.responseXML.getElementsByTagName("Certificate") var i for (i = 0; i < certNodes.length; i++) { - certificates.push(new CertificateEntry(certNodes[i])) + var cert = new CertificateEntry(certNodes[i]) + certificates.push(cert) + certificatesById.set(cert.id, cert) } var newOrder @@ -179,9 +201,35 @@ function sortCertificates(key, order) { refreshCertificates() } + +function showComment(id) { + var cert = certificatesById.get(id) + expandedComments.set(id, true) + + var commentLinkDiv = document.getElementById("comment-link-" + id) + var hideLink = new Link(_t("Hide Comment"), "hideComment", [id]) + commentLinkDiv.innerHTML = hideLink.render() + + var commentDiv = document.getElementById("comment-" + id) + commentDiv.innerHTML = "
" + cert.comment + "
" +} + +function hideComment(id) { + var cert = certificatesById.get(id) + expandedComments.delete(id) + + var commentLinkDiv = document.getElementById("comment-link-" + id) + var showLink = new Link(_t("Show Comment"), "showComment", [id]) + commentLinkDiv.innerHTML = showLink.render() + + var commentDiv = document.getElementById("comment-" + id) + commentDiv.innerHTML = "" +} + var path = null var expandedComments = new Map() +var certificatesById = new Map() var searchersSortKey = "Searcher" var searchersSortOrder = "descending"