Author: zothar
Date: 2006-05-29 01:01:52 +0000 (Mon, 29 May 2006)
New Revision: 8908

Modified:
   trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
   trunk/freenet/src/freenet/clients/http/FProxyToadlet.java
   trunk/freenet/src/freenet/clients/http/QueueToadlet.java
   trunk/freenet/src/freenet/node/useralerts/UserAlertManager.java
Log:
Add alert summary to /darknet/ and /queue/ pages, since those are likely to get 
watched as much as / will be.  As always, feel free to theme.

Modified: trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java       
2006-05-29 00:14:16 UTC (rev 8907)
+++ trunk/freenet/src/freenet/clients/http/DarknetConnectionsToadlet.java       
2006-05-29 01:01:52 UTC (rev 8908)
@@ -73,6 +73,8 @@

                long now = System.currentTimeMillis();

+               node.alerts.toSummaryHtml(buf);
+               
                buf.append("<div class=\"infobox infobox-normal\">\n");
                buf.append("<div class=\"infobox-header\">\n");
                buf.append("My Connections");

Modified: trunk/freenet/src/freenet/clients/http/FProxyToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/FProxyToadlet.java   2006-05-29 
00:14:16 UTC (rev 8907)
+++ trunk/freenet/src/freenet/clients/http/FProxyToadlet.java   2006-05-29 
01:01:52 UTC (rev 8908)
@@ -366,7 +366,7 @@
                        N2NTMToadlet n2ntmToadlet = new N2NTMToadlet(node, 
client);
                        server.register(n2ntmToadlet, "/send_n2ntm/", true);

-                       QueueToadlet queueToadlet = new 
QueueToadlet(node.getFCPServer(), client);
+                       QueueToadlet queueToadlet = new QueueToadlet(node, 
node.getFCPServer(), client);
                        server.register(queueToadlet, "/queue/", true);

                } catch (IOException ioe) {

Modified: trunk/freenet/src/freenet/clients/http/QueueToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/QueueToadlet.java    2006-05-29 
00:14:16 UTC (rev 8907)
+++ trunk/freenet/src/freenet/clients/http/QueueToadlet.java    2006-05-29 
01:01:52 UTC (rev 8908)
@@ -16,6 +16,7 @@
 import freenet.node.fcp.ClientRequest;
 import freenet.node.fcp.FCPServer;
 import freenet.node.fcp.MessageInvalidException;
+import freenet.node.Node;
 import freenet.support.Bucket;
 import freenet.support.HTMLEncoder;
 import freenet.support.Logger;
@@ -24,10 +25,12 @@

 public class QueueToadlet extends Toadlet {

+       private Node node;
        final FCPServer fcp;

-       public QueueToadlet(FCPServer fcp, HighLevelSimpleClient client) {
+       public QueueToadlet(Node n, FCPServer fcp, HighLevelSimpleClient 
client) {
                super(client);
+               this.node = n;
                this.fcp = fcp;
                if(fcp == null) throw new NullPointerException();
        }
@@ -84,6 +87,8 @@

                ctx.getPageMaker().makeHead(buf, "Queued Requests");

+               node.alerts.toSummaryHtml(buf);
+               
                // First, get the queued requests, and separate them into 
different types.

                LinkedList completedDownloadToDisk = new LinkedList();

Modified: trunk/freenet/src/freenet/node/useralerts/UserAlertManager.java
===================================================================
--- trunk/freenet/src/freenet/node/useralerts/UserAlertManager.java     
2006-05-29 00:14:16 UTC (rev 8907)
+++ trunk/freenet/src/freenet/node/useralerts/UserAlertManager.java     
2006-05-29 01:01:52 UTC (rev 8908)
@@ -45,12 +45,12 @@
         */
        public void toHtml(StringBuffer buf) {
                synchronized(alerts){
-                       UserAlert[] a = getAlerts();
-                       for(int i=0;i<a.length;i++) {
-                               UserAlert alert = a[i];
+                       UserAlert[] alerts = getAlerts();
+                       for(int i=0;i<alerts.length;i++) {
+                               UserAlert alert = alerts[i];
                                if(!alert.isValid()) continue;

-                               short level = a[i].getPriorityClass();
+                               short level = alert.getPriorityClass();
                                if(level <= UserAlert.CRITICAL_ERROR)
                                        buf.append("<div class=\"infobox 
infobox-error\">\n");
                                else if(level <= UserAlert.ERROR)
@@ -61,20 +61,95 @@
                                        buf.append("<div class=\"infobox 
infobox-information\">\n");
                                //
                                buf.append("<div class=\"infobox-header\">\n");
-                               buf.append(a[i].getTitle());
+                               buf.append(alert.getTitle());
                                buf.append("</div>\n");
                                //
                                buf.append("<div class=\"infobox-content\">\n");
-                               buf.append(a[i].getText());
+                               buf.append(alert.getText());
                                //
-                               if(a[i].userCanDismiss())
+                               if(alert.userCanDismiss())
                                        buf.append("<form method=\"post\" 
action=\".\"><input type=\"hidden\" name=\"disable\" value=\""+
-                                                       a[i].hashCode()+"\" 
/><input type=\"submit\" value=\""+a[i].dismissButtonText()+"\" /></form>");
+                                                       alert.hashCode()+"\" 
/><input type=\"submit\" value=\""+alert.dismissButtonText()+"\" /></form>");
                                //
                                buf.append("</div>\n");
                                buf.append("</div>\n");
                        }
                }
        }
+
+       /**
+        * Write the alert summary as HTML to a StringBuffer
+        */
+       public void toSummaryHtml(StringBuffer buf) {
+         short highestLevel = 99;
+         int numberOfCriticalError = 0;
+         int numberOfError = 0;
+         int numberOfWarning = 0;
+         int numberOfMinor = 0;
+         int totalNumber = 0;
+               synchronized(alerts){
+                       UserAlert[] alerts = getAlerts();
+                       for(int i=0;i<alerts.length;i++) {
+                               UserAlert alert = alerts[i];
+                               if(!alert.isValid()) continue;
+                               short level = alert.getPriorityClass();
+                               if(level < highestLevel)
+                                       highestLevel = level;
+                               if(level <= UserAlert.CRITICAL_ERROR)
+                                       numberOfCriticalError += 1;
+                               else if(level <= UserAlert.ERROR)
+                                       numberOfError += 1;
+                               else if(level <= UserAlert.WARNING)
+                                       numberOfWarning += 1;
+                               else if(level <= UserAlert.MINOR)
+                                       numberOfMinor += 1;
+                               totalNumber += 1;
+                       }
+                       if(totalNumber == 0)
+                               return;
+                       boolean separatorNeeded = false;
+                       StringBuffer alertSummaryString = new 
StringBuffer(1024);
+                       if (numberOfCriticalError != 0) {
+                               alertSummaryString.append("Critical Error: " + 
numberOfCriticalError);
+                               separatorNeeded = true;
+                       }
+                       if (numberOfError != 0) {
+                               if (separatorNeeded)
+                                       alertSummaryString.append(" | ");
+                               alertSummaryString.append("Error: " + 
numberOfError);
+                               separatorNeeded = true;
+                       }
+                       if (numberOfWarning != 0) {
+                               if (separatorNeeded)
+                                       alertSummaryString.append(" | ");
+                               alertSummaryString.append("Warning: " + 
numberOfWarning);
+                               separatorNeeded = true;
+                       }
+                       if (numberOfMinor != 0) {
+                               if (separatorNeeded)
+                                       alertSummaryString.append(" | ");
+                               alertSummaryString.append("Minor: " + 
numberOfMinor);
+                               separatorNeeded = true;
+                       }
+      if (separatorNeeded)
+        alertSummaryString.append(" | ");
+      alertSummaryString.append("Total: " + totalNumber);
+      if(highestLevel <= UserAlert.CRITICAL_ERROR)
+        buf.append("<div class=\"infobox infobox-error\">\n");
+      else if(highestLevel <= UserAlert.ERROR)
+        buf.append("<div class=\"infobox infobox-alert\">\n");
+      else if(highestLevel <= UserAlert.WARNING)
+        buf.append("<div class=\"infobox infobox-warning\">\n");
+      else if(highestLevel <= UserAlert.MINOR)
+        buf.append("<div class=\"infobox infobox-information\">\n");
+      buf.append("<div class=\"infobox-header\">\n");
+      buf.append("Outstanding Alerts");
+      buf.append("</div>\n");
+      buf.append("<div class=\"infobox-content\">\n");
+      buf.append(alertSummaryString);
+      buf.append("</div>\n");
+      buf.append("</div>\n");
+               }
+       }

 }


Reply via email to