Author: woonsan
Date: Mon Sep  7 11:21:51 2009
New Revision: 812086

URL: http://svn.apache.org/viewvc?rev=812086&view=rev
Log:
JS2-1057: Adding simple Accordion Menu style for each category.

Modified:
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/toolbox/JetspeedToolbox.java
    
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/toolbox/toolbox.jsp

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/toolbox/JetspeedToolbox.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/toolbox/JetspeedToolbox.java?rev=812086&r1=812085&r2=812086&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/toolbox/JetspeedToolbox.java
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/toolbox/JetspeedToolbox.java
 Mon Sep  7 11:21:51 2009
@@ -51,7 +51,6 @@
 import org.apache.jetspeed.page.PageManager;
 import org.apache.jetspeed.page.PageNotUpdatedException;
 import org.apache.jetspeed.page.document.NodeException;
-import org.apache.jetspeed.portlets.CategoryInfo;
 import org.apache.jetspeed.portlets.PortletInfo;
 import org.apache.jetspeed.profiler.Profiler;
 import org.apache.jetspeed.request.RequestContext;
@@ -59,6 +58,8 @@
 import org.apache.jetspeed.search.SearchEngine;
 import org.apache.jetspeed.security.SecurityAccessController;
 import org.apache.portals.bridges.common.GenericServletPortlet;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * Jetspeed Toolbox
@@ -68,6 +69,8 @@
  */
 public class JetspeedToolbox extends GenericServletPortlet implements 
Comparator
 {
+    static Logger log = LoggerFactory.getLogger(JetspeedToolbox.class);
+    
     protected PortletRegistry registry;
     protected SearchEngine searchEngine;
     protected PageManager pageManager;
@@ -128,53 +131,15 @@
 
         List<PortletInfo> portlets = retrievePortlets(request, null);
         request.setAttribute("portlets", portlets);
-        //request.setAttribute(("category", category);
         request.setAttribute("categories", retrieveCategories(request));
         
-        String tab = (String)request.getPortletSession().getAttribute("tab", 
PortletSession.PORTLET_SCOPE);
-        if (tab == null)
-        {
-            tab = "portlets";
-            request.getPortletSession().setAttribute("tab", tab, 
PortletSession.PORTLET_SCOPE);
-        }
-        request.setAttribute("tab", tab);
-        
-        
-        
-        String hideShow = 
(String)request.getPortletSession().getAttribute("hideShow", 
PortletSession.PORTLET_SCOPE);
-        if (hideShow == null)
-        {
-            hideShow = "Hide";
-            request.getPortletSession().setAttribute("hideShow", hideShow, 
PortletSession.PORTLET_SCOPE);
-        }        
-        request.setAttribute("hideShow", hideShow);
         super.doView(request, response);        
     }
     
     public void processAction(ActionRequest actionRequest, ActionResponse 
actionResponse) throws PortletException,
     IOException
     {
-        String tab = actionRequest.getParameter("tab");
-        if (tab == null)
-        {
-            tab = "portlets";
-        }
-        actionRequest.getPortletSession().setAttribute("tab", tab, 
PortletSession.PORTLET_SCOPE);
-        String hideShow = actionRequest.getParameter("hideShow");
-        if (hideShow != null)
-        {
-            if (hideShow.equals("Hide"))
-                hideShow = "Show";
-            else
-                hideShow = "Hide";
-            actionRequest.getPortletSession().setAttribute("hideShow", 
hideShow, PortletSession.PORTLET_SCOPE);
-        }
-        String category = actionRequest.getParameter("category");
-        if (category != null)
-        {
-            CategoryResult result = getPortlets(actionRequest, category, "1", 
10, null);    
-            actionRequest.getPortletSession().setAttribute("portlets", 
result.getList(),  PortletSession.PORTLET_SCOPE);
-        }
+        String category = null;
         String filter = actionRequest.getParameter("filter");
         if (filter != null)
         {
@@ -184,10 +149,15 @@
                 category = "all";
                 actionRequest.getPortletSession().removeAttribute("portlets", 
PortletSession.PORTLET_SCOPE);
             }
-            else
-                category = null;
             CategoryResult result = getPortlets(actionRequest, category, "1", 
10, filter);    
-            actionRequest.getPortletSession().setAttribute("portlets", 
result.getList(),  PortletSession.PORTLET_SCOPE);
+            actionRequest.getPortletSession().setAttribute("portlets", 
result.getPortlets(),  PortletSession.PORTLET_SCOPE);
+            
+            // Invalidate category results...
+            List<CategoryResult> categories = (List) 
actionRequest.getPortletSession().getAttribute("categories");
+            if (categories != null)
+            {
+                
actionRequest.getPortletSession().removeAttribute("categories");
+            }
         }
         
         String portletAdd = actionRequest.getParameter("portletAdd");
@@ -205,13 +175,15 @@
             }
             catch (PageNotUpdatedException e)
             {
-                // TODO Auto-generated catch block
-                e.printStackTrace();
+                log.error("Page has not been updated.", e);
             }
             catch (NodeException e)
             {
-                // TODO Auto-generated catch block
-                e.printStackTrace();
+                log.error("A NodeException occurred.", e);
+            }
+            catch (SecurityException e)
+            {
+                log.error("Security exception has been found.", e);
             }
         }
     }    
@@ -346,7 +318,7 @@
             {
                 image = DEFAULT_IMAGES[rand.nextInt(DEFAULT_IMAGES.length)];
             }
-            return new PortletInfo(uniqueName, 
cleanup(portlet.getDisplayNameText(locale)), 
cleanup(portlet.getDescriptionText(locale)), image);
+            return new PortletInfo(uniqueName, 
cleanup(portlet.getDisplayNameText(locale)), 
cleanup(portlet.getDescriptionText(locale)), "/" + image);
         }
         return null;
     }
@@ -395,16 +367,16 @@
     }
  
     @SuppressWarnings("unchecked")
-    public List<CategoryInfo> retrieveCategories(PortletRequest request)
+    public List<CategoryResult> retrieveCategories(PortletRequest request)
     throws PortletException
     {
-        List<CategoryInfo> categories = 
(List)request.getPortletSession().getAttribute("categories");
+        List<CategoryResult> categories = 
(List)request.getPortletSession().getAttribute("categories");
         if (categories != null)
         {
             return categories;
         }
         Locale locale = request.getLocale();        
-        categories = new ArrayList<CategoryInfo>();
+        categories = new ArrayList<CategoryResult>();
         PortletPreferences prefs = request.getPreferences();
         String cats = prefs.getValue("Categories", null);
         if (cats == null)
@@ -415,7 +387,7 @@
         while (catTokenizer.hasMoreTokens())
         {
             String name = catTokenizer.nextToken().trim();
-            CategoryInfo cat = new CategoryInfo(name);
+            List<PortletInfo> portlets = new ArrayList<PortletInfo>();
             String keywords = prefs.getValue("Keywords:" + name, null);
             if (keywords != null)
             {
@@ -434,21 +406,21 @@
                 }
                 if (count > 0)
                 {
-                    Iterator portlets = 
searchEngine.search(searchString.toString()).getResults().iterator();
-                    while (portlets.hasNext())
+                    Iterator portletsIter = 
searchEngine.search(searchString.toString()).getResults().iterator();
+                    while (portletsIter.hasNext())
                     {
                         PortletDefinition portlet = 
-                            
getPortletFromParsedObject((ParsedObject)portlets.next());
+                            getPortletFromParsedObject((ParsedObject) 
portletsIter.next());
                         PortletInfo portletInfo = filterPortlet(portlet, 
locale, request);
                         if (portletInfo != null)
                         {
-                            cat.addPortlet(portletInfo);
+                            portlets.add(portletInfo);
                         }                    
                     }                
-                    Collections.sort(cat.getPortlets(), this);
-                    categories.add(cat);
+                    Collections.sort(portlets, this);
                 }
             }
+            categories.add(new CategoryResult(name, portlets));
         }
         request.getPortletSession().setAttribute("categories", categories);    
    
         return categories;
@@ -458,37 +430,21 @@
             String category, String pageNumber, int portletPerPages,String 
filter) 
     {
         List<PortletInfo> list = new ArrayList<PortletInfo>();
-        int portletCount = 0;
-        int strtCnt = 0; //getStartRow(pageNumber, portletPerPages);
-        int endCnt = 9; //getEndRow(pageNumber, portletPerPages);
+        
         try 
         {           
             if (category != null && category.equalsIgnoreCase("all")) 
             {             
                 list = retrievePortlets(request, filter);
-                
-//                portletCount = tmpList.size();
-//                if (endCnt > portletCount)
-//                    endCnt = portletCount;
-//                for (int index = strtCnt; index < endCnt; index++) 
-//                {
-//                    list.add(tmpList.get(index));
-//                }
             } 
             else if (filter != null)
             {
                 list = retrievePortlets(request, filter);
-//                portletCount = tmpList.size();
-//                if (endCnt > portletCount)
-//                    endCnt = portletCount;
-//                for (int index = strtCnt; index < endCnt; index++) {
-//                    list.add(tmpList.get(index));
-//                }
             } 
             else 
             {
-                List<CategoryInfo> catList = retrieveCategories(request);
-                for (CategoryInfo catInfo : catList)
+                List<CategoryResult> catList = retrieveCategories(request);
+                for (CategoryResult catInfo : catList)
                 {
                     if (catInfo.getName().equalsIgnoreCase(category)) 
                     {
@@ -500,42 +456,43 @@
         }
         catch (Exception e) 
         {
-            e.printStackTrace();
+            log.error("Cannot retrieve portlets.", e);
         }
-        return new CategoryResult(list, portletCount);
+        
+        return new CategoryResult(category, list);
     }
 
-    class CategoryResult 
+    public static class CategoryResult 
     {
-        List<PortletInfo> list;
-
-        int resultSize;
+        
+        String name;
+        List<PortletInfo> portlets;
 
         /**
+         * @param name
          * @param list
-         * @param resultSize
          */
-        public CategoryResult(List<PortletInfo> list, int resultSize) 
+        public CategoryResult(String name, List<PortletInfo> portlets) 
         {
-            this.list = list;
-            this.resultSize = resultSize;
+            this.name = name;
+            this.portlets = portlets;
         }
-
+        
         /**
-         * @return the list
+         * @return the name
          */
-        public List<PortletInfo> getList() 
-        {
-            return list;
+        public String getName() {
+            return name;
         }
 
         /**
-         * @return the resultSize
+         * @return the list
          */
-        public int getResultSize()
+        public List<PortletInfo> getPortlets() 
         {
-            return resultSize;
+            return portlets;
         }
+        
     }
     
 }
\ No newline at end of file

Modified: 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/toolbox/toolbox.jsp
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/toolbox/toolbox.jsp?rev=812086&r1=812085&r2=812086&view=diff
==============================================================================
--- 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/toolbox/toolbox.jsp
 (original)
+++ 
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/toolbox/toolbox.jsp
 Mon Sep  7 11:21:51 2009
@@ -15,19 +15,18 @@
 limitations under the License.
 
 --%>
-<%...@page import="java.util.List"%>
-<%...@page import="java.text.DecimalFormat"%>
-<%...@page import="java.text.NumberFormat"%>
-<%...@page import="org.apache.jetspeed.spaces.Space"%>
-<%...@page import="org.apache.jetspeed.om.page.Page"%>
-<%...@page import="org.apache.jetspeed.portlets.PortletInfo"%>
-<%...@page import="org.apache.jetspeed.portlets.CategoryInfo"%>
-<%...@page import="org.apache.jetspeed.request.RequestContext"%>
+<%@ page import="java.util.List"%>
+<%@ page import="java.text.DecimalFormat"%>
+<%@ page import="java.text.NumberFormat"%>
+<%@ page import="org.apache.jetspeed.spaces.Space"%>
+<%@ page import="org.apache.jetspeed.om.page.Page"%>
+<%@ page import="org.apache.jetspeed.request.RequestContext"%>
 
 <%@ page contentType="text/html" %>
-<%...@taglib uri="http://java.sun.com/jsp/jstl/core"; prefix="c"%>
-<%...@taglib uri="http://java.sun.com/jstl/core_rt"; prefix="c_rt"%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core"; prefix="c"%>
+<%@ taglib uri="http://java.sun.com/jstl/core_rt"; prefix="c_rt"%>
 <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"; prefix="fmt" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/functions"; prefix="fn" %>
 <%@ taglib uri="http://java.sun.com/portlet"; prefix="portlet"%>
 
 <portlet:defineObjects/>
@@ -37,79 +36,164 @@
   <c:set var="portalContextPath" value="/"/>
 </c:if>
 
-       <%
-       List<PortletInfo> portlets = 
(List<PortletInfo>)renderRequest.getAttribute("portlets");
-       String tab = (String)renderRequest.getAttribute("tab");         
-       String hideShow = (String)renderRequest.getAttribute("hideShow");
-       %>
-<form id='jsPortletSearch' method="POST" action='<portlet:actionURL/>'>
-<table style="border-collapse: collapse;  width: 100%; margin-top: 8px; float: 
left;">
-       <tr>
-       <td class="portlet-section-subheader" colspan='10'><a 
href="<portlet:actionURL><portlet:param name='tab' 
value='portlets'/></portlet:actionURL>">Portlets</a> | <a 
href="<portlet:actionURL><portlet:param name='tab' 
value='layout'/></portlet:actionURL>">Layout</a> | <a 
href="<portlet:actionURL><portlet:param name='tab' 
value='theme'/></portlet:actionURL>">Theme</a></td>
-    </tr>
-<% if (tab.equals("portlets")) { %>
-       <tr>
-               <th class="portlet-section-header" colspan="10">Portlets</th>
-       </tr>
-<tr><td class="portlet-section-subheader" colspan='10'><input type="text" 
name="filter" size="15" value="" ><input type="submit" value="search" 
/></td></tr>
-<%
-List<CategoryInfo> categories = 
(List<CategoryInfo>)renderRequest.getAttribute("categories");
-for (CategoryInfo c : categories)
-{
-%>     
-<tr><td class="portlet-section-subheader" colspan='10'><a 
href="<portlet:actionURL><portlet:param name='category' 
value='<%=c.getName()%>'/></portlet:actionURL>"><%=c.getName()%></a></td></tr>
-<%
-}
-%>
-<tr><td class="portlet-section-subheader" colspan='10'></td></tr>
-<%
-int count = 0;
-for (PortletInfo p : portlets)
-{
-    count++;
-    String imagePath = "/" + p.getImage();
-%>     
-     <tr>
-       <td style='width: 20%' class="portlet-section-body"><img src='<c:url 
context="${portalContextPath}" value="<%=imagePath%>"/>'/>
-          <td style='width: 80%' class="portlet-section-body">
-                  <table>
-                       <tr>
-                          <td 
class="portlet-section-body"><%=p.getDisplayName() %></td>
-                      <td class="portlet-section-body"></td>
-                    </tr>       
-                       <tr>
-                          <td colspan='2' class="portlet-section-body"><a 
href="<portlet:actionURL><portlet:param name='portletPreview' 
value='<%=p.getName()%>'/></portlet:actionURL>">Preview</a> <a 
href="<portlet:actionURL><portlet:param name='portletAdd' 
value='<%=p.getName()%>'/></portlet:actionURL>">Add</a></td>                    
 
-                    </tr>
-                       </table>
-               </td>
-     </tr>
-<%
-       if (count >= 10) break;
+<script language="javascript" type="text/javascript">
+var <portlet:namespace/>tabs = null;
+function <portlet:namespace/>showTab(tabId) {
+    if (<portlet:namespace/>tabs == null) {
+        <portlet:namespace/>tabs = new Array();
+        <portlet:namespace/>tabs['portletsTab'] = 
document.getElementById('<portlet:namespace/>portletsTab');
+        <portlet:namespace/>tabs['layoutsTab'] = 
document.getElementById('<portlet:namespace/>layoutsTab');
+        <portlet:namespace/>tabs['themesTab'] = 
document.getElementById('<portlet:namespace/>themesTab');
+    }
+    for (var key in <portlet:namespace/>tabs) {
+        if (key == tabId) {
+            <portlet:namespace/>tabs[key].style.display = "";
+        } else {
+            <portlet:namespace/>tabs[key].style.display = "none";
+        }
+    }
 }
-%>
-       <tr>
-               <th class="portlet-section-header" colspan="2"></th>
-       </tr>
-<% } else if (tab.equals("layout")) { %>
-       <tr>
-               <th class="portlet-section-header" colspan="1">Layout</th>
-       </tr>
-       <tr><td><img width="62" height="539" src='<c:url 
context="${portalContextPath}" value="/images/page-layouts.png"/>'/></td></tr>
-       <tr>
-               <th class="portlet-section-header" colspan="1"></th>
-       </tr>
-<% } else if (tab.equals("theme")) { %>
-       <tr>
-               <th class="portlet-section-header" colspan="1">Themes</th>
-       </tr>
-       <tr><td><img width="43" height="505" src='<c:url 
context="${portalContextPath}" value="/images/page-themes.png"/>'/></td></tr>
-       <tr>
-               <th class="portlet-section-header" colspan="1"></th>
-       </tr>
-<%
+function <portlet:namespace/>toggleCategory(cat) {
+    var div = document.getElementById('<portlet:namespace/>PortletsOf' + cat);
+    if (div) {
+        div.style.display = (div.style.display == "none" ? "" : "none");
+    }
 }
-%>
+</script>
 
+<form id='jsPortletSearch' method="POST" action='<portlet:actionURL/>'>
+<table style="border-collapse: collapse;  width: 100%; margin-top: 8px; 
margin-bottom: 0px; float: left;">
+    <tr>
+    <td class="portlet-section-subheader" colspan='10'>
+        <a 
href="javascript:<portlet:namespace/>showTab('portletsTab');">Portlets</a>
+        |
+        <a 
href="javascript:<portlet:namespace/>showTab('layoutsTab');">Layout</a>
+        |
+        <a 
href="javascript:<portlet:namespace/>showTab('themesTab');">Theme</a>
+    </td>
+    </tr>
 </table>
-</form>
+
+<table id="<portlet:namespace/>portletsTab" style="border-collapse: collapse;  
width: 100%; margin-top: 0px; margin-bottom: 0px; float: left;">
+    <tr>
+        <th class="portlet-section-header" colspan="10">Portlets</th>
+    </tr>
+    <tr>
+        <td class="portlet-section-subheader" colspan='10'>
+            <input type="text" name="filter" size="15" value="" >
+            <input type="submit" value="search" />
+        </td>
+    </tr>
+
+    <tr>
+        <td class="portlet-section-subheader" colspan='10'>
+            <div>
+                <a 
href="javascript:<portlet:namespace/>toggleCategory('All');">All</a>
+            </div>
+            <c:choose>
+              <c:when test="${fn:length(portlets) gt 10}">
+                <c:set var="divStyleHeight" value="height: 400px;"/>
+              </c:when>
+              <c:otherwise>
+                <c:set var="divStyleHeight" value=""/>
+              </c:otherwise>
+            </c:choose>
+            <div id="<portlet:namespace/>PortletsOfAll" 
style="${divStyleHeight} overflow: auto;">
+                <table style="border-collapse: collapse; width: 100%; 
margin-top: 0px; margin-bottom: 0px; float: left;">
+                    <c:forEach var="portletInfo" items="${portlets}">
+                        <tr>
+                            <td class="portlet-section-body">
+                                <table style="border-collapse: collapse; 
width: 100%; margin-top: 0px; margin-bottom: 0px; float: left;">
+                                       <tr>
+                                          <td rowspan="2" width="20%" 
class="portlet-section-body">
+                                              <img src='<c:url 
context="${portalContextPath}" value="${portletInfo.image}"/>'/>
+                                          </td>
+                                          <td width="80%" 
class="portlet-section-body">${portletInfo.displayName}</td>
+                                       </tr>       
+                                       <tr>
+                                          <td class="portlet-section-body">
+                                              <a 
href="<portlet:actionURL><portlet:param name='portletPreview' 
value='${portletInfo.name}'/></portlet:actionURL>">Preview</a>
+                                              <c:if test="${not empty 
renderRequest.userPrincipal}">
+                                              <a 
href="<portlet:actionURL><portlet:param name='portletAdd' 
value='${portletInfo.name}'/></portlet:actionURL>">Add</a>
+                                          </c:if>
+                                          </td>
+                                       </tr>
+                                </table>
+                            </td>
+                        </tr>
+                    </c:forEach>
+                </table>
+            </div>
+        </td>
+    </tr>
     
+    <c:forEach var="category" items="${categories}">
+               <tr>
+                   <td class="portlet-section-subheader" colspan='10'>
+                       <div>
+                       <a 
href="javascript:<portlet:namespace/>toggleCategory('${category.name}');">${category.name}</a>
+                   </div>
+                   <c:choose>
+                     <c:when test="${fn:length(category.portlets) gt 10}">
+                       <c:set var="divStyleHeight" value="height: 400px;"/>
+                     </c:when>
+                     <c:otherwise>
+                       <c:set var="divStyleHeight" value=""/>
+                     </c:otherwise>
+                   </c:choose>
+                       <div 
id="<portlet:namespace/>PortletsOf${category.name}" style="display: none; 
${divStyleHeight} overflow: auto;">
+                           <table style="border-collapse: collapse; width: 
100%; margin-top: 0px; margin-bottom: 0px; float: left;">
+                               <c:forEach var="portletInfo" 
items="${category.portlets}">
+                        <tr>
+                            <td class="portlet-section-body">
+                                <table style="border-collapse: collapse; 
width: 100%; margin-top: 0px; margin-bottom: 0px; float: left;">
+                                    <tr>
+                                       <td rowspan="2" width="20%" 
class="portlet-section-body">
+                                           <img src='<c:url 
context="${portalContextPath}" value="${portletInfo.image}"/>'/>
+                                       </td>
+                                       <td width="80%" 
class="portlet-section-body">${portletInfo.displayName}</td>
+                                    </tr>
+                                    <tr>
+                                       <td class="portlet-section-body">
+                                           <a 
href="<portlet:actionURL><portlet:param name='portletPreview' 
value='${portletInfo.name}'/></portlet:actionURL>">Preview</a>
+                                           <c:if test="${not empty 
renderRequest.userPrincipal}">
+                                                  <a 
href="<portlet:actionURL><portlet:param name='portletAdd' 
value='${portletInfo.name}'/></portlet:actionURL>">Add</a>
+                                              </c:if>
+                                       </td>
+                                    </tr>
+                                </table>
+                            </td>
+                        </tr>
+                               </c:forEach>
+                           </table>
+                       </div>
+                   </td>
+               </tr>
+    </c:forEach>
+
+    <tr>
+        <th class="portlet-section-header" colspan="2"></th>
+    </tr>
+</table>
+
+<table id="<portlet:namespace/>layoutsTab" style="display: none; 
border-collapse: collapse;  width: 100%; margin-top: 0px; margin-bottom: 0px; 
float: left;">
+    <tr>
+        <th class="portlet-section-header" colspan="1">Layout</th>
+    </tr>
+    <tr><td><img width="62" height="539" src='<c:url 
context="${portalContextPath}" value="/images/page-layouts.png"/>'/></td></tr>
+    <tr>
+        <th class="portlet-section-header" colspan="1"></th>
+    </tr>
+</table>
+
+<table id="<portlet:namespace/>themesTab" style="display: none; 
border-collapse: collapse;  width: 100%; margin-top: 0px; margin-bottom: 0px; 
float: left;">
+    <tr>
+        <th class="portlet-section-header" colspan="1">Themes</th>
+    </tr>
+    <tr><td><img width="43" height="505" src='<c:url 
context="${portalContextPath}" value="/images/page-themes.png"/>'/></td></tr>
+    <tr>
+        <th class="portlet-section-header" colspan="1"></th>
+    </tr>
+</table>
+
+</form>



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to