Added: 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-ajax-api.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-ajax-api.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-ajax-api.xml
 (added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-ajax-api.xml
 Thu Jul 16 21:01:09 2015
@@ -0,0 +1,1096 @@
+<?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>AJAX XML API</title>
+    <subtitle>Documentation for Jetspeed-2 AJAX XML API</subtitle>
+    <authors>
+      <person name="David Sean Taylor" email="[email protected]"/>
+    </authors>
+  </properties>
+  <body>
+<section name="AJAX XML API Overview">
+<p>
+The Jetspeed XML AJAX API is an XML-based API provided to AJAX clients for 
making
+asynchronous requests to Jetspeed-2 services. </p>
+<p>
+Typical use cases:
+</p>
+<ul>
+    <li><b>Page Customization and Portlet Placement</b> - To move, copy, add, 
or remove portlets on a page</li>
+    <li><b>Layout Selection</b> - change the layout (number of rows and 
columns, size of columns) on a page</li>
+    <li><b>Theme and Decorator Selection</b> - change the page theme and 
portlet decorators on a page.</li>
+    <li><b>Portlet Selectors</b> - provide a select-list of portlets to the 
end user</li>
+    <li><b>Security Configuration</b> - configure the security constraints or 
policy on a resource (page, portlet, folder, link, fragment), or portal 
wide</li>
+    <li><b>Menu Configuration</b> - create and edit menus for the Jetspeed 
Site</li>                   
+       <li><b>General Administration</b> - all use cases for general 
administration have not yet been explored.</li>
+</ul>
+<subsection name='Secured Access'>
+<p>
+All AJAX XML API requests run through
+a standard Jetspeed <a href='guide-pipeline.html'>Pipeline</a> request. This 
means that you can configure your AJAX
+request with the usual array of Jetspeed components. The default AJAX pipeline 
secures
+access to all requests. Each AJAX action may have its own security 
constraints. All
+requests made to a page will use the declarative security constraints 
configured for that page.
+AJAX request actions are enforced under edit or view mode, depending on the 
nature of the action.
+</p>
+</subsection>          
+</section>       
+<section name='API'>
+<p>
+The AJAX XML API is simply a HTTP request-based API, communicating over a 
simple REST (Representational State Transfer) protocol.      
+The API is accessed over HTTP via the "ajaxapi" servlet path on the portal URL:
+<source><![CDATA[
+http://hostname/contextname/ajaxapi
+]]></source>
+</p>
+<subsection name='Request Parameters and the Page'>    
+<p>Request Parameters specify the requested API action, and additional API 
parameters.
+The page that a request is referencing is implied in the HTTP URL.
+Thus if we are making a request to modify a page, the page is specified in the 
HTTP URL:
+<source><![CDATA[
+http://localhost:8080/jetspeed/ajaxapi/Public/db-browser.psml
+]]></source>
+The page location algorithm using standard Jetspeed Profiling rules to locate 
the page.
+A page is actually not required in the URL, since the <a 
href='guide-profiler.html'>Jetspeed Profiler</a> will locate the page
+for you. Example:
+<source><![CDATA[
+http://localhost:8080/jetspeed/ajaxapi
+]]></source>
+goes to the default page for the current user.
+</p>   
+<p>Request Parameters are specific to each API. One request parameter, the 
"action" parameter,
+ is almost always required, (except in the default case). The default action 
is "action=getpage"
+which returns an XML representation of the profile-located page in <a 
href='guide-psml.html'>PSML</a>. (PSML is an XML format).
+See the table below for specific examples of request parameters.
+</p>           
+<p>Here are the APIs currently available:
+</p>           
+</subsection>
+<subsection name='Get Page'>
+<table>        
+    <tr>
+        <td>API:</td>
+        <td>getpage</td>
+    </tr>
+    <tr>
+        <td>Component:</td>
+        <td>AjaxGetPage</td>
+    </tr>
+    <tr>
+        <td>Description:</td>
+        <td>Get Page retrieves a page from the Page Manager store in <a 
href='guide-psml.html'>PSML</a> format.                        
+               </td>
+    </tr>
+    <tr>
+        <td>Parameters:</td>
+        <table>
+                       <tr>
+                               <td>page</td>
+                               <td>implied in the URL</td>                     
        
+                       </tr>
+                       <tr>
+                               <td>action</td>
+                               <td>getportlets (optional, this is the default 
action)</td>                             
+                       </tr>                   
+               </table>
+    </tr>
+    <tr>
+        <td>API example:</td>
+               <td>
+<source><![CDATA[                      
+http://localhost:8080/jetspeed/ajaxapi/Public/content.psml
+]]></source>                   
+               </td>    
+       </tr>
+    <tr>
+        <td>XML Response:</td>
+               <td>
+<source><![CDATA[
+<js>
+<status>success</status>
+<action>getpage</action>
+  <page hidden="false">
+  <defaults layout-decorator="tigris" portlet-decorator="tigris"/>
+  <name>public.psml</name>
+  <path>/Public/public.psml</path>
+  <title>Public Share</title>
+  <short-title>Public Share</short-title>
+  <metadata name="title" xml:lang="es">Carpeta compartida</metadata>
+  <fragment id="ps-1000" type="layout" 
name="jetspeed-layouts::VelocityTwoColumns" decorator="">
+    <fragment id="ps-1001" type="portlet" name="rss::RSS" decorator="">
+      <property name="row" value="0"/>
+      <property name="column" value="0"/>
+    </fragment>
+       <fragment id="ps-1002" type="portlet" name="demo::BookmarkPortlet" 
decorator="">
+      <property name="row" value="1"/>
+      <property name="column" value="1"/>
+    </fragment>
+       <fragment id="ps-1003" type="portlet" name="jsf-demo::CalendarPortlet" 
decorator="">
+      <property name="row" value="0"/>
+      <property name="column" value="1"/>
+    </fragment>
+       <fragment id="P-1080bff9b03-10000" type="portlet" 
name="jsf-demo::CalendarPortlet" decorator="">
+      <property name="row" value="1"/>
+      <property name="column" value="0"/>
+    </fragment>
+  </fragment>
+</page>
+</js>
+]]></source>
+                       
+               </td>    
+       </tr>
+</table>
+</subsection>
+<subsection name='Move Absolute'>
+<table>                
+    <tr>
+        <td>API:</td>
+        <td>moveabs</td>
+    </tr>
+    <tr>
+        <td>Component:</td>
+        <td>AjaxMovePortletAbsolute</td>
+    </tr>
+    <tr>
+        <td>Description:</td>
+        <td>Move a portlet on a page to an absolute position specified in the 
row and col request parameters.</td>
+    </tr>
+    <tr>
+        <td>Parameters:</td>
+        <table>
+                       <tr>
+                               <td>page</td>
+                               <td>implied in the URL</td>                     
        
+                       </tr>
+                       <tr>
+                               <td>action</td>
+                               <td>moveabs</td>                                
+                       </tr>                   
+                       <tr>
+                               <td>id</td>
+                               <td>the portlet PSML fragment id of the portlet 
to be moved</td>                                
+                       </tr>                   
+                       <tr>
+                               <td>row</td>
+                               <td>the absolute new row location to place the 
portlet fragment (zero based)</td>                               
+                       </tr>                                           
+                       <tr>
+                               <td>col</td>
+                               <td>the absolute new column location to place 
the portlet fragment (zero based)</td>                            
+                       </tr>                                                   
                
+               </table>
+    </tr>
+    <tr>
+        <td>API example:</td>
+               <td>
+<source><![CDATA[                      
+http://localhost:8080/jetspeed/ajaxapi/Public/public.psml?action=moveabs&id=ps-1003&row=0&col=1
                        
+]]></source>                   
+               </td>    
+       </tr>
+    <tr>
+        <td>XML Response:</td>
+               <td>
+<source><![CDATA[
+<js>
+   <status>success</status>
+    <action>moveabs</action>
+    <id>ps-1003</id>
+       <old_position>
+      <col>1</col>
+      <row>1</row>
+    </old_position>
+       <new_position>
+      <col>1</col>
+      <row>0</row>
+    </new_position>
+</js>                                          
+]]></source>
+                       
+               </td>    
+       </tr>
+</table>
+</subsection>
+<subsection name='Move Relative'>
+<table>                
+    <tr>
+        <td>APIs:</td>
+        <td>moveleft, moveright, moveup, movedown</td>
+    </tr>
+    <tr>
+        <td>Components:</td>
+        <td>AjaxMovePortletLeft, AjaxMovePortletRight, AjaxMovePortletUp, 
AjaxMoveDown</td>
+    </tr>
+    <tr>
+        <td>Description:</td>
+        <td>Move a portlet on a page relatively one position, based on the 
action.</td>
+    </tr>
+    <tr>
+        <td>Parameters:</td>
+        <table>
+                       <tr>
+                               <td>page</td>
+                               <td>implied in the URL</td>                     
        
+                       </tr>
+                       <tr>
+                               <td>action</td>
+                               <td>moveleft, moveright, moveup, movedown</td>  
                        
+                       </tr>                   
+                       <tr>
+                               <td>id</td>
+                               <td>the portlet PSML fragment id of the portlet 
to be moved</td>                                
+                       </tr>                   
+               </table>
+    </tr>
+    <tr>
+        <td>API example:</td>
+               <td>
+<source><![CDATA[                      
+http://localhost:8080/jetspeed/ajaxapi/Public/public.psml?action=movedown&id=ps-1003
+]]></source>                   
+               </td>    
+       </tr>
+    <tr>
+        <td>XML Response:</td>
+               <td>
+<source><![CDATA[
+<js>
+   <status>success</status>
+    <action>movedown</action>
+    <id>ps-1003</id>
+       <old_position>
+      <col>1</col>
+      <row>0</row>
+    </old_position>
+       <new_position>
+      <col>1</col>
+      <row>1</row>
+    </new_position>
+</js>                                          
+]]></source>
+                       
+               </td>    
+       </tr>
+
+</table>
+</subsection>
+<subsection name='Move'>
+<table>                
+    <tr>
+        <td>API:</td>
+        <td>move</td>
+    </tr>
+    <tr>
+        <td>Component:</td>
+        <td>AjaxMovePortlet</td>
+    </tr>
+    <tr>
+        <td>Description:</td>
+        <td>Move a portlet on a page to a cartesian position 
(x,y,z,width,height) from request parameters.</td>
+    </tr>
+    <tr>
+        <td>Parameters:</td>
+        <table>
+                       <tr>
+                               <td>page</td>
+                               <td>implied in the URL</td>                     
        
+                       </tr>
+                       <tr>
+                               <td>action</td>
+                               <td>move</td>                           
+                       </tr>                   
+                       <tr>
+                               <td>id</td>
+                               <td>the portlet PSML fragment id of the portlet 
to be moved</td>                                
+                       </tr>                   
+                       <tr>
+                               <td>x</td>
+                               <td>the portlet cartesian X position</td>       
                        
+                       </tr>                                           
+                       <tr>
+                               <td>y</td>
+                               <td>the portlet cartesian Y position</td>       
                        
+                       </tr>
+                       <tr>
+                               <td>z</td>
+                               <td>the portlte cartesian Z position</td>       
                        
+                       </tr>
+                       <tr>
+                               <td>width</td>
+                               <td>the width of the portlet</td>               
                
+                       </tr>
+                       <tr>
+                               <td>height</td>
+                               <td>the height cartesian Y position</td>        
                        
+                       </tr>                                                   
                                
+               </table>
+    </tr>
+    <tr>
+        <td>API example:</td>
+               <td>
+<source><![CDATA[                      
+http://localhost:8080/jetspeed/ajaxapi/Public/public.psml?action=move&id=ps-1003&x=100&y=250&width=200&height=300
                      
+]]></source>                   
+               </td>    
+       </tr>
+    <tr>
+        <td>XML Response:</td>
+               <td>
+<source><![CDATA[
+<js>
+   <status>success</status>
+    <action>move</action>
+    <id>ps-1003</id>
+       <old_position>
+      <x>50</x>
+      <y>155</row>
+    </old_position>
+       <new_position>
+      <x>100</x>
+      <y>250</y>
+    </new_position>
+</js>                                          
+]]></source>                   
+               </td>    
+       </tr>
+</table>
+</subsection>    
+<subsection name='Add Portlet'>
+<table>                        
+    <tr>
+        <td>API:</td>
+        <td>add</td>
+    </tr>
+    <tr>
+        <td>Component:</td>
+        <td>AjaxAddPortlet</td>
+    </tr>
+    <tr>
+        <td>Description:</td>
+        <td>Adds a new portlet to the current page. The portlet can be added 
at a specified row and column.
+                   If either the row or column or not specified, defaults to 
zero respectively.</td>
+    </tr>
+    <tr>
+        <td>Parameters:</td>
+        <table>
+                       <tr>
+                               <td>page</td>
+                               <td>implied in the URL</td>                     
        
+                       </tr>
+                       <tr>
+                               <td>action</td>
+                               <td>add</td>                            
+                       </tr>                   
+                       <tr>
+                               <td>id</td>
+                               <td>The portlet full name to be placed on the 
page, using Jetspeed Portlet Naming (PortletApplicationName::PortletName)</td>  
                          
+                       </tr>                   
+                       <tr>
+                               <td>row</td>
+                               <td>optional: the absolute new row location to 
place the new portlet fragment (zero based)</td>                         
+                       </tr>                                           
+                       <tr>
+                               <td>col</td>
+                               <td>optional: the absolute new column location 
to place the new portlet fragment (zero based)</td>                             
 
+                       </tr>                                                   
                
+               </table>
+    </tr>
+    <tr>
+        <td>API example:</td>
+               <td>
+<source><![CDATA[                      
+http://localhost:8080/jetspeed/ajaxapi/Public/public.psml?action=add&id=jsf-demo::CalendarPortlet
+]]></source>                   
+               </td>    
+       </tr>
+    <tr>
+        <td>XML Response:</td>
+               <td>
+<source><![CDATA[
+<js>
+  <status>success</status>
+  <action>add</action>
+  <id>jsf-demo::CalendarPortlet</id>
+  <new_position>
+    <col>0</col>
+    <row>0</row>
+  </new_position>
+</js>
+]]></source>
+                       
+               </td>    
+       </tr>
+</table>
+</subsection>
+<subsection name='Remove Portlet'>
+<table>                
+
+    <tr>
+        <td>API:</td>
+        <td>remove</td>
+    </tr>
+    <tr>
+        <td>Component:</td>
+        <td>AjaxRemovePortlet</td>
+    </tr>
+    <tr>
+        <td>Description:</td>
+        <td>Removes a new portlet from the current page.</td>
+    </tr>
+    <tr>
+        <td>Parameters:</td>
+        <table>
+                       <tr>
+                               <td>page</td>
+                               <td>implied in the URL</td>                     
        
+                       </tr>
+                       <tr>
+                               <td>action</td>
+                               <td>remove</td>                         
+                       </tr>                   
+                       <tr>
+                               <td>id</td>
+                               <td>the portlet PSML fragment id of the portlet 
to be removed</td>                              
+                       </tr>                   
+               </table>
+    </tr>
+    <tr>
+        <td>API example:</td>
+               <td>
+<source><![CDATA[                      
+http://localhost:8080/jetspeed/ajaxapi/Public/public.psml?action=remove&id=ps-1003
+]]></source>                   
+               </td>    
+       </tr>
+    <tr>
+        <td>XML Response:</td>
+               <td>
+<source><![CDATA[
+<js>
+  <status>success</status>
+  <action>remove</action>
+  <id>jsf-demo::CalendarPortlet</id>
+  <new_position>
+    <col>0</col>
+    <row>0</row>
+  </new_position>
+</js>
+]]></source>
+                       
+               </td>    
+       </tr>
+</table>
+</subsection>
+<subsection name='Get Portlets'>
+<table>                
+
+    <tr>
+        <td>API:</td>
+        <td>getportlets</td>
+    </tr>
+    <tr>
+        <td>Component:</td>
+        <td>AjaxGetPortlets</td>
+    </tr>
+    <tr>
+        <td>Description:</td>
+        <td>Get Portlets retrieves the (sorted) portlet list available to the 
current subject, filtered
+                   the portlet list, and returning portlets which the current 
subject may view. 
+                       The Jetspeed (JAAS) security policy enforces this 
filtering. Portlets are returned 
+                   in XML format, with name, displayName, and description for 
each portlet.</td>
+    </tr>
+    <tr>
+        <td>Parameters:</td>
+        <table>
+                       <tr>
+                               <td>page</td>
+                               <td>implied in the URL</td>                     
        
+                       </tr>
+                       <tr>
+                               <td>action</td>
+                               <td>getportlets</td>                            
+                       </tr>                   
+                       <tr>
+                               <td>filter</td>
+                               <td>not yet implemented. A query filter to be 
defined.</td>                             
+                       </tr>                   
+                       
+               </table>
+    </tr>
+    <tr>
+        <td>API example:</td>
+               <td>
+<source><![CDATA[                      
+http://localhost:8080/jetspeed/ajaxapi?action=getportlets
+]]></source>                   
+               </td>    
+       </tr>
+    <tr>
+        <td>XML Response:</td>
+               <td>
+<source><![CDATA[
+<js>
+<status>success</status>
+<action>getportlets</action>
+-
+       <portlets>
+<portlet name="demo::AttributeScopePortlet" displayName="Attribute Scope Demo" 
description="$portlet.Description">
+        </portlet>
+<portlet name="demo::BookmarkPortlet" displayName="Bookmark Portlet" 
description="Bookmark Portlet">
+        </portlet>
+<portlet name="demo::BookmarkPortletForXHTMLBasic" displayName="Bookmark 
Portlet for XHTML Basic" description="Bookmark Portlet for XHTML Basic">
+        </portlet>
+<portlet name="demo::CSSDemoPortlet" displayName="CSS Demo Portlet" 
description="$portlet.Description">
+        </portlet>
+....
+<portlet name="rss::RSS" displayName="RSS Portlet" description="RSS Portlet">
+        </portlet>
+<portlet name="rss::RomeRSS" displayName="Rome RSS Portlet" description="Rome 
RSS Portlet">
+        </portlet>
+</portlets>
+</js>
+]]></source>
+                       
+               </td>    
+       </tr>                           
+</table>        
+</subsection>  
+    
+<subsection name='Permissions'>
+<table>                
+
+    <tr>
+        <td>API:</td>
+        <td>permissions</td>
+    </tr>
+    <tr>
+        <td>Component:</td>
+        <td>AjaxSecurityPermissions</td>
+    </tr>
+    <tr>
+        <td>Description:</td>
+        <td>Security Permissions Maintenance to add, update, and remove 
permissions from the Jetspeed security policy</td>
+    </tr>
+    <tr>
+        <td>Parameters:</td>
+        <table>
+                       <tr>
+                               <td>action</td>
+                               <td>permissions</td>                            
+                       </tr>                               
+                       <tr>
+                               <td>method</td>
+                               <td>the method to execute: must be of value: 
add | update | remove</td>                         
+                       </tr>
+                       <tr>
+                               <td>type</td>
+                               <td>the type of permission being manipulated: 
portlet | folder | page</td>                              
+                       </tr>                   
+                       <tr>
+                               <td>resource</td>
+                               <td>the name of the portal resource being 
manipulated</td>                              
+                       </tr>                               
+                       <tr>
+                               <td>roles</td>
+                               <td>comma-separated list of roles, only valid 
for methods: add, update</td>                             
+                       </tr>                                           
+                       <tr>
+                               <td>actions</td>
+                               <td>comma-separated list of actions, only valid 
for methods: add, update</td>                           
+                       </tr>                                           
+                       <tr>
+                               <td>oldactions</td>
+                               <td>comma-separated list of previous actions, 
only valid for methods: update</td>                               
+                       </tr>                                                   
    
+               </table>
+    </tr>
+    <tr>
+        <td>API example:</td>
+               <td>
+<source><![CDATA[                      
+http://localhost:8080/jetspeed/ajaxapi?action=permissions&method=add&type=portlet&resource=demo::*&roles=role1,role2,role3&actions=view,edit
+]]></source>                   
+               </td>    
+       </tr>
+    <tr>
+        <td>XML Response:</td>
+               <td>
+<source><![CDATA[
+<js>
+    <status>success</status>
+    <action>permissions</action>
+    <resource>demo::*</resource> 
+    <type>portlet</type> 
+    <actions>view,edit</actions>
+    <actions>role1,role2,role3</actions>    
+</js>
+]]></source>           
+               </td>    
+       </tr>
+</table>
+</subsection>
+
+<subsection name='getmenus'>
+<table>                
+
+    <tr>
+        <td>API:</td>
+        <td>getmenus</td>
+    </tr>
+    <tr>
+        <td>Component:</td>
+        <td>AjaxGetMenus</td>
+    </tr>
+    <tr>
+        <td>Description:</td>
+        <td>Retrieves all menus for the current page (implied in URL)</td>
+    </tr>
+    <tr>
+        <td>Parameters:</td>
+        <table>
+                       <tr>
+                               <td>action</td>
+                               <td>getmenus</td>                               
+                       </tr>                               
+                       <tr>
+                               <td>page</td>
+                               <td>(implied in URL)</td>                       
        
+                       </tr>
+               </table>
+    </tr>
+    <tr>
+        <td>API example:</td>
+               <td>
+<source><![CDATA[                      
+http://localhost:8080/jetspeed/ajaxapi/default-page.psml?action=getmenus
+]]></source>                   
+               </td>    
+       </tr>
+    <tr>
+        <td>XML Response:</td>
+               <td>
+<source><![CDATA[
+<js>
+    <status>success</status>
+    <action>getmenus</action>    
+    <menus>
+        <menu type="standard">navigations</menu>
+        <menu type="standard">back</menu>
+        <menu type="standard">pages</menu>
+        <menu type="standard">breadcrumbs</menu>
+        <menu type="custom">site-navigations</menu>
+        <menu type="custom">additional-links</menu>
+        <menu type="custom">page-navigations</menu>
+    </menus>
+</js>
+]]></source>           
+               </td>    
+       </tr>
+</table>
+</subsection>
+
+<subsection name='getmenu'>
+<table>                
+
+    <tr>
+        <td>API:</td>
+        <td>getmenu</td>
+    </tr>
+    <tr>
+        <td>Component:</td>
+        <td>AjaxGetMenu</td>
+    </tr>
+    <tr>
+        <td>Description:</td>
+        <td>Retrieves the menu definition for a given menu</td>
+    </tr>
+    <tr>
+        <td>Parameters:</td>
+        <table>
+                       <tr>
+                               <td>action</td>
+                               <td>getmenu</td>                                
+                       </tr>                               
+                       <tr>
+                               <td>menu</td>
+                               <td>name of the menu to retrieve (menu 
definition may change per page)</td>                             
+                       </tr>
+               </table>
+    </tr>
+    <tr>
+        <td>API example:</td>
+               <td>
+<source><![CDATA[                      
+http://localhost:8080/jetspeed/ajaxapi?action=getmenu&name=breadcrumbs
+]]></source>                   
+               </td>    
+       </tr>
+    <tr>
+        <td>XML Response:</td>
+               <td>
+<source><![CDATA[
+<js>
+<status>success</status>
+<action>getmenu</action>
+<menu>
+  <name>breadcrumbs</name>
+  <title>You are here:</title>
+  <short-title>You are here:</short-title>
+  <skin>breadcrumbs</skin>
+  <url>/default-page.psml</url>
+  <hidden>false</hidden>
+  <selected>true</selected>
+  <option>
+    <type>folder</type>
+    <title>Root Folder</title>
+    <short-title>Root Folder</short-title>
+    <skin>breadcrumbs</skin>
+    <url>/</url>
+    <hidden>false</hidden>
+    <selected>true</selected>
+  </option>
+  <option>
+    <type>page</type>
+    <title>Welcome to Jetspeed 2</title>
+    <short-title>Welcome to Jetspeed 2</short-title>
+    <skin>blue</skin>
+    <url>/default-page.psml</url>
+    <hidden>false</hidden>
+    <selected>true</selected>
+  </option>
+</menu>
+</js>
+]]></source>           
+               </td>    
+       </tr>
+</table>
+</subsection>
+
+<subsection name='window'>
+<table>                
+
+    <tr>
+        <td>API:</td>
+        <td>getmenus</td>
+    </tr>
+    <tr>
+        <td>Component:</td>
+        <td>AjaxChangeWindow</td>
+    </tr>
+    <tr>
+        <td>Description:</td>
+        <td>Changes a portlet window's Window State or Portlet Mode</td>
+    </tr>
+    <tr>
+        <td>Parameters:</td>
+        <table>
+                       <tr>
+                               <td>action</td>
+                               <td>window</td>                         
+                       </tr>                               
+                       <tr>
+                               <td>id</td>
+                               <td>window id of the portlet to be 
modified</td>                                
+                       </tr>
+                       <tr>
+                               <td>state</td>
+                               <td>A portlet api valid window state or 
extended window state (normal | maximized | minimized)</td>                     
        
+                       </tr>            
+                       <tr>
+                               <td>mode</td>
+                               <td>A portlet api valid portlet mode or 
extended portlet mode (view | edit | help | print)</td>                         
+                       </tr>                        
+                       <tr>
+                               <td>page</td>
+                               <td>Implied in URL</td>                         
+                       </tr>                                    
+               </table>
+    </tr>
+    <tr>
+        <td>API example:</td>
+               <td>
+<source><![CDATA[                      
+http://localhost:8080/jetspeed/ajaxapi?action=window&state=maximized&mode=edit&id=um-2
+]]></source>                   
+               </td>    
+       </tr>
+    <tr>
+        <td>XML Response:</td>
+               <td>
+<source><![CDATA[
+<js>
+  <status>success</status>
+  <action>window</action>
+  <id>um-2</id>  
+  <state>maximized</state>
+  <mode>edit</mode>
+</js>
+]]></source>           
+               </td>    
+       </tr>
+</table>
+</subsection>
+
+<subsection name='getuseinfo'>
+<table>                
+
+    <tr>
+        <td>API:</td>
+        <td>getuseinfo</td>
+    </tr>
+    <tr>
+        <td>Component:</td>
+        <td>AjaxGetUserInformation</td>
+    </tr>
+    <tr>
+        <td>Description:</td>
+        <td>Returns information about the currently logged in user. Can be 
used for example in AJAX based portlets to retrieve the userinfo in a more 
robust way. Will return success only if a user is currenly logged in, otherwise 
will return false.</td>
+    </tr>
+    <tr>
+        <td>Parameters:</td>
+        <table>
+                       <tr>
+                               <td>action</td>
+                               <td>getuserinfo</td>                            
+                       </tr>                                   
+               </table>
+    </tr>
+    <tr>
+        <td>API example:</td>
+               <td>
+<source><![CDATA[                      
+http://localhost:8080/jetspeed/ajaxapi?action=getuserinfo
+]]></source>                   
+               </td>    
+       </tr>
+    <tr>
+        <td>XML Response:</td>
+               <td>
+<source><![CDATA[
+<js>
+    <status>success</status>
+    <action>userinformation</action>
+    <username>admin</username> 
+    <type>org.apache.jetspeed.security.impl.UserPrincipalImpl</type>
+    <userinfo>
+        <user.name.given>Test Dude</user.name.given>
+        <user.name.family>Dudley</user.name.family>
+    </userinfo>
+</js>
+]]></source>           
+               </td>    
+       </tr>
+</table>
+</subsection>
+
+<subsection name='getuserlist'>
+<table>                
+
+    <tr>
+        <td>API:</td>
+        <td>getuseinfo</td>
+    </tr>
+    <tr>
+        <td>Component:</td>
+        <td>AjaxGetUserList</td>
+    </tr>
+    <tr>
+        <td>Description:</td>
+        <td>Provides basic information (username, ip-address, number of 
sessions and status) about currently logged in users in xml-format. Optionally 
it can also provide more detailed userinformation, number of guest sessions and 
include offline users as well.</td>
+    </tr>
+    <tr>
+        <td>Parameters:</td>
+        <table>
+                       <tr>
+                               <td>action</td>
+                               <td>getuserinfo</td>
+                       </tr>
+            <tr>
+                <td>userinfo</td>
+                <td>Whether we should include also userinfo (true | false 
[default])</td>
+            </tr>
+            <tr>
+                <td>offline</td>
+                <td>Whether we should include offline users (true | false 
[default])</td>
+            </tr>
+            <tr>
+                <td>guest</td>
+                <td>Whether we should return also the guest sessions (true | 
false [default])</td>
+            </tr>
+            <tr>
+                <td>all</td>
+                <td>If set to true, will return every bits and piece there is 
(true | false [default])</td>
+            </tr>
+               </table>
+    </tr>
+    <tr>
+        <td>
+            <p>
+                By default the private information (emails, etc..) is 
protected with
+                RolesSecurityBehavior security, but can be changed in 
+                <a 
href="http://svn.apache.org/viewvc/portals/jetspeed-2/portal/tags/JETSPEED-RELEASE-2.2.1/jetspeed-portal-resources/src/main/resources/assembly/ajax-layout.xml";>AJAX
 configuration</a>
+                by altering the protectionScope constructor value to either 
"all" to protect
+                even the basic information or to "none" when everything will 
be shown for everyone (not wise on production).
+                The default value "private" will show just the basic 
information of online/offline users and number of guest sessions,
+                as the "private-offline" will not show even the offline users. 
Possible protectionScope values are "all",
+                "private-offline", "private" and "none".
+            </p>
+        </td>
+    </tr>
+    <tr>
+        <td>API example:</td>
+               <td>
+<source><![CDATA[                      
+http://localhost:8080/jetspeed/ajaxapi?action=getuserlist&userinfo=true&guest=true
+]]></source>                   
+               </td>    
+       </tr>
+    <tr>
+        <td>XML Response:</td>
+               <td>
+<source><![CDATA[
+<js>
+    <status>success</status>
+    <action>getuserlist</action>
+    <users>
+        <user>
+            <username>admin</username>
+            <sessions>1</sessions>
+            <status>online</status>
+            <ipaddress>127.0.0.1</ipaddress>
+            <userinfo>
+                <user.name.given>Test Dude</user.name.given>
+                <user.name.family>Dudley</user.name.family>
+            </userinfo>
+        </user>
+        <guests>0</guests>
+    </users>
+</js>
+]]></source>           
+               </td>    
+       </tr>
+</table>
+</subsection>
+        
+</section>
+
+<section name='Spring Assembly'>
+<p>
+The <code>AjaxRequestService</code>    is a Spring component that handles AJAX 
requests.
+It is hooked into the AJAX <a href='guide-pipeline.html'>Pipeline</a> for 
special processing
+of AJAX request. Here is the Spring Assembly. Each API is configured in the 
Ajax Service.
+</p>
+<source><![CDATA[      
+<bean id="AjaxRequestService" 
class="org.apache.jetspeed.ajax.AjaxRequestServiceImpl">
+    <constructor-arg index="0">
+        <map>
+            <entry key="move">
+                <ref bean="AjaxMove"/>
+            </entry>            
+            <entry key="moveabs">
+                <ref bean="AjaxMovePortletAbsolute"/>
+            </entry>
+            <entry key="moveleft">
+                <ref bean="AjaxMovePortletLeft"/>
+            </entry>
+            <entry key="moveright">
+                <ref bean="AjaxMovePortletRight"/>
+            </entry>
+            <entry key="moveup">
+                <ref bean="AjaxMovePortletUp"/>
+            </entry>
+            <entry key="movedown">
+                <ref bean="AjaxMovePortletDown"/>
+            </entry>
+            <entry key="add">
+                <ref bean="AjaxAddPortlet"/>
+            </entry>
+            <entry key="remove">
+                <ref bean="AjaxRemovePortlet"/>
+            </entry>
+            <entry key="getportlets">
+                <ref bean="AjaxGetPortlets"/>
+            </entry>
+            <entry key="getpage">
+                <ref bean="AjaxGetPage"/>
+            </entry>
+            <entry key="getpages">
+                <ref bean="AjaxGetPages"/>
+            </entry>                   
+            <entry key="getfolder">
+                <ref bean="AjaxGetFolder"/>
+            </entry>                               
+            <entry key="getlink">
+                <ref bean="AjaxGetLink"/>
+            </entry>                                           
+            <entry key="getfolderlist">
+                <ref bean="AjaxGetFolderList"/>
+            </entry>                                           
+            <entry key="getfolders">
+                <ref bean="AjaxGetFoldersList"/>
+            </entry>                                                           
        
+            <entry key="getthemes">
+                <ref bean="AjaxGetThemes"/>
+            </entry>
+            <entry key="getactions">
+                <ref bean="AjaxGetActions"/>
+            </entry>
+            <entry key="window">
+                <ref bean="AjaxChangeWindow"/>
+            </entry>
+            <entry key="getmenus">
+                <ref bean="AjaxGetMenus"/>
+            </entry>                               
+            <entry key="getmenu">
+                <ref bean="AjaxGetMenu"/>
+            </entry>                               
+            <entry key="permissions">
+                <ref bean="AjaxSecurityPermissions"/>
+            </entry>                                           
+            <entry key="constraints">
+                <ref bean="AjaxSecurityConstraints"/>
+            </entry>                             
+            <entry key="updatefolder">
+                <ref bean="AjaxUpdateFolder"/>                
+            </entry>                          
+            <entry key="updatepage">
+                <ref bean="AjaxUpdatePage"/>                
+            </entry>              
+            <entry key="updatelink">
+                <ref bean="AjaxUpdateLink"/>                
+            </entry>                                                           
   
+            <entry key="getuserinfo">
+                <ref bean="AjaxGetUserInformation"/>                
+            </entry>
+            <entry key="getuserlist">
+                <ref bean="AjaxGetUserList"/>                
+            </entry>
+        </map>
+    </constructor-arg>
+    <constructor-arg index="1">
+        <ref bean="AjaxVelocityEngine"/>
+    </constructor-arg>
+</bean>
+]]></source>
+               
+</section>     
+</body>
+</document>
+

Added: 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-database.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-database.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-database.xml
 (added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-database.xml
 Thu Jul 16 21:01:09 2015
@@ -0,0 +1,273 @@
+<?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 2 Database Configuration</title>
+               <subtitle>Welcome to Jetspeed 2</subtitle>
+               <authors>
+                       <person name="David Sean Taylor" 
email="[email protected]" />
+                       <person name="David Le Strat" 
email="[email protected]" />
+                       <person name="Ron Wheeler"
+                               email="[email protected]" />
+               </authors>
+       </properties>
+       <body>
+               <section name="Default Database">
+                       <p>
+                               The default database distributed with 
Jetspeed-2 is the
+                               Apache Derby database. To move on to a more 
robust
+                               database, follow the instructions in the next 
section.
+                       </p>
+               </section>
+        <section name='Supported Databases'> 
+        <p>List of supported databases:</p>
+        <table>
+            <tr>
+                <th>Database Name</th>
+                <th>Build Constant</th>                
+                <th>Tested Versions</th>
+            </tr>
+            <tr>
+                <td>IBM DB2</td>
+                <td>db2</td>                
+                <td>9.1</td>
+            </tr>
+            <tr>
+                <td>Apache Derby, IBM Cloudscape</td>
+                <td>derby</td>
+                <td>10.1</td>
+            </tr>
+            <tr>
+                <td>Hypersonic SQL (HSQL)</td>
+                <td>hsql</td>
+                <td>1.8</td>
+            </tr>
+            <tr>
+                <td>Microsoft SQL Server</td>
+                <td>mssql</td>
+                <td>2000, 2005</td>
+            </tr>
+            <tr>
+                <td>MySQL</td>
+                <td>mysql</td>
+                <td>4.*, 5.*</td>
+            </tr>
+            <tr>
+                <td>Oracle</td>
+                <td>oracle</td>
+                <td>9i, 10g</td>
+            </tr>
+            <tr>
+                <td>PostgreSQL</td>
+                <td>postgres</td>
+                <td>8.*</td>
+            </tr>                            
+            <tr>
+                <td>SAP DB, MaxDB</td>
+                <td>sapdb</td>
+                <td>7.5</td>
+            </tr>
+        </table>            
+        </section>
+               <section name="MySQL">
+                       <p>
+                               To run with My SQL, add the following 
properties to your
+                               $HOME/build.properties:
+                       </p>
+                       <source test="">
+                               <![CDATA[
+
+# -------------------------------------------------------------------------
+# configure MySQL Test DB (only needed when running unit tests)
+# -------------------------------------------------------------------------
+org.apache.jetspeed.test.database.default.name=mysql
+org.apache.jetspeed.test.database.url = jdbc:mysql://j2-server/j2test
+org.apache.jetspeed.test.database.driver = com.mysql.jdbc.Driver
+org.apache.jetspeed.test.database.user = jetspeed2
+org.apache.jetspeed.test.database.password = whatever
+# -------------------------------------------------------------------------
+# configure MySQL Production DB
+# -------------------------------------------------------------------------
+org.apache.jetspeed.production.database.default.name=mysql
+org.apache.jetspeed.production.database.url = jdbc:mysql://j2-server/j2
+org.apache.jetspeed.production.database.driver = com.mysql.jdbc.Driver
+org.apache.jetspeed.production.database.user = jetspeed2
+org.apache.jetspeed.production.database.password = whatever
+# -------------------------------------------------------------------------
+
+]]>
+                       </source>
+                       <p>
+                               In the example above, you will need to have a 
MySQL
+                               server running on a host named 'j2-server' with 
a
+                               database called 'j2' for production.
+                               <br />
+                               If you are going to run the unit tests you will 
also
+                               need an additional test database called 
'j2test'.
+                               <br />
+                               A user named 'jetspeed2' should be granted 
access to
+                               both the 'j2' and 'j2test' databases.
+                       </p>
+
+                       <subsection name="MySQL Known Issues">
+                               <p>None</p>
+                       </subsection>
+
+               </section>
+        
+               <section name="Oracle">
+                       <p>
+                               To run with Oracle, add the following 
properties to your
+                               $HOME/build.properties:
+                       </p>
+
+                       <source test="">
+                               <![CDATA[
+
+# -------------------------------------------------------------------------
+# configure Oracle Test DB (only needed when running unit tests)
+# -------------------------------------------------------------------------
+# org.apache.jetspeed.test.database.default.name=oracle
+# org.apache.jetspeed.test.database.ojb.platform=oracle9i
+# org.apache.jetspeed.test.database.url = jdbc:oracle:thin:@j2-sever:1521:j2db
+# org.apache.jetspeed.test.database.driver = oracle.jdbc.driver.OracleDriver
+# org.apache.jetspeed.test.database.user = j2test
+# org.apache.jetspeed.test.database.password = whatever
+# -------------------------------------------------------------------------
+# configure Oracle Production DB
+# -------------------------------------------------------------------------
+# org.apache.jetspeed.production.database.default.name=oracle
+# org.apache.jetspeed.production.database.ojb.platform=oracle9i
+# org.apache.jetspeed.production.database.url = 
jdbc:oracle:thin:@j2-server:1521:j2db
+# org.apache.jetspeed.production.database.driver = 
oracle.jdbc.driver.OracleDriver
+# org.apache.jetspeed.production.database.user = j2
+# org.apache.jetspeed.production.database.password = whatever
+# -------------------------------------------------------------------------
+
+]]>
+                       </source>
+                       <p>
+                               In the example above, you will need to have a 
Oracle
+                               server running on a host named 'j2-server' and 
have an
+                               Oracle database SID named 'j2db' installed on 
that
+                               server. Also, you will need a database user 
(schema)
+                               called 'j2' for production usage.
+                               <br />
+                               If you are going to run the unit tests you will 
need an
+                               additional user called 'j2test'.
+                       </p>
+
+                       <subsection name="Oracle Known Issues">
+                               <p>
+                                       Only for the first time you create the 
database for
+                                       Oracle, there is an issue with the drop 
statements.
+                                       To get around this problem, set your 
properties as
+                                       above in your $HOME/build.properties, 
and then run
+                                       these commands using the
+                                       <a href="j2-maven-plugin.html">
+                                               Jetspeed 2 Maven plugin
+                                       </a>
+                                       :
+                               </p>
+                               <source test="">
+                                       <![CDATA[
+
+maven j2:db.scripts.gen
+maven j2:dropdrops
+maven j2:db.create.test (only when running unit tests)
+maven j2:db.create.production
+
+]]>
+                               </source>
+                       </subsection>
+
+               </section>
+
+               <section name="Drivers">
+                       <p>
+                               JDBC drivers are configured to work with the 
Maven build
+                               by adding your specified JDBC driver jars to 
the Maven
+                               class path. Specify the jars with the
+                               
<b>org.apache.jetspeed.test.jdbc.drivers.path</b>
+                               and
+                               
<b>org.apache.jetspeed.production.jdbc.drivers.path</b>
+                               properties in your $HOME/build.properties.
+                       </p>
+                       <p>
+                               NOTE: The Derby JDBC driver is distributed with
+                               Jetspeed and require no configuration.
+                       </p>
+                       <source test="">
+                               <![CDATA[
+
+# My SQL Driver Path Example, test and production
+org.apache.jetspeed.test.jdbc.drivers.path=
+     /Portal/lib/MySQL/mysql-connector-java-3.0.8-stable-bin.jar
+org.apache.jetspeed.production.jdbc.drivers.path=
+     /Portal/lib/MySQL/mysql-connector-java-3.0.8-stable-bin.jar
+
+# Oracle 9i Driver Path Example, test and production
+org.apache.jetspeed.test.jdbc.drivers.path=
+     /Portal/lib/oracle/ojdbc14.jar;/Portal/lib/oracle/nls_charset12.jar
+org.apache.jetspeed.production.jdbc.drivers.path=
+     /Portal/lib/oracle/ojdbc14.jar;/Portal/lib/oracle/nls_charset12.jar
+
+# Oracle 8i Driver Path Example, test and production
+org.apache.jetspeed.test.jdbc.drivers.path=
+     /Portal/lib/oracle/classes12.jar;
+org.apache.jetspeed.production.jdbc.drivers.path=
+     /Portal/lib/oracle/classes12.jar;
+
+]]>
+                       </source>
+
+                       <subsection name="Distributing Drivers">
+                               <p>
+                                       When Jetspeed is deployed to an 
application server
+                                       using the maven deploy target, only the 
Derby
+                                       JDBC driver is copied into the web 
application. To
+                                       distribute a specific driver (i.e. 
Oracle, MySQL),
+                                       you will need to copy the driver into 
the
+                                       application server's common class path 
for shared
+                                       code.
+                               </p>
+                               <table>
+                                       <tr>
+                                               <th>Application Server</th>
+                                               <th>Procedure</th>
+                                       </tr>
+                                       <tr>
+                                               <td>Tomcat 6+</td>
+                                               <td>
+                                                       copy driver(s) to 
${TOMCAT_HOME}/lib/
+                                               </td>
+                                       </tr>
+
+                               </table>
+
+                       </subsection>
+                       <subsection name="Datasource Configuration with 
Jetspeed-2">
+                       <p>
+                       Jetspeed-2 requires a datasource to be configured in 
the application server on which it is being deployed.
+                       For more information, see the <a 
href="dev-rdbms.html">RDBMS component documentation</a>.
+                       </p>
+                       </subsection>
+
+               </section>
+       </body>
+</document>

Added: 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-decorators.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-decorators.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-decorators.xml
 (added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-decorators.xml
 Thu Jul 16 21:01:09 2015
@@ -0,0 +1,327 @@
+<?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>Guide to Jetspeed Decoration</title>
+    <subtitle>Documentation for Designers working with Jetspeed 
Decorations</subtitle>
+    <authors>
+      <person name="Scott T Weaver" email="[email protected]"/>
+      <person name="David Sean Taylor" email="[email protected]"/>
+    </authors>
+  </properties>
+  <body>
+<section name="Introduction to Decorators">
+<p>
+Decorators are defined as any static or semi-static markup surrounding a 
dynamically generated Fragment. 
+Decorators are usually written with either Velocity or JSP templates.  This 
guide will focus primarily
+on using the Velocity scripting language to build decoration.  However, most 
of the standards and 
+approaches described here can be applied to writing decroations in other 
scripting languages.
+</p>
+<p>
+    There are two different types of decorations that are used when building a 
page; Portlet and Layout (or page).
+    <p>
+    Portlet decorations are the "window dressings" of Jetspeed.  They wrap 
each indivual portlet fragment's
+    rendered content with HTML (XHTML, VXML, etc).  Portlet decoration's are 
responsible for displaying the
+    appropriate title and any buttons associated with changing window states 
or portlet modes.
+    </p>
+    <p>
+    Layout or Page decorations responsible for providind a "header" area and 
"footer" area for a single
+    portal page which is represented by a .psml document (see: <a 
href="guide-psml.html">Documentation for Designers working with PSML</a>
+    for more information on psml).  They also provide general style 
information for the page and portlets.  However,
+    portlet level style settings can be overidden at the portlet decoration 
level.
+    </p>
+    
+</p>
+</section>
+<section name="Decoration File Structure">
+<p>
+    All decorations are stored in a directory directly off of the web 
applications
+    root called <code>decorations</code>.  The two primary directories under 
the 
+    here are <code>layout</code> for layout decorations and 
<code>portlet</code>
+    for portlet decorations.  Individual decoartions are housed in their own 
directories
+    underneath these two directories.  The name of the directory you create 
for under either
+    <code>layout</code> or <code>portlet</code> is how Jetspeed will locate 
your decoration.  We
+    will go into further detail on how this works later on in this guide.
+</p>        
+</section>
+
+<section name="Anatomy of a Layout(Page) Decoration">
+  <subsection name='Four Files in a Nutshell'>
+    <p>
+        In it's most basic form a Layout Decroation only requires you to define
+        four files:
+        <ul>
+            <li>decorator.properties</li>
+            <li>styles.css</li>
+            <li>header.vm</li>
+            <li>footer.vm</li>
+        </ul>
+        Three of these files; decorator.properties, header.vm, and footer.vm 
go directly into 
+        the directory you create under <code>/decorations/layout</code>.  The 
styles.css needs
+        to be put into a subdirectory of your decoration names 
<code>css/</code>.
+    </p>
+  </subsection>
+  
+   <subsection name='Basic Layout Decoration Configuration: 
decorator.properties'>
+    <p>
+        The decorator.properties file holds basic information about your layout
+        decoration.  In all actuallity, this file can be blank, but we still 
require
+        that it be present as it is used by other APIs to "discover" available 
decorations.  
+        With that being said, it is safe to assume that all the properties 
defined below 
+        are optional.
+        <table>
+            <tr>
+                <th>Property Name</th>
+                <th>Description</th>
+                <th>Default</th>
+            </tr>
+            <tr>
+                <td>base.css.class</td>
+                <td>
+                    This value is generally placed in the top most element tag
+                    of your header template.  You will see how it is used when
+                    we go into development of a header template.
+                </td>
+                <td>Defaults to the name of your decoration</td>
+            </tr>
+            <tr>
+                <td>stylesheet</td>
+                <td>Relative path to your decoration's stylesheet</td>
+                <td>css/styles.css</td>
+            </tr>
+            <tr>
+                <td>header</td>
+                <td>Relative path to your decoration's header template</td>
+                <td>header.vm</td>
+            </tr>
+            <tr>
+                <td>footer</td>
+                <td>Relative path to your decoration's footer template</td>
+                <td>footer.vm</td>
+            </tr>            
+        </table>
+    </p>
+   </subsection>
+   <subsection name='Top o&apos; the Page to ya: header.vm'>
+    <p>
+        The <strong>header.vm</strong> represnts the top portion of your 
portal page.  Below is a section
+        by section walkthrough of the basics required to write a functional 
header
+        template.
+        <br/><br/>
+        <strong>NOTICE:</strong> It is assumed that the reader is proficient 
in both
+        the use of HTML and CSS.  A rudimentary knowledge of Velocity helps 
but is not 
+        required to develop a decoration.
+    </p>
+    <p>
+<source>
+<![CDATA[        
+<html>
+   <head>
+     #defineLayoutObjects()
+]]></source>   
+        The first two lines should be obvious, if they are not, this guide 
from here
+        on out will not be much help to you ;-)
+
+               <h4>Our First Macro: #defineLayoutObjects()</h4>
+        <p>
+            Now the line containing <code>#defineLayoutObjects()</code> will 
not be as obvious in its
+            purpose as the previous two.  <code>#defineLayoutObjects()</code> 
is what is known, in
+            Velocity vernacular, as a macro.  A macro is a predefined snippet 
of Velocity 
+            code that can be reused within any Velocity template.  All of the 
global macros
+            we will be using (including this one) are defined within the 
<code>WEB-INF/jetspeed_macros.vm</code>.
+            Later in this guide we will discuss supplying your own, custom 
macros for assisting
+            you in your decoration development, if you choose to.  Now, back 
to the <code>#defineLayoutObjects()</code>.
+            <code>#defineLayoutObjects()</code> adds values to Velocity that 
will be accessible within header.vm,
+            footer.vm, other macros and all of your portlet decoration 
templates.  We could easily stop here 
+            regarding <code>#defineLayoutObjects()</code>, however, I feel it 
can be helpful to have some 
+            insights into the inner workings of Velocity for the uninitiated.  
With out further ado, the 
+            code:        
+<source>
+<![CDATA[        
+  #macro (defineLayoutObjects)
+    #set($preferedLocale = $JS2RequestContext.locale)
+    #set($rootFragment = $jetspeed.currentFragment)
+    #set($site = 
$request.getAttribute("org.apache.jetspeed.portalsite.PortalSiteRequestContext"))
+    #set($theme = $request.getAttribute("org.apache.jetspeed.theme"))
+    #set($layoutDecoration = $theme.getDecoration($rootFragment))
+  #end        
+]]></source>        
+                       
+            Hmm. What is actually happening here. Okay first off we have, 
<code>#set()</code>, this is what is known as a
+            directive in Velocity.  A directive is built-in functionallity and 
not a macro. <code>#set()</code>
+            is pretty straight forward in that it takes the value on the right 
of the = and assigns it to
+            the left.  Cool, that seems fairly straight forward. But how does 
one work with these values and where
+            the heck did <code>$JS2RequestContext.locale</code> come from?  I 
guess i should take a quick step back
+            and describe how we work with objects in Velocity.  All objects 
available to a Velocity template
+            can be referenced via the <code>$someObject</code> notation.  
Knowing that much invoking a method
+            , let's getFoo(), can be done just like this 
<code>$someObject.getFoo()</code>.  Even cooler is the
+            fact we can short-hand getter methods that don't take any 
arguments like this, 
+            <code>$someObject.foo</code>.  As for this 
<code>$JS2RequestContext</code> this is actually
+            an instance of the <code>org.apache.jetspeed.RequestContext</code> 
that has been availble to Velocity
+            by Jetspeed itself.  So, by looking the javadoc for 
<code>org.apache.jetspeed.RequestContext</code> we see
+            <code>$JS2RequestContext.locale</code> will give us an instance of 
<code>java.util.Locale</code> that represents
+            the locale of the current user.  Couldn't be much simpler than 
that could it?
+               <br/><br/>
+            Next up we have this line <code>#set($rootFragment = 
$jetspeed.currentFragment)</code> another set()
+            statement, this time creating an object called 
<code>$rootFragment</code> which is an instance of
+            <a 
href="../apidocs/org/apache/jetspeed/om/page/ContentFragment.html">org.apache.jetspeed.om.page.ContentFragment</a>.
+                       It is really not relevant to this guide
+            to describe what <code>$jetspeed.currentFragment</code> is doing 
so I am going to skip that and move on. 
+            <br/><br/>
+            <code>
+              #set($site = 
$request.getAttribute("org.apache.jetspeed.portalsite.PortalSiteRequestContext"))
+             <br/>
+             #set($theme = $request.getAttribute("org.apache.jetspeed.theme"))
+            </code>
+            <br/>
+            Ah <code>$request</code>, now that looks familiar, this is 
actually an instance of <code>javax.servlet.http.HttpServletRequest</code>
+            from which we are retreiving objects that were been placed into 
Velocity by Jetspeed.  The actual objects are:
+            <a 
href="../apidocs/org/apache/jetspeed/portalsite/PortalSiteRequestContext.html">org.apache.jetspeed.portalsite.PortalSiteRequestContext</a>
+            and
+            <a 
href="../apidocs/org/apache/jetspeed/decoration/Theme.html">org.apache.jetspeed.decoration.Theme</a>
+            respectively.  We will put all of these objects to good use in 
just a little while.       
+        </p>
+         <h4>Feed Your HEAD: How to Properly Code Your Head Tag.</h4>
+          <p>
+               This section provides you with all the information to properly 
code the
+               &lt;HEAD&gt; of your Layout decroation.  So, straight to the 
code.
+               <source>
+<![CDATA[  
+<html>
+    <head>
+     #defineLayoutObjects()
+     
+     <base href="#BaseHref()">
+     <meta http-equiv="Content-type" content="#ContentType()" />
+     <meta http-equiv="Content-style-type" content="text/css" />   
+     #includeJavaScriptForHead()
+     #IncludeStylesheets()    
+     <title>#PageTitle()</title>
+     <meta name="description" content="#PageDescription()" />
+]]></source>
+          </p> 
+        
+    </p>
+       <h5>The &lt;base&gt; Tag</h5>
+         <p>   
+               First off we have <code><![CDATA[ <base 
href="#BaseHref()">]]></code> which allows 
+               us to define the base path for resolution of web resources, for 
an in depth discussion
+               of the <code><![CDATA[ <base>]]></code> see: <a 
href="http://www.w3schools.com/tags/tag_base.asp";>W3C Schools Reference</a>.  
+               If you have spent any time playing with Jetspeed, you will have 
noticed it does all sorts
+               of crazy URL rewriting that will totally hose any attempts to 
consistently path you html
+               and styles sheets.  By defining the BASE tag, this probelms 
will all but disappear.  As 
+               for the <code>#BaseHref()</code> macro, it simply generates a 
fully qualified path to your
+               web application's root.  The actual code, interms of the 
servlet api is synonimous with this:
+<source>
+HttpServletRequest request;
+StingBuffer baseHref = new StringBuffer(request.getScheme())
+     .append("://").append(request.getServerName())
+        .append(":").append(request.getServerPort())
+        .append(request.getContextPath()).append("/");
+return baseHref.toString();             
+</source>
+       The actual Velocity macro code is a bit more terse ;)
+<source>
+${request.scheme}://${request.serverName}:${request.serverPort}${request.contextPath}/
+</source>
+       </p>
+        <h5>Meta Tag: <![CDATA[<meta http-equiv="Content-type" 
content="#ContentType()" />]]></h5>
+        <p>
+               Will return text/html plus the proper encoding, such as UTF.
+        </p>
+        <h5>#includeJavaScriptForHead()</h5>
+        <p>
+          At the time of the writing of this guide there is really very little 
javascript
+          required to for the base Jetspeed 2 server to run.  However this may 
change in
+          near future as we try to employ the use of AJAX in things such as 
configuration 
+          and administration.
+        </p>
+   </subsection>
+</section>
+<section name='JSP Decorators'>
+<p>
+The JSP decorators are only currently supported in the <i>tigris</i> 
decorator. The JSP decorators are not enabled by default. JSP decorators
+ can be enabled by modifying (properly commented) settings in:
+</p>
+<ul>
+<li>decorators/layout/tigris/decorator.properties</li>
+<li>decorators/portlet/tigris/decorator.properties</li>
+<li>WEB-INF/templates/layout/html/columns/layout.properties</li>
+<li>WEB-INF/templates/layout/html/maximized/layout.properties</li>
+<li>WEB-INF/templates/layout/html/solo/layout.properties</li>
+</ul>
+<p>
+Note: you need to change the settings in *all* of the above properties files, 
and then restart jetspeed.
+</p>
+<p>
+Also note: for the tcolumns template there isn't a JSP replacement (yet), but 
that isn't much used anyway AFAIK.
+Just to be sure: don't switch your page layout portlet(s) from columns to 
tcolumns, otherwise your page will be be broken.
+</p>
+</section>
+<!--
+<section name='Packaging'>
+<p>
+Layouts are packaged in a JAR file. Supported decorators: 
+<ul>
+    <li>Page Decorators</li>
+    <li>Portlet Decorators</li>
+    <li>Generic Decorators</li>    
+    <li>Localized Decorators</li>
+</ul>
+Operations Supported:
+<ul>
+    <li>Deploy</li>
+    <li>Un-deploy</li>
+    <li>Re-deploy</li>
+</ul>
+The decorator.properties file must be located in the root directory of the jar 
archive and 
+contain the properties outlined in the next slide to be identified as a 
decorator by the auto 
+deployment system. The deployer will relocate the locale specific content to 
satisfy J2 
+content locators as necessary on deploy and undeploy. The current 
implementation supports 
+only 2 character language and country codes.    
+</p>    
+</section>
+<section name='Decorator Properties'>
+<p>
+The decorator.properties file must be located in the root directory of the jar 
archive and 
+contain the properties outlined above to be identified as a decorator by the 
auto-deployment system. 
+</p>
+<p>
+A deployable decorator must have the following properties set or defaulted in 
the decorator.properties 
+configuration:
+
+<source test=""><![CDATA[
+
+id = IDENTIFIER
+media.type=  HTML | WML
+decorates =  layout | portlet | any
+
+]]></source>
+
+To avoid conflicts with the locale logic and runtime locators, decorators 
should be 
+named with ids longer than 2 characters in length. The media.type property 
defaults to 'html'. 
+The 'any' value for the decorates property is mapped to the generic deployment 
directory.
+The deployer will relocate the locale specific content to satisfy J2 content 
locators as 
+necessary on deploy and undeploy. The current implementation supports only 2 
+character language and country codes.
+</p>    
+</section>
+-->
+</body>
+</document>
+

Added: 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-jpt.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-jpt.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-jpt.xml
 (added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-jpt.xml
 Thu Jul 16 21:01:09 2015
@@ -0,0 +1,165 @@
+<?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>Guide to Jetspeed Power Tool</title>
+    <subtitle>Documentation for Designers working with the Jetspeed Power 
Tool.</subtitle>
+    <authors>
+      <person name="David Sean Taylor" email="[email protected]"/>
+    </authors>
+  </properties>
+  <body>
+<section name="Jetspeed Power Tool">
+<p>
+The Jetspeed Power Tool (JPT) is a velocity tool used in Layouts and 
Decorators to generate dynamic content.
+The JPT is a request level velocity tool, and is available to all layouts and 
decorators.
+The JPT is referenced in your decorator or layout as:
+<source test=""><![CDATA[
+$jetspeed
+]]></source>
+All public JPT APIs can be accessed with:
+<ul>
+    <li>Java dot notation for methods</li>
+    <li>JavaBean shortcuts for properties (getter/setter)</li>    
+</ul>
+Example of calling a method:
+<source test=""><![CDATA[
+# call a method 'getTitle' with 2 parameters
+$jetspeed.getTitle($myPE, $myF)
+]]></source>
+Example of calling getting a property:
+<source test=""><![CDATA[
+# get the page bean, equivalent to $jetspeed.getPage()
+$jetspeed.page
+]]></source>
+</p>
+</section>
+<section name="JPT Velocity API">
+<p>The table below defines the Jetspeed Power Tool API for Velocity</p>
+<hr/>
+<table>
+  <tr> 
+    <th>API</th>
+    <th><b>decorateAndInclude($fragment)</b></th>
+  </tr>
+  <tr>
+    <td>Description</td>
+    <td>
+        Retrieves the application relative path to a decorator template for a 
given 
+        fragment parameter <b>($fragment)</b> to be included by Velocity. 
+        Should be passed as a parameter to the Velocity #parse function 
(#parse includes 
+        another Velocity template). 
+     </td>
+  </tr>
+  <tr>
+    <td>Parameter</td>
+    <td><b>$fragment</b> - the fragment to be included and decorated.</td>     
    
+  </tr>
+  <tr>
+    <td>Returns</td>
+    <td><b>String</b> - Application relative path to a decorator template.</td>
+  </tr>
+  <tr>
+    <td>Examples</td>
+    
<td>#parse($jetspeed.decorateAndInclude($fragment))<br/>returns<br/>/WEB-INF/decorations/layout/html/tigris/header.vm</td>
+  </tr>  
+</table>
+<hr/>
+<table>
+  <tr> 
+    <th>API</th>
+    <th><b>getAbsoluteUrl(appRelativePath)</b></th>
+  </tr>
+  <tr>
+    <td>Description</td>
+    <td>
+        Given a relative path to an portlet application resource, returns an 
absolute URL.
+        This API should not be used to reference template ULS since they are 
usually inaccessible 
+        as absolute URLs because they are often located in a CMS or behind the 
secured WEB-INF directory.
+     </td>
+  </tr>
+  <tr>
+    <td>Parameter</td>
+    <td><b>relativePath</b> - a relative path to a resource in the decorator 
package.</td>         
+  </tr>
+  <tr>
+    <td>Returns</td>
+    <td><b>String</b> - The full absolute path to a web resource</td>
+  </tr>
+  <tr>
+    <td>Examples</td>
+    
<td>$jetspeed.getAbsoluteUrl("/images/test.gif")<br/>returns<br/>http://localhost:8080/jetspeed/portal/images/test.gif</td>
+  </tr>  
+</table>
+<hr/>
+<table>
+  <tr> 
+    <th>API</th>
+    <th><b>columns</b></th>
+  </tr>
+  <tr>
+    <td>Description</td>
+    <td>
+        Returns a list of column for the current fragment during a layout 
aggregation.
+     </td>
+  </tr>
+  <tr>
+    <td>Parameter</td>
+    <td><b>-</b></td>         
+  </tr>
+  <tr>
+    <td>Returns</td>
+    <td><b>List</b> - a standard Java List of sub-fragments or portlets</td>
+  </tr>
+  <tr>
+    <td>Examples</td>
+    <td>#set ($table = $jetspeed.columns)<br/>#foreach($entry in $table)
+    </td>
+  </tr>  
+</table>
+<hr/>
+<table>
+  <tr> 
+    <th>API</th>
+    <th><b></b></th>
+  </tr>
+  <tr>
+    <td>Description</td>
+    <td>
+     </td>
+  </tr>
+  <tr>
+    <td>Parameter</td>
+    <td><b></b></td>         
+  </tr>
+  <tr>
+    <td>Returns</td>
+    <td><b></b></td>
+  </tr>
+  <tr>
+    <td>Examples</td>
+    <td></td>
+  </tr>  
+</table>
+<hr/>
+
+</section>
+
+</body>
+</document>
+

Added: 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-l10n.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-l10n.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-l10n.xml
 (added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-l10n.xml
 Thu Jul 16 21:01:09 2015
@@ -0,0 +1,88 @@
+<?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>Guide to Localization for Jetspeed 2</title>
+    <subtitle>Jetspeed 2 Localization for your language</subtitle>
+    <authors>
+      <person name="Shinsuke Sugaya" email="[email protected]"/>
+    </authors>
+  </properties>
+  <body>
+<section name="Translate Messages">
+<p>
+Jetspeed2 has the translatable messages in Java properties and XML files
+</p>
+<subsection name="Properties File">
+<p>
+This document shows how to create a message properties file for your language.
+</p>
+<h5>1. Find <code>*_en.properties</code></h5>
+<p>
+<code>*_en.properties</code> is English message properties file. You can use 
it as a base properties file for your language. 
+</p>
+<p>
+If you use UNIX system, you can use <code>find</code> command to find the 
properties files:
+</p>
+<source test=""><![CDATA[
+$ cd ${jetspeed-2-home}
+$ find . -type f | grep -v CVS | grep _en.properties
+]]></source>
+<h5>2. Copy <code>*_en.properties</code> to <code>*_&lt;your language, 
[country and variant]&gt;.properties.orig</code></h5>
+<p>
+To translate messages, copy the properties file for your language. For more 
information about Language, Country and Variant code, see "<a 
href="http://java.sun.com/j2se/1.4.2/docs/api/java/util/Locale.html";>JavaDoc: 
Locale Class</a>", "<a 
href="http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt";>ISO Language 
Code</a>" and "<a 
href="http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html";>ISO Country 
Code</a>".
+</p>
+<p>
+Example:
+</p>
+<source test=""><![CDATA[
+$ cd 
applications/localeselector/src/java/org/apache/jetspeed/portlets/localeselector/resources/
+$ cp LocaleSelectorResources_en.properties 
LocaleSelectorResources_ja.properties.orig
+]]></source>
+<p>
+where <code>*_ja.properties</code> is Japanese message file.
+</p>
+<h5>3. Translate *_&lt;your language, [country and 
variant]&gt;.properties.orig in your language</h5>
+<p>
+For more information about a properties file, see "<a 
href="http://java.sun.com/j2se/1.4.2/docs/api/java/util/Properties.html#load(java.io.InputStream)">JavaDoc:
 Properties Class</a>".
+</p>
+<h5>4. Run <code>native2ascii</code> command</h5>
+<p>
+Since the properties file is assumed to be using the ISO 8859-1 character 
encoding, use <code>native2ascii</code> command to convert to ISO 8859-1. For 
more information about "<a 
href="http://java.sun.com/j2se/1.4.2/docs/tooldocs/solaris/native2ascii.html";>native2ascii(Solaris)</a>"
 or "<a 
href="http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/native2ascii.html";>native2ascii(Windows)</a>".
+</p>
+<p>
+Example:
+</p>
+<source test=""><![CDATA[
+$ native2ascii LocaleSelectorResources_ja.properties.orig 
LocaleSelectorResources_ja.properties
+]]></source>
+<h5>5. Build &amp; Deploy Jetspeed2, and see if your translation is 
displayed</h5>
+<p>
+For more information about Jetspeed 2 build and deploy steps, see "<a 
href="../getting-started.html">Getting Started</a>".
+</p>
+<h5>6. Create a new JIRA issue, and attach <code>*_&lt;your language, [country 
and variant]&gt;.properties</code></h5>
+<p>
+JIRA site for Jetspeed 2 is <a 
href="http://issues.apache.org/jira/secure/BrowseProject.jspa?id=10492";>http://issues.apache.org/jira/secure/BrowseProject.jspa?id=10492</a>.
 To create a new JIRA issue, go to "CREATE NEW ISSUE"(select "l10n" as 
Component/s name).
+</p>
+
+</subsection>
+</section>
+
+</body>
+</document>
+

Added: 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-layouts.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-layouts.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-layouts.xml
 (added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-layouts.xml
 Thu Jul 16 21:01:09 2015
@@ -0,0 +1,141 @@
+<?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>Layouts and Decorations</title>
+    <subtitle>Documentation for Designers working with Jetspeed Layouts and 
Decorations</subtitle>
+    <authors>
+      <person name="David Sean Taylor" email="[email protected]"/>
+    </authors>
+  </properties>
+  <body>
+<section name="Layouts">
+<p>
+Layout templates are packaged in special Jetspeed-specific and deployable 
portlet applications. 
+Layout templates control the overall aggregation of a portal page. Layout 
templates are 
+combined with portlets, providing a component model for aggregation. 
Jetspeed-2 comes out 
+of the box with several layout components including one, two and three column 
layouts. 
+See the <a href='#Jetspeed-2 Layouts'>Jetspeed-2 Layouts</a> below for all 
available Layouts in the 
+default Jetspeed-2 system. Of course you can define and derive your own 
layouts. 
+</p>
+<p>
+With regards to aggregation, layouts define how a single portal page is 
aggregated.
+A l ayout defines the fashion in which grouping of fragments
+will organized relative to the final, aggregated
+content of a request to the portal. Layouts are defined by 
+a portlet which applies an algorithm to a template to 
+generate the aggregated content of a page. Typical
+algorithms are two column, three column, nested.   
+</p>
+<p>A layout is made up of:
+<ul>
+  <li>One or more templates</li>
+  <li>A template descriptor</li>
+  <li>Images</li>
+  <li>A Stylesheet (CSS)</li>
+  <li>Macros</li>
+</ul>
+</p>
+<p>
+    <img src='images/layouts-overview.png'/>
+</p>
+</section>
+<section name="Layouts Packaging">
+<p>
+Layouts are packaged as standard portlet applications.
+Layouts usual have a 
+</p>
+<p>
+Operations Supported:
+<ul>
+    <li>Deploy</li>
+    <li>Un-deploy</li>
+    <li>Re-deploy</li>
+</ul>
+</p>    
+</section>
+<section name='Jetspeed-2 Layouts'>
+<p>
+Jetspeed-2 comes out of the box with several layout components including one, 
two and three 
+column layouts. Of course you can define and derive your own layouts. The 
table below lists
+the available layout components in Jetspeed. When customizing (editing) a page,
+the layout component is selected. One layout may be assigned per PSML page.
+</p>    
+<table>
+  <tr> 
+    <th>Layout</th>
+    <th>Type</th>
+    <th>Columns</th>
+    <th>Sizes</th>
+    <th>Modes</th>
+    <th>Description</th>
+  </tr>    
+  <tr>
+    <td><b>VelocityOneColumn</b></td>
+    <td>OneColumn</td>
+    <td>1</td>
+    <td>100%</td>
+    <td>view,edit,help</td>
+    <td>A single column display of one or more fragments taking up 100% of the 
portlet display area.</td>
+  </tr>
+  <tr>
+    <td><b>VelocityTwoColumns</b></td>
+    <td>TwoColumns</td>
+    <td>2</td>
+    <td>50%,50%</td>
+    <td>view,edit,help</td>
+    <td>A two column display of one or more fragments where each column is 
allocated to 50% of the portlet display area respectively.
+        Fragments may be placed in either column using <a 
href='guide-psml.html'>PSML</a> fragment definitions.
+     </td>
+  </tr>
+  <tr>
+    <td><b>VelocityTwoColumnsSmallLeft</b></td>
+    <td>TwoColumns</td>
+    <td>2</td>
+    <td>15%,85%</td>
+    <td>view,edit,help</td>
+    <td>A two column display of one or more fragments where the left column is 
allocated to 15% of the portlet display area,
+        and the right column is allocated to 85% of the portlet display area.
+        Fragments may be placed in either column using <a 
href='guide-psml.html'>PSML</a> fragment definitions.
+     </td>
+  </tr>
+  <tr>
+    <td><b>VelocityThreeColumns</b></td>
+    <td>ThreeColumns</td>
+    <td>3</td>
+    <td>33%,33%,33%</td>
+    <td>view,edit,help</td>
+    <td>A three column display of one or more fragments where each column is 
allocated to 33% of the portlet display area respectively.
+      Fragments may be placed in either column using <a 
href='guide-psml.html'>PSML</a> fragment definitions.
+     </td>
+  </tr>
+  <tr>
+    
<td><b>VelocityOneColumnNoActions,<br/>VelocityTwoColumnsNoActions,<br/>VelocityThreeColumnsNoActions</b></td>
+    <td></td>
+    <td></td>
+    <td></td>
+    <td>view</td>
+    <td>Same parameters as their counterparts with actions, but no decorator 
actions are displayed.
+     </td>
+  </tr>  
+</table>
+</section>
+
+</body>
+</document>
+

Added: 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-pipeline.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-pipeline.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-pipeline.xml
 (added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-pipeline.xml
 Thu Jul 16 21:01:09 2015
@@ -0,0 +1,100 @@
+<?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-2 Pipeline</title>
+               <subtitle>Documentation for Jetspeed-2 Pipeline</subtitle>
+               <authors>
+                       <person name="David Le Strat" 
email="[email protected]" />
+               </authors>
+       </properties>
+       <body>
+               <section name="Jetspeed-2 Pipeline">
+                       <p>As described below, one of key component of the 
Jetspeed-2 portal engine is its request pipeline.
+                       <br/><br/>
+                       <img src="images/j2-overview.gif" border="0"/>
+                       <br/>
+                       In Jetspeed-2 request are processed through a series of 
<code>Valve</code> assembled together as a
+                       pipeline.  
+                       </p>
+               </section>
+        <section name="Request Pipeline">
+            <p>
+            In Jetspeed-2, a request pipeline performs individual operations 
to the request.
+            </p>
+            <subsection name="Pipeline Concepts">
+            <p>
+            A <code>Pipeline</code> is made of <code>Valves</code> chained 
together in a chain of responsibility pattern.
+            The <code>JetspeedPipeline</code> implementation assembles a 
ordered list of <code>Valves</code> that are
+            processed sequentially.
+            <br/><br/>
+            <img src="images/pipeline-c.gif" border="0"/><br/><br/>
+            <img src="images/pipeline-assembly.gif" border="0"/>
+            </p>       
+            </subsection>
+            <subsection name="Jetspeed-2 Valves">
+            <p>
+            Jetspeed-2 provides various type of <code>Valve</code> as 
illustrated below:<br/><br/>
+               <img src="images/valve-c.gif" border="0"/><br/>
+                       The above valves serve the following purpose:
+               <table>
+               <tr>
+                       <th>Valve Name</th>
+                       <th>Description</th>
+               </tr>
+               <tr>
+                       <td>ActionValve</td>
+                       <td>Check if <code>PortletAction</code> needs to be 
processed and process it, if required.
+                       Used in the portlet pipeline.</td>
+               </tr>
+               <tr>
+                       <td>AggregateValve</td>
+                       <td>Invokes all Layout components in render mode to 
aggregate the generated contents and
+                       send the result to the client.</td>
+               </tr>
+               <tr>
+                       <td>CapabilityValve</td>
+                       <td>Identifies the browser and adds a 
<code>CapabilityMap</code> to the <code>RequestContext</code>.</td>
+               </tr>
+               <tr>
+                       <td>CleanupValve</td>
+                       <td>Looks for JSP pages that were pushed onto the 
<code>org.apache.jetspeed.renderStack</code>
+                                       request attribute, and attempts to 
include them.</td>
+               </tr>
+               <tr>
+                       <td>LoginValidationValve</td>
+                       <td>Checks if a login attempt failed and determines the 
cause.</td>
+               </tr>
+               <tr>
+                       <td>PasswordCredentialValve</td>
+                       <td>Checks the PasswordCredential (only once) after a 
User is logged in and redirects to a 
+                       change password page if necessary.</td>
+               </tr>
+               <tr>
+                       <td>SecurityValve</td>
+                       <td>Authenticates the user or redirects to Login if 
necessary, adds the
+                                       authenticated Subject to the 
<code>RequestContext</code>.</td>
+               </tr>
+            </table>
+               </p>
+            </subsection>
+        </section>
+
+       </body>
+</document>
+

Added: 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-portal-design.xml
URL: 
http://svn.apache.org/viewvc/portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-portal-design.xml?rev=1691449&view=auto
==============================================================================
--- 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-portal-design.xml
 (added)
+++ 
portals/site/jetspeed/jetspeed-2.3/jetspeed-guide-dev/src/site/xdoc/guide-portal-design.xml
 Thu Jul 16 21:01:09 2015
@@ -0,0 +1,174 @@
+<?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>Guide to Portal Design</title>
+    <subtitle>Documentation for Designers working with Jetspeed Portal 
Design</subtitle>
+    <authors>
+      <person name="David Sean Taylor" email="[email protected]"/>
+    </authors>
+  </properties>
+  <body>
+<section name="Portal Design Introduction">
+<p>
+The Java Portlet API (JSR-168) defines the Java standard interface for 
programming portlets. 
+The Java Portlet API specification enables interoperability between Portlets 
and Portals. 
+It is the standard specification for developing Java portlets. However the 
Java Portlet API
+does not define standards for laying out and aggregating portlets and markup 
on a page.
+The documentation here under "Portal Design" covers:
+<ul>
+  <li><a href='guide-psml.html'>Page Aggregation - see the section on 
PSML</a></li>    
+  <li><a href='guide-decorators.html'>Page and Portlet Decorators</a></li>    
+  <li><a href='guide-layouts.html'>Page Layouts</a></li>    
+  <li><a href='guide-jpt.html'>The Jetspeed Power Tool</a></li>    
+  <li><a href='#Template Locators'>Template Locators</a></li>          
+  <li><a href='#Terminology'>Terminology</a></li>          
+</ul>
+</p>
+</section>
+<section name='Templates'>
+<p>
+Rendering one or more portlets into a portlet page is largely made up of the 
process of aggregating
+portlets as dynamic content with templates. Jetspeed-2 makes use of Velocity 
templates in 
+creating a page layout. Although the Jetspeed-2 architecture fully supports 
the use of JSP templates for
+decorators and layouts, the developers thus far have chosen Velocity as the 
tool of choice for writing
+templates. There are two types of templates in Jetspeed: layouts and 
decorators. 
+The process of rendering a page is the combined aggregation of a layout 
template, 
+a page decorator template, a PSML definition, and one or more portlet 
decorator templates.
+</p>
+<subsection name='Layout Templates'>
+<p>
+Layout templates are packaged in special Jetspeed-specific and deployable 
portlet applications. 
+Layout templates control the overall aggregation of a portal page. Layout 
templates are 
+combined with portlets, providing a component model for aggregation. 
Jetspeed-2 comes out 
+of the box with several layout components including one, two and three column 
layouts. 
+See the <a href='guide-layouts.html'>Layout Documentation</a> for all 
available Layouts in the 
+default Jetspeed-2 system. Of course you can define and derive your own 
layouts. 
+</p>
+</subsection>
+<subsection name='Decorators'>
+ <p>
+Decorator templates are packaged in special Jetspeed-specific and deployable 
archives. 
+Layout templates control the overall aggregation of a portal page. Layout 
templates are 
+combined with portlets, providing a component model for aggregation. 
Jetspeed-2 comes out 
+of the box with several layout components including one, two and three column 
layouts. 
+See the <a href='guide-decorators.html'>Decorator Documentation</a> for all 
available Layouts in the 
+default Jetspeed-2 system. Of course you can define and derive your own 
layouts. 
+</p>
+</subsection>
+</section>
+<section name='Template Locators'>
+<p>
+Templates are located by the Jetspeed Template (and Decorator) Locator 
Component. These components 
+locates templates using a normalized name/value pair URL scheme. 
+using this scheme in what is called a 'normalized' URL to either a decorator 
or layout.
+However, templating engines such as  Velocity need to work with templates 
using paths to templates that are
+relative of a document root. The <a href='guide-jpt.html'>Jetspeed Power 
Tool</a> facilitates conversion between normalized
+and relative paths. Typically in the Spring configuration, the template root 
of all decorators is defined as:
+<source test=""><![CDATA[
+${applicationRoot}/WEB-INF/decorations
+]]></source>
+and the root of all layouts (per portlet application) is defined as:
+<source test=""><![CDATA[
+${applicationRoot}/WEB-INF/templates
+]]></source>
+The Normalized Path is defined with named pair values. Examples:
+<source test=""><![CDATA[
+type/layout/media-type/html/name/tigris/decorator.vm
+type/decorator/media-type/html/language/en/country/US/name/metal/decorator.vm
+]]></source>
+<table>
+    <tr>
+        <th>Name</th>
+        <th>Value</th>
+        <th>Description</th>
+    </tr>
+    <tr>
+        <td>type</td>
+        <td>layout | portlet | generic</td>
+        <td>The type of template locator. Expected to be either one of the 
following values 
+            <b>layout</b>, <b>portlet</b> (decorator) or <b>generic</b> 
(decorator). Layouts can be for either page layouts 
+            or decorators. Generic type decorators can be used
+            for either portlets or page decorations.</td>
+    </tr>
+    <tr>
+        <td>media-type</td>
+        <td>html | wml | dhtml | ...</td>
+        <td>The markup media type to be located. Should be a valid media type 
(html, dhtml, wml...)</td>
+    </tr>
+    <tr>
+        <td>name</td>
+        <td>A valid decorator or layout name</td>
+        <td>The name of the decorator or layout. Usually corresponds to a 
+            sub-directory holding the decorator or layout templates, images 
and stylesheets.</td>
+    </tr>
+    <tr>
+        <td>language</td>
+        <td>A valid ISO-639 standard two-character language abbreviation</td>
+        <td>ISO-639 (http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt) 
defines a standard for language abbreviations.
+            Typical abbreviations are en for english, fr for french, de for 
German, ...</td>
+    </tr>
+    <tr>
+        <td>country</td>
+        <td>A valid ISO-3166 standard two-character country code 
abbreviation</td>
+        <td>ISO-3166 
(http://userpage.chemie.fu-berlin.de/diverse/doc/ISO_3166.html) defines a 
standard for country code abbreviations.
+            Typical abbreviations are US for United States, FR for France, 
...</td>
+    </tr>
+    
+</table>
+
+</p>
+</section>
+
+<section name='Terminology'>
+<table>
+    <tr>
+        <th>
+            Term
+        </th>
+        <th>
+            Definition            
+        </th>
+    </tr>
+    <tr>
+        <td>
+            Layout
+        </td>
+        <td>
+Defines the fashion in which grouping of Fragments
+will organized relative to the final, aggregated
+content of a request to the portal. Layouts are defined by 
+a portlet which applies an algorithm to a template to 
+generate the aggregated content of a page. Typical
+algorithms are two column, three column, nested.           
+        </td>
+    </tr>
+    <tr>
+        <td>
+            TODO: left off here: 
+        </td>
+        <td>
+            fragment, decoration, page, page decorator, portlet decorator, 
+            application relative, normalized template path, absolute URL
+        </td>
+    </tr>    
+</table>
+</section>
+</body>
+</document>
+


Reply via email to