Develop portlet using Light Portal framework(Draft)
Introduction
This document describes how to develop portlet and configure portlet
using Light portal framewrok.
Steps
1 Create BookmarkPortlet java class.
public class BookmarkPortlet extends LightGenericPortlet {
public void processAction (ActionRequest request,
ActionResponse response)
throws PortletException, java.io.IOException {
String action =
request.getParameter("action");
if("add".equals(action)){
String name =
request.getParameter("name");
String url =
request.getParameter("url");
request.getPreferences().setValue(name,url);
request.getPreferences().store();
}
if("delete".equals(action)){
String name =
request.getParameter("bookmarkName");
request.getPreferences().reset(name);
request.getPreferences().store();
}
}
protected void doView (RenderRequest request,
RenderResponse response)
throws PortletException,
java.io.IOException
{
List<PortletPreference>
bookmarks = new ArrayList<PortletPreference>();
Enumeration enumerator=
request.getPreferences().getNames();
while
(enumerator.hasMoreElements()){
String name = (String)enumerator.nextElement();
bookmarks.add(new PortletPreference(name,
request.getPreferences().getValue(name,"")));
}
request.setAttribute("bookmarks",
bookmarks);
this.getPortletContext().getRequestDispatcher("/portlets/bookmark/bookmarkPortletView.jsp").include(request,response);
}
protected void doEdit (RenderRequest request,
RenderResponse response)
throws PortletException,
java.io.IOException
{
List<PortletPreference>
bookmarks = new ArrayList<PortletPreference>();
Enumeration enumerator=
request.getPreferences().getNames();
while
(enumerator.hasMoreElements()){
String name = (String)enumerator.nextElement();
if(!request.getPreferences().isReadOnly(name))
bookmarks.add(new PortletPreference(name,
request.getPreferences().getValue(name,"")));
}
request.setAttribute("bookmarks",
bookmarks);
this.getPortletContext().getRequestDispatcher("/portlets/bookmark/bookmarkPortletEdit.jsp").include(request,response);
}
}
2 Create bookmarkPortletVew.jsp
<%@ include file="/common/taglibs.jsp"%>
<html>
<head>
</head>
<body>
<form>
<table border='0' cellpadding='0' cellspacing='0'>
<c:forEach var="bookmark" items="${requestScope.bookmarks}" >
<tr>
<td class='portlet-table-td-left'>
<a href='<c:out value="${bookmark.value}"/>'
target='_blank'><c:out value="${bookmark.name}"/></a>
</td>
</tr>
</c:forEach>
</table>
</form>
</body>
</html>
3 Create bookmarkPortletEdit.jsp
<%@ include file="/common/taglibs.jsp"%>
<html>
<head>
</head>
<body>
<form action="<portlet:actionURL
portletMode='EDIT'/>">
<table border='0' cellpadding='0' cellspacing='0'>
<tr>
<td class='portlet-table-td-left'>
URL:
</td>
<td class='portlet-table-td-left'>
<input type='text' name='url' class='portlet-form-input-field'
size='24' />
</td>
</tr>
<tr>
<td class='portlet-table-td-left'>
Name:
</td>
<td class='portlet-table-td-left'>
<input type='text' name='name' class='portlet-form-input-field'
size='24'/>
</td>
</tr>
<tr>
<td class='portlet-table-td-right' colspan ='2'>
<input type='submit' name='action'
onClick="document.currentForm=this.form;document.pressed='add'"
value='Add' class='portlet-form-button' />
</td>
</tr>
</table>
<table border='0' cellpadding='0' cellspacing='0'>
<tr>
<td class='portlet-table-td-left'>
<select name='bookmarkName' size='5' class='portlet-form-select'>
<c:forEach var="bookmark" items="${requestScope.bookmarks}" >
<option value='<c:out value="${bookmark.name}"/>'><c:out
value="${bookmark.name}"/></option>
</c:forEach>
</select>
</td>
</tr>
<tr>
<td class='portlet-table-td-right'>
<input type='submit' name='action' onClick="document.currentForm=this.form;document.pressed='delete'"
value='Delete' class='portlet-form-button' />
</td>
</tr>
</table>
</form>
</body>
</html>
4 Configure Bookmark Portlet in portlet.xml
<portlet>
<description>BookmarkPortletDescription</description>
<portlet-name>bookmarkPortlet</portlet-name>
<display-name>Bookmark
Portlet</display-name>
<portlet-class>org.light.portlets.bookmark.BookmarkPortlet</portlet-class>
<expiration-cache>-1</expiration-cache>
<supports>
<mime-type>text/html</mime-type>
<portlet-mode>VIEW</portlet-mode>
<portlet-mode>EDIT</portlet-mode>
<portlet-mode>HELP</portlet-mode>
<portlet-mode>CONFIG</portlet-mode>
</supports>
<supported-locale>en</supported-locale>
<supported-locale>fr</supported-locale>
<resource-bundle>resourceBundle</resource-bundle>
<portlet-info>
<title>Bookmark Portlet</title>
<short-title>Bookmark</short-title>
<keywords>Bookmark</keywords>
</portlet-info>
<portlet-preferences>
<preference>
<name>Java Sight</name>
<value>http://www.javasight.com</value>
<read-only>true</read-only>
</preference>
<preference>
<name>Java.net</name>
<value>http://java.net</value>
</preference>
<preference>
<name>Java World</name>
<value>http://www.javaworld.com</value>
<read-only>false</read-only>
</preference>
</portlet-preferences>
</portlet>
5 Add Bookmark Portlet into Light Portal framework
5.1 configure Bookmark Portlet in portlet-config.xml
<portlets>
......
<portlet>
<name>bookmarkPortlet</name>
<path>/bookmarkPortlet.lp</path>
<title>Bookmarks</title>
<icon>/light/images/bookmark.gif</icon>
<url/>
<refreshMode>false</refreshMode>
<editMode>true</editMode>
<helpMode>false</helpMode>
<configMode>true</configMode>
<autoRefreshed>false</autoRefreshed>
<periodTime>0</periodTime>
<allowJS>false</allowJS>
<pageRefreshed>false</pageRefreshed>
</portlet>
......
</portlets>
5.1 configure Bookmark Portlet in portal-layout.xml
If you want set Bookmark Portlet in the default page, configure
Bookmark Portlet in portal-layout.xml under default user's main tab. If
not, users cann add Bookmark portlet from "add content" function later.
<portalLayout>
<portalUser user="default">
<portalTab>
<title>Main</title>
......
<portlets>
<portlet>
<name>bookmarkPortlet</name>
<column>0</column>
<row>2</row>
</portlet>
......
</portlets>
</portalTab>
</portalUser>
......
</portalLayout>