Added: 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/01/run-it.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/01/run-it.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/01/run-it.xml
 (added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/01/run-it.xml
 Thu Jul 16 21:01:09 2015
@@ -0,0 +1,70 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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>Run the Custom Portal</title>
+    <subtitle>Running a Custom Jetspeed Portal</subtitle>
+    <authors>
+      <person name="David Sean Taylor" email="[email protected]" />
+      <person name="Niels van Kampenhout" email="[email protected]" 
/>
+    </authors>
+  </properties>
+  <body>
+    <section name="Running a Custom Jetspeed Portal">
+      <p>
+        In the previous step you <a href="build-it.html">built and 
deployed</a> your portal project.
+        You can now start your application servers and log in to your portal.
+      </p>
+      <p>      
+        To start up the portal, go to the <i>bin</i> directory of your Tomcat 
installation.
+      </p>
+      <p>
+        If you are using a Unix system, run:
+      </p>
+      <source>./catalina.sh run</source>
+      <p>
+        If you are using a Windows system, run:
+      </p>
+      <source>catalina.bat run</source>
+      <p>
+        The first time you run the portal, it's going to take some time to 
start up. Wait for the message that the
+        server has started up, e.g.
+      </p>    
+      <source>INFO: Server startup in 8948 ms</source>
+      <p>
+        Then open up a browser and navigate to <a 
href="http://localhost:8080/jetexpress/portal";>http://localhost:8080/jetexpress/portal</a>.
+      </p>
+      <p>
+        You will see a minimal Jetspeed portal as shown below. Login with the 
credentials <b>admin/admin</b>. You will be prompted
+        to change the admin password. 
+      </p>
+      <a href="../images/01/run-it.png">
+        <img src="../images/01/run-it-small.png" alt="Screenshot of custom 
Jetspeed portal"/>
+      </a>
+    </section>
+    <section name="Next">
+      <p>
+        Now that your portal is up and running, <a 
href="../02/customizing-overview.html">let's start customizing it.</a>
+      </p>
+      <p>
+        <a href="build-it.html">Previous</a> - <a 
href="../02/customizing-overview.html">Next</a>
+      </p>      
+    </section>
+  </body>
+</document>
+

Added: 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/02/customizing-overview.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/02/customizing-overview.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/02/customizing-overview.xml
 (added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/02/customizing-overview.xml
 Thu Jul 16 21:01:09 2015
@@ -0,0 +1,73 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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.
+-->
+<!--
+  status: TODO
+-->
+<document>
+  <properties>
+    <title>Customization</title>
+    <subtitle>Decorator and Theme Customization</subtitle>
+    <authors>
+      <person name="David Sean Taylor" email="[email protected]" />
+      <person name="Niels van Kampenhout" email="[email protected]" 
/>
+    </authors>
+  </properties>
+  <body>
+    <section name="Decorator and Theme Customization">
+      <p> 
+        Now that your custom Jetspeed portal is <a href="../01/run-it.html">up 
and running</a>, let's start customizing the portal design.
+        The portal design, or skins, are known in Jetspeed as <i>decorators 
and themes</i>.
+        With decorators and themes, you can customize the portal experience to 
the branding of your 
+        organization. In this tutorial, we will simply change a few images, 
CSS styles and colors to get 
+        you on your way.
+      </p>
+      <p>
+        It is important to note that all of the changes made in this section 
+        are made in the build environment. The changes we are making here 
could just as easily
+        be made using the portal's live customization features. For example, 
you can drop a decorator
+        or theme into the portal while its running. Jetspeed will pick it up 
automatically. Or, to 
+        customize a page, you can use the portlet customizer or desktop 
customizer, portlet selector,
+        and site manager: all administrative portlets that work on your live 
portal. However, the point of
+        configuring everything in a Maven build is to be able to easily 
reproduce portal environments
+        for development, testing, and new deployments.
+      </p>
+      <p>
+        This section of the tutorial covers customizing:
+      </p>  
+      <ul>
+        <li>
+          Portal Skins (or Decorators). We replace the default logo, colors, 
and page header and footers with our own.
+        </li>
+        <li>
+          Portal Themes. Same as Portal Skins, but themes apply to the 
Jetspeed Desktop.
+        </li>
+        <li>
+          Configuring the default portal page to use these new decorators and 
themes
+        </li>
+      </ul>
+    </section>
+    <section name="Next">
+      <p>
+        Lets get started with <a href="page-decoration.html">customization of 
the default portal page decoration</a>.
+      </p>
+      <p>
+        <a href="../01/run-it.html">Previous</a> - <a 
href="page-decoration.html">Next</a>
+      </p>          
+    </section>
+  </body>
+</document>
\ No newline at end of file

Added: 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/02/default-page.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/02/default-page.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/02/default-page.xml
 (added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/02/default-page.xml
 Thu Jul 16 21:01:09 2015
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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.
+-->
+<!--
+  status: FIXME
+-->
+<document>
+  <properties>
+    <title>Default Page</title>
+    <subtitle>Modifying the Default Page</subtitle>
+    <authors>
+      <person name="David Sean Taylor" email="[email protected]" />
+      <person name="Niels van Kampenhout" email="[email protected]" 
/>
+    </authors>
+  </properties>
+  <body>
+    <section name="Modifying the Default Page">
+      <p> 
+        Now that we have created our decorators<!-- and themes-->, lets put 
them to use on the default page.
+        Open 
<i>jetexpress-portal/src/main/webapp/WEB-INF/pages/default-page.psml</i>.
+        Make the following modifications
+      </p>
+      <ul>
+        <li>for the layout-decorator, replace jetspeed with 
<b>jetexpress</b></li>
+        <li>for the portlet-decorator, replace jetspeed with 
<b>jetexpress</b></li>
+        <!--<li>add a skin default attribute as <b>skin="jetexpress"</b> for 
the desktop theme</li>-->
+      </ul>
+      <source><![CDATA[<page id="default-page">
+  <defaults layout-decorator="jetexpress" 
+            portlet-decorator="jetexpress"]]><!--
+            skin="FIXME"/>--></source>               
+      <p>Go ahead and save that file.</p>  
+    </section>    
+    <section name="Next">
+      <p>
+        You are now ready to <a href="deploy-custom.html">deploy your changes 
to the portal</a>.
+      </p>
+      <p>
+        <a href="desktop-theme.html">Previous</a> - <a 
href="deploy-custom.html">Next</a>
+      </p>          
+    </section>
+  </body>
+</document>
\ No newline at end of file

Added: 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/02/deploy-custom.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/02/deploy-custom.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/02/deploy-custom.xml
 (added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/02/deploy-custom.xml
 Thu Jul 16 21:01:09 2015
@@ -0,0 +1,82 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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.
+-->
+<!--
+     status: IN PROGRESS
+-->
+<document>
+  <properties>
+    <title>Deploying Decorations, Themes and Pages</title>
+    <subtitle>Deploying Decorations, Themes and Pages</subtitle>
+    <authors>
+      <person name="David Sean Taylor" email="[email protected]" />
+      <person name="Niels van Kampenhout" email="[email protected]" 
/>
+    </authors>
+  </properties>
+  <body>
+    <section name="Deploying Decorations, Themes and Pages">
+      <p>
+        In the previous step you <a href="default-page.html">configured the 
default page to use your new decorators</a>.
+        In this step we redeploy the portal so we can admire the result.
+      </p>
+      <p>
+        Stop the Tomcat process by pressing Ctrl + C in the command line 
window where you started it.
+      </p>
+      <p>
+        In your jetexpress project directory, run the following command to 
redeploy the portal in Tomcat:
+      </p>
+      <source>mvn jetspeed:mvn -Dtarget=deploy-portal</source>        
+      <p>      
+        To restart the portal, go to the <i>bin</i> directory of your Tomcat 
installation.
+      </p>
+      <p>
+        If you are using a Unix system, run:
+      </p>
+      <source>./catalina.sh run</source>
+      <p>
+        If you are using a Windows system, run:
+      </p>
+      <source>catalina.bat run</source>
+      <p>
+        Refresh the portal home page, <a 
href="http://localhost:8080/jetexpress/portal";>http://localhost:8080/jetexpress/portal</a>.
+        You should now see a portal with our new custom decorators:
+      </p>  
+      <p>
+        <a href="../images/02/jetexpress-portal.png">
+          <img src="../images/02/jetexpress-portal-small.png"/>
+        </a>
+      </p>
+      <!--
+      <p>
+        and desktop theme:
+      </p>
+      <p>
+        TODO screenshot
+      </p>
+      -->
+    </section>    
+    <section name="Next">
+      <p>
+        Now that your portal is up and running, and you know how to customize 
its look and feel,
+        <a href="../03/overview.html">let's start developing portlets!</a>
+      </p>
+      <p>
+        <a href="default-page.html">Previous</a> - <a 
href="../03/overview.html">Next</a>
+      </p>          
+    </section>
+  </body>
+</document>
\ No newline at end of file

Added: 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/02/desktop-theme.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/02/desktop-theme.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/02/desktop-theme.xml
 (added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/02/desktop-theme.xml
 Thu Jul 16 21:01:09 2015
@@ -0,0 +1,157 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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.
+-->
+<!--
+ status: TODO
+-->
+<document>
+  <properties>
+    <title>Page Themes</title>
+    <subtitle>Desktop Page Themes</subtitle>
+    <authors>
+      <person name="David Sean Taylor" email="[email protected]" />
+    </authors>
+  </properties>
+  <body>
+    <section name="TODO"/>
+    <!--
+    <section name="Desktop Page Themes">
+      <p> 
+        The Jetspeed Desktop has its own kinds of decorations.
+        These decorations are called <b>Desktop Themes</b>
+
+        Each Jetspeed Desktop page can be associated with a different theme. 
Themes
+        control some important aspect of a desktop page:
+      </p>
+      <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>
+      <p>
+        Themes do not control the placement of portlets. That is handled by 
the Jetspeed Desktop engine,
+        which follows the layout plan provided by the stuctured page markup 
(PSML). This is the same
+        layout instructions applied to a portal page. You will see that themes 
are much simpler
+        content than decorators. That is because most of the content in a 
theme is populated by the
+        Jetspeed Desktop engine at runtime.
+        Jetspeed comes with a few desktop themes out of the box. The default 
desktop theme for 
+        most pages is called <i>blue</i>. It looks like this:
+      </p>
+        <img src="../images/theme.png"/>
+      <p>
+        We are going to create a new desktop theme for this tutorial.
+        This new theme can be copied into our project from the 
<i>/JetspeedTutorial/resources/themes/express/</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/desktop-themes/express
+cp -r ../../resources/desktop-themes/express/* 
portal/src/webapp/desktop-themes/express/
+
+# Windows
+cd \JetspeedTraining\workspace\jetexpress
+mkdir portal\src\webapp\desktop-themes\express
+xcopy /s ..\..\resources\desktop-themes\express\* 
portal\src\webapp\desktop-themes\express\
+     ]]>
+      </source>        
+      <subsection name="The Theme template">
+        <p>
+          Have a look at the <i>express</i> theme directory. 
+          Notice that there are two theme files: <i>express.jsp</i> and 
<i>express.vm</i>
+          Since there were so many complaints about no JSP support in 
templates, with the Desktop we 
+          decided to require support for both. The <i>theme.properties</i> 
determines which templates
+          is active. Lets look at the Velocity template. We have macros to 
display-theme relative resources:
+        </p>
+        <source><![CDATA[<img 
src="$jetspeedDesktop.getDesktopThemeResourceUrl('images/logo.gif')" alt="Logo" 
border="0"/>]]></source>
+      </subsection>
+      <subsection name="Theme Variables">    
+        <p>
+          JSP and Velocity make several variables about the context of a theme 
available for dynamic substition of menus and content:
+        </p>
+        <table>
+          <tr>
+            <th>Variable</th>
+            <th>Desc</th>    
+            <th>Usage</th>
+          </tr>
+          <tr>
+            <td>$jetspeedDesktop</td>
+            <td>Retrieve theme resources, and the name of the theme</td>
+            <td>${jetspeedDesktop.getDesktopTheme()</td>
+          </tr>
+        </table>
+      </subsection>
+      <subsection name="Content Divs">   
+        <p>
+          The remainder of the page is HTML DIV markup with special widget 
types and identifiers.
+          The desktop will populate these Divs with various content such as 
the portlets and 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>       
+        <table>
+          <tr>
+            <th>Widget</th>
+            <th>Type</th>
+            <th>Desc</th>
+          </tr>
+          <tr>
+            <td>jetspeed-menu-pages</td>
+            <td>jetspeed:PortalTabContainer</td>
+            <td>relative pages menu of pages in the current folder. Used to 
define the page tabs above the portal.</td>
+          </tr>
+          <tr>
+            <td>jetspeed-menu-breadcrumbs</td>
+            <td>jetspeed:PortalBreadcrumbContainer</td>
+            <td>paths to page used to provide history links below the page 
tabs</td>
+          </tr>
+          <tr>
+            <td>jetspeed-menu-navigations</td>
+            <td>jetspeed:PortalAccordionContainer</td>
+            <td>relative subfolders and root level links menu used to define 
the navigation pane beside the portal.</td>
+          </tr>
+        </table>
+        <p>
+          You can also define your own menus (not covered in this tutorial).
+        </p>
+        <p>
+          Finally, the Div to hold the portlet content must be defined. It is 
just a plain HTML DIV:
+        </p>
+        <source><![CDATA[<div 
class="layout-${jetspeedDesktop.getDesktopTheme()}" 
id="jetspeedDesktop"></div>]]></source>
+        <p>
+          Notice that while decorators require two templates, desktops only 
require one template.
+          This makes for a much simpler page.
+        </p>
+      </subsection>
+    </section>    
+    -->
+    <section name="Next">
+      <p>
+        TODO
+      </p>
+      <p>
+        <a href="portlet-decoration.html">Previous</a> - <a 
href="default-page.html">Next</a>
+      </p>        
+    </section>
+  </body>
+</document>
\ No newline at end of file

Added: 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/02/page-decoration.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/02/page-decoration.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/02/page-decoration.xml
 (added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/02/page-decoration.xml
 Thu Jul 16 21:01:09 2015
@@ -0,0 +1,206 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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.
+-->
+<!--
+ status: IN PROGRESS
+-->
+<document>
+  <properties>
+    <title>Page Decorators</title>
+    <subtitle>Customizing Page Decorators</subtitle>
+    <authors>
+      <person name="David Sean Taylor" email="[email protected]" />
+      <person name="Niels van Kampenhout" email="[email protected]" 
/>
+    </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:
+      </p>
+      <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>
+      <p>
+        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 simply called <i>jetspeed</i>. It looks like this:
+      </p>
+      <img src="../images/02/jetspeed-page-decorator.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>decorations/layout/jetexpress/</i> directory
+        in <a 
href="../downloads/tutorial-resources.zip">tutorial-resources.zip</a>.
+        This will save you the trouble of creating all the logo images and CSS 
definitions.
+      </p>
+      <p>
+        In your project, under <i>jetexpress-portal/src/main/webapp</i>, 
create a directory
+        <i>decorations</i>. Inside it, create a directory <i>layout</i>. From 
jetspeed-tutorial-resources.zip,
+        copy the <i>decorations/layout/jetexpress/</i> directory and all its 
files and subdirectories
+        to <i>jetexpress-portal/src/main/webapp/decorations/layout</i> in your 
project.
+      </p>
+      <subsection name="The Header">
+        <p>
+          Open up the file <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.
+        </p>
+        <p>
+          Scroll down to the banner content (search for <i>&lt;div 
class="header"&gt;</i>). Here we added our new left-hand side logo,
+          consisting of a globe and the text 'jetexpress': 
+        </p>
+        <source><![CDATA[<img src="#GetPageResource('images/earth.jpg')" 
height="28" width="28"/>
+<img src="#GetPageResource('images/jetexpress-logo.gif')" height="28" 
width="131"/>]]></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 
<i>jetexpress</i> decoration folder.
+          Besides the images, the <i>header.vm</i> is pretty much the same as 
the default Jetspeed decorator.
+          In fact we simply copied the default 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 <i>header.vm</i> is HTML markup mixed in with some 
important macros
+          for displaying <i>Jetspeed Menus</i>. Jetspeed Menus are built 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 <i>$site</i> always has the following menus available to you at 
any time:
+        </p>
+        <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>
+        <p>
+          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:
+        </p>
+        <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>
+          As you can see in <i>header.vm</i>, we get 
<i>$site.getMenu("navigations")</i> and
+          display a nested top-to-bottom menu navigation through the 
<i>#includeLinksWithIconNavigation</i>
+          macro:
+        </p>
+        <source><![CDATA[
+<!-- Left Navigations Menu Table Data -->
+#set($navigationsStandardMenu = $site.getMenu("navigations"))
+
+#if(!$navigationsStandardMenu.empty)
+<td valign="top" id="leftcol" >
+    <div id="navcolumn">
+        <table cellpadding="0" cellspacing="4" border="0" width="100%">
+            #includeLinksWithIconNavigation($navigationsStandardMenu 
$TOP_TO_BOTTOM)
+        </table>
+    </div>
+</td>
+#end]]></source>
+      </subsection>           
+      <subsection name="The Footer">
+        <p>
+          Open up <i>decorations/layout/jetexpress/footer.vm</i>. Here you can 
see the "Powered by Jetspeed" logo
+          displayed in the page footer:
+        </p>
+        <source><![CDATA[<img 
src="#GetPageResource('images/Jetspeed_blue_sm.png')" alt="Jetspeed 2 Powered" 
border="0" />]]></source>        
+      </subsection>    
+    </section>
+    <section name="Next">
+      <p>
+        Now that you have a general idea of what the page decorator does, and 
how you can customize it,
+        let's have a look at how individual portlets are styled using 
+        <a href="portlet-decoration.html">portlet decorators.</a>
+      </p>
+      <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/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/02/portlet-decoration.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/02/portlet-decoration.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/02/portlet-decoration.xml
 (added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/02/portlet-decoration.xml
 Thu Jul 16 21:01:09 2015
@@ -0,0 +1,82 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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 Portlet Decorators</subtitle>
+    <authors>
+      <person name="David Sean Taylor" email="[email protected]" />
+      <person name="Niels van Kampenhout" email="[email protected]" 
/>
+    </authors>
+  </properties>
+  <body>
+    <section name="Portlet Decorators">
+      <p>
+        In the previous step we covered <a 
href="page-decoration.html">decorating page elements</a> such as the page 
header and footer,
+        and the menus. In this step we look at decorating individual portlets.
+      </p>
+      <p> 
+        Each Jetspeed portlet window on a page can be associated with a 
different portlet decoration. 
+        Portlet decorations control some important aspects of a portlet window:
+      </p>
+      <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>      
+      <p>
+        Jetspeed comes with several portlet decorations out of the box. The 
default page decorator for 
+        most pages is simply called <i>jetspeed</i>. It looks like this:
+      </p>
+      <p>
+      <p>
+        <img src="../images/02/jetspeed-portlet.png"/>
+      </p>
+      </p>
+      <p>
+        We are going to create a new decorator for this tutorial.
+        This new decorator can be copied into our project from the 
<i>decorations/portlet/jetexpress/</i> directory
+        in <a 
href="../downloads/tutorial-resources.zip">tutorial-resources.zip</a>.
+        This will save you the trouble of creating all the logo images and CSS 
definitions.
+      </p>
+      <p>
+        In your project, under 
<i>jetexpress-portal/src/main/webapp/decorations</i>, create a directory
+        <i>portlet</i>. From jetspeed-tutorial-resources.zip,
+        copy the <i>decorations/portlet/jetexpress/</i> directory and all its 
files and subdirectories
+        to <i>jetexpress-portal/src/main/webapp/decorations/portlet</i> in 
your project.
+      </p>
+      <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>        
+    </section>    
+    <section name="Next">
+      <p>
+        Now that you have a general idea of what a portlet decorator does, and 
how you can customize it,
+        let's have a look at <a href="desktop-theme.html">desktop themes</a>. 
+      </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/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/03/eclipse.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/03/eclipse.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/03/eclipse.xml
 (added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/03/eclipse.xml
 Thu Jul 16 21:01:09 2015
@@ -0,0 +1,71 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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="[email protected]" />
+      <person name="Niels van Kampenhout" email="[email protected]" 
/>
+    </authors>
+  </properties>
+  <body>
+    <section name="Eclipse Integration">
+      <p> 
+        Before getting started developing portlets, let's get Eclipse setup.
+        Maven 2 can create Eclipse project and classpath files from the 
project POMs,
+        automatically bringing in all dependencies. In the <i>jetexpress</i> 
project directory,
+        run the following Maven command:
+      </p>
+      <source>mvn eclipse:eclipse</source>
+      <p>
+        Since the project is a multi-module project, Maven will generate two 
project: one for each
+        submodule. There will be no Eclipse project for the root POM, since it 
does not
+        produce any artifact.
+      </p>
+      <p>
+        Now import the new projects. From the Eclipse menu, select 
<i>File->Import</i>, then 
+        <i>Existing Projects into Workspace</i>, and browse to your 
<i>jetexpress</i> directory:
+      </p>
+      <p>
+        <img src="../images/03/import-project.png"/>
+      </p>
+      <p>
+        Two project will show up in the list: <i>jetexpress-pa</i> and 
<i>jetexpress-portal</i>.
+        Import both projects.
+      </p>
+      <p>
+        <img src="../images/03/import-project2.png"/>
+      </p>
+      <p>
+        Next, set up a classpath variable to point at your local Maven 
repository, effectively resolving the jars for Eclipse.
+        In Eclipse, go to <i>Window->Preferences->Java->Build Path->Classpath 
Variables->New</i> and enter the location
+        of your local Maven repository (typically this is inside a <i>.m2</i> 
directory in your user home/profile directory.
+      </p>
+      <img src="../images/03/eclipse-classpath.png"/>
+    </section>
+    <section name="Next">
+      <p>
+        You are now ready to start developing with Eclipse, and <a 
href="hello.html">create your first portlet!</a> 
+      </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/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/03/hello.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/03/hello.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/03/hello.xml 
(added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/03/hello.xml 
Thu Jul 16 21:01:09 2015
@@ -0,0 +1,92 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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="[email protected]" />
+      <person name="Niels van Kampenhout" email="[email protected]" 
/>
+       </authors>
+  </properties>
+  <body>
+    <section name="Hello World Portlet">
+      <p>
+        Now that you have <a href="eclipse.html">set up Eclipse</a>, create a 
portlet in the Eclipse Java perspective.    
+        Go to the <i>jetexpress-pa</i> project, click on the 
<i>org.apache.portals.tutorials</i> package,
+        and create a new Java class <i>BonjourMonde</i>:
+      </p>
+      <img src="../images/03/new-portlet.png"/>
+      <p>
+        You will see a new portlet in Eclipse named BonjourMonde.
+        Go ahead and implement the following methods:  
+      </p>
+      <img src="../images/03/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[@Override
+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.
+      </p>
+      <p>
+        Now lets edit the file <i>portlet.xml</i> (located in 
<i>src/main/webapp/WEB-INF</i>),
+        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>org.apache.portals.tutorials.BonjourMonde</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>     
+    </section>
+    <section name="Next">
+      <p>
+        Now that you have created a new portlet, <a 
href="tutorial-psml.html">let's add a page to hold that portlet.</a>
+      </p>
+      <p>
+        <a href="eclipse.html">Previous</a> - <a 
href="tutorial-psml.html">Next</a>
+      </p>            
+    </section>
+  </body>
+</document>

Added: 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/03/overview.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/03/overview.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/03/overview.xml
 (added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/03/overview.xml
 Thu Jul 16 21:01:09 2015
@@ -0,0 +1,47 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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="[email protected]" />
+      <person name="Niels van Kampenhout" email="[email protected]" 
/>
+    </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>  
+      <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>JSP Portlet: writing portlets in JSP using the Portlet API tag 
library.</li>
+      </ul>     
+    </section>
+       <section name="Next">
+         <p>
+           Before you start developing portlets, <a href="eclipse.html">set up 
your Eclipse development environment</a>.
+         </p>
+         <p>
+           <a href="../02/deploy-custom.html">Previous</a> - <a 
href="eclipse.html">Next</a>
+         </p>                 
+       </section>
+  </body>
+</document>
\ No newline at end of file

Added: 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/03/taglib.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/03/taglib.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/03/taglib.xml
 (added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/03/taglib.xml
 Thu Jul 16 21:01:09 2015
@@ -0,0 +1,172 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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="[email protected]" />
+      <person name="Niels van Kampenhout" email="[email protected]" 
/>
+    </authors>
+  </properties>
+  <body>
+    <section name="JSP and Portlet API Taglib">
+      <p>
+        Now that you have <a href="tutorial-psml.html">successfully created 
your first portlet</a>, let's create another one.
+        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>jetexpress-pa</i> project, browse to the 
<i>src/webapp/WEB-INF/</i> directory,
+        and create a new subdirectory here called <i>view</i>. In the 
<i>view</i> directory,
+        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="http://java.sun.com/portlet"; prefix="portlet" %>
+<%@ taglib uri="http://java.sun.com/jsp/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 
<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:
+      </p>
+      <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>
+        Here is the portlet definition for our JSP portlet. Add it to the file 
<i>portlet.xml</i>
+        in the directory <i>src/main/webapp/WEB-INF/</i> in the 
<i>jetexpress-pa</i> project.
+        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>
+        To use the JSP portlet, add it to the tutorial page we created in the 
previous step.
+        Add this portlet window fragment to the tutorial default page, 
directly underneath the BonjourMonde fragment:
+      </p>
+      <source><![CDATA[<fragment id="express-102" type="portlet" 
name="jetexpress-pa::TutorialPortlet2"/>]]></source>
+      <p>Stop Tomcat by pressing Ctrl + C in the console window where it is 
running.</p>
+      <p>
+        And then deploy your changes from the jetexpress project directory:
+      </p>
+      <source>mvn jetspeed:mvn -Dtarget=deploy-portal
+mvn jetspeed:mvn -Dtarget=deploy-pa</source>
+      <p>
+        Finally restart Tomcat from the bin directory:
+      </p>
+      <p>
+        If you are using Unix:
+      </p>
+      <source>./catalina.sh run</source>
+      <p>
+        If you are using Windows:
+      </p>
+      <source>catalina.bat run</source>
+      <p>
+        The new portlet should now be on the tutorial page in your portal:
+      </p>
+      <img src="../images/03/jsp-portlet.png" alt="The JSP portlet running in 
the portal" />
+    </section>
+    <section name="Next">
+      <p>
+        Now that you know how to develop portlets, you are ready to learn <a 
href="../04/jetspeed-service.html">how to use Jetspeed Services
+        in your portlet application.</a>
+      </p>
+      <p>
+        <a href="tutorial-psml.html">Previous</a> - <a 
href="../04/jetspeed-service.html">Next</a>
+      </p>            
+    </section>
+  </body>
+</document>
+

Added: 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/03/tutorial-psml.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/03/tutorial-psml.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/03/tutorial-psml.xml
 (added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/03/tutorial-psml.xml
 Thu Jul 16 21:01:09 2015
@@ -0,0 +1,83 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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="[email protected]" />
+      <person name="Niels van Kampenhout" email="[email protected]" 
/>
+    </authors>
+  </properties>
+  <body>
+    <section name="Adding a Page for the Tutorial Portlets">
+      <p>
+        Now that you have <a href="hello.html">created a new portlet</a>, 
let's add a page to hold that portlet.
+        In the <b>jetexpress-portal</b> project, add a folder to the root of 
our site named
+        <i>src/main/webapp/WEB-INF/pages/tutorial/</i>. In addition to 
creating the folder,
+        you will need to create a <i>folder.metadata</i> file:
+      </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 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[<?xml version="1.0" encoding="UTF-8"?>
+<page>
+  <defaults layout-decorator="jetexpress" 
+            portlet-decorator="jetexpress"
+            skin="jetexpress"/>
+  <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="jetexpress-pa::BonjourMonde"/>
+  </fragment>
+</page>]]></source>   
+      <p>
+        Stop Tomcat and deploy your portlet and the new pages:
+      </p>
+      <source><![CDATA[mvn jetspeed:mvn -Dtarget=deploy-pa
+mvn jetspeed:mvn -Dtarget=deploy-portal]]></source>     
+      <p>
+        After you restart Tomcat and log in to the portal, you will see the 
new tutorial page
+        in the left menu:
+      </p>
+      <img src="../images/03/menu-tutorial.png"/>
+      <p>
+        Click on the tutorial link to see the new page with the BonjourMonde 
portlet:
+      </p>
+      <img src="../images/03/bonjourmonde-portlet.png"/>
+    </section>
+    <section name="Next">
+      <p>
+        TODO
+      </p>
+      <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/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/04/jetspeed-service.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/04/jetspeed-service.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/04/jetspeed-service.xml
 (added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/04/jetspeed-service.xml
 Thu Jul 16 21:01:09 2015
@@ -0,0 +1,304 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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="[email protected]" />
+      <person name="Niels van Kampenhout" email="[email protected]" 
/>
+    </authors>
+  </properties>
+  <body>
+    <section name="Jetspeed Services">
+      <p>
+        This tutorial shows you how to use Jetspeed Services from the 
Jetexpress Portlet Application. 
+        Please note that all edits, unless explicity specified otherwise, are 
applied to the jetexpress-pa source tree.
+        You will learn how to:
+      </p>
+      <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>
+      <p>
+        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>org.apache.portals.tutorials.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.
+        Create a file <i>jetspeed-portlet.xml</i> in 
<i>src/main/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[<?xml version="1.0" encoding="UTF-8"?>
+<portlet-app id="jetexpress-pa" version="1.0"
+    xmlns="http://portals.apache.org/jetspeed";
+    xmlns:js="http://portals.apache.org/jetspeed";
+    xmlns:dc="http://www.purl.org/dc";
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+    xsi:schemaLocation="http://portals.apache.org/jetspeed 
http://portals.apache.org/jetspeed-2/2.1/schemas/jetspeed-portlet.xsd";>
+    
+    <js:services>        
+        <js:service name='GroupManager'/>    
+        <js:service name='PageManager'/>    
+        <js:service name='PortalAdministration'/>        
+        <js:service name='PortletRegistryComponent'/>
+        <js:service name='RoleManager'/>   
+        <js:service name='UserManager'/>        
+    </js:services>
+    
+</portlet-app>]]></source>              
+      <p>
+        Create a new JSP page named <i>services-tutorial.jsp</i> in the 
<i>src/main/webapp/WEB-INF/view/</i> directory.
+        Enter the following code:
+      </p>
+      <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/jsp/jstl/core"; prefix='c'%>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"; prefix='c'%>
+
+<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>                
+      <ul>
+        <li>
+          Create a portlet in the <i>org.apache.portals.tutorials</i> 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>
+        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 class imports.
+      </p>
+      <p>
+        Implement the init(PortletConfig config) method:
+      </p>
+      <source><![CDATA[    @Override
+    public void init(PortletConfig config) throws PortletException {
+        super.init(config);
+        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>
+        Finally implement the undefined methods using the Jetspeed Services:
+      </p>
+      <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>
+    </section>
+    <section name="The End">
+      <p>
+        <a href="../03/taglib.html">Previous</a> 
+      </p>       
+    </section>
+  </body>
+</document>
+

Added: 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/before-you-start.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/before-you-start.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/before-you-start.xml
 (added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/before-you-start.xml
 Thu Jul 16 21:01:09 2015
@@ -0,0 +1,98 @@
+<?xml version="1.0"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You 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.
+-->
+<!--
+  status: IN PROGRESS
+  -->
+<document>
+    <properties>
+        <title>Before you start</title>
+        <authors>
+            <person name="Niels van Kampenhout" 
email="[email protected]" />
+        </authors>
+    </properties>
+    <body>
+        <section name="Before you start">
+            <p>
+                Before you <a href="01/genapp.html">start the tutorial</a>, 
you might want to read
+                some more information on the tools we use.
+            </p>
+            <subsection name="Maven">
+                <p>
+                    <a href="http://maven.apache.org/";>Apache Maven</a> is a 
"software project management
+                    and comprehension tool". In this tutorial we use it to 
manage the portal build
+                    and deployment.
+                </p>
+                <p>
+                    Technically it is not required to use Maven to build a 
custom Jetspeed portal.
+                    But it gives you much more control over your build, 
dependency and release
+                    management, and generally makes your life easier.
+                </p>
+                <p>
+                    You will need Maven version 2.0.9 or newer.
+                </p>
+            </subsection>
+            <subsection name="Tomcat">
+                <p>
+                    <a href="http://tomcat.apache.org/";>Apache Tomcat</a> is 
an 
+                    application server. You need to install it on your system. 
Generally this
+                    involves nothing more than downloading and unzipping the 
Tomcat
+                    distribution in a location of your choice.
+                </p>
+                <p>
+                    Jetspeed can be deployed in other application servers, 
such as Websphere, but
+                    in this tutorial we use Tomcat.
+                </p>
+                <p>
+                    You will need Tomcat version 6.0.33 or newer.
+                </p>
+            </subsection>
+            <subsection name="Derby">
+                <p>
+                    <a href="http://db.apache.org/derby/";>Apache Derby</a> is 
a lightweight
+                    relational database.
+                </p>
+                <p>
+                    You do not need to install Derby, it is embedded in the 
Jetspeed portal and is
+                    automatically set up and populated.
+                </p>
+                <p>
+                    Jetspeed supports other databases, such as MySQL or 
Oracle, but in this tutorial we
+                    assume you use Derby.
+                </p>
+            </subsection>
+            <subsection name="Eclipse">
+                <p>
+                    <a href="http://www.eclipse.org/";>Eclipse</a> is an 
integrated development environment
+                    for Java. The use of an IDE is highly recommended as it 
speeds up development,
+                    compiling and debugging.
+                </p>
+                <p>
+                    We used Eclipse 3.4.1 when writing this tutorial.
+                </p>
+            </subsection>
+        </section>
+        <section name="Next">
+            <p>
+                You are now ready to <a href="01/genapp.html">start the 
tutorial!</a>
+            </p>
+            <p>
+                <a href="index.html">Previous</a> - <a 
href="01/genapp.html">Next</a>
+            </p>
+        </section>
+    </body>
+</document>
\ No newline at end of file

Added: 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/index.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/index.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/index.xml 
(added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/index.xml 
Thu Jul 16 21:01:09 2015
@@ -0,0 +1,80 @@
+<?xml version="1.0"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements. See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You 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="[email protected]" />
+      <person name="Niels van Kampenhout" email="[email protected]" 
/>
+    </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><a href="http://java.sun.com/javase/downloads/index.jsp";>Java 
Development Kit</a> 1.5 or higher</li>
+          <li><a href="http://tomcat.apache.org/";>Apache Tomcat</a> 6.0.33 or 
higher</li>
+          <li><a href="http://maven.apache.org/";>Maven</a> 2.2.1 or 
higher</li>  
+          <li>An internet connection so that Maven can download plugins and 
dependencies</li>
+          <li>Jetspeed-2 tutorial resources <a 
href="downloads/tutorial-resources.zip">download</a></li>
+        </ul>
+        <p>
+          In the tutorial we assume you are using <a 
href="http://www.eclipse.org/";>Eclipse</a>, but you can use any other Java IDE.
+          Of course you can also use your favorite text editor and command 
line tools combo, but an IDE is highly recommended. 
+        </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>
+      </subsection>
+      -->
+    </section>
+    <section name="Next">
+      <p>
+        Before you start the tutorial, <a href="before-you-start.html">you 
might want to read some more
+        information on the tools we are going to use.</a> 
+      </p>
+      <p>
+        Or you can skip the extra info and <a href='01/genapp.html'>start the 
tutorial.</a>
+      </p>
+    </section>
+  </body>
+</document>
\ No newline at end of file

Added: 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/reference/build-commands.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/reference/build-commands.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/reference/build-commands.xml
 (added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-tutorial/src/site/xdoc/reference/build-commands.xml
 Thu Jul 16 21:01:09 2015
@@ -0,0 +1,92 @@
+<?xml version="1.0"?>
+<!--
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You 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>
+    </properties>
+    <body>
+        <section name="Build Commands for Maven-2 and Jetspeed">
+            <p>
+                The custom portal project <a 
href="../01/genapp.html">generated by the Jetspeed Archetype</a> provides the
+                following Maven build commands. All build commands must be run 
from the project root directory.
+            </p>
+            <table>
+                <thead>
+                    <tr>
+                        <th>Target</th>
+                        <th>Example command</th>
+                        <th>Description</th>
+                    </tr>
+                </thead>
+                <tbody>
+                    <tr>
+                        <td>install-pa</td>
+                        <td><code>mvn jetspeed:mvn 
-Dtarget=install-pa</code></td>
+                        <td>Cleans and builds the portlet application 
subproject.</td>
+                    </tr>
+                    <tr>
+                        <td>install-portal</td>
+                        <td><code>mvn jetspeed:mvn 
-Dtarget=install-portal</code></td>
+                        <td>Cleans and builds the portal application 
subproject</td>
+                    </tr>
+                    <tr>
+                        <td>install</td>
+                        <td><code>mvn jetspeed:mvn -Dtarget=install</code></td>
+                        <td>Does `install-pa' and `install-portal'.</td>
+                    </tr>
+                    <tr>
+                        <td>db</td>
+                        <td><code>mvn jetspeed:mvn -Dtarget=db</code></td>
+                        <td>Initializes the database and seed the initial data 
for your custom portal.</td>
+                    </tr>
+                    <tr>
+                        <td>portal-seed</td>
+                        <td><code>mvn jetspeed:mvn 
-Dtarget=portal-seed</code></td>
+                        <td>Just seeds the initial data for your custom portal 
without initializing the database.</td>
+                    </tr>
+                    <tr>
+                        <td>deploy-pa</td>
+                        <td><code>mvn jetspeed:mvn 
-Dtarget=deploy-pa</code></td>
+                        <td>Deploys your custom portlet application.</td>
+                    </tr>
+                    <tr>
+                        <td>deploy-portal</td>
+                        <td><code>mvn jetspeed:mvn 
-Dtarget=deploy-portal</code></td>
+                        <td>Deploys your custom portal.</td>
+                    </tr>
+                    <tr>
+                        <td>portal-seed-dbpsml</td>
+                        <td><code>mvn jetspeed:mvn 
-Dtarget=portal-seed-dbpsml</code></td>
+                        <td>Seeds database-based pages data for your custom 
portal application.</td>
+                    </tr>
+                    <tr>
+                        <td>deploy-portal-dbpsml</td>
+                        <td><code>mvn jetspeed:mvn 
-Dtarget=deploy-portal-dbpsml</code></td>
+                        <td>Deploys your custom portal with seeding 
database-based pages data.</td>
+                    </tr>
+                    <tr>
+                        <td>all</td>
+                        <td><code>mvn jetspeed:mvn -Dtarget=all</code></td>
+                        <td>Installs and deploys your custom portal and custom 
portlet application, initializes and seeds the database.</td>
+                    </tr>
+                </tbody>
+            </table>
+        </section>
+    </body>
+</document>
+


Reply via email to