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]