diff --git a/plug/templates/plugin.config.template b/plug/templates/plugin.config.template index dc6e3c9f..3caccbdd 100644 --- a/plug/templates/plugin.config.template +++ b/plug/templates/plugin.config.template @@ -7,7 +7,7 @@ signer=${signer} websiteURL=${websiteURL} updateURL.su3=${updateURLsu3} min-i2p-version=${i2pVersion} -min-java-version=11 +min-java-version=8 consoleLinkName=MuWire consoleLinkTooltip=Anonymous File Sharing consoleLinkURL=/MuWire/ diff --git a/webui/bundle-messages.sh b/webui/bundle-messages.sh index 10be36d2..d3d8d4b4 100755 --- a/webui/bundle-messages.sh +++ b/webui/bundle-messages.sh @@ -24,6 +24,7 @@ fi if [ "$1" = "-p" ] then POUPDATE=1 + LG2=en fi # on windows, one must specify the path of commnad find diff --git a/webui/src/main/java/com/muwire/webui/MuWireServlet.java b/webui/src/main/java/com/muwire/webui/MuWireServlet.java index efb4da88..017edc58 100644 --- a/webui/src/main/java/com/muwire/webui/MuWireServlet.java +++ b/webui/src/main/java/com/muwire/webui/MuWireServlet.java @@ -68,6 +68,9 @@ public class MuWireServlet extends HttpServlet { _t("MuWire is initializing, please wait") + "" + "" + + "" + ""); resp.setIntHeader("Refresh", 5); } else diff --git a/webui/src/main/java/com/muwire/webui/Util.java b/webui/src/main/java/com/muwire/webui/Util.java index 251f794e..4fd95619 100644 --- a/webui/src/main/java/com/muwire/webui/Util.java +++ b/webui/src/main/java/com/muwire/webui/Util.java @@ -1,6 +1,12 @@ package com.muwire.webui; +import java.util.HashMap; +import java.util.Map; + +import org.json.simple.JSONObject; + import net.i2p.I2PAppContext; +import net.i2p.data.DataHelper; import net.i2p.util.Translate; public class Util { @@ -11,6 +17,49 @@ public class Util { private static final String escapeCodes[] = {"&amp;", "&quot;", "&lt;", "&gt;", "&apos;"}; private static final String escapedCodes[] = {"&", """, "<", ">", "'"}; + // 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("Actions"), + _x("Browse"), + _x("Browsing"), + _x("Cancel"), + _x("Details For {0}"), + _x("Down"), + _x("Download"), + _x("Downloading"), + _x("Enter Reason (Optional)"), + _x("ETA"), + _x("File"), + _x("Hide Comment"), + _x("Host"), + _x("Last Updated"), + _x("Mark Distrusted"), + _x("Mark Neutral"), + _x("Mark Trusted"), + _x("Name"), + _x("Progress"), + _x("Query"), + _x("Reason"), + _x("Refresh"), + _x("Results"), + _x("Results From {0}"), + _x("Save"), + _x("Search"), + _x("Sender"), + _x("Senders"), + _x("Show Comment"), + _x("Size"), + _x("Speed"), + _x("State"), + _x("Status"), + _x("Subscribe"), + _x("Subscribed"), + _x("Trust"), + _x("User"), + _x("Your Trust"), + }; + private static final String BUNDLE_NAME = "com.muwire.webui.messages"; /** @@ -36,6 +85,19 @@ public class Util { return unescaped; } + /** + * @return a JSON-encoded mapping of translations needed for the javascript, + * HTML-escaped. + */ + public static String getJSTranslations() { + Map map = new HashMap(jsStrings.length); + for (String s : jsStrings) { + map.put(s, _t(s)); + } + return JSONObject.toJSONString(map); + } + + /** translate a string */ public static String _t(String s) { return Translate.getString(s, _context, BUNDLE_NAME); diff --git a/webui/src/main/js/browse.js b/webui/src/main/js/browse.js index 1ff93bbc..a061474b 100644 --- a/webui/src/main/js/browse.js +++ b/webui/src/main/js/browse.js @@ -52,7 +52,7 @@ function refreshActive() { browsesByHost.set(host, browse) } - var tableHtml = ""; + var tableHtml = "
HostStatusResults
"; for (var [host, browse] of browsesByHost) { var browseLink = getBrowseLink(host, host) @@ -113,7 +113,7 @@ function showResults(host) { resultsByInfoHash.set(infoHash, result) } - var tableHtml = "
" + _t("Host") + "" + _t("Status") + "" + _t("Results") + "
" + var tableHtml = "
NameSizeDownload
" for (var [infoHash, result] of resultsByInfoHash) { @@ -128,7 +128,7 @@ function showResults(host) { tableHtml += "" tableHtml += "" if (result.downloading == "true") - tableHtml += "" + tableHtml += "" else tableHtml += "" // TODO: show comment link @@ -146,7 +146,7 @@ function showResults(host) { } function getDownloadLink(host, infoHash) { - return "Download" + return "" + _t("Download") + "" } function download(host,infoHash) { @@ -164,12 +164,12 @@ function download(host,infoHash) { } function getShowCommentLink(infoHash) { - return "Show Comment" + return "" + _t("Show Comment") + "" } function showComment(infoHash) { var linkSpan = document.getElementById("show-comment-"+infoHash) - var hideComment = "Hide Comment" + var hideComment = "" + _t("Hide Comment") + "" linkSpan.innerHTML = hideComment var commentSpan = document.getElementById("comment-"+infoHash) @@ -183,4 +183,4 @@ function hideComment(infoHash) { var commentSpan = document.getElementById("comment-"+infoHash) commentSpan.innerHTML = "" -} \ No newline at end of file +} diff --git a/webui/src/main/js/conncount.js b/webui/src/main/js/conncount.js index 463d2870..d93dae3d 100644 --- a/webui/src/main/js/conncount.js +++ b/webui/src/main/js/conncount.js @@ -9,7 +9,7 @@ function refreshConnectionsCount() { var countString = ""+count; connectionCountSpan.innerHTML = countString; } else { - connectionCountSpan.innerHTML = "down"; + connectionCountSpan.innerHTML = _t("Down"); } } } diff --git a/webui/src/main/js/download.js b/webui/src/main/js/download.js index 30bd9ddc..f7d73a49 100644 --- a/webui/src/main/js/download.js +++ b/webui/src/main/js/download.js @@ -30,7 +30,7 @@ function updateDownloader(infoHash) { var selected = downloaders.get(infoHash); var downloadDetailsDiv = document.getElementById("downloadDetails"); - downloadDetailsDiv.innerHTML = "

Details for "+selected.name+"

" + downloadDetailsDiv.innerHTML = "

" + _t("Details for {0}", selected.name) + "

" } function refreshDownloader() { @@ -46,7 +46,7 @@ function refreshDownloader() { downloaders.set(download.infoHash, download); } - var table = "
" + _t("Name") + "" + _t("Size") + "" + _t("Download") + "
" + result.name + showComments + "" + result.size + "Downloading" + _t("Downloading") + "" + getDownloadLink(host, infoHash) + "
"; + var table = "
NameStateSpeedETAProgressCancel
"; var downloadsDiv = document.getElementById("downloads"); for (var [infoHash, download] of downloaders) { table += ""; if (download.state != "CANCELLED") - table += ""; + table += ""; else table += ""; table += ""; @@ -77,4 +77,4 @@ function refreshDownloader() { function initDownloads() { setInterval(refreshDownloader, 3000) setTimeout(refreshDownloader,1); -} \ No newline at end of file +} diff --git a/webui/src/main/js/files.js b/webui/src/main/js/files.js index 70010ed2..9b42c553 100644 --- a/webui/src/main/js/files.js +++ b/webui/src/main/js/files.js @@ -13,8 +13,8 @@ class Node { updateDiv() { var div = document.getElementById(this.nodeId) - var unshareLink = "Unshare" - var commentLink = "Comment"; + var unshareLink = "" + _t("Unshare") + "" + var commentLink = "" + _t("Comment") + ""; if (this.leaf) { div.innerHTML = "
  • "+this.path+"
    "+ unshareLink + " " + commentLink + "
  • " } else { @@ -170,8 +170,8 @@ function showCommentForm(nodeId) { var existingComment = node.comment == null ? "" : node.comment var textArea = "" - var saveCommentLink = "Save" - var cancelCommentLink = "Cancel" + var saveCommentLink = "" + _t("Save") + "" + var cancelCommentLink = "" + _t("Cancel") + "" var html = textArea + "
    " + saveCommentLink + " " + cancelCommentLink @@ -201,4 +201,4 @@ function saveComment(nodeId) { xmlhttp.open("POST", "/MuWire/Files", true) xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); xmlhttp.send(encodeURI("action=comment&path="+encodedPath+ "&comment="+comment)) -} \ No newline at end of file +} diff --git a/webui/src/main/js/filesTable.js b/webui/src/main/js/filesTable.js index bbf43e89..ef06e5c5 100644 --- a/webui/src/main/js/filesTable.js +++ b/webui/src/main/js/filesTable.js @@ -19,7 +19,7 @@ function refreshStatus() { var hashingSpan = document.getElementById("hashing") var hashing = xmlDoc.getElementsByTagName("Hashing") if (hashing != null && hashing.length == 1) { - hashingSpan.innerHTML = "Hashing "+hashing[0].childNodes[0].nodeValue + hashingSpan.innerHTML = _t("Hashing") + " " +hashing[0].childNodes[0].nodeValue } else hashingSpan.innerHTML = ""; @@ -27,7 +27,7 @@ function refreshStatus() { var refreshDiv = document.getElementById("refresh-link") if (newRevision > tableRevision) { tableRevision = newRevision - refreshDiv.innerHTML = "Refresh" + refreshDiv.innerHTML = "" + _t("Refresh") + "" } else refreshDiv.innerHTML = "" } @@ -116,8 +116,8 @@ function showCommentForm(nodeId) { var existingComment = node.comment == null ? "" : node.comment var textArea = "" - var saveCommentLink = "Save" - var cancelCommentLink = "Cancel" + var saveCommentLink = "" + _t("Save") + "" + var cancelCommentLink = "" + _t("Cancel") + "" var html = textArea + "
    " + saveCommentLink + " " + cancelCommentLink @@ -147,5 +147,5 @@ function saveComment(fileId) { } function generateCommentLink(nodeId) { - return "Comment" + return "" + _t("Comment") + "" } diff --git a/webui/src/main/js/search.js b/webui/src/main/js/search.js index de1d0638..c4c680ea 100644 --- a/webui/src/main/js/search.js +++ b/webui/src/main/js/search.js @@ -64,18 +64,18 @@ class ResultsBySender { getTrustLink() { return "" + "Mark Trusted" + _t("Mark Trusted") + "" } getNeutralLink() { - return "Mark Neutral" + return "" + _t("Mark Neutral") + "" } getDistrustLink() { return "" + "Mark Distrusted" + _t("Mark Distrusted") + "" } } @@ -134,18 +134,18 @@ class ResultByFile { getTrustLink() { return "" + "Mark Trusted" + _t("Mark Trusted") + "" } getNeutralLink() { - return "Mark Neutral" + return "" + _t("Mark Neutral") + "" } getDistrustLink() { return "" + "Mark Distrusted" + _t("Mark Distrusted") + "" } } @@ -166,7 +166,7 @@ function showCommentBySender(divId, spanId) { var comment = "
    "+ currentSearchBySender.resultBatches.get(split[2]).results.get(split[3]).comment + "
    "; commentDiv.innerHTML = comment expandedComments.set(divId, comment); - var hideLink = "Hide Comment"; + var hideLink = "" + _t("Hide Comment") + ""; var linkSpan = document.getElementById(spanId); linkSpan.innerHTML = hideLink; } @@ -177,7 +177,7 @@ function showCommentByFile(divId, spanId) { var comment = "
    "+currentSearchByFile.resultBatches.get(split[2]).results.get(split[3]).comment + "
    "; commentDiv.innerHTML = comment expandedComments.set(divId, comment); - var hideLink = "Hide Comment"; + var hideLink = "" + _t("Hide Comment") + ""; var linkSpan = document.getElementById(spanId); linkSpan.innerHTML = hideLink; } @@ -186,7 +186,7 @@ function hideComment(divId, spanId, byFile) { expandedComments.delete(divId); var commentDiv = document.getElementById(divId); commentDiv.innerHTML = "" - var showLink = "Show Comment"; + var showLink = "" + _t("Show Comment") + ""; var linkSpan = document.getElementById(spanId); linkSpan.innerHTML = showLink; } @@ -196,7 +196,7 @@ function download(resultInfoHash) { xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { var resultSpan = document.getElementById("download-"+resultInfoHash); - resultSpan.innerHTML = "Downloading"; + resultSpan.innerHTML = _t("Downloading"); } } xmlhttp.open("POST", "/MuWire/Download", true); @@ -211,8 +211,8 @@ function markTrusted(host) { var textAreaSpan = document.getElementById("trusted-"+host) var textbox = "" - var submitLink = "Submit" - var cancelLink = "Cancel" + var submitLink = "" + _t("Submit") + "" + var cancelLink = "" + _t("Cancel") + "" var html = "
    Enter Reason (Optional)
    " + textbox + "
    " + submitLink + " " + cancelLink + "
    " @@ -230,8 +230,8 @@ function markDistrusted(host) { var textAreaSpan = document.getElementById("distrusted-"+host) var textbox = "" - var submitLink = "Submit" - var cancelLink = "Cancel" + var submitLink = "" + _t("Submit") + "" + var cancelLink = "" + _t("Cancel") + "" var html = "
    Enter Reason (Optional)
    " + textbox + "
    " + submitLink + " " + cancelLink + "
    " @@ -253,7 +253,7 @@ function cancelTrust(host) { textAreaSpan.innerHTML = "" var linkSpan = document.getElementById("trusted-link-"+host) - var html = "Mark Trusted" + var html = "" + _t("Mark Trusted") + "" linkSpan.innerHTML = html } @@ -262,7 +262,7 @@ function cancelDistrust(host) { textAreaSpan.innerHTML = "" var linkSpan = document.getElementById("distrusted-link-"+host) - var html = "Mark Distrusted" + var html = "" + _t("Mark Distrusted") + "" linkSpan.innerHTML = html } @@ -285,10 +285,10 @@ function updateSender(senderName) { sender = senderName; var resultsFromSpan = document.getElementById("resultsFrom"); - resultsFromSpan.innerHTML = "Results From "+sender; + resultsFromSpan.innerHTML = _t("Results From {0}", sender); var resultsDiv = document.getElementById("bottomTable"); - var table = "
    " + _t("Name") + "" + _t("State") + "" + _t("Speed") + "" + _t("ETA") + "" + _t("Progress") + "" + _t("Cancel") + "
    "; @@ -58,7 +58,7 @@ function refreshDownloader() { table += ""+download.progress+"Cancel" + _t("Cancel") + "
    " + var table = "
    NameSizeDownload
    " var x = currentSearchBySender x = x.resultBatches.get(sender).results; for (var [resultInfoHash, result] of x) { @@ -300,13 +300,13 @@ function updateSender(senderName) { var spanId = "comment-link-"+resultInfoHash + senderName + uuid; var comment = expandedComments.get(divId); if (comment != null) { - var link = "Hide Comment"; + var link = "" + _t("Hide Comment") + ""; table += "
    " + link + "
    "; table += "
    "+comment+"
    "; } else { var link = "Show Comment"; + "return false;'>" + _t("Show Comment") + ""; table += "
    "+link+""; table += "
    "; } @@ -317,9 +317,9 @@ function updateSender(senderName) { table += ""; table += ""; table += ""; @@ -338,7 +338,7 @@ function updateFile(fileInfoHash) { resultsFromSpan.innerHTML = "Results For "+searchResults.name; var resultsDiv = document.getElementById("bottomTable"); - var table = "
    " + _t("Name") + "" + _t("Size") + "" + _t("Download") + "
    "; if (result.downloading == "false") { - table += "Download"; + table += "" + _t("Download") + ""; } else { - table += "Downloading"; + table += _t("Downloading"); } table += "
    "; + var table = "
    SenderBrowseTrust
    "; var i; for (var [senderName, result] of searchResults.results) { table += ""; @@ -349,13 +349,13 @@ function updateFile(fileInfoHash) { var spanId = "comment-link-" + fileInfoHash + senderName + uuid; var comment = expandedComments.get(divId); if (comment != null) { - var link = "Hide Comment"; + var link = "" + _t("Hide Comment") + ""; table += "
    " + link + "
    "; table += "
    "+comment+"
    "; } else { var link = "Show Comment"; + "return false;'>" + _t("Show Comment") + ""; table += "
    "+link+""; table += "
    "; } @@ -363,7 +363,7 @@ function updateFile(fileInfoHash) { table += ""; if (result.browse == "true") { if (result.browsing == "true") - table += "" + table += "" else { table += "" } @@ -385,7 +385,7 @@ function updateUUIDBySender(resultUUID) { currentSearchSpan.innerHTML = currentStatus.query + " Results"; var sendersDiv = document.getElementById("topTable"); - var table = "
    " + _t("Sender") + "" + _t("Browse") + "
    Browsing" + _t("Browsing") + "" + getBrowseLink(result.senderB64) + "
    "; + var table = "
    SenderBrowseTrust
    "; var x = currentSearchBySender.resultBatches; for (var [senderName, senderBatch] of x) { table += ""; if (senderBatch.browse == "true") { if (senderBatch.browsing == "true") - table += "" + table += "" else table += "" } @@ -416,7 +416,7 @@ function updateUUIDByFile(resultUUID) { currentSearchSpan.innerHTML = currentStatus.query + " Results"; var topTableDiv = document.getElementById("topTable"); - var table = "
    " + _t("Sender") + "" + _t("Browse") + "" + _t("Trust") + "
    " @@ -393,7 +393,7 @@ function updateUUIDBySender(resultUUID) { table += "Browsing" + _t("Browsing") + "" + getBrowseLink(senderBatch.senderB64) + "
    "; + var table = "
    NameSizeDownload
    "; var x = currentSearchByFile.resultBatches; for (var [fileInfoHash, file] of x) { table += ""; table += ""; } table += "
    " + _t("Name") + "" + _t("Size") + "" + _t("Download") + "
    "; @@ -427,9 +427,9 @@ function updateUUIDByFile(resultUUID) { table += ""; if (file.downloading == "false") - table += "Download"; + table += "" + _t("Download") + ""; else - table += "Downloading"; + table += _t("Downloading"); table += "
    "; @@ -467,7 +467,7 @@ function refreshGroupByFile(searchUUID) { } function getBrowseLink(host) { - return "Browse" + return "" + _t("Browse") + "" } function browse(host) { @@ -475,7 +475,7 @@ function browse(host) { xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && this.status == 200) { var linkSpan = document.getElementById("browse-link-"+host) - linkSpan.innerHTML = "Browsing" + linkSpan.innerHTML = _t("Browsing"); } } xmlhttp.open("POST", "/MuWire/Browse", true) @@ -500,7 +500,7 @@ function refreshStatus() { } - var table = "" + var table = "
    QuerySendersResults
    " for (var [searchUUID, status] of statusByUUID) { table += "" table += "" diff --git a/webui/src/main/js/translate.js b/webui/src/main/js/translate.js new file mode 100644 index 00000000..ec18e1ba --- /dev/null +++ b/webui/src/main/js/translate.js @@ -0,0 +1,30 @@ +// map is standard json mapping, generated in the .jsp +// and then passed to initTranslate() +// map = '{ "Host" : "xxx", "Search" : "yyy" }' + +var translations = new Map(); + +function initTranslate(map) { + var obj = JSON.parse(map); + Object.keys(obj).forEach(k => { translations.set(k, obj[k]) }); +} + +function _t(s) { + var rv = translations.get(s); + if (rv == null) { + rv = s; + } + return rv; +} + +// s must contain {0} +// p will replace {0} +function _t(s, p) { + var rv = translations.get(s); + if (rv != null) { + rv = rv.replace("{0}", p); + } else { + rv = s; + } + return rv; +} diff --git a/webui/src/main/js/trustLists.js b/webui/src/main/js/trustLists.js index 1faf5022..bb087087 100644 --- a/webui/src/main/js/trustLists.js +++ b/webui/src/main/js/trustLists.js @@ -32,15 +32,15 @@ class Persona { } getTrustLink() { - return "Mark Trusted" + return "" + _t("Mark Trusted") + "" } getNeutralLink() { - return "Mark Neutral" + return "" + _t("Mark Neutral") + "" } getDistrustLink() { - return "Mark Distrusted" + return "" + _t("Mark Distrusted") + "" } getTrustActions() { @@ -65,10 +65,10 @@ function markTrusted(user) { var textAreaSpan = document.getElementById("trusted-" + user) var textbox = "" - var submitLink = "Submit" - var cancelLink = "Cancel" + var submitLink = "" + _t("Submit") + "" + var cancelLink = "" + _t("Cancel") + "" - var html = "
    Enter Reason (Optional)
    " + textbox + "
    " + submitLink + " " + cancelLink + "
    " + var html = "
    " + _t("Enter Reason (Optional)") + "
    " + textbox + "
    " + submitLink + " " + cancelLink + "
    " textAreaSpan.innerHTML = html } @@ -83,7 +83,7 @@ function cancelTrust(user) { textAreaSpan.innerHTML = "" var linkSpan = document.getElementById("trusted-link-" + user) - var html = "Mark Trusted" + var html = "" + _t("Mark Trusted") + "" linkSpan.innerHTML = html } @@ -98,10 +98,10 @@ function markDistrusted(user) { var textAreaSpan = document.getElementById("distrusted-" + user) var textbox = "" - var submitLink = "Submit" - var cancelLink = "Cancel" + var submitLink = "" + _t("Submit") + "" + var cancelLink = "" + _t("Cancel") + "" - var html = "
    Enter Reason (Optional)
    " + textbox + "
    " + submitLink + " " + cancelLink + "
    " + var html = "
    " + _t("Enter Reason (Optional)") + "
    " + textbox + "
    " + submitLink + " " + cancelLink + "
    " textAreaSpan.innerHTML = html } @@ -116,7 +116,7 @@ function cancelDistrust(user) { textAreaSpan.innerHTML = "" var linkSpan = document.getElementById("distrusted-link-" + user) - var html = "Mark Distrusted" + var html = "" + _t("Mark Distrusted") + "" linkSpan.innerHTML = html } @@ -158,7 +158,7 @@ function forceUpdate(user) { function updateDiv(name, list) { - var html = "
    " + _t("Query") + "" + _t("Senders") + "" + _t("Results") + "
    " + "" + status.query + "
    " + var html = "
    UserReasonYour TrustActions
    " var i for (i = 0; i < list.length; i++) { @@ -220,7 +220,7 @@ function refreshLists() { } - var html = "
    " + _t("User") + "" + _t("Reason") + "" + _t("Your Trust") + "" + _t("Actions") + "
    " + var html = "
    NameTrustedDistrustedStatusLast UpdatedActions
    " for (var [user, list] of lists) { html += "" html += "" @@ -264,4 +264,4 @@ function fetchRevision() { function initTrustLists() { setTimeout(fetchRevision, 1) setInterval(fetchRevision, 3000) -} \ No newline at end of file +} diff --git a/webui/src/main/js/trustUsers.js b/webui/src/main/js/trustUsers.js index 63068d85..cfe6c0dd 100644 --- a/webui/src/main/js/trustUsers.js +++ b/webui/src/main/js/trustUsers.js @@ -10,19 +10,19 @@ class Persona { } getTrustedLink() { - return "Mark Trusted" + return "" + _t("Mark Trusted") + "" } getNeutralLink() { - return "Mark Neutral" + return "" + _t("Mark Neutral") + "" } getDistrustedLink() { - return "Mark Distrusted" + return "" + _t("Mark Distrusted") + "" } getSubscribeLink() { - return "Subscribe" + return "" + _t("Subscribe") + "" } } @@ -49,10 +49,10 @@ function markTrusted(host) { var textAreaSpan = document.getElementById("trusted-"+host) var textbox = "" - var submitLink = "Submit" - var cancelLink = "Cancel" + var submitLink = "" + _t("Submit") + "" + var cancelLink = "" + _t("Cancel") + "" - var html = "
    Enter Reason (Optional)
    " + textbox + "
    " + submitLink + " " + cancelLink + "
    " + var html = "
    " + _t("Enter Reason (Optional)") + "
    " + textbox + "
    " + submitLink + " " + cancelLink + "
    " textAreaSpan.innerHTML = html } @@ -68,10 +68,10 @@ function markDistrusted(host) { var textAreaSpan = document.getElementById("distrusted-"+host) var textbox = "" - var submitLink = "Submit" - var cancelLink = "Cancel" + var submitLink = "" + _t("Submit") + "" + var cancelLink = "" + _t("Cancel") + "" - var html = "
    Enter Reason (Optional)
    " + textbox + "
    " + submitLink + " " + cancelLink + "
    " + var html = "
    " + _t("Enter Reason (Optional)") + "
    " + textbox + "
    " + submitLink + " " + cancelLink + "
    " textAreaSpan.innerHTML = html } @@ -104,7 +104,7 @@ function cancelTrust(host) { textAreaSpan.innerHTML = "" var linkSpan = document.getElementById("trusted-link-"+host) - var html = "Mark Trusted" + var html = "" + _t("Mark Trusted") + "" linkSpan.innerHTML = html } @@ -113,13 +113,13 @@ function cancelDistrust(host) { textAreaSpan.innerHTML = "" var linkSpan = document.getElementById("distrusted-link-"+host) - var html = "Mark Distrusted" + var html = "" + _t("Mark Distrusted") + "" linkSpan.innerHTML = html } function updateTable(map, divId) { var divElement = document.getElementById(divId) - var tableHtml = "
    " + _t("Name") + "" + _t("Trusted") + "" + _t("Distrusted") + "" + _t("Status") + "" + _t("Last Updated") + "" + _t("Actions") + "
    " + "" + list.user + "
    " + var tableHtml = "
    UserReasonActionsSubscribe
    " var isTrusted = (map == trusted) for (var [ignored, user] of map) { @@ -138,7 +138,7 @@ function updateTable(map, divId) { tableHtml += "" if (user.subscribed == "true") { - tableHtml += "" + tableHtml += "" } else if (isTrusted) { tableHtml += "" } @@ -199,4 +199,4 @@ function fetchRevision() { function initTrustUsers() { setTimeout(fetchRevision, 1) setInterval(fetchRevision, 3000) -} \ No newline at end of file +} diff --git a/webui/src/main/webapp/BrowseHost.jsp b/webui/src/main/webapp/BrowseHost.jsp index cbd87243..4f635446 100644 --- a/webui/src/main/webapp/BrowseHost.jsp +++ b/webui/src/main/webapp/BrowseHost.jsp @@ -15,7 +15,7 @@ String pagetitle="Browse Host"; - + <%@ include file="header.jsi"%>
    " + _t("User") + "" + _t("Reason") + "" + _t("Actions") + "" + _t("Subscribe") + "
    Subscribed" + _t("Subscribed") + "" + user.getSubscribeLink() + "