To define your portals, you need to create few XML files in order to declare your portlet, portlet instances, windows, pages and then your portals.
This file is used to declare the portlets of your application, following is an example of such a file
<?xml version="1.0" encoding="UTF-8"?> <portlet-app xmlns="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/portlet/portlet-app_1_0.xsd /opt/SUNWps/dtd/portlet.xsd" version="1.0"> <portlet> <portlet-name>UserPortlet</portlet-name> <portlet-class>org.jboss.nukes.core.portlet.user.UserPortlet</portlet-class> <supported-locale>en</supported-locale> <supported-locale>fr</supported-locale> <resource-bundle>Resource</resource-bundle> <supports> <mime-type>text/html</mime-type> <portlet-mode>VIEW</portlet-mode> </supports> <portlet-info> <title>User portlet</title> </portlet-info> </portlet> <portlet> <portlet-name>CMSPortlet</portlet-name> <portlet-class>org.jboss.nukes.core.portlet.cms.CMSPortlet</portlet-class> <init-param> <description>Content Repository Type: (webdav|http)</description> <name>repository</name> <value>webdav</value> </init-param> <init-param> <description>WebDAV server username</description> <name>username</name> <value>root</value> </init-param> <init-param> <description>WebDAV server password</description> <name>password</name> <value>root</value> </init-param> <supported-locale>en</supported-locale> <resource-bundle>Resource</resource-bundle> <supports> <mime-type>text/html</mime-type> <portlet-mode>VIEW</portlet-mode> <portlet-mode>HELP</portlet-mode> </supports> <portlet-info> <title>CMS portlet</title> </portlet-info> </portlet> <portlet-app>
As you can see for any portlet you need to add a portlet tag, then you need to give extra information as follow:
After you defined all the portlets you need, you will need to define the instances that you will use.
<?xml version="1.0" standalone="yes"?> <instances> <instance> <instance-name>UserPortletInstance</instance-name> <component-name>UserPortlet</component-name> <security> <rules> <rule group="Admins" patterns=".*:.*:.*" level="admin"/> <rule group="Users" patterns=".*:.*:.*" level="read"/> </rules> </security> </instance> <instance> <instance-name>CMSPortletInstance</instance-name> <component-name>CMSPortlet</component-name> </instance> </instances>
Again the file is pretty simple, the instancestag includes instance elements with:
You defined your portlets then your instances of portlet, now let's put them together on a page, to do so you can create files with -page.xml and put them either in the WEB-INF of a war file or in the deploy directory of JBoss.
Here is the page for the forums module as example:
<pages> <portal-name>default</portal-name> <page> <page-name>forums</page-name> <window> <window-name>ForumsPortletWindow</window-name> <instance-ref>/portal-forums.ForumsPortlet.ForumsPortletInstance</instance-ref> <default>true</default> <region>left</region> <height>0</height> </window> </page> </pages>
Again this is pretty straightforward. At first you need to defin in which portal this page should belongs to (we will see later how to define a portal). Then you define the pages, you can define as many page as you want, this is how a page is define:
Those files are used to define different portals. The files *-portal.xml can be include into a war file (WEB-INF directory) or directly in the deploy directory of JBoss.
<?xml version="1.0" encoding="UTF-8"?> <portal> <portal-name>default</portal-name> <supported-modes> <mode>VIEW</mode> <mode>EDIT</mode> <mode>HELP</mode> </supported-modes> <supported-window-states> <window-state>NORMAL</window-state> <window-state>MINIMIZED</window-state> <window-state>MAXIMIZED</window-state> </supported-window-states> <pages> <default-page>default</default-page> <page> <page-name>default</page-name> <window> <window-name>CMSPortletWindow</window-name> <instance-ref>/nukes.CMSPortlet.CMSPortletInstance</instance-ref> <default>true</default> <region>left</region> <height>0</height> </window> <window> <window-name>UserPortletWindow1</window-name> <instance-ref>/nukes.UserPortlet.UserPortletInstance</instance-ref> <region>left</region> <height>0</height> </window> </page> <page> <page-name>admin</page-name> <window> <window-name>UserPortletWindow2</window-name> <instance-ref>/nukes.UserPortlet.UserPortletInstance</instance-ref> <default>true</default> <region>left</region> <height>0</height> </window> <window> <window-name>GroupPortletWindow</window-name> <instance-ref>/nukes.GroupPortlet.GroupPortletInstance</instance-ref> <region>right</region> <height>1</height> </window> <window> <window-name>AdminCMSPortletWindow</window-name> <instance-ref>/nukes.AdminCMSPortlet.AdminCMSPortletInstance</instance-ref> <region>left</region> <height>4</height> </window> </page> <page> <page-name>test</page-name> <window> <window-name>DefaultPortletWindow</window-name> <instance-ref>/nukes.DefaultPortlet.DefaultPorltetInstance</instance-ref> <default>true</default> <region>left</region> <height>0</height> </window> <window> <window-name>TestPortletWindow</window-name> <instance-ref>/nukes.TestPortlet.TestPortletInstance</instance-ref> <region>left</region> <height>1</height> </window> <window> <window-name>PreferencesPortletWindow</window-name> <instance-ref>/nukes.PreferencesPortlet.PreferencesPortletInstance</instance-ref> <region>left</region> <height>2</height> </window> </page> </pages> </portal>
This file is the descriptor of a portal, of course you can define several portals containing several pages. Here is how you define a portal: