portals-jetspeed-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From woon...@apache.org
Subject svn commit: r812086 - in /portals/jetspeed-2/applications/j2-admin/trunk/src/main: java/org/apache/jetspeed/portlets/toolbox/JetspeedToolbox.java webapp/WEB-INF/view/toolbox/toolbox.jsp
Date Mon, 07 Sep 2009 11:21:52 GMT
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: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org


Mime
View raw message