Author: woonsan
Date: Wed Dec 23 15:58:43 2009
New Revision: 893557

URL: http://svn.apache.org/viewvc?rev=893557&view=rev
Log:
JS2-1057: Replacing folder icons by UI and LI with style class names.

Modified:
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/PageNavigator.java
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/spaces/page-navigator.jsp

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/PageNavigator.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/PageNavigator.java?rev=893557&r1=893556&r2=893557&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/PageNavigator.java
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/spaces/PageNavigator.java
 Wed Dec 23 15:58:43 2009
@@ -23,6 +23,7 @@
 
 import javax.portlet.ActionRequest;
 import javax.portlet.ActionResponse;
+import javax.portlet.MimeResponse;
 import javax.portlet.PortletConfig;
 import javax.portlet.PortletContext;
 import javax.portlet.PortletException;
@@ -43,6 +44,7 @@
 import org.apache.jetspeed.portalsite.Menu;
 import org.apache.jetspeed.portalsite.MenuElement;
 import org.apache.jetspeed.portalsite.PortalSiteRequestContext;
+import org.apache.jetspeed.portlet.HeaderPhaseSupportConstants;
 import org.apache.jetspeed.request.RequestContext;
 import org.apache.jetspeed.spaces.Space;
 import org.apache.jetspeed.spaces.Spaces;
@@ -50,6 +52,7 @@
 import org.apache.portals.messaging.PortletMessaging;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.w3c.dom.Element;
 
 /**
  * Jetspeed Navigator
@@ -73,6 +76,8 @@
     private BasePortalURL baseUrlAccess = null;
     private String defaultMenu = DEFAULT_SPACE_NAVS_MENU;
     private String defaultLinksMenu = DEFAULT_SPACE_LINKS_MENU;
+    
+    protected String yuiScriptPath = "/javascript/yui/build/yui/yui-min.js";
 
     public void init(PortletConfig config) throws PortletException
     {
@@ -100,8 +105,26 @@
                baseUrlAccess = null; // optional
         }
         
+        String param = config.getInitParameter("yuiScriptPath");
+        
+        if (param != null) {
+            yuiScriptPath = param;
+        }
     }
-
+    
+    @Override
+    protected void doHeaders(RenderRequest request, RenderResponse response) {
+        super.doHeaders(request, response);
+        RequestContext rc = (RequestContext) 
request.getAttribute(RequestContext.REQUEST_PORTALENV);
+        Element headElem = response.createElement("script");
+        headElem.setAttribute("language", "javascript");
+        String scriptPath = rc.getRequest().getContextPath() + yuiScriptPath;
+        headElem.setAttribute("id", 
HeaderPhaseSupportConstants.HEAD_ELEMENT_CONTRIBUTION_ELEMENT_ID_YUI_LIBRARY_INCLUDE);
+        headElem.setAttribute("src", scriptPath);
+        headElem.setAttribute("type", "text/javascript");
+        response.addProperty(MimeResponse.MARKUP_HEAD_ELEMENT, headElem);
+    }
+    
     @SuppressWarnings("unchecked")
     public void doView(RenderRequest request, RenderResponse response)
             throws PortletException, IOException

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/spaces/page-navigator.jsp
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/spaces/page-navigator.jsp?rev=893557&r1=893556&r2=893557&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/spaces/page-navigator.jsp
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/spaces/page-navigator.jsp
 Wed Dec 23 15:58:43 2009
@@ -59,6 +59,7 @@
         if (folderName == null)
         {
             folderName = folderUrl;
+            
             try
             {
                 folderName = folderName.substring(space.getPath().length() + 
1);
@@ -68,32 +69,23 @@
             }
         }
         
-        String namespace = renderResponse.getNamespace();
-        String folderId = namespace + folderUrl;
-        
-        out.write("<div>");
-        
-        if (depth > 0) 
-        {
-            out.write("<img height='20' width='" + (depth * 16) + "' src='" + 
renderRequest.getContextPath() + "/images/tree/noline.gif' align='absmiddle' 
/>");
-        }
-        
-        out.write("<img src='" + renderRequest.getContextPath() + 
"/images/folder.gif' align='absmiddle' />&nbsp;");
-        out.write("<a folderId='" + folderId + "' href='#' onclick='return " + 
namespace + "toggleFolder(this);'>" + folderName + "</a></div>");
+        out.write("<li path='" + folderUrl + "' class='expanded'>");
+        out.write("<a href='#'>" + folderName + "</a>");
         out.write("\n");
         
         List<MenuElement> childElements = (List<MenuElement>) 
folderMenu.getElements();
         
         if (childElements != null && !childElements.isEmpty())
         {
-            out.write("<div id='" + folderId + "' style=\"DISPLAY: none\">");
+            out.write("<ul>");
+            out.write("\n");
             
             for (MenuElement child : childElements)
             {
                 printMenuItem(child, depth + 1, out, renderRequest, 
renderResponse, rc, space, pageNavigator);
             }
             
-            out.write("</div>");
+            out.write("</ul>");
             out.write("\n");
         }        
     }
@@ -101,26 +93,20 @@
     {
         MenuOption option = (MenuOption)element;
         String url = pageNavigator.getAbsoluteUrl(option.getUrl(), 
renderResponse, rc);
-        
-        out.write("<div>");
-        
-        if (depth > 0) 
-        {
-            out.write("<img height='20' width='" + (depth * 16) + "' src='" + 
renderRequest.getContextPath() + "/images/tree/noline.gif' align='absmiddle' 
/>");
-        }
-        
-        out.write("<img src='" + renderRequest.getContextPath() + 
"/images/page.gif' align='absmiddle' />&nbsp;");
-        out.write("<a href='" + url + "'>" + 
element.getTitle(renderRequest.getLocale()) + "</a>");
-        
-        out.write("</div>");
+        out.write("<li path='" + option.getUrl() +"'><a href='" + url + "'>" + 
element.getTitle(renderRequest.getLocale()) + "</a></li>");
         out.write("\n");
     }
 }
 %>
 
 <portlet:defineObjects/>
+
 <%
 RequestContext rc = (RequestContext) 
request.getAttribute(RequestContext.REQUEST_PORTALENV);
+String portalPagePath = rc.getPortalURL().getPath();
+if (portalPagePath == null || "".equals(portalPagePath)) {
+    portalPagePath = "/";
+}
 Space space = (Space) renderRequest.getAttribute("space");
 Locale locale = renderRequest.getLocale();
 PageNavigator pageNavigator = (PageNavigator) 
renderRequest.getAttribute("pageNavigator");
@@ -128,29 +114,20 @@
 List<MenuElement> linkElements = (List<MenuElement>) 
renderRequest.getAttribute("spaceLinkElements");
 %>
 
-<script language="javascript">
-function <portlet:namespace/>toggleFolder(a) {
-    var folderId = a.getAttribute("folderId");
-    var div = document.getElementById(folderId);
-    if (div) {
-        div.style.display = (div.style.display == "none" ? "" : "none");
-    }
-    return false;
-}
-</script>
-
 <table>
     <tr>
         <td class="portlet-section-body"><b><%=space.getTitle() %> 
Space</b></td>
     </tr>
     <tr>
         <td class="portlet-section-body">
+            <ul id="<portlet:namespace/>pageNavMenu" class="menu">
 <%
 for (MenuElement element : menuElements)
 {
     printMenuItem(element, 0, out, renderRequest, renderResponse, rc, space, 
pageNavigator);
 }
 %>
+            </ul>
         </td>
     </tr>
 <%
@@ -162,12 +139,14 @@
     </tr>
     <tr>
         <td class="portlet-section-body">
+            <ul id="<portlet:namespace/>pageNavLinks" class="menu">
 <%
        for (MenuElement element : linkElements)
        {
            printMenuItem(element, 0, out, renderRequest, renderResponse, rc, 
space, pageNavigator);
        }
 %>
+            </ul>
         </td>
     </tr>
 <%
@@ -191,4 +170,43 @@
 <%
 }
 %>
-</table>
\ No newline at end of file
+</table>
+
+<script language="javascript">
+YUI().use('jetui-portal', 'io', 'json', 'node', 'cookie', 'overlay', 'anim', 
'plugin', function(Y) {
+    
+    var onMenuItemClick = function(e) {
+        var a = e.target;
+        var menuitem = a.get("parentNode");
+        var submenu = menuitem.one("UL");
+        if (submenu) {
+            if (submenu.getStyle("display") == "none") {
+                menuitem.removeClass("closed");
+                menuitem.addClass("expanded");
+                submenu.setStyle("display", "");
+            } else {
+                menuitem.removeClass("expanded");
+                menuitem.addClass("closed");
+                submenu.setStyle("display", "none");
+            }
+               
+               e.halt();
+        }
+    };
+    
+    var pageNavMenu = Y.Node.one("#<portlet:namespace/>pageNavMenu");
+    pageNavMenu.all("A").each(function(v, k) {
+        v.on("click", onMenuItemClick);
+    });
+
+    var portalPagePath = "<%=portalPagePath%>";
+    var curMenuItem = null;
+    pageNavMenu.all("LI").each(function(v, k) {
+        var path = v.getAttribute("path");
+        if (path && portalPagePath.indexOf(path) == 0) {
+            v.addClass("active");
+        }
+    });
+    
+});
+</script>



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscr...@portals.apache.org
For additional commands, e-mail: jetspeed-dev-h...@portals.apache.org

Reply via email to