browse links from search results
This commit is contained in:
@@ -46,6 +46,14 @@ public class BrowseManager {
|
||||
core.getEventBus().publish(event);
|
||||
}
|
||||
|
||||
boolean isBrowsing(Persona p) {
|
||||
Browse browse = browses.get(p);
|
||||
if (browse == null)
|
||||
return false;
|
||||
return browse.status == BrowseStatus.CONNECTING ||
|
||||
browse.status == BrowseStatus.FETCHING;
|
||||
}
|
||||
|
||||
Map<Persona, Browse> getBrowses(){
|
||||
return browses;
|
||||
}
|
||||
|
||||
@@ -116,7 +116,6 @@ public class BrowseServlet extends HttpServlet {
|
||||
return;
|
||||
}
|
||||
browseManager.browse(host);
|
||||
resp.sendRedirect("/MuWire/BrowseHost.jsp");
|
||||
} else if (action.equals("download")) {
|
||||
if (core == null) {
|
||||
resp.sendError(403, "Not initialized");
|
||||
|
||||
@@ -22,6 +22,7 @@ public class SearchServlet extends HttpServlet {
|
||||
private SearchManager searchManager;
|
||||
private ConnectionCounter connectionCounter;
|
||||
private DownloadManager downloadManager;
|
||||
private BrowseManager browseManager;
|
||||
|
||||
@Override
|
||||
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
|
||||
@@ -64,6 +65,7 @@ public class SearchServlet extends HttpServlet {
|
||||
sb.append("</Sender>");
|
||||
sb.append("<SenderB64>").append(sender.toBase64()).append("</SenderB64>");
|
||||
sb.append("<Browse>").append(resultsFromSender.iterator().next().getBrowse()).append("</Browse>");
|
||||
sb.append("<Browsing>").append(browseManager.isBrowsing(sender)).append("</Browsing>");
|
||||
resultsFromSender.forEach(result -> {
|
||||
sb.append("<Result>");
|
||||
sb.append("<Name>");
|
||||
@@ -114,6 +116,7 @@ public class SearchServlet extends HttpServlet {
|
||||
sb.append("<Sender>").append(Util.escapeHTMLinXML(result.getSender().getHumanReadableName())).append("</Sender>");
|
||||
sb.append("<SenderB64>").append(result.getSender().toBase64()).append("</SenderB64>");
|
||||
sb.append("<Browse>").append(result.getBrowse()).append("</Browse>");
|
||||
sb.append("<Browsing>").append(browseManager.isBrowsing(result.getSender())).append("</Browsing>");
|
||||
if (result.getComment() != null) {
|
||||
sb.append("<Comment>")
|
||||
.append(Util.escapeHTMLinXML(result.getComment()))
|
||||
@@ -156,6 +159,7 @@ public class SearchServlet extends HttpServlet {
|
||||
searchManager = (SearchManager) config.getServletContext().getAttribute("searchManager");
|
||||
connectionCounter = (ConnectionCounter) config.getServletContext().getAttribute("connectionCounter");
|
||||
downloadManager = (DownloadManager) config.getServletContext().getAttribute("downloadManager");
|
||||
browseManager = (BrowseManager) config.getServletContext().getAttribute("browseManager");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -35,6 +35,7 @@ class ResultsBySender {
|
||||
this.sender = xmlNode.getElementsByTagName("Sender")[0].childNodes[0].nodeValue;
|
||||
this.senderB64 = xmlNode.getElementsByTagName("SenderB64")[0].childNodes[0].nodeValue;
|
||||
this.browse = xmlNode.getElementsByTagName("Browse")[0].childNodes[0].nodeValue;
|
||||
this.browsing = xmlNode.getElementsByTagName("Browsing")[0].childNodes[0].nodeValue;
|
||||
this.results = new Map();
|
||||
var resultNodes = xmlNode.getElementsByTagName("Result");
|
||||
var i;
|
||||
@@ -79,6 +80,7 @@ class ResultByFile {
|
||||
this.sender = xmlNode.getElementsByTagName("Sender")[0].childNodes[0].nodeValue;
|
||||
this.senderB64 = xmlNode.getElementsByTagName("SenderB64")[0].childNodes[0].nodeValue;
|
||||
this.browse = xmlNode.getElementsByTagName("Browse")[0].childNodes[0].nodeValue;
|
||||
this.browsing = xmlNode.getElementsByTagName("Browsing")[0].childNodes[0].nodeValue;
|
||||
this.comment = null;
|
||||
var comment = xmlNode.getElementsByTagName("Comment")
|
||||
if (comment.length == 1)
|
||||
@@ -218,7 +220,13 @@ function updateFile(fileInfoHash) {
|
||||
}
|
||||
}
|
||||
table += "</td>";
|
||||
table += "<td>" + result.browse + "</td>"
|
||||
if (result.browse == "true") {
|
||||
if (result.browsing == "true")
|
||||
table += "<td>Browsing</td>"
|
||||
else {
|
||||
table += "<td><span id='browse-link-" + result.senderB64 + "'>" + getBrowseLink(result.senderB64) + "</span></td>"
|
||||
}
|
||||
}
|
||||
table += "</tr>";
|
||||
}
|
||||
table += "</tbody></table>";
|
||||
@@ -239,10 +247,12 @@ function updateUUIDBySender(resultUUID) {
|
||||
table += "<tr><td><a href='#' onclick='updateSender(\""+senderName+"\");return false;'>"
|
||||
table += senderName;
|
||||
table += "</a></td>";
|
||||
if (senderBatch.browse)
|
||||
table += "<td>true</td>"
|
||||
else
|
||||
table += "<td>false</td>"
|
||||
if (senderBatch.browse == "true") {
|
||||
if (senderBatch.browsing == "true")
|
||||
table += "<td>Browsing</td>"
|
||||
else
|
||||
table += "<td><span id='browse-link-" + senderBatch.senderB64 + "'>" + getBrowseLink(senderBatch.senderB64) + "</span></td>"
|
||||
}
|
||||
table += "</tr>";
|
||||
}
|
||||
table += "</tbody></table>";
|
||||
@@ -376,6 +386,23 @@ function refreshGroupByFile() {
|
||||
xmlhttp.send();
|
||||
}
|
||||
|
||||
function getBrowseLink(host) {
|
||||
return "<a href='#' onclick='window.browse(\"" + host + "\"); return false;'>Browse</a>"
|
||||
}
|
||||
|
||||
function browse(host) {
|
||||
var xmlhttp = new XMLHttpRequest()
|
||||
xmlhttp.onreadystatechange = function() {
|
||||
if (this.readyState == 4 && this.status == 200) {
|
||||
var linkSpan = document.getElementById("browse-link-"+host)
|
||||
linkSpan.innerHTML = "Browsing"
|
||||
}
|
||||
}
|
||||
xmlhttp.open("POST", "/MuWire/Browse", true)
|
||||
xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
|
||||
xmlhttp.send("action=browse&host="+host)
|
||||
}
|
||||
|
||||
function initGroupBySender() {
|
||||
setInterval(refreshGroupBySender, 3000);
|
||||
setTimeout(refreshGroupBySender, 1);
|
||||
@@ -384,4 +411,4 @@ function initGroupBySender() {
|
||||
function initGroupByFile() {
|
||||
setInterval(refreshGroupByFile, 3000);
|
||||
setTimeout(refreshGroupByFile, 1);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user