diff --git a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
index 1fb6d0064e..f538da98c0 100644
--- a/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
+++ b/apps/i2psnark/java/src/org/klomp/snark/web/I2PSnarkServlet.java
@@ -1245,10 +1245,10 @@ public class I2PSnarkServlet extends BasicServlet {
String statusString;
if (snark.isChecking()) {
statusString = "
" +
- "
" + _("Checking");
+ " | " + _("Checking");
} else if (snark.isAllocating()) {
statusString = " | " +
- "" + _("Allocating");
+ " | " + _("Allocating");
} else if (err != null && curPeers == 0) {
// Also don't show if seeding... but then we won't see the not-registered error
// && remaining != 0 && needed != 0) {
@@ -1262,18 +1262,18 @@ public class I2PSnarkServlet extends BasicServlet {
//else if (isRunning)
if (isRunning)
statusString = " | " +
- "" + _("Tracker Error") +
+ " | " + _("Tracker Error") +
": " + curPeers + thinsp(noThinsp) +
ngettext("1 peer", "{0} peers", knownPeers);
else {
if (err.length() > MAX_DISPLAYED_ERROR_LENGTH)
err = err.substring(0, MAX_DISPLAYED_ERROR_LENGTH) + "…";
statusString = " | " +
- "" + _("Tracker Error");
+ " | " + _("Tracker Error");
}
} else if (snark.isStarting()) {
statusString = " | " +
- "" + _("Starting");
+ " | " + _("Starting");
} else if (remaining == 0 || needed == 0) { // < 0 means no meta size yet
// partial complete or seeding
if (isRunning) {
@@ -1289,60 +1289,60 @@ public class I2PSnarkServlet extends BasicServlet {
}
if (curPeers > 0 && !showPeers)
statusString = " | " +
- "" + txt +
+ " | " + txt +
": " +
curPeers + thinsp(noThinsp) +
ngettext("1 peer", "{0} peers", knownPeers) + "";
else
statusString = " | " +
- "" + txt +
+ " | " + txt +
": " + curPeers + thinsp(noThinsp) +
ngettext("1 peer", "{0} peers", knownPeers);
} else {
statusString = " | " +
- "" + _("Complete");
+ " | " + _("Complete");
}
} else {
if (isRunning && curPeers > 0 && downBps > 0 && !showPeers)
statusString = " | " +
- "" + _("OK") +
+ " | " + _("OK") +
": " +
curPeers + thinsp(noThinsp) +
ngettext("1 peer", "{0} peers", knownPeers) + "";
else if (isRunning && curPeers > 0 && downBps > 0)
statusString = " | " +
- "" + _("OK") +
+ " | " + _("OK") +
": " + curPeers + thinsp(noThinsp) +
ngettext("1 peer", "{0} peers", knownPeers);
else if (isRunning && curPeers > 0 && !showPeers)
statusString = " | " +
- "" + _("Stalled") +
+ " | " + _("Stalled") +
": " +
curPeers + thinsp(noThinsp) +
ngettext("1 peer", "{0} peers", knownPeers) + "";
else if (isRunning && curPeers > 0)
statusString = " | " +
- "" + _("Stalled") +
+ " | " + _("Stalled") +
": " + curPeers + thinsp(noThinsp) +
ngettext("1 peer", "{0} peers", knownPeers);
else if (isRunning && knownPeers > 0)
statusString = " | " +
- "" + _("No Peers") +
+ " | " + _("No Peers") +
": 0" + thinsp(noThinsp) + knownPeers ;
else if (isRunning)
statusString = " | " +
- "" + _("No Peers");
+ " | " + _("No Peers");
else
statusString = " | " +
- "" + _("Stopped");
+ " | " + _("Stopped");
}
out.write(" | ");
- out.write("| ");
+ out.write(" | ");
out.write(statusString + " | \n\t");
// (i) icon column
- out.write("");
+ out.write(" | ");
if (isValid && meta.getAnnounce() != null) {
// Link to local details page - note that trailing slash on a single-file torrent
// gets us to the details page instead of the file.
@@ -1361,7 +1361,7 @@ public class I2PSnarkServlet extends BasicServlet {
String encodedBaseName = urlEncode(snark.getBaseName());
// File type icon column
- out.write(" | \n");
+ out.write(" | \n");
if (isValid) {
// Link to local details page - note that trailing slash on a single-file torrent
// gets us to the details page instead of the file.
@@ -1388,7 +1388,7 @@ public class I2PSnarkServlet extends BasicServlet {
}
// Torrent name column
- out.write(" | ");
+ out.write(" | ");
if (remaining == 0 || isMultiFile) {
StringBuilder buf = new StringBuilder(128);
buf.append("");
- out.write(" | ");
+ out.write(" | ");
if(isRunning && remainingSeconds > 0 && !snark.isChecking())
out.write(DataHelper.formatDuration2(Math.max(remainingSeconds, 10) * 1000)); // (eta 6h)
out.write(" | \n\t");
- out.write("");
+ out.write(" | ");
if (remaining > 0)
out.write(formatSize(total-remaining) + thinsp(noThinsp) + formatSize(total));
else if (remaining == 0)
@@ -1418,7 +1418,7 @@ public class I2PSnarkServlet extends BasicServlet {
//else
// out.write("??"); // no meta size yet
out.write(" | \n\t");
- out.write("");
+ out.write(" | ");
if(isRunning && isValid)
out.write(formatSize(uploaded));
out.write(" | \n\t");
@@ -1430,7 +1430,7 @@ public class I2PSnarkServlet extends BasicServlet {
if(isRunning && isValid)
out.write(formatSize(upBps) + "ps");
out.write("\n\t");
- out.write("");
+ out.write(" | ");
String b64 = Base64.encode(snark.getInfoHash());
if (snark.isChecking()) {
// show no buttons
@@ -1511,7 +1511,7 @@ public class I2PSnarkServlet extends BasicServlet {
if (!peer.isConnected())
continue;
out.write(" |
| ");
- out.write("");
+ out.write(" | ");
String ch = peer.toString().substring(0, 4);
String client;
if ("AwMD".equals(ch))
@@ -1536,9 +1536,9 @@ public class I2PSnarkServlet extends BasicServlet {
if (showDebug)
out.write(" inactive " + (peer.getInactiveTime() / 1000) + "s");
out.write(" | \n\t");
- out.write("");
+ out.write(" | ");
out.write(" | \n\t");
- out.write("");
+ out.write(" | ");
float pct;
if (isValid) {
pct = (float) (100.0 * peer.completed() / meta.getPieces());
@@ -1556,9 +1556,9 @@ public class I2PSnarkServlet extends BasicServlet {
//out.write("??");
}
out.write(" | \n\t");
- out.write("");
+ out.write(" | ");
out.write(" | \n\t");
- out.write("");
+ out.write(" | ");
if (needed > 0) {
if (peer.isInteresting() && !peer.isChoked()) {
out.write("");
@@ -1580,7 +1580,7 @@ public class I2PSnarkServlet extends BasicServlet {
//}
}
out.write(" | \n\t");
- out.write("");
+ out.write(" | ");
if (isValid && pct < 100.0) {
if (peer.isInterested() && !peer.isChoking()) {
out.write("");
@@ -1596,10 +1596,10 @@ public class I2PSnarkServlet extends BasicServlet {
}
}
out.write(" | \n\t");
- out.write("");
+ out.write(" | ");
out.write(" |
\n\t");
if (showDebug)
- out.write(" | " + peer.getSocket() + " |
");
+ out.write(" | " + peer.getSocket() + " |
");
}
}
}
@@ -2553,8 +2553,7 @@ public class I2PSnarkServlet extends BasicServlet {
path=addPaths(path,"/");
String icon = toIcon(item);
- buf.append("");
+ buf.append(" | ");
if (complete) {
buf.append("");
// thumbnail ?
@@ -2569,17 +2568,16 @@ public class I2PSnarkServlet extends BasicServlet {
} else {
buf.append(toImg(icon));
}
- buf.append(" | ");
+ buf.append(" | ");
if (complete)
buf.append("");
buf.append(item.getName());
if (complete)
buf.append("");
- buf.append(" | ");
+ buf.append(" | ");
if (!item.isDirectory())
buf.append(DataHelper.formatSize2(length)).append('B');
- buf.append(" | ");
+ buf.append(" | ");
//buf.append(dfmt.format(new Date(item.lastModified())));
buf.append(status);
buf.append(" | ");
diff --git a/installer/resources/themes/snark/ubergine/snark.css b/installer/resources/themes/snark/ubergine/snark.css
index 2992488ad8..4a57291f5e 100644
--- a/installer/resources/themes/snark/ubergine/snark.css
+++ b/installer/resources/themes/snark/ubergine/snark.css
@@ -353,10 +353,15 @@ td:first-child {
border-left: 0 !important;
border-right: 0 !important;
}
+
.snarkTorrentOdd td, .snarkTorrentEven td {
border-top: 1px dotted #313 !important;
}
+table.snarkTorrents tbody tr:hover, table.snarkDirInfo tbody tr:hover {
+ background: #382010 !important;
+}
+
.snarkFileIcon {
width: 16px;
}