diff --git a/apps/routerconsole/java/src/net/i2p/router/web/HomeHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/HomeHelper.java index 9a1aae4a93..420d6bbeac 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/HomeHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/HomeHelper.java @@ -35,7 +35,7 @@ public class HomeHelper extends HelperBase { _x("Help") + S + _x("I2P Router Help") + S + "/help" + S + I + "support.png" + S + _x("Manage Plugins") + S + _x("Install and configure I2P plugins") + S + "/configplugins" + S + I + "plugin.png" + S + _x("Router Console") + S + _x("I2P Router Console") + S + "/console" + S + I + "info/console.png" + S + - _x("Torrents") + S + _x("Built-in anonymous BitTorrent Client") + S + "/i2psnark/" + S + I + "magnet.png" + S + + _x("Torrents") + S + _x("Built-in anonymous BitTorrent Client") + S + "/i2psnark/" + S + I + "i2psnark.png" + S + _x("Web Server") + S + _x("Local web server for hosting your own content on I2P") + S + "http://127.0.0.1:7658/" + S + I + "server_32x32.png" + S + ""; @@ -61,7 +61,7 @@ public class HomeHelper extends HelperBase { _x("Open4You") + S + _x("Free eepsite hosting with PHP and MySQL") + S + "http://open4you.i2p/" + S + I + "open4you-logo.png" + S + _x("Pastebin") + S + _x("Encrypted I2P Pastebin") + S + "http://zerobin.i2p/" + S + I + "paste_plain.png" + S + _x("Planet I2P") + S + _x("I2P News") + S + "http://planet.i2p/" + S + I + "world.png" + S + - _x("I2P Plugins") + S + _x("Add-on directory") + S + "http://i2pwiki.i2p/index.php?title=Plugins" + S + I + "plugin.png" + S + + _x("I2P Plugins") + S + _x("Add-on directory") + S + "http://i2pwiki.i2p/index.php?title=Plugins" + S + I + "info/plugin_link.png" + S + _x("Postman's Tracker") + S + _x("Bittorrent tracker") + S + "http://tracker2.postman.i2p/" + S + I + "magnet.png" + S + _x("Project Website") + S + _x("I2P home page") + S + "http://i2p-projekt.i2p/" + S + I + "info_rhombus.png" + S + //_x("lenta news [ru]") + S + _x("Russian News Feed") + S + "http://lenta.i2p/" + S + I + "lenta_main_logo.png" + S + diff --git a/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java index 615316a024..4f57dcf4ee 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java @@ -309,7 +309,7 @@ class NetDbRenderer { buf.append("\n") .append(""); if (_context.clientManager().isLocal(dest)) { - buf.append("\n\n"); if (!unpublished) { String host = _context.namingService().reverseLookup(dest); if (host == null) { - buf.append(""); } @@ -340,7 +340,7 @@ class NetDbRenderer { buf.append("").append(dest.toBase64().substring(0, 6)).append("") .append("\n") .append("\n") - .append(""); } @@ -361,7 +361,7 @@ class NetDbRenderer { if (c++ == medianCount) median = dist; } - buf.append(" Distance: ").append(fmt.format(biLog2(dist))).append(""); + buf.append(" Distance: ").append(fmt.format(biLog2(dist))).append(""); buf.append("\n
").append(_t("LeaseSet")).append(": ").append(key.toBase64()).append("" + _t("Local") + " "); + buf.append("" + _t("Local") + " "); boolean unpublished = ! _context.clientManager().shouldPublishLeaseSet(key); if (unpublished) buf.append(_t("Unpublished") + ' '); @@ -319,13 +319,13 @@ class NetDbRenderer { buf.append(in.getDestinationNickname()); else buf.append(dest.toBase64().substring(0, 6)); - buf.append("
"); + buf.append("
"); String b32 = dest.toBase32(); buf.append("").append(b32).append("").append("").append("").append(_t("Add to local addressbook")).append("
").append(b32).append("").append(_t("Add to local addressbook")).append("
"); //buf.append(dest.toBase32()).append("
"); buf.append("Signature type: ").append(dest.getSigningPublicKey().getType()); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java b/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java index 568253bfeb..271a96d553 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java @@ -82,7 +82,7 @@ public class StatsGenerator { out.write(buf.toString()); buf.setLength(0); for (String stat : stats) { - buf.append("
  • "); buf.append(stat); @@ -152,9 +152,9 @@ public class StatsGenerator { RateStat rate = _context.statManager().getRate(name); String d = rate.getDescription(); if (! "".equals(d)) { - buf.append(""); + buf.append(""); buf.append(d); - buf.append("
    "); + buf.append("

    "); } if (rate.getLifetimeEventCount() <= 0) { buf.append("
    • ").append(_t("No lifetime events")).append("
    \n"); @@ -177,14 +177,14 @@ public class StatsGenerator { buf.append(_t("Highest average")); buf.append(": "); buf.append(num(curRate.getExtremeAverageValue())); - buf.append("; "); + buf.append(". "); // This is rarely interesting // Don't bother to translate if (showAll) { buf.append("Highest total in a period: "); buf.append(num(curRate.getExtremeTotalValue())); - buf.append("; "); + buf.append(". "); } // Saturation stats, which nobody understands, even when it isn't meaningless @@ -198,32 +198,34 @@ public class StatsGenerator { buf.append(pct(curRate.getExtremeEventSaturation())); buf.append("; Peak saturated limit: "); buf.append(num(curRate.getExtremeSaturationLimit())); - buf.append("; "); + buf.append(". "); } + buf.append(""); buf.append(ngettext("There was 1 event in this period.", "There were {0} events in this period.", (int)curRate.getLastEventCount())); - buf.append(' '); + buf.append(" "); buf.append(_t("The period ended {0} ago.", DataHelper.formatDuration2(now - curRate.getLastCoalesceDate()))); + buf.append(""); } else { - buf.append(" ").append(_t("No events")).append(" "); + buf.append(" ").append(_t("No events")).append(" "); } long numPeriods = curRate.getLifetimePeriods(); if (numPeriods > 0) { double avgFrequency = curRate.getLifetimeEventCount() / (double)numPeriods; - buf.append(" (").append(_t("Average event count")).append(": "); + buf.append(" (").append(_t("Average event count")).append(": "); buf.append(num(avgFrequency)); buf.append("; ").append(_t("Events in peak period")).append(": "); // This isn't really the highest event count, but the event count during the period with the highest total value. buf.append(curRate.getExtremeEventCount()); - buf.append(")"); + buf.append(")"); } if (curRate.getSummaryListener() != null) { - buf.append("
    ").append(_t("Graph Data")).append(" - "); + buf.append("&w=600&h=200\">").append(_t("Graph Data")).append(" - "); buf.append(" ").append(_t("Graph Event Count")).append(""); + buf.append("&w=600&h=200&showEvents=true\">").append(_t("Graph Event Count")).append(""); // This can really blow up your browser if you click on it //buf.append(" - li::after { content: ""; display: block; width: 100%; height: 1px; - margin-top: -5px; border-top: 1px dotted #ddf; } @@ -2629,10 +2688,12 @@ li.noevents::after { } li.noevents { - margin: 5px 0 5px 15px !important; + margin: 0 0 5px 40px !important; font-style: italic; } +/* end stats page */ + h1 { text-align: left; color: #31334f; @@ -3568,11 +3629,6 @@ h3 + .statusnotes { div.joblog { border: 0; margin-top: 5px; - } - -div.joblog i { - color: #050; - font-weight: bold; } div.joblog ul { @@ -4329,7 +4385,7 @@ table#leasesetdebug th a:hover, table#leasesetsummary th a:hover { text-transform: none; letter-spacing: normal; word-spacing: normal; - background: linear-gradient(to bottom, #fff 50%, #eef 50%) !important; + background: linear-gradient(to bottom, #fff 50%, rgba(255, 255, 255, 0.6) 50%, rgba(240, 240, 240, 0.4)) #eef !important; background-size: 100% 100%; padding: 8px 5px; font-size: 9pt; @@ -4366,11 +4422,11 @@ table#leasesetdebug th a:hover, table#leasesetsummary th a:hover { white-space: nowrap; } -table#leasesetdebug, table.leaseset, table#leasesetsummary { +#leasesetdebug, table.leaseset, #leasesetsummary { font-size: 9pt; } -table#leasesetdebug td, table.leaseset td { +#leasesetdebug td, table.leaseset td { padding: 5px !important; } @@ -4378,19 +4434,19 @@ table#leasesetdebug td, table.leaseset td { margin-bottom: 10px; } -table.leaseset th { +.leaseset th { font-weight: normal; padding: 5px; text-align: left; font-size: 10pt; } -table.leaseset th:last-child, table.leaseset td:nth-child(2) { +.leaseset th:last-child, .leaseset td:nth-child(2) { text-align: right; padding-right: 5px; } -table#leasesetdebug, table#leasesetsummary { +#leasesetdebug, #leasesetsummary { margin-bottom: 14px !important; } @@ -4398,7 +4454,7 @@ table#leasesetdebug, table#leasesetsummary { margin-bottom: 5px; } -table#leasesetdebug th, table#leasesetsummary th { +#leasesetdebug th, #leasesetsummary th { font-weight: bold; padding: 8px; text-align: left; @@ -4408,49 +4464,52 @@ table#leasesetdebug th, table#leasesetsummary th { word-spacing: 0.1em; } -table#leasesetdebug th a { +#leasesetdebug th a { font-size: 9pt; text-transform: capitalize; letter-spacing: normal; word-spacing: normal; } -table#leasesetdebug th:last-child, table#leasesetsummary th:last-child { +#leasesetdebug th:last-child, #leasesetsummary th:last-child { text-align:right; white-space: nowrap; font-size: 9pt; } -table#leasesetdebug td:nth-child(odd) { +#leasesetdebug td:nth-child(odd) { width: 200px; white-space: nowrap; text-align: right; border-right: 1px inset #cfd1ff; } -table#leasesetdebug td:nth-child(even) { +#leasesetdebug td:nth-child(even) { text-align: left; white-space: nowrap; } -table#leasesetdebug td:nth-child(2) { +#leasesetdebug td:nth-child(2) { width: 10px; } -.leaseset tr:nth-child(2) td:last-child a:not(old) { +.addtobook { + text-align: right; +} + +.addtobook a:not(old) { font-size: 0; } -.leaseset tr:nth-child(2) td:last-child a::after { +.addtobook a::after { content: url(/themes/console/images/buttons/add_address.png); - filter: drop-shadow(0 0 1px #999); } -.leaseset tr:nth-child(2) td:last-child a:hover { +.addtobook a:hover { filter: drop-shadow(0 0 1px #f60); } -div#noleasesets { +#noleasesets { border: 1px solid #7778bf; padding: 20px; font-weight: bold; @@ -4460,7 +4519,7 @@ div#noleasesets { text-align: center; } -div#sybilnav { +#sybilnav { -moz-columns: 4; -webkit-columns: 4; columns: 4; @@ -4470,7 +4529,7 @@ div#sybilnav { border-radius: 2px; } -div#sybilnav, div#sybils_summary { +#sybilnav, #sybils_summary { border: 1px solid #7778bf; padding: 10px; margin-bottom: 10px; @@ -4507,7 +4566,7 @@ h3.sybils { display: inline-block; } -table.sybil_routerinfo { +.sybil_routerinfo { margin-bottom: 10px; } @@ -4515,7 +4574,7 @@ table.sybil_routerinfo { padding: 1px 1px 1px 6px !important; } -table.sybil_routerinfo:first-of-type th { +.sybil_routerinfo:first-of-type th { padding: 6px !important; } diff --git a/installer/resources/themes/console/midnight/console.css b/installer/resources/themes/console/midnight/console.css index 2c69ac8de6..fe824e9547 100644 --- a/installer/resources/themes/console/midnight/console.css +++ b/installer/resources/themes/console/midnight/console.css @@ -1588,7 +1588,7 @@ div.sorry hr { .main#news { background: #000 url(images/earth.jpg) no-repeat scroll bottom right !important; - background-size: auto 200px !important; + background-size: auto 180px !important; padding-bottom: 0; } @@ -1605,14 +1605,6 @@ div.sorry hr { min-width: 600px; } -/* -.newsentry font[size="-2"] { - letter-spacing: 0.15em; - font-style: italic; - text-transform: capitalize; -} -*/ - .main#news .newscontent { border: 1px solid #443da0; margin: -11px 0 10px; @@ -1720,7 +1712,6 @@ div.sorry hr { .messages #newsDisplay { display: inline-block; - white-space: normal; margin-left: 45px; } @@ -2453,7 +2444,6 @@ fieldset { div.joblog { border-radius: 2px 2px 0 0; - text-align: justify !important; overflow-y: hidden !important; margin-top: 10px !important; } @@ -2472,7 +2462,6 @@ div.main li:last-child { div.joblog li { word-wrap: break-word !important; - text-align: justify !important; line-height: 120% !important; margin: 2px 0 2px 30px; padding: 2px 20px 2px 0; @@ -2480,7 +2469,6 @@ div.joblog li { div.joblog ul { word-wrap: break-word !important; - text-align: justify; margin: 5px 0 -10px; } @@ -3643,7 +3631,7 @@ h3.stats { border-radius: 0; } -ul.statlist { +.statlist { border: 1px solid #443da0; margin-bottom: -21px !important; margin-top: -11px !important; @@ -3651,62 +3639,61 @@ ul.statlist { background: #000; } -ul.statlist:last-of-type { +div.main .statlist li:not(old) { + list-style: none !important; +} + +.statlist:last-of-type { margin-bottom: -1px !important; } @media screen and (-webkit-min-device-pixel-ratio:0) { -ul.statlist { +.statlist { margin-bottom: -25px !important; } -ul.statlist:last-of-type { +.statlist:last-of-type { margin-bottom: -6px !important; } } -ul.statlist a[name], ul.statlist b, ul.statlist li b, ul.statlist a[name]:hover { - color: #f3e8fc !important; +.statlist a[name], .statlist b, .statlist li b, .statlist a[name]:hover { text-decoration: none; letter-spacing: normal; } -ul.statlist li::before { - content: "\1F6C8\00A0"; +.statlist li::before { content: "\2B26\00A0"; font-size: 14pt; - line-height: 50%; vertical-align: baseline; - color: #f3e8fc; } -ul.statlist li { - line-height: 120% !important; +.statlist li { list-style: none; margin-bottom: -3px; } -ul.statlist li li { +.statlist li li { margin-left: 16px; margin-right: -20px; - line-height: 120% !important; + line-height: 140% !important; list-style: none; } -ul.statlist li li::before { +.statlist li li::before { content: "\279F\00A0"; vertical-align: baseline; } -ul.statlist li li:last-child::before { +.statlist li li:last-child::before { content: "\27A1\00A0"; } -ul.statlist li li:last-child { +.statlist li li:last-child { padding-bottom: 5px !important; } -.statlist a[href*="graph"]::before { +.statlist a[href^="graph"]::before { content: "\27A1\00A0"; font-size: 14pt; } @@ -3725,11 +3712,34 @@ ul.statlist li li:last-child { margin-top: 10px; } +.statlist li li b { + margin-right: 3px; +} + li.noevents { margin-top: 0 !important; margin-bottom: 10px !important; } +.nowrap { + white-space: nowrap; +} + +.statsViewGraphs { + display: inline-block; + margin: 5px 5px 0 20px; +} + +.statsLongName { + color: #37a3df; + font-weight: bold; +} + +p#gatherstats { + margin-top: 1px; + margin-bottom: 25px; +} + /* end stats */ h3#exploratorytunnels { @@ -3985,7 +3995,7 @@ table#externali2cp { } .infowarn#clientconf { - margin-bottom: -2px; + margin-bottom: 11px; } /* end /configclients */ @@ -5225,7 +5235,7 @@ span#distance { font-weight: bold; } -table#leasesetdebug, table#leasesetsummary { +#leasesetdebug, #leasesetsummary { margin-top: -4px; margin-bottom: 10px; } @@ -5241,7 +5251,7 @@ table#leasesetdebug, table#leasesetsummary { padding-right: 5px; } -table#leasesetdebug th, table#leasesetsummary th { +#leasesetdebug th, #leasesetsummary th { font-weight: bold; text-transform: uppercase; font-size: 10pt; @@ -5250,7 +5260,7 @@ table#leasesetdebug th, table#leasesetsummary th { padding: 8px 10px; } -table#leasesetdebug th a, table#leasesetsummary a { +#leasesetdebug th a, #leasesetsummary a { font-size: 9pt; text-transform: capitalize; letter-spacing: normal; @@ -5263,47 +5273,51 @@ table#leasesetdebug th a, table#leasesetsummary a { padding-left: 10px; } -table#leasesetdebug th:first-child, table#leasesetsummary th:first-child { +#leasesetdebug th:first-child, #leasesetsummary th:first-child { text-align:left; white-space: nowrap; } -table#leasesetdebug th:last-child, table#leasesetsummary th:last-child { +#leasesetdebug th:last-child, #leasesetsummary th:last-child { text-align:right; white-space: nowrap; } -table#leasesetdebug td:nth-child(odd) { +#leasesetdebug td:nth-child(odd) { width: 200px; white-space: nowrap; text-align: right; border-right: 1px inset #120f35; } -table#leasesetdebug td:nth-child(even) { +#leasesetdebug td:nth-child(even) { text-align: left; white-space: nowrap; } -table#leasesetdebug td:nth-child(2) { +#leasesetdebug td:nth-child(2) { width: 10px; } -table#leasesetdebug th a:not(old), table#leasesetsummary th a:not(old) { +#leasesetdebug th a:not(old), #leasesetsummary th a:not(old) { font-size: 0; } -table#leasesetdebug th a::after, table#leasesetsummary th a::after { +#leasesetdebug th a::after, #leasesetsummary th a::after { content: url(/themes/console/images/buttons/floodfill.png); vertical-align: text-top; padding-right: 0; } -.leaseset tr:nth-child(2) td:last-child a:not(old) { +.addtobook { + text-align: right; +} + +.addtobook a:not(old) { font-size: 0; } -.leaseset tr:nth-child(2) td:last-child a::after { +.addtobook a::after { content: url(/themes/console/images/buttons/add_address.png); } @@ -5316,7 +5330,7 @@ a.viewfullentry::after { vertical-align: text-top; } -div#noleasesets { +#noleasesets { background: #000 url(/themes/console/images/info/infohelp.png) 12px center no-repeat !important; padding: 15px 15px 15px 50px !important; border: 1px solid #443da0; @@ -5324,13 +5338,13 @@ div#noleasesets { text-align: left; } -div#sybilnav, div#sybils_summary { +#sybilnav, #sybils_summary { border: 1px solid #443da0; padding: 10px; margin-bottom: 10px; } -div#sybilnav { +#sybilnav { -moz-columns: 4 200px; -webkit-columns: 4 200px; columns: 4 200px; @@ -5405,7 +5419,7 @@ div#sybilnav { /* end sybilnav */ -table.sybil_routerinfo { +.sybil_routerinfo { margin-bottom: 10px; } @@ -5417,7 +5431,7 @@ table.sybil_routerinfo { text-align: left; } -table.sybil_routerinfo:first-of-type th { +.sybil_routerinfo:first-of-type th { padding: 6px !important; } @@ -5560,10 +5574,6 @@ p#debugmode, p#sybilinfo { margin-top: -4px; } -p#gatherstats { - margin-top: 1px; -} - td.optionsave { text-align: right; border-top: 1px solid #443da0; @@ -5621,7 +5631,7 @@ h3#webappconfig { } p#webappconfigtext { - margin: 1px 0 -2px 0; + margin: 1px 0 15px 0; background: #000 url(/themes/console/images/info/java_edit.png) 12px center no-repeat !important; background-size: 28px 28px !important; } @@ -6191,7 +6201,7 @@ div.app { min-width: 138px; } -.app:hover { +div.app:hover { cursor: pointer; } diff --git a/router/java/src/net/i2p/router/transport/UPnP.java b/router/java/src/net/i2p/router/transport/UPnP.java index 767bc12ba8..fee429bf35 100644 --- a/router/java/src/net/i2p/router/transport/UPnP.java +++ b/router/java/src/net/i2p/router/transport/UPnP.java @@ -676,7 +676,7 @@ public class UPnP extends ControlPoint implements DeviceChangeListener, EventLis /** warning - slow */ public String renderStatusHTML() { final StringBuilder sb = new StringBuilder(); - sb.append("

    ").append(_t("UPnP Status")).append("

    "); + sb.append("

    ").append(_t("UPnP Status")).append("

    "); synchronized(_otherUDNs) { if (!_otherUDNs.isEmpty()) { @@ -727,7 +727,7 @@ public class UPnP extends ControlPoint implements DeviceChangeListener, EventLis } } - sb.append("

    "); + sb.append("

    "); return sb.toString(); }