You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by ta...@apache.org on 2007/01/04 20:37:37 UTC

svn commit: r492701 [2/2] - in /portals/jetspeed-2/trunk/tutorial: ./ portal/ portal/src/ portal/src/webapp/ portal/src/webapp/decorations/ portal/src/webapp/decorations/portlet/ portal/src/webapp/decorations/portlet/express-portlet/ portal/src/webapp/...

Added: portals/jetspeed-2/trunk/tutorial/xdocs/02/page-decoration.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/02/page-decoration.xml?view=auto&rev=492701
==============================================================================
--- portals/jetspeed-2/trunk/tutorial/xdocs/02/page-decoration.xml (added)
+++ portals/jetspeed-2/trunk/tutorial/xdocs/02/page-decoration.xml Thu Jan  4 11:37:33 2007
@@ -0,0 +1,197 @@
+<?xml version="1.0"?>
+<!--
+	Copyright 2004 The Apache Software Foundation
+	
+	Licensed under the Apache License, Version 2.0 (the "License");
+	you may not use this file except in compliance with the License.
+	You may obtain a copy of the License at
+	
+	http://www.apache.org/licenses/LICENSE-2.0
+	
+	Unless required by applicable law or agreed to in writing, software
+	distributed under the License is distributed on an "AS IS" BASIS,
+	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+	See the License for the specific language governing permissions and
+	limitations under the License.
+-->
+<document>
+	<properties>
+		<title>Page Decorators</title>
+		<subtitle>Customizing Page Decorators</subtitle>
+		<authors>
+			<person name="David Sean Taylor" email="taylor@apache.org" />
+		</authors>
+	</properties>
+	<body>
+    <section name="Page Decorators">
+      <p> 
+      Each Jetspeed page can be associated with a different page decoration. Page decorations
+      control some important aspect of a portal page:
+      <ul>
+      <li>The colors, images, CSS styles that skin this page</li>
+      <li>The header portion of the page</li>
+      <li>The page margins</li>
+      <li>The footer portion of the page</li>
+      <li>Menus displayed on the page</li>
+      <li>Action buttons displayed on the window</li>      
+      </ul>
+      Decorators do not control the placement of portlets. That is handled by layouts.
+      Jetspeed comes with several page decorations out of the box. The default page decorator for 
+      most pages is called <i>tigris</i>. It looks like this:
+      </p>
+      <img src="../images/tigris-page.png"/>
+      <p>
+      We are going to create a new decorator for this tutorial.
+      This new decorator can be copied into our project from the <i>/JetspeedTutorial/resources/decorations/layout/express-page/</i> directory.
+      This will save you the trouble of creating all the logo images and CSS definitions.
+      </p>
+	 <source>
+	 <![CDATA[
+# Linux	 
+cd /JetspeedTraining/workspace/jetexpress
+mkdir portal/src/webapp/decorations/layout/express-page
+cp -r ../../resources/decorations/layout/express-page/* portal/src/webapp/decorations/layout/express-page/
+
+# Windows
+cd \JetspeedTraining\workspace\jetexpress
+mkdir portal\src\webapp\decorations\layout\express-page
+xcopy /s ..\..\resources\decorations\layout\express-page\* portal\src\webapp\decorations\layout\express-page
+     ]]>
+     </source>	  	  
+    <subsection name="The Header">
+    <p>
+    Open up the <i>decorations/layout/express-page/header.vm</i>
+    This is a Velocity template, very much like JSP but simpler, with no Java compilation required.
+    Jetspeed does support JSP-based decorators. However no one has contributed one yet.
+    We could spend a lot of time teaching you about all the macros available.
+    But lets just concentrate on changing the logos first.
+    Scroll down to the banner content. Here we add our new left-hand side logo:
+    </p>
+	 <source>
+	 <![CDATA[    
+#GetPageResource('images/blueSunrisePicture.gif')    	 
+     ]]>
+     </source>	  	  
+     <p>
+     We've added a few more custom images, one in the center area of the banner:
+     </p>
+	 <source>
+	 <![CDATA[    
+<img src="#GetPageResource('images/BlueSunriseTextTahoma.gif')" height="29" width="165">	 
+     ]]>
+     </source>	  	  
+     <p>
+     and one more in the right area of the banner:
+     </p>
+	 <source>
+	 <![CDATA[    
+<img src="#GetPageResource('images/RisingEdgeSlogan.gif')" height="28" width="300">
+     ]]>
+     </source>	  	  
+     <p>
+     <i>#GetPageResource</i> is a Velocity macro. It retrieves a resource (image, CSS, HTML) from
+     the decoration folder, relative  to the root of the express-page decoration folder.
+     Besides the images, the header.vm is pretty much the same as Tigris.
+     In fact we simply cut and  paste the Tigris decorator to get us started.
+     This gives you a good  start of customizing the page.
+     </p>
+    </subsection>
+    <subsection name="Velocity Variables">    
+    <p>
+    Velocity makes several variables about the context of a decoration available for dynamic substition of menus and content:
+    </p>
+    <table>
+    <tr>
+    <th>Variable</th>
+    <th>Desc</th>    
+    <th>Usage</th>
+    </tr>
+    <tr>
+    <td>$layoutDecoration</td>
+    <td>Retrieve layout content from the decoration dir</td>
+    <td>$layoutDecoration.getResource("decorator-macros.vm")</td>
+    </tr>
+    <tr>
+    <td>$site</td>
+    <td>Retrieve menus by name</td>
+    <td>$site.getMenu("pages")</td>
+    </tr>
+    </table>
+    </subsection>
+    <subsection name="Menus">   
+     <p>
+     The remainder of the page is HTML markup mixed in with some important macros
+     for displaying Jetspeed Menus. <i>Jetspeed Menus</i> are build from a collection of portal resources
+     known as the <i>Portal Site</i>. The portal site is a content tree (like a file system) of portal
+     resources. The site can be stored in the file system or in a database. Resources can be a page,
+     folder, or link.  Lets look at some of the available macros for displaying menus on your page.
+     </p>	     
+    <p>
+    The $site always has the following menus available to you at any time:
+    <table>
+    <tr>
+    <th>Menu</th>
+    <th>Desc</th>
+    </tr>
+    <tr>
+    <td>pages</td>
+    <td>relative pages menu of pages in the current folder. Used to define the page tabs above the portal.</td>
+    </tr>
+    <tr>
+    <td>breadcrumbs</td>
+    <td>paths to page used to provide history links below the page tabs</td>
+    </tr>
+    <tr>
+    <td>navigations</td>
+    <td>relative subfolders and root level links menu used to define the navigation pane beside the portal.</td>
+    </tr>
+    <tr>
+    <td>back</td>
+    <td>parent folder menu used to define the single "back" link above the portal page tabs.</td>
+    </tr>
+    </table>
+    You can also define your own menus (not covered in this tutorial).
+    </p>
+	<p>
+	There are some helper macros for creating different styles of menus.
+	The macros are defined in the decorator-macros.vm file:	     
+     <table>
+     <tr>
+     <th>Macro</th>
+     <th>Decription</th>     
+     </tr>
+     <tr>
+     <td>#includeTabsNavigation($someMenu $LEFT_TO_RIGHT)</td>
+     <td>Displays a menu in a vertical tabbed navigation style.</td>
+     </tr>
+     <tr>
+     <td>#includeLinksNavigation($breadCrumb $LEFT_TO_RIGHT "" $BREADCRUMBS_STYLE "")</td>
+     <td>Displays a menu of links according to a given style.</td>
+     </tr>
+     <tr>
+     <td>#includeNestedLinksWithIconNavigation($standardNavs $TOP_TO_BOTTOM)</td>
+     <td>Displays a nested top-to-bottom menu navigation of folders, links, and pages.</td>
+     </tr>
+     <tr>
+     <td>#PageActionBar()</td>
+     <td>Not a menu, but the available actions (edit, view, help, print...) for this page</td>
+     </tr>
+     </table>
+     </p>
+    </subsection>    	     
+    <subsection name="The Footer">
+    <p>
+    Open up the <i>decorations/layout/express-page/footer.vm</i>
+    </p>
+	 <source>
+	 <![CDATA[    
+<img src="#GetPageResource('images/jetspeed-powered.gif')" alt="Jetspeed 2 Powered" border="0" />
+     ]]>
+     </source>	  	  
+    </subsection>    
+	  <p>
+	    <a href='customizing-overview.html'>Previous</a> <a href='portlet-decoration.html'>Next</a>
+	  </p>	      
+ </section>	  
+</body>
+</document>
\ No newline at end of file

Added: portals/jetspeed-2/trunk/tutorial/xdocs/02/portlet-decoration.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/02/portlet-decoration.xml?view=auto&rev=492701
==============================================================================
--- portals/jetspeed-2/trunk/tutorial/xdocs/02/portlet-decoration.xml (added)
+++ portals/jetspeed-2/trunk/tutorial/xdocs/02/portlet-decoration.xml Thu Jan  4 11:37:33 2007
@@ -0,0 +1,70 @@
+<?xml version="1.0"?>
+<!--
+	Copyright 2004 The Apache Software Foundation
+	
+	Licensed under the Apache License, Version 2.0 (the "License");
+	you may not use this file except in compliance with the License.
+	You may obtain a copy of the License at
+	
+	http://www.apache.org/licenses/LICENSE-2.0
+	
+	Unless required by applicable law or agreed to in writing, software
+	distributed under the License is distributed on an "AS IS" BASIS,
+	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+	See the License for the specific language governing permissions and
+	limitations under the License.
+-->
+<document>
+	<properties>
+		<title>Portlet Decorators</title>
+		<subtitle>Customizing PortletDecorators</subtitle>
+		<authors>
+			<person name="David Sean Taylor" email="taylor@apache.org" />
+		</authors>
+	</properties>
+	<body>
+    <section name="Portlet Decorators">
+      <p> 
+      Each Jetspeed portlet window on a page can be associated with a different portlet decoration. 
+      Portlet decorations control some important aspect of a portlet window:
+      <ul>
+      <li>The colors, images, CSS styles that skin this window</li>
+      <li>The title portion of the portlet</li>
+      <li>The borders of the window</li>
+      <li>Action buttons displayed on the window</li>
+      </ul>      
+      Jetspeed comes with several portlet decorations out of the box. The default page decorator for 
+      most pages is called <i>tigris</i>. It looks like this:
+      </p>
+      <img src="../images/tigris-portlet.png"/>
+      <p>
+      We are going to create a new decorator for this tutorial.
+      This new decorator can be copied into our project from the <i>/JetspeedTutorial/resources/decorations/portlet/express-portlet/</i> directory.
+      This will save you the trouble of creating all the logo images and CSS definitions.
+      </p>
+	 <source>
+	 <![CDATA[
+# Linux	 
+cd /JetspeedTraining/workspace/jetexpress
+mkdir portal/src/webapp/decorations/portlet/express-portlet
+cp -r ../../resources/decorations/portlet/express-portlet/* portal/src/webapp/decorations/portlet/express-portlet/
+
+# Windows
+cd \JetspeedTraining\workspace\jetexpress
+mkdir portal\src\webapp\decorations\portlet\express-portlet
+xcopy /s ..\..\resources\decorations\portlet\express-portlet\* portal\src\webapp\decorations\portlet\express-portlet
+     ]]>
+     </source>	  	  
+     <p>
+     We are going to skip over the intricate details of portlet decorators, as page decorators are much more 
+     important, as they set your organization's branding. Whereas the standard window decorators are good 
+     enough for getting you started. Go ahead and review the content of our custom portlet decorator.
+     You will see that the directory layout is the same as for page decorators. The decorator simply
+     creates a new color variation on an existing window decorator.
+	  </p>	      
+	  <p>
+	    <a href='page-decoration.html'>Previous</a> <a href='desktop-theme.html'>Next</a>
+	  </p>	      	  
+ </section>	  
+</body>
+</document>
\ No newline at end of file

Added: portals/jetspeed-2/trunk/tutorial/xdocs/03/build-it.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/03/build-it.xml?view=auto&rev=492701
==============================================================================
--- portals/jetspeed-2/trunk/tutorial/xdocs/03/build-it.xml (added)
+++ portals/jetspeed-2/trunk/tutorial/xdocs/03/build-it.xml Thu Jan  4 11:37:33 2007
@@ -0,0 +1,70 @@
+<?xml version="1.0"?>
+<!--
+  Copyright 2004 The Apache Software Foundation
+  
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+  http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<document>
+  <properties>
+    <title>Building and Deploying</title>
+    <subtitle>Building and Deploying the Portlet Application</subtitle>
+	<authors>
+		<person name="David Sean Taylor" email="taylor@apache.org" />
+	</authors>
+  </properties>
+  <body>
+    <section name="Building and Deploying the Portlet Application">
+      <p>      
+       Now that you have generated a portlet app named <b>express-demo</b>, we are ready to build the portal.
+       We are going to build the portal from the command line:
+      </p>
+	 <source>
+	 <![CDATA[
+# Linux	 
+cd /JetspeedTraining/workspace/jetexpress/applications/express-demo
+
+# Windows
+cd \JetspeedTraining\workspace\jetexpress\applications\express-demo
+
+mvn 
+     ]]>
+	</source> 
+      <p>
+      This builds a portlet application war file name <i>express-demo-1.0.war</i>.
+      This war file is found under <i>target</i> directory. It is a standard JSR-168 portlet application distribution.
+      </p>
+      <p>
+      Now that we've built and deployed the portal, lets start up the application server (if its not already started).
+      While the app server is running, we can drop in the portlet application.
+      </p>	
+	 <source>
+	 <![CDATA[
+# Linux	 
+cd /JetspeedTraining/workspace/jetexpress/applications/express-demo
+cp target/express-demo-1.0.war /JetspeedTraining/tomcat-express/webapps/express-demo.war
+
+# Windows
+cd \JetspeedTraining\workspace\jetexpress\applications\express-demo
+copy target\express-demo-1.0.war \JetspeedTraining\tomcat-express\webapps\express-demo.war
+
+     ]]>
+	</source> 
+	<p>This will deploy your portlet application. Next, lets see how to add your new portlets to a page.
+	</p>      
+	  <p>
+	    <a href='portlet-app.html'>Previous</a> <a href='pages.html'>Next</a>
+	  </p>            
+    </section>
+  </body>
+</document>
+

Added: portals/jetspeed-2/trunk/tutorial/xdocs/03/pages.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/03/pages.xml?view=auto&rev=492701
==============================================================================
--- portals/jetspeed-2/trunk/tutorial/xdocs/03/pages.xml (added)
+++ portals/jetspeed-2/trunk/tutorial/xdocs/03/pages.xml Thu Jan  4 11:37:33 2007
@@ -0,0 +1,77 @@
+<?xml version="1.0"?>
+<!--
+  Copyright 2004 The Apache Software Foundation
+  
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+  http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<document>
+  <properties>
+    <title>Configuring Portal Pages</title>
+    <subtitle>Configuring Portal Pages</subtitle>
+	<authors>
+		<person name="David Sean Taylor" email="taylor@apache.org" />
+	</authors>
+  </properties>
+  <body>
+    <section name="Configuring Portal Pages">
+      <p>      
+       Now that you have generated a portlet app named <b>express-demo</b>, we are ready to integrate
+       the new portlets into our system. This is done by adding the portlets to the portal pages.
+       These pages are also known as PSML files. Your pages makeup the navigational site of your system.
+	   The new pages we are going to add will have references to the new portlets added in the express-demo
+	   portlet applications. Of course users can use the Portlet Selector and Jetspeed Customizer to
+	   select portlets interactively. Here we are setting up the collection of pages that will  always
+	   be a part of your portal. The file-system tree-like collection of pages is known as your <b>portal site</b>	   
+      </p>
+      <p>
+      We provide a quick Ant task to copy in the new, preconfigured pages:
+      </p>
+	 <source>
+	 <![CDATA[
+# Linux	 
+cd /JetspeedTraining/workspace/jetexpress/
+
+# Windows
+cd \JetspeedTraining\workspace\jetexpress\
+
+ant copy-page-resources
+     ]]>
+	</source> 
+      <p>
+      Open up some of the pages found under <i>portal/src/webapp/WEB-INF/pages/</i>.
+      You will see that we've added a new <i>Contact Us</i> page, and added the some new demo portlets
+      the the default page. We have also changed the default themes and decorators
+      for all administrative pages.
+      </p>
+      <p>
+      Go ahead and deploy those changes:
+      </p>	
+	 <source>
+	 <![CDATA[
+ant
+     ]]>
+	</source> 
+	<p>This will deploy your new pages. Refresh the portal home page to see the new portlets:
+	</p>      
+	<img src="../images/new-home.png"/>
+	<p>
+	Likewise for the desktop:
+	</p>
+	<img src="../images/new-home2.png"/>	
+	  <p>	  
+	    <a href='portlet-app.html'>Previous</a> <a href='../04/overview.html'>Next</a>
+	  </p>            
+    </section>
+  </body>
+</document>
+

Added: portals/jetspeed-2/trunk/tutorial/xdocs/03/portlet-app.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/03/portlet-app.xml?view=auto&rev=492701
==============================================================================
--- portals/jetspeed-2/trunk/tutorial/xdocs/03/portlet-app.xml (added)
+++ portals/jetspeed-2/trunk/tutorial/xdocs/03/portlet-app.xml Thu Jan  4 11:37:33 2007
@@ -0,0 +1,84 @@
+<?xml version="1.0"?>
+<!--
+  Copyright 2004 The Apache Software Foundation
+  
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+  http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<document>
+  <properties>
+    <title>Generating a Portlet Application</title>
+    <subtitle>Using Maven to Generate a Portlet Application</subtitle>
+	<authors>
+		<person name="David Sean Taylor" email="taylor@apache.org" />
+	</authors>
+  </properties>
+  <body>
+    <section name="Generating a Portlet Application">
+      <p>      
+       Portlet applications should be stored in a separate sub-project of your main portal project.
+       Our custom build is setup to put one or more portlet application projects under the <i>applications</i>
+       directory. For this tutorial, we will create one portlet application. The portlet application
+       will be automatically  built and deployed when you run <b>maven -P tomcat,min</b>.
+       </p>
+       <p>
+       To create a new portal application named <b>express-demo</b>, enter the following commands:
+      </p>
+	 <source>
+	 <![CDATA[
+# Linux	 
+cd /JetspeedTraining/workspace/jetexpress/applications
+
+# Windows
+cd \JetspeedTraining\workspace\jetexpress\applications
+
+mvn archetype:create -DarchetypeGroupId=org.apache.portals.jetspeed-2 
+                     -DarchetypeArtifactId=application-archetype 
+                     -DarchetypeVersion=2.1-dev 
+                     -DgroupId=org.apache.portals.tutorials
+                     -DartifactId=express-demo
+                     -Dversion=1.0
+     ]]>
+	</source> 
+	  <p>
+	  <b>Paste into Command Line:</b>
+	  <input id='genapp' size="80" value="mvn archetype:create -DarchetypeGroupId=org.apache.portals.jetspeed-2 -DarchetypeArtifactId=application-archetype -DarchetypeVersion=2.1-dev -DgroupId=org.apache.portals.tutorials -DartifactId=express-demo -Dversion=1.0"/>	  
+	  </p>
+      <p>      
+       A directory named <b>express-demo</b> under <i>/JetspeedTraining/workspace/applications</i> should have been created.
+       Notice that <b>express-demo</b> will be the name of your portlet application.
+      </p>
+      <p>
+        Lets have a closer look at what was created. There is a <b>src</b> directory, and underneath it
+        three subdirectories <b>java, test, webapp</b>. Under the <b>java</b> directory, there is one
+        sample portlet. Under the <b>test</b> directory, you will find one unit test. Under the <b>webapp</b>
+        directory, you will find a number of files that are the basic template for any useful portlet application:
+     </p>
+     <img src="../images/src-dir.png"/>          
+     <p>
+       Here you will find the portlet and servlet deployment descriptors: <b>portlet.xml</b> and <b>web.xml</b>.
+       Review the files in this directory. We are going to copy over some more sample portlets for the tutorial.
+       Lets let an ant task to do the work for us:
+     </p>
+	 <source>
+	 <![CDATA[
+	 ant copy-portlet-resources
+     ]]>
+	</source> 
+     
+	  <p>
+	    <a href='../02/deploy-custom.html'>Previous</a> <a href='build-it.html'>Next</a>
+	  </p>            
+    </section>
+  </body>
+</document>
+

Added: portals/jetspeed-2/trunk/tutorial/xdocs/04/eclipse.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/04/eclipse.xml?view=auto&rev=492701
==============================================================================
--- portals/jetspeed-2/trunk/tutorial/xdocs/04/eclipse.xml (added)
+++ portals/jetspeed-2/trunk/tutorial/xdocs/04/eclipse.xml Thu Jan  4 11:37:33 2007
@@ -0,0 +1,91 @@
+<?xml version="1.0"?>
+<!--
+	Copyright 2004 The Apache Software Foundation
+	
+	Licensed under the Apache License, Version 2.0 (the "License");
+	you may not use this file except in compliance with the License.
+	You may obtain a copy of the License at
+	
+	http://www.apache.org/licenses/LICENSE-2.0
+	
+	Unless required by applicable law or agreed to in writing, software
+	distributed under the License is distributed on an "AS IS" BASIS,
+	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+	See the License for the specific language governing permissions and
+	limitations under the License.
+-->
+<document>
+	<properties>
+		<title>Eclipse Integration</title>
+		<subtitle>Eclipse Integration</subtitle>
+		<authors>
+			<person name="David Sean Taylor" email="taylor@apache.org" />
+		</authors>
+	</properties>
+	<body>
+    <section name="Eclipse Integration">
+      <p> 
+      Before getting started, lets get Eclipse setup.
+      Lets create a Eclipse project for the jetexpress project.
+      Maven-2 can create Eclipse project and classpath files from your Maven-2 project POM,
+      automatically bringing in all dependencies:
+      </p>
+	 <source>
+	 <![CDATA[
+# Linux	 
+cd /JetspeedTraining/workspace/jetexpress
+mvn eclipse:eclipse
+cp portal/.classpath .
+cp portal/.project .
+# Windows
+cd \JetspeedTraining\workspace\jetexpress
+mvn eclipse:eclipse
+copy portal\.classpath .
+copy portal\.project .
+     ]]>
+     </source>	  	        
+      <p>	      	  
+	Lets do the same for the <i>express-demo</i> portlet application.
+	You may prefer to actually create a new Eclipse project to represent the portlet app subproject.
+	We recommend this, since Eclipse doesn't work very well multi-Maven projects. Best to break
+	them out into one Maven project == one Eclipse project:
+	</p>
+	 <source>
+	 <![CDATA[
+# Linux	 
+cd /JetspeedTraining/workspace/jetexpress/applications/express-demo
+mvn eclipse:eclipse
+# Windows
+cd \JetspeedTraining\workspace\jetexpress\applications\express-demo
+mvn eclipse:eclipse
+     ]]>
+     </source>	  	        
+	<p>
+	Now lets import these new projects. From the eclipse menu, select File->Import:
+	</p>
+	<img src="../images/import-project.png"/>	
+	<img src="../images/import-project2.png"/>		
+	<p>
+	Repeat for both the applications/express-demo project.
+	</p>
+	<p>
+	Next, lets setup a classpath variable to point at the Maven Repo, effectively resolving the jars for Eclipse.
+	In Eclipse, go to Window->Preferences->Java->Build Path->Classpath Variables->New...:
+	</p>
+	<img src="../images/eclipse-classpath.png"/>	
+	  <p>
+	If you would like to work with the Jetspeed source from the SVN Trunk, you will need to install the Subversion Plugin for Eclipse.
+	After doing so, simply check out the project using the Subversion plugin:
+	  </p>	
+	<img src="../images/svn1.png"/>	
+	<img src="../images/svn2.png"/>			  
+	<img src="../images/svn3.png"/>			  	
+	  <p>
+	We are now ready to start developing with Eclipse. 
+	  </p>
+	  <p>	  
+	    <a href='overview.html'>Previous</a> <a href='hello.html'>Next</a>
+	  </p>            	   
+	  </section>
+	</body>
+</document>
\ No newline at end of file

Added: portals/jetspeed-2/trunk/tutorial/xdocs/04/hello.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/04/hello.xml?view=auto&rev=492701
==============================================================================
--- portals/jetspeed-2/trunk/tutorial/xdocs/04/hello.xml (added)
+++ portals/jetspeed-2/trunk/tutorial/xdocs/04/hello.xml Thu Jan  4 11:37:33 2007
@@ -0,0 +1,89 @@
+<?xml version="1.0"?>
+<!--
+  Copyright 2004 The Apache Software Foundation
+  
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+  http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<document>
+  <properties>
+    <title>Hello World</title>
+    <subtitle>Hello World Portlet</subtitle>
+	<authors>
+		<person name="David Sean Taylor" email="taylor@apache.org" />
+	</authors>
+  </properties>
+  <body>
+    <section name="Hello World Portlet">
+    <p>      
+    We are going to create a portlet using the Eclipse Java perspective.    
+    Go to the <i>express-demo</i> project, click on the <i>com.bluesunrise.portal.portlets.tutorial</i> package, and create a new Java class:
+	</p>      
+	<img src="../images/new-portlet.png"/>
+	<p>
+	You will see a new portlet in Eclipse named BonjourWorld.
+	Go ahead Override and Implement the following methods:	
+	</p>
+	<img src="../images/override-impl.png"/>
+	<p>
+	Each one of these methods is associated with a portlet mode.
+	Lets make these methods actually do something.
+	Since we are in the render phase when doView/doEdit/doHelp are called,
+	its probably best to render something. The RenderResponse 
+	renders content to the output stream of the portlet. 
+	Set the content type on the response, and then print
+	a <i>hello world</i> message using a Java Writer:	
+	</p>	
+	 <source>	
+	 <![CDATA[
+    protected void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException
+    {
+        response.setContentType("text/html"); 
+        response.getWriter().println("<b>Bonjour: View Mode</b>");
+    }
+	     ]]>
+	</source> 	
+	<p>
+	Repeat the same process for Edit and Help modes.
+	Now lets edit the portlet.xml, and create a portlet descriptor entry 
+	for our portlet. Notice that the &lt;supports&gt; element contains
+	that same portlet modes that we support in our <i>do</i> methods.
+	</p>
+	 <source>	
+	 <![CDATA[
+    <portlet>
+        <description>Bonjour Monde Portlet</description>		
+        <portlet-name>BonjourMonde</portlet-name>	
+        <display-name>Bonjour Monde</display-name>
+        <portlet-class>com.bluesunrise.portal.portlets.tutorial.BonjourWorld</portlet-class>	        
+        <supports>
+            <mime-type>text/html</mime-type>
+            <portlet-mode>VIEW</portlet-mode>
+            <portlet-mode>EDIT</portlet-mode>
+            <portlet-mode>HELP</portlet-mode>            
+        </supports>
+        <supported-locale>en</supported-locale>      	
+	    <portlet-info>
+        <title>Bonjour Monde</title>
+          <short-title>Bonjour</short-title>
+          <keywords>tutorial,bonjour,hello</keywords>
+       </portlet-info>
+	</portlet>	 
+	     ]]>
+	</source> 		
+	  <p>
+	    <a href='overview.html'>Previous</a> <a href='tutorial-psml.html'>Next</a>
+	  </p>            
+    </section>
+  </body>
+</document>
+

Added: portals/jetspeed-2/trunk/tutorial/xdocs/04/overview.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/04/overview.xml?view=auto&rev=492701
==============================================================================
--- portals/jetspeed-2/trunk/tutorial/xdocs/04/overview.xml (added)
+++ portals/jetspeed-2/trunk/tutorial/xdocs/04/overview.xml Thu Jan  4 11:37:33 2007
@@ -0,0 +1,44 @@
+<?xml version="1.0"?>
+<!--
+	Copyright 2004 The Apache Software Foundation
+	
+	Licensed under the Apache License, Version 2.0 (the "License");
+	you may not use this file except in compliance with the License.
+	You may obtain a copy of the License at
+	
+	http://www.apache.org/licenses/LICENSE-2.0
+	
+	Unless required by applicable law or agreed to in writing, software
+	distributed under the License is distributed on an "AS IS" BASIS,
+	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+	See the License for the specific language governing permissions and
+	limitations under the License.
+-->
+<document>
+	<properties>
+		<title>Portlet 101</title>
+		<subtitle>Portlet Development 101</subtitle>
+		<authors>
+			<person name="David Sean Taylor" email="taylor@apache.org" />
+		</authors>
+	</properties>
+	<body>
+    <section name="Portlet Development with the Portlet API">
+      <p> 
+        This section of the tutorial covers Portlet Development with the Java Portlet API.
+      </p>	
+      <p> 
+	   <ul>
+	     <li>Getting started with Eclipse</li>
+	     <li>Bonjour Monde Portlet: the staple Hello World demo to get things rolling introduces the portlet.xml, as well as basic Portlet API concepts.</li>
+	     <li>The Weather Portlet: using init parameters, preferences, and request parameters</li>	 
+	     <li>The Stock Quote Portlet: actions, JSP, Portlet API Tag Library</li>	 
+	     <li>Interportlet communication, more advanced Portlet programming.</li>
+	   </ul>	   
+      </p>	
+	  <p>
+	    <a href='../03/pages.html'>Previous</a> <a href='eclipse.html'>Next</a>
+	  </p>            	   
+	  </section>
+	</body>
+</document>
\ No newline at end of file

Added: portals/jetspeed-2/trunk/tutorial/xdocs/04/taglib.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/04/taglib.xml?view=auto&rev=492701
==============================================================================
--- portals/jetspeed-2/trunk/tutorial/xdocs/04/taglib.xml (added)
+++ portals/jetspeed-2/trunk/tutorial/xdocs/04/taglib.xml Thu Jan  4 11:37:33 2007
@@ -0,0 +1,170 @@
+<?xml version="1.0"?>
+<!--
+  Copyright 2004 The Apache Software Foundation
+  
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+  http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<document>
+  <properties>
+    <title>Taglibs</title>
+    <subtitle>Portlet API Taglib</subtitle>
+	<authors>
+		<person name="David Sean Taylor" email="taylor@apache.org" />
+	</authors>
+  </properties>
+  <body>
+    <section name="JSP and Portlet API Taglib">
+    <p>      
+    Lets create another portlet. This portlet will not have a Java class.
+    Instead it will be written entirely in JSP.
+    Note that you can mix JSP and a Java class for the implementation of your
+    Java class as you will see in the Stock Quote portlet example.
+    Go to the <i>express-demo</i> project, click on the <i>src/webapp/WEB-INF/view/</i> directory, and create a JSP 
+    file named <b>tutorial.jsp</b>. Enter the following JSP code:
+	</p>      
+	 <source>	
+	 <![CDATA[
+<%@ page session="true" contentType="text/html;charset=utf-8"%>
+<%@ taglib uri='/WEB-INF/portlet.tld' prefix='portlet'%>
+<%@ taglib uri="http://java.sun.com/jstl/core" prefix='c' %> 
+
+<portlet:defineObjects/>
+
+<portlet:renderURL var="max" windowState='maximized'/>
+<portlet:renderURL var="normal" windowState='normal'/>
+<c:out value="${renderRequest.windowState}"/>
+<c:if test="${renderRequest.windowState == 'maximized'}">
+<a href='<%=normal%>'>Normal</a>
+</c:if>
+<c:if test="${renderRequest.windowState == 'normal'}">
+<a href='<%=max%>'>Max</a>
+</c:if>
+	     ]]>
+	</source> 	
+	<p>
+	Every portlet JSP page is required to have the <b>defineObjects</b> tag 
+	at the top. Of course you also need the TLD reference.
+	Portlets need to write their links to go back to the portal, not 
+	back to each individual servlet or JSP. That is the main difference 
+	between writing portlets and servlets. If you are using a framework like
+	Struts or JSF correctly, these details should be hidden from you in 
+	the framework. The tag that we are using here is the <b>&lt;portlet:renderURL&gt;</b>.
+	It allows you to create a render phase link back to this portlet, going 
+	through the portal. You can set window states, request parameters, and
+	portlet mode changes on the URL. The other kind of link that you can create
+	is an action URL: <b>&lt;portlet:actionURL&gt;</b>, which is usually
+	used with a HTML form to post back parameters to the portlet and initial
+	a blocking action phase event for the targeted portlet.    	
+	The <b>&lt;portlet:defineObjects&gt;</b> tag declares three variables for your
+	page:
+	<table>
+	<tr>
+	<th>JSP variable</th>
+	<th>Description</th>
+	</tr>
+	<tr>
+	<td>renderRequest</td>
+	<td>The RenderRequest object</td>
+	</tr>
+	<tr>
+	<td>renderResponse</td>
+	<td>The RenderResponse object</td>
+	</tr>
+	<tr>
+	<td>portletConfig</td>
+	<td>The PortletConfig object</td>
+	</tr>
+	</table>
+	</p>	
+	<p>
+	Here is the portlet.xml for our JSP portlet.
+	It is based on the <b>GenericServletPortlet</b>, provided by Portals Bridges
+	in a jar file dependency.
+	Notice the init-param named <b>ViewPage</b>.
+	This param defines which webapp-relative JSP to use for View Mode.
+	Similiarly we have are <b>EditPage</b> for edit mode, and <b>HelpPage</b>
+	for help mode.
+	</p>
+	 <source>	
+	 <![CDATA[
+ <portlet>   
+    <description>The 2nd Tutorial with JSP</description>		
+    <portlet-name>TutorialPortlet2</portlet-name>	
+    <display-name>Tutorial Portlet 2</display-name>
+    <portlet-class>org.apache.portals.bridges.common.GenericServletPortlet</portlet-class>	        
+    <init-param>
+        <name>ViewPage</name>
+        <value>/WEB-INF/view/tutorial.jsp</value>
+    </init-param>          
+    <init-param>
+        <name>EditPage</name>
+        <value>/WEB-INF/view/tutorial.jsp</value>
+    </init-param>          
+    <init-param>
+        <name>HelpPage</name>
+        <value>/WEB-INF/view/tutorial.jsp</value>
+    </init-param>              
+    <supports>
+        <mime-type>text/html</mime-type>
+        <portlet-mode>VIEW</portlet-mode>
+        <portlet-mode>EDIT</portlet-mode>        
+        <portlet-mode>HELP</portlet-mode>                
+    </supports>
+    <supported-locale>en</supported-locale>      	
+	<portlet-info>
+        <title>Tutorial Portlet</title>
+        <short-title>tutorial</short-title>
+		<keywords>tutorial,hello,JSP,taglib</keywords>
+    </portlet-info>
+    <portlet-preferences>
+        <preference>                            
+            <name>test</name>                    
+            <value>hello</value>    
+        </preference>         
+    </portlet-preferences>                      		
+</portlet> 	 
+	     ]]>
+	</source> 
+	<p>Add this portlet window fragment to the tutorial default page, underneath the BonjourMonde fragment:
+	</p>
+	 <source>
+	 <![CDATA[
+	  <fragment id="express-102" type="portlet" name="express-demo::TutorialPortlet2"/>
+     ]]>
+	</source> 				
+	<p>And then deploy your changes:
+	</p>
+	 <source>
+	 <![CDATA[
+# Linux	 
+cd /JetspeedTraining/workspace/jetexpress/
+ant
+cd applications/express-demo
+mvn 
+cp target/express-demo-1.0.war /JetspeedTraining/tomcat-express/webapps/express-demo.war
+
+# Windows
+cd \JetspeedTraining\workspace\jetexpress
+ant
+cd applications\express-demo
+mvn 
+copy target\express-demo-1.0.war \JetspeedTraining\tomcat-express\webapps\express-demo.war
+     ]]>
+	</source> 			
+	  <p>
+	    <a href='hello.html'>Previous</a> <a href='../05/jetspeed-service.html'>Next</a>
+	  </p>            
+    </section>
+  </body>
+</document>
+

Added: portals/jetspeed-2/trunk/tutorial/xdocs/04/tutorial-psml.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/04/tutorial-psml.xml?view=auto&rev=492701
==============================================================================
--- portals/jetspeed-2/trunk/tutorial/xdocs/04/tutorial-psml.xml (added)
+++ portals/jetspeed-2/trunk/tutorial/xdocs/04/tutorial-psml.xml Thu Jan  4 11:37:33 2007
@@ -0,0 +1,88 @@
+<?xml version="1.0"?>
+<!--
+  Copyright 2004 The Apache Software Foundation
+  
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+  http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<document>
+  <properties>
+    <title>Adding a Page for the Tutorial Portlets</title>
+    <subtitle>Adding a Page for the Tutorial Portlets</subtitle>
+	<authors>
+		<person name="David Sean Taylor" email="taylor@apache.org" />
+	</authors>
+  </properties>
+  <body>
+    <section name="Adding a Page for the Tutorial Portlets">
+	<p>
+	Now that we've created a new portlet, lets add a page to hold that portlet.
+	In the <b>jetexpress</b> project, lets add a folder to the root of our site named
+	<i>portal/src/webapp/WEB-INF/pages/tutorial/</i>.
+	</p>
+	 <source>	
+	 <![CDATA[	
+<?xml version="1.0" encoding="UTF-8"?>
+<folder>
+  <title >Tutorial</title>  
+  <metadata name="title" xml:lang="fr">Autodidacte</metadata>
+
+  <security-constraints>
+    <security-constraints-ref>public-edit</security-constraints-ref>
+  </security-constraints>
+</folder>	 
+	     ]]>
+	</source> 		
+	<p>
+	Then lets add a new page named <b>default-page.psml</b> under the tutorial directory.
+	Add a portlet window to reference our new portlet:
+	</p>
+	 <source>	
+	 <![CDATA[
+<page>
+  <defaults layout-decorator="express-page" 
+            portlet-decorator="express-portlet"
+            skin="express"/>
+  <title>JetExpress Tutorials</title>
+  <short-title>Tutorials</short-title>
+  <fragment id="tutorial-100" type="layout" name="jetspeed-layouts::VelocityTwoColumns">  
+	  <fragment id="express-101" type="portlet" name="express-demo::BonjourMonde"/>
+  </fragment>
+</page>	 
+	     ]]>
+	</source> 	
+	<p>Lets deploy our portlet and the new pages:
+	</p>
+	 <source>	
+	 <![CDATA[
+# Linux	 
+cd /JetspeedTraining/workspace/jetexpress
+ant
+cd applications/express-demo
+mvn 
+cp target/express-demo-1.0.war /JetspeedTraining/tomcat-express/webapps/express-demo.war
+
+# Windows
+cd \JetspeedTraining\workspace\jetexpress
+ant
+cd applications\express-demo
+mvn 
+copy target\express-demo-1.0.war \JetspeedTraining\tomcat-express\webapps\express-demo.war
+	     ]]>
+	</source> 		
+	  <p>
+	    <a href='hello.html'>Previous</a> <a href='taglib.html'>Next</a>
+	  </p>            	
+    </section>
+  </body>
+</document>
+	
\ No newline at end of file

Added: portals/jetspeed-2/trunk/tutorial/xdocs/05/jetspeed-service.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/05/jetspeed-service.xml?view=auto&rev=492701
==============================================================================
--- portals/jetspeed-2/trunk/tutorial/xdocs/05/jetspeed-service.xml (added)
+++ portals/jetspeed-2/trunk/tutorial/xdocs/05/jetspeed-service.xml Thu Jan  4 11:37:33 2007
@@ -0,0 +1,338 @@
+<?xml version="1.0"?>
+<!--
+  Copyright 2004 The Apache Software Foundation
+  
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+  http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<document>
+  <properties>
+    <title>Jetspeed Service</title>
+    <subtitle>Jetspeed Services</subtitle>
+	<authors>
+		<person name="David Sean Taylor" email="taylor@apache.org" />
+	</authors>
+  </properties>
+  <body>
+    <section name="Jetspeed Services">
+    <p>
+    This tutorial shows you how to use Jetspeed Services from the Express Demo Portlet Application. 
+    Please note that all edits, unless explicity specified otherwise, are applied to the express-demo PA source tree.
+    We will learn how to:
+    <ul>
+    <li>add new roles</li>
+    <li>add new groups</li>
+    <li>register new users</li>
+    <li>manipulate pages</li>
+    <li>get a filtered list of portlets</li>
+    </ul>
+    using the RoleManager, GroupManager, PortletAdministration, and Page Manager Jetspeed API interfaces.
+    </p>
+    <p>
+    Lets get started by entering a new portlet in the portlet.xml:
+    </p>
+	 <source>	
+	 <![CDATA[	
+<portlet id="ServicesTutorialPortlet">    
+    <description>Tutorial for using Jetspeed Services, such as PortalAdministration, PageManager, Registry.</description>
+    <portlet-name>ServicesTutorialPortlet</portlet-name>
+    <display-name>Jetspeed Services Tutorial Portlet</display-name>
+    <portlet-class>com.bluesunrise.portal.portlets.services.ServicesTutorialPortlet</portlet-class>
+    <init-param>
+        <description>This parameter sets the template used in view mode.</description>
+        <name>ViewPage</name>
+        <value>/WEB-INF/view/services-tutorial.jsp</value>
+    </init-param>
+    <init-param>
+        <description>Comma-separated list of roles to create via Role Manager</description>
+        <name>roles</name>
+        <value>role1,role2,role3</value>
+    </init-param>    
+    <init-param>
+        <description>Comma-separated list of groups to create via Group Manager</description>
+        <name>groups</name>
+        <value>group1,group2,group3</value>
+    </init-param>    
+    <init-param>
+        <description>Comma-separated list of Users to create and Register via PortalAdminstration service</description>
+        <name>users</name>
+        <value>user1,user2,user3</value>
+    </init-param>        
+    <init-param>
+        <description>Comma-separated list of roles to assign to a new user</description>
+        <name>registration-roles</name>
+        <value>user,role1,role2</value>
+    </init-param>
+    <init-param>
+        <description>Comma-separated list of groups to assign to a new user</description>
+        <name>registration-groups</name>
+        <value>group1,group2</value>
+    </init-param>
+    <init-param>
+        <name>portlet-icon</name>
+        <value>start-here.png</value>
+    </init-param>    
+    <supports>
+        <mime-type>text/html</mime-type>
+        <portlet-mode>VIEW</portlet-mode>
+    </supports>
+    <supported-locale>en</supported-locale>
+    <portlet-info>
+        <title>Services Tutorial</title>
+        <short-title>Services</short-title>
+        <keywords>tutorial,services,jetspeed-services</keywords>
+    </portlet-info>
+ </portlet>	 
+	     ]]>
+	</source> 			     
+    <p>
+    Jetspeed has an extended descriptor for defining extended portal features and services.
+    Edit the <b>jetspeed-portlet.xml</b> found in <i>src/webapp/WEB-INF/</i>, and add the following
+    services under the &lt;js:services&gt; element. This tells Jetspeed what services you require:
+    </p>
+	 <source>	
+	 <![CDATA[	
+        <js:service name='GroupManager'/>    
+        <js:service name='PageManager'/>    
+        <js:service name='PortalAdministration'/>        
+        <js:service name='PortletRegistryComponent'/>
+        <js:service name='RoleManager'/>	 
+        <js:service name='UserManager'/>        
+	     ]]>
+	</source> 			     	
+    <p>
+    Create a new JSP page named <b>services-tutorial.jsp</b> in the <i>src/webapp/WEB-INF/view/</i> directory.
+    Enter the following code:
+	 <source>	
+	 <![CDATA[	
+<%@ page language="java" session="true" %>
+<%@ page import="javax.portlet.*" %>
+
+<%@ taglib uri="http://java.sun.com/portlet" prefix="portlet"%>
+<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
+<%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt" %>
+
+<portlet:defineObjects/>
+
+<portlet:actionURL var="newRolesAction"/>
+<br/>
+<div class='portlet-section-header'>Services Tutorial Portlet</div>
+
+<form name="servicesTutorialForm" action="<c:out value="${newRolesAction}"/>" method="post">
+<input type="submit" name='action' value="createRoles" class="portlet-form-button" />
+<input type="submit" name='action' value="createGroups" class="portlet-form-button" />
+<input type="submit" name='action' value="registerUsers" class="portlet-form-button" />
+<input type="submit" name='action' value="modifyPages" class="portlet-form-button" />
+<input type="submit" name='action' value="createSharedPages" class="portlet-form-button" />
+</form>
+<c:if test="${message != null}">
+<div class='portlet-msg-info'><c:out value="${message}"/></div>
+</c:if>
+<c:if test="${errorMessage != null}">
+<div class='portlet-msg-error'><c:out value="${errorMessage}"/></div>
+</c:if>    
+	     ]]>
+	</source> 			         
+    </p>
+    <p>
+    <ul>
+    <li>Create a new package using Eclipse: <b>com.bluesunrise.portal.portlets.services</b></li>
+    <li>Create a portlet in the above package named <b>ServicesTutorialPortlet.java</b> extending 
+    <b>GenericServletPortlet</b>.</li>
+    <li>Override and implement the <b>init</b>, <b>doView</b> and <b>processAction</b> methods</li>
+    </ul>
+	</p> 
+	<p>
+	Add the following data members to the portlet class:
+	</p>
+	 <source>	
+	 <![CDATA[	
+    private PortalAdministration admin;
+    private PageManager pageManager;
+    private RoleManager roleManager;
+    private UserManager userManager;
+    private GroupManager groupManager;
+    protected PortletRegistry registry;
+
+    private List registrationRoles;
+    private List registrationGroups;
+    private List newRoles;
+    private List newGroups;
+    private List newUsers;    
+    ]]>
+	</source> 			 
+	<p>
+	Press <b>Ctrl-Shift-O</b> to resolve the two above class imports.	
+	</p>
+	<p>
+	Enter the following code into the init(PortletConfig config) method, replacing whats there:
+	</p>
+	 <source>	
+	 <![CDATA[
+        admin = (PortalAdministration) getPortletContext().getAttribute(
+				CommonPortletServices.CPS_PORTAL_ADMINISTRATION);
+		if (null == admin) {
+			throw new PortletException(
+					"Failed to find the Portal Administration on portlet initialization");
+		}
+		userManager = (UserManager) getPortletContext().getAttribute(
+				CommonPortletServices.CPS_USER_MANAGER_COMPONENT);
+		if (null == userManager) {
+			throw new PortletException(
+					"Failed to find the User Manager on portlet initialization");
+		}
+		roleManager = (RoleManager) getPortletContext().getAttribute(
+				CommonPortletServices.CPS_ROLE_MANAGER_COMPONENT);
+		if (null == roleManager) {
+			throw new PortletException(
+					"Failed to find the Role Manager on portlet initialization");
+		}
+		groupManager = (GroupManager) getPortletContext().getAttribute(
+				CommonPortletServices.CPS_GROUP_MANAGER_COMPONENT);
+		if (null == groupManager) {
+			throw new PortletException(
+					"Failed to find the Group Manager on portlet initialization");
+		}
+		pageManager = (PageManager) getPortletContext().getAttribute(
+				CommonPortletServices.CPS_PAGE_MANAGER_COMPONENT);
+		if (null == pageManager) {
+			throw new PortletException(
+					"Failed to find the Page Manager on portlet initialization");
+		}
+        registry = (PortletRegistry)getPortletContext().getAttribute(CommonPortletServices.CPS_REGISTRY_COMPONENT);
+        if (null == registry) {
+			throw new PortletException(
+					"Failed to find the Portlet Registry on portlet initialization");
+		}                
+        this.newRoles = getInitParameterList(config, "roles");
+        this.newGroups = getInitParameterList(config, "groups");
+        this.newUsers = getInitParameterList(config, "users");        
+        this.registrationRoles = getInitParameterList(config, "registration-roles");
+        this.registrationGroups = getInitParameterList(config, "registration-groups");	 
+	     ]]>
+	</source>
+	<p>
+	Add this helper function to the class:
+	</p>
+	 <source>	
+	 <![CDATA[	
+    protected List getInitParameterList(PortletConfig config, String ipName)
+    {
+        String temp = config.getInitParameter(ipName);
+        if (temp == null) return new ArrayList();
+
+        String[] temps = temp.split("\\,");
+        for (int ix = 0; ix < temps.length; ix++)
+            temps[ix] = temps[ix].trim();
+
+        return Arrays.asList(temps);
+    }
+	     ]]>
+	</source>		 			 
+	<p>
+	Write the doView method:
+	</p>
+	 <source>	
+	 <![CDATA[	
+	public void doView(RenderRequest request, RenderResponse response) throws PortletException, IOException 
+	{
+		request.setAttribute("message", request.getParameter("message"));
+		request.setAttribute("errorMessage", request.getParameter("errorMessage"));
+		super.doView(request, response);
+	}	 
+	     ]]>
+	</source>		 			 	
+	<p>
+	Write the portletAction method:
+	</p>
+	 <source>	
+	 <![CDATA[	
+	public void processAction(ActionRequest request, ActionResponse response) throws PortletException, IOException 
+	{
+		String action = request.getParameter("action");
+		try
+		{
+			if (action != null)
+			{			
+				if (action.equals("createRoles"))
+				{
+					String message = "Created " + createRoles() + " roles";
+					response.setRenderParameter("message", message);
+				}
+				else if (action.equals("createGroups"))
+				{
+					String message = "Created " + createGroups() + " groups";
+					response.setRenderParameter("message", message);
+				}
+				else if (action.equals("registerUsers"))
+				{
+					String message = "Registered " + registerUsers() + " users";
+					response.setRenderParameter("message", message);
+				}
+				else if (action.equals("modifyPages"))
+				{
+					String message = "Modified " + modifyPages() + " pages";
+					response.setRenderParameter("message", message);					
+				}
+				else if (action.equals("createSharedPages"))
+				{
+					String message = "Created " + createSharedPages() + " pages";
+					response.setRenderParameter("message", message);										
+				}
+			}
+		}
+		catch (Exception e)
+		{
+			response.setRenderParameter("serviceError", e.getMessage());
+			// TODO: proper logging
+			e.printStackTrace();
+		}
+	}	 
+	     ]]>
+	</source>		 			 
+	<p>
+	Implement the undefined methods using the Jetspeed Services...
+	<table>
+	<tr>
+	<th>method</th>
+	<th>purpose</th>
+	</tr>
+	<tr>
+	<td>createRoles</td>
+	<td>using the roles init param, create new roles with the RoleManager service. If the role already exists, skip it.</td>
+	</tr>
+	<tr>
+	<td>createGroups</td>
+	<td>using the groups init param, create new groups with the GroupManager service. If the group already exists, skip it.</td>
+	</tr>
+	<tr>
+	<td>registerUsers</td>
+	<td>using the users init param, register new users with the PortalAdministration service. If the user already exists, skip it.</td>
+	</tr>
+	<tr>
+	<td>modifyPages</td>
+	<td>using the users init param, modify pages with the PageManager service. If the page doesnt exist, dont create it.
+	    Modifications: for user1, create a 1 column collection of 1 portlet, for user2, create a 2 column collection of 2 portlets, for user3 create a 3 column collection of 3 portets</td>
+	</tr>
+	<tr>
+	<td>createSharedPages</td>
+	<td>create a folder named /shared, create a page name /friends.psml. add some portlets to the page. grant public-view security constraint to the folder</td>
+	</tr>
+	</table>
+	</p>
+	  <p>
+	    <a href='../04/taglib.html'>Previous</a> 
+	  </p>     	
+    </section>
+  </body>
+</document>
+

Added: portals/jetspeed-2/trunk/tutorial/xdocs/build-commands.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/build-commands.xml?view=auto&rev=492701
==============================================================================
--- portals/jetspeed-2/trunk/tutorial/xdocs/build-commands.xml (added)
+++ portals/jetspeed-2/trunk/tutorial/xdocs/build-commands.xml Thu Jan  4 11:37:33 2007
@@ -0,0 +1,138 @@
+<?xml version="1.0"?>
+<!--
+  Copyright 2004 The Apache Software Foundation
+  
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+  http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<document>
+  <properties>
+    <title>Build Commands</title>
+    <subtitle>Build Commands for Maven-2 and Jetspeed</subtitle>
+	<authors>
+		<person name="David Sean Taylor" email="taylor@apache.org" />
+	</authors>
+  </properties>
+  <body>
+    <section name="Build Commands for Maven-2 and Jetspeed">
+      <p>      
+      	Here is a quick summary of the current Jetspeed2 Maven2 build commands:
+      </p>
+<div>
+<table>
+<tr>
+<td>
+<strong><tt>commands</tt></strong>
+</td>
+<td>
+<strong><tt>explanation</tt></strong>
+</td>
+</tr>
+<tr>
+<td>
+<strong><tt>mvn</tt></strong>
+</td>
+<td>
+performs base build and installs J2 artifacts in the Maven2 repository, (install is the default Maven2 goal for this build)
+</td>
+</tr>
+<tr>
+<td>
+<strong><tt>mvn -P test</tt></strong>
+</td>
+<td>
+performs base build and includes execution of test cases, (includes test database setup)
+</td>
+</tr>
+<tr>
+<td>
+<strong><tt>mvn -P tomcat</tt></strong>
+</td>
+<td>
+performs base build and deploys to Tomcat app server, (includes prodution database setup). 
+Other app servers will be supported in the future, (see below for details)
+</td>
+</tr>
+<tr>
+<td>
+<strong><tt>mvn clean</tt></strong>
+</td>
+<td>
+cleans all build target directories
+</td>
+</tr>
+</table>
+</div>
+<p><em>Please note that the Maven2 repositories used by default with this build are generally saturated and the Jetspeed2 Maven2 repository does not yet contain a full mirror of the artifacts required to build Jetspeed2. If you experience download or connection failures, simply restart the build by issuing your last command again to retry.</em> </p>
+      
+<subsection name='Additional Profiles'>
+<p>The following profiles are optional and can be supplied when building/deploying to Tomcat </p>
+<div>
+<table>
+<tr>
+<td>
+<strong><tt>mvn -P tomcat,min</tt></strong>
+</td>
+<td>
+specified that only the administrative portlets be deployed along with a minimal set of PSML pages.
+</td>
+</tr>
+<tr>
+<td>
+<strong><tt>mvn -P tomcat,full</tt></strong>
+</td>
+<td>
+at the moment, this is the same as the default build: deploys a full J2 set of portlets and PSML pages.
+</td>
+</tr>
+<tr>
+<td>
+<strong><tt>mvn -P tomcat,nodb</tt></strong>
+</td>
+<td>
+specifies that configuration of the production database should be skipped.
+</td>
+</tr>
+<tr>
+<td>
+<strong><tt>mvn -P tomcat,hot</tt></strong>
+</td>
+<td>
+indicates that a portlet app, component, or content should be directly written to the deployed Jetspeed2 webapp.
+</td>
+</tr>
+<tr>
+<td>
+<strong><tt>mvn -P tomcat,dbpsml</tt></strong>
+</td>
+<td>
+specifies portal build and database deployment/import to include configuration of database PSML.
+</td>
+</tr>
+<tr>
+<td>
+<strong><tt>mvn -P prod</tt></strong>
+</td>
+<td>
+executes deployment to application server specified in settings.xml, (see below).
+</td>
+</tr>
+</table>
+</div>
+<p>Currently, only Tomcat 5 and Tomcat 5.5 application servers are supported by this build. 
+   More platforms are to be supported in the near future. 
+</p>
+</subsection>
+</section>
+</body>
+</document>
+

Added: portals/jetspeed-2/trunk/tutorial/xdocs/images/Thumbs.db
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/images/Thumbs.db?view=auto&rev=492701
==============================================================================
Binary file - no diff available.

Propchange: portals/jetspeed-2/trunk/tutorial/xdocs/images/Thumbs.db
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: portals/jetspeed-2/trunk/tutorial/xdocs/images/eclipse-classpath.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/images/eclipse-classpath.png?view=auto&rev=492701
==============================================================================
Binary file - no diff available.

Propchange: portals/jetspeed-2/trunk/tutorial/xdocs/images/eclipse-classpath.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: portals/jetspeed-2/trunk/tutorial/xdocs/images/eclipse-classpath2.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/images/eclipse-classpath2.png?view=auto&rev=492701
==============================================================================
Binary file - no diff available.

Propchange: portals/jetspeed-2/trunk/tutorial/xdocs/images/eclipse-classpath2.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: portals/jetspeed-2/trunk/tutorial/xdocs/images/eclipse-classpath3.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/images/eclipse-classpath3.png?view=auto&rev=492701
==============================================================================
Binary file - no diff available.

Propchange: portals/jetspeed-2/trunk/tutorial/xdocs/images/eclipse-classpath3.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: portals/jetspeed-2/trunk/tutorial/xdocs/images/import-project.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/images/import-project.png?view=auto&rev=492701
==============================================================================
Binary file - no diff available.

Propchange: portals/jetspeed-2/trunk/tutorial/xdocs/images/import-project.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: portals/jetspeed-2/trunk/tutorial/xdocs/images/import-project2.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/images/import-project2.png?view=auto&rev=492701
==============================================================================
Binary file - no diff available.

Propchange: portals/jetspeed-2/trunk/tutorial/xdocs/images/import-project2.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: portals/jetspeed-2/trunk/tutorial/xdocs/images/jetexpress-desktop.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/images/jetexpress-desktop.png?view=auto&rev=492701
==============================================================================
Binary file - no diff available.

Propchange: portals/jetspeed-2/trunk/tutorial/xdocs/images/jetexpress-desktop.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: portals/jetspeed-2/trunk/tutorial/xdocs/images/jetexpress-portal.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/images/jetexpress-portal.png?view=auto&rev=492701
==============================================================================
Binary file - no diff available.

Propchange: portals/jetspeed-2/trunk/tutorial/xdocs/images/jetexpress-portal.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: portals/jetspeed-2/trunk/tutorial/xdocs/images/min-screenshot.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/images/min-screenshot.png?view=auto&rev=492701
==============================================================================
Binary file - no diff available.

Propchange: portals/jetspeed-2/trunk/tutorial/xdocs/images/min-screenshot.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: portals/jetspeed-2/trunk/tutorial/xdocs/images/new-home.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/images/new-home.png?view=auto&rev=492701
==============================================================================
Binary file - no diff available.

Propchange: portals/jetspeed-2/trunk/tutorial/xdocs/images/new-home.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: portals/jetspeed-2/trunk/tutorial/xdocs/images/new-home2.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/images/new-home2.png?view=auto&rev=492701
==============================================================================
Binary file - no diff available.

Propchange: portals/jetspeed-2/trunk/tutorial/xdocs/images/new-home2.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: portals/jetspeed-2/trunk/tutorial/xdocs/images/new-portlet.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/images/new-portlet.png?view=auto&rev=492701
==============================================================================
Binary file - no diff available.

Propchange: portals/jetspeed-2/trunk/tutorial/xdocs/images/new-portlet.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: portals/jetspeed-2/trunk/tutorial/xdocs/images/override-impl.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/images/override-impl.png?view=auto&rev=492701
==============================================================================
Binary file - no diff available.

Propchange: portals/jetspeed-2/trunk/tutorial/xdocs/images/override-impl.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: portals/jetspeed-2/trunk/tutorial/xdocs/images/site.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/images/site.png?view=auto&rev=492701
==============================================================================
Binary file - no diff available.

Propchange: portals/jetspeed-2/trunk/tutorial/xdocs/images/site.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: portals/jetspeed-2/trunk/tutorial/xdocs/images/src-dir.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/images/src-dir.png?view=auto&rev=492701
==============================================================================
Binary file - no diff available.

Propchange: portals/jetspeed-2/trunk/tutorial/xdocs/images/src-dir.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: portals/jetspeed-2/trunk/tutorial/xdocs/images/svn1.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/images/svn1.png?view=auto&rev=492701
==============================================================================
Binary file - no diff available.

Propchange: portals/jetspeed-2/trunk/tutorial/xdocs/images/svn1.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: portals/jetspeed-2/trunk/tutorial/xdocs/images/svn2.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/images/svn2.png?view=auto&rev=492701
==============================================================================
Binary file - no diff available.

Propchange: portals/jetspeed-2/trunk/tutorial/xdocs/images/svn2.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: portals/jetspeed-2/trunk/tutorial/xdocs/images/svn3.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/images/svn3.png?view=auto&rev=492701
==============================================================================
Binary file - no diff available.

Propchange: portals/jetspeed-2/trunk/tutorial/xdocs/images/svn3.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: portals/jetspeed-2/trunk/tutorial/xdocs/images/theme.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/images/theme.png?view=auto&rev=492701
==============================================================================
Binary file - no diff available.

Propchange: portals/jetspeed-2/trunk/tutorial/xdocs/images/theme.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: portals/jetspeed-2/trunk/tutorial/xdocs/images/tigris-page.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/images/tigris-page.png?view=auto&rev=492701
==============================================================================
Binary file - no diff available.

Propchange: portals/jetspeed-2/trunk/tutorial/xdocs/images/tigris-page.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: portals/jetspeed-2/trunk/tutorial/xdocs/images/tigris-portlet.png
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/images/tigris-portlet.png?view=auto&rev=492701
==============================================================================
Binary file - no diff available.

Propchange: portals/jetspeed-2/trunk/tutorial/xdocs/images/tigris-portlet.png
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: portals/jetspeed-2/trunk/tutorial/xdocs/index.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/index.xml?view=auto&rev=492701
==============================================================================
--- portals/jetspeed-2/trunk/tutorial/xdocs/index.xml (added)
+++ portals/jetspeed-2/trunk/tutorial/xdocs/index.xml Thu Jan  4 11:37:33 2007
@@ -0,0 +1,72 @@
+<?xml version="1.0"?>
+<!--
+	Copyright 2004 The Apache Software Foundation
+	
+	Licensed under the Apache License, Version 2.0 (the "License");
+	you may not use this file except in compliance with the License.
+	You may obtain a copy of the License at
+	
+	http://www.apache.org/licenses/LICENSE-2.0
+	
+	Unless required by applicable law or agreed to in writing, software
+	distributed under the License is distributed on an "AS IS" BASIS,
+	WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+	See the License for the specific language governing permissions and
+	limitations under the License.
+-->
+<document>
+	<properties>
+		<title>Jetspeed Tutorial</title>
+		<subtitle>The Jetspeed Complete Tutorial</subtitle>
+		<authors>
+			<person name="David Sean Taylor" email="taylor@apache.org" />
+		</authors>
+	</properties>
+	<body>
+    <section name="Welcome to the Jetspeed Tutorial!">
+      <p> 
+		The Jetspeed Tutorial is a step-by-step set of instruction and source code for 
+		creating a custom Jetspeed Portal from scratch. 
+      </p>	
+      <p> 
+		When starting a new Jetspeed portal project, 
+		we strongly recommend that you create a custom portal project, 
+		and do not edit the Jetspeed-2 source and resources directly.         
+      </p>	
+	  <p>
+	    This tutorial will guide you through the steps to create a sample portal named <b>jetexpress</b>.
+	    The goal of this tutorial is to prepare you for creating your own custom Jetspeed portal,
+	    complete with your own set of portal pages, your company logos and text, your own set of portlet applications,
+	    and any special integration required to run inside Jetspeed.	   
+	  </p>	          
+	  <subsection name='Prerequisites'>
+	   The tutorial requires the following software installed on your system:
+	   <ul>
+	     <li>Java 1.4 or higher</li>
+	     <li>Maven-2</li>	 
+	     <li>An internet connection so that Maven can download plugins</li>
+	   </ul>
+	  <p>
+	    Before getting started with the tutorial, review the Custom Build commands available to you:
+	    <ul>
+	    <li><a href='build-commands.html'>Build Commands</a></li>
+	    <li><a href='project-generation.html'>Project Generation Archetypes</a></li>
+	    <li><a href='project-directory.html'>Project Directory Overview</a></li>
+	  	</ul>
+	  </p>
+	  </subsection>	  
+	  <subsection name='Tutorial Resources'>	  	  
+	  <p>
+	    During the tutorial, at times you will be asked to copy files from the <i>resources</i> directory.
+	    You can cut and paste the <i>copy | cp</i> commands (for Windows and Linux) into a shell,
+	    and copy the resources into your new custom portal project. These commands are not really
+	    a part of the normal development cycle, but are there to demonstrate the incremental changes 
+	    to the portal as we progress through the tutorial.
+	  </p>
+	  <p>
+	    To get started with the tutorial, click here: <a href='01/first-steps.html'>Start Tutorial</a>
+	  </p>
+	  </subsection>
+	  </section>
+	</body>
+</document>
\ No newline at end of file

Added: portals/jetspeed-2/trunk/tutorial/xdocs/navigation.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/navigation.xml?view=auto&rev=492701
==============================================================================
--- portals/jetspeed-2/trunk/tutorial/xdocs/navigation.xml (added)
+++ portals/jetspeed-2/trunk/tutorial/xdocs/navigation.xml Thu Jan  4 11:37:33 2007
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+    Copyright 2004 The Apache Software Foundation
+    
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+    
+    http://www.apache.org/licenses/LICENSE-2.0
+    
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<project>
+    <body>
+        <links>
+        	<item name="Jetspeed-1" href="http://portals.apache.org/jetspeed-1" target="_nw"/>
+        	<item name="Jetspeed-2" href="http://portals.apache.org/jetspeed-2" target="_nw"/>
+        	<item name="Bridges" href="http://portals.apache.org/bridges" target="_nw"/>
+        </links>
+        <menu name="Tutorial Overview">
+            <item name="Welcome" href="index.html" />        
+        	<item name="Build Commands" href="build-commands.html" />
+        	<item name="Project Generation Archetypes" href="project-generation.html" />
+        	<item name="Project Directory Overview" href="project-directory.html" />        	
+        </menu>        
+        <menu name="01. Custom Portal Generation">
+        	<item name="Maven First Steps" href="01/first-steps.html" />                    
+            <item name="Generating a Jetspeed Portal" href="01/genapp.html" />
+        	<item name="Build and Deploy Custom Portal" href="01/build-it.html" />            
+        	<item name="Run the Custom Portal" href="01/run-it.html" />            
+        </menu>
+        <menu name="02. Customizing Your Portal Design">
+            <item name="Decorators and Themes" href="02/customizing-overview.html" />        
+            <item name="Page Decoration" href="02/page-decoration.html" />
+            <item name="Portlet Decoration" href="02/portlet-decoration.html" />            
+            <item name="Desktop Themes" href="02/desktop-theme.html" />            
+            <item name="Changing the Default Page" href="02/default-page.html" />            
+            <item name="Deploying your Customizations" href="02/deploy-custom.html"/>            
+        </menu>
+        <menu name="03. Portlet Application Configuration">
+            <item name="Generating a Portlet Application" href="03/portlet-app.html" />
+            <item name="Building and Deploying" href="03/built-it.html" />            
+            <item name="Configuring Portal Pages" href="03/pages.html" />                                    
+        </menu>
+        <menu name="04. Portlet Development 101">
+            <item name="Overview" href="04/overview.html" />
+            <item name="Eclipse" href="04/eclipse.html" />            
+            <item name="Hello World" href="04/hello.html" />                        
+            <item name="Adding a Page" href="04/tutorial-psml.html" />             
+            <item name="JSP and Portlet API Taglib" href="04/taglib.html" />                         
+        </menu>
+        <menu name="05. Jetspeed Services">
+            <item name="Services Tutorial Portlet" href="05/jetspeed-service.html" />
+        </menu>
+    </body>
+</project>

Added: portals/jetspeed-2/trunk/tutorial/xdocs/project-directory.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/project-directory.xml?view=auto&rev=492701
==============================================================================
--- portals/jetspeed-2/trunk/tutorial/xdocs/project-directory.xml (added)
+++ portals/jetspeed-2/trunk/tutorial/xdocs/project-directory.xml Thu Jan  4 11:37:33 2007
@@ -0,0 +1,131 @@
+<?xml version="1.0"?>
+<!--
+  Copyright 2004 The Apache Software Foundation
+  
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+  http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<document>
+  <properties>
+    <title>Project Directory</title>
+    <subtitle>Overview of the Custom Project Directory Structure</subtitle>
+	<authors>
+		<person name="David Sean Taylor" email="taylor@apache.org" />
+	</authors>
+  </properties>
+  <body>
+ <section name="Overview of the Custom Project Directory Structure">
+ <p>      
+ The <b>portal-archetype</b> generates a complete Maven-2 project directory structure for developing
+ a custom Jetspeed portal as well as JSR 168 portlet applications.
+ Here is an overview of directories created by the portal-archetype (directories are relative to the custom portal root):
+ </p>
+ <div>
+<table>
+<tr>
+<td>
+<strong><tt>directory</tt></strong>
+</td>
+<td>
+<strong><tt>explanation</tt></strong>
+</td>
+</tr>
+<tr>
+<td>/applications
+</td>
+<td>conventional subdirectory location for one or more portal application projects
+</td>
+</tr>
+<tr>
+<td>/app-servers
+</td>
+<td>contains portal deployment builds and resources.
+</td>
+</tr>
+<tr>
+<td>/components 
+</td>
+<td>conventional subdirectory for one or more portal component projects 
+</td>
+</tr>
+<tr>
+<td>enterprise
+</td>
+<td>maven-2 build to create an J2EE enterprise archive (EAR) deployable file
+</td>
+</tr>
+<tr>
+<td>etc/assembly
+</td>
+<td>custom portal application component Spring assemblies
+</td>
+</tr>
+<tr>
+<td>etc/conf
+</td>
+<td>portal application context configuration files
+</td>
+</tr>
+<tr>
+<td>etc/decorations
+</td>
+<td>custom decorations in images, layout, and portlet subdirectories
+</td>
+</tr>
+<tr>
+<td>etc/pages
+</td>
+<td>custom portal PSML pages to augment/override minimal defaults, (e.g. /Administrative/**, /default-page.psml, /myaccount.psml, /page.security, and /system/**)
+</td>
+</tr>
+<tr>
+<td>etc/schema
+</td>
+<td>Jetspeed2 database schema definitions
+</td>
+</tr>
+<tr>
+<td>etc/sql
+</td>
+<td>Jetspeed base database configuration scripts
+</td>
+</tr>
+<tr>
+<td>etc/templates
+</td>
+<td>custom overrides for Jetspeed2 layout portlet templates
+</td>
+</tr>
+<tr>
+<td>etc/webapp
+</td>
+<td>
+</td>custom content reaources to be packaged with portal application
+</tr>
+<tr>
+<td>portal
+</td>
+<td>portal application war build scripts and webapp resource overrides
+</td>
+</tr>
+<tr>
+<td>src
+</td>
+<td>these directories are an artifact of archetype expansion and should be deleted
+</td>
+</tr>
+</table>
+</div>
+ </section>
+</body>
+</document>
+

Added: portals/jetspeed-2/trunk/tutorial/xdocs/project-generation.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/trunk/tutorial/xdocs/project-generation.xml?view=auto&rev=492701
==============================================================================
--- portals/jetspeed-2/trunk/tutorial/xdocs/project-generation.xml (added)
+++ portals/jetspeed-2/trunk/tutorial/xdocs/project-generation.xml Thu Jan  4 11:37:33 2007
@@ -0,0 +1,79 @@
+<?xml version="1.0"?>
+<!--
+  Copyright 2004 The Apache Software Foundation
+  
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+  
+  http://www.apache.org/licenses/LICENSE-2.0
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+<document>
+  <properties>
+    <title>Project Generation</title>
+    <subtitle>Project Generation Commands for Maven-2 and Jetspeed</subtitle>
+	<authors>
+		<person name="David Sean Taylor" email="taylor@apache.org" />
+	</authors>
+  </properties>
+  <body>
+ <section name="Project Generation Commands for Maven-2 and Jetspeed">
+ <p>      
+ We support several kinds of project generation commands in the build.
+ These commands are based on <i>Maven Archetypes</i>. The project generation
+ commands create a template for building certain types of Jetspeed projects.
+ The most common archetype is the <i>portal-archetype</i>, which creates a new Jetspeed Custom Portal.
+ The complete list of project generation commands are:
+ </p>
+ <div>
+<table>
+<tr>
+<td>
+<strong><tt>archetypeArtifactId</tt></strong>
+</td>
+<td>
+<strong><tt>explanation</tt></strong>
+</td>
+</tr>
+<tr>
+<td>portal-archetype
+</td>
+<td>Generate a Maven project for a new custom Jetspeed Portal Application
+</td>
+</tr>
+<tr>
+<td>application-archetype
+</td>
+<td>Generate a Maven project for a new JSR 168 Portlet Application 
+</td>
+</tr>
+<tr>
+<td>component-archetype
+</td>
+<td>Generate a Maven project for a new general Java component
+</td>
+</tr>
+<tr>
+<td>shared-component-archetype
+</td>
+<td>Generate a Maven project for a new shared Jetspeed component
+</td>
+</tr>
+<tr>
+<td>portal-component-archetype
+</td>
+<td>Generate a Maven project for a new Jetspeed component (installed in Jetspeed core)
+</td>
+</tr>
+</table>
+</div>
+ </section>
+</body>
+</document>
+



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org