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' 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 + <HEAD> 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 <base> 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>*_<your language, [country and variant]>.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 *_<your language, [country and variant]>.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 & 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>*_<your language, [country and variant]>.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> +
