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