Fix for IE overflow issue; classic theme enhanced; more UI enhancements.

This commit is contained in:
z3d
2009-08-02 12:57:50 +00:00
parent 6e29eddaa7
commit abf7296de1
22 changed files with 227 additions and 73 deletions

View File

@ -47,7 +47,7 @@ public class ConfigTunnelsHandler extends FormHandler {
boolean saveRequired = false;
if (_log.shouldLog(Log.DEBUG))
_log.debug("Saving changes, with props = " + _settings);
_log.debug("Saving changes, with props = " + _settings + ".");
int updated = 0;
int index = 0;
@ -67,7 +67,7 @@ public class ConfigTunnelsHandler extends FormHandler {
try {
client.fromBase64(poolName);
} catch (DataFormatException dfe) {
addFormError("Internal error (pool name could not resolve - " + poolName + ")");
addFormError("Internal error (pool name could not resolve - " + poolName + ").");
index++;
continue;
}
@ -76,7 +76,7 @@ public class ConfigTunnelsHandler extends FormHandler {
}
if ( (in == null) || (out == null) ) {
addFormError("Internal error (pool settings cound not be found for " + poolName + ")");
addFormError("Internal error (pool settings cound not be found for " + poolName + ").");
index++;
continue;
}
@ -131,14 +131,14 @@ public class ConfigTunnelsHandler extends FormHandler {
}
if (updated > 0)
addFormNotice("Updated settings for " + updated + " pools");
addFormNotice("Updated settings for " + updated + " pools.");
if (saveRequired) {
boolean saved = _context.router().saveConfig();
if (saved)
addFormNotice("Exploratory tunnel configuration saved successfully");
addFormNotice("Exploratory tunnel configuration saved successfully.");
else
addFormNotice("Error saving the configuration (applied but not saved) - please see the error logs");
addFormNotice("Error saving the configuration (applied but not saved) - please see the error logs.");
}
}
private static final int getInt(Object val) {

View File

@ -24,8 +24,8 @@ public class ConfigUIHandler extends FormHandler {
else
_context.router().setConfigSetting(CSSHelper.PROP_THEME_NAME, _config);
if (_context.router().saveConfig())
addFormNotice("Theme change successfully saved (<a href=\"configui.jsp\">refresh page to view</a>)");
addFormNotice("Theme change successfully saved (<a href=\"configui.jsp\">refresh page</a> to view).");
else
addFormNotice("Error saving the configuration (applied but not saved) - please see the error logs");
addFormNotice("Error saving the configuration (applied but not saved) - please see the error logs.");
}
}

View File

@ -3,7 +3,7 @@ package net.i2p.router.web;
public class ConfigUIHelper extends HelperBase {
public ConfigUIHelper() {}
private static final String themes[] = {"Classic", "Dark", "Light"};
private static final String themes[] = {"classic", "dark", "light"};
public String getSettings() {
StringBuilder buf = new StringBuilder(512);

View File

@ -30,6 +30,7 @@
<b>I2P will work best if you configure your rates to match the speed of your internet connection.</b>
</p>
<p>
<div class="wideload">
<table>
<tr><td><input style="text-align: right; width: 5em;" name="inboundrate" type="text" size="5" maxlength="5" value="<jsp:getProperty name="nethelper" property="inboundRate" />" /> KBps
In <td>(<jsp:getProperty name="nethelper" property="inboundRateBits" />)<br />
@ -49,7 +50,7 @@
-->
<tr><td><jsp:getProperty name="nethelper" property="sharePercentageBox" />
Share <td>(<jsp:getProperty name="nethelper" property="shareRateBits" />)<br />
</table>
</table></div>
</p><p>
<% int share = nethelper.getShareBandwidth();
if (share < 12) {

View File

@ -16,12 +16,13 @@
<div class="main" id="main">
<%@include file="confignav.jsp" %>
<jsp:useBean class="net.i2p.router.web.ConfigAdvancedHandler" id="formhandler" scope="request" />
<jsp:setProperty name="formhandler" property="*" />
<jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
<jsp:getProperty name="formhandler" property="allMessages" />
<div class="configure">
<div class="wideload">
<form action="configadvanced.jsp" method="POST">
<% String prev = System.getProperty("net.i2p.router.web.ConfigAdvancedHandler.nonce");
if (prev != null) System.setProperty("net.i2p.router.web.ConfigAdvancedHandler.noncePrev", prev);
@ -38,5 +39,6 @@
</form>
</div>
</div>
</div>
</body>
</html>

View File

@ -35,13 +35,13 @@ button span.hide{
<h3>Client Configuration</h3>
<p>
The Java clients listed below are started by the router and run in the same JVM.
</p><p>
</p><p> <div class="wideload">
<jsp:getProperty name="clientshelper" property="form1" />
</p><p>
<i>All changes require restart to take effect. To change other client options, edit the clients.config file.</i>
</p> <hr /><div class="formaction">
<input type="submit" name="action" value="Save Client Configuration" />
</div>
</div></div>
<h3>WebApp Configuration</h3>
<p>
The Java web applications listed below are started by the webConsole client and run in the same JVM as the router.
@ -53,7 +53,7 @@ button span.hide{
A web app may also be disabled by removing the .war file from the webapps directory;
however the .war file and web app will reappear when you update your router to a newer version,
so disabling the web app here is the preferred method.
</p><p>
</p><p><div class="wideload">
<jsp:getProperty name="clientshelper" property="form2" />
</p>
<p>
@ -65,5 +65,6 @@ button span.hide{
</form>
</div>
</div>
</div>
</body>
</html>

View File

@ -11,7 +11,7 @@
<h1>I2P Keyring Configuration</h1>
<div class="main" id="main">
<%@include file="confignav.jsp" %>
<jsp:useBean class="net.i2p.router.web.ConfigKeyringHandler" id="formhandler" scope="request" />
<jsp:setProperty name="formhandler" property="*" />
<jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
@ -26,8 +26,9 @@
<h3>Keyring</h3>
The router keyring is used to decrypt encrypted leaseSets.
The keyring may contain keys for local or remote encrypted destinations.
<p><jsp:getProperty name="keyringhelper" property="summary" />
</p>
<div class="wideload"><p>
<jsp:getProperty name="keyringhelper" property="summary" />
</p></div>
<hr />
@ -40,6 +41,7 @@
Enter keys for encrypted remote destinations here.
Keys for local destinations must be entered on the <a href="i2ptunnel/index.jsp">I2PTunnel page</a>.
<p>
<div class="wideload">
<table>
<tr>
<td class="mediumtags" align="right">Dest. name, hash, or full key:</td>
@ -54,7 +56,7 @@
</table>
</form>
</div>
</div>
</div>
</body>

View File

@ -13,7 +13,7 @@
<h1>I2P Logging Configuration</h1>
<div class="main" id="main">
<%@include file="confignav.jsp" %>
<jsp:useBean class="net.i2p.router.web.ConfigLoggingHandler" id="formhandler" scope="request" />
<jsp:setProperty name="formhandler" property="*" />
<jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
@ -26,6 +26,7 @@
<input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigLoggingHandler.nonce")%>" />
<input type="hidden" name="action" value="blah" />
<h3>Configure I2P Logging Options</h3>
<div class="wideload">
<table border="0" cellspacing="5">
<tr>
<td class="mediumtags" align="right"><b>Logging filename:</b>
@ -64,5 +65,6 @@
</form>
</div>
</div>
</div>
</body>
</html>

View File

@ -69,15 +69,15 @@
<input type="submit" name="action" value="Adjust peer bonuses" /></div>
</p>
</form>
<a name="shitlist"> </a>
<jsp:useBean class="net.i2p.router.web.ProfilesHelper" id="profilesHelper" scope="request" />
<jsp:setProperty name="profilesHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
<jsp:getProperty name="profilesHelper" property="shitlistSummary" />
<hr />
<div class="wideload">
<jsp:getProperty name="peerhelper" property="blocklistSummary" />
</div>
</div>
</div>
</body>

View File

@ -56,7 +56,7 @@ function toggleAll(category)
<h1>I2P Stats Configuration</h1>
<div class="main" id="main">
<%@include file="confignav.jsp" %>
<jsp:useBean class="net.i2p.router.web.ConfigStatsHandler" id="formhandler" scope="request" />
<jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
<jsp:setProperty name="formhandler" property="*" />
@ -78,6 +78,7 @@ function toggleAll(category)
(change requires restart to take effect)<br />
Stat file: <input type="text" name="filename" value="<%=statshelper.getFilename()%>" /><br />
Filter: (<a href="javascript: void(null);" onclick="toggleAll('*')">toggle all</a>)<hr />
<div class="wideload">
<table>
<% while (statshelper.hasMoreStats()) {
while (statshelper.groupRequired()) { %>
@ -105,5 +106,6 @@ function toggleAll(category)
</table>
</div>
</div>
</div>
</body>
</html>

View File

@ -14,7 +14,6 @@
<h1>I2P Tunnel Configuration</h1>
<div class="main" id="main">
<%@include file="confignav.jsp" %>
<jsp:useBean class="net.i2p.router.web.ConfigTunnelsHandler" id="formhandler" scope="request" />
<jsp:setProperty name="formhandler" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
<jsp:setProperty name="formhandler" property="shouldsave" value="<%=request.getParameter("shouldsave")%>" />
@ -31,7 +30,7 @@
High CPU and/or high outbound bandwidth usage may result.
Change these settings with care, and adjust them if you have problems.
</i></p>
<div class="wideload">
<form action="configtunnels.jsp" method="POST">
<% String prev = System.getProperty("net.i2p.router.web.ConfigTunnelsHandler.nonce");
if (prev != null) System.setProperty("net.i2p.router.web.ConfigTunnelsHandler.noncePrev", prev);
@ -46,5 +45,6 @@
</form>
</div>
</div>
</div>
</body>
</html>

View File

@ -28,7 +28,7 @@
System.setProperty("net.i2p.router.web.ConfigUpdateHandler.nonce", new java.util.Random().nextLong()+""); %>
<input type="hidden" name="nonce" value="<%=System.getProperty("net.i2p.router.web.ConfigUpdateHandler.nonce")%>" />
<h3>Check for I2P and news updates</h3>
<table border="0" cellspacing="5">
<div class="wideload"><table border="0" cellspacing="5">
<tr>
<td colspan="2"></tr>
<tr>
@ -70,6 +70,7 @@
<input type="reset" value="Cancel" />
</div>
</table>
</div>
</form>
</div>
</div>

View File

@ -18,3 +18,4 @@
<jsp:useBean class="net.i2p.router.web.CSSHelper" id="cssHelper" scope="request" />
<jsp:setProperty name="cssHelper" property="contextId" value="<%=(String)session.getAttribute("i2p.contextId")%>" />
<link href="<%=cssHelper.getTheme(request.getHeader("User-Agent"))%>console.css" rel="stylesheet" type="text/css" />
<!--[if IE]><link href="/themes/console/classic/ieshim.css" rel="stylesheet" type="text/css" /><![endif]-->

View File

@ -1,8 +1,12 @@
2009-08-02
* Better support for Internet Explorer/classic theme.
* Incremental improvements to classic theme.
* More UI tweaks and fiddles.
2009-07-31 dr|z3d
* Resolve anomalous buttons and text fields in console ui.
* Enhance presentation of data in /peers.jsp.
* Fix themes issue with horizontal width of radio/checkbox icons.
(Radioboxes currently non-functional in Opera).
* Other cosmetic UI enhancements.
* 2009-07-31 0.7.6 released

View File

@ -1,10 +1,13 @@
body {
margin: 1em 0em;
padding: 0em;
margin: 15px 0;
padding: 0;
text-align: left;
background: #FFF;
color: #000;
font: 10pt/120% Verdana, Tahoma, Helvetica, sans-serif;
/*
font: 10pt/140% Verdana, Tahoma, Helvetica, sans-serif;
*/
font: 10pt/140% "Lucida Sans Unicode", "Bitstream Vera Sans", Verdana, Tahoma, Helvetica, sans-serif;
}
.hide {
@ -16,8 +19,9 @@ img {
}
pre {
overflow: auto;
font-size: 8pt !important;
width: 100%;
overflow-x: scroll;
}
div.logo {
@ -37,25 +41,25 @@ div.toolbar {
}
div.routersummaryouter {
float: left;
float: left;
width: 200px;
margin: 0;
padding: 0;
border: 0;
clear: left;/* fixes a bug in Opera */
overflow: auto;
clear: left; /* fixes a bug in Opera */
}
div.routersummary {
background: #fafaff;
width: 175px;
width: 180px;
color: inherit;
margin: 0em;
padding: 5px;
text-align: left;
border: medium solid #efefff;
margin: 0;
padding: 5px 0 0 10px;
text-align: left !important;
border: 5px solid #efefff;
font-size: 9pt;
word-wrap: break-word;
font: 9pt/125%;
}
div.routersummary hr {
@ -63,11 +67,16 @@ div.routersummary hr {
background: #ccf;
height: 2px;
border: 0px solid #ccf;
margin: 10px 0;
margin: 4px 0;
}
div.routersummary p {
padding: 0;
}
div.warning {
margin: 0em 1em 1em 224px;
padding: .5em 1em;
margin: 0 10px 10px 205px;
padding: 5px 10px;
background: #ffefef;
border: medium solid #ffafaf;
text-align: left;
@ -75,40 +84,63 @@ div.warning {
}
div.main {
margin: 0em 1em 1em 224px;
padding: .5em 1em;
margin: 0 20px 10px 205px;
padding: 5px 15px 15px 15px;
background: #ffffef;
border: medium solid #ffffd0;
border: 5px solid #ffffd0;
text-align: left;
color: inherit;
}
div.main textarea {
width: 100% !important;
/* width: 100% !important; breaks IE */
width: 600px;
}
div.news {
margin: 0em 1em 1em 224px;
padding: .5em 1em;
margin: 0 20px 0 205px;
padding: -10px 15px 5px 15px;
background: #ffffc0;
border: medium solid #ffffa0;
border: 5px solid #ffffa0;
text-align: justify;
color: inherit;
}
div.news li {
text-align: justify;
list-style: none;
margin: -10px 20px -20px -20px;
padding: 8px 0;
border: 1px solid #330;
border-left: 5px solid #330;
padding: 3px 5px 3px 5px;
background: #fe7;
font-size: 12pt;
}
div.news a:link {
}
div.confignav {
padding: 1em;
background: #efefff;
padding: 12px 0 15px 0;
background: #cfc;
margin: -10px -20px 0 -10px;
border: 5px solid #9f9;
}
div.configure {
padding: 1em;
margin: 0 -20px 0 -10px;
padding: 10px 20px 5px 20px;
background: #ffffc0;
}
div.messages {
padding: 1em;
padding: 10px;
background: #fafaff;
border: 5px solid #fdd;
margin: 0px -20px 0px -10px;
}
div.messages span.error {
@ -122,21 +154,37 @@ div.messages span.notice {
h1 {
font-size: 18pt;
text-align: center;
border: 5px solid #efefff;
border-bottom: 5px solid #efefff;
padding: 10px;
margin: 0 20px 0 205px;
line-height: 93%;
text-transform: uppercase;
letter-spacing: 0.3em;
background: #fff;
}
h2 {
font-size: 12pt;
font-size: 14pt;
padding: 10px;
border-bottom: 2px solid #001;
border-top: 2px solid #001;
letter-spacing: 0.04em;
}
h3 {
font-size: 10pt;
font-size: 12pt;
padding: 10px;
border-bottom: 2px solid #001;
border-top: 2px solid #001;
letter-spacing: 0.04em;
}
.proxyfooter{
font-size: 7pt;
display: none !important;
}
table {
/* border-collapse: collapse; */
border: 5px solid #dfd;
@ -144,12 +192,13 @@ table {
cell-padding: 1px;
font-size: 7pt;
background: #fff;
width: 100%;
}
th {
background-color: #ccf;
padding: 5px 2px;
text-align: center;
}
tt {
@ -169,11 +218,11 @@ tr:nth-child(odd) {
}
hr {
color: #ff9;
background: #ff9;
color: #dd9;
background: #dd9;
height: 2px;
border: 0px solid #ff9;
margin: 10px 0;
border: 0px solid #dd5;
margin: 5px 0;
}
.statusnotes {
@ -183,4 +232,88 @@ hr {
text-align: center;
margin: -3px 0 0 0;
background: #fff;
}
}
input {
margin: 3px 5px 3px 0;
vertical-align: middle;
}
select {
margin: 3px 5px 3px 0;
vertical-align: middle;
}
submit {
padding 0 2px;
}
p {
padding: 5px 20px 0px 20px;
text-align: justify;
}
.formaction {
text-align: right;
}
.langbox {
margin: 30px 0 0px 5px;
color: #001;
font-size: 7pt;
width: 180px;
text-align: center;
float: right;
valign: middle;
}
.langbox img {
padding: 0 2px; /* Ignored by IE8 */
}
a:link{
color: #006;
text-decoration: none;
font-weight: bold;
word-wrap: break-word;
}
a:visited{
color: #448;
text-decoration: none;
font-weight: bold;
}
a:hover{
color: #f60;
text-decoration: underline;
font-weight: bold;
}
a:active{
color: #f93;
text-decoration: underline;
font-weight: bold;
}
pre {
font-size: 9pt;
margin: 0px 20px;
}
tt {
font-size: 9pt;
font-weight: bold;
color: darkgreen;
}
.tablefooter {
border: 1px solid #f00;
}
.tablefooter tr, .tablefooter td {
background: #aaf;
font-size: 8pt;
font-weight: bold;
line-height: 150%;
}

View File

@ -0,0 +1,6 @@
/* Welcome to the wonderful world of kludgey IE fixes */
.wideload {
overflow: auto;
width: 100%;
}

View File

@ -19,7 +19,7 @@ img {
pre {
width: 98%;
overflow-x: scroll;
overflow: auto;
text-align: left;
font: 8pt "Lucida Console", "DejaVu Sans Mono", Courier, mono;
color: #333;
@ -130,7 +130,6 @@ div.main {
text-align: left;
color: #001;
width: auto;
/* overflow-x: scroll; */
}
div.main hr, hr {
@ -652,7 +651,7 @@ form {}
-khtml-border-radius: 4px;
text-align: justify;
-moz-box-shadow: inset 0px 0px 1px 0px #002;
overflow-x: scroll;
overflow: auto;
}
div.joblog:li {

View File

@ -607,7 +607,7 @@ public class JobQueue {
out.flush();
StringBuilder buf = new StringBuilder(32*1024);
buf.append("<b><div class=\"joblog\"><h3>I2P JobQueue</h3># runners: ").append(numRunners).append(" [states=");
buf.append("<b><div class=\"joblog\"><h3>I2P JobQueue</h3><div class=\"wideload\"># runners: ").append(numRunners).append(" [states=");
if (states != null)
for (int i = 0; i < states.length; i++)
buf.append(states[i]).append(" ");
@ -734,6 +734,6 @@ public class JobQueue {
buf.append("<td><i>").append(minPendingTime).append("</i></td>");
buf.append("</tr>\n");
buf.append("</table>\n");
buf.append("</table></div>\n");
}
}

View File

@ -18,7 +18,7 @@ public class RouterVersion {
/** deprecated */
public final static String ID = "Monotone";
public final static String VERSION = CoreVersion.VERSION;
public final static long BUILD = 04;
public final static long BUILD = 05;
/** for example "-test" */
public final static String EXTRA = "";
public final static String FULL_VERSION = VERSION + "-" + BUILD + EXTRA;

View File

@ -643,7 +643,7 @@ public class NTCPTransport extends TransportImpl {
buf.append(". Limit: ").append(getMaxConnections());
buf.append(". Timeout: ").append(DataHelper.formatDuration(_pumper.getIdleTimeout()));
buf.append(".</b></h3>\n");
buf.append("<table>\n");
buf.append("<div class=\"wideload\"><table>\n");
buf.append("<tr><th><a href=\"#def.peer\">Peer</a></th>");
buf.append("<th>Dir</th>");
buf.append("<th align=\"right\"><a href=\"#def.idle\">Idle</a></th>");
@ -727,7 +727,7 @@ public class NTCPTransport extends TransportImpl {
buf.append("</td></tr>\n");
}
buf.append("</table></p>\n");
buf.append("</table></div></p>\n");
out.write(buf.toString());
buf.setLength(0);
}

View File

@ -1767,7 +1767,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
buf.append(". Limit: ").append(getMaxConnections());
buf.append(". Timeout: ").append(DataHelper.formatDuration(_expireTimeout));
buf.append(".</b></h3>\n");
buf.append("<table>\n");
buf.append("<div class=\"wideload\"><table>\n");
buf.append("<tr><th class=\"smallhead\" nowrap><a href=\"#def.peer\">Peer</a>");
if (sortFlags != FLAG_ALPHA)
buf.append(" <a href=\"").append(urlBase).append("?sort=0\">V</a> ");
@ -1998,7 +1998,7 @@ public class UDPTransport extends TransportImpl implements TimedWeightedPriority
buf.append(sendTotal).append("</td></b> <td align=\"center\"><b>").append(recvTotal).append("</b></td>\n");
buf.append(" <td align=\"center\"><b>").append(resentTotal);
buf.append("</b></td> <td align=\"center\"><b>").append(dupRecvTotal).append("</b></td>\n");
buf.append(" </tr></table></p><p>\n");
buf.append(" </tr></table></div></p><p>\n");
long bytesTransmitted = _context.bandwidthLimiter().getTotalAllocatedOutboundBytes();
// NPE here early
double averagePacketSize = _context.statManager().getRate("udp.sendPacketSize").getLifetimeAverageValue();

View File

@ -405,7 +405,7 @@ public class TunnelPoolManager implements TunnelManagerFacade {
public void renderStatusHTML(Writer out) throws IOException {
out.write("<h2><a name=\"exploratory\" ></a>Exploratory tunnels (<a href=\"/configtunnels.jsp#exploratory\">config</a>):</h2>\n");
out.write("<div class=\"wideload\"><h2><a name=\"exploratory\" ></a>Exploratory tunnels (<a href=\"/configtunnels.jsp#exploratory\">config</a>):</h2>\n");
renderPool(out, _inboundExploratory, _outboundExploratory);
List destinations = null;
@ -623,7 +623,7 @@ public class TunnelPoolManager implements TunnelManagerFacade {
}
out.write("<tr class=\"tablefooter\"> <td align=\"center\"><b>Tunnels</b> <td align=\"center\"><b>" + tunnelCount);
out.write("</b> <td>&nbsp;</td> <td align=\"center\"><b>" + partCount);
out.write("</b> <td>&nbsp;</td></tr></table>\n");
out.write("</b> <td>&nbsp;</td></tr></table></div>\n");
}
/** @return total number of non-fallback expl. + client tunnels */