From d50c12dc7dd931e46d3de3bf5d7e74259c053e5c Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 3 Jun 2017 13:59:20 +0000 Subject: [PATCH] Console: - Add spans to /stats page to avoid summary info breaking mid-sentence, and to aid presentation - Adjust /stats CSS so information isn't over-dense - Set graph size for generated graphs on /stats to 600x200 - Fix netdb leaseset tables - Ensure we only iconify add to addressbook links and not b32 dests - Individual icons for I2PSnark and I2P Plugins on /home - Add div to upnpstatus on peers to comply with layout - Fix various unclosed/erroneous tags --- .../src/net/i2p/router/web/HomeHelper.java | 4 +- .../src/net/i2p/router/web/NetDbRenderer.java | 10 +- .../net/i2p/router/web/StatsGenerator.java | 28 ++-- history.txt | 12 ++ .../themes/console/classic/console.css | 83 ++++++----- .../resources/themes/console/dark/console.css | 51 ++++--- .../themes/console/images/i2psnark.png | Bin 0 -> 1705 bytes .../themes/console/light/console.css | 135 +++++++++++++----- .../themes/console/midnight/console.css | 120 +++++++++------- .../src/net/i2p/router/transport/UPnP.java | 4 +- 10 files changed, 278 insertions(+), 169 deletions(-) create mode 100644 installer/resources/themes/console/images/i2psnark.png 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(" - qOe!iWOiWBNGBOtz7feh{OiWBnOiWEpO-oBl8X6i*OiWBn zOgT9@K|w)GOiWBnOhZFM5fKsp{SW|y0D^u1{~jI;{}22C01_M$ga82l3k%!;0RR3Y z7ylan6&39O0ObGx|Nb%mCMNR$0RR3z%m4r{|1u!|BLK<*)6f9KzySaLOZ)f&SpQnx z+5w^f08IZ+0NDZn(gK{A0RR41J^w%_|0)9d1?%Vp0Pz9T z4z~dTl8*qr000{h5M*Ktb#ej#!U6E@0I#b6(f|M*9}^@H5DqR5%*X&l|3^3fIVC3* zP!JF_5D-ES4+}dBX9flV%PYPQI2)noh18)NW z>H-3I0sy-Kl?9-AuO3h}++Bi|cvatLVe#3m zArXI#1>7zyyn|@p)fbSOT3EOM!+#auGqCipZx?P& z3Dr%2kC5$WX4-{2t`37vJDAIm&jn`6%`T_{{h4RTaC4dz45g>rp7U!KtccG-EUh5@ z98;PZ@fJu}DJuG2FDhD)BHjeAga`R~c}1ZJ{U$Fje?d}R1Xi;0DZvf4Nzcz(l2jK< z*vqmDj-HjZ82J+X8kQ!q>;&sUf5OEk1}qGfOxOvA^^$&Akzdd8K;1(-L9kx(kPcF8 z!~xTTz5c<6B@Pb<`F(9IcY0dqaC*7~MR#){ zTEK&hZ&-mQN4keGx|tx$8ipQx>kCDeO>g3lzqU_}(VyJVY_s$Wp=jSVfG_L()q)u2)rwHV7nkYyBz|{Ic2S- z)CfYQmX^7XkbGwY2@*aOgkk&t#4zwGEiH!|LFVS>_?Oo(V$Ut$UUm>N8P=<-tDAuG zwzf2Clo741t);EZ3vp%<0ojAUvmKRXVr*=z3ux%*=xF0e4#62_8=8LR2@I3vKyG_` z`^ib|8=7Ekb@lM@kSb{eSD0zUpBdmYdD$Vo{iK$tsHoTg)*Ble8XDHtRu3uRG`=6f z=M3QJB+txLR_+2vqvhr09B~rdc=_E33DG=&t+P!!$(8$E;yq0 z_`{!wu^ZC)OS8`Qo2Ff85)Rhaxj_k{VXeasyxa+YVo)XQ2mN+78M4Ql1~x_@6a_oU z$=$&O&p|ZUiB~WZozFvktdGs?cQGW7zac#(WgZ4!Ez8Nt$y?Oe?6f&<y5OJG=e`oKy4E{4z?dH2j~$g9-84S zo2#@7ND2+mK7LLgo`fU^7ilWdm_9gL*gAe;p9Mb+P&sf`AGrr;3G8!0Hh}v_XA|9{ z(?|-g0F(25efRF|4iAq68Q$#!JaJJm;k!y00000NkvXXu0mjf^$+Gd literal 0 HcmV?d00001 diff --git a/installer/resources/themes/console/light/console.css b/installer/resources/themes/console/light/console.css index 8a963523f2..4e61627586 100644 --- a/installer/resources/themes/console/light/console.css +++ b/installer/resources/themes/console/light/console.css @@ -574,12 +574,22 @@ div.logo { box-shadow: inset 0 0 0 1px #bbf; } +div.logo:not(old) { + background: linear-gradient(to bottom, rgba(255,255,255,0.8), rgba(255,255,255,0.3)), url(images/noise.png) #fff; + background-size: 100% 100%, 50px 50px; +} + .logo hr { margin: 8px -10px; background: #7789bf; height: 1px } +.warning hr { + background: #7789bf; + background: linear-gradient(to right, #7789bf, #c2c4ef); +} + .logo a { display: inline-block !important; width: 100%; @@ -606,7 +616,7 @@ div.warning { } .warning:not(old) { - background: url("/themes/console/images/itoopie_sm.png") no-repeat scroll 10px center, linear-gradient(to bottom, rgba(255,255,255,0.8), rgba(255,255,255,0.3)), url(images/noise.png) #fff; + background: url("/themes/console/images/itoopie_sm.png") no-repeat scroll 10px center, linear-gradient(to bottom, rgba(255,255,255,0.8), rgba(255,255,255,0.3)), url(images/noise.png) #fff; background-size: 54px auto, 100% 100%, 50px 50px; background-position: 10px calc(50% + 16px); } @@ -615,7 +625,7 @@ div.warning { text-align: left; margin: -9px -24px 20px !important; border: none; - border-bottom: 1px solid #7789bf; + border-bottom: 1px solid #447; border-radius: 2px 2px 0 0; padding: 10px 10px 8px; font-size: 10.5pt; @@ -793,8 +803,9 @@ div.warning { letter-spacing: 0; word-spacing: 0; background: none; + border-radius: 0; border: none; - border-bottom: 1px solid #7778bf; + border-bottom: 1px solid #447 !important; padding-left: 0; margin-bottom: -5px; } @@ -2544,6 +2555,8 @@ p#enablefullstats, p#gatherstats { background-size: 28px 28px !important; } +/* stats page */ + p#gatherstats + form, ul.statlist { border: 1px solid #7778bf; padding: 10px; @@ -2571,6 +2584,13 @@ ul.statlist { box-shadow: inset 0 0 0 1px #fff; } +.joblog .statlist li { + line-height: 140% !important; + padding-top: 6px; + padding-bottom: 0; + margin-right: 5px; +} + .statlist li:not(old) { list-style: none !important; } @@ -2578,18 +2598,18 @@ ul.statlist { .statlist li::before, .statlist li a[href^="graph"]::before { content: ""; display: inline-block; - height: 5px; - width: 5px; - box-shadow: inset 0 0 0 1px #fff; - margin-left: -35px; + height: 4px !important; + width: 4px !important; + margin-left: -17px; margin-right: 10px; - margin-top: -2px; + margin-top: -4px; transform: rotate(45deg); vertical-align: middle; + opacity: 0.8; } .statlist li::before { - background: #335; + background: #779; border: 1px solid #335; } @@ -2598,7 +2618,7 @@ ul.statlist { border: 1px solid #3b6bbf; } -.statlist li a[href*="&"]::before { +.statlist li a[href$="&showEvents=true"]::before { display: none; } @@ -2609,12 +2629,51 @@ ul.statlist { vertical-align: middle; } +.statlist li.statsName::before { + background: #446; + box-shadow: inset 0 0 0 1px #fff !important; + height: 6px !important; + width: 6px !important; + opacity: 1; +} + +.statlist li li:last-child::before { + background: #335; +} + +.statsName i { + color: #050; + font-weight: bold; +} + +.statsName li i { + color: inherit; + font-weight: normal; +} + +.statsViewGraphs { + display: inline-block; + margin: 0 0 -5px 18px; +} + +.statsLongName { + display: inline-block; +} + +.statsLongName::first-letter { + text-transform: uppercase; +} + +.nowrap { + display: inline-block; + white-space: nowrap; +} + .statlist > 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(); }