X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=src%2Fclub%2Fwpia%2Fgigi%2Fpages%2FMainPage.java;h=6d279109121f8694e6b5380837c99368182307d9;hp=f797a1937d04daadcd24131c6eb09efa3b8b35eb;hb=e7532e90c74f2fd2559c6afead1748b2f29edf8e;hpb=bccd4cc0dba0f89aa045b113bac46eb8cc1dab4e diff --git a/src/club/wpia/gigi/pages/MainPage.java b/src/club/wpia/gigi/pages/MainPage.java index f797a193..6d279109 100644 --- a/src/club/wpia/gigi/pages/MainPage.java +++ b/src/club/wpia/gigi/pages/MainPage.java @@ -1,11 +1,23 @@ package club.wpia.gigi.pages; import java.io.IOException; -import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Set; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import club.wpia.gigi.dbObjects.Certificate; +import club.wpia.gigi.dbObjects.Domain; +import club.wpia.gigi.dbObjects.EmailAddress; +import club.wpia.gigi.dbObjects.Group; +import club.wpia.gigi.dbObjects.Organisation; +import club.wpia.gigi.dbObjects.User; +import club.wpia.gigi.localisation.Language; +import club.wpia.gigi.output.GroupList; +import club.wpia.gigi.output.template.IterableDataset; import club.wpia.gigi.output.template.Template; public class MainPage extends Page { @@ -18,10 +30,81 @@ public class MainPage extends Page { @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { + Map vars = getDefaultVars(req); if (LoginPage.getUser(req) != null) { - getDefaultTemplate().output(resp.getWriter(), getLanguage(req), new HashMap()); + User u = LoginPage.getUser(req); + vars.put("username", u.getPreferredName()); + final Set gr = u.getGroups(); + vars.put("support-groups", new GroupList(gr, true)); + vars.put("groups", new GroupList(gr, false)); + vars.put("ra-agent", u.canVerify()); + vars.put("vp", u.getVerificationPoints()); + vars.put("xp", u.getExperiencePoints()); + + Certificate[] c = u.getCertificates(false); + vars.put("c-no", c.length); + + final EmailAddress[] emails = u.getEmails(); + IterableDataset ds = new IterableDataset() { + + private int point = 0; + + @Override + public boolean next(Language l, Map vars) { + if (point >= emails.length) { + return false; + } + EmailAddress emailAddress = emails[point]; + vars.put("verification", l.getTranslation(emailAddress.isVerified() ? "Verified" : "Unverified")); + vars.put("last_verification", emailAddress.getLastPing(true)); + vars.put("address", emailAddress.getAddress()); + point++; + return true; + } + }; + vars.put("emails", ds); + + final Domain[] doms = u.getDomains(); + IterableDataset dts = new IterableDataset() { + + private int point = 0; + + @Override + public boolean next(Language l, Map vars) { + if (point >= doms.length) { + return false; + } + Domain domain = doms[point]; + vars.put("domain", domain.getSuffix()); + vars.put("status", l.getTranslation(domain.isVerified() ? "Verified" : "Unverified")); + point++; + return true; + } + }; + vars.put("domains", dts); + vars.put("nodomains", doms.length == 0); + + final List o = u.getOrganisations(); + vars.put("orgas", new IterableDataset() { + + Iterator it = o.iterator(); + + @Override + public boolean next(Language l, Map vars) { + if ( !it.hasNext()) { + return false; + } + Organisation o = it.next(); + vars.put("orgName", o.getName()); + vars.put("orgID", o.getId()); + return true; + } + }); + vars.put("hasorgs", !o.isEmpty()); + getDefaultTemplate().output(resp.getWriter(), getLanguage(req), vars); + } else { - notLog.output(resp.getWriter(), getLanguage(req), new HashMap()); + notLog.output(resp.getWriter(), getLanguage(req), vars); } }