Translation infrastructure, thanks to zzz

This commit is contained in:
Zlatin Balevsky
2019-12-09 15:17:13 +00:00
parent 42c48a8e37
commit 81d8af57ed
22 changed files with 204 additions and 95 deletions

View File

@ -7,7 +7,7 @@ signer=${signer}
websiteURL=${websiteURL} websiteURL=${websiteURL}
updateURL.su3=${updateURLsu3} updateURL.su3=${updateURLsu3}
min-i2p-version=${i2pVersion} min-i2p-version=${i2pVersion}
min-java-version=11 min-java-version=8
consoleLinkName=MuWire consoleLinkName=MuWire
consoleLinkTooltip=Anonymous File Sharing consoleLinkTooltip=Anonymous File Sharing
consoleLinkURL=/MuWire/ consoleLinkURL=/MuWire/

View File

@ -24,6 +24,7 @@ fi
if [ "$1" = "-p" ] if [ "$1" = "-p" ]
then then
POUPDATE=1 POUPDATE=1
LG2=en
fi fi
# on windows, one must specify the path of commnad find # on windows, one must specify the path of commnad find

View File

@ -68,6 +68,9 @@ public class MuWireServlet extends HttpServlet {
_t("MuWire is initializing, please wait") + _t("MuWire is initializing, please wait") +
"</div>" + "</div>" +
"</header>" + "</header>" +
"<noscript><center><b>" +
_t("MuWire requires JavaScript. Please enable JavaScript in your browser.") +
"</b></center></noscript>" +
"</body></html>"); "</body></html>");
resp.setIntHeader("Refresh", 5); resp.setIntHeader("Refresh", 5);
} else } else

View File

@ -1,6 +1,12 @@
package com.muwire.webui; package com.muwire.webui;
import java.util.HashMap;
import java.util.Map;
import org.json.simple.JSONObject;
import net.i2p.I2PAppContext; import net.i2p.I2PAppContext;
import net.i2p.data.DataHelper;
import net.i2p.util.Translate; import net.i2p.util.Translate;
public class Util { public class Util {
@ -11,6 +17,49 @@ public class Util {
private static final String escapeCodes[] = {"&amp;amp;", "&amp;quot;", "&amp;lt;", "&amp;gt;", "&amp;apos;"}; private static final String escapeCodes[] = {"&amp;amp;", "&amp;quot;", "&amp;lt;", "&amp;gt;", "&amp;apos;"};
private static final String escapedCodes[] = {"&amp;", "&quot;", "&lt;", "&gt;", "&apos;"}; private static final String escapedCodes[] = {"&amp;", "&quot;", "&lt;", "&gt;", "&apos;"};
// 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"; private static final String BUNDLE_NAME = "com.muwire.webui.messages";
/** /**
@ -36,6 +85,19 @@ public class Util {
return unescaped; return unescaped;
} }
/**
* @return a JSON-encoded mapping of translations needed for the javascript,
* HTML-escaped.
*/
public static String getJSTranslations() {
Map<String, String> map = new HashMap<String, String>(jsStrings.length);
for (String s : jsStrings) {
map.put(s, _t(s));
}
return JSONObject.toJSONString(map);
}
/** translate a string */ /** translate a string */
public static String _t(String s) { public static String _t(String s) {
return Translate.getString(s, _context, BUNDLE_NAME); return Translate.getString(s, _context, BUNDLE_NAME);

View File

@ -52,7 +52,7 @@ function refreshActive() {
browsesByHost.set(host, browse) browsesByHost.set(host, browse)
} }
var tableHtml = "<table><thead><tr><th>Host</th><th>Status</th><th>Results</th></tr></thead></tbody>"; var tableHtml = "<table><thead><tr><th>" + _t("Host") + "</th><th>" + _t("Status") + "</th><th>" + _t("Results") + "</th></tr></thead></tbody>";
for (var [host, browse] of browsesByHost) { for (var [host, browse] of browsesByHost) {
var browseLink = getBrowseLink(host, host) var browseLink = getBrowseLink(host, host)
@ -113,7 +113,7 @@ function showResults(host) {
resultsByInfoHash.set(infoHash, result) resultsByInfoHash.set(infoHash, result)
} }
var tableHtml = "<table><thead><tr><th>Name</th><th>Size</th><th>Download</th></tr></thead><tbody>" var tableHtml = "<table><thead><tr><th>" + _t("Name") + "</th><th>" + _t("Size") + "</th><th>" + _t("Download") + "</th></tr></thead><tbody>"
for (var [infoHash, result] of resultsByInfoHash) { for (var [infoHash, result] of resultsByInfoHash) {
@ -128,7 +128,7 @@ function showResults(host) {
tableHtml += "<td>" + result.name + showComments + "</td>" tableHtml += "<td>" + result.name + showComments + "</td>"
tableHtml += "<td>" + result.size + "</td>" tableHtml += "<td>" + result.size + "</td>"
if (result.downloading == "true") if (result.downloading == "true")
tableHtml += "<td>Downloading</td>" tableHtml += "<td>" + _t("Downloading") + "</td>"
else else
tableHtml += "<td>" + getDownloadLink(host, infoHash) + "</td>" tableHtml += "<td>" + getDownloadLink(host, infoHash) + "</td>"
// TODO: show comment link // TODO: show comment link
@ -146,7 +146,7 @@ function showResults(host) {
} }
function getDownloadLink(host, infoHash) { function getDownloadLink(host, infoHash) {
return "<a href='#' onclick='window.download(\"" + host + "\",\"" + infoHash + "\");return false;'>Download</a>" return "<a href='#' onclick='window.download(\"" + host + "\",\"" + infoHash + "\");return false;'>" + _t("Download") + "</a>"
} }
function download(host,infoHash) { function download(host,infoHash) {
@ -164,12 +164,12 @@ function download(host,infoHash) {
} }
function getShowCommentLink(infoHash) { function getShowCommentLink(infoHash) {
return "<a href='#' onclick='window.showComment(\"" + infoHash + "\"); return false;'>Show Comment</a>" return "<a href='#' onclick='window.showComment(\"" + infoHash + "\"); return false;'>" + _t("Show Comment") + "</a>"
} }
function showComment(infoHash) { function showComment(infoHash) {
var linkSpan = document.getElementById("show-comment-"+infoHash) var linkSpan = document.getElementById("show-comment-"+infoHash)
var hideComment = "<a href='#' onclick='window.hideComment(\"" + infoHash + "\"); return false;'>Hide Comment</a>" var hideComment = "<a href='#' onclick='window.hideComment(\"" + infoHash + "\"); return false;'>" + _t("Hide Comment") + "</a>"
linkSpan.innerHTML = hideComment linkSpan.innerHTML = hideComment
var commentSpan = document.getElementById("comment-"+infoHash) var commentSpan = document.getElementById("comment-"+infoHash)
@ -183,4 +183,4 @@ function hideComment(infoHash) {
var commentSpan = document.getElementById("comment-"+infoHash) var commentSpan = document.getElementById("comment-"+infoHash)
commentSpan.innerHTML = "" commentSpan.innerHTML = ""
} }

View File

@ -9,7 +9,7 @@ function refreshConnectionsCount() {
var countString = ""+count; var countString = ""+count;
connectionCountSpan.innerHTML = countString; connectionCountSpan.innerHTML = countString;
} else { } else {
connectionCountSpan.innerHTML = "down"; connectionCountSpan.innerHTML = _t("Down");
} }
} }
} }

View File

@ -30,7 +30,7 @@ function updateDownloader(infoHash) {
var selected = downloaders.get(infoHash); var selected = downloaders.get(infoHash);
var downloadDetailsDiv = document.getElementById("downloadDetails"); var downloadDetailsDiv = document.getElementById("downloadDetails");
downloadDetailsDiv.innerHTML = "<p>Details for "+selected.name+"</p>" downloadDetailsDiv.innerHTML = "<p>" + _t("Details for {0}", selected.name) + "</p>"
} }
function refreshDownloader() { function refreshDownloader() {
@ -46,7 +46,7 @@ function refreshDownloader() {
downloaders.set(download.infoHash, download); downloaders.set(download.infoHash, download);
} }
var table = "<table><thead><tr><th>Name</th><th>State</th><th>Speed</th><th>ETA</th><th>Progress</th><th>Cancel</th></tr></thead></tbody>"; var table = "<table><thead><tr><th>" + _t("Name") + "</th><th>" + _t("State") + "</th><th>" + _t("Speed") + "</th><th>" + _t("ETA") + "</th><th>" + _t("Progress") + "</th><th>" + _t("Cancel") + "</th></tr></thead></tbody>";
var downloadsDiv = document.getElementById("downloads"); var downloadsDiv = document.getElementById("downloads");
for (var [infoHash, download] of downloaders) { for (var [infoHash, download] of downloaders) {
table += "<tr><td><a href='#' onclick='updateDownloader(\""+infoHash+"\");return false;'>"; table += "<tr><td><a href='#' onclick='updateDownloader(\""+infoHash+"\");return false;'>";
@ -58,7 +58,7 @@ function refreshDownloader() {
table += "<td>"+download.progress+"</td>"; table += "<td>"+download.progress+"</td>";
if (download.state != "CANCELLED") if (download.state != "CANCELLED")
table += "<td><span id='download-"+infoHash+"'><a href='#' onclick='window.cancelDownload(\""+infoHash+"\");return false;'>Cancel</a></span></td>"; table += "<td><span id='download-"+infoHash+"'><a href='#' onclick='window.cancelDownload(\""+infoHash+"\");return false;'>" + _t("Cancel") + "</a></span></td>";
else else
table += "<td></td>"; table += "<td></td>";
table += "</tr>"; table += "</tr>";
@ -77,4 +77,4 @@ function refreshDownloader() {
function initDownloads() { function initDownloads() {
setInterval(refreshDownloader, 3000) setInterval(refreshDownloader, 3000)
setTimeout(refreshDownloader,1); setTimeout(refreshDownloader,1);
} }

View File

@ -13,8 +13,8 @@ class Node {
updateDiv() { updateDiv() {
var div = document.getElementById(this.nodeId) var div = document.getElementById(this.nodeId)
var unshareLink = "<a href='#' onclick='window.unshare(\"" + this.nodeId +"\");return false;'>Unshare</a>" var unshareLink = "<a href='#' onclick='window.unshare(\"" + this.nodeId +"\");return false;'>" + _t("Unshare") + "</a>"
var commentLink = "<span id='comment-link-"+this.nodeId+"'><a href='#' onclick='window.showCommentForm(\"" + this.nodeId + "\");return false;'>Comment</a></span>"; var commentLink = "<span id='comment-link-"+this.nodeId+"'><a href='#' onclick='window.showCommentForm(\"" + this.nodeId + "\");return false;'>" + _t("Comment") + "</a></span>";
if (this.leaf) { if (this.leaf) {
div.innerHTML = "<li>"+this.path+"<br/>"+ unshareLink + " " + commentLink + "<div id='comment-" + this.nodeId+ "'></div></li>" div.innerHTML = "<li>"+this.path+"<br/>"+ unshareLink + " " + commentLink + "<div id='comment-" + this.nodeId+ "'></div></li>"
} else { } else {
@ -170,8 +170,8 @@ function showCommentForm(nodeId) {
var existingComment = node.comment == null ? "" : node.comment var existingComment = node.comment == null ? "" : node.comment
var textArea = "<textarea id='comment-text-" + nodeId + "'>"+existingComment+"</textarea>" var textArea = "<textarea id='comment-text-" + nodeId + "'>"+existingComment+"</textarea>"
var saveCommentLink = "<a href='#' onclick='saveComment(\"" + nodeId + "\");return false;'>Save</a>" var saveCommentLink = "<a href='#' onclick='saveComment(\"" + nodeId + "\");return false;'>" + _t("Save") + "</a>"
var cancelCommentLink = "<a href='#' onclick='cancelComment(\"" + nodeId + "\");return false;'>Cancel</a>" var cancelCommentLink = "<a href='#' onclick='cancelComment(\"" + nodeId + "\");return false;'>" + _t("Cancel") + "</a>"
var html = textArea + "<br/>" + saveCommentLink + " " + cancelCommentLink var html = textArea + "<br/>" + saveCommentLink + " " + cancelCommentLink
@ -201,4 +201,4 @@ function saveComment(nodeId) {
xmlhttp.open("POST", "/MuWire/Files", true) xmlhttp.open("POST", "/MuWire/Files", true)
xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xmlhttp.send(encodeURI("action=comment&path="+encodedPath+ "&comment="+comment)) xmlhttp.send(encodeURI("action=comment&path="+encodedPath+ "&comment="+comment))
} }

View File

@ -19,7 +19,7 @@ function refreshStatus() {
var hashingSpan = document.getElementById("hashing") var hashingSpan = document.getElementById("hashing")
var hashing = xmlDoc.getElementsByTagName("Hashing") var hashing = xmlDoc.getElementsByTagName("Hashing")
if (hashing != null && hashing.length == 1) { if (hashing != null && hashing.length == 1) {
hashingSpan.innerHTML = "Hashing "+hashing[0].childNodes[0].nodeValue hashingSpan.innerHTML = _t("Hashing") + " " +hashing[0].childNodes[0].nodeValue
} else } else
hashingSpan.innerHTML = ""; hashingSpan.innerHTML = "";
@ -27,7 +27,7 @@ function refreshStatus() {
var refreshDiv = document.getElementById("refresh-link") var refreshDiv = document.getElementById("refresh-link")
if (newRevision > tableRevision) { if (newRevision > tableRevision) {
tableRevision = newRevision tableRevision = newRevision
refreshDiv.innerHTML = "<a href='#' onclick='refreshTable();return false;'>Refresh</a>" refreshDiv.innerHTML = "<a href='#' onclick='refreshTable();return false;'>" + _t("Refresh") + "</a>"
} else } else
refreshDiv.innerHTML = "" refreshDiv.innerHTML = ""
} }
@ -116,8 +116,8 @@ function showCommentForm(nodeId) {
var existingComment = node.comment == null ? "" : node.comment var existingComment = node.comment == null ? "" : node.comment
var textArea = "<textarea id='comment-text-" + nodeId + "'>"+existingComment+"</textarea>" var textArea = "<textarea id='comment-text-" + nodeId + "'>"+existingComment+"</textarea>"
var saveCommentLink = "<a href='#' onclick='saveComment(\"" + nodeId + "\");return false;'>Save</a>" var saveCommentLink = "<a href='#' onclick='saveComment(\"" + nodeId + "\");return false;'>" + _t("Save") + "</a>"
var cancelCommentLink = "<a href='#' onclick='cancelComment(\"" + nodeId + "\");return false;'>Cancel</a>" var cancelCommentLink = "<a href='#' onclick='cancelComment(\"" + nodeId + "\");return false;'>" + _t("Cancel") + "</a>"
var html = textArea + "<br/>" + saveCommentLink + " " + cancelCommentLink var html = textArea + "<br/>" + saveCommentLink + " " + cancelCommentLink
@ -147,5 +147,5 @@ function saveComment(fileId) {
} }
function generateCommentLink(nodeId) { function generateCommentLink(nodeId) {
return "<a href='#' onclick='showCommentForm(\"" + nodeId + "\");return false;'>Comment</a>" return "<a href='#' onclick='showCommentForm(\"" + nodeId + "\");return false;'>" + _t("Comment") + "</a>"
} }

View File

@ -64,18 +64,18 @@ class ResultsBySender {
getTrustLink() { getTrustLink() {
return "<span id='trusted-link-" + this.senderB64 + "'>" + return "<span id='trusted-link-" + this.senderB64 + "'>" +
"<a href='#' onclick='window.markTrusted(\"" + "<a href='#' onclick='window.markTrusted(\"" +
this.senderB64 + "\"); return false;'>Mark Trusted</a></span><span id='trusted-" + this.senderB64 + "\"); return false;'>" + _t("Mark Trusted") + "</a></span><span id='trusted-" +
this.senderB64 + "'></span>" this.senderB64 + "'></span>"
} }
getNeutralLink() { getNeutralLink() {
return "<a href'#' onclick='window.markNeutral(\"" + this.senderB64 + "\"); return false;'>Mark Neutral</a>" return "<a href'#' onclick='window.markNeutral(\"" + this.senderB64 + "\"); return false;'>" + _t("Mark Neutral") + "</a>"
} }
getDistrustLink() { getDistrustLink() {
return "<span id='distrusted-link-" + this.senderB64 + "'>" + return "<span id='distrusted-link-" + this.senderB64 + "'>" +
"<a href='#' onclick='window.markDistrusted(\"" + "<a href='#' onclick='window.markDistrusted(\"" +
this.senderB64 + "\"); return false;'>Mark Distrusted</a></span><span id='distrusted-" + this.senderB64 + "\"); return false;'>" + _t("Mark Distrusted") + "</a></span><span id='distrusted-" +
this.senderB64 + "'></span>" this.senderB64 + "'></span>"
} }
} }
@ -134,18 +134,18 @@ class ResultByFile {
getTrustLink() { getTrustLink() {
return "<span id='trusted-link-" + this.senderB64 + "'>" + return "<span id='trusted-link-" + this.senderB64 + "'>" +
"<a href='#' onclick='window.markTrusted(\"" + "<a href='#' onclick='window.markTrusted(\"" +
this.senderB64 + "\"); return false;'>Mark Trusted</a></span><span id='trusted-" + this.senderB64 + "\"); return false;'>" + _t("Mark Trusted") + "</a></span><span id='trusted-" +
this.senderB64 + "'></span>" this.senderB64 + "'></span>"
} }
getNeutralLink() { getNeutralLink() {
return "<a href'#' onclick='window.markNeutral(\"" + this.senderB64 + "\"); return false;'>Mark Neutral</a>" return "<a href'#' onclick='window.markNeutral(\"" + this.senderB64 + "\"); return false;'>" + _t("Mark Neutral") + "</a>"
} }
getDistrustLink() { getDistrustLink() {
return "<span id='distrusted-link-" + this.senderB64 + "'>" + return "<span id='distrusted-link-" + this.senderB64 + "'>" +
"<a href='#' onclick='window.markDistrusted(\"" + "<a href='#' onclick='window.markDistrusted(\"" +
this.senderB64 + "\"); return false;'>Mark Distrusted</a></span><span id='distrusted-" + this.senderB64 + "\"); return false;'>" + _t("Mark Distrusted") + "</a></span><span id='distrusted-" +
this.senderB64 + "'></span>" this.senderB64 + "'></span>"
} }
} }
@ -166,7 +166,7 @@ function showCommentBySender(divId, spanId) {
var comment = "<pre>"+ currentSearchBySender.resultBatches.get(split[2]).results.get(split[3]).comment + "</pre>"; var comment = "<pre>"+ currentSearchBySender.resultBatches.get(split[2]).results.get(split[3]).comment + "</pre>";
commentDiv.innerHTML = comment commentDiv.innerHTML = comment
expandedComments.set(divId, comment); expandedComments.set(divId, comment);
var hideLink = "<a href='#' onclick='window.hideComment(\""+divId+"\",\""+spanId+"\",\"Sender\");return false;'>Hide Comment</a>"; var hideLink = "<a href='#' onclick='window.hideComment(\""+divId+"\",\""+spanId+"\",\"Sender\");return false;'>" + _t("Hide Comment") + "</a>";
var linkSpan = document.getElementById(spanId); var linkSpan = document.getElementById(spanId);
linkSpan.innerHTML = hideLink; linkSpan.innerHTML = hideLink;
} }
@ -177,7 +177,7 @@ function showCommentByFile(divId, spanId) {
var comment = "<pre>"+currentSearchByFile.resultBatches.get(split[2]).results.get(split[3]).comment + "</pre>"; var comment = "<pre>"+currentSearchByFile.resultBatches.get(split[2]).results.get(split[3]).comment + "</pre>";
commentDiv.innerHTML = comment commentDiv.innerHTML = comment
expandedComments.set(divId, comment); expandedComments.set(divId, comment);
var hideLink = "<a href='#' onclick='window.hideComment(\""+divId+"\",\""+spanId+"\",\"File\");return false;'>Hide Comment</a>"; var hideLink = "<a href='#' onclick='window.hideComment(\""+divId+"\",\""+spanId+"\",\"File\");return false;'>" + _t("Hide Comment") + "</a>";
var linkSpan = document.getElementById(spanId); var linkSpan = document.getElementById(spanId);
linkSpan.innerHTML = hideLink; linkSpan.innerHTML = hideLink;
} }
@ -186,7 +186,7 @@ function hideComment(divId, spanId, byFile) {
expandedComments.delete(divId); expandedComments.delete(divId);
var commentDiv = document.getElementById(divId); var commentDiv = document.getElementById(divId);
commentDiv.innerHTML = "" commentDiv.innerHTML = ""
var showLink = "<a href='#' onclick='window.showCommentBy"+byFile+"(\"" + divId + "\",\"" + spanId + "\"); return false;'>Show Comment</a>"; var showLink = "<a href='#' onclick='window.showCommentBy"+byFile+"(\"" + divId + "\",\"" + spanId + "\"); return false;'>" + _t("Show Comment") + "</a>";
var linkSpan = document.getElementById(spanId); var linkSpan = document.getElementById(spanId);
linkSpan.innerHTML = showLink; linkSpan.innerHTML = showLink;
} }
@ -196,7 +196,7 @@ function download(resultInfoHash) {
xmlhttp.onreadystatechange = function() { xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) { if (this.readyState == 4 && this.status == 200) {
var resultSpan = document.getElementById("download-"+resultInfoHash); var resultSpan = document.getElementById("download-"+resultInfoHash);
resultSpan.innerHTML = "Downloading"; resultSpan.innerHTML = _t("Downloading");
} }
} }
xmlhttp.open("POST", "/MuWire/Download", true); xmlhttp.open("POST", "/MuWire/Download", true);
@ -211,8 +211,8 @@ function markTrusted(host) {
var textAreaSpan = document.getElementById("trusted-"+host) var textAreaSpan = document.getElementById("trusted-"+host)
var textbox = "<textarea id='trust-reason-" + host + "'></textarea>" var textbox = "<textarea id='trust-reason-" + host + "'></textarea>"
var submitLink = "<a href='#' onclick='window.submitTrust(\"" + host + "\");return false;'>Submit</a>" var submitLink = "<a href='#' onclick='window.submitTrust(\"" + host + "\");return false;'>" + _t("Submit") + "</a>"
var cancelLink = "<a href='#' onclick='window.cancelTrust(\"" + host + "\");return false;'>Cancel</a>" var cancelLink = "<a href='#' onclick='window.cancelTrust(\"" + host + "\");return false;'>" + _t("Cancel") + "</a>"
var html = "<br/>Enter Reason (Optional)<br/>" + textbox + "<br/>" + submitLink + " " + cancelLink + "<br/>" var html = "<br/>Enter Reason (Optional)<br/>" + textbox + "<br/>" + submitLink + " " + cancelLink + "<br/>"
@ -230,8 +230,8 @@ function markDistrusted(host) {
var textAreaSpan = document.getElementById("distrusted-"+host) var textAreaSpan = document.getElementById("distrusted-"+host)
var textbox = "<textarea id='distrust-reason-" + host + "'></textarea>" var textbox = "<textarea id='distrust-reason-" + host + "'></textarea>"
var submitLink = "<a href='#' onclick='window.submitDistrust(\"" + host + "\");return false;'>Submit</a>" var submitLink = "<a href='#' onclick='window.submitDistrust(\"" + host + "\");return false;'>" + _t("Submit") + "</a>"
var cancelLink = "<a href='#' onclick='window.cancelDistrust(\"" + host + "\");return false;'>Cancel</a>" var cancelLink = "<a href='#' onclick='window.cancelDistrust(\"" + host + "\");return false;'>" + _t("Cancel") + "</a>"
var html = "<br/>Enter Reason (Optional)<br/>" + textbox + "<br/>" + submitLink + " " + cancelLink + "<br/>" var html = "<br/>Enter Reason (Optional)<br/>" + textbox + "<br/>" + submitLink + " " + cancelLink + "<br/>"
@ -253,7 +253,7 @@ function cancelTrust(host) {
textAreaSpan.innerHTML = "" textAreaSpan.innerHTML = ""
var linkSpan = document.getElementById("trusted-link-"+host) var linkSpan = document.getElementById("trusted-link-"+host)
var html = "<a href='#' onclick='markTrusted(\"" + host + "\"); return false;'>Mark Trusted</a>" var html = "<a href='#' onclick='markTrusted(\"" + host + "\"); return false;'>" + _t("Mark Trusted") + "</a>"
linkSpan.innerHTML = html linkSpan.innerHTML = html
} }
@ -262,7 +262,7 @@ function cancelDistrust(host) {
textAreaSpan.innerHTML = "" textAreaSpan.innerHTML = ""
var linkSpan = document.getElementById("distrusted-link-"+host) var linkSpan = document.getElementById("distrusted-link-"+host)
var html = "<a href='#' onclick='markDistrusted(\"" + host + "\"); return false;'>Mark Distrusted</a>" var html = "<a href='#' onclick='markDistrusted(\"" + host + "\"); return false;'>" + _t("Mark Distrusted") + "</a>"
linkSpan.innerHTML = html linkSpan.innerHTML = html
} }
@ -285,10 +285,10 @@ function updateSender(senderName) {
sender = senderName; sender = senderName;
var resultsFromSpan = document.getElementById("resultsFrom"); var resultsFromSpan = document.getElementById("resultsFrom");
resultsFromSpan.innerHTML = "Results From "+sender; resultsFromSpan.innerHTML = _t("Results From {0}", sender);
var resultsDiv = document.getElementById("bottomTable"); var resultsDiv = document.getElementById("bottomTable");
var table = "<table><thead><tr><th>Name</th><th>Size</th><th>Download</th></tr></thead><tbody>" var table = "<table><thead><tr><th>" + _t("Name") + "</th><th>" + _t("Size") + "</th><th>" + _t("Download") + "</th></tr></thead><tbody>"
var x = currentSearchBySender var x = currentSearchBySender
x = x.resultBatches.get(sender).results; x = x.resultBatches.get(sender).results;
for (var [resultInfoHash, result] of x) { for (var [resultInfoHash, result] of x) {
@ -300,13 +300,13 @@ function updateSender(senderName) {
var spanId = "comment-link-"+resultInfoHash + senderName + uuid; var spanId = "comment-link-"+resultInfoHash + senderName + uuid;
var comment = expandedComments.get(divId); var comment = expandedComments.get(divId);
if (comment != null) { if (comment != null) {
var link = "<a href='#' onclick='window.hideComment(\""+divId +"\",\"" + spanId + "\",\"Sender\");return false;'>Hide Comment</a>"; var link = "<a href='#' onclick='window.hideComment(\""+divId +"\",\"" + spanId + "\",\"Sender\");return false;'>" + _t("Hide Comment") + "</a>";
table += "<br/><span id='"+spanId+"'>" + link + "</span><br/>"; table += "<br/><span id='"+spanId+"'>" + link + "</span><br/>";
table += "<div id='" + divId + "'>"+comment+"</div>"; table += "<div id='" + divId + "'>"+comment+"</div>";
} else { } else {
var link = "<a href='#' onclick='window.showCommentBySender(\"" + divId + var link = "<a href='#' onclick='window.showCommentBySender(\"" + divId +
"\",\""+spanId+"\");"+ "\",\""+spanId+"\");"+
"return false;'>Show Comment</a>"; "return false;'>" + _t("Show Comment") + "</a>";
table += "<br/><span id='"+spanId+"'>"+link+"</span>"; table += "<br/><span id='"+spanId+"'>"+link+"</span>";
table += "<div id='"+divId+"'></div>"; table += "<div id='"+divId+"'></div>";
} }
@ -317,9 +317,9 @@ function updateSender(senderName) {
table += "</td>"; table += "</td>";
table += "<td>"; table += "<td>";
if (result.downloading == "false") { if (result.downloading == "false") {
table += "<span id='download-"+ resultInfoHash+"'><a href='#' onclick='window.download(\"" + resultInfoHash + "\");return false;'>Download</a></span>"; table += "<span id='download-"+ resultInfoHash+"'><a href='#' onclick='window.download(\"" + resultInfoHash + "\");return false;'>" + _t("Download") + "</a></span>";
} else { } else {
table += "Downloading"; table += _t("Downloading");
} }
table += "</td>"; table += "</td>";
table += "</tr>"; table += "</tr>";
@ -338,7 +338,7 @@ function updateFile(fileInfoHash) {
resultsFromSpan.innerHTML = "Results For "+searchResults.name; resultsFromSpan.innerHTML = "Results For "+searchResults.name;
var resultsDiv = document.getElementById("bottomTable"); var resultsDiv = document.getElementById("bottomTable");
var table = "<table><thead><tr><th>Sender</th><th>Browse</th><th>Trust</th></tr></thead><tbody>"; var table = "<table><thead><tr><th>" + _t("Sender") + "</th><th>" + _t("Browse") + "</th></tr></thead><tbody>";
var i; var i;
for (var [senderName, result] of searchResults.results) { for (var [senderName, result] of searchResults.results) {
table += "<tr>"; table += "<tr>";
@ -349,13 +349,13 @@ function updateFile(fileInfoHash) {
var spanId = "comment-link-" + fileInfoHash + senderName + uuid; var spanId = "comment-link-" + fileInfoHash + senderName + uuid;
var comment = expandedComments.get(divId); var comment = expandedComments.get(divId);
if (comment != null) { if (comment != null) {
var link = "<a href='#' onclick='window.hideComment(\""+divId +"\",\"" + spanId + "\",\"File\");return false;'>Hide Comment</a>"; var link = "<a href='#' onclick='window.hideComment(\""+divId +"\",\"" + spanId + "\",\"File\");return false;'>" + _t("Hide Comment") + "</a>";
table += "<br/><span id='"+spanId+"'>" + link + "</span><br/>"; table += "<br/><span id='"+spanId+"'>" + link + "</span><br/>";
table += "<div id='" + divId + "'>"+comment+"</div>"; table += "<div id='" + divId + "'>"+comment+"</div>";
} else { } else {
var link = "<a href='#' onclick='window.showCommentByFile(\"" + divId + var link = "<a href='#' onclick='window.showCommentByFile(\"" + divId +
"\",\""+spanId+"\");"+ "\",\""+spanId+"\");"+
"return false;'>Show Comment</a>"; "return false;'>" + _t("Show Comment") + "</a>";
table += "<br/><span id='"+spanId+"'>"+link+"</span>"; table += "<br/><span id='"+spanId+"'>"+link+"</span>";
table += "<div id='"+divId+"'></div>"; table += "<div id='"+divId+"'></div>";
} }
@ -363,7 +363,7 @@ function updateFile(fileInfoHash) {
table += "</td>"; table += "</td>";
if (result.browse == "true") { if (result.browse == "true") {
if (result.browsing == "true") if (result.browsing == "true")
table += "<td>Browsing</td>" table += "<td>" + _t("Browsing") + "</td>"
else { else {
table += "<td><span id='browse-link-" + result.senderB64 + "'>" + getBrowseLink(result.senderB64) + "</span></td>" table += "<td><span id='browse-link-" + result.senderB64 + "'>" + getBrowseLink(result.senderB64) + "</span></td>"
} }
@ -385,7 +385,7 @@ function updateUUIDBySender(resultUUID) {
currentSearchSpan.innerHTML = currentStatus.query + " Results"; currentSearchSpan.innerHTML = currentStatus.query + " Results";
var sendersDiv = document.getElementById("topTable"); var sendersDiv = document.getElementById("topTable");
var table = "<table><thead><tr><th>Sender</th><th>Browse</th><th>Trust</th></tr></thead><tbody>"; var table = "<table><thead><tr><th>" + _t("Sender") + "</th><th>" + _t("Browse") + "</th><th>" + _t("Trust") + "</th></tr></thead><tbody>";
var x = currentSearchBySender.resultBatches; var x = currentSearchBySender.resultBatches;
for (var [senderName, senderBatch] of x) { for (var [senderName, senderBatch] of x) {
table += "<tr><td><a href='#' onclick='updateSender(\""+senderName+"\");return false;'>" table += "<tr><td><a href='#' onclick='updateSender(\""+senderName+"\");return false;'>"
@ -393,7 +393,7 @@ function updateUUIDBySender(resultUUID) {
table += "</a></td>"; table += "</a></td>";
if (senderBatch.browse == "true") { if (senderBatch.browse == "true") {
if (senderBatch.browsing == "true") if (senderBatch.browsing == "true")
table += "<td>Browsing</td>" table += "<td>" + _t("Browsing") + "</td>"
else else
table += "<td><span id='browse-link-" + senderBatch.senderB64 + "'>" + getBrowseLink(senderBatch.senderB64) + "</span></td>" table += "<td><span id='browse-link-" + senderBatch.senderB64 + "'>" + getBrowseLink(senderBatch.senderB64) + "</span></td>"
} }
@ -416,7 +416,7 @@ function updateUUIDByFile(resultUUID) {
currentSearchSpan.innerHTML = currentStatus.query + " Results"; currentSearchSpan.innerHTML = currentStatus.query + " Results";
var topTableDiv = document.getElementById("topTable"); var topTableDiv = document.getElementById("topTable");
var table = "<table><thead><tr><th>Name</th><th>Size</th><th>Download</th></tr></thead><tbody>"; var table = "<table><thead><tr><th>" + _t("Name") + "</th><th>" + _t("Size") + "</th><th>" + _t("Download") + "</th></tr></thead><tbody>";
var x = currentSearchByFile.resultBatches; var x = currentSearchByFile.resultBatches;
for (var [fileInfoHash, file] of x) { for (var [fileInfoHash, file] of x) {
table += "<tr><td><a href='#' onclick='updateFile(\""+fileInfoHash+"\");return false;'>"; table += "<tr><td><a href='#' onclick='updateFile(\""+fileInfoHash+"\");return false;'>";
@ -427,9 +427,9 @@ function updateUUIDByFile(resultUUID) {
table += "</td>"; table += "</td>";
table += "<td>"; table += "<td>";
if (file.downloading == "false") if (file.downloading == "false")
table += "<span id='download-"+fileInfoHash+"'><a href='#' onclick='window.download(\""+fileInfoHash+"\"); return false;'>Download</a></span>"; table += "<span id='download-"+fileInfoHash+"'><a href='#' onclick='window.download(\""+fileInfoHash+"\"); return false;'>" + _t("Download") + "</a></span>";
else else
table += "Downloading"; table += _t("Downloading");
table += "</td></tr>"; table += "</td></tr>";
} }
table += "</tbody></table>"; table += "</tbody></table>";
@ -467,7 +467,7 @@ function refreshGroupByFile(searchUUID) {
} }
function getBrowseLink(host) { function getBrowseLink(host) {
return "<a href='#' onclick='window.browse(\"" + host + "\"); return false;'>Browse</a>" return "<a href='#' onclick='window.browse(\"" + host + "\"); return false;'>" + _t("Browse") + "</a>"
} }
function browse(host) { function browse(host) {
@ -475,7 +475,7 @@ function browse(host) {
xmlhttp.onreadystatechange = function() { xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) { if (this.readyState == 4 && this.status == 200) {
var linkSpan = document.getElementById("browse-link-"+host) var linkSpan = document.getElementById("browse-link-"+host)
linkSpan.innerHTML = "Browsing" linkSpan.innerHTML = _t("Browsing");
} }
} }
xmlhttp.open("POST", "/MuWire/Browse", true) xmlhttp.open("POST", "/MuWire/Browse", true)
@ -500,7 +500,7 @@ function refreshStatus() {
} }
var table = "<table><thead><tr><th>Query</th><th>Senders</th><th>Results</th></tr></thead><tbody>" var table = "<table><thead><tr><th>" + _t("Query") + "</th><th>" + _t("Senders") + "</th><th>" + _t("Results") + "</th></tr></thead><tbody>"
for (var [searchUUID, status] of statusByUUID) { for (var [searchUUID, status] of statusByUUID) {
table += "<tr>" table += "<tr>"
table += "<td>" + "<a href='#' onclick='refreshGroupBy" + refreshType + "(\"" + searchUUID + "\");return false;'>" + status.query + "</a></td>" table += "<td>" + "<a href='#' onclick='refreshGroupBy" + refreshType + "(\"" + searchUUID + "\");return false;'>" + status.query + "</a></td>"

View File

@ -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;
}

View File

@ -32,15 +32,15 @@ class Persona {
} }
getTrustLink() { getTrustLink() {
return "<a href='#' onclick='markTrusted(\"" + this.userB64 + "\");return false;'>Mark Trusted</a>" return "<a href='#' onclick='markTrusted(\"" + this.userB64 + "\");return false;'>" + _t("Mark Trusted") + "</a>"
} }
getNeutralLink() { getNeutralLink() {
return "<a href='#' onclick='markNeutral(\"" + this.userB64 + "\");return false;'>Mark Neutral</a>" return "<a href='#' onclick='markNeutral(\"" + this.userB64 + "\");return false;'>" + _t("Mark Neutral") + "</a>"
} }
getDistrustLink() { getDistrustLink() {
return "<a href='#' onclick='markDistrusted(\"" + this.userB64 + "\");return false;'>Mark Distrusted</a>" return "<a href='#' onclick='markDistrusted(\"" + this.userB64 + "\");return false;'>" + _t("Mark Distrusted") + "</a>"
} }
getTrustActions() { getTrustActions() {
@ -65,10 +65,10 @@ function markTrusted(user) {
var textAreaSpan = document.getElementById("trusted-" + user) var textAreaSpan = document.getElementById("trusted-" + user)
var textbox = "<textarea id='trust-reason-" + user + "'></textarea>" var textbox = "<textarea id='trust-reason-" + user + "'></textarea>"
var submitLink = "<a href='#' onclick='window.submitTrust(\"" + user + "\");return false;'>Submit</a>" var submitLink = "<a href='#' onclick='window.submitTrust(\"" + user + "\");return false;'>" + _t("Submit") + "</a>"
var cancelLink = "<a href='#' onclick='window.cancelTrust(\"" + user + "\");return false;'>Cancel</a>" var cancelLink = "<a href='#' onclick='window.cancelTrust(\"" + user + "\");return false;'>" + _t("Cancel") + "</a>"
var html = "<br/>Enter Reason (Optional)<br/>" + textbox + "<br/>" + submitLink + " " + cancelLink + "<br/>" var html = "<br/>" + _t("Enter Reason (Optional)") + "<br/>" + textbox + "<br/>" + submitLink + " " + cancelLink + "<br/>"
textAreaSpan.innerHTML = html textAreaSpan.innerHTML = html
} }
@ -83,7 +83,7 @@ function cancelTrust(user) {
textAreaSpan.innerHTML = "" textAreaSpan.innerHTML = ""
var linkSpan = document.getElementById("trusted-link-" + user) var linkSpan = document.getElementById("trusted-link-" + user)
var html = "<a href='#' onclick='markTrusted(\"" + user + "\");return false;'>Mark Trusted</a>" var html = "<a href='#' onclick='markTrusted(\"" + user + "\");return false;'>" + _t("Mark Trusted") + "</a>"
linkSpan.innerHTML = html linkSpan.innerHTML = html
} }
@ -98,10 +98,10 @@ function markDistrusted(user) {
var textAreaSpan = document.getElementById("distrusted-" + user) var textAreaSpan = document.getElementById("distrusted-" + user)
var textbox = "<textarea id='distrust-reason-" + user + "'></textarea>" var textbox = "<textarea id='distrust-reason-" + user + "'></textarea>"
var submitLink = "<a href='#' onclick='window.submitDistrust(\"" + user + "\");return false;'>Submit</a>" var submitLink = "<a href='#' onclick='window.submitDistrust(\"" + user + "\");return false;'>" + _t("Submit") + "</a>"
var cancelLink = "<a href='#' onclick='window.cancelDistrust(\"" + user + "\");return false;'>Cancel</a>" var cancelLink = "<a href='#' onclick='window.cancelDistrust(\"" + user + "\");return false;'>" + _t("Cancel") + "</a>"
var html = "<br/>Enter Reason (Optional)<br/>" + textbox + "<br/>" + submitLink + " " + cancelLink + "<br/>" var html = "<br/>" + _t("Enter Reason (Optional)") + "<br/>" + textbox + "<br/>" + submitLink + " " + cancelLink + "<br/>"
textAreaSpan.innerHTML = html textAreaSpan.innerHTML = html
} }
@ -116,7 +116,7 @@ function cancelDistrust(user) {
textAreaSpan.innerHTML = "" textAreaSpan.innerHTML = ""
var linkSpan = document.getElementById("distrusted-link-" + user) var linkSpan = document.getElementById("distrusted-link-" + user)
var html = "<a href='#' onclick='markDistrusted(\"" + user + "\");return false;'>Mark Distrusted</a>" var html = "<a href='#' onclick='markDistrusted(\"" + user + "\");return false;'>" + _t("Mark Distrusted") + "</a>"
linkSpan.innerHTML = html linkSpan.innerHTML = html
} }
@ -158,7 +158,7 @@ function forceUpdate(user) {
function updateDiv(name, list) { function updateDiv(name, list) {
var html = "<table><thead><tr><th>User</th><th>Reason</th><th>Your Trust</th><th>Actions</th></tr></thead><tbody>" var html = "<table><thead><tr><th>" + _t("User") + "</th><th>" + _t("Reason") + "</th><th>" + _t("Your Trust") + "</th><th>" + _t("Actions") + "</th></tr></thead><tbody>"
var i var i
for (i = 0; i < list.length; i++) { for (i = 0; i < list.length; i++) {
@ -220,7 +220,7 @@ function refreshLists() {
} }
var html = "<table><thead><tr><th>Name</th><th>Trusted</th><th>Distrusted</th><th>Status</th><th>Last Updated</th><th>Actions</th></tr></thead><tbody>" var html = "<table><thead><tr><th>" + _t("Name") + "</th><th>" + _t("Trusted") + "</th><th>" + _t("Distrusted") + "</th><th>" + _t("Status") + "</th><th>" + _t("Last Updated") + "</th><th>" + _t("Actions") + "</th></tr></thead><tbody>"
for (var [user, list] of lists) { for (var [user, list] of lists) {
html += "<tr>" html += "<tr>"
html += "<td>" + "<a href='#' onclick='window.displayList(\"" + list.user + "\");return false;'>" + list.user + "</a></td>" html += "<td>" + "<a href='#' onclick='window.displayList(\"" + list.user + "\");return false;'>" + list.user + "</a></td>"
@ -264,4 +264,4 @@ function fetchRevision() {
function initTrustLists() { function initTrustLists() {
setTimeout(fetchRevision, 1) setTimeout(fetchRevision, 1)
setInterval(fetchRevision, 3000) setInterval(fetchRevision, 3000)
} }

View File

@ -10,19 +10,19 @@ class Persona {
} }
getTrustedLink() { getTrustedLink() {
return "<a herf='#' onclick='window.markTrusted(\"" + this.userB64 + "\"); return false;'>Mark Trusted</a>" return "<a herf='#' onclick='window.markTrusted(\"" + this.userB64 + "\"); return false;'>" + _t("Mark Trusted") + "</a>"
} }
getNeutralLink() { getNeutralLink() {
return "<a herf='#' onclick='window.markNeutral(\"" + this.userB64 + "\"); return false;'>Mark Neutral</a>" return "<a herf='#' onclick='window.markNeutral(\"" + this.userB64 + "\"); return false;'>" + _t("Mark Neutral") + "</a>"
} }
getDistrustedLink() { getDistrustedLink() {
return "<a herf='#' onclick='window.markDistrusted(\"" + this.userB64 + "\"); return false;'>Mark Distrusted</a>" return "<a herf='#' onclick='window.markDistrusted(\"" + this.userB64 + "\"); return false;'>" + _t("Mark Distrusted") + "</a>"
} }
getSubscribeLink() { getSubscribeLink() {
return "<a href='#' onclick='window.subscribe(\"" + this.userB64 + "\"); return false;'>Subscribe</a>" return "<a href='#' onclick='window.subscribe(\"" + this.userB64 + "\"); return false;'>" + _t("Subscribe") + "</a>"
} }
} }
@ -49,10 +49,10 @@ function markTrusted(host) {
var textAreaSpan = document.getElementById("trusted-"+host) var textAreaSpan = document.getElementById("trusted-"+host)
var textbox = "<textarea id='trust-reason-" + host + "'></textarea>" var textbox = "<textarea id='trust-reason-" + host + "'></textarea>"
var submitLink = "<a href='#' onclick='window.submitTrust(\"" + host + "\");return false;'>Submit</a>" var submitLink = "<a href='#' onclick='window.submitTrust(\"" + host + "\");return false;'>" + _t("Submit") + "</a>"
var cancelLink = "<a href='#' onclick='window.cancelTrust(\"" + host + "\");return false;'>Cancel</a>" var cancelLink = "<a href='#' onclick='window.cancelTrust(\"" + host + "\");return false;'>" + _t("Cancel") + "</a>"
var html = "<br/>Enter Reason (Optional)<br/>" + textbox + "<br/>" + submitLink + " " + cancelLink + "<br/>" var html = "<br/>" + _t("Enter Reason (Optional)") + "<br/>" + textbox + "<br/>" + submitLink + " " + cancelLink + "<br/>"
textAreaSpan.innerHTML = html textAreaSpan.innerHTML = html
} }
@ -68,10 +68,10 @@ function markDistrusted(host) {
var textAreaSpan = document.getElementById("distrusted-"+host) var textAreaSpan = document.getElementById("distrusted-"+host)
var textbox = "<textarea id='distrust-reason-" + host + "'></textarea>" var textbox = "<textarea id='distrust-reason-" + host + "'></textarea>"
var submitLink = "<a href='#' onclick='window.submitDistrust(\"" + host + "\");return false;'>Submit</a>" var submitLink = "<a href='#' onclick='window.submitDistrust(\"" + host + "\");return false;'>" + _t("Submit") + "</a>"
var cancelLink = "<a href='#' onclick='window.cancelDistrust(\"" + host + "\");return false;'>Cancel</a>" var cancelLink = "<a href='#' onclick='window.cancelDistrust(\"" + host + "\");return false;'>" + _t("Cancel") + "</a>"
var html = "<br/>Enter Reason (Optional)<br/>" + textbox + "<br/>" + submitLink + " " + cancelLink + "<br/>" var html = "<br/>" + _t("Enter Reason (Optional)") + "<br/>" + textbox + "<br/>" + submitLink + " " + cancelLink + "<br/>"
textAreaSpan.innerHTML = html textAreaSpan.innerHTML = html
} }
@ -104,7 +104,7 @@ function cancelTrust(host) {
textAreaSpan.innerHTML = "" textAreaSpan.innerHTML = ""
var linkSpan = document.getElementById("trusted-link-"+host) var linkSpan = document.getElementById("trusted-link-"+host)
var html = "<a href='#' onclick='markTrusted(\"" + host + "\"); return false;'>Mark Trusted</a>" var html = "<a href='#' onclick='markTrusted(\"" + host + "\"); return false;'>" + _t("Mark Trusted") + "</a>"
linkSpan.innerHTML = html linkSpan.innerHTML = html
} }
@ -113,13 +113,13 @@ function cancelDistrust(host) {
textAreaSpan.innerHTML = "" textAreaSpan.innerHTML = ""
var linkSpan = document.getElementById("distrusted-link-"+host) var linkSpan = document.getElementById("distrusted-link-"+host)
var html = "<a href='#' onclick='markDistrusted(\"" + host + "\"); return false;'>Mark Distrusted</a>" var html = "<a href='#' onclick='markDistrusted(\"" + host + "\"); return false;'>" + _t("Mark Distrusted") + "</a>"
linkSpan.innerHTML = html linkSpan.innerHTML = html
} }
function updateTable(map, divId) { function updateTable(map, divId) {
var divElement = document.getElementById(divId) var divElement = document.getElementById(divId)
var tableHtml = "<table><thead><tr><th>User</th><th>Reason</th><th>Actions</th><th>Subscribe</th></tr></thead><tbody>" var tableHtml = "<table><thead><tr><th>" + _t("User") + "</th><th>" + _t("Reason") + "</th><th>" + _t("Actions") + "</th><th>" + _t("Subscribe") + "</th></tr></thead><tbody>"
var isTrusted = (map == trusted) var isTrusted = (map == trusted)
for (var [ignored, user] of map) { for (var [ignored, user] of map) {
@ -138,7 +138,7 @@ function updateTable(map, divId) {
tableHtml += "</td>" tableHtml += "</td>"
if (user.subscribed == "true") { if (user.subscribed == "true") {
tableHtml += "<td>Subscribed</td>" tableHtml += "<td>" + _t("Subscribed") + "</td>"
} else if (isTrusted) { } else if (isTrusted) {
tableHtml += "<td>" + user.getSubscribeLink() + "</td>" tableHtml += "<td>" + user.getSubscribeLink() + "</td>"
} }
@ -199,4 +199,4 @@ function fetchRevision() {
function initTrustUsers() { function initTrustUsers() {
setTimeout(fetchRevision, 1) setTimeout(fetchRevision, 1)
setInterval(fetchRevision, 3000) setInterval(fetchRevision, 3000)
} }

View File

@ -15,7 +15,7 @@ String pagetitle="Browse Host";
<script src="js/browse.js?<%=version%>" type="text/javascript"></script> <script src="js/browse.js?<%=version%>" type="text/javascript"></script>
</head> </head>
<body onload="initConnectionsCount(); initBrowse();"> <body onload="initTranslate(jsTranslations); initConnectionsCount(); initBrowse();">
<%@ include file="header.jsi"%> <%@ include file="header.jsi"%>
<aside> <aside>
<div class="menubox-divider"></div> <div class="menubox-divider"></div>

View File

@ -17,7 +17,7 @@
<%@include file="css.jsi"%> <%@include file="css.jsi"%>
<script src="js/download.js?<%=version%>" type="text/javascript"></script> <script src="js/download.js?<%=version%>" type="text/javascript"></script>
</head> </head>
<body onload="initConnectionsCount(); initDownloads();"> <body onload="initTranslate(jsTranslations); initConnectionsCount(); initDownloads();">
<%@include file="header.jsi"%> <%@include file="header.jsi"%>
<aside> <aside>
<%@include file="searchbox.jsi"%> <%@include file="searchbox.jsi"%>

View File

@ -22,9 +22,9 @@
<script src="js/search.js?<%=version%>" type="text/javascript"></script> <script src="js/search.js?<%=version%>" type="text/javascript"></script>
</head> </head>
<% if (groupBy.equals("sender")) { %> <% if (groupBy.equals("sender")) { %>
<body onload="initConnectionsCount();initGroupBySender();"> <body onload="initTranslate(jsTranslations); initConnectionsCount(); initGroupBySender();">
<% } else { %> <% } else { %>
<body onload="initConnectionsCount();initGroupByFile();"> <body onload="initTranslate(jsTranslations); initConnectionsCount(); initGroupByFile();">
<% } %> <% } %>
<%@include file="header.jsi"%> <%@include file="header.jsi"%>
<aside> <aside>

View File

@ -17,6 +17,9 @@
session.setAttribute("defaultIncompletesLocation",defaultIncompletesLocation); session.setAttribute("defaultIncompletesLocation",defaultIncompletesLocation);
%> %>
<noscript>
<center><b><%=Util._t("MuWire requires JavaScript. Please enable JavaScript in your browser.")%></b></center>
</noscript>
<p><%=Util._t("Welcome to MuWire! Please select a nickname and download locations")%></p> <p><%=Util._t("Welcome to MuWire! Please select a nickname and download locations")%></p>
<form action="/MuWire/init" method="post"> <form action="/MuWire/init" method="post">
<%=Util._t("Nickname")%>: <%=Util._t("Nickname")%>:

View File

@ -23,7 +23,7 @@ if (viewAs == null)
<% } %> <% } %>
</head> </head>
<body onload="initConnectionsCount(); initFiles();"> <body onload="initTranslate(jsTranslations); initConnectionsCount(); initFiles();">
<%@ include file="header.jsi"%> <%@ include file="header.jsi"%>
<aside> <aside>
<div class="menubox-divider"></div> <div class="menubox-divider"></div>
@ -32,6 +32,9 @@ if (viewAs == null)
<form action="/MuWire/Files" method="post"> <form action="/MuWire/Files" method="post">
<input type="text" name="file"> <input type="text" name="file">
<input type="hidden" name="action" value="share"> <input type="hidden" name="action" value="share">
<% if (viewAs.equals("table")) { %>
<input type="hidden" name="viewAs" value="table">
<% } %>
<input type="submit" value="<%=Util._t("Share")%>"> <input type="submit" value="<%=Util._t("Share")%>">
</form> </form>
<% if (viewAs.equals("tree")) { %> <% if (viewAs.equals("tree")) { %>

View File

@ -4,7 +4,7 @@
<% <%
String pagetitle="Trust Lists"; String pagetitle=Util._t("Trust Lists");
%> %>
@ -15,7 +15,7 @@ String pagetitle="Trust Lists";
<script src="js/trustLists.js?<%=version%>" type="text/javascript"></script> <script src="js/trustLists.js?<%=version%>" type="text/javascript"></script>
</head> </head>
<body onload="initConnectionsCount(); initTrustLists();"> <body onload="initTranslate(jsTranslations); initConnectionsCount(); initTrustLists();">
<%@ include file="header.jsi"%> <%@ include file="header.jsi"%>
<aside> <aside>
<%@include file="sidebar.jsi"%> <%@include file="sidebar.jsi"%>

View File

@ -4,7 +4,7 @@
<% <%
String pagetitle="Trust Users"; String pagetitle=Util._t("Trust Users");
%> %>
@ -15,7 +15,7 @@ String pagetitle="Trust Users";
<script src="js/trustUsers.js?<%=version%>" type="text/javascript"></script> <script src="js/trustUsers.js?<%=version%>" type="text/javascript"></script>
</head> </head>
<body onload="initConnectionsCount(); initTrustUsers();"> <body onload="initTranslate(jsTranslations); initConnectionsCount(); initTrustUsers();">
<%@ include file="header.jsi"%> <%@ include file="header.jsi"%>
<aside> <aside>
<%@include file="sidebar.jsi"%> <%@include file="sidebar.jsi"%>

View File

@ -3,3 +3,7 @@
<link href="muwire.css?${version}" rel="stylesheet" type="text/css"> <link href="muwire.css?${version}" rel="stylesheet" type="text/css">
<link rel="icon" type="image/png" href="images/muwire.png" /> <link rel="icon" type="image/png" href="images/muwire.png" />
<script src="js/conncount.js?${version}" type="text/javascript"></script> <script src="js/conncount.js?${version}" type="text/javascript"></script>
<script src="js/translate.js?${version}" type="text/javascript"></script>
<script type="text/javascript">
var jsTranslations = '<%=Util.getJSTranslations()%>';
</script>

View File

@ -12,3 +12,6 @@
<%=pagetitle%> <%=pagetitle%>
</div> </div>
</header> </header>
<noscript>
<center><b><%=Util._t("MuWire requires JavaScript. Please enable JavaScript in your browser.")%></b></center>
</noscript>