Author: dbkr
Date: 2007-11-05 23:59:35 +0000 (Mon, 05 Nov 2007)
New Revision: 15698

Modified:
   trunk/apps/Freemail/src/freemail/FreemailPlugin.java
Log:
Use post for the add account form.


Modified: trunk/apps/Freemail/src/freemail/FreemailPlugin.java
===================================================================
--- trunk/apps/Freemail/src/freemail/FreemailPlugin.java        2007-11-05 
23:41:48 UTC (rev 15697)
+++ trunk/apps/Freemail/src/freemail/FreemailPlugin.java        2007-11-05 
23:59:35 UTC (rev 15698)
@@ -194,21 +194,62 @@
                HTMLNode pageNode = pr.getPageMaker().getPageNode("Freemail 
plugin", false, null);
                HTMLNode contentNode = 
pr.getPageMaker().getContentNode(pageNode);

-               if(request.getParam("add").equals("Add account")) {
-                       if(!(request.getParam("name").equals("") || 
request.getParam("password").equals(""))) {
+               HTMLNode addBox = contentNode.addChild("div", "class", 
"infobox");
+               addBox.addChild("div", "class", "infobox-header", "Add 
account");
+               
+               HTMLNode boxContent = addBox.addChild("div", "class", 
"infobox-content");
+               HTMLNode form = pr.addFormChild(boxContent, "", 
"addAccountForm");
+               
+               HTMLNode table = form.addChild("table", "class", "plugintable");
+               HTMLNode tableRowName = table.addChild("tr");
+               tableRowName.addChild("td", "Name");
+               tableRowName.addChild("td").addChild("input", new String[] { 
"type", "name", "value", "size" }, new String[] { "text", "name", "", "30" });
+               HTMLNode tableRowPassword = table.addChild("tr");
+               tableRowPassword.addChild("td", "Password");
+               tableRowPassword.addChild("td").addChild("input", new String[] 
{ "type", "name", "value", "size" }, new String[] { "password", "password", "", 
"30" });
+               HTMLNode tableRowDomain = table.addChild("tr");
+               tableRowDomain.addChild("td", "Domain");
+               tableRowDomain.addChild("td").addChild("input", new String[] { 
"type", "name", "value", "size" }, new String[] { "text", "domain", "", "30" });
+               HTMLNode tableRowSubmit = table.addChild("tr");
+               tableRowSubmit.addChild("td");
+               tableRowSubmit.addChild("td").addChild("input", new String[] { 
"type", "name", "value" }, new String[] { "submit", "add", "Add account"});
+               
+               return pageNode.generate();
+       }
+
+       public String handleHTTPPost(HTTPRequest request) throws 
PluginHTTPException {
+               HTMLNode pageNode = pr.getPageMaker().getPageNode("Freemail 
plugin", false, null);
+               HTMLNode contentNode = 
pr.getPageMaker().getContentNode(pageNode);
+               
+               String add = request.getPartAsString("add", 100);
+               String name = request.getPartAsString("name", 100);
+               String password = request.getPartAsString("password", 100);
+               String domain = request.getPartAsString("domain", 100);
+               
+               if(add.equals("Add account")) {
+                       if(!(name.equals("") || password.equals(""))) {
                                try {
-                                       
AccountManager.Create(request.getParam("name"));
-                                       
AccountManager.ChangePassword(request.getParam("name"), 
request.getParam("password"));
-                                       
if(!request.getParam("domain").equals("")) {
-                                               
AccountManager.addShortAddress(request.getParam("name"), 
request.getParam("domain"));
+                                       AccountManager.Create(name);
+                                       AccountManager.ChangePassword(name, 
password);
+                                       if(!domain.equals("")) {
+                                               
AccountManager.addShortAddress(name, domain);
                                        }
-                                       Thread t = new Thread(new 
SingleAccountWatcher(new File(DATADIR, request.getParam("name"))), "Account 
Watcher for "+request.getParam("name"));
+                                       Thread t = new Thread(new 
SingleAccountWatcher(new File(DATADIR, name)), "Account Watcher for "+name);
                                        t.setDaemon(true);
                                        t.start();
-                                       HTMLNode addedBox = 
contentNode.addChild("div", "class", "infobox");
-                                       addedBox.addChild("div", "class", 
"infobox-header", "Added account");
-                                       addedBox.addChild("div", "class", 
"infobox-content", "Account for " + request.getParam("name") + " is created");
-                                       
+
+                                       HTMLNode successBox = 
contentNode.addChild("div", "class", "infobox infobox-success");
+                                       successBox.addChild("div", "class", 
"infobox-header", "Account Created");
+                                       // TODO: This is not the world's best 
into message, but it's only temporary (hopefully...)
+                                       HTMLNode text = 
successBox.addChild("div", "class", "infobox-content");
+                                       text.addChild("#", "The account ");
+                                       text.addChild("i", name);
+                                       text.addChild("#", " was created 
successfully.");
+                                       text.addChild("br");
+                                       text.addChild("br");
+                                       text.addChild("#", "You now need to 
configure your email client to send and receive email through "
+                                                       + "Freemail using IMAP 
and SMTP. Freemail uses ports 3143 and 3025 for these "
+                                                       + "respectively by 
default.");
                                } catch (IOException ioe) {
                                        HTMLNode errorBox = 
contentNode.addChild("div", "class", "infobox infobox-error");
                                        errorBox.addChild("div", "class", 
"infobox-header", "IO Error"); 
@@ -216,38 +257,23 @@
                                } catch (Exception e) {
                                        HTMLNode errorBox = 
contentNode.addChild("div", "class", "infobox-error");
                                        errorBox.addChild("div", "class", 
"infobox-header", "Error"); 
-                                       errorBox.addChild("div", "class", 
"infobox-content", "Couldn't change password for "+request.getParam("name")+". 
"+e.getMessage());
+                                       errorBox.addChild("div", "class", 
"infobox-content", "Couldn't change password for "+name+". "+e.getMessage());
                                }
+                               
+                               // XXX: There doesn't seem to be a way to get 
(or set) our root in the web interface,
+                               //      so we'll just have to assume it's this 
and won't change
+                               contentNode.addChild("a", "href", 
"/plugins/freemail.FreemailPlugin",
+                                               "Freemail Home");
                        } else {
                                HTMLNode errorBox = contentNode.addChild("div", 
"class", "infobox infobox-error");
                                errorBox.addChild("div", "class", 
"infobox-header", "Error"); 
                                errorBox.addChild("div", "class", 
"infobox-content", "Couldn't create account, name or password is missing");
                        }
                }
-
-               HTMLNode addBox = contentNode.addChild("div", "class", 
"infobox");
-               addBox.addChild("div", "class", "infobox-header", "Add 
account");
-               HTMLNode table = addBox.addChild("div", "class", 
"infobox-content").addChild("form").addChild("table", "class", "plugintable");
-               HTMLNode tableRowName = table.addChild("tr");
-               tableRowName.addChild("td", "Name");
-               tableRowName.addChild("td").addChild("input", new String[] { 
"type", "name", "value", "size" }, new String[] { "text", "name", "", "30" });
-               HTMLNode tableRowPassword = table.addChild("tr");
-               tableRowPassword.addChild("td", "Password");
-               tableRowPassword.addChild("td").addChild("input", new String[] 
{ "type", "name", "value", "size" }, new String[] { "password", "password", "", 
"30" });
-               HTMLNode tableRowDomain = table.addChild("tr");
-               tableRowDomain.addChild("td", "Domain");
-               tableRowDomain.addChild("td").addChild("input", new String[] { 
"type", "name", "value", "size" }, new String[] { "text", "domain", "", "30" });
-               HTMLNode tableRowSubmit = table.addChild("tr");
-               tableRowSubmit.addChild("td");
-               tableRowSubmit.addChild("td").addChild("input", new String[] { 
"type", "name", "value" }, new String[] { "submit", "add", "Add account"});

                return pageNode.generate();
        }

-       public String handleHTTPPost(HTTPRequest request) throws 
PluginHTTPException {
-               return null;
-       }
-
        public String handleHTTPPut(HTTPRequest request) throws 
PluginHTTPException {
                return null;
        }


Reply via email to