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' /> "); - 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' /> "); - 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