[Yanel-commits] rev 23758 - in public/yanel/trunk/src/core/java/org/wyona/yanel/servlet: . menu

michi at wyona.com michi at wyona.com
Sun Apr 15 13:48:04 CEST 2007


Author: michi
Date: 2007-04-15 13:48:02 +0200 (Sun, 15 Apr 2007)
New Revision: 23758

Added:
   public/yanel/trunk/src/core/java/org/wyona/yanel/servlet/menu/
   public/yanel/trunk/src/core/java/org/wyona/yanel/servlet/menu/Menu.java
   public/yanel/trunk/src/core/java/org/wyona/yanel/servlet/menu/impl/
Log:
menu made ready for extensibility

Added: public/yanel/trunk/src/core/java/org/wyona/yanel/servlet/menu/Menu.java
===================================================================
--- public/yanel/trunk/src/core/java/org/wyona/yanel/servlet/menu/Menu.java	2007-04-15 11:21:52 UTC (rev 23757)
+++ public/yanel/trunk/src/core/java/org/wyona/yanel/servlet/menu/Menu.java	2007-04-15 11:48:02 UTC (rev 23758)
@@ -0,0 +1,80 @@
+package org.wyona.yanel.servlet.menu;
+
+import org.wyona.yanel.core.Resource;
+import org.wyona.yanel.core.map.Map;
+import org.wyona.yanel.core.map.Realm;
+import org.wyona.yanel.servlet.YanelServlet;
+
+import org.wyona.security.core.api.Identity;
+import org.wyona.security.core.api.IdentityMap;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpSession;
+
+import java.io.IOException;
+
+/**
+ *
+ */
+abstract public class Menu {
+
+    /**
+     * Get yanel menu
+     */
+    public String getYanelMenu(Resource resource, HttpServletRequest request, Map map, String reservedPrefix) throws ServletException, IOException, Exception {
+        String backToRealm = org.wyona.yanel.core.util.PathUtil.backToRealm(resource.getPath());
+        StringBuffer sb= new StringBuffer();
+
+        sb.append("<ul><li>");
+        sb.append("<div id=\"yaneltoolbar_menutitle\">Yanel</div><ul>");
+        sb.append("<li><a href=\"?yanel.resource.meta\">View page info</a></li>");
+        sb.append("<li><a href=\"?yanel.toolbar=off\">Turn off toolbar</a></li>");
+        Identity identity = getIdentity(request, map);
+        if (identity != null) {
+            sb.append("<li><a href=\"" + backToRealm + reservedPrefix + "/users/" + identity.getUsername() + ".html\">My profile</a></li>");
+            sb.append("<li><a href=\"?yanel.usecase=logout\"><img class=\"yaneltoolbar_menuicon\" src=\"" + backToRealm + reservedPrefix + "/yanel-img/icons/system-log-out.png\" border=\"0\"/>Logout</a></li>");
+        }
+        sb.append("</ul></li></ul>");
+        sb.append("<ul><li>");
+
+        return sb.toString();
+    }
+
+    /**
+     * Get help menu
+     * Get toolbar menus
+     */
+    public String getHelpMenu(Resource resource, HttpServletRequest request, Map map, String reservedPrefix) throws ServletException, IOException, Exception {
+        StringBuffer sb= new StringBuffer();
+
+        sb.append("<ul><li>");
+        sb.append("<div id=\"yaneltoolbar_menutitle\">Help</div><ul>");
+        sb.append("<li>About</li>");
+        sb.append("</ul></li></ul>");
+        return sb.toString();
+    }
+
+    /**
+     * Get custom menus
+     */
+    abstract public String getMenus(Resource resource, HttpServletRequest request, Map map, String reservedPrefix) throws ServletException, IOException, Exception;
+    
+    /**
+     * Gets the identity from the session associated with the given request.
+     * @param request
+     * @return identity or null if there is no identity in the session for the current
+     *                  realm or if there is no session at all
+     */
+    public Identity getIdentity(HttpServletRequest request, Map map) throws Exception {
+        Realm realm = map.getRealm(request.getServletPath());
+        HttpSession session = request.getSession(false);
+        if (session != null) {
+            IdentityMap identityMap = (IdentityMap)session.getAttribute(YanelServlet.IDENTITY_MAP_KEY);
+            if (identityMap != null) {
+                return (Identity)identityMap.get(realm.getID());
+            }
+        }
+        return null;
+    }
+}




More information about the Yanel-commits mailing list