i2psnark:

- Reorder .snarkCommentInfo sections so my rating / average rating is located
  directly above posted comments/ratings in .snarkComments
  - Allows us to visually join the two tables and provide comment/rating
    continuity

- If author name for comments is configured, display it in .snarkCommentInfo
  table header

- Full status tooltips for status icons in .snarkTorrents
  - This ensures we still retain full info in mini-mode in light/midnight themes
    in addition to providing more descriptive text (for new users)

- Rework td/th classes for .snarkTorrents so each column (both th + td) now
  belongs to a given class
  - Removes the need to overuse nth-child qualifiers to target columns
  - Allows easier column-alignment/spacing/widths

- Stop .snarkTorrentStatus class being incorrectly applied to .peerinfo columns

- Spans for DHT peers / Dest in #totals
  - Ensures they don't break on narrower screens in Russian etc.

- Span for .snarkTorrentInfo info hash
  - So we can highlight and select with a single click

- Delete icon for delete comments td

- Overhaul .snarkTorrents column widths
  - Provides more predictable scaling experience, tidier layout

- CSS tidyups; deduplicate .snarkTorrents classes and move to their own
  commented section
This commit is contained in:
str4d
2017-06-03 14:03:56 +00:00
parent a9bf1e2969
commit 4da95af45a
8 changed files with 2441 additions and 2171 deletions

View File

@ -452,7 +452,7 @@ public class I2PSnarkServlet extends BasicServlet {
String currentSort = req.getParameter("sort"); String currentSort = req.getParameter("sort");
boolean showSort = total > 1; boolean showSort = total > 1;
out.write("<tr><th>"); out.write("<tr><th class=\"snarkGraphicStatus\">");
String sort = ("2".equals(currentSort)) ? "-2" : "2"; String sort = ("2".equals(currentSort)) ? "-2" : "2";
if (showSort) { if (showSort) {
out.write("<a href=\"" + _contextPath + '/' + getQueryString(req, null, null, sort)); out.write("<a href=\"" + _contextPath + '/' + getQueryString(req, null, null, sort));
@ -464,7 +464,7 @@ public class I2PSnarkServlet extends BasicServlet {
: tx)); : tx));
if (showSort) if (showSort)
out.write("</a>"); out.write("</a>");
out.write("</th>\n<th>"); out.write("</th>\n<th class=\"snarkTorrentStatus\">");
if (_manager.util().connected() && !snarks.isEmpty()) { if (_manager.util().connected() && !snarks.isEmpty()) {
out.write(" <a href=\"" + _contextPath + '/'); out.write(" <a href=\"" + _contextPath + '/');
if (peerParam != null) { if (peerParam != null) {
@ -480,7 +480,7 @@ public class I2PSnarkServlet extends BasicServlet {
tx = _t("Show Peers"); tx = _t("Show Peers");
out.write(toThemeImg("showpeers", tx, tx)); out.write(toThemeImg("showpeers", tx, tx));
} }
out.write("</a><br>\n"); out.write("</a>\n");
} }
out.write("</th>\n<th colspan=\"2\" align=\"left\">"); out.write("</th>\n<th colspan=\"2\" align=\"left\">");
// cycle through sort by name or type // cycle through sort by name or type
@ -510,7 +510,7 @@ public class I2PSnarkServlet extends BasicServlet {
if (total > 0 && (start > 0 || total > pageSize)) { if (total > 0 && (start > 0 || total > pageSize)) {
writePageNav(out, req, start, pageSize, total, noThinsp); writePageNav(out, req, start, pageSize, total, noThinsp);
} }
out.write("</th>\n<th align=\"right\">"); out.write("</th>\n<th class=\"snarkTorrentETA\" align=\"right\">");
if (_manager.util().connected() && !snarks.isEmpty()) { if (_manager.util().connected() && !snarks.isEmpty()) {
if (showSort) { if (showSort) {
sort = ("4".equals(currentSort)) ? "-4" : "4"; sort = ("4".equals(currentSort)) ? "-4" : "4";
@ -525,7 +525,7 @@ public class I2PSnarkServlet extends BasicServlet {
if (showSort) if (showSort)
out.write("</a>"); out.write("</a>");
} }
out.write("</th>\n<th align=\"right\">"); out.write("</th>\n<th class=\"snarkTorrentDownloaded\" align=\"right\">");
// cycle through sort by size or downloaded // cycle through sort by size or downloaded
boolean isDlSort = false; boolean isDlSort = false;
if (showSort) { if (showSort) {
@ -550,7 +550,7 @@ public class I2PSnarkServlet extends BasicServlet {
: _t("Downloaded"))); : _t("Downloaded")));
if (showSort) if (showSort)
out.write("</a>"); out.write("</a>");
out.write("</th>\n<th align=\"right\">"); out.write("</th>\n<th class=\"snarkTorrentUploaded\" align=\"right\">");
boolean isRatSort = false; boolean isRatSort = false;
if (!snarks.isEmpty()) { if (!snarks.isEmpty()) {
// cycle through sort by uploaded or ratio // cycle through sort by uploaded or ratio
@ -582,7 +582,7 @@ public class I2PSnarkServlet extends BasicServlet {
if (showSort) if (showSort)
out.write("</a>"); out.write("</a>");
} }
out.write("</th>\n<th align=\"right\">"); out.write("</th>\n<th class=\"snarkTorrentRateDown\" align=\"right\">");
if (_manager.util().connected() && !snarks.isEmpty()) { if (_manager.util().connected() && !snarks.isEmpty()) {
if (showSort) { if (showSort) {
sort = ("8".equals(currentSort)) ? "-8" : "8"; sort = ("8".equals(currentSort)) ? "-8" : "8";
@ -597,7 +597,7 @@ public class I2PSnarkServlet extends BasicServlet {
if (showSort) if (showSort)
out.write("</a>"); out.write("</a>");
} }
out.write("</th>\n<th align=\"right\">"); out.write("</th>\n<th class=\"snarkTorrentRateUp\" align=\"right\">");
if (_manager.util().connected() && !snarks.isEmpty()) { if (_manager.util().connected() && !snarks.isEmpty()) {
if (showSort) { if (showSort) {
sort = ("9".equals(currentSort)) ? "-9" : "9"; sort = ("9".equals(currentSort)) ? "-9" : "9";
@ -612,7 +612,7 @@ public class I2PSnarkServlet extends BasicServlet {
if (showSort) if (showSort)
out.write("</a>"); out.write("</a>");
} }
out.write("</th>\n<th align=\"center\">"); out.write("</th>\n<th class=\"snarkTorrentAction\" align=\"center\">");
if (_manager.isStopping()) { if (_manager.isStopping()) {
out.write("&nbsp;"); out.write("&nbsp;");
@ -674,13 +674,12 @@ public class I2PSnarkServlet extends BasicServlet {
if (total == 0) { if (total == 0) {
out.write("<tr class=\"snarkTorrentNoneLoaded\">" + out.write("<tr class=\"snarkTorrentNoneLoaded\">" +
"<td class=\"snarkTorrentNoneLoaded\"" + "<td colspan=\"11\"><i>");
" colspan=\"11\"><i>");
out.write(_t("No torrents loaded.")); out.write(_t("No torrents loaded."));
out.write("</i></td></tr>\n"); out.write("</i></td></tr>\n");
} else /** if (snarks.size() > 1) */ { } else /** if (snarks.size() > 1) */ {
out.write("<tfoot><tr>\n" + out.write("<tfoot><tr>\n" +
" <th align=\"left\" colspan=\"6\">"); " <th id=\"snarkTorrentTotals\" align=\"left\" colspan=\"6\">");
out.write("<span id=\"totals\">"); out.write("<span id=\"totals\">");
out.write(_t("Totals")); out.write(_t("Totals"));
out.write(":&nbsp;"); out.write(":&nbsp;");
@ -695,32 +694,34 @@ public class I2PSnarkServlet extends BasicServlet {
if (dht != null) { if (dht != null) {
int dhts = dht.size(); int dhts = dht.size();
if (dhts > 0) { if (dhts > 0) {
out.write(", "); out.write(", <span>");
out.write(ngettext("1 DHT peer", "{0} DHT peers", dhts)); out.write(ngettext("1 DHT peer", "{0} DHT peers", dhts));
out.write("</span>");
} }
} }
String IPString = _manager.util().getOurIPString(); String IPString = _manager.util().getOurIPString();
if(!IPString.equals("unknown")) { if(!IPString.equals("unknown")) {
// Only truncate if it's an actual dest // Only truncate if it's an actual dest
out.write(";&nbsp;"); out.write(";&nbsp;<span id=\"ourDest\">");
out.write(_t("Dest")); out.write(_t("Dest"));
out.write(":&nbsp;<tt title=\""); out.write(":&nbsp;<tt title=\"");
out.write(_t("Our destination (identity) for this session")); out.write(_t("Our destination (identity) for this session"));
out.write("\">"); out.write("\">");
out.write(IPString.substring(0, 4)); out.write(IPString.substring(0, 4));
out.write("</tt>"); out.write("</tt></span>");
} }
out.write("</span>"); out.write("</span>");
out.write("</th>\n"); out.write("</th>\n");
if (_manager.util().connected() && total > 0) { if (_manager.util().connected() && total > 0) {
out.write(" <th align=\"right\">" + formatSize(stats[0]) + "</th>\n" + out.write(" <th class=\"snarkTorrentDownloaded\" align=\"right\">" + formatSize(stats[0]) + "</th>\n" +
" <th align=\"right\">" + formatSize(stats[1]) + "</th>\n" + " <th class=\"snarkTorrentUploaded\" align=\"right\">" + formatSize(stats[1]) + "</th>\n" +
" <th align=\"right\">" + formatSize(stats[2]) + "ps</th>\n" + " <th class=\"snarkTorrentRateDown\" align=\"right\">" + formatSize(stats[2]) + "ps</th>\n" +
" <th align=\"right\">" + formatSize(stats[3]) + "ps</th>\n" + " <th class=\"snarkTorrentRateUp\" align=\"right\">" + formatSize(stats[3]) + "ps</th>\n" +
" <th></th>"); " <th class=\"snarkTorrentAction\"></th>");
} else { } else {
out.write("<th colspan=\"5\"></th>"); out.write("<th colspan=\"5\"></th>");
} }
// TODO javascript handler to remember checkbox status for debug panel visibility (otherwise resets with ajax/meta refresh)
if (dht != null) { if (dht != null) {
if (showDebug) { if (showDebug) {
out.write("</tr>\n<tr class=\"dhtDebug\">"); out.write("</tr>\n<tr class=\"dhtDebug\">");
@ -1582,11 +1583,14 @@ public class I2PSnarkServlet extends BasicServlet {
String txt; String txt;
if (remaining == 0) { if (remaining == 0) {
img = "seeding"; img = "seeding";
txt = _t("Seeding"); txt = _t("Seeding to {0} of {1} peers in swarm", curPeers, knownPeers);
} else { } else {
// partial // partial
img = "complete"; img = "complete";
txt = _t("Complete"); txt = _t("Complete");
if (curPeers > 0) {
txt = txt + " (" + _t("Seeding to {0} of {1} peers in swarm", curPeers, knownPeers) + ")";
}
} }
if (curPeers > 0 && !showPeers) { if (curPeers > 0 && !showPeers) {
statusString = toThemeImg(img, "", txt) + "</td>" + statusString = toThemeImg(img, "", txt) + "</td>" +
@ -1606,29 +1610,29 @@ public class I2PSnarkServlet extends BasicServlet {
} }
} else { } else {
if (isRunning && curPeers > 0 && downBps > 0 && !showPeers) { if (isRunning && curPeers > 0 && downBps > 0 && !showPeers) {
statusString = toThemeImg("downloading", "", _t("OK")) + "</td>" + statusString = toThemeImg("downloading", "", _t("OK") + " (" + _t("Downloading from {0} of {1} peers in swarm", curPeers, knownPeers) + ")") + "</td>" +
"<td class=\"snarkTorrentStatus\"><b>" + _t("OK") + "<td class=\"snarkTorrentStatus\"><b>" + _t("OK") +
":</b> <a href=\"" + uri + getQueryString(req, b64, null, null) + '#' + b64Short + "\">" + ":</b> <a href=\"" + uri + getQueryString(req, b64, null, null) + '#' + b64Short + "\">" +
curPeers + thinsp(noThinsp) + curPeers + thinsp(noThinsp) +
ngettext("1 peer", "{0} peers", knownPeers) + "</a>"; ngettext("1 peer", "{0} peers", knownPeers) + "</a>";
} else if (isRunning && curPeers > 0 && downBps > 0) { } else if (isRunning && curPeers > 0 && downBps > 0) {
statusString = toThemeImg("downloading", "", _t("OK")) + "</td>" + statusString = toThemeImg("downloading", "", _t("OK") + " (" + _t("Downloading from {0} of {1} peers in swarm", curPeers, knownPeers) + ")") + "</td>" +
"<td class=\"snarkTorrentStatus\"><b>" + _t("OK") + "<td class=\"snarkTorrentStatus\"><b>" + _t("OK") +
":</b> " + curPeers + thinsp(noThinsp) + ":</b> " + curPeers + thinsp(noThinsp) +
ngettext("1 peer", "{0} peers", knownPeers); ngettext("1 peer", "{0} peers", knownPeers);
} else if (isRunning && curPeers > 0 && !showPeers) { } else if (isRunning && curPeers > 0 && !showPeers) {
statusString = toThemeImg("stalled", "", _t("Stalled")) + "</td>" + statusString = toThemeImg("stalled", "", _t("Stalled") + " (" + _t("Connected to {0} of {1} peers in swarm", curPeers, knownPeers) + ")") + "</td>" +
"<td class=\"snarkTorrentStatus\"><b>" + _t("Stalled") + "<td class=\"snarkTorrentStatus\"><b>" + _t("Stalled") +
":</b> <a href=\"" + uri + getQueryString(req, b64, null, null) + '#' + b64Short + "\">" + ":</b> <a href=\"" + uri + getQueryString(req, b64, null, null) + '#' + b64Short + "\">" +
curPeers + thinsp(noThinsp) + curPeers + thinsp(noThinsp) +
ngettext("1 peer", "{0} peers", knownPeers) + "</a>"; ngettext("1 peer", "{0} peers", knownPeers) + "</a>";
} else if (isRunning && curPeers > 0) { } else if (isRunning && curPeers > 0) {
statusString = toThemeImg("stalled", "", _t("Stalled")) + "</td>" + statusString = toThemeImg("stalled", "", _t("Stalled") + " (" + _t("Connected to {0} of {1} peers in swarm", curPeers, knownPeers) + ")") + "</td>" +
"<td class=\"snarkTorrentStatus\"><b>" + _t("Stalled") + "<td class=\"snarkTorrentStatus\"><b>" + _t("Stalled") +
":</b> " + curPeers + thinsp(noThinsp) + ":</b> " + curPeers + thinsp(noThinsp) +
ngettext("1 peer", "{0} peers", knownPeers); ngettext("1 peer", "{0} peers", knownPeers);
} else if (isRunning && knownPeers > 0) { } else if (isRunning && knownPeers > 0) {
statusString = toThemeImg("nopeers", "", _t("No Peers")) + "</td>" + statusString = toThemeImg("nopeers", "", _t("No Peers") + " (" + _t("Connected to {0} of {1} peers in swarm", curPeers, knownPeers) + ")") + "</td>" +
"<td class=\"snarkTorrentStatus\"><b>" + _t("No Peers") + "<td class=\"snarkTorrentStatus\"><b>" + _t("No Peers") +
":</b> 0" + thinsp(noThinsp) + knownPeers ; ":</b> 0" + thinsp(noThinsp) + knownPeers ;
} else if (isRunning) { } else if (isRunning) {
@ -1641,11 +1645,11 @@ public class I2PSnarkServlet extends BasicServlet {
} }
out.write("<tr class=\"" + rowClass + "\" id=\"" + b64Short + "\">"); out.write("<tr class=\"" + rowClass + "\" id=\"" + b64Short + "\">");
out.write("<td class=\"center\">"); out.write("<td class=\"snarkGraphicStatus\" align=\"center\">");
out.write(statusString + "</td>\n\t"); out.write(statusString + "</td>\n\t");
// (i) icon column // (i) icon column
out.write("<td>"); out.write("<td class=\"snarkTrackerDetails\">");
if (isValid) { if (isValid) {
String announce = meta.getAnnounce(); String announce = meta.getAnnounce();
if (announce == null) if (announce == null)
@ -1660,7 +1664,7 @@ public class I2PSnarkServlet extends BasicServlet {
String encodedBaseName = encodePath(fullBasename); String encodedBaseName = encodePath(fullBasename);
// File type icon column // File type icon column
out.write("</td>\n<td>"); out.write("</td>\n<td class=\"snarkTorrentDetails\">");
if (isValid) { if (isValid) {
// Link to local details page - note that trailing slash on a single-file torrent // Link to local details page - note that trailing slash on a single-file torrent
// gets us to the details page instead of the file. // gets us to the details page instead of the file.
@ -1845,7 +1849,7 @@ public class I2PSnarkServlet extends BasicServlet {
for (Peer peer : peers) { for (Peer peer : peers) {
if (!peer.isConnected()) if (!peer.isConnected())
continue; continue;
out.write("<tr class=\"peerinfo " + rowClass + "\"><td title=\""); out.write("<tr class=\"peerinfo " + rowClass + "\"><td class=\"snarkGraphicStatus\" title=\"");
out.write(_t("Peer attached to swarm")); out.write(_t("Peer attached to swarm"));
out.write("\"></td><td colspan=\"4\">"); out.write("\"></td><td colspan=\"4\">");
PeerID pid = peer.getPeerID(); PeerID pid = peer.getPeerID();
@ -1877,9 +1881,9 @@ public class I2PSnarkServlet extends BasicServlet {
if (showDebug) if (showDebug)
out.write(" inactive " + (peer.getInactiveTime() / 1000) + "s"); out.write(" inactive " + (peer.getInactiveTime() / 1000) + "s");
out.write("</td>\n\t"); out.write("</td>\n\t");
out.write("<td class=\"snarkTorrentStatus\">"); out.write("<td class=\"snarkTorrentETA\">");
out.write("</td>\n\t"); out.write("</td>\n\t");
out.write("<td align=\"right\" class=\"snarkTorrentStatus\">"); out.write("<td align=\"right\" class=\"snarkTorrentDownloaded\">");
float pct; float pct;
if (isValid) { if (isValid) {
pct = (float) (100.0 * peer.completed() / meta.getPieces()); pct = (float) (100.0 * peer.completed() / meta.getPieces());
@ -1900,9 +1904,9 @@ public class I2PSnarkServlet extends BasicServlet {
//out.write("??"); //out.write("??");
} }
out.write("</td>\n\t"); out.write("</td>\n\t");
out.write("<td class=\"snarkTorrentStatus\">"); out.write("<td class=\"snarkTorrentUploaded\">");
out.write("</td>\n\t"); out.write("</td>\n\t");
out.write("<td align=\"right\" class=\"snarkTorrentStatus\">"); out.write("<td align=\"right\" class=\"snarkTorrentRateDown\">");
if (needed > 0) { if (needed > 0) {
if (peer.isInteresting() && !peer.isChoked()) { if (peer.isInteresting() && !peer.isChoked()) {
out.write("<span class=\"unchoked\">"); out.write("<span class=\"unchoked\">");
@ -1924,7 +1928,7 @@ public class I2PSnarkServlet extends BasicServlet {
//} //}
} }
out.write("</td>\n\t"); out.write("</td>\n\t");
out.write("<td align=\"right\" class=\"snarkTorrentStatus\">"); out.write("<td align=\"right\" class=\"snarkTorrentRateUp\">");
if (isValid && pct < 100.0) { if (isValid && pct < 100.0) {
if (peer.isInterested() && !peer.isChoking()) { if (peer.isInterested() && !peer.isChoking()) {
out.write("<span class=\"unchoked\">"); out.write("<span class=\"unchoked\">");
@ -1940,10 +1944,10 @@ public class I2PSnarkServlet extends BasicServlet {
} }
} }
out.write("</td>\n\t"); out.write("</td>\n\t");
out.write("<td class=\"snarkTorrentStatus\">"); out.write("<td class=\"snarkTorrentAction\">");
out.write("</td></tr>\n\t"); out.write("</td></tr>\n\t");
if (showDebug) if (showDebug)
out.write("<tr class=\"debuginfo " + rowClass + "\"><td></td><td colspan=\"10\" align=\"right\">" + peer.getSocket() + "</td></tr>"); out.write("<tr class=\"debuginfo " + rowClass + "\"><td class=\"snarkGraphicStatus\"></td><td colspan=\"10\">" + peer.getSocket() + "</td></tr>");
} }
} }
} }
@ -2448,11 +2452,8 @@ public class I2PSnarkServlet extends BasicServlet {
out.write(_t("Comment Author")); out.write(_t("Comment Author"));
out.write(":</td><td colspan=\"2\"><input type=\"text\" name=\"nofilter_commentsName\" spellcheck=\"false\" value=\"" out.write(":</td><td colspan=\"2\"><input type=\"text\" name=\"nofilter_commentsName\" spellcheck=\"false\" value=\""
+ DataHelper.escapeHTML(_manager.util().getCommentsName()) + "\" size=\"32\" maxlength=\"32\" title=\""); + DataHelper.escapeHTML(_manager.util().getCommentsName()) + "\" size=\"32\" maxlength=\"32\" title=\"");
out.write(_t("Set the author name for your comments")); out.write(_t("Set the author name for your comments and ratings"));
out.write("\" placeholder=\""); out.write("\" ></td></tr>\n");
out.write(_t("required to post comments"));
out.write("\" >" +
"</td></tr>\n");
// "<tr><td>"); // "<tr><td>");
//out.write(_t("Open tracker announce URLs")); //out.write(_t("Open tracker announce URLs"));
@ -2923,9 +2924,9 @@ public class I2PSnarkServlet extends BasicServlet {
toThemeImg(buf, "details"); toThemeImg(buf, "details");
buf.append("</td><td><b>") buf.append("</td><td><b>")
.append(_t("Info hash")) .append(_t("Info hash"))
.append(":</b> ") .append(":</b> <span id=\"infohash\">")
.append(hex.toUpperCase(Locale.US)) .append(hex.toUpperCase(Locale.US))
.append("</td></tr>\n"); .append("</span></td></tr>\n");
String announce = null; String announce = null;
MetaInfo meta = snark.getMetaInfo(); MetaInfo meta = snark.getMetaInfo();
@ -3308,7 +3309,7 @@ public class I2PSnarkServlet extends BasicServlet {
String rowClass = (rowEven ? "snarkTorrentEven" : "snarkTorrentOdd"); String rowClass = (rowEven ? "snarkTorrentEven" : "snarkTorrentOdd");
rowEven = !rowEven; rowEven = !rowEven;
buf.append("<TR class=\"").append(rowClass).append("\">"); buf.append("<tr class=\"").append(rowClass).append("\">");
// Get completeness and status string // Get completeness and status string
boolean complete = false; boolean complete = false;
@ -3358,7 +3359,7 @@ public class I2PSnarkServlet extends BasicServlet {
path = encodePath(path); path = encodePath(path);
String icon = toIcon(item); String icon = toIcon(item);
buf.append("<TD class=\"snarkFileIcon\">"); buf.append("<td class=\"snarkFileIcon\">");
if (complete) { if (complete) {
buf.append("<a href=\"").append(path).append("\">"); buf.append("<a href=\"").append(path).append("\">");
// thumbnail ? // thumbnail ?
@ -3373,19 +3374,19 @@ public class I2PSnarkServlet extends BasicServlet {
} else { } else {
buf.append(toImg(icon)); buf.append(toImg(icon));
} }
buf.append("</TD><TD class=\"snarkFileName\">"); buf.append("</td><td class=\"snarkFileName\">");
if (complete) if (complete)
buf.append("<a href=\"").append(path).append("\">"); buf.append("<a href=\"").append(path).append("\">");
buf.append(DataHelper.escapeHTML(item.getName())); buf.append(DataHelper.escapeHTML(item.getName()));
if (complete) if (complete)
buf.append("</a>"); buf.append("</a>");
buf.append("</TD><TD ALIGN=right class=\"snarkFileSize\">"); buf.append("</td><td align=right class=\"snarkFileSize\">");
if (!item.isDirectory()) if (!item.isDirectory())
buf.append(DataHelper.formatSize2(length)).append('B'); buf.append(DataHelper.formatSize2(length)).append('B');
buf.append("</TD><TD class=\"snarkFileStatus\">"); buf.append("</td><td class=\"snarkFileStatus\">");
//buf.append(dfmt.format(new Date(item.lastModified()))); //buf.append(dfmt.format(new Date(item.lastModified())));
buf.append(status); buf.append(status);
buf.append("</TD>"); buf.append("</td>");
if (showPriority) { if (showPriority) {
buf.append("<td class=\"priority\">"); buf.append("<td class=\"priority\">");
if ((!complete) && (!item.isDirectory())) { if ((!complete) && (!item.isDirectory())) {
@ -3413,7 +3414,7 @@ public class I2PSnarkServlet extends BasicServlet {
} }
buf.append("</td>"); buf.append("</td>");
} }
buf.append("</TR>\n"); buf.append("</tr>\n");
} }
if (showSaveButton) { if (showSaveButton) {
buf.append("<thead><tr id=\"setPriority\"><th class=\"headerpriority\" colspan=\"5\">" + buf.append("<thead><tr id=\"setPriority\"><th class=\"headerpriority\" colspan=\"5\">" +
@ -3449,17 +3450,23 @@ public class I2PSnarkServlet extends BasicServlet {
int myRating = 0; int myRating = 0;
CommentSet comments = snark.getComments(); CommentSet comments = snark.getComments();
buf.append("<table class=\"snarkCommentInfo\"><tr><th colspan=\"3\">") buf.append("<div id=\"snarkCommentSection\"><table class=\"snarkCommentInfo\">\n<tr><th colspan=\"3\">")
.append(_t("Ratings and Comments")); .append(_t("Ratings and Comments"));
if (esc && _manager.util().getCommentsName().length() == 0) { if (esc && _manager.util().getCommentsName().length() == 0) {
buf.append("&nbsp;&nbsp;&nbsp;<span id=\"nameRequired\">"); buf.append("&nbsp;&nbsp;&nbsp;<span id=\"nameRequired\">");
buf.append(_t("Author name required to post comments")); buf.append(_t("Author name required to rate or comment"));
buf.append("&nbsp;&nbsp;<a href=\"").append(_contextPath).append("/configure#configureAuthor\">"); buf.append("&nbsp;&nbsp;<a href=\"").append(_contextPath).append("/configure#configureAuthor\">");
buf.append(_t("[Configure]")); buf.append(_t("[Configure]"));
buf.append("</a></span>"); buf.append("</a></span>");
} else {
buf.append("&nbsp;&nbsp;&nbsp;<span id=\"nameRequired\"><span class=\"commentAuthorName\" title=\"")
.append(_t("Your author name for published comments and ratings"))
.append("\">");
buf.append(DataHelper.escapeHTML(_manager.util().getCommentsName()));
buf.append("</span></span>");
} }
buf.append("</th><tr id=\"commentsConfig\"><td>"); buf.append("</th></tr>\n<tr id=\"commentsConfig\"><td>");
buf.append(_t("Comments")); buf.append(_t("Comments"));
buf.append(":</td><td><label><input type=\"checkbox\" class=\"optbox\" name=\"enableComments\" id=\"enableComments\" "); buf.append(":</td><td><label><input type=\"checkbox\" class=\"optbox\" name=\"enableComments\" id=\"enableComments\" ");
if (esc) if (esc)
@ -3472,9 +3479,42 @@ public class I2PSnarkServlet extends BasicServlet {
if (ec) { if (ec) {
buf.append("<input type=\"submit\" name=\"setCommentsEnabled\" value=\""); buf.append("<input type=\"submit\" name=\"setCommentsEnabled\" value=\"");
buf.append(_t("Save Preference")); buf.append(_t("Save Preference"));
buf.append("\" class=\"accept\">\n"); buf.append("\" class=\"accept\">");
} }
buf.append("</td></tr>"); buf.append("</td></tr>\n");
// new rating / comment form
buf.append("<tr id=\"newRating\">\n");
if (er) {
buf.append("<td>\n<select name=\"myRating\">\n");
for (int i = 5; i >= 0; i--) {
buf.append("<option value=\"").append(i).append("\" ");
if (i == myRating)
buf.append("selected=\"selected\"");
buf.append('>');
if (i != 0) {
buf.append("").append(ngettext("1 star", "{0} stars", i));
} else {
buf.append("").append(_t("No rating"));
}
buf.append("</option>\n");
}
buf.append("</select>\n</td>");
}
if (esc) {
buf.append("<td id=\"addCommentText\"><textarea name=\"nofilter_newComment\" cols=\"44\" rows=\"4\"></textarea></td>");
} else {
buf.append("<td></td>");
}
buf.append("<td class=\"commentAction\"><input type=\"submit\" name=\"addComment\" value=\"");
if (er && esc)
buf.append(_t("Rate and Comment"));
else if (er)
buf.append(_t("Rate Torrent"));
else
buf.append(_t("Add Comment"));
buf.append("\" class=\"accept\"></td>\n");
buf.append("</tr>\n");
if (comments != null) { if (comments != null) {
synchronized(comments) { synchronized(comments) {
@ -3501,7 +3541,7 @@ public class I2PSnarkServlet extends BasicServlet {
} else { } else {
buf.append(_t("Average Rating")).append(":</td><td colspan=\"2\">"); buf.append(_t("Average Rating")).append(":</td><td colspan=\"2\">");
buf.append(_t("No community ratings currently available for this torrent")); buf.append(_t("No community ratings currently available"));
} }
buf.append("</td></tr>"); buf.append("</td></tr>");
} }
@ -3513,38 +3553,7 @@ public class I2PSnarkServlet extends BasicServlet {
} }
} }
// new rating / comment form buf.append("</table>");
buf.append("<tr id=\"newRating\"><td>");
if (er) {
buf.append("<select name=\"myRating\">");
for (int i = 5; i >= 0; i--) {
buf.append("<option value=\"").append(i).append("\" ");
if (i == myRating)
buf.append("selected=\"selected\"");
buf.append('>');
if (i != 0) {
buf.append("").append(ngettext("{0} star", "{0} stars", i));
} else {
buf.append("").append(_t("No rating"));
}
buf.append("</option>\n");
}
buf.append("</select></td>");
}
if (esc) {
buf.append("<td id=\"addCommentText\"><textarea name=\"nofilter_newComment\" cols=\"44\" rows=\"4\"></textarea></td>");
} else {
buf.append("<td></td>");
}
buf.append("<td class=\"commentAction\"><input type=\"submit\" name=\"addComment\" value=\"");
if (er && esc)
buf.append(_t("Rate and Comment"));
else if (er)
buf.append(_t("Rate Torrent"));
else
buf.append(_t("Add Comment"));
buf.append("\" class=\"accept\">\n");
buf.append("</td></tr></table>");
// TODO disable / enable comments for this torrent // TODO disable / enable comments for this torrent
// existing ratings / comments table // existing ratings / comments table
int ccount = 0; int ccount = 0;
@ -3553,19 +3562,6 @@ public class I2PSnarkServlet extends BasicServlet {
fmt.setTimeZone(SystemVersion.getSystemTimeZone(_context)); fmt.setTimeZone(SystemVersion.getSystemTimeZone(_context));
buf.append("<table class=\"snarkComments\">"); buf.append("<table class=\"snarkComments\">");
// TODO Make .commentText and .commentDelete columns display only when comments are enabled
// buf.append("<tr><th class=\"commentAuthor\">");
// buf.append(_t("Author"));
// buf.append("</th><th class=\"commentRating\">");
// buf.append(_t("Rating"));
// buf.append("</th><th class=\"commentDate\">");
// buf.append(_t("Date"));
// buf.append("</th><th class=\"commentText\">");
// buf.append(_t("Comment"));
// buf.append("</th><th class=\"commentDelete\" title=\"");
// buf.append(_t("Mark for deletion"));
// buf.append("\"></th></tr>");
while (iter.hasNext()) { while (iter.hasNext()) {
Comment c = iter.next(); Comment c = iter.next();
buf.append("<tr><td class=\"commentAuthor\">"); buf.append("<tr><td class=\"commentAuthor\">");
@ -3599,7 +3595,7 @@ public class I2PSnarkServlet extends BasicServlet {
ccount++; ccount++;
} }
} else { } else {
buf.append("</td><td class=\"commentDelete\">"); // insert empty named columns to maintain table layout buf.append("</td><td class=\"commentDelete\">"); // insert empty named columns to maintain table layout .. fails to catch uncommented row when comments also shown
} }
buf.append("</td></tr>\n"); buf.append("</td></tr>\n");
} }
@ -3613,6 +3609,7 @@ public class I2PSnarkServlet extends BasicServlet {
} else if (esc) { } else if (esc) {
//buf.append(_t("No comments for this torrent")); //buf.append(_t("No comments for this torrent"));
} // iter != null } // iter != null
buf.append("</div>");
} }
/** /**

View File

@ -15,6 +15,20 @@
- Update fallback images for en and fr - Update fallback images for en and fr
- Update overview text - Update overview text
- added tabindex="0" to destination addresses, highlighted on :focus - added tabindex="0" to destination addresses, highlighted on :focus
* i2psnark:
- Reorder .snarkCommentInfo sections so my rating / average rating is located
directly above posted comments/ratings in .snarkComments
- If author name for comments is configured, display it in .snarkCommentInfo
table header
- Full status tooltips for status icons in .snarkTorrents
- Rework td/th classes for .snarkTorrents so each column (both th + td) now
belongs to a given class
- Stop .snarkTorrentStatus class being incorrectly applied to .peerinfo
columns
- Spans for DHT peers / Dest in #totals, .snarkTorrentInfo info hash
- Delete icon for delete comments td
- Overhaul .snarkTorrents column widths
- CSS tidyups
2017-05-25 zzz 2017-05-25 zzz
* Crypto: Fix AES NPE on 4-core RPi 2nd try (ticket #1989) * Crypto: Fix AES NPE on 4-core RPi 2nd try (ticket #1989)

View File

@ -319,37 +319,44 @@ body.iframed {
text-align: center; text-align: center;
} }
.snarkTorrents th:nth-child(4), #pagenav, .snarkTorrentETA, .snarkTorrentDownloaded, .snarkTorrentUploaded, .snarkTorrentRateDown, .snarkTorrentRateUp, .snarkTorrentAction {
.snarkTorrents th:nth-child(5),
.snarkTorrents th:nth-child(6),
.snarkTorrents th:nth-child(7),
.snarkTorrents th:nth-child(8),
.snarkTorrents th:nth-child(9),
.snarkTorrents th:last-child {
text-align: center; text-align: center;
} }
.snarkTorrents td:nth-child(6), .snarkTorrentAction {
.snarkTorrents td:nth-child(7), padding-right: 2px !important;
.snarkTorrents td:nth-child(8) {
text-align: center !important;
} }
table.snarkTorrents { .snarkTorrents {
margin-top: -1px !important; margin-top: -1px !important;
} }
.snarkTorrents td:nth-child(1) { .snarkTrackerDetails, .snarkTorrentDetails {
width: 24px !important;
}
.snarkTorrents td:nth-child(3),
.snarkTorrents td:nth-child(4) {
width: 16px !important; width: 16px !important;
text-align: center !important; text-align: center !important;
font-weight: bold; font-weight: bold;
} }
.snarkGraphicStatus, .snarkTorrentStatus {
white-space: nowrap;
width: 1%;
}
.snarkGraphicStatus {
width: 24px !important;
}
.snarkTorrentETA, .snarkTorrentUploaded, .snarkTorrentRateDown, .snarkTorrentRateUp {
width: 5%;
min-width: 40px;
white-space: nowrap;
}
.snarkTorrents th:empty + th:empty, .snarkTorrents td:empty + td:empty, .snarkTorrents th:last-child:empty, .snarkTorrents td:last-child:empty {
width: 0 !important;
}
pre { pre {
font: 8pt "Droid Sans Mono", "Andale Mono", "DejaVu Sans Mono", "Lucida Console", monospace; font: 8pt "Droid Sans Mono", "Andale Mono", "DejaVu Sans Mono", "Lucida Console", monospace;
font-weight: bold !important; font-weight: bold !important;
@ -522,7 +529,7 @@ tfoot tr:nth-child(n+1) {
text-align: center !important; text-align: center !important;
} }
table.snarkTorrents { .snarkTorrents {
margin-top: -1px !important; margin-top: -1px !important;
border: none; border: none;
} }
@ -605,7 +612,7 @@ tt {
.snarkTorrentInfo td:first-child { .snarkTorrentInfo td:first-child {
width: 20px !important; width: 20px !important;
padding: 3px 4px 4px!important; padding: 4px !important;
} }
.snarkTorrentInfo input[type="submit"] { .snarkTorrentInfo input[type="submit"] {
@ -627,7 +634,7 @@ tt {
border-top: 1px solid #89f !important; border-top: 1px solid #89f !important;
} }
table.SnarkTorrentInfo { .SnarkTorrentInfo {
margin-bottom: 1px !important; margin-bottom: 1px !important;
border-bottom: 1px solid #89f; border-bottom: 1px solid #89f;
background: #eef; background: #eef;
@ -653,11 +660,18 @@ table.SnarkTorrentInfo {
text-align: left; text-align: left;
} }
#infohash {
color: #090;
-moz-user-select: all;
-webkit-user-select: all;
user-select: all;
}
/* end torrent info */ /* end torrent info */
/* torrent directory */ /* torrent directory */
table.SnarkDirInfo { .SnarkDirInfo {
margin-top: 10px !important; margin-top: 10px !important;
margin-bottom: 0; margin-bottom: 0;
border-bottom: 1px solid #89f; border-bottom: 1px solid #89f;
@ -721,7 +735,7 @@ table.SnarkDirInfo {
margin: 5px; margin: 5px;
} }
table.SnarkDirInfo img { .SnarkDirInfo img {
max-width: 16px; max-width: 16px;
max-height: 16px; max-height: 16px;
} }
@ -826,8 +840,9 @@ td:first-child {
/* torrent control buttons */ /* torrent control buttons */
.snarkTorrentAction { .snarkTorrentAction {
margin: 0 !important; width: 1%;
padding: 1px 1px 1px 1px !important; white-space: nowrap;
padding: 1px 2px 1px 1px !important;
text-align: center !important; text-align: center !important;
} }
@ -840,8 +855,7 @@ td:first-child {
box-shadow: 0 0 1px 1px #f90; box-shadow: 0 0 1px 1px #f90;
} }
.snarkTorrentAction input[type="image"], .snarkTorrentAction input[type="image"] {
.snarkTorrents th:last-child input[type="image"] {
padding: 3px !important; padding: 3px !important;
background: #339; background: #339;
background: linear-gradient(to bottom, #fff 0%, #fff 50%, #ddf 51%, #ddf 100%); background: linear-gradient(to bottom, #fff 0%, #fff 50%, #ddf 51%, #ddf 100%);
@ -852,34 +866,17 @@ td:first-child {
height: 10px; height: 10px;
} }
.snarkTorrentAction input[type="image"]:hover, .snarkTorrentAction input[type="image"]:hover, .snarkTorrentAction input[type="image"]:focus {
.snarkTorrentAction input[type="image"]:focus, border: 1px solid #f60 !important;
.snarkTorrents th:last-child input[type="image"]:hover,
.snarkTorrents th:last-child input[type="image"]:focus {
border: 1px solid #f60;
filter: drop-shadow(0 0 1px #f60); filter: drop-shadow(0 0 1px #f60);
} }
.snarkTorrentAction input[type="image"]:active, .snarkTorrentAction input[type="image"]:active {
.snarkTorrents th:last-child input[type="image"]:active {
background: linear-gradient(to bottom, #ddf 0%, #ddf 50%, #99f 51%, #99f 100%); background: linear-gradient(to bottom, #ddf 0%, #ddf 50%, #99f 51%, #99f 100%);
box-shadow: inset 0 0 0 1px #fff, inset 2px 2px 2px #333; box-shadow: inset 0 0 0 1px #fff, inset 2px 2px 2px #333;
filter: none !important; filter: none !important;
} }
.snarkTorrents th:last-child input[type="image"]:hover,
.snarkTorrents td:last-child input[type="image"]:hover,
.snarkTorrents th:last-child input[type="image"]:focus,
.snarkTorrents td:last-child input[type="image"]:focus { /* borders on hover only for torrent control buttons, otherwise drop-shadow */
border: 1px solid #f60 !important;
}
td.snarkTorrentAction {
width: 1%;
padding-right: 2px !important;
white-space: nowrap;
}
/* end torrent control buttons */ /* end torrent control buttons */
.snarkTorrentNoneLoaded { .snarkTorrentNoneLoaded {
@ -1494,9 +1491,16 @@ input[size="85"] {
margin-left: 5px !important; margin-left: 5px !important;
} }
select, input.r {
min-width: 120px;
}
input[name="nofilter_commentsName"] {
width: 250px;
}
select { select {
font: 9pt "Droid Sans", "Noto Sans", Ubuntu, "Segoe UI", Verdana, "Bitstream Vera Sans", "DejaVu Sans", "Lucida Grande", Helvetica, sans-serif; font: 9pt "Droid Sans", "Noto Sans", Ubuntu, "Segoe UI", Verdana, "Bitstream Vera Sans", "DejaVu Sans", "Lucida Grande", Helvetica, sans-serif;
min-width: 100px;
margin: 2px 4px 2px 0; margin: 2px 4px 2px 0;
padding: 4px 16px 4px 2px; padding: 4px 16px 4px 2px;
cursor: pointer; cursor: pointer;
@ -1737,7 +1741,7 @@ div.configsectionpanel td:first-child {
border: 1px solid #89f; border: 1px solid #89f;
} }
table.trackerconfig td:first-child { .trackerconfig td:first-child {
width: 24px !important; width: 24px !important;
padding: 5px 2px; padding: 5px 2px;
} }
@ -2272,6 +2276,7 @@ td#bwHelp a {
white-space: nowrap; white-space: nowrap;
display: inline-block; display: inline-block;
margin-right: 7px; margin-right: 7px;
vertical-align: middle;
} }
#filecheck { #filecheck {
@ -2285,9 +2290,213 @@ td#bwHelp a {
margin: 8px; margin: 8px;
} }
/* end Resource Errors */ /* end Resource Errors */
/* Comments Section */
.snarkCommentInfo, .snarkComments {
margin: 10px 0 0 !important;
border: 1px solid #bbf;
border-left: none;
border-right: none;
background: #eef;
}
.snarkComments {
margin-top: -1px !important;
}
.snarkCommentInfo th, .snarkComments th {
padding: 8px 5px;
}
.snarkCommentInfo th {
background: url(images/comment.png) 8px center no-repeat, linear-gradient(to bottom, #fff, #eef) #fff;
padding-left: 30px !important;
}
.snarkCommentInfo tr:nth-child(even), .snarkComments tr:nth-child(odd) {
border-top: 1px solid #bbf;
background: rgba(240, 240, 255, 0.5) #fff;
}
.snarkCommentInfo tr:nth-child(odd), .snarkComments tr:nth-child(even) {
border-top: 1px solid #bbf;
background: rgba(220, 220, 255, 0.5);
}
.snarkCommentInfo th {
padding: 8px 5px;
}
.snarkCommentInfo td, .snarkComments td {
padding: 8px 5px;
}
.snarkCommentInfo td:first-child {
white-space: nowrap;
}
.snarkCommentInfo td:first-child {
font-weight: bold;
}
.snarkCommentInfo input.accept {
float: right;
margin-right: 5px !important;
}
.snarkCommentInfo textarea {
font-family: "Droid Sans", "Noto Sans", Ubuntu, "Segoe UI", Verdana, "Bitstream Vera Sans", "DejaVu Sans", "Lucida Grande", Helvetica, sans-serif !important;
font-weight: normal;
width: 100%;
min-height: 64px;
height: 64px;
resize: vertical;
opacity: 0.8;
}
.snarkCommentInfo textarea:focus {
opacity: 1;
}
.snarkComments th {
text-align: left;
}
.commentRating, .commentAuthor {
width: 1%;
}
#nameRequired {
float: right;
margin-right: 5px;
}
#nameRequired a {
font-weight: bold;
}
.commentRating {
padding-right: 10px !important;
}
.commentRating img {
margin: 0;
padding: 0;
height: 16px;
width: 16px;
}
.commentText {
white-space: normal;
text-align: justify;
width: 90%;
}
.commentDate {
width: 100px;
background: url(images/clock.png) left center no-repeat;
padding-left: 20px !important;
}
.snarkCommentInfo td:first-child, .commentAuthor {
width: 160px !important;
min-width: 160px !important;
padding-right: 2px;
}
.snarkCommentInfo td:last-child, .snarkComments td:last-child {
width: 1% !important;
}
.snarkComments td {
white-space: nowrap;
}
.commentAuthorName {
background: url(images/author.png) left center no-repeat;
padding-left: 20px;
}
.commentWrapper {
border: 1px solid #bbf;
margin: 2px 0;
padding: 8px 10px 8px 26px;
border-radius: 3px;
box-shadow: inset 0 0 0 1px #fff, 0 0 1px 0 rgba(0,0,0,0.3);
background: url(images/comment.png) 6px center no-repeat #eef;
background-blend-mode: luminosity;
}
#commentsConfig .optbox {
vertical-align: middle !important;
}
.snarkComments select {
margin-right: 0 !important;
}
#commentDeleteAction {
background: #fff;
}
#commentDeleteAction td {
padding: 8px 6px;
border-top: 1px solid #89f;
border-bottom: 1px solid #89f;
}
.commentAction, .commentDelete {
width: 1%;
white-space: nowrap;
padding-left: 0;
}
.addCommentText, .commentText {
padding-right: 0;
}
.commentAction input[type="submit"] {
margin-top: 3px;
margin-bottom: 3px;
}
.commentDelete {
background: url(../ubergine/images/nuke.png) 2px center no-repeat;
text-align: left;
padding-left: 24px !important;
}
#newRating td:first-child {
text-align: right;
}
#newRating select {
width: 90%;
}
#myRating td:empty {
padding: 0 !important;
border-top: none !important;
border-bottom: none !important;
}
#myRating td:empty::after { /* hides My Ratings row when Ratings disabled */
min-height: 1px !important;
}
.commentRating img {
margin: 0 0 4px;
padding: 0;
font-size: 14pt;
color: #FF7200;
text-shadow: 0 0 1px #900;
filter: none;
}
/* end Comments section */
/* MS Edge fix */ /* MS Edge fix */
_:-ms-lang(x), * { _:-ms-lang(x), * {
filter: none !important; filter: none !important;
@ -2380,7 +2589,7 @@ body {
margin-bottom: 0 !important; margin-bottom: 0 !important;
} }
table.SnarkDirInfo { .SnarkDirInfo {
margin-top: 4px !important; margin-top: 4px !important;
} }
@ -2448,7 +2657,7 @@ body, th, td, table a, input, input[type="text"], input.r, input[name="nofilter_
} }
@media screen and (min-width: 1400px) { @media screen and (min-width: 1400px) {
body, th, td, table a, input, input[type="text"], input.r, input[name="nofilter_dataDir"], select, textarea, textarea[name="i2cpOpts"], .snarkAddInfo, code { body, th, td, table a, input, input[type="text"], input.r, input[name="nofilter_dataDir"], select, textarea, textarea[name="i2cpOpts"], .snarkAddInfo, code, .snarkCommentInfo textarea {
font-size: 10pt !important; font-size: 10pt !important;
} }
@ -2479,194 +2688,3 @@ td.snarkTorrentDownloaded {
} }
/* end responsive layout */ /* end responsive layout */
/* Comments Section */
/* TODO: merge with other rules where applicable */
.snarkCommentInfo, .snarkComments {
margin: 10px 0 0 !important;
border: 1px solid #bbf;
border-left: none;
border-right: none;
background: #eef;
}
.snarkCommentInfo th, .snarkComments th {
padding: 8px 5px;
}
.snarkCommentInfo th {
background: url(images/comment.png) 8px center no-repeat, linear-gradient(to bottom, #fff, #eef) #fff;
padding-left: 30px !important;
}
.snarkCommentInfo tr:nth-child(even), .snarkComments tr:nth-child(even) {
border-top: 1px solid #bbf;
background: rgba(240, 240, 255, 0.5) #fff;
}
.snarkCommentInfo tr:nth-child(odd), .snarkComments tr:nth-child(odd) {
border-top: 1px solid #bbf;
background: rgba(220, 220, 255, 0.5);
}
.snarkCommentInfo th {
padding: 8px 5px;
}
.snarkCommentInfo td, .snarkComments td {
padding: 8px 5px;
}
.snarkCommentInfo td:first-child {
white-space: nowrap;
}
.snarkCommentInfo td:first-child {
font-weight: bold;
}
.snarkCommentInfo input.accept {
float: right;
margin-right: 5px !important;
}
.snarkCommentInfo textarea { /* remember to set 10pt @ > 1400px */
font-family: "Droid Sans", "Noto Sans", Ubuntu, "Segoe UI", Verdana, "Bitstream Vera Sans", "DejaVu Sans", "Lucida Grande", Helvetica, sans-serif !important;
font-weight: normal;
width: 100%;
min-height: 64px;
height: 64px;
resize: vertical;
opacity: 0.8;
}
.snarkCommentInfo textarea:focus {
opacity: 1;
}
.snarkComments th {
text-align: left;
}
.commentRating, .commentAuthor {
width: 1%;
}
#nameRequired {
float: right;
margin-right: 5px;
}
#nameRequired a {
font-weight: bold;
}
.commentRating {
padding-right: 10px !important;
}
.commentRating img {
margin: 0;
padding: 0;
height: 16px;
width: 16px;
}
.commentText {
white-space: normal;
text-align: justify;
width: 80%;
}
.commentDate {
width: 100px;
background: url(images/clock.png) left center no-repeat;
padding-left: 20px !important;
}
.snarkCommentInfo td:first-child, .commentAuthor {
width: 180px !important;
padding-right: 2px;
}
.snarkCommentInfo td:last-child, .snarkComments td:last-child {
width: 1% !important;
}
.snarkComments td {
white-space: nowrap;
}
.commentAuthorName {
background: url(images/author.png) left center no-repeat;
padding-left: 20px;
}
.commentWrapper {
border: 1px solid #bbf;
margin: 2px 0;
padding: 8px 10px 8px 26px;
border-radius: 3px;
box-shadow: inset 0 0 0 1px #fff, 0 0 1px 0 rgba(0,0,0,0.3);
background: url(images/comment.png) 6px center no-repeat #eef;
background-blend-mode: luminosity;
}
#commentsConfig .optbox {
vertical-align: middle !important;
}
.snarkComments select {
margin-right: 0 !important;
}
#commentDeleteAction {
background: #fff;
}
#commentDeleteAction td {
padding: 0 6px;
border-top: 1px solid #89f;
border-bottom: 1px solid #89f;
}
.commentAction, .commentDelete {
width: 1%;
white-space: nowrap;
min-width: 180px !important;
padding-left: 0;
}
.addCommentText, .commentText {
padding-right: 0;
}
.commentAction input[type="submit"] {
margin-top: 10px;
margin-bottom: 10px;
}
.commentDelete {
text-align: left;
}
#myRating td:empty {
padding: 0 !important;
border-top: none !important;
border-bottom: none !important;
}
#myRating td:empty::after { /* hides My Ratings row when Ratings disabled */
min-height: 1px !important;
}
.commentRating img {
margin: 0 0 4px;
padding: 0;
font-size: 14pt;
color: #FF7200;
text-shadow: 0 0 1px #900;
filter: none;
}
/* end Comments section */

View File

@ -314,10 +314,6 @@ table {
opacity: 1 !important; opacity: 1 !important;
} }
tr {
opacity: 1;
}
thead, tfoot { thead, tfoot {
background: #000; background: #000;
} }
@ -445,38 +441,53 @@ tfoot tr:nth-child(n+1) {
margin-left: 20px !important; margin-left: 20px !important;
} }
.SnarkTorrents td:nth-child(6), .SnarkTorrents td:nth-child(7), .SnarkTorrents td:nth-child(8) { .snarkTorrentETA, .snarkTorrentDownloaded, .snarkTorrentUploaded {
text-align: center !important; text-align: center !important;
} }
table.SnarkTorrents { .SnarkTorrents {
margin-top: -1px !important; margin-top: -1px !important;
} }
.snarkTorrents th {
text-align: left;
}
.snarkTorrents td { .snarkTorrents td {
line-height: 120%; line-height: 120%;
text-align: left; text-align: left;
font-size: 8pt !important; font-size: 8pt !important;
} }
.snarkTorrents td:nth-child(1) { .snarkGraphicStatus {
width: 24px !important; width: 24px !important;
} }
.snarkTorrents td:nth-child(3), .SnarkTorrents td:nth-child(4) { .snarkTrackerDetails, .SnarkTorrentDetails {
width: 16px !important; width: 16px !important;
padding: 0 !important; padding: 0 !important;
text-align: center !important; text-align: center !important;
} }
.snarkTorrents td:nth-child(3) { .snarkTrackerDetails {
text-align: right !important; text-align: right !important;
} }
.snarkGraphicStatus, .snarkTorrentStatus {
white-space: nowrap;
width: 1%;
}
th.snarkTorrentStatus {
text-align: center !important;
}
.snarkTorrentETA, .snarkTorrentUploaded, .snarkTorrentRateDown, .snarkTorrentRateUp {
width: 5%;
min-width: 40px;
white-space: nowrap;
}
.snarkTorrents th:empty + th:empty, .snarkTorrents td:empty + td:empty, .snarkTorrents th:last-child:empty, .snarkTorrents td:last-child:empty {
width: 0 !important;
}
.snarkTorrents td[colspan="10"]{ .snarkTorrents td[colspan="10"]{
padding: 2px; padding: 2px;
color: #cc7 !important; color: #cc7 !important;
@ -546,7 +557,7 @@ table.SnarkTorrents {
box-shadow: inset 0 0 0 1px #030; box-shadow: inset 0 0 0 1px #030;
} }
table.SnarkTorrentInfo { .SnarkTorrentInfo {
margin-bottom: 1px !important; margin-bottom: 1px !important;
background: url(/themes/console/dark/images/camotile2.png) repeat scroll center bottom #001100; background: url(/themes/console/dark/images/camotile2.png) repeat scroll center bottom #001100;
border-bottom: 1px solid #494; border-bottom: 1px solid #494;
@ -563,12 +574,19 @@ table.SnarkTorrentInfo {
color: #bb7; color: #bb7;
} }
table.SnarkDirInfo { .SnarkDirInfo {
margin-top: 10px !important; margin-top: 10px !important;
margin-bottom: 0; margin-bottom: 0;
border-bottom: 1px solid #494; border-bottom: 1px solid #494;
} }
#infohash {
color: #cc0;
-moz-user-select: all;
-webkit-user-select: all;
user-select: all;
}
.snarkDirInfo th img { .snarkDirInfo th img {
margin: 0 !important; margin: 0 !important;
max-height: 20px !important; max-height: 20px !important;
@ -687,12 +705,12 @@ th.headerdownloaded {
white-space: nowrap; white-space: nowrap;
} }
td.snarkFileIcon { .snarkFileIcon {
width: 16px; width: 16px;
padding: 0; padding: 0;
} }
td.snarkFileStatusIcon { .snarkFileStatusIcon {
width: 24px; width: 24px;
padding: 0 4px 0 0; padding: 0 4px 0 0;
text-align: center; text-align: center;
@ -712,11 +730,6 @@ td {
td:first-child { td:first-child {
text-align: right; text-align: right;
font-size: 9pt;
}
.center {
text-align: center !important;
} }
.snarkTorrentName { .snarkTorrentName {
@ -756,18 +769,14 @@ td:first-child {
border-bottom: 1px solid #494; border-bottom: 1px solid #494;
} }
.snarkGraphicStatus {
text-align: center !important;
}
.snarkTorrentStatus { .snarkTorrentStatus {
padding: 2px 2px 2px 0; padding: 3px 5px 3px 0 !important;
line-height: 90%; line-height: 90%;
min-width: 0; min-width: 0;
}
td.snarkTorrentStatus {
text-align: center !important;
padding: 3px 0;
}
td.snarkTorrentStatus:nth-child(2) {
text-align: left !important; text-align: left !important;
} }
@ -1345,6 +1354,15 @@ input[name="nofilter_dataDir"] {
height: auto; height: auto;
} }
input[name="nofilter_commentsName"] {
width: 250px;
text-overflow: ellipsis;
}
input[name="nofilter_commentsName"]:focus::placeholder {
opacity: 0;
}
.configsectionpanel input[type=text], input.r, textarea[name="i2cpOpts"], input[name="nofilter_dataDir"], #configs select { .configsectionpanel input[type=text], input.r, textarea[name="i2cpOpts"], input[name="nofilter_dataDir"], #configs select {
margin-top: 4px; margin-top: 4px;
margin-bottom: 4px; margin-bottom: 4px;
@ -1359,8 +1377,8 @@ input[type=image], th a:link img, th a:visited img {
opacity: 1; opacity: 1;
} }
input[type=text], input.r { input[type=text], input.r, select {
min-width: 100px; min-width: 120px !important;
} }
input[type=radio] { input[type=radio] {
@ -1686,7 +1704,7 @@ _:-ms-lang(x), #trackerselect tr:last-child {
border: 1px solid #494; border: 1px solid #494;
} }
table.trackerconfig td:first-child { .trackerconfig td:first-child {
padding: 5px 2px; padding: 5px 2px;
width: 24px !important; width: 24px !important;
} }
@ -2360,6 +2378,207 @@ input[type="checkbox"][disabled]:checked, input[type="radio"][disabled]:checked,
/* end custom radios/checkboxes */ /* end custom radios/checkboxes */
/* Comments Section */
/* TODO: merge with other rules where applicable */
.snarkCommentInfo, .snarkComments {
margin: 10px 0 0 !important;
border: 1px solid #494;
border-left: none;
border-right: none;
background: #001100 url(/themes/console/dark/images/camotile2.png) repeat scroll center bottom;
filter: drop-shadow(0px 0 1px rgba(16, 8, 16, 0.7));
}
.snarkComments {
margin-top: -1px !important;
border-top: none;
}
.snarkCommentInfo th, .snarkComments th {
background: linear-gradient(to bottom, #001000 0%, #001900 50%, #000 50%, #000 100%);
padding: 8px 5px;
white-space: normal;
}
.snarkCommentInfo tr:nth-child(even), .snarkComments tr:nth-child(odd) {
background: #001000;
border-bottom: 1px inset #000;
}
.snarkCommentInfo tr:nth-child(odd), .snarkComments tr:nth-child(even) {
background: #000800;
border-bottom: 1px inset #000;
}
.snarkCommentInfo th {
padding: 8px 5px 8px 30px;
background: url(images/comment.png) 8px center no-repeat, linear-gradient(to bottom, #001000 0%, #001900 50%, #000 50%, #000 100%);
}
.snarkCommentInfo td, .snarkComments td {
padding: 8px 5px;
}
.snarkCommentInfo td:first-child {
white-space: nowrap;
}
.snarkCommentInfo td:first-child {
font-weight: bold;
}
.snarkCommentInfo td:first-child::after, .snarkComments td:first-child::after {
content: "";
display: inline-block;
min-height: 22px;
vertical-align: middle;
}
.snarkCommentInfo input.accept {
float: right;
margin-right: 5px !important;
}
#myRating {
border-top: 1px solid #050;
}
.snarkCommentInfo textarea { /* remember to set 10pt @ > 1400px */
font-family: "Droid Sans", "Noto Sans", Ubuntu, "Segoe UI", "DejaVu Sans", Verdana, "Lucida Grande", Helvetica, sans-serif;
width: 100%;
min-height: 64px;
height: 64px;
resize: vertical;
opacity: 0.8;
}
.snarkComments th {
text-align: left;
}
.commentRating, .commentAuthor {
width: 1%;
}
#nameRequired {
float: right;
margin-right: 5px;
}
.commentRating {
width: 80px;
white-space: nowrap;
}
.commentRating img {
margin: 0;
padding: 0;
height: 16px;
width: 16px;
}
.commentDate {
width: 105px;
background: url(images/clock.png) left center no-repeat;
padding-left: 20px !important;
}
.snarkCommentInfo td:first-child, .snarkComments td:first-child {
min-width: 160px !important;
width: 160px !important;
padding-right: 2px;
}
.snarkCommentInfo td:last-child, .snarkComments td:last-child {
width: 1% !important;
}
.snarkComments td {
white-space: nowrap;
}
.commentAuthorName {
background: url(images/author.png) left center no-repeat;
padding-left: 20px;
}
.commentText {
white-space: normal;
text-align: justify;
width: 90%;
}
.commentWrapper {
border: 1px solid #030;
margin: 2px 0;
padding: 8px 10px 8px 26px;
border-radius: 3px;
box-shadow: inset 0 0 0 1px #393, 0 0 1px 0 rgba(0,0,0,0.3);
background: url(images/comment.png) 6px center no-repeat #010;
background-blend-mode: luminosity;
}
#commentsConfig .optbox {
vertical-align: middle !important;
}
.snarkComments select {
margin-right: 0 !important;
}
#commentDeleteAction {
border-top: 1px solid #050;
background: none;;
}
#commentDeleteAction td {
padding-right: 6px;
}
.commentAction, .commentDelete {
width: 1%;
white-space: nowrap;
padding-left: 0;
}
.addCommentText, .commentText {
padding-right: 0;
}
.commentDelete {
background: url(../ubergine/images/nuke.png) 2px center no-repeat;
text-align: left;
padding: 8px 6px 8px 24px !important;
}
#newRating td {
padding-top: 10px !important;
padding-bottom: 10px !important;
border-top: 1px solid #050;
}
#myRating td:empty {
padding: 0 !important;
border-top: none !important;
border-bottom: none !important;
}
#myRating td:empty::after { /* hides My Ratings row when Ratings disabled */
min-height: 1px !important;
}
.commentRating img {
margin: 0 0 4px;
padding: 0;
font-size: 14pt;
color: #FF7200;
text-shadow: 0 0 1px #900;
filter: none;
}
/* end Comments section */
/* responsive layout */ /* responsive layout */
@media screen and (max-width: 950px) { @media screen and (max-width: 950px) {
@ -2497,6 +2716,10 @@ body, .snarkTorrents td, .snarkAddInfo, th, td, code, textarea, input, input[ty
font-size: 12pt !important; font-size: 12pt !important;
} }
.snarkTorrentStatus {
padding-right: 10px !important;
}
.snarkTorrentDownloaded { .snarkTorrentDownloaded {
white-space: nowrap; white-space: nowrap;
padding: 0 8px; padding: 0 8px;
@ -2609,201 +2832,3 @@ textarea[name="i2cpOpts"] {
/* end responsive layout */ /* end responsive layout */
/* Comments Section */
/* TODO: merge with other rules where applicable */
.snarkCommentInfo, .snarkComments {
margin: 10px 0 0 !important;
border: 1px solid #494;
border-left: none;
border-right: none;
background: #001100 url(/themes/console/dark/images/camotile2.png) repeat scroll center bottom;
filter: drop-shadow(0px 0 1px rgba(16, 8, 16, 0.7));
}
.snarkCommentInfo th, .snarkComments th {
background: linear-gradient(to bottom, #001000 0%, #001900 50%, #000 50%, #000 100%);
padding: 8px 5px;
white-space: normal;
}
.snarkCommentInfo tr:nth-child(even), .snarkComments tr:nth-child(even) {
background: #001000;
border-bottom: 1px inset #000;
}
.snarkCommentInfo tr:nth-child(odd), .snarkComments tr:nth-child(odd) {
background: #000800;
border-bottom: 1px inset #000;
}
.snarkCommentInfo th {
padding: 8px 5px 8px 30px;
background: url(images/comment.png) 8px center no-repeat, linear-gradient(to bottom, #001000 0%, #001900 50%, #000 50%, #000 100%);
}
.snarkCommentInfo td, .snarkComments td {
padding: 8px 5px;
}
.snarkCommentInfo td:first-child {
white-space: nowrap;
}
.snarkCommentInfo td:first-child {
font-weight: bold;
}
.snarkCommentInfo td:first-child::after, .snarkComments td:first-child::after {
content: "";
display: inline-block;
min-height: 32px;
vertical-align: middle;
}
.snarkCommentInfo input.accept {
float: right;
margin-right: 5px !important;
}
.snarkCommentInfo textarea { /* remember to set 10pt @ > 1400px */
font-family: "Droid Sans", "Noto Sans", Ubuntu, "Segoe UI", "DejaVu Sans", Verdana, "Lucida Grande", Helvetica, sans-serif;
width: 100%;
min-height: 64px;
height: 64px;
resize: vertical;
opacity: 0.8;
}
.snarkComments th {
text-align: left;
}
.commentRating, .commentAuthor {
width: 1%;
}
#nameRequired {
float: right;
margin-right: 5px;
}
.commentRating {
padding-right: 10px !important;
}
.commentRating img {
margin: 0;
padding: 0;
height: 16px;
width: 16px;
}
.commentDate {
width: 100px;
background: url(images/clock.png) left center no-repeat;
padding-left: 20px !important;
}
.snarkCommentInfo td:first-child, .snarkComments td:first-child {
width: 160px !important;
padding-right: 2px;
}
.snarkCommentInfo td:last-child, .snarkComments td:last-child {
width: 1% !important;
}
.snarkComments td {
white-space: nowrap;
}
.commentAuthorName {
background: url(images/author.png) left center no-repeat;
padding-left: 20px;
}
.commentText {
white-space: normal;
text-align: justify;
width: 90%;
}
.commentWrapper {
border: 1px solid #030;
margin: 2px 0;
padding: 8px 10px 8px 26px;
border-radius: 3px;
box-shadow: inset 0 0 0 1px #393, 0 0 1px 0 rgba(0,0,0,0.3);
background: url(images/comment.png) 6px center no-repeat #010;
background-blend-mode: luminosity;
}
.commentText .optbox {
position: fixed;
right: 20px;
top: 10px;
}
#commentsConfig .optbox {
vertical-align: middle !important;
}
.snarkComments select {
margin-right: 0 !important;
}
#commentDeleteAction {
border-top: 1px solid #494;
background: none;;
}
#commentDeleteAction td {
padding-right: 6px;
}
.commentAction, .commentDelete {
width: 1%;
white-space: nowrap;
/* min-width: 180px !important;*/
padding-left: 0;
}
.addCommentText, .commentText {
padding-right: 0;
}
.commentAction input[type="submit"] {
margin-top: 10px;
margin-bottom: 10px;
}
.commentDelete {
text-align: left;
}
#newRating td {
padding-top: 10px !important;
padding-bottom: 10px !important;
}
#myRating td:empty {
padding: 0 !important;
border-top: none !important;
border-bottom: none !important;
}
#myRating td:empty::after { /* hides My Ratings row when Ratings disabled */
min-height: 1px !important;
}
.commentRating img {
margin: 0 0 4px;
padding: 0;
font-size: 14pt;
color: #FF7200;
text-shadow: 0 0 1px #900;
filter: none;
}
/* end Comments section */

View File

@ -145,7 +145,6 @@ button::-moz-focus-inner, input::-moz-focus-inner {
} }
.snarkRefresh:first-child { .snarkRefresh:first-child {
/* padding: 4px 10px 4px 19px !important;*/
border-radius: 2px 0 0 2px; border-radius: 2px 0 0 2px;
background: #fff url(images/button_snark.png) 10px center no-repeat; background: #fff url(images/button_snark.png) 10px center no-repeat;
background: url(images/button_snark.png) 10px center no-repeat, linear-gradient(to bottom, #fff 50%, #eef 51%, #eef 100%); background: url(images/button_snark.png) 10px center no-repeat, linear-gradient(to bottom, #fff 50%, #eef 51%, #eef 100%);
@ -308,10 +307,6 @@ table {
opacity: 1 !important; opacity: 1 !important;
} }
tr {
opacity: 1;
}
thead, tfoot { thead, tfoot {
background: #fff; background: #fff;
} }
@ -416,6 +411,13 @@ tfoot tr:nth-child(n+1) {
white-space: nowrap; white-space: nowrap;
} }
/* main torrents listing */
.snarkTorrents thead th {
padding-top: 4px;
padding-bottom: 4px;
}
.snarkTorrents { .snarkTorrents {
margin: -1px 0; margin: -1px 0;
background: #fff; background: #fff;
@ -433,80 +435,75 @@ tfoot tr:nth-child(n+1) {
text-align: center !important; text-align: center !important;
} }
.snarkTorrents th:empty + th:empty, .snarkTorrents td:empty + td:empty, .snarkTorrents th:last-child:empty, .snarkTorrents td:last-child:empty {
width: 0 !important;
}
.snarkTorrents tfoot tr:first-child th {
padding: 5px 4px;
background: #fff;
background: linear-gradient(to bottom, #fff 50%, rgb(240, 240, 255)) #fff;
vertical-align: middle;
font-weight: bold;
font-style: normal !important;
color: #31334f !important;
}
.snarkTorrents td { .snarkTorrents td {
line-height: 110%; line-height: 110%;
} }
.snarkTorrents thead th:nth-child(1), .snarkTorrents td:nth-child(1) {
width: 20px !important;
}
.snarkTorrents td:nth-child(1) {
text-align: left;
padding: 2px;
}
.snarkTorrents td:nth-child(2) {
white-space: nowrap;
}
.snarkTorrentStatus b {
margin-right: 3px;
}
.snarkTorrents td[colspan="10"] {
white-space: normal !important;
}
.snarkTorrents td:nth-child(3), .SnarkTorrents td:nth-child(4) {
width: 16px !important;
padding: 2px 1px 2px 0;
}
.SnarkTorrents td:nth-child(4) {
text-align: center;
}
.snarkTorrents td[colspan="4"], .snarkTorrents td[colspan="10"] { .snarkTorrents td[colspan="4"], .snarkTorrents td[colspan="10"] {
text-align: left !important; text-align: left !important;
padding-left: 0; padding-left: 0;
} }
.snarkTorrents th[colspan="6"]::first-line { .snarkTorrents td[colspan="10"] {
font-weight: bold; white-space: normal !important;
} }
.snarkTorrents th[colspan="6"] { .snarkGraphicStatus, .snarkTorrentStatus {
font-weight: normal; white-space: nowrap;
width: 1%;
} }
.snarkTorrents tfoot tr:first-child th { .snarkGraphicStatus {
padding: 5px 4px !important; max-width: 32px !important;
background: #fff; text-align: center !important;
vertical-align: middle; padding-left: 2px;
} }
td { .snarkTorrentStatus {
padding: 2px 4px; padding-right: 5px;
color: #272e3f !important;
opacity: 1;
font-size: 9pt;
} }
.mainsection td { th.snarkTorrentStatus {
color: #272e3f;
}
td:first-child {
text-align: right;
}
.center {
text-align: center !important; text-align: center !important;
} }
.snarkTorrentStatus b {
margin-right: 3px;
}
.snarkTorrentStatus a:visited {
color: #559;
}
.snarkTorrentStatus a:hover {
color: #f60;
}
.snarkTrackerDetails, .SnarkTorrentDetails {
width: 16px !important;
padding: 2px 1px 2px 0;
}
.SnarkTorrentDetails {
text-align: center;
}
.snarkTorrentName { .snarkTorrentName {
padding: 0; padding: 0 0 0 3px;
line-height: 90%; line-height: 90%;
} }
@ -515,6 +512,12 @@ td:first-child {
width: 100%; width: 100%;
} }
.snarkTorrentETA, .snarkTorrentUploaded, .snarkTorrentRateDown, .snarkTorrentRateUp {
width: 5%;
min-width: 40px;
white-space: nowrap;
}
.snarkTorrentAction { .snarkTorrentAction {
text-shadow: 1px 1px #550000; text-shadow: 1px 1px #550000;
padding: 2px 1px !important; padding: 2px 1px !important;
@ -534,10 +537,6 @@ td:first-child {
opacity: 1; opacity: 1;
} }
.snarkTorrents thead th:last-child br { /* kill "start all/stop all" button wrapping in the header */
display: none;
}
.snarkTorrentAction input[type="image"], .snarkTorrents th:last-child input[type="image"] { .snarkTorrentAction input[type="image"], .snarkTorrents th:last-child input[type="image"] {
padding: 3px !important; padding: 3px !important;
background: #339; background: #339;
@ -561,12 +560,6 @@ td:first-child {
filter: hue-rotate(110deg) !important; filter: hue-rotate(110deg) !important;
} }
.snarkTorrentEven {
font-size: 8pt;
background: #eef;
background: repeating-linear-gradient(135deg, rgba(255,255,255,0.5) 2px, rgba(240, 240, 255, 0.3) 3px, #fff 5px);
}
.snarkTorrentNoneLoaded, .snarkTorrentNoneLoaded:hover { .snarkTorrentNoneLoaded, .snarkTorrentNoneLoaded:hover {
background: #fff !important; background: #fff !important;
background: linear-gradient(to right, #eef, #fff, #eef) !important; background: linear-gradient(to right, #eef, #fff, #eef) !important;
@ -579,48 +572,82 @@ td:first-child {
color: #272e3f !important; color: #272e3f !important;
} }
.snarkTorrentStatus a:visited {
color: #559;
}
.snarkTorrentStatus a:hover {
color: #f60;
}
.snarkTorrentStatus:first-child {
text-align: left !important;
padding-left: 0;
min-width: 48px;
font-weight: bold;
color: #dd9 !important;
font-size: 8pt;
padding: 1px !important;
}
.snarkTorrentStatus:first-child img {
margin-right: 10px !important;
margin-left: 6px;
}
.snarkTorrentRateUp, .snarkTorrentRateDown, .snarkTorrentDownloaded, .snarkTorrentUploaded { .snarkTorrentRateUp, .snarkTorrentRateDown, .snarkTorrentDownloaded, .snarkTorrentUploaded {
padding: 0 3px; padding: 0 3px;
line-height: 90%; line-height: 90%;
} }
.snarkTorrentRateUp:empty, .snarkTorrentRateDown:empty, .snarkTorrentAction:empty {
width: 0;
padding: 0;
}
.snarkTorrentUploaded, .snarkTorrentRateUp { .snarkTorrentUploaded, .snarkTorrentRateUp {
font-style: italic !important; font-style: italic !important;
color: #59698f !important; color: #59698f !important;
} }
.snarkTorrentDownloaded, .snarkTorrents tfoot th:nth-last-child(5) { .snarkTorrentDownloaded {
text-align: center; text-align: center;
white-space: nowrap; white-space: nowrap;
} }
.choked, .unchoked {
font-style: italic;
}
.choked {
color: #a00 !important;
}
.unchoked {
color: #070 !important;
}
.snarkTorrents tt {
background: #99f;
color: #fff;
border-radius: 2px;
padding: 2px 3px;
margin: 0 3px;
display: inline-block;
}
#totals {
display: inline-block;
margin: 2px 0 2px 5px;
font-weight: bold !important;
}
#totals span, #ourDest {
white-space: nowrap;
}
.routerdown {
color: #001;
}
/* end main torrents listing */
td {
padding: 2px 4px;
color: #272e3f !important;
opacity: 1;
font-size: 9pt;
}
.mainsection td {
color: #272e3f;
}
.snarkTorrentEven {
background: #eef;
background: repeating-linear-gradient(135deg, rgba(255,255,255,0.5) 2px, rgba(240, 240, 255, 0.3) 3px, #fff 5px);
}
.snarkTorrentOdd { .snarkTorrentOdd {
background: #e0e0ff; background: #e0e0ff;
background: repeating-linear-gradient(45deg, rgba(255,255,255,0.5) 2px, rgba(221, 221, 255, 0.3) 3px, #fff 5px); background: repeating-linear-gradient(45deg, rgba(255,255,255,0.5) 2px, rgba(221, 221, 255, 0.3) 3px, #fff 5px);
font-size: 8pt;
} }
.snarkTorrentOdd td, .snarkTorrentEven td { .snarkTorrentOdd td, .snarkTorrentEven td {
@ -635,6 +662,10 @@ td:first-child {
color: #0c111f !important; color: #0c111f !important;
} }
.snarkTorrents tr:hover img {
mix-blend-mode: normal;
}
tr:hover .percentBarText { tr:hover .percentBarText {
opacity: 0.75; opacity: 0.75;
} }
@ -643,10 +674,6 @@ tr:hover .percentBarText {
background: url(images/peer.png) center center no-repeat #ffd !important; background: url(images/peer.png) center center no-repeat #ffd !important;
} }
.snarkTorrents tr:hover img {
mix-blend-mode: normal;
}
.snarkTorrentEven + .snarkTorrentEven td:nth-child(2), .snarkTorrentOdd td + .snarkTorrentOdd td:nth-child(2) { .snarkTorrentEven + .snarkTorrentEven td:nth-child(2), .snarkTorrentOdd td + .snarkTorrentOdd td:nth-child(2) {
padding: 4px 0; padding: 4px 0;
text-align: left; text-align: left;
@ -706,7 +733,6 @@ tr:hover .percentBarText {
background: #eef; background: #eef;
background: repeating-linear-gradient(135deg, rgba(238, 238, 255,0.7) 1px, rgba(238, 238, 255, 0.7) 5px, rgba(221, 221, 255, 0.7) 6px, rgba(221, 221, 255, 0.7) 11px); background: repeating-linear-gradient(135deg, rgba(238, 238, 255,0.7) 1px, rgba(238, 238, 255, 0.7) 5px, rgba(221, 221, 255, 0.7) 6px, rgba(221, 221, 255, 0.7) 11px);
border: 1px solid #99f; border: 1px solid #99f;
box-shadow: none;
box-shadow: 0 0 1px rgba(200,200,200,0.8); box-shadow: 0 0 1px rgba(200,200,200,0.8);
margin: 0 auto; margin: 0 auto;
} }
@ -715,7 +741,7 @@ tr:hover .percentBarText {
border: none; border: none;
height: 100%; height: 100%;
background: #bbf; background: #bbf;
background: linear-gradient(to bottom, #fff 0%, #eef 50%, #ddf 50%, #bbf 100%); background: linear-gradient(to bottom, rgba(255, 255, 255,0.6) 0%, rgba(238, 238, 255, 0.6) 50%, rgba(221, 221, 255, 0.7) 50%, rgba(187, 187, 255, 0.7) 100%);
box-shadow: inset 0 0 0 1px #ddf; box-shadow: inset 0 0 0 1px #ddf;
} }
@ -762,18 +788,6 @@ tr:hover .percentBarText {
/* end download bars */ /* end download bars */
.choked {
color: #a00 !important;
}
.unchoked {
color: #070 !important;
}
.snarkTorrents td:nth-last-child(2) .choked, .snarkTorrents td:nth-last-child(2) .unchoked {
font-style: italic;
}
.thumb { .thumb {
max-width: 16px; max-width: 16px;
transition: ease all 0.3s 0s; transition: ease all 0.3s 0s;
@ -907,7 +921,7 @@ tr:hover .percentBarText {
.snarkTorrentInfo td { .snarkTorrentInfo td {
text-align: left !important; text-align: left !important;
padding: 3px 0 3px 1px !important; padding: 4px 0 4px 1px !important;
border-top: 1px solid #bbf; border-top: 1px solid #bbf;
vertical-align: middle; vertical-align: middle;
} }
@ -928,6 +942,14 @@ tr:hover .percentBarText {
.snarkTorrentInfo tr:last-child td { .snarkTorrentInfo tr:last-child td {
border-bottom: 1px solid #7778bf; border-bottom: 1px solid #7778bf;
border-top: 1px solid #7778bf;
}
#infohash {
color: #070;
-moz-user-select: all;
-webkit-user-select: all;
user-select: all;
} }
.snarkDirInfo thead img { .snarkDirInfo thead img {
@ -1126,6 +1148,10 @@ input[name="nofilter_dataDir"], textarea[name="i2cpOpts"] {
font-family: "Droid Sans", "Noto Sans", Ubuntu, "Segoe UI", "Bitstream Vera Sans", Verdana, "Lucida Grande", Helvetica, sans-serif; font-family: "Droid Sans", "Noto Sans", Ubuntu, "Segoe UI", "Bitstream Vera Sans", Verdana, "Lucida Grande", Helvetica, sans-serif;
} }
#configureAuthor input {
width: 250px;
}
input[type="radio"] { input[type="radio"] {
padding: 2px; padding: 2px;
margin: 0 3px 0 8px; margin: 0 3px 0 8px;
@ -1250,6 +1276,7 @@ img[src$="details.png"] {
.newtorrentsection td:first-child, .addtorrentsection td:first-child, .configsectionpanel td:first-child { .newtorrentsection td:first-child, .addtorrentsection td:first-child, .configsectionpanel td:first-child {
width: auto !important; width: auto !important;
text-align: right;
} }
.configsectionpanel td:first-child { .configsectionpanel td:first-child {
@ -1380,19 +1407,6 @@ code, tt {
font-family: "Droid Sans Mono", "Lucida Console", "DejaVu Sans Mono", monospace; font-family: "Droid Sans Mono", "Lucida Console", "DejaVu Sans Mono", monospace;
} }
.snarkTorrents tt {
background: #99f;
color: #fff;
border-radius: 2px;
padding: 2px 3px;
margin: 0 3px;
display: inline-block;
}
.routerdown {
color: #001;
}
.trackerconfig { .trackerconfig {
text-align: left !important; text-align: left !important;
width: 100%; width: 100%;
@ -1663,12 +1677,6 @@ hr.debug:last-child {
/* end Resource Errors */ /* end Resource Errors */
#totals {
display: inline-block;
margin: 2px 0 2px 5px;
font-weight: bold !important;
}
/* Downloading Priorities */ /* Downloading Priorities */
.snarkDirInfo input[type="radio"], .snarkDirInfo input[type="radio"]:checked { .snarkDirInfo input[type="radio"], .snarkDirInfo input[type="radio"]:checked {
@ -1767,7 +1775,7 @@ hr.debug:last-child {
} }
#setPriority th { #setPriority th {
border-bottom: 1px solid #eef; border-bottom: 1px solid #7778bf;
} }
#torrentInfoStats td { #torrentInfoStats td {
@ -1789,6 +1797,207 @@ hr.debug:last-child {
margin-right: 7px; margin-right: 7px;
} }
/* Comments Section */
.snarkCommentInfo, .snarkComments {
margin: 10px 0 0 !important;
border: 1px solid #7778bf;
border-left: none;
border-right: none;
}
.iframed .snarkComments {
border-bottom: none;
}
.snarkComments {
margin-top: -1px !important;
border-top: none !important;
}
.snarkCommentInfo th, .snarkComments th {
padding: 8px 5px;
}
.snarkCommentInfo tr:nth-child(even), .snarkComments tr:nth-child(odd) {
border-top: 1px solid #bbf;
background: repeating-linear-gradient(135deg, rgba(255, 255, 255, 0.5) 2px, rgba(240, 240, 255, 0.3) 3px, #fff 5px) #fff;
}
.snarkCommentInfo tr:nth-child(odd), .snarkComments tr:nth-child(even) {
border-top: 1px solid #bbf;
background: repeating-linear-gradient(45deg, rgba(255, 255, 255, 0.5) 2px, rgba(221, 221, 255, 0.3) 3px, #fff 5px) #fff;
}
.snarkCommentInfo th {
padding: 8px 5px;
background: url(images/comment.png) 8px center no-repeat, linear-gradient(to bottom, #fff 50%, rgb(240, 240, 255));
padding-left: 30px;
}
.snarkCommentInfo td, .snarkComments td {
padding: 6px 5px;
}
.snarkCommentInfo td:first-child, .snarkComments td:first-child {
text-align: right;
}
.snarkCommentInfo td:first-child {
font-weight: bold;
white-space: nowrap;
}
.snarkCommentInfo td:first-child::after, .snarkComments td:first-child::after {
content: "";
display: inline-block;
min-height: 32px;
vertical-align: middle;
}
.snarkCommentInfo input.accept {
float: right;
margin-right: 5px !important;
}
.snarkCommentInfo textarea {
font-family: "Droid Sans", "Noto Sans", Ubuntu, "Segoe UI", "Bitstream Vera Sans", Verdana, "Lucida Grande", Helvetica, sans-serif !important;
font-weight: normal;
width: 100%;
min-height: 64px;
height: 64px;
resize: vertical;
}
.snarkComments tr:last-child {
border-top: 1px solid #7778bf !important;
}
.commentRating, .commentAuthor {
width: 1%;
}
#nameRequired {
float: right;
margin-right: 5px;
}
.commentRating {
padding-right: 10px !important;
}
.commentRating img {
margin: 0;
padding: 0;
width: 16px;
height: 16px;
filter: drop-shadow(0 0 1px rgba(128,0,0,0.3)) !important;
}
.commentDate {
width: 100px;
background: url(images/clock.png) left center no-repeat;
padding-left: 20px !important;
}
.snarkCommentInfo td:first-child, .snarkComments td:first-child {
width: 160px !important;
min-width: 160px !important;
padding-right: 2px;
}
.snarkCommentInfo td:last-child, .snarkComments td:last-child {
width: 1% !important;
}
.snarkComments td {
white-space: nowrap;
}
.commentAuthorName {
background: url(images/author.png) left center no-repeat;
padding-left: 20px;
}
.commentText {
white-space: normal;
text-align: justify;
width: 90%;
}
.commentWrapper {
border: 1px solid #bbf;
margin: 2px 0;
padding: 8px 10px 8px 26px;
border-radius: 3px;
box-shadow: inset 0 0 0 1px #fff, 0 0 1px 0 rgba(0,0,0,0.3);
background: url(images/comment.png) 6px center no-repeat #eef;
background-blend-mode: luminosity;
}
#commentsConfig .optbox {
vertical-align: middle !important;
}
.snarkComments select {
margin-right: 0 !important;
}
#commentDeleteAction {
border-top: 1px solid #bbf;
background: linear-gradient(to bottom, #fff, #eef);
}
#commentDeleteAction td {
padding-right: 6px;
}
.commentAction, .commentDelete {
width: 1%;
white-space: nowrap;
padding-left: 0;
}
.addCommentText, .commentText {
padding-right: 0;
}
.commentDelete {
text-align: left;
padding: 2px 3px 2px 20px !important;
background: url(../ubergine/images/nuke.png) left center no-repeat;
}
#newRating td:first-child {
text-align: center;
}
#newRating select {
width: 90%;
margin-left: 10px;
}
#myRating td:empty {
padding: 0 !important;
border-top: none !important;
border-bottom: none !important;
}
#myRating td:empty::after { /* hides My Ratings row when Ratings disabled */
min-height: 0 !important;
}
.commentRating img {
margin: 0 0 4px;
padding: 0;
font-size: 14pt;
color: #FF7200;
text-shadow: 0 0 1px #900;
filter: none;
}
/* end Comments section */
/* MS Edge 14+ rendering bug fix */ /* MS Edge 14+ rendering bug fix */
_:-ms-lang(x), *, *:hover, *:focus, input, input:hover, input:focus, a:hover, a:focus { _:-ms-lang(x), *, *:hover, *:focus, input, input:hover, input:focus, a:hover, a:focus {
filter: none !important; filter: none !important;
@ -1807,9 +2016,8 @@ _:-ms-lang(x), *, *:hover, *:focus, input, input:hover, input:focus, a:hover, a:
min-width: 580px !important; min-width: 580px !important;
} }
.snarkTorrents th:nth-child(2), .snarkTorrents td:nth-child(2), .snarkTorrents th:nth-child(7), .snarkTorrentStatus, .snarkTorrentUploaded, .snarkTorrentRateUp,
.snarkTorrents tfoot th:nth-child(3), .snarkTorrents td.snarkTorrentUploaded, .snarkTorrents th:nth-child(9), .snarkTorrents tfoot th:nth-child(3), .snarkTorrents tfoot th:nth-child(5) {
.snarkTorrents tfoot th:nth-child(5), .snarkTorrents td.snarkTorrentRateUp {
max-width: 0 !important; max-width: 0 !important;
overflow: hidden; overflow: hidden;
white-space: nowrap; white-space: nowrap;
@ -1821,19 +2029,26 @@ _:-ms-lang(x), *, *:hover, *:focus, input, input:hover, input:focus, a:hover, a:
display: none; display: none;
} }
.snarkTorrents td:first-child img, .snarkTorrents td:nth-child(3) img, .snarkTorrents td:nth-child(4) img { .snarkGraphicStatus img, .snarkTrackerDetails img, .snarkTorrentDetails img {
max-height: 14px !important; max-height: 14px !important;
width: auto; width: auto;
} }
.snarkGraphicStatus, .snarkTorrentStatus {
width: 0;
}
.snarkTorrentETA, .snarkTorrentUploaded, .snarkTorrentRateDown, .snarkTorrentRateUp {
min-width: 0;
}
.snarkTorrents thead img { .snarkTorrents thead img {
max-height: 18px !important; max-height: 18px !important;
width: auto; width: auto;
} }
.snarkTorrents thead th:nth-child(1), .snarkTorrents td:nth-child(1) { .snarkGraphicStatus {
width: 18px !important; max-width: 24px !important;
padding: 0;
} }
.snarkTorrentAction { .snarkTorrentAction {
@ -1905,7 +2120,15 @@ body, td, .snarkMessages li, .snarkMessages a, button, input, select, .snarkAddI
font-weight: bold; font-weight: bold;
} }
.snarkTorrents td:nth-child(2), .snarkTorrents td:nth-child(2) a { .snarkGraphicStatus {
max-width: 28px !important;
}
th.snarkTorrentStatus {
text-align: right !important;
}
.snarkTorrentStatus, .snarkTorrentStatus a {
white-space: nowrap; white-space: nowrap;
font-weight: bold; font-weight: bold;
} }
@ -1914,12 +2137,13 @@ body, td, .snarkMessages li, .snarkMessages a, button, input, select, .snarkAddI
display: none; display: none;
} }
b.alwaysShow { .percentBarOuter, .percentBarText {
display: inline; line-height: 11px !important;
height: 12px !important;
} }
.snarkTorrentDownloaded .percentBarText, .snarkTorrentDownloaded .percentBarOuter { b.alwaysShow {
width: 100px !important; display: inline;
} }
} }
@ -1937,6 +2161,14 @@ b.alwaysShow {
a.snarkRefresh:first-child { a.snarkRefresh:first-child {
padding-left: 26px !important; padding-left: 26px !important;
} }
.snarkTorrentDownloaded .percentBarText, .snarkTorrentDownloaded .percentBarOuter {
width: 100px !important;
}
.peerinfo .snarkTorrentDownloaded .percentBarText, .peerinfo .snarkTorrentDownloaded .percentBarOuter {
width: 80px !important;
}
} }
@media screen and (max-width: 1400px) { @media screen and (max-width: 1400px) {
@ -1958,18 +2190,30 @@ a.snarkRefresh:first-child {
pointer-events: none; /* hide tooltip */ pointer-events: none; /* hide tooltip */
} }
.snarkTorrentAction {
padding-right: 3px !important;
}
#configs tr:nth-last-child(n+4) td { #configs tr:nth-last-child(n+4) td {
padding-top: 3px; padding-top: 3px;
padding-bottom: 3px; padding-bottom: 3px;
} }
.snarkTorrentStatus {
padding-right: 10px;
}
.snarkTorrentName { .snarkTorrentName {
padding-left: 4px; padding-left: 4px;
} }
.snarkTorrentRateUp, .snarkTorrents tfoot th.snarkTorrentRateUp, .peerinfo .snarkTorrentRateUp {
padding-right: 10px !important;
}
} }
@media screen and (min-width: 1400px) { @media screen and (min-width: 1400px) {
body, td, button, input, select, .snarkAddInfo, code, tt, th, a, a:link, textarea { body, td, button, input, select, .snarkAddInfo, code, tt, th, a, a:link, textarea, .snarkCommentInfo textarea {
font-size: 10pt !important; font-size: 10pt !important;
} }
@ -2032,7 +2276,7 @@ input[type="submit"] {
.debuginfo td { .debuginfo td {
font-size: 10pt !important; font-size: 10pt !important;
word-spacing: 0em; word-spacing: 0;
padding-top: 4px !important; padding-top: 4px !important;
padding-bottom: 4px !important; padding-bottom: 4px !important;
} }
@ -2059,197 +2303,3 @@ input[type="submit"] {
/* end responsive layout */ /* end responsive layout */
/* Comments Section */
/* TODO: merge with other rules where applicable */
.snarkCommentInfo, .snarkComments {
margin: 10px 0 0 !important;
border: 1px solid #7778bf;
border-left: none;
border-right: none;
}
.snarkCommentInfo th, .snarkComments th {
padding: 8px 5px;
}
.snarkCommentInfo tr:nth-child(even), .snarkComments tr:nth-child(even) {
border-top: 1px solid #bbf;
background: repeating-linear-gradient(135deg, rgba(255, 255, 255, 0.5) 2px, rgba(240, 240, 255, 0.3) 3px, #fff 5px) #fff;
}
.snarkCommentInfo tr:nth-child(odd), .snarkComments tr:nth-child(odd) {
border-top: 1px solid #bbf;
background: repeating-linear-gradient(45deg, rgba(255, 255, 255, 0.5) 2px, rgba(221, 221, 255, 0.3) 3px, #fff 5px) #fff;
}
.snarkCommentInfo th {
padding: 8px 5px;
background: url(images/comment.png) 8px center no-repeat, linear-gradient(to bottom, #fff 50%, rgb(240, 240, 255));
padding-left: 30px;
}
.snarkCommentInfo td, .snarkComments td {
padding: 8px 5px;
}
.snarkCommentInfo td:first-child {
white-space: nowrap;
}
.snarkCommentInfo td:first-child {
font-weight: bold;
}
.snarkCommentInfo td:first-child::after, .snarkComments td:first-child::after {
content: "";
display: inline-block;
min-height: 32px;
vertical-align: middle;
}
.snarkCommentInfo input.accept {
float: right;
margin-right: 5px !important;
}
.snarkCommentInfo textarea { /* remember to set 10pt @ > 1400px */
width: 100%;
min-height: 64px;
height: 64px;
resize: vertical;
}
.snarkComments tr:first-child, .snarkComments tr:last-child {
text-align: left;
border-top: 1px solid #7778bf !important;
}
.commentRating, .commentAuthor {
width: 1%;
}
#nameRequired {
float: right;
margin-right: 5px;
}
.commentRating {
padding-right: 10px !important;
}
.commentRating img {
margin: 0;
padding: 0;
width: 16px;
height: 16px;
}
.commentDate {
width: 100px;
background: url(images/clock.png) left center no-repeat;
padding-left: 20px !important;
}
.snarkCommentInfo td:first-child, .snarkComments td:first-child {
width: 160px !important;
padding-right: 2px;
}
.snarkCommentInfo td:last-child, .snarkComments td:last-child {
width: 1% !important;
}
.snarkComments td {
white-space: nowrap;
}
.commentAuthorName {
background: url(images/author.png) left center no-repeat;
padding-left: 20px;
}
.commentText {
white-space: normal;
text-align: justify;
width: 90%;
}
.commentWrapper {
border: 1px solid #bbf;
margin: 2px 0;
padding: 8px 10px 8px 26px;
border-radius: 3px;
box-shadow: inset 0 0 0 1px #fff, 0 0 1px 0 rgba(0,0,0,0.3);
background: url(images/comment.png) 6px center no-repeat #eef;
background-blend-mode: luminosity;
}
.commentText .optbox {
position: fixed;
right: 20px;
top: 10px;
}
#commentsConfig .optbox {
vertical-align: middle !important;
}
.snarkComments select {
margin-right: 0 !important;
}
#commentDeleteAction {
border-top: 1px solid #bbf;
background: linear-gradient(to bottom, #fff, #eef);
}
#commentDeleteAction td {
padding-right: 6px;
}
.commentAction, .commentDelete {
width: 1%;
white-space: nowrap;
/* min-width: 180px !important;*/
padding-left: 0;
}
.addCommentText, .commentText {
padding-right: 0;
}
.commentAction input[type="submit"] {
margin-top: 10px;
margin-bottom: 10px;
}
.commentDelete {
text-align: left;
}
#newRating td {
padding-top: 10px !important;
padding-bottom: 10px !important;
}
#myRating td:empty {
padding: 0 !important;
border-top: none !important;
border-bottom: none !important;
}
#myRating td:empty::after { /* hides My Ratings row when Ratings disabled */
min-height: 1px !important;
}
.commentRating img {
margin: 0 0 4px;
padding: 0;
font-size: 14pt;
color: #FF7200;
text-shadow: 0 0 1px #900;
filter: none;
}
/* end Comments section */

File diff suppressed because it is too large Load Diff

View File

@ -434,6 +434,8 @@ tfoot tr:nth-child(n+1) {
vertical-align: top; vertical-align: top;
} }
/* main torrents listing */
.snarkTorrents { .snarkTorrents {
background: #212; background: #212;
margin: 0; margin: 0;
@ -451,6 +453,10 @@ tfoot tr:nth-child(n+1) {
} }
} }
.snarkTorrents tr, .snarkTorrents td {
border-top: 1px solid #202 !important;
}
.snarkTorrents thead th { .snarkTorrents thead th {
border-top: 1px solid transparent !important; border-top: 1px solid transparent !important;
} }
@ -464,15 +470,96 @@ tfoot tr:nth-child(n+1) {
max-width: 45px; max-width: 45px;
} }
.snarkTorrents thead th:first-child { .snarkGraphicStatus, .snarkTorrentStatus {
text-align: center !important; white-space: nowrap;
width: 16px !important; width: 1%;
} }
.snarkTorrents thead th:nth-child(2) { .snarkGraphicStatus {
text-align: left; text-align: center !important;
min-width: 50px; }
}
.snarkTorrentStatus {
font-weight: normal !important;
padding: 2px 2px 2px 0 !important;
line-height: 110%;
text-align: left !important;
}
th.snarkTorrentStatus {
text-align: center !important;
}
.snarkTrackerDetails, .SnarkTorrentDetails {
width: 16px;
padding: 2px 0;
}
.snarkTrackerDetails {
text-align: right;
}
.snarkTorrentName {
line-height: 110%;
padding: 2px 1px 2px 3px;
}
.snarkTorrentRateUp, .snarkTorrentRateDown, .snarkTorrentDownloaded, .snarkTorrentUploaded, .snarkFileSize, .snarkTorrentStatus, .snarkFileName {
font-size: 8pt;
font-weight: bold;
padding: 0 3px;
line-height: 100%;
}
.snarkTorrentUploaded, .snarkTorrentRateUp {
color: #b9b !important;
}
.snarkTorrentRateDown {
color: #76a !important;
}
.snarkTorrentETA, .snarkTorrentUploaded, .snarkTorrentRateDown, .snarkTorrentRateUp {
width: 5%;
min-width: 40px;
white-space: nowrap;
}
.snarkTorrentETA {
font-weight: bold;
font-style: italic;
color: #dd7 !important;
line-height: 120%;
}
.snarkTorrentAction {
padding: 1px 2px 1px 1px !important;
text-align: center;
width: 1%;
white-space: nowrap;
}
th.snarkTorrentAction input[type="image"] {
padding: 0;
max-width: 32px;
background: #40003f;
border-radius: 2px;
border: 1px solid #202;
}
th.snarkTorrentAction input[type="image"]:hover {
border: 1px solid #f60;
}
.snarkTorrentAction img {
margin: 0 2px !important;
opacity: 0.6;
}
.snarkTorrentAction img:hover {
box-shadow: 0 0 1px 1px #f90;
opacity: 1;
}
.snarkTorrents tfoot { .snarkTorrents tfoot {
background: #101; background: #101;
@ -505,19 +592,10 @@ tfoot tr:nth-child(n+1) {
text-align: right; text-align: right;
} }
.snarkTorrents td:nth-child(3), .SnarkTorrents td:nth-child(4) { .peerinfo td:nth-child(3), .peerinfo td:nth-child(4) {
width: 16px;
padding: 2px 0;
}
.snarkTorrents .peerinfo td:nth-child(3), .snarkTorrents .peerinfo td:nth-child(4) {
padding: 2px 4px; padding: 2px 4px;
} }
.snarkTorrents td:nth-child(3) {
text-align: right;
}
.snarkTorrents tt { .snarkTorrents tt {
font-family: "Noto Mono", "Droid Sans Mono", "Lucida Console", "DejaVu Sans Mono", monospace; font-family: "Noto Mono", "Droid Sans Mono", "Lucida Console", "DejaVu Sans Mono", monospace;
color: #cc0; color: #cc0;
@ -525,6 +603,27 @@ tfoot tr:nth-child(n+1) {
margin-right: 2px; margin-right: 2px;
} }
#totals span, #ourDest {
white-space: nowrap;
}
.snarkTorrentNoneLoaded {
padding: 10px;
background: #323;
font-size: 8.5pt;
font-weight: bold;
text-align: center !important;
color: #bbb !important;
border-radius: 0 0 2px 2px;
}
.snarkTorrents th:empty + th:empty, .snarkTorrents td:empty + td:empty, .snarkTorrentETA:empty, .snarkTorrentAction:empty {
width: 0 !important;
min-width: 0 !important;
}
/* end main torrents listing */
td { td {
padding: 2px 4px; padding: 2px 4px;
color: #ddd !important; color: #ddd !important;
@ -541,78 +640,6 @@ td:first-child {
font-size: 8pt; font-size: 8pt;
} }
.center {
text-align: center !important;
}
.snarkTorrentName {
line-height: 110%;
padding: 2px 1px 2px 3px;
}
.snarkTorrentName img {
padding: 1px;
text-align: left;
vertical-align: middle;
}
.snarkTorrentAction {
padding: 1px !important;
text-align: center;
width: 1%;
white-space: nowrap;
}
.snarkTorrents thead th:last-child {
white-space: nowrap !important;
text-align: center;
padding-right: 4px;
width: 1%;
}
.snarkTorrents th:last-child input[type="image"] {
padding: 0;
max-width: 32px;
background: #40003f;
border-radius: 2px;
border: 1px solid #202;
}
.snarkTorrents th:last-child input[type="image"]:hover {
border: 1px solid #f60;
}
.snarkTorrentAction img {
margin: 0 2px !important;
opacity: 0.6;
}
.snarkTorrentAction img:hover {
box-shadow: 0 0 1px 1px #f90;
opacity: 1;
}
.snarkTorrentNoneLoaded {
padding: 10px;
background: #323;
font-size: 8.5pt;
font-weight: bold;
text-align: center !important;
color: #bbb !important;
border-radius: 0 0 2px 2px;
}
.snarkTorrentStatus {
padding: 2px 2px 2px 0;
line-height: 110%;
text-align: left !important;
}
.snarkTorrentStatus img {
margin-right: 10px !important;
margin-left: 6px;
}
img[src$="details.png"] { img[src$="details.png"] {
mix-blend-mode: luminosity; mix-blend-mode: luminosity;
} }
@ -621,33 +648,6 @@ a img[src$="details.png"]:hover, a:focus img[src$="details.png"] {
mix-blend-mode: initial !important; mix-blend-mode: initial !important;
} }
.snarkTorrentRateUp, .snarkTorrentRateDown, .snarkTorrentDownloaded, .snarkTorrentUploaded, .snarkFileSize, .snarkTorrentStatus, .snarkFileName {
font-size: 8pt;
font-weight: bold;
padding: 0 3px;
line-height: 100%;
}
.snarkTorrentStatus {
font-weight: normal;
}
.snarkTorrents td:nth-child(2) {
padding-left: 0;
}
.snarkTorrentUploaded {
color: #b9b !important;
}
.snarkTorrentRateUp {
color: #b9b !important;
}
.snarkTorrentRateDown {
color: #76a !important;
}
.snarkTorrentOdd { .snarkTorrentOdd {
background: #351933; background: #351933;
font-size: 8pt; font-size: 8pt;
@ -658,10 +658,6 @@ a img[src$="details.png"]:hover, a:focus img[src$="details.png"] {
background: #270027; background: #270027;
} }
.snarkTorrents tr, .snarkTorrents td {
border-top: 1px solid #202 !important;
}
.snarkTorrentEven + .snarkTorrentEven:nth-child(even), .snarkTorrentOdd + .snarkTorrentOdd:nth-child(even) { .snarkTorrentEven + .snarkTorrentEven:nth-child(even), .snarkTorrentOdd + .snarkTorrentOdd:nth-child(even) {
background: #303; background: #303;
background: linear-gradient(to right, #404, #404 5px, #313 5px, #404); background: linear-gradient(to right, #404, #404 5px, #313 5px, #404);
@ -699,7 +695,7 @@ a img[src$="details.png"]:hover, a:focus img[src$="details.png"] {
text-align: right !important; text-align: right !important;
} }
table.snarkTorrents tbody tr:hover, table.snarkDirInfo tbody tr:hover { .snarkTorrents tbody tr:hover, .snarkDirInfo tbody tr:hover {
background: #58165e !important; background: #58165e !important;
background: linear-gradient(to bottom, #58165e 0%, #4a0d56 100%) !important; background: linear-gradient(to bottom, #58165e 0%, #4a0d56 100%) !important;
border-top: 1px solid #101 !important; border-top: 1px solid #101 !important;
@ -711,12 +707,12 @@ tr:hover .percentBarText {
} }
/* MS Edge fix */ /* MS Edge fix */
_:-ms-lang(x), table.snarkTorrents tbody tr:hover, table.snarkDirInfo tbody tr:hover { _:-ms-lang(x), .snarkTorrents tbody tr:hover, .snarkDirInfo tbody tr:hover {
box-shadow: none !important; box-shadow: none !important;
background: #58165e !important; background: #58165e !important;
} }
table.snarkTorrents tbody tr:hover .snarkTorrentName, table.snarkDirInfo tbody tr:hover td .snarkFileName { .snarkTorrents tbody tr:hover .snarkTorrentName, .snarkDirInfo tbody tr:hover td .snarkFileName {
color: #fff !important; color: #fff !important;
} }
@ -765,13 +761,6 @@ table.snarkTorrents tbody tr:hover .snarkTorrentName, table.snarkDirInfo tbody t
opacity: 0.7; opacity: 0.7;
} }
.snarkTorrentETA {
font-weight: bold;
font-style: italic;
color: #dd7 !important;
line-height: 120%;
}
.snarkTorrentInfo img { .snarkTorrentInfo img {
max-height: 16px !important; max-height: 16px !important;
margin: 1px 2px 2px 4px !important; margin: 1px 2px 2px 4px !important;
@ -810,6 +799,13 @@ table.snarkTorrents tbody tr:hover .snarkTorrentName, table.snarkDirInfo tbody t
background: #351933; background: #351933;
} }
#infohash {
color: #cc0;
-moz-user-select: all;
-webkit-user-select: all;
user-select: all;
}
#torrentInfoControl td { #torrentInfoControl td {
text-align: right !important; text-align: right !important;
border-top: 1px solid #101; border-top: 1px solid #101;
@ -824,14 +820,14 @@ table.snarkTorrents tbody tr:hover .snarkTorrentName, table.snarkDirInfo tbody t
padding: 8px 5px !important; padding: 8px 5px !important;
} }
table.SnarkTorrentInfo, table.snarkDirInfo { .SnarkTorrentInfo, .snarkDirInfo {
margin: 0 !important; margin: 0 !important;
border: 1px solid #101; border: 1px solid #101;
background: #270027; background: #270027;
filter: drop-shadow(0 0 1px rgba(16, 8, 16, 0.7)) !important; filter: drop-shadow(0 0 1px rgba(16, 8, 16, 0.7)) !important;
} }
table.snarkDirInfo { .snarkDirInfo {
margin-top: 10px !important; margin-top: 10px !important;
} }
@ -1004,7 +1000,7 @@ _:-ms-lang(x), .snarkDirInfo img, .snarkTorrents img {
transition: ease all 0.3s; transition: ease all 0.3s;
} }
div.snarkNewTorrent { .snarkNewTorrent {
font-size: 8pt; font-size: 8pt;
margin-top: -1px; margin-top: -1px;
} }
@ -1054,7 +1050,7 @@ table#trackerselect {
user-select: all; user-select: all;
} }
.toggleview, .snarkConfigTitle, .snarknavbar, img, input[type="image"] { .toggleview, .snarkConfigTitle, .snarknavbar, img, input[type="image"], label {
-moz-user-select: none; -moz-user-select: none;
-webkit-user-select: none; -webkit-user-select: none;
user-select: none; user-select: none;
@ -1366,6 +1362,14 @@ textarea[name="i2cpOpts"] {
overflow: hidden; overflow: hidden;
} }
input[name="nofilter_commentsName"] {
max-width: 249px;
}
input[name="nofilter_commentsName"]:focus::placeholder {
opacity: 0;
}
input[type=text]:active, input[type=text]:focus, input.r:focus, input[name="nofilter_dataDir"]:focus, textarea:focus { input[type=text]:active, input[type=text]:focus, input.r:focus, input[name="nofilter_dataDir"]:focus, textarea:focus {
background: #d60; background: #d60;
background: linear-gradient(to bottom, #d60, #c50); background: linear-gradient(to bottom, #d60, #c50);
@ -1399,7 +1403,7 @@ input[type="radio"], input[type="checkbox"], select, input[type="submit"], label
} }
input[type=text], input.r, select { input[type=text], input.r, select {
min-width: 110px; min-width: 120px;
} }
input[name="upBW"] + i { input[name="upBW"] + i {
@ -1676,7 +1680,7 @@ img[src$="magnet.png"] {
background-size: 84px 82px, 100% 100%; background-size: 84px 82px, 100% 100%;
} }
.configsectionpanel, .configsectionpanel td, .snarkNewTorrent, .snarkNewTorrent td, .snarkAddInfo, .configsectionpanel, .configsectionpanel td, .snarkNewTorrent, .snarkNewTorrent td, .snarkAddInfo,
select, input, input.r, input[name="nofilter_dataDir"], textarea[name="i2cpOpts"], a.control { select, input, input.r, input[name="nofilter_dataDir"], textarea[name="i2cpOpts"], a.control {
font-family: "Droid Sans", "Noto Sans", Ubuntu, "Segoe UI", "Lucida Grande", "DejaVu Sans", Verdana, sans-serif; font-family: "Droid Sans", "Noto Sans", Ubuntu, "Segoe UI", "Lucida Grande", "DejaVu Sans", Verdana, sans-serif;
font-size: 9pt !important; font-size: 9pt !important;
@ -1735,17 +1739,17 @@ select, input, input.r, input[name="nofilter_dataDir"], textarea[name="i2cpOpts"
margin-top: 1px; margin-top: 1px;
} }
div.configsection table { .configsection table {
color: #ffb; color: #ffb;
opacity: 1; opacity: 1;
} }
div.configsection a, label.toggleview { .configsection a, label.toggleview {
color: #f60; color: #f60;
text-shadow: 0 0 1px #000; text-shadow: 0 0 1px #000;
} }
div.configsection a:hover, .snarkConfig .snarkConfigTitle:hover a, .snarkConfig .snarkConfigTitle a:focus { .configsection a:hover, .snarkConfig .snarkConfigTitle:hover a, .snarkConfig .snarkConfigTitle a:focus {
color: #d2baff; color: #d2baff;
text-decoration: none; text-decoration: none;
} }
@ -2024,7 +2028,7 @@ hr.debug + hr {
margin-bottom: -7px; margin-bottom: -7px;
} }
tr.dhtDebug th { .dhtDebug th {
white-space: normal; white-space: normal;
word-break: break-all; word-break: break-all;
border-top: 1px solid #313; border-top: 1px solid #313;
@ -2145,15 +2149,6 @@ input#toggle_debug:checked + label + #dhtDebugInner {
font-weight: bold; font-weight: bold;
} }
.priority {
font-size: 8pt;
vertical-align: middle;
text-align: right !important;
padding-right: 15px;
white-space: nowrap;
width: 1%;
}
.priority::after { .priority::after {
content: ""; content: "";
display: inline-block; display: inline-block;
@ -2272,6 +2267,221 @@ input#toggle_debug:checked + label + #dhtDebugInner {
margin: 8px; margin: 8px;
} }
/* Comments Section */
/* TODO: merge with other rules where applicable */
#snarkCommentSection {
filter: drop-shadow(0px 0 1px rgba(16, 8, 16, 0.7));
}
.snarkCommentInfo, .snarkComments {
margin: 10px 0 0 !important;
background: #270027 none repeat scroll 0 0;
border: 1px solid #101;
filter: none;;
}
.snarkComments {
margin-top: -1px !important;
}
.snarkCommentInfo th {
background: url(images/comment.png) 8px center no-repeat, linear-gradient(to bottom, #202, #101);
padding: 8px 5px 8px 30px !important;
}
.snarkCommentInfo tr:nth-child(even), .snarkComments tr:nth-child(odd) {
background: #351933;
border-bottom: 1px solid #101;
}
.snarkCommentInfo tr:nth-child(odd), .snarkComments tr:nth-child(even) {
background: #270027;
border-bottom: 1px solid #101;
}
.snarkCommentInfo th {
padding: 8px 5px;
}
.snarkCommentInfo td, .snarkComments td {
padding: 8px 5px;
}
.snarkCommentInfo td:first-child {
white-space: nowrap;
}
.snarkCommentInfo td:first-child {
font-weight: bold;
}
.snarkCommentInfo td:first-child::after, .snarkComments td:first-child::after {
content: "";
display: inline-block;
min-height: 32px;
vertical-align: middle;
}
.snarkCommentInfo input.accept {
float: right;
margin-right: 5px !important;
}
.snarkCommentInfo textarea {
font-family: "Droid Sans", "Noto Sans", Ubuntu, "Segoe UI", "Lucida Grande", "DejaVu Sans", Verdana, sans-serif;
width: 100%;
min-height: 64px;
height: 64px;
resize: vertical;
}
.commentRating, .commentAuthor {
width: 1%;
}
#nameRequired {
float: right;
margin-right: 5px;
}
.commentRating {
padding-right: 10px !important;
}
.commentRating img {
margin: 0;
padding: 0;
height: 16px;
width: 16px;
}
.commentDate {
width: 100px;
background: url(images/clock.png) left center no-repeat;
padding-left: 20px !important;
}
.snarkCommentInfo td:first-child, .snarkComments td:first-child {
min-width: 160px !important;
width: 160px !important;
padding-right: 2px;
}
.snarkCommentInfo td:last-child, .snarkComments td:last-child {
width: 1% !important;
}
.snarkComments td {
white-space: nowrap;
}
.commentAuthorName {
background: url(images/author.png) left center no-repeat;
padding-left: 20px;
}
.commentText {
white-space: normal;
text-align: justify;
width: 90%;
}
.commentWrapper {
border: 1px solid #101;
margin: 2px 0;
padding: 8px 10px 8px 26px;
border-radius: 3px;
background: #303;
box-shadow: inset 0 0 0 1px #515, 0 0 1px 0 rgba(0,0,0,0.3);
background: url(images/comment.png) 6px center no-repeat #303;
background-blend-mode: luminosity;
}
.snarkComments select {
margin-right: 0 !important;
}
#commentDeleteAction {
background: linear-gradient(to bottom, #202, #101);
box-shadow: inset 0 0 0 1px #303;
}
#commentDeleteAction td {
padding-right: 6px;
}
.commentAction, .commentDelete {
width: 1%;
white-space: nowrap;
padding-left: 0;
}
.addCommentText, .commentText {
padding-right: 0;
}
.commentAction input[type="submit"] {
margin-top: 8px;
margin-bottom: 8px;
}
.commentDelete {
text-align: center;
padding: 5px 8px 5px 22px !important;
background: url(images/nuke.png) 2px center no-repeat;
}
.commentDelete .optbox {
margin: 0;
}
#newRating td {
padding-top: 10px !important;
padding-bottom: 10px !important;
}
#newRating td:first-child {
text-align: center;
}
#newRating select {
width: 90%;
}
#myRating td:empty {
padding: 0 !important;
border-top: none !important;
border-bottom: none !important;
}
#myRating td:empty::after { /* hides My Ratings row when Ratings disabled */
min-height: 1px !important;
}
.commentRating img {
margin: 0 0 2px;
padding: 0;
font-size: 14pt;
color: #FF7200;
text-shadow: 0 0 1px #900;
filter: drop-shadow(0 0 1px rgba(153, 51, 0, 0.6));
}
.commentsSection {
background: linear-gradient(to bottom, #545 0%, #434 100%);
margin: 0 0 10px 0;
padding: 0 10px 10px;
border: 1px solid #101;
color: #ddd;
border-radius: 4px;
box-shadow: inset 0 0 3px 0 #101;
word-wrap: break-word;
filter: drop-shadow(0 0 1px #515);
}
/* end Comments section */
/* MS Edge fix */ /* MS Edge fix */
_:-ms-lang(x), * { _:-ms-lang(x), * {
@ -2283,7 +2493,7 @@ _:-ms-lang(x), input[type="radio"], input[type="checkbox"] {
} }
input[type="checkbox"]:hover, input[type="checkbox"]:focus { input[type="checkbox"]:hover, input[type="checkbox"]:focus {
filter: sepia(100%) invert(100%) hue-rotate(58deg) brightness(80%) drop-shadow(0 0 3px f60) !important; filter: sepia(100%) invert(100%) hue-rotate(58deg) brightness(80%) drop-shadow(0 0 3px #f60) !important;
} }
/* end Edge fix */ /* end Edge fix */
@ -2329,7 +2539,7 @@ input[type="checkbox"]:hover, input[type="checkbox"]:focus {
margin: 5px; margin: 5px;
} }
table.snarkDirInfo { .snarkDirInfo {
margin-top: 6px !important; margin-top: 6px !important;
} }
@ -2337,15 +2547,25 @@ table.snarkDirInfo {
max-height: 20px; max-height: 20px;
} }
.snarkTorrents td:nth-child(2) { .snarkTorrentStatus {
white-space: nowrap; white-space: nowrap;
font-weight: bold !important;
} }
.snarkTorrents a, .snarkTorrentETA, .snarkTorrents tfoot th, .peerinfo td, .snarkTorrents td, .snarkTorrentInfo td, .snarkDirInfo td { .snarkTorrents a, .snarkTorrentETA, .snarkTorrents tfoot th, .peerinfo td, .snarkTorrents td, .snarkTorrentInfo td, .snarkDirInfo td {
font-size: 8pt; font-size: 8pt;
} }
.snarkTorrents td:first-child img { .snarkTorrents thead img {
max-height: 20px;
}
.snarkGraphicStatus {
padding-left: 0;
padding-right: 0;
}
td.snarkGraphicStatus img {
max-height: 16px; max-height: 16px;
} }
@ -2411,6 +2631,10 @@ b.alwaysShow {
white-space: nowrap; white-space: nowrap;
} }
.knownTracker td:nth-child(3) a {
max-width: 200px;
}
#trackerselect td a { #trackerselect td a {
max-width: 350px; max-width: 350px;
} }
@ -2542,7 +2766,7 @@ th, td, .choked, .unchoked {
letter-spacing: 0 !important; letter-spacing: 0 !important;
} }
body, .snarkTorrents td, .snarkAddInfo, th, td, .snarkFileName, .snarkFileStatus { body, .snarkTorrents td, .snarkAddInfo, th, td, .snarkFileName, .snarkFileStatus, .snarkCommentInfo textarea {
font-family: "Droid Sans", "Noto Sans", Ubuntu, "Segoe UI", "DejaVu Sans", Verdana, "Lucida Grande", Helvetica, sans-serif; font-family: "Droid Sans", "Noto Sans", Ubuntu, "Segoe UI", "DejaVu Sans", Verdana, "Lucida Grande", Helvetica, sans-serif;
font-size: 10pt !important; font-size: 10pt !important;
} }
@ -2593,6 +2817,10 @@ input[type="submit"], input[type="reset"], select, select option, button, a.cont
max-width: none; max-width: none;
} }
.snarkTorrentAction {
padding-right: 3px !important;
}
.snarkTorrents tt { .snarkTorrents tt {
font-size: 10pt; font-size: 10pt;
color: #cc0; color: #cc0;
@ -2605,6 +2833,15 @@ input[type="submit"], input[type="reset"], select, select option, button, a.cont
margin: 1px 3px !important; margin: 1px 3px !important;
} }
.priority {
font-size: 8pt;
vertical-align: middle;
text-align: right !important;
padding-right: 15px;
white-space: nowrap;
width: 1%;
}
tt, .snarkMessages, input, textarea { tt, .snarkMessages, input, textarea {
font-size: 9pt !important; font-size: 9pt !important;
} }
@ -2672,187 +2909,3 @@ select {
/* end responsive layout */ /* end responsive layout */
/* Comments Section */
/* TODO: merge with other rules where applicable */
.snarkCommentInfo, .snarkComments {
margin: 10px 0 0 !important;
background: #270027 none repeat scroll 0 0;
border: 1px solid #101;
filter: drop-shadow(0px 0 1px rgba(16, 8, 16, 0.7));
}
.snarkCommentInfo th {
background: url(images/comment.png) 8px center no-repeat, linear-gradient(to bottom, #202, #101);
padding: 8px 5px 8px 30px !important;
}
.snarkCommentInfo tr:nth-child(even), .snarkComments tr:nth-child(even) {
background: #351933;
border-bottom: 1px solid #101;
}
.snarkCommentInfo tr:nth-child(odd), .snarkComments tr:nth-child(odd) {
background: #270027;
border-bottom: 1px solid #101;
}
.snarkCommentInfo th {
padding: 8px 5px;
}
.snarkCommentInfo td, .snarkComments td {
padding: 8px 5px;
}
.snarkCommentInfo td:first-child {
white-space: nowrap;
}
.snarkCommentInfo td:first-child {
font-weight: bold;
}
.snarkCommentInfo td:first-child::after, .snarkComments td:first-child::after {
content: "";
display: inline-block;
min-height: 32px;
vertical-align: middle;
}
.snarkCommentInfo input.accept {
float: right;
margin-right: 5px !important;
}
.snarkCommentInfo textarea { /* remember to set 10pt @ > 1400px */
width: 100%;
min-height: 64px;
height: 64px;
resize: vertical;
}
.snarkComments th {
text-align: left;
}
.commentRating, .commentAuthor {
width: 1%;
}
#nameRequired {
float: right;
margin-right: 5px;
}
.commentRating {
padding-right: 10px !important;
}
.commentRating img {
margin: 0;
padding: 0;
height: 16px;
width: 16px;
}
.commentDate {
width: 100px;
background: url(images/clock.png) left center no-repeat;
padding-left: 20px !important;
}
.snarkCommentInfo td:first-child, .snarkComments td:first-child {
width: 160px !important;
padding-right: 2px;
}
.snarkCommentInfo td:last-child, .snarkComments td:last-child {
width: 1% !important;
}
.snarkComments td {
white-space: nowrap;
}
.commentAuthorName {
background: url(images/author.png) left center no-repeat;
padding-left: 20px;
}
td.commentText {
white-space: normal;
text-align: justify;
width: 90%;
}
.commentWrapper {
border: 1px solid #101;
margin: 2px 0;
padding: 8px 10px 8px 26px;
border-radius: 3px;
background: #303;
box-shadow: inset 0 0 0 1px #515, 0 0 1px 0 rgba(0,0,0,0.3);
background: url(images/comment.png) 6px center no-repeat #303;
background-blend-mode: luminosity;
}
.snarkComments select {
margin-right: 0 !important;
}
#commentDeleteAction {
background: linear-gradient(to bottom, #202, #101);
box-shadow: inset 0 0 0 1px #303;
}
#commentDeleteAction td {
padding-right: 6px;
}
.commentAction, .commentDelete {
width: 1%;
white-space: nowrap;
min-width: 180px !important;
padding-left: 0;
}
.addCommentText, .commentText {
padding-right: 0;
}
.commentAction input[type="submit"] {
margin-top: 10px;
margin-bottom: 10px;
}
.commentDelete {
text-align: left;
}
#newRating td {
padding-top: 10px !important;
padding-bottom: 10px !important;
}
#myRating td:empty {
padding: 0 !important;
border-top: none !important;
border-bottom: none !important;
}
#myRating td:empty::after { /* hides My Ratings row when Ratings disabled */
min-height: 1px !important;
}
.commentRating img {
margin: 0 0 4px;
padding: 0;
font-size: 14pt;
color: #FF7200;
text-shadow: 0 0 1px #900;
filter: none;
}
/* end Comments section */

File diff suppressed because it is too large Load Diff