X-Git-Url: https://code.wpia.club/?p=gigi.git;a=blobdiff_plain;f=src%2Forg%2Fcacert%2Fgigi%2Fpages%2Fadmin%2FTTPAdminPage.java;h=286a08d5639b377fb650d301c27153985a1a9d93;hp=0d0f438e65e3d4f102c2155e28637b46941d422a;hb=abff88a2bf173198fe55c35ead97c9c7cdb5924c;hpb=6100ce303e0cf82bdbd699ec7c3672dcbe8fae7c diff --git a/src/org/cacert/gigi/pages/admin/TTPAdminPage.java b/src/org/cacert/gigi/pages/admin/TTPAdminPage.java index 0d0f438e..286a08d5 100644 --- a/src/org/cacert/gigi/pages/admin/TTPAdminPage.java +++ b/src/org/cacert/gigi/pages/admin/TTPAdminPage.java @@ -1,6 +1,7 @@ package org.cacert.gigi.pages.admin; import java.io.IOException; +import java.util.Arrays; import java.util.HashMap; import java.util.Map; @@ -10,32 +11,59 @@ import javax.servlet.http.HttpServletResponse; import org.cacert.gigi.dbObjects.Group; import org.cacert.gigi.dbObjects.User; import org.cacert.gigi.localisation.Language; +import org.cacert.gigi.output.template.Form; import org.cacert.gigi.output.template.IterableDataset; +import org.cacert.gigi.output.template.SprintfCommand; import org.cacert.gigi.pages.Page; +import org.cacert.gigi.pages.error.PageNotFound; +import org.cacert.gigi.util.AuthorizationContext; public class TTPAdminPage extends Page { public static final String PATH = "/admin/ttp"; - private static final Group TTP_APPLICANT = Group.getByString("ttp-applicant"); + public static final Group TTP_APPLICANT = Group.TTP_APPLICANT; public TTPAdminPage() { super("TTP-Admin"); } + @Override + public boolean beforePost(HttpServletRequest req, HttpServletResponse resp) throws IOException { + return Form.getForm(req, TTPAdminForm.class).submitExceptionProtected(req, resp); + } + + @Override + public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException { + if (Form.printFormErrors(req, resp.getWriter())) { + Form.getForm(req, TTPAdminForm.class).output(resp.getWriter(), getLanguage(req), new HashMap()); + } + } + + private static final int PAGE_LEN = 30; + @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException { String path = req.getPathInfo(); - if (path != null && path.length() > PATH.length()) { + if (path != null && path.length() > PATH.length() + 1) { int id = Integer.parseInt(path.substring(1 + PATH.length())); - resp.getWriter().println("processing: " + id); // TODO User u = User.getById(id); - if ( !u.isInGroup(TTP_APPLICANT)) { + if (u == null || !u.isInGroup(TTP_APPLICANT)) { + SprintfCommand command = new SprintfCommand("The TTP-request is not available anymore. You might want to go {0}back{1}.", Arrays.asList("!'", "!'")); + req.setAttribute(PageNotFound.MESSAGE_ATTRIBUTE, command); + resp.sendError(404); return; } + new TTPAdminForm(req, u).output(resp.getWriter(), getLanguage(req), new HashMap()); return; } - final User[] users = TTP_APPLICANT.getMembers(0, 30); + int offset = 0; + String offsetS = req.getParameter("offset"); + if (offsetS != null) { + offset = Integer.parseInt(offsetS); + } + + final User[] users = TTP_APPLICANT.getMembers(offset, PAGE_LEN + 1); HashMap vars = new HashMap<>(); vars.put("users", new IterableDataset() { @@ -43,22 +71,25 @@ public class TTPAdminPage extends Page { @Override public boolean next(Language l, Map vars) { - if (i >= users.length) { + if (i >= Math.min(PAGE_LEN, users.length)) { return false; } vars.put("id", Integer.toString(users[i].getId())); - vars.put("name", users[i].getName().toString()); + vars.put("name", users[i].getPreferredName().toString()); vars.put("email", users[i].getEmail()); i++; return true; } }); + if (users.length == PAGE_LEN + 1) { + vars.put("next", Integer.toString(offset + 30)); + } getDefaultTemplate().output(resp.getWriter(), getLanguage(req), vars); } @Override - public boolean isPermitted(User u) { - return u != null && u.isInGroup(Group.getByString("ttp-assuer")); + public boolean isPermitted(AuthorizationContext ac) { + return ac != null && ac.isInGroup(Group.TTP_ASSURER); } }