1 package club.wpia.gigi.pages.account.mail;
3 import java.io.IOException;
4 import java.io.PrintWriter;
7 import javax.servlet.http.HttpServletRequest;
9 import club.wpia.gigi.GigiApiException;
10 import club.wpia.gigi.dbObjects.EmailAddress;
11 import club.wpia.gigi.dbObjects.User;
12 import club.wpia.gigi.localisation.Language;
13 import club.wpia.gigi.output.template.Form;
14 import club.wpia.gigi.output.template.IterableDataset;
15 import club.wpia.gigi.output.template.Template;
16 import club.wpia.gigi.pages.Page;
17 import club.wpia.gigi.util.TimeConditions;
19 public class MailManagementForm extends Form {
21 private static final Template t = new Template(MailAddForm.class.getResource("MailManagementForm.templ"));
25 public MailManagementForm(HttpServletRequest hsr, User target) {
31 public SubmissionResult submit(HttpServletRequest req) throws GigiApiException {
34 if ((d = req.getParameter("default")) != null) {
35 target.updateDefaultEmail(EmailAddress.getById(Integer.parseInt(d)));
36 } else if ((d = req.getParameter("delete")) != null) {
37 target.deleteEmail(EmailAddress.getById(Integer.parseInt(d)));
38 } else if ((d = req.getParameter("reping")) != null) {
39 EmailAddress.getById(Integer.parseInt(d)).requestReping(Page.getLanguage(req));
41 return new RedirectResult(MailOverview.DEFAULT_PATH);
42 } catch (IOException e1) {
43 throw new GigiApiException("Error while doing reping.");
48 protected void outputContent(PrintWriter out, Language l, Map<String, Object> vars) {
49 final EmailAddress[] emails = target.getEmails();
50 IterableDataset ds = new IterableDataset() {
52 private int point = 0;
55 public boolean next(Language l, Map<String, Object> vars) {
56 if (point >= emails.length) {
59 EmailAddress emailAddress = emails[point];
60 int mailID = emailAddress.getId();
61 vars.put("id", mailID);
62 if (emailAddress.getAddress().equals(target.getEmail())) {
63 vars.put("default", " disabled");
64 vars.put("deletable", " disabled");
66 vars.put("deletable", "");
67 vars.put("default", "");
69 if (emailAddress.isVerified()) {
70 vars.put("verification", l.getTranslation("Verified"));
72 // only verified emails may become the default email
74 vars.put("default", " disabled");
75 vars.put("verification", l.getTranslation("Unverified"));
77 vars.put("last_verification", emailAddress.getLastPing(true));
78 if (target.getEmail().equals(emailAddress.getAddress())) {
79 vars.put("delete", "N/A");
81 vars.put("delete", "<input type=\"checkbox\" name=\"delid[]\" value=\"" + mailID + "\"/>");
83 vars.put("address", emailAddress.getAddress());
89 vars.put("emails", ds);
90 vars.put("maxMonth", TimeConditions.getInstance().getEmailPingMonths());
91 t.output(out, l, vars);