]> WPIA git - gigi.git/commitdiff
ADD: Show a policy index directory.
authorFelix Dörre <felix@dogcraft.de>
Sat, 30 Aug 2014 22:13:26 +0000 (00:13 +0200)
committerFelix Dörre <felix@dogcraft.de>
Sat, 30 Aug 2014 22:13:26 +0000 (00:13 +0200)
src/org/cacert/gigi/Gigi.java
src/org/cacert/gigi/PolicyRedirector.java
src/org/cacert/gigi/pages/PolicyIndex.java [new file with mode: 0644]

index 5a41bf68e849092b60210e8dc814bbded19cb2c9..148556e83ef86d2ad4cef659a771c993e3c77056 100644 (file)
@@ -27,6 +27,7 @@ import org.cacert.gigi.pages.LoginPage;
 import org.cacert.gigi.pages.LogoutPage;
 import org.cacert.gigi.pages.MainPage;
 import org.cacert.gigi.pages.Page;
+import org.cacert.gigi.pages.PolicyIndex;
 import org.cacert.gigi.pages.RootCertPage;
 import org.cacert.gigi.pages.StaticPage;
 import org.cacert.gigi.pages.TestSecure;
@@ -103,21 +104,22 @@ public class Gigi extends HttpServlet {
             putPage("/wot/rules", new StaticPage("CAcert Web of Trust Rules", AssurePage.class.getResourceAsStream("Rules.templ")), "CAcert Web of Trust");
             baseTemplate = new Template(Gigi.class.getResource("Gigi.templ"));
             rootMenu = new Menu("Main");
-            for (Menu menu : categories) {
-                menu.prepare();
-                rootMenu.addItem(menu);
-            }
             Menu about = new Menu("About CAcert.org");
+            categories.add(about);
+
             about.addItem(new SimpleMenuItem("//blog.cacert.org/", "CAcert News"));
             about.addItem(new SimpleMenuItem("//wiki.cacert.org/", "Wiki Documentation"));
-            about.addItem(new SimpleMenuItem("/policy", "Policies"));
+            putPage(PolicyIndex.DEFAULT_PATH, new PolicyIndex(), "About CAcert.org");
             about.addItem(new SimpleMenuItem("//wiki.cacert.org/FAQ/Privileges", "Point System"));
             about.addItem(new SimpleMenuItem("//bugs.cacert.org/", "Bug Database"));
             about.addItem(new SimpleMenuItem("//wiki.cacert.org/Board", "CAcert Board"));
             about.addItem(new SimpleMenuItem("//lists.cacert.org/wws", "Mailing Lists"));
             about.addItem(new SimpleMenuItem("//blog.CAcert.org/feed", "RSS News Feed"));
-            about.prepare();
-            rootMenu.addItem(about);
+
+            for (Menu menu : categories) {
+                menu.prepare();
+                rootMenu.addItem(menu);
+            }
 
             rootMenu.prepare();
             firstInstanceInited = true;
index c4a260e53e772ec27852afa4fe87e98e7a85dd03..e907c37620771015e4fe03780cc2fc73cfc3684c 100644 (file)
@@ -16,6 +16,9 @@ public class PolicyRedirector extends HandlerWrapper {
         if (target.equals("/")) {
             return;
         }
+        if (target.equals("/policy/")) {
+            return;
+        }
         if (target.startsWith("/policy/") && target.endsWith(".php")) {
             target = target.replace(".php", ".html");
             response.sendRedirect(target);
diff --git a/src/org/cacert/gigi/pages/PolicyIndex.java b/src/org/cacert/gigi/pages/PolicyIndex.java
new file mode 100644 (file)
index 0000000..d6416b6
--- /dev/null
@@ -0,0 +1,45 @@
+package org.cacert.gigi.pages;
+
+import java.io.File;
+import java.io.IOException;
+import java.io.PrintWriter;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+public class PolicyIndex extends Page {
+
+    public PolicyIndex() {
+        super("CAcert.org Policies");
+    }
+
+    File root = new File("static/www/policy");
+
+    public static final String DEFAULT_PATH = "/policy";
+
+    @Override
+    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
+        PrintWriter out = resp.getWriter();
+        out.println("<ul>");
+        for (File f : root.listFiles()) {
+            String name = f.getName();
+            if ( !name.endsWith(".html")) {
+                continue;
+            }
+            String display = name.replaceFirst("\\.html$", "");
+
+            out.print("<li><a href='");
+            out.print(name);
+            out.print("'>");
+            out.print(display);
+            out.println("</a></li>");
+        }
+        out.println("</ul>");
+    }
+
+    @Override
+    public boolean needsLogin() {
+        return false;
+    }
+
+}