- if (hs == null || !((Boolean) hs.getAttribute("loggedin"))) {
- resp.setContentType("text/html");
- resp.getWriter().println("Access denied. Sending login form.");
- resp.getWriter()
- .println(
- "<form method='POST' action='/login'>"
- + "<input type='text' name='username'>"
- + "<input type='password' name='password'> <input type='submit' value='login'></form>");
- return;
+ final Page p = getPage(req.getPathInfo());
+ if (p != null) {
+
+ if (p.needsLogin() && hs.getAttribute("loggedin") == null) {
+ String request = req.getPathInfo();
+ request = request.split("\\?")[0];
+ hs.setAttribute(LoginPage.LOGIN_RETURNPATH, request);
+ resp.sendRedirect("/login");
+ return;
+ }
+ if (p.beforeTemplate(req, resp)) {
+ return;
+ }
+ HashMap<String, Object> vars = new HashMap<String, Object>();
+
+ resp.setContentType("text/html; charset=utf-8");
+ Outputable content = new Outputable() {
+
+ @Override
+ public void output(PrintWriter out, Language l,
+ Map<String, Object> vars) {
+ try {
+ if (req.getMethod().equals("POST")) {
+ p.doPost(req, resp);
+ } else {
+ p.doGet(req, resp);
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+
+ }
+ };
+ vars.put("title", p.getTitle());
+ vars.put("static", ServerConstants.getStaticHostNamePort());
+ vars.put("year", Calendar.getInstance().get(Calendar.YEAR));
+ vars.put("content", content);
+ baseTemplate.output(resp.getWriter(), Page.getLanguage(req), vars);
+ } else {
+ resp.sendError(404, "Page not found.");