]> WPIA git - gigi.git/blob - src/org/cacert/gigi/pages/account/mail/MailManagementForm.java
9a399884a94a502a70e0a0ec533bd83df55e58b1
[gigi.git] / src / org / cacert / gigi / pages / account / mail / MailManagementForm.java
1 package org.cacert.gigi.pages.account.mail;
2
3 import java.io.IOException;
4 import java.io.PrintWriter;
5 import java.util.Map;
6
7 import javax.servlet.http.HttpServletRequest;
8
9 import org.cacert.gigi.GigiApiException;
10 import org.cacert.gigi.dbObjects.EmailAddress;
11 import org.cacert.gigi.dbObjects.User;
12 import org.cacert.gigi.localisation.Language;
13 import org.cacert.gigi.output.template.Form;
14 import org.cacert.gigi.output.template.IterableDataset;
15 import org.cacert.gigi.output.template.Template;
16 import org.cacert.gigi.pages.Page;
17
18 public class MailManagementForm extends Form {
19
20     private static final Template t = new Template(MailAddForm.class.getResource("MailManagementForm.templ"));
21
22     private User target;
23
24     public MailManagementForm(HttpServletRequest hsr, User target) {
25         super(hsr);
26         this.target = target;
27     }
28
29     @Override
30     public boolean submit(PrintWriter out, HttpServletRequest req) {
31         try {
32             String d;
33             if ((d = req.getParameter("default")) != null) {
34                 target.updateDefaultEmail(EmailAddress.getById(Integer.parseInt(d)));
35             } else if ((d = req.getParameter("delete")) != null) {
36                 target.deleteEmail(EmailAddress.getById(Integer.parseInt(d)));
37             } else if ((d = req.getParameter("reping")) != null) {
38                 EmailAddress.getById(Integer.parseInt(d)).requestReping(Page.getLanguage(req));
39             }
40         } catch (GigiApiException e) {
41             e.format(out, Page.getLanguage(req));
42             return false;
43         } catch (IOException e1) {
44             new GigiApiException("Error while doing reping.").format(out, Page.getLanguage(req));
45             return false;
46         }
47         return true;
48     }
49
50     @Override
51     protected void outputContent(PrintWriter out, Language l, Map<String, Object> vars) {
52         final EmailAddress[] emails = target.getEmails();
53         IterableDataset ds = new IterableDataset() {
54
55             private int point = 0;
56
57             @Override
58             public boolean next(Language l, Map<String, Object> vars) {
59                 if (point >= emails.length) {
60                     return false;
61                 }
62                 EmailAddress emailAddress = emails[point];
63                 int mailID = emailAddress.getId();
64                 vars.put("id", mailID);
65                 if (emailAddress.getAddress().equals(target.getEmail())) {
66                     vars.put("default", " disabled");
67                     vars.put("deletable", " disabled");
68                 } else {
69                     vars.put("deletable", "");
70                     vars.put("default", "");
71                 }
72                 if (emailAddress.isVerified()) {
73                     vars.put("verification", l.getTranslation("Verified"));
74                 } else {
75                     // only verified emails may become the default email
76                     // address.
77                     vars.put("default", " disabled");
78                     vars.put("verification", l.getTranslation("Unverified"));
79                 }
80                 vars.put("last_verification", emailAddress.getLastPing(true));
81                 if (target.getEmail().equals(emailAddress.getAddress())) {
82                     vars.put("delete", "N/A");
83                 } else {
84                     vars.put("delete", "<input type=\"checkbox\" name=\"delid[]\" value=\"" + mailID + "\"/>");
85                 }
86                 vars.put("address", emailAddress.getAddress());
87                 point++;
88                 return true;
89             }
90
91         };
92         vars.put("emails", ds);
93         t.output(out, l, vars);
94     }
95 }