diff --git a/webui/src/main/java/com/muwire/webui/SearchServlet.java b/webui/src/main/java/com/muwire/webui/SearchServlet.java index c7b0a225..40d6c230 100644 --- a/webui/src/main/java/com/muwire/webui/SearchServlet.java +++ b/webui/src/main/java/com/muwire/webui/SearchServlet.java @@ -113,6 +113,7 @@ public class SearchServlet extends HttpServlet { .append(Util.escapeHTMLinXML(result.getComment())) .append(""); } + sb.append("").append(result.getCertificates()).append(""); sb.append(""); }); sb.append(""); @@ -157,6 +158,7 @@ public class SearchServlet extends HttpServlet { .append(Util.escapeHTMLinXML(result.getComment())) .append(""); } + sb.append("").append(result.getCertificates()).append(""); sb.append(""); }); sb.append(""); diff --git a/webui/src/main/java/com/muwire/webui/Util.java b/webui/src/main/java/com/muwire/webui/Util.java index 6b7013c6..3c174a40 100644 --- a/webui/src/main/java/com/muwire/webui/Util.java +++ b/webui/src/main/java/com/muwire/webui/Util.java @@ -22,7 +22,10 @@ public class Util { // if we had a lot of these we could scan for them in the build and generate // a file, but it's not worth it for just a handful. private static final String[] jsStrings = { - _x("View Certificates"), + _x("Fetching Certificates"), + _x("Hide Certificates"), + _x("Results For {0}"), + _x("View {0} Certificates"), _x("Certify"), _x("Certified"), _x("Import"), diff --git a/webui/src/main/js/search.js b/webui/src/main/js/search.js index c4c680ea..10b93376 100644 --- a/webui/src/main/js/search.js +++ b/webui/src/main/js/search.js @@ -106,6 +106,7 @@ class ResultBySender { var comment = xmlNode.getElementsByTagName("Comment") if (comment.length == 1) this.comment = comment[0].childNodes[0].nodeValue; + this.certificates = xmlNode.getElementsByTagName("Certificates")[0].childNodes[0].nodeValue } } @@ -120,6 +121,17 @@ class ResultByFile { var comment = xmlNode.getElementsByTagName("Comment") if (comment.length == 1) this.comment = comment[0].childNodes[0].nodeValue; + this.certificates = xmlNode.getElementsByTagName("Certificates")[0].childNodes[0].nodeValue + } + + getCertificatesBlock() { + if (this.certificates == "0") + return "" + var linkText = _t("View {0} Certificates", this.certificates) + var link = "" + linkText + "" + var id = this.senderB64 + "_" + infoHash + var html = "
" + return html } getTrustLinks() { @@ -150,10 +162,21 @@ class ResultByFile { } } +class CertificateFetch { + constructor(senderB64, fileInfoHash) { + this.senderB64 = senderB64 + this.fileInfoHash = fileInfoHash + this.divId = senderB64 + "_" + fileInfoHash + } +} + var statusByUUID = new Map() var currentSearchBySender = null var currentSearchByFile = null +var currentSender = null +var currentFile = null var expandedComments = new Map(); +var certificateFetches = new Map() var uuid = null; var sender = null; @@ -360,6 +383,7 @@ function updateFile(fileInfoHash) { table += "
"; } } + table += result.getCertificatesBlock() table += ""; if (result.browse == "true") { if (result.browsing == "true") @@ -413,7 +437,7 @@ function updateUUIDByFile(resultUUID) { var currentStatus = statusByUUID.get(uuid) var currentSearchSpan = document.getElementById("currentSearch"); - currentSearchSpan.innerHTML = currentStatus.query + " Results"; + currentSearchSpan.innerHTML = _t("Results for {0}", currentStatus.query) var topTableDiv = document.getElementById("topTable"); var table = ""; @@ -483,6 +507,31 @@ function browse(host) { xmlhttp.send("action=browse&host="+host) } +function viewCertificatesByFile(senderB64, count) { + var fetch = new CertificateFetch(senderB64, infoHash) + certificateFetches.set(fetch.divId, fetch) + + var linkSpan = document.getElementById("certificates-link-" + fetch.divId) + var hideLink = "" + _t("Hide Certificates") + "" + linkSpan.innerHTML = hideLink + + var fetchSpan = document.getElementById("certificates-" + fetch.divId) + fetchSpan.innerHTML = _t("Fetching Certificates") +} + +function hideCertificatesByFile(senderB64, count) { + var id = senderB64 + "_" + infoHash + certificateFetches.delete(id) // TODO: propagate cancel to core + + var fetchSpan = document.getElementById("certificates-" + id) + fetchSpan.innerHTML = "" + + var linkSpan = document.getElementById("certificates-link-" + id) + var linkText = _t("View {0} Certificates", count) + var showLink = "" + linkText + "" + linkSpan.innerHTML = showLink +} + function refreshStatus() { var xmlhttp = new XMLHttpRequest() xmlhttp.onreadystatechange = function() {
" + _t("Name") + "" + _t("Size") + "" + _t("Download") + "