Author: dbkr
Date: 2006-03-24 01:34:27 +0000 (Fri, 24 Mar 2006)
New Revision: 8293

Modified:
   trunk/freenet/src/freenet/clients/http/FproxyToadlet.java
   trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java
   trunk/freenet/src/freenet/node/Version.java
Log:
556: Basic bookmark support for fproxy. Still needs a bookmark editing section 
for updating and deleting bookmarks.


Modified: trunk/freenet/src/freenet/clients/http/FproxyToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/FproxyToadlet.java   2006-03-23 
14:17:44 UTC (rev 8292)
+++ trunk/freenet/src/freenet/clients/http/FproxyToadlet.java   2006-03-24 
01:34:27 UTC (rev 8293)
@@ -78,7 +78,7 @@

                        RedirectException re = new RedirectException();
                        try {
-                               re.newuri = new URI("/welcome/");
+                               re.newuri = new URI("/welcome/"+(uri.getQuery() 
== null? "" : "?"+uri.getQuery()));
                        } catch (URISyntaxException e) {
                                // HUH!?!
                        }
@@ -200,7 +200,7 @@
                        PproxyToadlet pproxy = new PproxyToadlet(client, 
node.pluginManager);
                        server.register(pproxy, "/plugins/", true);

-                       WelcomeToadlet welcometoadlet = new 
WelcomeToadlet(client, node);
+                       WelcomeToadlet welcometoadlet = new 
WelcomeToadlet(client, node, fproxyConfig);
                        server.register(welcometoadlet, "/welcome/", true);

                        ConfigToadlet configtoadlet = new ConfigToadlet(client, 
config);

Modified: trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java
===================================================================
--- trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java  2006-03-23 
14:17:44 UTC (rev 8292)
+++ trunk/freenet/src/freenet/clients/http/WelcomeToadlet.java  2006-03-24 
01:34:27 UTC (rev 8293)
@@ -3,21 +3,100 @@
 import java.io.IOException;
 import java.net.URI;
 import java.net.URISyntaxException;
+import java.util.Vector;
+import java.util.Enumeration;

 import freenet.client.HighLevelSimpleClient;
 import freenet.node.Node;
 import freenet.node.Version;
+import freenet.config.Option;
+import freenet.config.SubConfig;
+import freenet.config.StringArrCallback;
+import freenet.config.StringArrOption;
 import freenet.pluginmanager.HTTPRequest;
 import freenet.support.Bucket;
 import freenet.support.BucketTools;
 import freenet.support.Logger;

 public class WelcomeToadlet extends Toadlet {
+       private static final String[] DEFAULT_BOOKMARKS = {
+               "SSK at 
60I8H8HinpgZSOuTSD66AVlIFAy-xsppFr0YCzCar7c,NzdivUGCGOdlgngOGRbbKDNfSCnjI0FXjHLzJM4xkJ4,AQABAAE/index-4/=INDEX.7-freesite"
+       };
        Node node;
+       SubConfig config;
+       Vector bookmarks = new Vector();
+       
+       private class Bookmark {
+               private final String key;
+               private final String desc;
+               
+               Bookmark(String k, String d) {
+                       this.key = k;
+                       this.desc = d;
+               }
+               
+               Bookmark(String from) {
+                       int eqpos = from.indexOf("=");
+                       
+                       if (eqpos < 0) {
+                               this.key = from;
+                               this.desc = from;
+                       } else {
+                               this.key = from.substring(0, eqpos);
+                               this.desc = from.substring(eqpos + 1);
+                       }
+               }
+               
+               public String getKey() {
+                       return key;
+               }
+               
+               public String getDesc() {
+                       if (desc == "") {
+                               return "Unnamed Bookmark";
+                       } else {
+                               return desc;
+                       }
+               }
+               
+               public String toString() {
+                       return this.key + "=" + this.desc;
+               }
+       }
+       
+       private class BookmarkCallback implements StringArrCallback {
+               public String get() {
+                       StringBuffer buf = new StringBuffer("");
+                       
+                       for (Enumeration e = bookmarks.elements(); 
e.hasMoreElements(); ) {
+                               buf.append((String)e.nextElement().toString());
+                               buf.append(StringArrOption.delimiter);
+                       }
+                       
+                       
+                       return buf.substring(0, buf.length() - 1);
+               }
+               
+               public void set(String newval) {
+                       String[] newvals = 
newval.split(StringArrOption.delimiter);
+                       bookmarks.clear();
+                       for (int i = 0; i < newvals.length; i++) {
+                               bookmarks.add(new Bookmark(newvals[i]));
+                       }
+               }
+       }

-       WelcomeToadlet(HighLevelSimpleClient client, Node n) {
+       WelcomeToadlet(HighLevelSimpleClient client, Node n, SubConfig sc) {
                super(client);
                this.node = n;
+               this.config = sc;
+               
+               sc.register("bookmarks", DEFAULT_BOOKMARKS, 0, false, "List of 
bookmarks", "A list of bookmarked freesites", new BookmarkCallback());
+               
+               String[] initialbookmarks = sc.getStringArr("bookmarks");
+               for (int i = 0; i < initialbookmarks.length; i++) {
+                       bookmarks.add(new Bookmark(initialbookmarks[i]));
+               }
        }

        public void handlePost(URI uri, Bucket data, ToadletContext ctx) throws 
ToadletContextClosedException, IOException {
@@ -66,6 +145,10 @@
                        buf.append("</form>\n");
                        ctx.getPageMaker().makeTail(buf);
                        writeReply(ctx, 200, "text/html", "OK", buf.toString());
+               } else if (request.getParam("newbookmark").length() > 0) {
+                       bookmarks.add(new 
Bookmark(request.getParam("newbookmark"), request.getParam("name")));
+                       
+                       this.handleGet(uri, ctx);
                } else {
                        this.handleGet(uri, ctx);
                }
@@ -74,11 +157,63 @@
        public void handleGet(URI uri, ToadletContext ctx) throws 
ToadletContextClosedException, IOException {
                StringBuffer buf = new StringBuffer();

+               HTTPRequest request = new HTTPRequest(uri);
+               if (request.getParam("newbookmark").length() > 0) {
+                       ctx.getPageMaker().makeHead(buf, "Add a Bookmark");
+                       
+                       buf.append("<form action=\".\" method=\"post\">\n");
+                       buf.append("<div>\n");
+                       buf.append("Please confirm that you wish to add the 
key:<br />\n");
+                       
buf.append("<i>"+request.getParam("newbookmark")+"</i><br />");
+                       buf.append("To your bookmarks, and enter the 
description that you would prefer:<br />\n");
+                       buf.append("Description:\n");
+                       buf.append("<input type=\"text\" name=\"name\" 
value=\""+request.getParam("desc")+"\" style=\"width: 100%; \" />\n");
+                       buf.append("<input type=\"hidden\" name=\"newbookmark\" 
value=\""+request.getParam("newbookmark")+"\" />\n");
+                       buf.append("<input type=\"submit\" value=\"Add 
Bookmark\" />\n");
+                       buf.append("</div>\n");
+                       buf.append("</form>\n");
+                       
+                       ctx.getPageMaker().makeTail(buf);

+                       this.writeReply(ctx, 200, "text/html", "OK", 
buf.toString());
+                       return;
+               }
+               
+               
                ctx.getPageMaker().makeHead(buf, "Freenet FProxy Homepage");
                if(node.isTestnetEnabled())
                        buf.append("<div style=\"color: red; font-size: 200%; 
\">WARNING: TESTNET MODE ENABLED</div>");

+               // Bookmarks
+               buf.append("<div class=\"infobox\">\n");
+               buf.append("<h2>My Bookmarks</h2>");
+               
+               Enumeration e = bookmarks.elements();
+               if (!e.hasMoreElements()) {
+                       buf.append("<i>You have currently have no bookmarks 
defined</i>");
+               }
+               while (e.hasMoreElements()) {
+                       Bookmark b = (Bookmark)e.nextElement();
+                       
+                       buf.append("<a href=\"/"+b.getKey()+"\">");
+                       buf.append(b.getDesc());
+                       buf.append("</a><br />\n");
+               }
+               
+               buf.append("<br />\n");
+               buf.append("<div>\n");
+               buf.append("<form action=\".\" method=\"post\">\n");
+               buf.append("<b>New Bookmark</b>\n");
+               buf.append("<br />\n");
+               buf.append("Key: \n");
+               buf.append("<input type=\"text\" name=\"newbookmark\" 
style=\"width: 100%; \"/>\n");
+               buf.append("Description: \n");
+               buf.append("<input type=\"text\" name=\"name\" style=\"width: 
100%; \"/>\n");
+               buf.append("<input type=\"submit\" value=\"Add Bookmark\"/>\n");
+               buf.append("</div>\n");
+               buf.append("</form>\n");
+               buf.append("</div>\n");
+               
                // Version info
                buf.append("<div class=\"infobox\">\n");
                buf.append("<h2>Version</h2>");

Modified: trunk/freenet/src/freenet/node/Version.java
===================================================================
--- trunk/freenet/src/freenet/node/Version.java 2006-03-23 14:17:44 UTC (rev 
8292)
+++ trunk/freenet/src/freenet/node/Version.java 2006-03-24 01:34:27 UTC (rev 
8293)
@@ -20,7 +20,7 @@
        public static final String protocolVersion = "1.0";

        /** The build number of the current revision */
-       private static final int buildNumber = 555;
+       private static final int buildNumber = 556;

        /** Oldest build of Fred we will talk to */
        private static final int lastGoodBuild = 507;


Reply via email to