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 d1ed9935bd..0cb6035ebb 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/NetDbRenderer.java @@ -384,12 +384,15 @@ class NetDbRenderer { buf.append(""); } + buf.append("\n"); buf.append("\n"); out.write(buf.toString()); buf.setLength(0); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/PeerHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/PeerHelper.java index 79a49e718d..80b7a7ac9e 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/PeerHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/PeerHelper.java @@ -344,49 +344,49 @@ public class PeerHelper extends HelperBase { } buf.append(".\n"); buf.append("
\n"); - buf.append(""); - buf.append("\n"); - buf.append("\n"); - buf.append("\n"); - buf.append("\n"); - buf.append("\n"); - buf.append("\n"); out.write(buf.toString()); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java index 164834cf74..05e43205f2 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/ProfileOrganizerRenderer.java @@ -205,23 +205,23 @@ class ProfileOrganizerRenderer { //buf.append("

").append(_t("Floodfill and Integrated Peers")) // .append(" (").append(integratedPeers.size()).append(")

\n"); buf.append("
").append(_t("Peer")).append("
"); + buf.append("
").append(_t("Peer")).append("
"); if (sortFlags != FLAG_ALPHA) appendSortLinks(buf, urlBase, sortFlags, _t("Sort by peer hash"), FLAG_ALPHA); - buf.append("
").append(_t("Dir")) - .append("").append(_t("IPv6")) - .append("").append(_t("Idle")).append("
"); + .append("
").append(_t("IPv6")) + .append("").append(_t("Idle")).append("
"); appendSortLinks(buf, urlBase, sortFlags, _t("Sort by idle inbound"), FLAG_IDLE_IN); buf.append(" / "); appendSortLinks(buf, urlBase, sortFlags, _t("Sort by idle outbound"), FLAG_IDLE_OUT); buf.append("
").append(_t("In/Out")).append("
"); + buf.append("
").append(_t("In/Out")).append("
"); appendSortLinks(buf, urlBase, sortFlags, _t("Sort by inbound rate"), FLAG_RATE_IN); buf.append(" / "); appendSortLinks(buf, urlBase, sortFlags, _t("Sort by outbound rate"), FLAG_RATE_OUT); buf.append("
").append(_t("Up")).append("
"); + buf.append("
").append(_t("Up")).append("
"); appendSortLinks(buf, urlBase, sortFlags, _t("Sort by connection uptime"), FLAG_UPTIME); - buf.append("
").append(_t("Skew")).append("
"); + buf.append("
").append(_t("Skew")).append("
"); appendSortLinks(buf, urlBase, sortFlags, _t("Sort by clock skew"), FLAG_SKEW); buf.append("
CWND
"); + buf.append("
CWND
"); appendSortLinks(buf, urlBase, sortFlags, _t("Sort by congestion window"), FLAG_CWND); - buf.append("
SST
"); + buf.append("
SST
"); appendSortLinks(buf, urlBase, sortFlags, _t("Sort by slow start threshold"), FLAG_SSTHRESH); buf.append("
RTT
"); + buf.append("
RTT
"); appendSortLinks(buf, urlBase, sortFlags, _t("Sort by round trip time"), FLAG_RTT); - //buf.append("
").append(_t("Dev")).append("
"); + //buf.append("
").append(_t("Dev")).append("
"); //appendSortLinks(buf, urlBase, sortFlags, _t("Sort by round trip time deviation"), FLAG_DEV); - buf.append("
RTO
"); + buf.append("
RTO
"); appendSortLinks(buf, urlBase, sortFlags, _t("Sort by retransmission timeout"), FLAG_RTO); buf.append("
MTU
"); + buf.append("
MTU
"); appendSortLinks(buf, urlBase, sortFlags, _t("Sort by outbound maximum transmit unit"), FLAG_MTU); - buf.append("
").append(_t("TX")).append("
"); + buf.append("
").append(_t("TX")).append("
"); appendSortLinks(buf, urlBase, sortFlags, _t("Sort by packets sent"), FLAG_SEND); - buf.append("
").append(_t("RX")).append("
"); + buf.append("
").append(_t("RX")).append("
"); appendSortLinks(buf, urlBase, sortFlags, _t("Sort by packets received"), FLAG_RECV); buf.append("
").append(_t("Dup TX")).append("
"); + buf.append("
").append(_t("Dup TX")).append("
"); appendSortLinks(buf, urlBase, sortFlags, _t("Sort by packets retransmitted"), FLAG_RESEND); - buf.append("
").append(_t("Dup RX")).append("
"); + buf.append("
").append(_t("Dup RX")).append("
"); appendSortLinks(buf, urlBase, sortFlags, _t("Sort by packets received more than once"), FLAG_DUP); buf.append("
"); - buf.append(""); - buf.append(""); - buf.append(""); - buf.append(""); - buf.append(""); - buf.append(""); - buf.append(""); - buf.append(""); - buf.append(""); - buf.append(""); - buf.append(""); - buf.append(""); - buf.append(""); - buf.append(""); - buf.append(""); - buf.append(""); - buf.append(""); + buf.append(""); + buf.append(""); + buf.append(""); + buf.append(""); + buf.append(""); + buf.append(""); + buf.append(""); + buf.append(""); + buf.append(""); + buf.append(""); + buf.append(""); + buf.append(""); + buf.append(""); + buf.append(""); + buf.append(""); + buf.append(""); + buf.append(""); buf.append(""); RateAverages ra = RateAverages.getTemp(); for (PeerProfile prof : order) { @@ -290,31 +290,31 @@ class ProfileOrganizerRenderer { .append(""); buf.append("\n"); LeaseSet ls = _context.netDb().lookupLeaseSetLocally(h); if (ls != null && _context.tunnelManager().getOutboundClientTunnelCount(h) > 0) { diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryRenderer.java index 1a5bb960df..db9af12337 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryRenderer.java @@ -35,6 +35,9 @@ class SummaryRenderer { private final Log _log; private final SummaryListener _listener; private final I2PAppContext _context; + private static final Color BACK_COLOR = new Color(246, 246, 255); + private static final Color SHADEA_COLOR = new Color(246, 246, 255); + private static final Color SHADEB_COLOR = new Color(246, 246, 255); private static final Color GRID_COLOR = new Color(100, 100, 100, 75); private static final Color MGRID_COLOR = new Color(255, 91, 91, 110); private static final Color AREA_COLOR = new Color(100, 160, 200, 200); @@ -131,8 +134,11 @@ class SummaryRenderer { RrdGraphDef def = new RrdGraphDef(); // Override defaults - def.setColor(RrdGraphDef.COLOR_GRID, GRID_COLOR); - def.setColor(RrdGraphDef.COLOR_MGRID, MGRID_COLOR); + def.setColor(RrdGraphDef.COLOR_BACK, BACK_COLOR); + def.setColor(RrdGraphDef.COLOR_SHADEA, SHADEA_COLOR); + def.setColor(RrdGraphDef.COLOR_SHADEB, SHADEB_COLOR); + def.setColor(RrdGraphDef.COLOR_GRID, GRID_COLOR); + def.setColor(RrdGraphDef.COLOR_MGRID, MGRID_COLOR); def.setFont(RrdGraphDef.FONTTAG_DEFAULT, new Font(DEFAULT_FONT_NAME, Font.PLAIN, 10)); def.setFont(RrdGraphDef.FONTTAG_TITLE, new Font(DEFAULT_FONT_NAME, Font.PLAIN, 10)); def.setFont(RrdGraphDef.FONTTAG_AXIS, new Font("Droid Sans Mono", Font.PLAIN, 10)); diff --git a/apps/routerconsole/jsp/configadvanced.jsp b/apps/routerconsole/jsp/configadvanced.jsp index a8724d8345..b3390f8ba0 100644 --- a/apps/routerconsole/jsp/configadvanced.jsp +++ b/apps/routerconsole/jsp/configadvanced.jsp @@ -30,13 +30,11 @@
").append(_t("Peer")).append("").append(_t("Caps")).append("").append(_t("Integ. Value")).append("").append(_t("Last Heard About")).append("").append(_t("Last Heard From")).append("").append(_t("Last Good Send")).append("").append(_t("Last Bad Send")).append("").append(_t("10m Resp. Time")).append("").append(_t("1h Resp. Time")).append("").append(_t("1d Resp. Time")).append("").append(_t("Last Good Lookup")).append("").append(_t("Last Bad Lookup")).append("").append(_t("Last Good Store")).append("").append(_t("Last Bad Store")).append("").append(_t("1h Fail Rate")).append("").append(_t("1d Fail Rate")).append("
").append(_t("Peer")).append("").append(_t("Caps")).append("").append(_t("Integ. Value")).append("").append(_t("Last Heard About")).append("").append(_t("Last Heard From")).append("").append(_t("Last Good Send")).append("").append(_t("Last Bad Send")).append("").append(_t("10m Resp. Time")).append("").append(_t("1h Resp. Time")).append("").append(_t("1d Resp. Time")).append("").append(_t("Last Good Lookup")).append("").append(_t("Last Bad Lookup")).append("").append(_t("Last Good Store")).append("").append(_t("Last Bad Store")).append("").append(_t("1h Fail Rate")).append("").append(_t("1d Fail Rate")).append("
"); buf.append("") - .append("") - .append("") + .append("") + .append("") .append(""); buf.append("") - .append("") - .append("") + .append("") + .append("") .append(""); buf.append("") - .append("") - .append("") + .append("") + .append("") .append(""); buf.append("") - .append("") - .append("") + .append("") + .append("") .append(""); buf.append("") - .append("") - .append("") + .append("") + .append("") .append(""); buf.append("") - .append("") - .append("") + .append("") + .append("") .append(""); buf.append("") - .append("") + .append("") .append(""); buf.append(""); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java index e243a384be..b7c6b7f66f 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryBarRenderer.java @@ -709,7 +709,7 @@ class SummaryBarRenderer { //buf.append("

") buf.append("

") .append(_t("News & Updates")) - .append("


\n"); + .append("


\n"); // Get news content. List entries = Collections.emptyList(); ClientAppManager cmgr = _context.clientAppManager(); @@ -719,7 +719,7 @@ class SummaryBarRenderer { entries = nmgr.getEntries(); } if (!entries.isEmpty()) { - buf.append("
    \n"); + buf.append("
 B:").append(_t("SSU Testing")).append("C:").append(_t("SSU Introducer")).append("B").append(_t("SSU Testing")).append("C").append(_t("SSU Introducer")).append(" 
 f:").append(_t("Floodfill")).append("H:").append(_t("Hidden")).append("f").append(_t("Floodfill")).append("H").append(_t("Hidden")).append(" 
 K:").append(_t("Under {0} shared bandwidth", "12KBps")).append("L:").append(_t("{0} shared bandwidth", "12 - 32KBps")).append("K").append(_t("Under {0} shared bandwidth", "12KBps")).append("L").append(_t("{0} shared bandwidth", "12 - 32KBps")).append(" 
 M:").append(_t("{0} shared bandwidth", "32 - 64KBps")).append("N:").append(_t("{0} shared bandwidth", "64 - 128KBps")).append("M").append(_t("{0} shared bandwidth", "32 - 64KBps")).append("N").append(_t("{0} shared bandwidth", "64 - 128KBps")).append(" 
 O:").append(_t("{0} shared bandwidth", "128 - 256KBps")).append("P:").append(_t("{0} shared bandwidth", "256 - 2000KBps")).append("O").append(_t("{0} shared bandwidth", "128 - 256KBps")).append("P").append(_t("{0} shared bandwidth", "256 - 2000KBps")).append(" 
 R:").append(_t("Reachable")).append("U:").append(_t("Unreachable")).append("R").append(_t("Reachable")).append("U").append(_t("Unreachable")).append(" 
 X:").append(_t("Over {0} shared bandwidth", "2000KBps")).append("X").append(_t("Over {0} shared bandwidth", "2000KBps")).append("   
 ").append(_t("Note: For P and X bandwidth tiers, O is included for the purpose of backward compatibility in the NetDB.")) .append("
\n"); DateFormat fmt = DateFormat.getDateInstance(DateFormat.SHORT); // the router sets the JVM time zone to UTC but saves the original here so we can get it fmt.setTimeZone(SystemVersion.getSystemTimeZone(_context)); @@ -731,29 +731,30 @@ class SummaryBarRenderer { if (i >= min && entry.updated > 0 && entry.updated < _context.clock().now() - 60*24*60*60*1000L) break; - buf.append("
  • \n"); if (++i >= max) break; } - buf.append("\n"); - //buf.append("") - // .append(_t("Show all news")) - // .append("\n"); + buf.append("
    "); + .append("\""); if (entry.updated > 0) { Date date = new Date(entry.updated); - buf.append(fmt.format(date)) - .append(": "); + // tooltip to tag for translation post 0.9.31 release + buf.append(" title=\"Published: ").append(fmt.format(date)).append("\""); } + buf.append(">"); buf.append(entry.title) - .append("\n"); + .append("
    \n"); } else { buf.append("
    ") .append(_t("none")) .append("
    "); } // Add post-headings stuff. + //buf.append("") + //.append(_t("Show all news")) + //.append("\n"); buf.append("\n"); } return buf.toString(); diff --git a/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java index 1683582c27..3b151d57d4 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/SummaryHelper.java @@ -45,16 +45,15 @@ public class SummaryHelper extends HelperBase { static final String DEFAULT_FULL = "HelpAndFAQ" + S + "ShortGeneral" + S + - "Bandwidth" + S + "UpdateStatus" + S + - "FirewallAndReseedStatus" + S + + "Bandwidth" + S + "NetworkReachability" + S + + "FirewallAndReseedStatus" + S + "I2PServices" + S + "I2PInternals" + S + "Peers" + S + "Tunnels" + S + "TunnelStatus" + S + - "Congestion" + S + "RestartStatus" + S + "Destinations" + S + ""; @@ -62,10 +61,10 @@ public class SummaryHelper extends HelperBase { static final String DEFAULT_FULL_ADVANCED = "HelpAndFAQ" + S + "ShortGeneral" + S + - "Bandwidth" + S + "UpdateStatus" + S + - "FirewallAndReseedStatus" + S + + "Bandwidth" + S + "NetworkReachability" + S + + "FirewallAndReseedStatus" + S + "I2PServices" + S + "I2PInternals" + S + "Advanced" + S + @@ -80,11 +79,11 @@ public class SummaryHelper extends HelperBase { static final String DEFAULT_MINIMAL = "ShortGeneral" + S + "Bandwidth" + S + - "NewsHeadings" + S + "UpdateStatus" + S + + "NewsHeadings" + S + "NetworkReachability" + S + - "RestartStatus" + S + "FirewallAndReseedStatus" + S + + "RestartStatus" + S + "Destinations" + S + ""; @@ -516,10 +515,11 @@ public class SummaryHelper extends HelperBase { buf.append("client.png\" alt=\"Client\" title=\"").append(_t("Client")).append("\">"); buf.append("
    "); - if (name.length() <= 20) + // Increase permitted max length of tunnel name & handle overflow with css + if (name.length() <= 32) buf.append(DataHelper.escapeHTML(name)); else - buf.append(DataHelper.escapeHTML(name.substring(0,18))).append("…"); + buf.append(DataHelper.escapeHTML(name.substring(0,29))).append("…"); buf.append("
    - diff --git a/apps/routerconsole/jsp/help_ar.jsp b/apps/routerconsole/jsp/help_ar.jsp index a3455aa751..0c33d9ddd1 100644 --- a/apps/routerconsole/jsp/help_ar.jsp +++ b/apps/routerconsole/jsp/help_ar.jsp @@ -32,7 +32,7 @@

    اذا رغبت في المساعدة أو ترجمة الوثائق، أو المساعدة في أشياء أخرى، انظر اسفله تطوع

    المزيد من المساعدة هنا:

    diff --git a/apps/susimail/src/src/i2p/susi/webmail/WebMail.java b/apps/susimail/src/src/i2p/susi/webmail/WebMail.java index cdf0c6dbbd..0c907b8ea3 100644 --- a/apps/susimail/src/src/i2p/susi/webmail/WebMail.java +++ b/apps/susimail/src/src/i2p/susi/webmail/WebMail.java @@ -2233,7 +2233,7 @@ public class WebMail extends HttpServlet spacer + button(CONFIGURE, _t("Settings")) + "\n" + - "\n" + + "\n" + "
    <%=intl._t("Floodfill participation helps the network, but may use more of your computer's resources.")%> -
    <% if (advancedhelper.isFloodfill()) { -%><%=intl._t("This router is currently a floodfill participant.")%><% +%> (<%=intl._t("This router is currently a floodfill participant.")%><% } else { -%><%=intl._t("This router is not currently a floodfill participant.")%><% +%> (<%=intl._t("This router is not currently a floodfill participant.")%>)<% } %>

    " + _t("Learn about I2P mail") + " | " + _t("Create Account") + "

    " + _t("Learn about I2P mail") + " | " + _t("Create Account") + "
    "); } diff --git a/history.txt b/history.txt index 05d901477b..03cd78a051 100644 --- a/history.txt +++ b/history.txt @@ -1,14 +1,56 @@ 2017-07-26 str4d + * Themes: + - 'light' theme (console & apps): + - Rework to reduce contrast (ticket #1996) + - Add custom radio/checkbox icons for Chrome/Blink * Console: - Add JavaScript snippet to reset dest address scroll position onblur (fixes Chrome/Blink disappearing text bugs in i2ptunnel and susidns) + - Fix reseed failure notice overlap when "check connection" message shown + - Enhance presentation of console "error 500" messages + - Cosmetic tweaks to welcome page presentation, arabic welcome page tidyup + - Migrate .smallhead th class to tr to simplify markup + - Sidebar: + - Remove "Congestion" from default sidebar (still present in default + advanced sidebar) + - Fix label wrapping issue with translations + - Migrate sidepanel news section to tables to permit better control over + wrapping and placement (ticket #1996) + - Move news item dates to tooltips to lessen chance of headlines wrapping + and cleanup presentation + - Increase maximum length of local tunnel links in the sidebar (and handle + overflow with CSS) to minimize chance of default tunnels display + truncating in translations + - Add the power off icon to sidebar restart button on hover to clarify + button function (ticket #1996) + - /configadvanced: Move floodfill status to row above to remove unnecessary + whitespace and cleanup UI - /debug: - Add container divs and styling markup - Add top navigation menu + - Add debug icon to h2 headers to aid navigation + - /graphs: Improve presentation of graph images by removing rendered border + and setting background color to better integrate with themes + - /home: Widen div.app to lessen chance of truncation (classic/midnight) - /jars: - JARs, WARs & individual plugins separated with headers - Filenames stripped of path info (path indicated on headers and tooltips) - Add container divs and styling markup + - Minimize table overflow with conditional scaling of content + - One-click select for revision, sha256 & unsigned mods + - /logs: + - Reduce line/entry spacing for router and critical logs (#ticket 1996) + - Multi-column view for changelog at >=1400px to address horizontal + whitespace issue + - /netdb: + - Multi-column display of Leases in LeaseSet tables + - Better alignment of Lease elements, iconify gateway + - Placeholder flag for unknown/unresolved peers for [flag+dest] combos to + improve presentation / fix deadspace issue + - Chinese: + - Fix alignment of table contents in /tunnels (classic) + - Fix sidebar content display width (midnight) + - Cosmetic fixes (all themes) * I2PSnark: - Mitigate truncation of ratings dropdown in comments section (translations) - light: Reduce contrast of display text @@ -20,7 +62,18 @@ - Migrate "view or change bandwidth" to [Configure] tooltip to standardize configuration links, allow for more space for option labels and lessen chance of option labels wrapping in translations - * SusiMail: Dismiss notifications on click + * I2PTunnel: + - Ensure message log font scales proportionately + - Fix overflow issue with dropdowns in Chrome/blink (dark/midnight) + * SusiDNS + - Reduce width of filter buttons to lessen chance of wrapping (ticket #1996) + - Add non-selectable items to improve copy/paste of hosts in address books + - Make dest addresses in host list only display scrollbar on focus to reduce + screen clutter + - Hide broken imagegen images + * SusiMail: + - Dismiss notifications on click + - Enhance presentation of 'postman' links on login panel 2017-07-25 str4d * Console: Move JRobin default color and font changes into SummaryRenderer diff --git a/installer/resources/icons/flags/a0.png b/installer/resources/icons/flags/a0.png new file mode 100644 index 0000000000..fccea54876 Binary files /dev/null and b/installer/resources/icons/flags/a0.png differ diff --git a/installer/resources/readme/readme_ar.html b/installer/resources/readme/readme_ar.html index f9e9766a03..322ed406b4 100644 --- a/installer/resources/readme/readme_ar.html +++ b/installer/resources/readme/readme_ar.html @@ -7,7 +7,7 @@