Author: Jogy
Date: 2006-05-18 19:47:04 +0000 (Thu, 18 May 2006)
New Revision: 8778

Modified:
   trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
   trunk/freenet/src/freenet/clients/http/PproxyToadlet.java
   trunk/freenet/src/freenet/clients/http/staticfiles/themes/clean/theme.css
Log:
Spiced up PproxyToadlet (?PluginsToadlet?)

Hello nextgen :)

Modified: trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java       
2006-05-18 19:40:40 UTC (rev 8777)
+++ trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java       
2006-05-18 19:47:04 UTC (rev 8778)
@@ -95,131 +95,135 @@
                buf.append("<div class=\"infobox-content\">\n");
                buf.append("<form action=\".\" method=\"post\" 
enctype=\"multipart/form-data\">\n");
                buf.append("<table class=\"darknet_connections\">\n");
-               buf.append("<tr><th>Status</th><th>Name</th><th> <span 
title=\"Address:Port\" style=\"border-bottom:1px 
dotted;cursor:help;\">Address</span></th><th>Version</th><th>Location</th><th> 
<span title=\"Temporarily disconnected. Other node busy? Wait time(s) 
remaining/total\" style=\"border-bottom:1px 
dotted;cursor:help;\">Backoff</span></th><th> <span title=\"Number of minutes 
since the node was last seen in this session\" style=\"border-bottom:1px 
dotted;cursor:help;\">Idle</span></th><th></th></tr>\n");
-
-               final Integer CONNECTED = new Integer(0);
-               final Integer BACKED_OFF = new Integer(1);
-               final Integer TOO_NEW = new Integer(2);
-               final Integer INCOMPATIBLE = new Integer(3);
-               final Integer DISCONNECTED = new Integer(4);
+               buf.append("<tr><th>Status</th><th>Name</th><th><span 
title=\"Address:Port\" style=\"border-bottom:1px 
dotted;cursor:help;\">Address</span></th><th>Version</th><th>Location</th><th><span
 title=\"Temporarily disconnected. Other node busy? Wait time(s) 
remaining/total\" style=\"border-bottom:1px 
dotted;cursor:help;\">Backoff</span></th><th><span title=\"Number of minutes 
since the node was last seen in this session\" style=\"border-bottom:1px 
dotted;cursor:help;\">Idle</span></th><th></th></tr>\n");

-               int numberOfConnected = 0;
-               int numberOfBackedOff = 0;
-               int numberOfTooNew = 0;
-               int numberOfIncompatible = 0;
-               int numberOfDisconnected = 0;
-               
-               // Create array
-               Object[][] rows = new Object[peerNodes.length][];
-               for(int i=0;i<peerNodes.length;i++) {
-                       PeerNode pn = peerNodes[i];
-                       long routingBackedOffUntil = 
pn.getRoutingBackedOffUntil();
-                       boolean routingBackedOffNow = (now < 
routingBackedOffUntil);
-                       int backoff = (int)(Math.max(routingBackedOffUntil - 
now, 0));
-                       long idle = pn.lastReceivedPacketTime();
+               if (peerNodes.length == 0) {
+                       buf.append("<tr><td colspan=\"8\">No connections so 
far</td></tr>\n");
+                       buf.append("</table>\n");
+               }
+               else {
+                       final Integer CONNECTED = new Integer(0);
+                       final Integer BACKED_OFF = new Integer(1);
+                       final Integer TOO_NEW = new Integer(2);
+                       final Integer INCOMPATIBLE = new Integer(3);
+                       final Integer DISCONNECTED = new Integer(4);

-                       // Elements must be HTML encoded.
-                       Object[] row = new Object[9];  // where [0] is the pn 
object!
-                       rows[i] = row;
+                       int numberOfConnected = 0;
+                       int numberOfBackedOff = 0;
+                       int numberOfTooNew = 0;
+                       int numberOfIncompatible = 0;
+                       int numberOfDisconnected = 0;

-                       Object status;
-                       if(pn.isConnected()) {
-                               status = CONNECTED;
-                               if(routingBackedOffNow) {
-                                       status = BACKED_OFF;
+                       // Create array
+                       Object[][] rows = new Object[peerNodes.length][];
+                       for(int i=0;i<peerNodes.length;i++) {
+                               PeerNode pn = peerNodes[i];
+                               long routingBackedOffUntil = 
pn.getRoutingBackedOffUntil();
+                               boolean routingBackedOffNow = (now < 
routingBackedOffUntil);
+                               int backoff = 
(int)(Math.max(routingBackedOffUntil - now, 0));
+                               long idle = pn.lastReceivedPacketTime();
+                               
+                               // Elements must be HTML encoded.
+                               Object[] row = new Object[9];  // where [0] is 
the pn object!
+                               rows[i] = row;
+                               
+                               Object status;
+                               if(pn.isConnected()) {
+                                       status = CONNECTED;
+                                       if(routingBackedOffNow) {
+                                               status = BACKED_OFF;
+                                       }
+                               } else if(pn.hasCompletedHandshake() && 
pn.isVerifiedIncompatibleNewerVersion()) {
+                                       status = TOO_NEW;
+                               } else if(pn.hasCompletedHandshake() && 
!Version.checkGoodVersion(pn.getVersion())) {
+                                       status = INCOMPATIBLE;
+                               } else {
+                                       status = DISCONNECTED;
                                }
-                       } else if(pn.hasCompletedHandshake() && 
pn.isVerifiedIncompatibleNewerVersion()) {
-                               status = TOO_NEW;
-                       } else if(pn.hasCompletedHandshake() && 
!Version.checkGoodVersion(pn.getVersion())) {
-                               status = INCOMPATIBLE;
-                       } else {
-                               status = DISCONNECTED;
+                               
+                               row[0] = pn;
+                               row[1] = status;
+                               row[2] = HTMLEncoder.encode(pn.getName());
+                               row[3] = pn.getDetectedPeer() != null ? 
HTMLEncoder.encode(pn.getDetectedPeer().toString()) : "(address unknown)";
+                               row[4] = HTMLEncoder.encode(pn.getVersion());
+                               row[5] = new 
Double(pn.getLocation().getValue());
+                               row[6] = backoff/1000 + "/" + 
pn.getRoutingBackoffLength()/1000;
+                               if (idle == -1) row[7] = " ";
+                               else row[7] = new Long((now - idle) / 60000);
+                               row[8] = "<input type=\"checkbox\" 
name=\"delete_node_"+pn.hashCode()+"\" />";
                        }
+       
+                       // Sort array
+                       Arrays.sort(rows, new MyComparator());

-                       row[0] = pn;
-                       row[1] = status;
-                       row[2] = HTMLEncoder.encode(pn.getName());
-                       row[3] = pn.getDetectedPeer() != null ? 
HTMLEncoder.encode(pn.getDetectedPeer().toString()) : "(address unknown)";
-                       row[4] = HTMLEncoder.encode(pn.getVersion());
-                       row[5] = new Double(pn.getLocation().getValue());
-                       row[6] = backoff/1000 + "/" + 
pn.getRoutingBackoffLength()/1000;
-                       if (idle == -1) row[7] = " ";
-                       else row[7] = new Long((now - idle) / 60000);
-                       row[8] = "<input type=\"checkbox\" 
name=\"delete_node_"+pn.hashCode()+"\" />";
-               }
-
-               // Sort array
-               Arrays.sort(rows, new MyComparator());
-               
-               // Convert status codes into status strings
-               for(int i=0;i<rows.length;i++) {
-                       Object[] row = rows[i];
-                       Integer x = (Integer) row[1];
-                       if(x == CONNECTED) {
-                               row[1] = "<span 
class=\"peer_connected\">CONNECTED</span>";
-                               numberOfConnected++;
+                       // Convert status codes into status strings
+                       for(int i=0;i<rows.length;i++) {
+                               Object[] row = rows[i];
+                               Integer x = (Integer) row[1];
+                               if(x == CONNECTED) {
+                                       row[1] = "<span 
class=\"peer_connected\">CONNECTED</span>";
+                                       numberOfConnected++;
+                               }
+                               else if(x == BACKED_OFF) {
+                                       row[1] = "<span 
class=\"peer_backedoff\">BACKED OFF</span>";
+                                       numberOfBackedOff++;
+                               }
+                               else if(x == TOO_NEW) {
+                                       row[1] = "<span 
class=\"peer_too_new\">TOO NEW</span>";
+                                       numberOfTooNew++;
+                               }
+                               else if(x == INCOMPATIBLE) {
+                                       row[1] = "<span 
class=\"peer_incompatible\">INCOMPATIBLE</span>";
+                                       numberOfIncompatible++;
+                               }
+                               else if(x == DISCONNECTED) {
+                                       row[1] = "<span 
class=\"peer_disconnected\">DISCONNECTED</span>";
+                                       numberOfDisconnected++;
+                               }
                        }
-                       else if(x == BACKED_OFF) {
-                               row[1] = "<span class=\"peer_backedoff\">BACKED 
OFF</span>";
-                               numberOfBackedOff++;
-                       }
-                       else if(x == TOO_NEW) {
-                               row[1] = "<span class=\"peer_too_new\">TOO 
NEW</span>";
-                               numberOfTooNew++;
-                       }
-                       else if(x == INCOMPATIBLE) {
-                               row[1] = "<span 
class=\"peer_incompatible\">INCOMPATIBLE</span>";
-                               numberOfIncompatible++;
-                       }
-                       else if(x == DISCONNECTED) {
-                               row[1] = "<span 
class=\"peer_disconnected\">DISCONNECTED</span>";
-                               numberOfDisconnected++;
-                       }
-               }
-               
-               // Turn array into HTML
-               for(int i=0;i<rows.length;i++) {
-                       Object[] row = rows[i];
-                       buf.append("<tr>");
-                       for(int j=1;j<row.length;j++) {  // skip index 0 as 
it's the PeerNode object
-                               buf.append("<td>"+row[j]+"</td>");
-                       }
-                       buf.append("</tr>\n");

-                       if (path.endsWith("displaymessagetypes.html"))
-                       {
-                               buf.append("<tr class=\"messagetypes\"><td 
colspan=\"8\">\n");
-                               buf.append("<table 
class=\"sentmessagetypes\">\n");
-                               buf.append("<tr><th>Sent Message 
Type</th><th>Count</th></tr>\n");
-                               for (Enumeration 
keys=((PeerNode)row[0]).getLocalNodeSentMessagesToStatistic().keys(); 
keys.hasMoreElements(); )
-                               {
-                                       Object curkey = keys.nextElement();
-                                       buf.append("<tr><td>");
-                                       buf.append((String)curkey);
-                                       buf.append("</td><td>");
-                                       
buf.append(((Long)((PeerNode)row[0]).getLocalNodeSentMessagesToStatistic().get(curkey))
 + "");
-                                       buf.append("</td></tr>\n");
+                       // Turn array into HTML
+                       for(int i=0;i<rows.length;i++) {
+                               Object[] row = rows[i];
+                               buf.append("<tr>");
+                               for(int j=1;j<row.length;j++) {  // skip index 
0 as it's the PeerNode object
+                                       buf.append("<td>"+row[j]+"</td>");
                                }
-                               buf.append("</table>\n");
-       
-                               buf.append("<table 
class=\"receivedmessagetypes\">\n");
-                               buf.append("<tr><th>Received Message 
Type</th><th>Count</th></tr>\n");
-                               for (Enumeration 
keys=((PeerNode)row[0]).getLocalNodeReceivedMessagesFromStatistic().keys(); 
keys.hasMoreElements(); )
+                               buf.append("</tr>\n");
+                               
+                               if (path.endsWith("displaymessagetypes.html"))
                                {
-                                       Object curkey = keys.nextElement();
-                                       buf.append("<tr><td>");
-                                       buf.append((String)curkey);
-                                       buf.append("</td><td>");
-                                       
buf.append(((Long)((PeerNode)row[0]).getLocalNodeReceivedMessagesFromStatistic().get(curkey))
 + "");
+                                       buf.append("<tr 
class=\"messagetypes\"><td colspan=\"8\">\n");
+                                       buf.append("<table 
class=\"sentmessagetypes\">\n");
+                                       buf.append("<tr><th>Sent Message 
Type</th><th>Count</th></tr>\n");
+                                       for (Enumeration 
keys=((PeerNode)row[0]).getLocalNodeSentMessagesToStatistic().keys(); 
keys.hasMoreElements(); )
+                                       {
+                                               Object curkey = 
keys.nextElement();
+                                               buf.append("<tr><td>");
+                                               buf.append((String)curkey);
+                                               buf.append("</td><td>");
+                                               
buf.append(((Long)((PeerNode)row[0]).getLocalNodeSentMessagesToStatistic().get(curkey))
 + "");
+                                               buf.append("</td></tr>\n");
+                                       }
+                                       buf.append("</table>\n");
+               
+                                       buf.append("<table 
class=\"receivedmessagetypes\">\n");
+                                       buf.append("<tr><th>Received Message 
Type</th><th>Count</th></tr>\n");
+                                       for (Enumeration 
keys=((PeerNode)row[0]).getLocalNodeReceivedMessagesFromStatistic().keys(); 
keys.hasMoreElements(); )
+                                       {
+                                               Object curkey = 
keys.nextElement();
+                                               buf.append("<tr><td>");
+                                               buf.append((String)curkey);
+                                               buf.append("</td><td>");
+                                               
buf.append(((Long)((PeerNode)row[0]).getLocalNodeReceivedMessagesFromStatistic().get(curkey))
 + "");
+                                               buf.append("</td></tr>\n");
+                                       }
+                                       buf.append("</table>\n");
                                        buf.append("</td></tr>\n");
                                }
-                               buf.append("</table>\n");
-                               buf.append("</td></tr>\n");
                        }
-               }
-               buf.append("</table>\n");
-               //
-               if (rows.length != 0) {
+                       buf.append("</table>\n");
+                       //
                        buf.append("<table class=\"darknet_connections\">\n");
                        buf.append("<tr><td>");
                        boolean separatorNeeded = false;
@@ -253,10 +257,10 @@
                        }
                        buf.append("</td></tr>\n");
                        buf.append("</table>\n");
+                       //
+                       buf.append("<input type=\"submit\" name=\"disconnect\" 
value=\"Disconnect from selected peers\" />\n");
+                       buf.append("</form>\n");
                }
-               //
-               buf.append("<input type=\"submit\" name=\"disconnect\" 
value=\"Disconnect from selected peers\" />\n");
-               buf.append("</form>\n");
                buf.append("</div>\n");
                buf.append("</div>\n");


Modified: trunk/freenet/src/freenet/clients/http/PproxyToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/PproxyToadlet.java   2006-05-18 
19:40:40 UTC (rev 8777)
+++ trunk/freenet/src/freenet/clients/http/PproxyToadlet.java   2006-05-18 
19:47:04 UTC (rev 8778)
@@ -14,6 +14,7 @@
 import freenet.pluginmanager.PluginManager;
 import freenet.support.Bucket;
 import freenet.support.BucketTools;
+import freenet.support.HTMLEncoder;
 import freenet.support.Logger;
 import freenet.support.MultiValueTable;

@@ -33,7 +34,7 @@
                throws ToadletContextClosedException, IOException {

                if(data.size() > 1024*1024) {
-                       this.writeReply(ctx, 400, "text/plain", "Too big", "Too 
much data, config servlet limited to 1MB");
+                       this.writeReply(ctx, 400, "text/plain", "Too big", "Too 
much data, plugin servlet limited to 1MB");
                        return;
                }
                byte[] d = BucketTools.toByteArray(data);
@@ -63,13 +64,12 @@
                }if (request.getParam("unloadconfirm").length() > 0) {
                        pm.killPlugin(request.getParam("unloadconfirm"));
                        ctx.getPageMaker().makeHead(buf, "Plugins");
-                       buf.append("<div class=\"infobox 
infobox-information\">\n");
+                       buf.append("<div class=\"infobox infobox-success\">\n");
                        buf.append("<div class=\"infobox-header\">\n");
-                       buf.append("Plugin operation\n");
+                       buf.append("Plugin Unloaded\n");
                        buf.append("</div>\n");
                        buf.append("<div class=\"infobox-content\">\n");
-                       buf.append("The plugin "+request.getParam("remove")+" 
has been removed.\n");
-                       buf.append("<a href=\"/plugins/\">Back</a>");
+                       buf.append("The plugin " + 
HTMLEncoder.encode(request.getParam("remove")) + " has been unloaded.<br /><a 
href=\"/plugins/\">Return to Plugins Page</a>\n");
                        buf.append("</div>\n");
                        buf.append("</div>\n");
                        ctx.getPageMaker().makeTail(buf);
@@ -80,16 +80,14 @@
                        ctx.getPageMaker().makeHead(buf, "Plugins");
                        buf.append("<div class=\"infobox infobox-query\">\n");
                        buf.append("<div class=\"infobox-header\">\n");
-                       buf.append("Plugin operation\n");
+                       buf.append("Unload Plugin?\n");
                        buf.append("</div>\n");
                        buf.append("<div class=\"infobox-content\">\n");
-                       buf.append("Are you sure you wish to unload 
"+request.getParam("unload")+"?\n");
+                       buf.append("Are you sure you wish to unload " + 
HTMLEncoder.encode(request.getParam("unload")) + "?\n");
                        buf.append("<form action=\"/plugins/\" 
method=\"post\">\n");
                        buf.append("<input type=\"submit\" name=\"cancel\" 
value=\"Cancel\" />\n");
-                       buf.append("</form>");
-                       buf.append("<form action=\"/plugins/\" 
method=\"post\">\n");
-                       buf.append("<input type=\"hidden\" 
name=\"unloadconfirm\" value=\""+request.getParam("unload")+"\">\n");
-                       buf.append("<input type=\"submit\" name=\"confirm\" 
value=\"UNLOAD\" />\n");
+                       buf.append("<input type=\"hidden\" 
name=\"unloadconfirm\" value=\"" + 
HTMLEncoder.encode(request.getParam("unload")) + "\">\n");
+                       buf.append("<input type=\"submit\" name=\"confirm\" 
value=\"Unload\" />\n");
                        buf.append("</form>\n");
                        buf.append("</div>\n");
                        buf.append("</div>\n");
@@ -108,7 +106,7 @@
                        }

                        if (fn == null) {
-                               this.sendErrorPage(ctx, 404, "Plugin not 
found", "The specified plugin could not be located in order to reload it.");
+                               this.sendErrorPage(ctx, 404, "Plugin Not 
Found", "The specified plugin could not be located in order to reload it.");
                                //writeReply(ctx, 200, "text/html", "OK", 
mkForwardPage(ctx,"Error", "Plugin not found...", ".", 5));
                        } else {
                                pm.killPlugin(request.getParam("reload"));
@@ -183,42 +181,41 @@
        private void showPluginList(ToadletContext ctx, HTTPRequest request) 
throws ToadletContextClosedException, IOException {
                if (!request.hasParameters()) {
                        StringBuffer out = new StringBuffer();
-                       ctx.getPageMaker().makeHead(out, "Plugin List");
-                       out.append("<table style=\"border: 1pt solid 
#c0c0c0;\">");
-                       out.append("  <tr>\n");
-                       out.append("    <th>Name</th>\n");
-                       out.append("    <th>ID</th>\n");
-                       out.append("    <th>Started</th>\n");
-                       out.append("    <th></th>\n");
-                       out.append("  </tr>\n");
-                       Iterator it = pm.getPlugins().iterator();
-                       while (it.hasNext()) {
-                               PluginInfoWrapper pi = (PluginInfoWrapper) 
it.next();
-                               out.append("  <tr>\n");
-                               out.append("    <td style=\"border: 1pt solid 
#c0c0c0;\">" + pi.getPluginClassName() + "</td>\n");
-                               out.append("    <td style=\"border: 1pt solid 
#c0c0c0;\">" + pi.getThreadName() + "</td>\n");
-                               out.append("    <td style=\"border: 1pt solid 
#c0c0c0;\">" + (new Date(pi.getStarted())) + "</td>\n");
-                               out.append("    <td style=\"border: 1pt solid 
#c0c0c0;\">");
-                               if (pi.isPproxyPlugin())
-                                       out.append("&nbsp;<a 
href=\""+pi.getPluginClassName()+"/\">[VISIT]</a>&nbsp;");
-                               out.append("&nbsp;<form method=\"post\" 
action=\".\">" +
-                                               "<input type=\"hidden\" 
name=\"unload\" value=\""+pi.getThreadName()+"\" />"+
-                                               "<input type=\"submit\" 
value=\"[UNLOAD]\"></form>&nbsp;");
-                               out.append("&nbsp;<form method=\"post\" 
action=\".\">" +
-                                               "<input type=\"hidden\" 
name=\"reload\" value=\""+pi.getThreadName()+"\" />"+
-                                               "<input type=\"submit\" 
value=\"[RELOAD]\"></form>&nbsp;");
-                               out.append("</td>\n");
-                               out.append("  </tr>\n");
-                       }
-                       
+                       ctx.getPageMaker().makeHead(out, "Plugins");
+                       //
+                       out.append("<div class=\"infobox infobox-normal\">\n");
+                       out.append("<div class=\"infobox-header\">\n");
+                       out.append("Plugin List\n");
+                       out.append("</div>\n");
+                       out.append("<div class=\"infobox-content\">\n");
+                       //
+                       out.append("<table class=\"plugins\">");
+                       out.append("<tr><th>Classname</th><th>Internal 
ID</th><th>Started at</th><th></th></tr>\n");
                        if (pm.getPlugins().isEmpty()) {
-                               out.append("<tr>\n");
-                               out.append("<td colspan=\"4\"\n");
-                               out.append("<i>No plugins loaded</i>\n");
-                               out.append("</td>\n");
-                               out.append("</tr>\n");
+                               out.append("<tr><td colspan=\"4\">No plugins 
loaded</td></tr>\n");
                        }
-                       
+                       else {
+                               Iterator it = pm.getPlugins().iterator();
+                               while (it.hasNext()) {
+                                       PluginInfoWrapper pi = 
(PluginInfoWrapper) it.next();
+                                       out.append("<tr>");
+                                       out.append("<td>" + 
pi.getPluginClassName() + "</td>");
+                                       out.append("<td>" + pi.getThreadName() 
+ "</td>");
+                                       out.append("<td>" + (new 
Date(pi.getStarted())) + "</td>");
+                                       out.append("<td>");
+                                       if (pi.isPproxyPlugin()) {
+                                               out.append("<form 
method=\"get\" action=\"" + pi.getPluginClassName() + "\">" +
+                                                               "<input 
type=\"submit\" value=\"Visit\"></form>");
+                                       }
+                                       out.append("<form method=\"post\" 
action=\".\">" +
+                                                       "<input type=\"hidden\" 
name=\"unload\" value=\"" + pi.getThreadName() + "\" />"+
+                                                       "<input type=\"submit\" 
value=\"Unload\"></form>");
+                                       out.append("<form method=\"post\" 
action=\".\">" +
+                                                       "<input type=\"hidden\" 
name=\"reload\" value=\"" + pi.getThreadName() + "\" />"+
+                                                       "<input type=\"submit\" 
value=\"Reload\"></form>");
+                                       out.append("</td></tr>\n");
+                               }
+                       }
                        out.append("</table>");
                        //String ret = "<hr/>" + out.toString();
                        //ret = pm.dumpPlugins().replaceAll(",", "\n&nbsp; 
&nbsp; ").replaceAll("\"", " \" ");
@@ -230,6 +227,10 @@
                        // Obsolete
                        //out.append("<form method=\"get\"><div>Remove plugin: 
(enter ID) <input type=\"text\" name=\"remove\" size=40/><input type=\"submit\" 
value=\"Remove\"/></div></form>\n");
                        out.append("<form method=\"post\" 
action=\".\"><div>Load plugin: <input type=\"text\" name=\"load\" 
size=\"40\"/><input type=\"submit\" value=\"Load\" /></div></form>\n");
+                       //
+                       out.append("</div>\n");
+                       out.append("</div>\n");
+                       //
                        ctx.getPageMaker().makeTail(out);
                        writeReply(ctx, 200, "text/html", "OK", out.toString());
                } 

Modified: 
trunk/freenet/src/freenet/clients/http/staticfiles/themes/clean/theme.css
===================================================================
--- trunk/freenet/src/freenet/clients/http/staticfiles/themes/clean/theme.css   
2006-05-18 19:40:40 UTC (rev 8777)
+++ trunk/freenet/src/freenet/clients/http/staticfiles/themes/clean/theme.css   
2006-05-18 19:47:04 UTC (rev 8778)
@@ -203,6 +203,21 @@
        list-style: none;
 }

+/* plugins page */
+
+table.plugins th, table.plugins td {
+       font-size: 8pt;
+}
+
+table.plugins span {
+       font-weight: bold;
+       font-size: 8pt;
+}
+
+table.plugins form {
+       display: inline;
+}
+
 /* configuration page */

 ul.config {
@@ -241,16 +256,6 @@
        width: 300px;
 }

-/*
-.cancel {
-       float: left;
-}
-
-.confirm {
-       float: right;
-}
-*/
-
 /* darknet page */

 table.darknet_connections th, table.darknet_connections td {


Reply via email to