]> WPIA git - gigi.git/blobdiff - src/org/cacert/gigi/pages/account/mail/MailManagementForm.java
upd: use a more strict pattern for handling forms
[gigi.git] / src / org / cacert / gigi / pages / account / mail / MailManagementForm.java
index c8245026d8d6b8a0e47f0251e497318f758de6ab..2287a015fd533ba6706daeaef1e387b345731fda 100644 (file)
@@ -1,5 +1,6 @@
 package org.cacert.gigi.pages.account.mail;
 
+import java.io.IOException;
 import java.io.PrintWriter;
 import java.util.Map;
 
@@ -16,12 +17,9 @@ import org.cacert.gigi.pages.Page;
 
 public class MailManagementForm extends Form {
 
-    private static Template t;
+    private static final Template t = new Template(MailAddForm.class.getResource("MailManagementForm.templ"));
 
     private User target;
-    static {
-        t = new Template(MailAddForm.class.getResource("MailManagementForm.templ"));
-    }
 
     public MailManagementForm(HttpServletRequest hsr, User target) {
         super(hsr);
@@ -29,37 +27,20 @@ public class MailManagementForm extends Form {
     }
 
     @Override
-    public boolean submit(PrintWriter out, HttpServletRequest req) {
-        if (req.getParameter("makedefault") != null) {
-            try {
-                String mailid = req.getParameter("emailid");
-                if (mailid == null) {
-                    return false;
-                }
-                target.updateDefaultEmail(EmailAddress.getById(Integer.parseInt(mailid.trim())));
-            } catch (GigiApiException e) {
-                e.format(out, Page.getLanguage(req));
-                return false;
-            }
-            return true;
-        }
-        if (req.getParameter("delete") != null) {
-            String[] toDel = req.getParameterValues("delid[]");
-            if (toDel == null) {
-                return false;
-            }
-            for (int i = 0; i < toDel.length; i++) {
-                try {
-                    target.deleteEmail(EmailAddress.getById(Integer.parseInt(toDel[i].trim())));
-                } catch (GigiApiException e) {
-                    e.format(out, Page.getLanguage(req));
-                    return false;
-                }
+    public boolean submit(HttpServletRequest req) throws GigiApiException {
+        try {
+            String d;
+            if ((d = req.getParameter("default")) != null) {
+                target.updateDefaultEmail(EmailAddress.getById(Integer.parseInt(d)));
+            } else if ((d = req.getParameter("delete")) != null) {
+                target.deleteEmail(EmailAddress.getById(Integer.parseInt(d)));
+            } else if ((d = req.getParameter("reping")) != null) {
+                EmailAddress.getById(Integer.parseInt(d)).requestReping(Page.getLanguage(req));
             }
             return true;
-
+        } catch (IOException e1) {
+            throw new GigiApiException("Error while doing reping.");
         }
-        return false;
     }
 
     @Override
@@ -78,15 +59,21 @@ public class MailManagementForm extends Form {
                 int mailID = emailAddress.getId();
                 vars.put("id", mailID);
                 if (emailAddress.getAddress().equals(target.getEmail())) {
-                    vars.put("checked", "checked");
+                    vars.put("default", " disabled");
+                    vars.put("deletable", " disabled");
                 } else {
-                    vars.put("checked", "");
+                    vars.put("deletable", "");
+                    vars.put("default", "");
                 }
                 if (emailAddress.isVerified()) {
-                    vars.put("verification", "Verified");
+                    vars.put("verification", l.getTranslation("Verified"));
                 } else {
-                    vars.put("verification", "Unverified");
+                    // only verified emails may become the default email
+                    // address.
+                    vars.put("default", " disabled");
+                    vars.put("verification", l.getTranslation("Unverified"));
                 }
+                vars.put("last_verification", emailAddress.getLastPing(true));
                 if (target.getEmail().equals(emailAddress.getAddress())) {
                     vars.put("delete", "N/A");
                 } else {