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 <supports> 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><portlet:renderURL></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><portlet:actionURL></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><portlet:defineObjects></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 <js:services> 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