From 1811e3b9cd66d04b5112c9490001576cce104a06 Mon Sep 17 00:00:00 2001 From: z3d Date: Mon, 12 Oct 2009 23:55:21 +0000 Subject: [PATCH 001/138] Whitespace rationalization; theme enhancements; draft itoopie graphic for proxy errors. --- .../src/net/i2p/router/web/LogsHelper.java | 4 +- .../net/i2p/router/web/StatsGenerator.java | 2 +- apps/routerconsole/jsp/logs.jsp | 22 +-- apps/routerconsole/jsp/oldstats.jsp | 2 +- apps/routerconsole/jsp/profiles.jsp | 3 +- .../themes/console/classic/console.css | 125 +++++++++++++----- .../resources/themes/console/dark/console.css | 52 ++++++-- .../themes/console/images/itoopie_sm.png | Bin 0 -> 4866 bytes .../themes/console/light/console.css | 59 ++++++++- readme.html | 2 +- readme_de.html | 2 +- readme_fr.html | 6 +- readme_nl.html | 6 +- readme_sv.html | 6 +- readme_zh.html | 4 +- 15 files changed, 218 insertions(+), 77 deletions(-) create mode 100644 installer/resources/themes/console/images/itoopie_sm.png diff --git a/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java index f51c4e772..b57ed4652 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/LogsHelper.java @@ -10,7 +10,7 @@ public class LogsHelper extends HelperBase { public String getLogs() { String str = formatMessages(_context.logManager().getBuffer().getMostRecentMessages()); - return "Location: " + _context.logManager().currentFile() + "

" + str; + return "Location: " + _context.logManager().currentFile() + "

" + str; } public String getCriticalLogs() { @@ -34,7 +34,7 @@ public class LogsHelper extends HelperBase { return ""; else { str = str.replaceAll("<", "<").replaceAll(">", ">"); - return "Location: " + f.getAbsolutePath() + "
" + str + "
"; + return "Location: " + f.getAbsolutePath() + "
" + str + "
"; } } 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 983a6ba8b..374aa2e0a 100644 --- a/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java +++ b/apps/routerconsole/java/src/net/i2p/router/web/StatsGenerator.java @@ -138,7 +138,7 @@ public class StatsGenerator { buf.append("
"); } if (rate.getLifetimeEventCount() <= 0) { - buf.append("No lifetime events
 
"); + buf.append("No lifetime events
"); return; } long now = _context.clock().now(); diff --git a/apps/routerconsole/jsp/logs.jsp b/apps/routerconsole/jsp/logs.jsp index 3cca63d2d..59eaca03a 100644 --- a/apps/routerconsole/jsp/logs.jsp +++ b/apps/routerconsole/jsp/logs.jsp @@ -8,21 +8,21 @@ <%@include file="summary.jsp" %>

I2P Router Logs

-

Version:

- Please include this information in bug reports. +

I2P Version & Running Environment

+ Please include this information in bug reports:

-I2P
-<%=System.getProperty("java.vendor")%> <%=System.getProperty("java.version")%>
-<%=System.getProperty("os.name")%> <%=System.getProperty("os.arch")%> <%=System.getProperty("os.version")%>
-CPU <%=net.i2p.util.NativeBigInteger.cpuModel()%> (<%=net.i2p.util.NativeBigInteger.cpuType()%>)
-jbigi <%=net.i2p.util.NativeBigInteger.loadStatus()%>
-Encoding <%=System.getProperty("file.encoding")%>


+I2P version:
+Java version: <%=System.getProperty("java.vendor")%> <%=System.getProperty("java.version")%>
+Platform: <%=System.getProperty("os.name")%> <%=System.getProperty("os.arch")%> <%=System.getProperty("os.version")%>
+Processor: <%=net.i2p.util.NativeBigInteger.cpuModel()%> (<%=net.i2p.util.NativeBigInteger.cpuType()%>)
+Jbigi: <%=net.i2p.util.NativeBigInteger.loadStatus()%>
+Encoding: <%=System.getProperty("file.encoding")%>

" /> -

Critical logs:

+

Critical Logs


-

Router logs (configure):

+

Router Logs [configure]


-

Service (Wrapper) logs:

+

Service (Wrapper) Logs

diff --git a/apps/routerconsole/jsp/oldstats.jsp b/apps/routerconsole/jsp/oldstats.jsp index 39f6c73d8..7ac5c7cfe 100644 --- a/apps/routerconsole/jsp/oldstats.jsp +++ b/apps/routerconsole/jsp/oldstats.jsp @@ -12,4 +12,4 @@

I2P Router Statistics

-
+
diff --git a/apps/routerconsole/jsp/profiles.jsp b/apps/routerconsole/jsp/profiles.jsp index 2ae4ff6b2..aca9dca22 100644 --- a/apps/routerconsole/jsp/profiles.jsp +++ b/apps/routerconsole/jsp/profiles.jsp @@ -10,7 +10,6 @@ " /> -
- +
diff --git a/installer/resources/themes/console/classic/console.css b/installer/resources/themes/console/classic/console.css index e04eae955..391506a7b 100644 --- a/installer/resources/themes/console/classic/console.css +++ b/installer/resources/themes/console/classic/console.css @@ -68,8 +68,8 @@ div.warning { border: 5px solid #fb7; text-align: left; color: inherit; - background-image:url("../images/errortriangle.png"); - background-position: 17px center; + background-image:url("../images/itoopie_sm.png"); + background-position: 12px center; background-repeat:no-repeat; -moz-border-radius: 15px; -moz-box-shadow: inset 0px 0px 0px 2px #f60; @@ -249,7 +249,7 @@ div.warning h3 { div.main { margin: 0px 0px 0px 195px; - padding: 15px; + padding: 15px 15px 10px 15px; background: #eef; border: 5px solid #bbf; border-top: 0; @@ -266,10 +266,12 @@ div.main ul { div.main li { padding: 0 0 5px 0; list-style: square; + word-wrap: break-word; + margin-right: 20px; } div.main li:first-child { - padding-top: 5px; + padding-top: 15px; } div.main textarea { @@ -279,16 +281,17 @@ div.main textarea { div.news { margin: -5px 0px 0 195px; - padding: -10px 15px 8px 15px; + padding: -10px 0px 8px 0px; background: #ffffc0; border: 5px solid #bbf; - text-align: justify; - color: inherit; + text-align: right; + color: #770; min-width: 600px; padding-bottom: 8px; padding-left: 10px; padding-right: 10px; -moz-box-shadow: inset 0px 0px 0px 1px #99f; + font-size: 7pt; } /* convert the list entry to our title */ @@ -296,25 +299,27 @@ div.news { div.news li { text-align: justify; list-style: none; - margin: -15px 15px -20px -20px; + margin: -15px 15px -30px -20px; padding: 0px 0 15px 0; - border-bottom: 5px solid #cc7; + border-bottom: 2px dotted #cc7; border-top: 0px solid #cc7; padding: 3px 5px 5px 5px; - font-size: 12pt; + font-size: 10pt; color: #540; } div.news p { color: #330; + font-size: 9pt; } + div.news a:link { - color: #773; + color: #663; text-shadow: 0px 0px 1px rgba(128, 128, 48, 0.3); } div.news a:visited { - color: #f00 !important; + color: #773 !important; text-shadow: 0px 0px 1px rgba(128, 128, 48, 0.3); } @@ -322,7 +327,7 @@ div.news hr { color: #cc7; background: #cc7; height: 2px; - border: 0px solid #cc7; + border: 0px solid #cccc77; margin: 5px 0; } @@ -339,10 +344,14 @@ div.configure { padding: 0px 20px 0px 20px; } +div.configure hr { + margin: 15px 0; +} + div.configure table { font-size: 9pt; font-weight: bold; - -moz-box-shadow: inset 0px 0px 1px 1px #001; + border: 1px solid #bbf; } div.configure tr, div.configure td { @@ -367,8 +376,8 @@ div.messages { } div.messages li, div.messages ul { - padding: 15px 0 5px 5px; - margin: -15px 0 0 0; + padding: 10px 0 0 5px; + margin: -10px 0 0 0; } div.messages span.error { @@ -397,16 +406,16 @@ h1 { h2 { font-size: 14pt; padding: 0px 10px 10px 10px; - border-bottom: 5px solid #bbf; - border-top: 0px solid #bbf; + border-bottom: 3px solid #aaf; + border-top: 0px solid #aaf; letter-spacing: 0.04em; } h3 { font-size: 12pt; padding: 0 10px 10px 10px; - border-bottom: 5px solid #bbf; - border-top: 0px solid #bbf; + border-bottom: 3px solid #aaf; + border-top: 0px solid #aaf; letter-spacing: 0.04em; } @@ -417,7 +426,7 @@ h3 { table { border-collapse: collapse; - border: 5px solid #bbf; + border: 1px solid #bbf; margin: 0 0 5px 0; cell-padding: 1px; font-size: 7.5pt; @@ -442,7 +451,7 @@ th { background-color: #fff; padding: 8px 2px; text-align: center; - border-bottom: 1px solid #88f; + border-bottom: 1px solid #bbf; } tt { @@ -466,11 +475,11 @@ tr:nth-child(odd) { } hr { - color: #bbf; - background: #bbf; - height: 5px; - border: 0px solid #bbf; - margin: 5px 0; + color: #aaf; + background: #aaf; + height: 3px; + border: 0px solid #aaf; + margin: 3px 0; } .statusnotes { @@ -484,6 +493,53 @@ hr { border-top: 0; padding: 4px 0 2px 0; } + +div.joblog { + margin-top: -10px; + line-height: 130% !important; +} + +div.joblog:li { + word-wrap: break-word !important; + text-align: justify !important; + line-height: 80% !important; +} + +div.joblog:ul { + word-wrap: break-word !important; + text-align: justify; +} + +div.joblog li:first-child { + margin-top: -10px; +} +div.joblog li:last-child { + margin-bottom: -10px; +} + +div.joblog form:first-child { + margin-top: 10px; +} + +div.joblog table { + margin-top: 15px; +} + +div.joblog p { + line-height: 130%; +} + +div.joblog h3 { + margin: -5px 0 5px 0; +} + +div.joblog hr { + margin: 15px 0 15px; +} + +div.joblog ol { + margin-bottom: 0px; +} input { margin: 3px 5px 3px 0; @@ -565,7 +621,7 @@ tt { } .tablefooter { - border: 1px solid #88f; + border: 1px solid #bbf; } .tablefooter tr, .tablefooter td { @@ -575,11 +631,13 @@ tt { line-height: 150%; word-wrap: nowrap; padding: 8px 1px; + border-top: 2px solid #bbf; } .tidylist { text-align: justify; padding-right: 30px; + margin-right: 20px; } div.graphspanel { @@ -595,11 +653,12 @@ div.graphspanel { } div.graphspanel img { - border: 1px solid #99f; + border: 1px solid #77f; padding: 2px; margin: 6px; - background: #ddf; - -moz-box-shadow: inset 0px 0px 1px 1px #99f; + background: #ccf; + -moz-box-shadow: inset 0px 0px 0px 0px #002; + opacity: 0.9; } div.graphspanel img:hover { @@ -609,10 +668,11 @@ div.graphspanel img:hover { text-align: center !important; background: #001; -moz-box-shadow: inset 0px 0px 2px 1px #f60; + opacity: 1; } div.graphspanel hr { - margin: 20px 0; + margin: 10px 0; } div.graphspanel form { @@ -622,4 +682,5 @@ div.graphspanel form { div.graphspanel h3 { text-align: left; + margin: 10px 20px 10px 20px; } \ No newline at end of file diff --git a/installer/resources/themes/console/dark/console.css b/installer/resources/themes/console/dark/console.css index 7f2a7f204..d5e461913 100644 --- a/installer/resources/themes/console/dark/console.css +++ b/installer/resources/themes/console/dark/console.css @@ -214,8 +214,8 @@ div.warning { -khtml-border-radius: 4px; border-radius: 4px; text-align: justify; - background-image:url("images/errortriangle.png"); - background-position:15px center; + background-image:url("../images/itoopie_sm.png"); + background-position:10px center; background-repeat:no-repeat; -moz-box-shadow: inset 0px 0px 0px 1px #f00; -khtml-box-shadow: inset 0px 0px 0px 1px #f00; @@ -269,7 +269,7 @@ div.main textarea { div.news { margin: 15px 15px 15px 220px; - padding: 20px 30px 20px 30px; + padding: 5px 30px 15px 30px; border: 1px solid #99f; background: #004; background-image: -moz-linear-gradient(top, bottom, from(#003), to(#005), color-stop(30%, #003), color-stop(100%, #001)); @@ -287,12 +287,26 @@ div.news { div.news li { text-align: justify; list-style: url('images/info_dark.png'); - margin: 0 10px 0 30px; - padding: 5px; + margin: 0 10px 0 20px; + padding: 5px 5px 5px 0; vertical-align: middle; word-wrap: break-word; } +div.news h4 { + border-bottom: 1px; + border-bottom-style: dotted; + border-bottom-color: #99f; + padding: 0 0 5px 0; + margin: 5px 0 10px 0; + font-size: 10pt; + opacity: 0.8; +} + +div.news p { + margin-top: -5px; +} + div.confignav { padding: 15px 10px !important; margin: 15px 0; @@ -792,8 +806,8 @@ form {} color: #eef; text-align: center; border: 1px solid #99f !important; - border-top: 0px !important; - margin: -5px 0 5px 0; +/* border-top: 0px !important;*/ + margin: -3px 0 5px 0; padding: 7px; background: #004; -moz-box-shadow: inset 0px 0px 0px 1px #009; @@ -801,7 +815,7 @@ form {} box-shadow: inset 0px 0px 0px 1px #009; } -.joblog { +div.joblog { margin: 15px 0 15px 0; padding: 5px 20px 10px 20px !important; border: 1px solid #99f; @@ -811,7 +825,7 @@ form {} border-radius: 4px; -moz-border-radius: 4px; -khtml-border-radius: 4px; - text-align: justify; + text-align: justify !important; -moz-box-shadow: inset 0px 0px 1px 0px #eef; -khtml-box-shadow: inset 0px 0px 1px 0px #eef; box-shadow: inset 0px 0px 1px 0px #eef; @@ -820,18 +834,34 @@ form {} div.joblog:li { word-wrap: break-word !important; - text-align: justify; + text-align: justify !important; + line-height: 80% !important; } - .joblog:ul { +div.joblog:ul { word-wrap: break-word !important; text-align: justify; } +div.joblog li:first-child { + margin-top: 10px; +} +div.joblog li:last-child { + margin-bottom: -15px; +} + div.joblog form:first-child { margin-top: 10px; } +div.joblog table { + margin-top: 15px; +} + +div.joblog p { + line-height: 130%; +} + .smallhead { font-size: 7pt } diff --git a/installer/resources/themes/console/images/itoopie_sm.png b/installer/resources/themes/console/images/itoopie_sm.png new file mode 100644 index 0000000000000000000000000000000000000000..3c9b87d573bdff9a98db1fb8da68ffec4140d2e6 GIT binary patch literal 4866 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
  • browse "eepsites" - on I2P there are anonymously hosted websites - tell your browser to use the HTTP proxy at 127.0.0.1 port 4444, then - browse to an eepsite:
    + browse to an eepsite: