class Persona { constructor(xmlNode) { this.user = xmlNode.getElementsByTagName("User")[0].childNodes[0].nodeValue this.userB64 = xmlNode.getElementsByTagName("UserB64")[0].childNodes[0].nodeValue this.reason = xmlNode.getElementsByTagName("Reason")[0].childNodes[0].nodeValue } getTrustedLink() { return "Mark Trusted" } getNeutralLink() { return "Mark Neutral" } getDistrustedLink() { return "Mark Distrusted" } } var trusted = new Map() var distrusted = new Map() var revision = -1 function markTrusted(host) { var linkSpan = document.getElementById("trusted-link-"+host) linkSpan.innerHTML = "" var textAreaSpan = document.getElementById("trusted-"+host) var textbox = "" var submitLink = "Submit" var cancelLink = "Cancel" var html = "
" + textbox + "
" + submitLink + " " + cancelLink + "
" textAreaSpan.innerHTML = html } function markNeutral(host) { publishTrust(host, "", "neutral") } function markDistrusted(host) { var linkSpan = document.getElementById("distrusted-link-"+host) linkSpan.innerHTML = "" var textAreaSpan = document.getElementById("distrusted-"+host) var textbox = "" var submitLink = "Submit" var cancelLink = "Cancel" var html = "
" + textbox + "
" + submitLink + " " + cancelLink + "
" textAreaSpan.innerHTML = html } function submitTrust(host) { var reason = document.getElementById("trust-reason-"+host).value publishTrust(host, reason, "trust") } function submitDistrust(host) { var reason = document.getElementById("distrust-reason-"+host).value publishTrust(host, reason, "distrust") } function publishTrust(host, reason, trust) { var xmlhttp = new XMLHttpRequest() xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { refreshUsers() } } xmlhttp.open("POST","/MuWire/Trust", true) xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); xmlhttp.send("action=" + trust + "&reason=" + reason + "&persona=" + host) } function cancelTrust(host) { var textAreaSpan = document.getElementById("trusted-" + host) textAreaSpan.innerHTML = "" var linkSpan = document.getElementById("trusted-link-"+host) var html = "Mark Trusted" linkSpan.innerHTML = html } function cancelDistrust(host) { var textAreaSpan = document.getElementById("distrusted-" + host) textAreaSpan.innerHTML = "" var linkSpan = document.getElementById("distrusted-link-"+host) var html = "Mark Distrusted" linkSpan.innerHTML = html } function updateTable(map, divId) { var divElement = document.getElementById(divId) var tableHtml = "" var isTrusted = (map == trusted) for (var [ignored, user] of map) { tableHtml += "" tableHtml += "" tableHtml += "" tableHtml += "" tableHtml += "" } tableHtml += "
UserReasonActions
" + user.user + "" + user.reason + "" if (isTrusted) { tableHtml += user.getNeutralLink() + " " + user.getDistrustedLink() + "" + "" } else { tableHtml += user.getNeutralLink() + " " + user.getTrustedLink() + "" + "" } tableHtml += "
" divElement.innerHTML = tableHtml } function refreshUsers() { var xmlhttp = new XMLHttpRequest() xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { trusted.clear() distrusted.clear() var trustedElement = this.responseXML.getElementsByTagName("Trusted")[0] var trustedUsers = trustedElement.getElementsByTagName("Persona") var i for (i = 0; i < trustedUsers.length; i++) { var persona = new Persona(trustedUsers[i]) trusted.set(persona.user, persona) } var distrustedElement = this.responseXML.getElementsByTagName("Distrusted")[0] var distrustedUsers = distrustedElement.getElementsByTagName("Persona") for (i = 0; i < distrustedUsers.length; i++) { var persona = new Persona(distrustedUsers[i]) distrusted.set(persona.user, persona) } updateTable(trusted, "trustedUsers") updateTable(distrusted, "distrustedUsers") } } xmlhttp.open("GET", "/MuWire/Trust?section=users", true) xmlhttp.send() } function fetchRevision() { var xmlhttp = new XMLHttpRequest() xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { var xmlDoc = this.responseXML var newRevision = xmlDoc.childNodes[0].childNodes[0].nodeValue if (newRevision > revision) { revision = newRevision refreshUsers() } } } xmlhttp.open("GET", "/MuWire/Trust?section=revision", true) xmlhttp.send() } function initTrustUsers() { setTimeout(fetchRevision, 1) setInterval(fetchRevision, 3000) }