cocoon-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From cross...@apache.org
Subject svn commit: r345438 [39/286] - in /cocoon/site/site/2.1: ./ developing/ developing/portal/ developing/portal/coplets/ developing/webapps/ developing/webapps/authentication/ faq/ howto/ installing/ plan/ plan/documentation/ plan/otherplanning/ plan/over...
Date Fri, 18 Nov 2005 04:13:22 GMT
Added: cocoon/site/site/2.1/developing/webapps/portal.html
URL: http://svn.apache.org/viewcvs/cocoon/site/site/2.1/developing/webapps/portal.html?rev=345438&view=auto
==============================================================================
--- cocoon/site/site/2.1/developing/webapps/portal.html (added)
+++ cocoon/site/site/2.1/developing/webapps/portal.html Thu Nov 17 20:00:02 2005
@@ -0,0 +1,2487 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta content="Apache Forrest" name="Generator">
+<meta name="Forrest-version" content="0.8-dev">
+<meta name="Forrest-skin-name" content="pelt">
+<title>Building Portals with Cocoon</title>
+<link type="text/css" href="../../../skin/basic.css" rel="stylesheet">
+<link media="screen" type="text/css" href="../../../skin/screen.css" rel="stylesheet">
+<link media="print" type="text/css" href="../../../skin/print.css" rel="stylesheet">
+<link type="text/css" href="../../../skin/profile.css" rel="stylesheet">
+<script src="../../../skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="../../../skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="../../../skin/fontsize.js" language="javascript" type="text/javascript"></script>
+<link rel="shortcut icon" href="../../../images/cocoon.ico">
+</head>
+<body onload="init()">
+<script type="text/javascript">ndeSetTextSize();</script>
+<div id="top">
+<!--+
+    |breadtrail
+    +-->
+<div class="breadtrail">
+<a href="http://www.apache.org/">apache</a> &gt; <a href="http://cocoon.apache.org/">cocoon</a><script src="../../../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script>
+</div>
+<!--+
+    |header
+    +-->
+<div class="header">
+<!--+
+    |start group logo
+    +-->
+<div class="grouplogo">
+<a href="http://www.apache.org/"><img class="logoImage" alt="Apache" src="../../../images/cocoon-project-logo.png" title="The Apache Software Foundation"></a>
+</div>
+<!--+
+    |end group logo
+    +-->
+<!--+
+    |start Project Logo
+    +-->
+<div class="projectlogo">
+<a href="http://cocoon.apache.org/"><img class="logoImage" alt="Apache Cocoon" src="../../../images/cocoon-logo.gif" title="Apache Cocoon"></a>
+</div>
+<!--+
+    |end Project Logo
+    +-->
+<!--+
+    |start Search
+    +-->
+<div class="searchbox">
+<form action="http://www.google.com/search" method="get" class="roundtopsmall">
+<input value="cocoon.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google">&nbsp; 
+                    <input name="Search" value="Search" type="submit">
+</form>
+</div>
+<!--+
+    |end search
+    +-->
+<!--+
+    |start Tabs
+    +-->
+<ul id="tabs">
+<li>
+<a class="base-not-selected" href="../../../2.1/index.html">Home</a>
+</li>
+</ul>
+<!--+
+    |end Tabs
+    +-->
+</div>
+</div>
+<div id="main">
+<div id="publishedStrip">
+<!--+
+    |start Subtabs
+    +-->
+<div id="level2tabs"></div>
+<!--+
+    |end Endtabs
+    +-->
+<script type="text/javascript"><!--
+document.write("Last Published: " + document.lastModified);
+//  --></script>
+</div>
+<!--+
+    |breadtrail
+    +-->
+<div class="breadtrail">
+             
+             &nbsp;
+           </div>
+<!--+
+    |start Menu, mainarea
+    +-->
+<!--+
+    |start Menu
+    +-->
+<div id="menu">
+<div onclick="SwitchMenu('menu_1.1', '../../../skin/')" id="menu_1.1Title" class="menutitle">About</div>
+<div id="menu_1.1" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/index.html">Index</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/features.html">Features</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/news.html">News</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/license.html">License</a>
+</div>
+<div class="menuitem">
+<a href="http://cocoon.apache.org/mirror.cgi">Download</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.2', '../../../skin/')" id="menu_selected_1.2Title" class="menutitle" style="background-image: url('../../../skin/images/chapter_open.gif');">Documentation</div>
+<div id="menu_selected_1.2" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="../../../2.1/introduction.html">Introduction</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.2', '../../../skin/')" id="menu_1.2.2Title" class="menutitle">Tracks</div>
+<div id="menu_1.2.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/tracks/index.html">Introduction</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/tracks/first-steps-track.html">First steps</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/tracks/web-publishing-track.html">Web publishing</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.3', '../../../skin/')" id="menu_1.2.3Title" class="menutitle">Installation</div>
+<div id="menu_1.2.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="http://cocoon.apache.org/mirror.cgi">Download</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/installing/index.html">Intro</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/installing/requirements.html">System requirements</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/installing/updating-older.html">Updating to version 2.1.5</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/installing/jars.html">Jars</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/installing/tests.html">Overview</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/overview.html">Overview</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5', '../../../skin/')" id="menu_1.2.5Title" class="menutitle">User Guide</div>
+<div id="menu_1.2.5" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/index.html">User Documentation</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.2', '../../../skin/')" id="menu_1.2.5.2Title" class="menutitle">Concepts</div>
+<div id="menu_1.2.5.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/index.html">Overview</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.2.2', '../../../skin/')" id="menu_1.2.5.2.2Title" class="menutitle">Sitemap</div>
+<div id="menu_1.2.5.2.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/sitemap.html">Section Home</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/sitemap/sitemap-examples.html">Example sitemap snippets</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/views.html">Views</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/caching.html">Caching</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/actions.html">Actions</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/matchers_selectors.html">Matchers and Selectors</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/catalog.html">Entity Catalogs</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/mrustore.html">MRUMemoryStore</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/persistence.html">Persistence</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/storejanitor.html">StoreJanitor</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/xmlsearching.html">XML Searching</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/validation.html">XML Validation</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/databases.html">Databases</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/modules.html">Modules</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/modules-ref.html">Modules Reference</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/redirection.html">Redirection</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/profiler.html">Profiler</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/concepts/errorhandling.html">Error Handling</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3', '../../../skin/')" id="menu_1.2.5.3Title" class="menutitle">Sitemap Components</div>
+<div id="menu_1.2.5.3" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.2.5.3.1', '../../../skin/')" id="menu_1.2.5.3.1Title" class="menutitle">Generators</div>
+<div id="menu_1.2.5.3.1" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/generators.html">Overview</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.1.2', '../../../skin/')" id="menu_1.2.5.3.1.2Title" class="menutitle">Default</div>
+<div id="menu_1.2.5.3.1.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/default/file-generator.html">File Generator</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.1.3', '../../../skin/')" id="menu_1.2.5.3.1.3Title" class="menutitle">Core</div>
+<div id="menu_1.2.5.3.1.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/calendar-generator.html">Calendar Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/directory-generator.html">Directory Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/file-generator.html">File Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/imagedirectory-generator.html">Imagedirectory Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/jx-generator.html">Jx Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/linkstatus-generator.html">Linkstatus Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/mp3directory-generator.html">MP3directory Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/error-generator.html">Notifying Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/request-generator.html">Request Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/sessionattribute-generator.html">SessionAttribute Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/status-generator.html">Status Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/stream-generator.html">Stream Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/xpathdirectory-generator.html">Xpathdirectory Generator</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.1.4', '../../../skin/')" id="menu_1.2.5.3.1.4Title" class="menutitle">Optional</div>
+<div id="menu_1.2.5.3.1.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/extractor-generator.html">Fragment Extractor Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/html-generator.html">HTML Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/jsp-generator.html">JSP Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/php-generator.html">PHP Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/profile-generator.html">Profile Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/script-generator.html">Script Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/search-generator.html">Search Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/serverpages-generator.html">Server Pages Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/velocity-generator.html">Velocity Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/wsproxy-generator.html">Web Service Proxy Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/xmldbcollection-generator.html">XML:DB Collection Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/xmldb-generator.html">XML:DB Generator</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.2', '../../../skin/')" id="menu_1.2.5.3.2Title" class="menutitle">Transformers</div>
+<div id="menu_1.2.5.3.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/transformers.html">Overview</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.2.2', '../../../skin/')" id="menu_1.2.5.3.2.2Title" class="menutitle">Default</div>
+<div id="menu_1.2.5.3.2.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/default/xslt-transformer.html">XSLT Transformer</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.2.3', '../../../skin/')" id="menu_1.2.5.3.2.3Title" class="menutitle">Core</div>
+<div id="menu_1.2.5.3.2.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/extractor-transformer.html">Fragment Extractor Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/i18nTransformer.html">I18n Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/jpath-transformer.html">JPath Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/log-transformer.html">Log Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/filter-transformer.html">Filter Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/readdomsession-transformer.html">Read DOM Session Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/rolefilter-transformer.html">RoleFilter Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/simpleform-transformer.html">SimpleForm Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/simpleforminstance-transformer.html">SimpleFormInstance Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/writedomsession-transformer.html">Write DOM Session Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/xinclude-transformer.html">Xinclude Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/cinclude-transformer.html">Cinclude Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/encodeurl-transformer.html">EncodeUrl Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/sourcewriting-transformer.html">Sourcewriting Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/augment-transformer.html">Augment Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/jx-template-transformer.html">JX Template Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/xslt-transformer.html">XSLT Transformer</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.2.4', '../../../skin/')" id="menu_1.2.5.3.2.4Title" class="menutitle">Optional</div>
+<div id="menu_1.2.5.3.2.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/ldap-transformer.html">LDAP Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/lexer-transformer.html">Lexical Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/parser-transformer.html">Parser Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/pattern-transformer.html">Pattern Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/session.html">Session Transformer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/sql-transformer.html">SQL Transformer</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.3', '../../../skin/')" id="menu_1.2.5.3.3Title" class="menutitle">Serializers</div>
+<div id="menu_1.2.5.3.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/serializers.html">Overview</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.3.2', '../../../skin/')" id="menu_1.2.5.3.3.2Title" class="menutitle">Default</div>
+<div id="menu_1.2.5.3.3.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/default/html-serializer.html">HTML Serializer</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.3.3', '../../../skin/')" id="menu_1.2.5.3.3.3Title" class="menutitle">Core</div>
+<div id="menu_1.2.5.3.3.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/html-serializer.html">HTML Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/xhtml-serializer.html">XHTML Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/xml-serializer.html">XML Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/text-serializer.html">Text Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/wap-serializer.html">WAP/WML Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/svg-serializer.html">SVG Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/svgxml-serializer.html">SVG/XML Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/svgjpeg-serializer.html">SVG/JPEG Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/svgpng-serializer.html">SVG/PNG Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/svgtiff-serializer.html">SVG/TIFF Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/vrml-serializer.html">VRML Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/link-serializer.html">Link Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/ziparchive-serializer.html">Zip archive Serializer</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.3.4', '../../../skin/')" id="menu_1.2.5.3.3.4Title" class="menutitle">Optional</div>
+<div id="menu_1.2.5.3.3.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/pdf-serializer.html">PDF Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/ps-serializer.html">PS Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/pcl-serializer.html">PCL Serializer</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/xls-serializer.html">HSSF (XLS) Serializer</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.4', '../../../skin/')" id="menu_1.2.5.3.4Title" class="menutitle">Matchers</div>
+<div id="menu_1.2.5.3.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/matchers.html">Overview</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.4.2', '../../../skin/')" id="menu_1.2.5.3.4.2Title" class="menutitle">Default</div>
+<div id="menu_1.2.5.3.4.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/default/wildcarduri-matcher.html">WildCard URI Matcher</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.4.3', '../../../skin/')" id="menu_1.2.5.3.4.3Title" class="menutitle">Core</div>
+<div id="menu_1.2.5.3.4.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/core/wildcarduri-matcher.html">WildCard URI Matcher</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/core/wildcardheader-matcher.html">WildCard Header Matcher</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.4.4', '../../../skin/')" id="menu_1.2.5.3.4.4Title" class="menutitle">Optional</div>
+<div id="menu_1.2.5.3.4.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/optional/template-matcher.html">Template Matcher</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.5', '../../../skin/')" id="menu_1.2.5.3.5Title" class="menutitle">Selectors</div>
+<div id="menu_1.2.5.3.5" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/selectors.html">Overview</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.5.2', '../../../skin/')" id="menu_1.2.5.3.5.2Title" class="menutitle">Default</div>
+<div id="menu_1.2.5.3.5.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/default/browser-selector.html">Browser Selector</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.5.3', '../../../skin/')" id="menu_1.2.5.3.5.3Title" class="menutitle">Core</div>
+<div id="menu_1.2.5.3.5.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/browser-selector.html">Browser Selector</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/host-selector.html">Host Selector</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/parameter-selector.html">Parameter Selector</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/requestattribute-selector.html">Request Attribute Selector</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/requestmethod-selector.html">Request Method Selector</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/requestparameter-selector.html">Request Parameter Selector</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/resourceexists-selector.html">Resource Exists Selector</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/regular-expression-header-selector.html">Regular-expression Header Selector</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.5.4', '../../../skin/')" id="menu_1.2.5.3.5.4Title" class="menutitle">Scratchpad</div>
+<div id="menu_1.2.5.3.5.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/scratchpad/date-selector.html">Date Selector</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.6', '../../../skin/')" id="menu_1.2.5.3.6Title" class="menutitle">Actions</div>
+<div id="menu_1.2.5.3.6" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/actions.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/database-actions.html">Database</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.6.3', '../../../skin/')" id="menu_1.2.5.3.6.3Title" class="menutitle">Optional</div>
+<div id="menu_1.2.5.3.6.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/optional/sendmail-action.html">Sendmail Action</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/optional/session-action.html">Session Action</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/optional/script-action.html">Script Action</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.7', '../../../skin/')" id="menu_1.2.5.3.7Title" class="menutitle">Readers</div>
+<div id="menu_1.2.5.3.7" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/readers.html">Overview</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.7.2', '../../../skin/')" id="menu_1.2.5.3.7.2Title" class="menutitle">Default</div>
+<div id="menu_1.2.5.3.7.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/default/resource-reader.html">Resource Reader</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.7.3', '../../../skin/')" id="menu_1.2.5.3.7.3Title" class="menutitle">Core</div>
+<div id="menu_1.2.5.3.7.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/core/image-reader.html">Image Reader</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/core/resource-reader.html">Resource Reader</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.7.4', '../../../skin/')" id="menu_1.2.5.3.7.4Title" class="menutitle">Optional</div>
+<div id="menu_1.2.5.3.7.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/optional/axisrpc-reader.html">AxisRPC Reader</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/optional/database-reader.html">Database Reader</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/optional/jsp-reader.html">JSP Reader</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.3.7.5', '../../../skin/')" id="menu_1.2.5.3.7.5Title" class="menutitle">Scratchpad</div>
+<div id="menu_1.2.5.3.7.5" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/scratchpad/directoryziparchiver-reader.html">Directory ZIP Archiver</a>
+</div>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.4', '../../../skin/')" id="menu_1.2.5.4Title" class="menutitle">Flow</div>
+<div id="menu_1.2.5.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/flow/index.html">Introduction</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/flow/continuations.html">Continuations</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/flow/how-does-it-work.html">How does it work?</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/flow/using.html">Usage</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/flow/tutor.html">Tutorial</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/flow/sitemap.html">Sitemap</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/flow/api.html">Flowscript</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/flow/java.html">Calling Java</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/flow/views.html">Views</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/flow/jxtemplate.html">JXTemplate</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/flow/jpath.html">JPath</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/flow/velocity.html">Velocity</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.5', '../../../skin/')" id="menu_1.2.5.5Title" class="menutitle">Cocoon Forms</div>
+<div id="menu_1.2.5.5" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.2.5.5.1', '../../../skin/')" id="menu_1.2.5.5.1Title" class="menutitle">Basics</div>
+<div id="menu_1.2.5.5.1" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/basics/index.html">Introduction</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/basics/sample.html">Sample</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/basics/improving_sample.html">Improving the sample</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.5.2', '../../../skin/')" id="menu_1.2.5.5.2Title" class="menutitle">Widgets</div>
+<div id="menu_1.2.5.5.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_form.html">form</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_field.html">field</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_multivaluefield.html">multivaluefield</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_booleanfield.html">booleanfield</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_repeater.html">repeater</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_output.html">output</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_submit.html">submit</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_action.html">action</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_repeater_action.html">repeater-action</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_row_action.html">row-action</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_aggregatefield.html">aggregatefield</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_upload.html">upload</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_messages.html">messages</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_imagemap.html">imagemap</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_tree.html">tree</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_group.html">group/struct</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_union.html">union</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgets/widget_class.html">class/new</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.5.3', '../../../skin/')" id="menu_1.2.5.5.3Title" class="menutitle">Widget Concepts</div>
+<div id="menu_1.2.5.5.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgetconcepts/validation.html">Validation</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgetconcepts/eventhandling.html">Event Handling</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgetconcepts/datatypes.html">Datatypes</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgetconcepts/selectionlists.html">Selection lists</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/widgetconcepts/widgetstates.html">Widget states</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.5.4', '../../../skin/')" id="menu_1.2.5.5.4Title" class="menutitle">Form Publishing</div>
+<div id="menu_1.2.5.5.4" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.2.5.5.4.1', '../../../skin/')" id="menu_1.2.5.5.4.1Title" class="menutitle">Templating</div>
+<div id="menu_1.2.5.5.4.1" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/publishing/templating.html">Section Home</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/publishing/templating/templategenerator.html">Template Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/publishing/templating/templatetransformer.html">Template Transformer</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/publishing/formsgenerator.html">Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/publishing/xslt.html">XSLT</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/binding.html">Binding Framework</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/xmlbinding.html">Simple XML Binding</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.5.7', '../../../skin/')" id="menu_1.2.5.5.7Title" class="menutitle">API</div>
+<div id="menu_1.2.5.5.7" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/api/api_javascript.html">Javascript (Flowscript)</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/api/api_java.html">Java</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/formlibraries.html">Form libraries</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/ajax.html">Ajax</a>
+</div>
+<div class="menuitem">
+<a href="http://wiki.apache.org/cocoon/Forms">Forms @ Wiki</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.6', '../../../skin/')" id="menu_1.2.5.6Title" class="menutitle">XSP</div>
+<div id="menu_1.2.5.6" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/index.html">Overview</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.6.2', '../../../skin/')" id="menu_1.2.5.6.2Title" class="menutitle">XSP</div>
+<div id="menu_1.2.5.6.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/xsp.html">Section Home</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/xsp/logicsheet.html">XSP Guide</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/xsp/xsp-internals.html">XSP Internals</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/xsp/logicsheet-concepts.html">XSP Logicsheets</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/xsp/sessions.html">Sessions</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.6.3', '../../../skin/')" id="menu_1.2.5.6.3Title" class="menutitle">Logicsheets</div>
+<div id="menu_1.2.5.6.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/logicsheets/request.html">Request</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/logicsheets/session.html">Session</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/logicsheets/esql.html">ESQL</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/logicsheets/logicsheet-forms.html">Forms</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/logicsheets/sendmail.html">Sendmail</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.5.7', '../../../skin/')" id="menu_1.2.5.7Title" class="menutitle">Offline</div>
+<div id="menu_1.2.5.7" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/userdocs/offline/index.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/offline/cli.html">Command Line</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/offline/configuration.html">CLI Configuration</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/offline/ant.html">Ant</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/userdocs/offline/bean.html">Cocoon Bean</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.2.6', '../../../skin/')" id="menu_selected_1.2.6Title" class="menutitle" style="background-image: url('../../../skin/images/chapter_open.gif');">Developer's Guide</div>
+<div id="menu_selected_1.2.6" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="../../../2.1/developing/index.html">Index</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.6.2', '../../../skin/')" id="menu_1.2.6.2Title" class="menutitle">Concepts</div>
+<div id="menu_1.2.6.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/developing/httprequest.html">Internals</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/extending.html">Extending</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/avalon.html">Avalon</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/source.html">Source Handling</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/stores.html">Stores</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/datasources.html">Using Databases</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/parent-component-manager.html">Parent CM</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/deliquick.html">DELI Quick Start</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/deli.html">DELI</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.2.6.3', '../../../skin/')" id="menu_selected_1.2.6.3Title" class="menutitle" style="background-image: url('../../../skin/images/chapter_open.gif');">Developing Webapps</div>
+<div id="menu_selected_1.2.6.3" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="../../../2.1/developing/webapps/index.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/webapps/session.html">Sessions</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/webapps/contexts.html">Session Contexts</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.6.3.4', '../../../skin/')" id="menu_1.2.6.3.4Title" class="menutitle">Authentication</div>
+<div id="menu_1.2.6.3.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/developing/webapps/authentication.html">Section Home</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/webapps/authentication/authentication-handler.html">The Authentication Handler</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/webapps/authentication/authenticating_user.html">Authenticating a User</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/webapps/authentication/user_management.html">User Management</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/webapps/authentication/application_management.html">Application Management</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/webapps/authentication/module_management.html">Module Management</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/webapps/authentication/user_administration.html">User Administration</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/webapps/authentication/summary.html">Configuration Summary</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/webapps/authentication/pipeline_patterns.html">Pipeline Patterns</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/webapps/forms.html">Simple Forms</a>
+</div>
+<div class="menupage">
+<div class="menupagetitle">Portal FW</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.6.4', '../../../skin/')" id="menu_1.2.6.4Title" class="menutitle">Building a portal using the Portal Engine</div>
+<div id="menu_1.2.6.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/developing/portal/index.html">Index</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/portal/portal-block.html">Portal Engine</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.6.4.3', '../../../skin/')" id="menu_1.2.6.4.3Title" class="menutitle">Configuring Coplets</div>
+<div id="menu_1.2.6.4.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/developing/portal/coplets.html">Section Home</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/portal/coplets/uricoplet.html">The URICoplet</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/portal/coplets/cachinguricoplet.html">The CachingURICoplet</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/portal/layout_skins.html">Layout and Skins</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/portal/events.html">Event Handling</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/portal/profiles.html">Profiles</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/portal/wsrp.html">WSRP Support</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/portal/authentication.html">Authentication</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/portal/forms.html">Form handling</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/portal/basket.html">A Basket</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/developing/web3.html">Connect to SAP R/3</a>
+</div>
+<div class="menuitem">
+<a href="http://cocoon.apache.org/2.1/apidocs/index.html">API (Javadoc)</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.7', '../../../skin/')" id="menu_1.2.7Title" class="menutitle">Tutorials</div>
+<div id="menu_1.2.7" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/tutorial/index.html">Index</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/tutorial/tutorial-develop-webapp.html">WebApp</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/tutorial/tutorial-generator.html">Custom Generator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/tutorial/tutorial-shots.html">Tutorial screenshots</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/tutorial/tutorial-rmi-generator.html">RMIServer</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.8', '../../../skin/')" id="menu_1.2.8Title" class="menutitle">FAQ</div>
+<div id="menu_1.2.8" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/faq/index.html">Index</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-install.html">Install</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-configure-environment.html">Configure</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-cvs.html">CVS/SVN</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-configure-c2.html">Configure C2</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-databases.html">Databases</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-xsp.html">XSP</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-xslt.html">XSLT</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-debugging.html">Debugging</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-sitemap.html">Sitemap</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-generators.html">Generators</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-transformers.html">Transformers</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-serializers.html">Serializers</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-matchers.html">Matchers</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-selectors.html">Selectors</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-actions.html">Actions</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/faq/faq-aggregators.html">Aggregators</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2.9', '../../../skin/')" id="menu_1.2.9Title" class="menutitle">How Tos</div>
+<div id="menu_1.2.9" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/howto/index.html">Index</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/howto/howto-explore-samples.html">Samples</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/howto/howto-paginator-transformer.html">Paginator</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/howto/howto-html-pdf-publishing.html">HTML-PDF</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/howto/wsproxy-generator.html">Web Syndication</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/howto/howto-flow-debugger.html">Flow Debugger</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/howto/howto-author-howto.html">Author How-To</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/howto/howto-author-faq.html">Author FAQ</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/howto/howto-author-snippet.html">Author Snippet</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/howto/howto-author-core-docs.html">Author Docs</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/howto/howto-patch.html">Prepare patch</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/howto/howto-bugzilla.html">Bugzilla</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/performancetips.html">Performance</a>
+</div>
+<div onclick="SwitchMenu('menu_1.2.11', '../../../skin/')" id="menu_1.2.11Title" class="menutitle">Snippets</div>
+<div id="menu_1.2.11" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/snippet/index.html">Index</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/snippet/snippet-xslt-options.html">XSLT Processor Options</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/snippet/snippet-internal-pipeline.html">Internal Pipeline</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="http://wiki.apache.org/cocoon/">Wiki Docs</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.3', '../../../skin/')" id="menu_1.3Title" class="menutitle">Status</div>
+<div id="menu_1.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/changes.html">Changes</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/todo.html">To Do</a>
+</div>
+<div onclick="SwitchMenu('menu_1.3.3', '../../../skin/')" id="menu_1.3.3Title" class="menutitle">Planning Notes</div>
+<div id="menu_1.3.3" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.3.3.1', '../../../skin/')" id="menu_1.3.3.1Title" class="menutitle">Overview</div>
+<div id="menu_1.3.3.1" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/plan/overview/index.html">Planning Overview</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/plan/overview/roadmap.html">Roadmap</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.3.3.2', '../../../skin/')" id="menu_1.3.3.2Title" class="menutitle">Documentation</div>
+<div id="menu_1.3.3.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/plan/documentation/doc.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/plan/documentation/linkstatus.html">Fix broken links</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.3.3.3', '../../../skin/')" id="menu_1.3.3.3Title" class="menutitle">Other Planning</div>
+<div id="menu_1.3.3.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/plan/otherplanning/release.html">Release Plan</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/plan/otherplanning/samples.html">Cocoon Samples</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/plan/otherplanning/proposed-toc.html">Proposed TOC</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/plan/otherplanning/updating.html">Updating Cocoon</a>
+</div>
+</div>
+</div>
+<div class="menuitem">
+<a href="http://issues.apache.org/jira/browse/COCOON">Patch queue</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.4', '../../../skin/')" id="menu_1.4Title" class="menutitle">Community</div>
+<div id="menu_1.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../../2.1/bylaws-addendum.html">Cocoon Bylaws</a>
+</div>
+<div class="menuitem">
+<a href="../../../2.1/who.html">Hall of Fame</a>
+</div>
+<div class="menuitem">
+<a href="http://cocoon.apache.org/community/contrib.html">Contributing</a>
+</div>
+<div class="menuitem">
+<a href="http://cocoon.apache.org/community/mail-lists.html">Mail Lists</a>
+</div>
+<div class="menuitem">
+<a href="http://cocoon.apache.org/community/mail-archives.html">Mail Archives</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.5', '../../../skin/')" id="menu_1.5Title" class="menutitle">Project</div>
+<div id="menu_1.5" class="menuitemgroup">
+<div class="menuitem">
+<a href="http://issues.apache.org/jira/browse/COCOON">Bug Database</a>
+</div>
+<div class="menuitem">
+<a href="http://svn.apache.org/viewcvs.cgi/cocoon/branches/BRANCH_2_1_X/?root=Apache-SVN">Code Repository</a>
+</div>
+<div class="menuitem">
+<a href="http://cocoon.apache.org/mirror.cgi#nightly">Dev Snapshots</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.6', '../../../skin/')" id="menu_1.6Title" class="menutitle">Other Releases</div>
+<div id="menu_1.6" class="menuitemgroup">
+<div class="menuitem">
+<a href="http://cocoon.apache.org/1.x/">Cocoon 1.x</a>
+</div>
+<div class="menuitem">
+<a href="http://cocoon.apache.org/2.0/">Cocoon 2.0</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.7', '../../../skin/')" id="menu_1.7Title" class="menutitle">External</div>
+<div id="menu_1.7" class="menuitemgroup">
+<div class="menuitem">
+<a href="http://wiki.apache.org/cocoon/GT2005Hackaton">2005 Get Together</a>
+</div>
+</div>
+<div id="credit"></div>
+<div id="roundbottom">
+<img style="display: none" class="corner" height="15" width="15" alt="" src="../../../skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
+<!--+
+  |alternative credits
+  +-->
+<div id="credit2">
+<a href="http://apachecon.com/"><img border="0" title="ApacheCon US 2005" alt="ApacheCon US 2005 - logo" src="http://apache.org/images/ac2005us_blue_125x125.jpg" style="width: 125px;height: 125px;"></a>
+</div>
+</div>
+<!--+
+    |end Menu
+    +-->
+<!--+
+    |start content
+    +-->
+<div id="content">
+<h1>Building Portals with Cocoon</h1>
+<a name="N10007"></a><a name="Introduction"></a>
+<h2 class="h3">Introduction</h2>
+<div class="section">
+<div class="frame note">
+<div class="label">Note</div>
+<div class="content">This is the description of the "old" portal framework, please
+also have a look at the newer <a href="../../../2.1/developing/portal/index.html">portal block</a>.</div>
+</div>
+<p>The portal engine of Cocoon provides the required functionality to display
+user dependent content with a user defineable layout.</p>
+<p>The Cocoon portal defintion framework is an XML description of the portal and
+the contained content. The rendering of the portal to the needed format (such as
+HTML) is done through stylesheets and is therefore very flexible.</p>
+<p>A portal definition can be configured for all users (global), for groups of
+users (group or role) and for the individual user. The portal admininstrator can
+use the provided tools to configure every aspect of the portal (from colours to
+content).</p>
+<p>Each "blob" of portal content is contained in a "coplet" (<em>Co</em>coon
+<em>p</em>ort<em>let</em>). coplets can be configured into the portal on a
+per-user or per-group basis allowing a flexible content definition.</p>
+<p>coplets can be minimized, maximized or even removed by the user if he does
+not wish to see the content. However, the administrator may configure coplets to
+be mandatory, in which case they may not be removed.</p>
+<p>The different portals are administrated by authentication applications. Each
+application can have its own portal.</p>
+<p>This documentation explains the different resources for the portal, the
+configuration of a portal and how it creates the portal view derived from this
+information. After that all is put together by creating the needed entries in
+the sitemap for using and displaying a portal.</p>
+</div>
+<a name="N1002E"></a><a name="The+Profile"></a>
+<h2 class="h3">The Profile</h2>
+<div class="section">
+<p>A portal is built upon a profile which contains all necessary information:
+the portal possibilites (the available coplets, the possible changes to the
+layout etc.) and the portal view (the layout for this user and the coplets he
+chose for himself). This profile is generated when a user logs into the
+application the portal belongs to. The building of the profile is a very
+flexible process which allows to have different configurations for different
+users.</p>
+<p>In general the building of the profile consists of four steps:</p>
+<ol>
+
+<li>Building the base profile. This profile defines which possibilites the
+portal has, which coplets are available to the portal and which parts of the
+profile can be changed by the user.</li>
+
+<li>Building the global profile. The base profile is enhanced by a global delta
+which contains a predefined portal view. This predefined portal view is a
+starting point for all users.</li>
+
+<li>Building the role profile. The global profile is enhanced by a role delta
+which contains a predefined portal view. This predefined portal view is a
+starting point for all users of that role.</li>
+
+<li>Building the user profile. The role profile is augmented by a user delta
+which contains the portal for this specific user. An optional user status
+profile with often changing information can optional be appended to the profile.
+</li>
+
+</ol>
+<p>Only step 1 and 2 are mandatory for the building process. Steps 3 and 4 are
+optional and depend on the configuration of the users and roles in the system.
+</p>
+<p>Each delta (steps 2, 3 and 4) can modify the possibilites of the portal and
+the configuration of the coplets. But it is not allowed to add new features or
+coplets. In addition a delta may contain a predefined portal view.</p>
+<p>This building process is invoked each time the user logs into the
+application. So a change to any profile (delta) is incorporated into the user
+profile: If e.g. a coplet , which a user has choosen for his portal view, is
+removed from the system, it is not available to the user anymore and therefore
+also removed from his portal view.</p>
+<p>The global delta, the role delta and the user delta are very similar. They
+only differ in the name of the root node.</p>
+<a name="N1004C"></a><a name="The+Base+Profile"></a>
+<h3 class="h4">The Base Profile</h3>
+<p>The base profile consists of three data sources:</p>
+<ol>
+
+<li>The layout profile describes the possibilites and layout of the portal.
+</li>
+
+<li>The coplets profile defines all available coplets for the portal view.</li>
+
+<li>The type profile describes the parts of the profile which can be changed by
+the user.</li>
+
+</ol>
+<a name="N1005D"></a><a name="The+Layout+Profile"></a>
+<h4>The Layout Profile</h4>
+<p>The layout profile describes the overall layout of the portal including if
+header or footer are present which colors and fonts are used and so on.</p>
+<p>An example profile is shown below. The profile is enclosed in the root node
+"layout-profile" and consists of the "portal" part and the "coplets" part:</p>
+<pre>
+&lt;layout-profile&gt;
+  &lt;portal&gt;
+    &lt;!-- This node contains the layout of the portal view --&gt;
+    &lt;layouts&gt;
+      &lt;layout&gt;
+        &lt;!-- The color of the background --&gt;
+        &lt;background&gt;
+          &lt;color&gt;#ffffff&lt;/color&gt;
+        &lt;/background&gt;
+        &lt;!-- The font and color for usual text --&gt;
+        &lt;font&gt;
+          &lt;type&gt;Arial, Helvetica, sans-serif&lt;/type&gt;
+          &lt;size&gt;2&lt;/size&gt;
+          &lt;color&gt;black&lt;/color&gt;
+        &lt;/font&gt;
+      &lt;/layout&gt;
+    &lt;/layouts&gt;
+    &lt;!-- The following means that the portal has a header area --&gt;
+    &lt;header&gt;
+      &lt;exists&gt;true&lt;/exists&gt;
+    &lt;/header&gt;
+    &lt;!-- The following means that the portal has 3 columns --&gt;
+    &lt;columns&gt;
+      &lt;number&gt;3&lt;/number&gt;
+    &lt;/columns&gt;
+    &lt;!-- The following means that the portal has not a footer area --&gt;
+    &lt;footer&gt;
+      &lt;exists&gt;false&lt;/exists&gt;
+    &lt;/footer&gt;
+  &lt;/portal&gt;
+  &lt;coplets&gt;
+    &lt;!-- This node contains the layout of the coplets --&gt;
+    &lt;layouts&gt;
+      &lt;layout&gt;
+        &lt;title&gt;
+          &lt;!-- The layout of the title --&gt;
+          &lt;background&gt;
+            &lt;color&gt;#46627A&lt;/color&gt;
+          &lt;/background&gt;
+          &lt;font&gt;
+            &lt;type&gt;Arial&lt;/type&gt;
+            &lt;size&gt;2&lt;/size&gt;
+            &lt;color&gt;#ffffff&lt;/color&gt;
+          &lt;/font&gt;
+        &lt;/title&gt;
+        &lt;content&gt;
+          &lt;!-- The layout of the content --&gt;
+          &lt;font&gt;
+            &lt;type&gt;Arial&lt;/type&gt;
+            &lt;size&gt;2&lt;/size&gt;
+            &lt;color&gt;#000000&lt;/color&gt;
+          &lt;/font&gt;
+          &lt;background&gt;
+            &lt;color&gt;#ffffff&lt;/color&gt;
+          &lt;/background&gt;
+        &lt;/content&gt;
+      &lt;/layout&gt;
+    &lt;/layouts&gt;
+  &lt;/coplets&gt;
+&lt;/layout-profile&gt;
+        </pre>
+<a name="N10067"></a><a name="The+coplets+Profile"></a>
+<h4>The coplets Profile</h4>
+<p>The coplets profile contains all coplets which are available in the system.
+It is an XML based resource with the root node "coplets-profile". All coplets
+are defined under a node called "coplets", so an example profile could look like
+this:</p>
+<pre>    &lt;coplets-profile&gt;
+  &lt;coplets&gt;
+    &lt;coplet id="bankingnews"&gt;
+      &lt;resource uri="cocoon://coplet-banking.xml"/&gt;
+      &lt;transformation&gt;
+        &lt;!-- optional xsl transformation --&gt;
+        &lt;stylesheet&gt;sunbank/styles/coplet.xsl&lt;/stylesheet&gt;
+      &lt;/transformation&gt;
+      &lt;configuration&gt;
+        &lt;mandatory&gt;false&lt;/mandatory&gt;
+        &lt;sizable&gt;true&lt;/sizable&gt;
+        &lt;active&gt;true&lt;/active&gt;
+        &lt;timeout&gt;5000&lt;/timeout&gt;
+        &lt;!-- optional, milliseconds --&gt;
+        &lt;messages&gt;
+          &lt;!-- optional: Messages --&gt;
+          &lt;coplet_not_available&gt;
+                           Display this if the coplet is not available.
+                        &lt;/coplet_not_available&gt;
+        &lt;/messages&gt;
+      &lt;/configuration&gt;
+      &lt;title&gt;Banking News&lt;/title&gt;
+      &lt;status&gt;
+        &lt;visible&gt;true&lt;/visible&gt;
+        &lt;size&gt;max&lt;/size&gt;
+      &lt;/status&gt;
+    &lt;/coplet&gt;
+  &lt;/coplets&gt;
+&lt;/coplets-profile&gt;
+</pre>
+<p>This example defines one coplet: the bankingnews coplet with the title
+"Banking News". The title is displayed in the portal view above the coplet
+content. The most important part is the resource definition. Using this resource
+the coplet is displayed in the portalview of the user.</p>
+<ul>
+
+<li>An uri, e.g.: &lt;resource uri=".."/&gt;. This URI can be a local one which
+is retrieved using the sitemap or a distant one which is retrieved using an HTTP
+request. In both cases the resource must deliver valid XML for the coplet
+content. If you don't use a protocol, the URI is assumed to be a file.</li>
+
+<li>A java class delivering the content.</li>
+
+</ul>
+<p>There a several mandatory configuration parameters for a coplet. This
+configuration parameters can only be changed by the portal administrator. The
+user cannot change them for his portal view.</p>
+<ul>
+
+<li>mandatory: Indicates if the coplet can be removed by the user or if it is
+always visible.</li>
+
+<li>sizable: Is the coplet sizable? If the value is true the user can minimize
+this coplet in his portal view.</li>
+
+<li>active: Using this parameter, a coplet can be deactivated for a distinct
+period of time. If a coplet is not active it will not displayed to the user even
+if he has configured it.</li>
+
+</ul>
+<p>In addition there are some optional parameters:</p>
+<ul>
+
+<li>timeout: This is the time in milliseconds, the portal waits to get the
+coplet content. If the content is not available within this time frame, the
+coplet is declared as not available at the moment. The default value for the
+timeout can be set in the portal configuration (see next chapter).</li>
+
+<li>handlesSizable: If this value is true, the coplet (or better the resource)
+handles the sizing of this coplet itselt. This means it determines the data to
+be displayed if the coplet is minimized or maximized. If this value is false the
+portal displayes the whole coplet if it is maximized and only its title if it is
+minimized. This is the default behaviour.</li>
+
+<li>handlesParameters: If this value is true (which is the default value) the
+resource gets all configuration and status parameters passed, e.g. if the
+resource is an uri, the parameters are passed as HTTP request parameters.</li>
+
+<li>messages/coplet_not_available: If the coplet is not available (e.g. external
+data where the server is not available), a message is displayed. With this
+optional parameter each coplet can get a distinct message which overrides the
+message provided by the user profile.</li>
+
+</ul>
+<p>The status parameters can be changed by the user for configuring his own
+portal view:</p>
+<ul>
+
+<li>visible: If a coplet is visible it is included in the portal view. If it is
+not visible it is still configured for the user but it will not displayed.</li>
+
+<li>size: Currently two sizes (min and max) are distinquished.</li>
+
+</ul>
+<p>If the source of the coplet needs additional transformation there are two
+possibilities for doing the transformation. The first one is creating a pipeline
+in the sitemap for this coplet and the second one usses the coplet configuration
+for this. As the first one is the usual pipeline creating process only the
+second one is covered here.</p>
+<p>By defining the "transformation" node inside the "coplet" node, the source of
+the coplet can be transformed with one or more stylesheets. For each stylesheet
+a "stylesheet" node with the value of the stylesheet path has to be created. The
+order of appearance determines the order of processing. If e.g. the source of a
+coplet is a class or a file, there is no need to specify a pipeline only for
+this coplet. Specifying a file/class as source and a "stylesheet" node has the
+same effect.</p>
+<a name="N100A4"></a><a name="Adding+a+new+coplet"></a>
+<h5>Adding a new coplet</h5>
+<p>Adding new information to the portal requires four basic steps:</p>
+<ul>
+
+<li>Defining the resource containing the information. For external resources
+only the address (mainly an URI) and the protocol (usually HTTP) is required.
+Otherwise a new XML resource has to be created with the new content.</li>
+
+<li>Defining the stylesheet for the presentation of this content.</li>
+
+<li>For local resources: Definition of the pipeline in the sitemap. This
+pipeline must contain all necessary steps for building the information. It must
+deliver XML as the serialized format.</li>
+
+<li>Adding a new "coplet" node to the coplets profile.</li>
+
+</ul>
+<p>After these steps are finished, the new coplet is automatically available for
+each user which logs in after the addition. If the coplet is even mandatory it
+will be added to the portal view of the user.</p>
+<p>For more information see the chapter "The Pipelines".</p>
+<a name="N100BC"></a><a name="Customizable+coplets"></a>
+<h5>Customizable coplets</h5>
+<p>Each coplet can have its own configuration, e.g. a weather coplet should
+display the weather for a particular city etc.</p>
+<pre>    &lt;coplets-profile&gt;
+  &lt;coplets&gt;
+    &lt;coplet id="bankingnews"&gt;
+      &lt;resource uri="cocoon://coplet-banking.xml"/&gt;
+      &lt;customization uri="cocoon://customize-coplet-banking.xml"/&gt;
+      &lt;!-- optional --&gt;
+      &lt;transformation&gt;
+        &lt;!-- optional xsl transformation --&gt;
+        &lt;stylesheet&gt;sunbank/styles/coplet.xsl&lt;/stylesheet&gt;
+      &lt;/transformation&gt;
+      &lt;configuration&gt;
+        &lt;mandatory&gt;false&lt;/mandatory&gt;
+        &lt;sizable&gt;true&lt;/sizable&gt;
+        &lt;active&gt;true&lt;/active&gt;
+        &lt;timeout&gt;5000&lt;/timeout&gt;
+        &lt;!-- optional, milliseconds --&gt;
+        &lt;messages&gt;
+          &lt;!-- optional: Messages --&gt;
+          &lt;coplet_not_available&gt;
+                           Display this if the coplet is not available.
+                        &lt;/coplet_not_available&gt;
+        &lt;/messages&gt;
+        &lt;customizable&gt;true&lt;/customizable&gt;
+        &lt;!-- optional --&gt;
+        &lt;persistent&gt;false&lt;/persistent&gt;
+        &lt;!-- optional --&gt;
+      &lt;/configuration&gt;
+      &lt;title&gt;Banking News&lt;/title&gt;
+      &lt;status&gt;
+        &lt;visible&gt;true&lt;/visible&gt;
+        &lt;size&gt;max&lt;/size&gt;
+      &lt;/status&gt;
+    &lt;/coplet&gt;
+  &lt;/coplets&gt;
+&lt;/coplets-profile&gt;
+</pre>
+<p>To declare a coplet as customizable it must get a configuration resource
+which is displayed to a user of this coplet to enter all required configuration
+values. This is done with the <em>customization</em> tag. The value for this tag
+has the same possibilities as the <em>resource</em> tag, usually the
+<em>uri</em> attribute points to a pipeline.</p>
+<p>When a user has configured/choosen a customizable coplet, the portal detects
+if this coplet has its configuration. If it does not have one, the customization
+resource of the coplet is displayed in the portal view. Otherwise the coplet
+itself is displayed.</p>
+<p>In addition a customizable coplet can be persistent, e.g. the configuration
+is saved for a longer period than the current session of the user. If the coplet
+is not persistent the configuration is lost when the user logs out. The next
+time he logs in, the customization page is displayed to configure this coplet
+again.</p>
+<p>If you use persistent coplets you have to configure resources for loading and
+saving the status profile (See configuration). More about writing customizable
+coplets can be found in the chapter "Writing Customizable coplets".</p>
+<a name="N100D5"></a><a name="The+Type+Profile"></a>
+<h4>The Type Profile</h4>
+<p>The type profile describes the possible values the user can change for his
+portal view. Using this flexible approach the portal administrator can decide
+which user can choose what. For example, a normal user might change the layout
+and content of his portal view, but a guest might not be allowed to change
+anything, whereas the administrator can change everything.</p>
+<p>The type profile is surrounded by the root node "type-profile". It consists
+of two parts: the typedefs section and the elements section. The type profile
+can be compared with a programming language. The typedefs section declares all
+available types and the the elements section declares all variables with their
+corresponding types. A "variable" defines a place or element in the user profile
+which can be changed by the user. The possibilites for this element are defined
+by the type.</p>
+<p>The typedefs contains enumerations, e.g. a set of possible values with a user
+presentable name. In addition the portal has the following predefined types:
+STRING (arbitrary text), BOOLEAN (true or false), INTEGER (a number) and
+CARDINAL (a positiv number).</p>
+<pre>&lt;type-profile&gt;
+  &lt;typedefs&gt;
+    &lt;!-- The following types are defined by the portal: (Names are casesensitiv!)
+                          STRING, BOOLEAN, ENUMERATION, INTEGER, CARDINAL --&gt;
+    &lt;typedef name="backgroundcolor" type="ENUMERATION"&gt;
+      &lt;value name="weiss"&gt;#ffffff&lt;/value&gt;
+      &lt;value name="hellgrau"&gt;#cccccc&lt;/value&gt;
+      &lt;value name="hellgruen"&gt;#aab9bf&lt;/value&gt;
+      &lt;value name="dunkelgruen"&gt;#46627A&lt;/value&gt;
+    &lt;/typedef&gt;
+    &lt;typedef name="textcolor" type="ENUMERATION"&gt;
+      &lt;value name="weiss"&gt;white&lt;/value&gt;
+      &lt;value name="schwarz"&gt;black&lt;/value&gt;
+      &lt;value name="weiss"&gt;#ffffff&lt;/value&gt;
+      &lt;value name="hellgrau"&gt;#cccccc&lt;/value&gt;
+      &lt;value name="hellgruen"&gt;#aab9bf&lt;/value&gt;
+      &lt;value name="dunkelgruen"&gt;#46627A&lt;/value&gt;
+    &lt;/typedef&gt;
+    &lt;typedef name="copletsize" type="ENUMERATION"&gt;
+      &lt;value name="Maximized"&gt;max&lt;/value&gt;
+      &lt;value name="Minimized"&gt;min&lt;/value&gt;
+    &lt;/typedef&gt;
+    &lt;typedef name="columnnumber" type="ENUMERATION"&gt;
+      &lt;value name="1"&gt;1&lt;/value&gt;
+      &lt;value name="2"&gt;2&lt;/value&gt;
+      &lt;value name="3"&gt;3&lt;/value&gt;
+      &lt;value name="4"&gt;4&lt;/value&gt;
+      &lt;value name="5"&gt;5&lt;/value&gt;
+    &lt;/typedef&gt;
+  &lt;/typedefs&gt;
+&lt;/type-profile&gt;
+</pre>
+<p>The element section has the same structure a the user profile. For each leave
+which is changeable by the user the elements section contains an entry for the
+type of this node. The node is enhanced by two attributes: type for the node
+type and description for a user readable title. This information is used by the
+portal to present the configuration screen for the portal. It displayes for each
+changeable leave a form field with the corresponding type.</p>
+<pre>&lt;type-profile&gt;
+  &lt;elements&gt;
+    &lt;layout-profile&gt;
+      &lt;portal&gt;
+        &lt;layouts&gt;
+          &lt;layout&gt;
+            &lt;!-- The user can change the background.
+                          The possible values are taken from the enumeration
+                          backgroundcolor. The user gets the title "Background"
+                          displayed for the form field. --&gt;
+            &lt;background&gt;
+              &lt;color type="backgroundcolor" description="Background"/&gt;
+            &lt;/background&gt;
+            &lt;font&gt;
+              &lt;color type="textcolor" description="Font color"/&gt;
+            &lt;/font&gt;
+          &lt;/layout&gt;
+        &lt;/layouts&gt;
+        &lt;columns&gt;
+          &lt;!-- The user can change the number of columns --&gt;
+          &lt;number type="columnnumber" description="Number of columns"/&gt;
+        &lt;/columns&gt;
+      &lt;/portal&gt;
+    &lt;/layout-profile&gt;
+    &lt;portal-profile&gt;
+      &lt;content&gt;
+        &lt;!-- Using the * the following configuration is applied for
+                      all columns regardless of their position. --&gt;
+        &lt;column position="*"&gt;
+          &lt;width type="CARDINAL" description="Width"/&gt;
+          &lt;coplets&gt;
+            &lt;!-- Using the * the following configuration is applied for
+                              each coplet. --&gt;
+            &lt;coplet id="*" position="*" number="*"&gt;
+              &lt;status&gt;
+                &lt;!-- The user can change the visibility and size
+                                  of the coplet --&gt;
+                &lt;visible type="BOOLEAN" description="Visible"/&gt;
+                &lt;size type="copletsize" description="Size"/&gt;
+              &lt;/status&gt;
+            &lt;/coplet&gt;
+          &lt;/coplets&gt;
+        &lt;/column&gt;
+      &lt;/content&gt;
+    &lt;/portal-profile&gt;
+  &lt;/elements&gt;
+&lt;/type-profile&gt;</pre>
+<a name="N100E5"></a><a name="The+Global+Profile"></a>
+<h3 class="h4">The Global Profile</h3>
+<p>The global delta, the role delta and the user delta are very similar. They
+only differ in the name of the root node. So this chapter only describes the
+global delta and points out the differences between the deltas at the various
+place rather than repeating the same information in different chapters.</p>
+<p>The global delta is enclosed in the root node "global-delta", the role delta
+uses the node "role-delta" and the user delta the node "user-delta".</p>
+<p>In general a delta defines the differences between two profiles. The portal
+deltas allow only adding and changing but not removing nodes. Each delta can
+contain the following parts:</p>
+<ul>
+
+<li>The layout delta containing the difference to the layout profile.</li>
+
+<li>The coplets delta describing the differences to the coplets profile.</li>
+
+<li>The portal profile containing a complete portal view. This part is not a
+delta. If it is contained in a delta and the profile already has this
+information, that information is replaced by the one from the delta. Otherwise
+the delta information is added. For the global profile the portal profile is
+mandatory.</li>
+
+<li>The personal profile. This part contains personal information of the user,
+e.g. are welcome text. For the global profile this information again is
+mandatory. It defines the possibilites the user has. The role and the user
+profile can only change this information. But they cannot add any new nodes.
+</li>
+
+</ul>
+<p>So here is an example:</p>
+<pre>&lt;global-delta&gt;
+  &lt;!-- No difference to the base profile --&gt;
+  &lt;layout-delta/&gt;
+  &lt;!-- No difference to the base profile --&gt;
+  &lt;coplets-delta/&gt;
+  &lt;!-- This is the starting portal view for all users.
+         It has to be defined in the global profile --&gt;
+  &lt;portal-profile&gt;
+    &lt;!-- This is the content of the portal view --&gt;
+    &lt;content&gt;
+      &lt;header&gt;
+        &lt;coplet id="personalize" position="1"&gt;
+          &lt;status&gt;
+            &lt;visible&gt;true&lt;/visible&gt;
+            &lt;size&gt;max&lt;/size&gt;
+          &lt;/status&gt;
+        &lt;/coplet&gt;
+      &lt;/header&gt;
+      &lt;column position="1"&gt;
+        &lt;width&gt;28%&lt;/width&gt;
+        &lt;!-- The coplets are displayed in the order of their
+                     position attribute in each column. --&gt;
+        &lt;coplets&gt;
+          &lt;coplet id="administration" number="1" position="1"&gt;
+            &lt;status&gt;
+              &lt;visible&gt;true&lt;/visible&gt;
+              &lt;size&gt;max&lt;/size&gt;
+            &lt;/status&gt;
+          &lt;/coplet&gt;
+        &lt;/coplets&gt;
+      &lt;/column&gt;
+      &lt;column position="2"&gt;
+        &lt;width&gt;50%&lt;/width&gt;
+        &lt;coplets&gt;
+          &lt;coplet id="banknews" number="2" position="1"/&gt;
+        &lt;/coplets&gt;
+      &lt;/column&gt;
+      &lt;column position="3"&gt;
+        &lt;width&gt;22%&lt;/width&gt;
+        &lt;coplets/&gt;
+      &lt;/column&gt;
+    &lt;/content&gt;
+  &lt;/portal-profile&gt;
+  &lt;personal-profile&gt;
+    &lt;greeting&gt;Herzlich willkommen&lt;/greeting&gt;
+    &lt;messages&gt;
+      &lt;coplet_not_available&gt;
+        The coplet is currently not available.
+      &lt;/coplet_not_available&gt;
+    &lt;/messages&gt;
+  &lt;/personal-profile&gt;
+&lt;/global-delta&gt;
+</pre>
+<a name="N10101"></a><a name="The+User+Status+Profile"></a>
+<h3 class="h4">The User Status Profile</h3>
+<p>The user status profile contains often changing information like the
+configuration of configurable coplets, the last login time etc. The user status
+profile is optional, but if it is not accessible, customizable coplets are not
+possible.</p>
+<p>For each customizable coplet which is in the portal view of the user the
+status profile contains an XML block with the coplet specific configuration for
+this coplet.</p>
+<pre>&lt;status-profile&gt;
+  &lt;customization&gt;
+    &lt;!-- Custom information for each customizable coplet --&gt;
+    &lt;coplet id="popmail" number="3"&gt;
+      &lt;host&gt;mail&lt;/host&gt;
+      &lt;password&gt;gsgdgsg&lt;/password&gt;
+      &lt;mailcount&gt;4&lt;/mailcount&gt;
+      &lt;user&gt;walter&lt;/user&gt;
+    &lt;/coplet&gt;
+  &lt;/customization&gt;
+&lt;/status-profile&gt;</pre>
+</div>
+<a name="N1010B"></a><a name="Configuring+the+portal"></a>
+<h2 class="h3">Configuring the portal</h2>
+<div class="section">
+<p>The configuration of the portal is actually a authentication application
+configuration. Please refer to the authentication documentation for more
+information about authentication handler and application configuration.</p>
+<p>Inside your authentication handler configuration you define for each portal
+an application configuration for the portal like the example portal called
+"sunBank" below:</p>
+<pre>    &lt;application name="sunBank"&gt;
+  &lt;configuration name="portal"&gt;
+    &lt;!-- This is the portal configuration --&gt;
+    &lt;portal-uri&gt;finance-portal&lt;/portal-uri&gt;
+    &lt;profile-cache&gt;true&lt;/profile-cache&gt;
+    &lt;process-coplets-parallel&gt;false&lt;/process-coplets-parallel&gt;
+    &lt;default-coplet-timeout&gt;10000&lt;/default-coplet-timeout&gt;
+    &lt;profile&gt;
+      &lt;!-- The resource for loading the layout profile --&gt;
+      &lt;layout-base uri="cocoon://financeresource-layoutprofile"/&gt;
+      &lt;!-- The resource for loading the base coplets profile --&gt;
+      &lt;coplet-base uri="cocoon://financeresource-copletprofile"/&gt;
+      &lt;!-- The optional resource for saving the base coplets profile --&gt;
+      &lt;coplet-base-save uri="cocoon://financeresource-savecopletprofile"/&gt;
+      &lt;!-- The optional type resource --&gt;
+      &lt;type-base uri="cocoon://financeresource-types"/&gt;
+      &lt;!-- The optional type resource for the admin configuration --&gt;
+      &lt;admin-type-base uri="cocoon://financeresource-admintypes"/&gt;
+      &lt;!-- The resources for loading/saving the deltas --&gt;
+      &lt;global-delta-load uri="cocoon://financeresource-globalprofile"/&gt;
+      &lt;global-delta-save uri="cocoon://financeresource-saveglobalprofile"/&gt;
+      &lt;role-delta-load uri="cocoon://financeresource-roleprofile"/&gt;
+      &lt;role-delta-save uri="cocoon://financeresource-saveroleprofile"/&gt;
+      &lt;user-delta-load uri="cocoon://financeresource-userprofile"/&gt;
+      &lt;user-delta-save uri="cocoon://financeresource-saveuserprofile"/&gt;
+      &lt;!-- Optional resources for loading/saving the status profile
+                     which is required for persistent, customizable coplets --&gt;
+      &lt;user-status-load uri="cocoon://financeresource-loadstatusprofile"/&gt;
+      &lt;user-status-save uri="cocoon://financeresource-savestatusprofile"/&gt;
+      &lt;!-- optional type resources --&gt;
+      &lt;global-type-delta uri="..."/&gt;
+      &lt;role-type-delta uri="..."/&gt;
+      &lt;user-type-delta uri="..."/&gt;
+    &lt;/profile&gt;
+    &lt;!-- Redirect to this resource, if the user is not authenticated
+                 to view that coplet --&gt;
+    &lt;auth-redirect&gt;finance-portal&lt;/auth-redirect&gt;
+  &lt;/configuration&gt;
+&lt;/application&gt;
+</pre>
+<a name="N10115"></a><a name="Global+Portal+Configuration"></a>
+<h3 class="h4">Global Portal Configuration</h3>
+<p>One mandatory configuration value for the portal is the <em>portal-uri</em>.
+It must point to a pipeline which produces the portal view for a user (see next
+section for more information about the pipelines).</p>
+<a name="N1011E"></a><a name="Profile+Caching"></a>
+<h3 class="h4">Profile Caching</h3>
+<p>The portal contains an intelligent profile caching mechanism which detects
+automatically changes to profiles and determines upon this information which
+profile must be rebuild.</p>
+<p>Without profile caching a profile is build each time a user logs in. With
+profile caching the profile is only build if there is no cached profile or if
+something has changed in the profiles for this user. Only the user status
+profile is not cached at all as it is often changing.</p>
+<p>By specifying the <em>profile-cache</em> tag in the the portal configuration
+with the value <em>true</em> the profile caching is turned on. If the tag is not
+available no profile caching is performed.</p>
+<p>If profile caching is turned on, the profiles should not be changed by hand
+as the cache does not detect such changes. All changes to the profiles must be
+done using the portal tools. However if you change a profile or part of a
+profile by hand, make sure that you clean the cache afterwords. Cleaning the
+cache can be done either by the provided the portal tools or by deleting all
+files inside the cache directory.</p>
+<a name="N10130"></a><a name="Global+coplet+configuration"></a>
+<h3 class="h4">Global coplet configuration</h3>
+<p>Usually the portal view is generated step by step, e.g. the coplets are build
+one after the other. The portal can be configured to get the coplets content
+parallel to decrease the response time for the portal view. By specifying the
+<em>process-coplets-parallel</em> tag with the value <em>true</em>, the coplets
+are processed parallel.</p>
+<p>If the content of a coplet is not available, e.g. if the contentresides on an
+external HTTP server, the processing of this coplet can take a "very long" time,
+e.g. until a timeout occures. The portal monitors the coplets and can stop the
+processing of a coplet after a distinct period of time. This period can be
+specified by the tag "default-coplet-timeout" in milliseconds. If the content of
+the coplet is not available after the time has expired, the coplet is declared
+as "not available". The default timeout is 10 minutes.</p>
+<p>For a fine-tuning of coplet timeouts, each coplet can get its own timeout
+(see the sections below).</p>
+<a name="N10140"></a><a name="Profile+Resources"></a>
+<h3 class="h4">Profile Resources</h3>
+<p>Each part of the profile has a corresponding resource which is invoked for
+loading or saving the profile part, e.g. one resource for loading the global
+profile delta and a separate one for saving it. The loading resources must
+deliver the xml described in the previous chapters.</p>
+<p>All resources get the parameter "application" with the name of the
+corresponding application and "handler" with the name of the authentication
+handler. The list below shows the additional parameters for the other resources.
+</p>
+<ul>
+
+<li>coplet-base: "profile" with value "coplet-base"</li>
+
+<li>coplet-base-save: "profile" with value "coplet-base"</li>
+
+<li>layout-base: "profile" with value "layout-base"</li>
+
+<li>type-base: "profile" with value "type-base"</li>
+
+<li>admin-type-base: "profile" with value "admin-type-base"</li>
+
+<li>global-delta-load: "profile" with value "global-delta"</li>
+
+<li>global-type-delta: "profile" with value "global-type-delta"</li>
+
+<li>global-delta-save: "profile" with value "global-delta"</li>
+
+<li>role-delta-load: "profile" with value "role-delta", "role" with name of the
+role</li>
+
+<li>role-delta-save: "profile" with value "role-delta", "role" with name of the
+role</li>
+
+<li>role-type-delta: "profile" with value "role-type-delta", "role" with role
+name</li>
+
+<li>user-delta-load: "profile" with value "user-delta", "role" with role name,
+"ID" with user ID</li>
+
+<li>user-delta-save: "profile" with value "user-delta", "role" with role name,
+"ID" with user ID</li>
+
+<li>user-type-delta: "profile" with value "user-type-delta", "role" with role
+name, "ID" with user ID</li>
+
+<li>user-status-load: "profile" with value "user-status", "role" with role name,
+"ID" with the user ID</li>
+
+<li>user-status-save: "profile" with value "user-status", "role" with role name,
+"ID" with the user ID</li>
+
+</ul>
+</div>
+<a name="N1017A"></a><a name="The+Pipelines"></a>
+<h2 class="h3">The Pipelines</h2>
+<div class="section">
+<p>So far the chapters only described configuring the portal and writing
+resources. This chapter closes the gap and explains the steps for showing the
+portal.</p>
+<p>For defining the pipelines in the sitemap, the portal declares two generators
+(the "portal" generator and the "portal-conf" generator) and one action
+("portal-auth").</p>
+<a name="N10182"></a><a name="Displaying+the+portal+view"></a>
+<h3 class="h4">Displaying the portal view</h3>
+<p>Displaying the portal view is a very simple step: defining a pipeline with
+the "portal" as the generator, the auth-protect action for defining the
+application and an stylesheet for creating the presentation:</p>
+<pre>&lt;map:match pattern="sunbank-portal"&gt;
+  &lt;map:act type="auth-protect"&gt;
+    &lt;!-- for getting the portal configuration --&gt;
+    &lt;map:parameter name="handler" value="portalhandler"/&gt;
+    &lt;map:parameter name="application" value="sunBank"/&gt;
+    &lt;map:generate type="portal"/&gt;
+    &lt;!-- generate the portal view --&gt;
+    &lt;map:transform src="sunbank/styles/portalHTML.xsl"/&gt;
+    &lt;!-- presentation in HTML --&gt;
+    &lt;map:serialize/&gt;
+  &lt;/map:act&gt;
+&lt;/map:match&gt;
+</pre>
+<a name="N1018A"></a><a name="The+Generated+Portal+View"></a>
+<h4>The Generated Portal View</h4>
+<p>The XML generated by the "portal" generator is not exactly the same as for
+the user profile. The portal optimizes and reorganizes the profile. All fields
+(or nodes) which are changeable have the attributes "formdescription",
+"formpath" and "formtype". "formdescription" is a user readable description of
+the field, "formpath" is the name of the form parameter which can be used to set
+the value and "formtype" indicates the type of the field. The belonging type can
+be found in the types section of the profile.</p>
+<pre>&lt;!-- The portal indicates that the following is the portal view --&gt;
+&lt;portal&gt;
+  &lt;!-- The configuration of the portal --&gt;
+  &lt;configuration&gt;
+    &lt;!-- This is the uri which should be invoked for rebuilding the portal view
+             and for changing the view. The parameter portalprofile is always
+             present and indicates the current profile. --&gt;
+    &lt;uri&gt;finance-portlets?portalprofile=uprofile:sunBank:user_admin_cocoon&lt;/uri&gt;
+    &lt;!-- This is the uniquie portal profile ID --&gt;
+    &lt;profile&gt;uprofile:sunBank:user_admin_cocoon&lt;/profile&gt;
+    &lt;media&gt;html&lt;/media&gt;
+    &lt;!-- The current media: html or wap --&gt;
+  &lt;/configuration&gt;
+  &lt;!-- Now the needed part of the layout profile: --&gt;
+  &lt;layout&gt;
+    &lt;portal&gt;
+      &lt;background&gt;
+        &lt;color formdescription="Hintergrundfarbe" formpath="portalconf.0.0" formtype="backgroundcolor"&gt;#aab9bf&lt;/color&gt;
+      &lt;/background&gt;
+      &lt;font&gt;
+        &lt;type&gt;Arial, Helvetica, sans-serif&lt;/type&gt;
+        &lt;size&gt;2&lt;/size&gt;
+        &lt;color formdescription="Schriftfarbe" formpath="portalconf.1.0" formtype="textcolor"&gt;black&lt;/color&gt;
+      &lt;/font&gt;
+    &lt;/portal&gt;
+    &lt;coplets&gt;
+      &lt;title&gt;
+        &lt;background&gt;
+          &lt;color&gt;#46627A&lt;/color&gt;
+        &lt;/background&gt;
+        &lt;font&gt;
+          &lt;type&gt;Arial&lt;/type&gt;
+          &lt;size&gt;2&lt;/size&gt;
+          &lt;color&gt;#ffffff&lt;/color&gt;
+        &lt;/font&gt;
+      &lt;/title&gt;
+      &lt;content&gt;
+        &lt;background&gt;
+          &lt;color&gt;#000000&lt;/color&gt;
+        &lt;/background&gt;
+        &lt;font&gt;
+          &lt;type&gt;Arial&lt;/type&gt;
+          &lt;size&gt;2&lt;/size&gt;
+          &lt;color&gt;#ffffff&lt;/color&gt;
+        &lt;/font&gt;
+      &lt;/content&gt;
+    &lt;/coplets&gt;
+  &lt;/layout&gt;
+  &lt;!-- This is the portal view: --&gt;
+  &lt;header&gt;
+    &lt;coplet id="personalize" position="1" number="1"&gt;
+      &lt;resource uri="financecoplet-personalize.xml"/&gt;
+      &lt;configuration&gt;
+        &lt;mandatory&gt;true&lt;/mandatory&gt;
+        &lt;sizable&gt;true&lt;/sizable&gt;
+        &lt;active&gt;true&lt;/active&gt;
+      &lt;/configuration&gt;
+      &lt;title&gt;Personalisieren&lt;/title&gt;
+      &lt;status&gt;
+        &lt;visible&gt;true&lt;/visible&gt;
+        &lt;size&gt;max&lt;/size&gt;
+      &lt;/status&gt;
+      &lt;content&gt;..the coplet content...&lt;/content&gt;
+    &lt;/coplet&gt;
+  &lt;/header&gt;
+  &lt;columns number="3"&gt;
+    &lt;column position="1" width="28%"&gt;
+      &lt;coplet id="administration" position="1" number="1"&gt;
+        &lt;resource uri="financecoplet-administration.xml"/&gt;
+        &lt;configuration&gt;
+          &lt;mandatory&gt;false&lt;/mandatory&gt;
+          &lt;sizable&gt;true&lt;/sizable&gt;
+          &lt;active&gt;true&lt;/active&gt;
+        &lt;/configuration&gt;
+        &lt;title&gt;Portal Administration&lt;/title&gt;
+        &lt;status&gt;
+          &lt;visible formdescription="Sichtbar" formpath="portalconf.4.0" formtype="BOOLEAN"&gt;true&lt;/visible&gt;
+          &lt;size formdescription="Groesse" formpath="portalconf.5.0" formtype="copletsize"&gt;max&lt;/size&gt;
+        &lt;/status&gt;
+        &lt;content&gt;..the coplet content...&lt;/content&gt;
+      &lt;/coplet&gt;
+                        ....
+                 &lt;/column&gt;
+    &lt;column position="2" width="50%"&gt;
+            ...
+            &lt;/column&gt;
+    &lt;column position="3" width="22%"&gt;
+            ...
+                 &lt;/column&gt;
+  &lt;/columns&gt;
+  &lt;!-- The personal information --&gt;
+  &lt;personal-profile&gt;
+    &lt;greeting&gt;Hi there!&lt;/greeting&gt;
+    &lt;messages&gt;
+      &lt;coplet_not_available&gt;The coplet is currently not available.&lt;/coplet_not_available&gt;
+    &lt;/messages&gt;
+  &lt;/personal-profile&gt;
+&lt;/portal&gt;</pre>
+<a name="N10192"></a><a name="Administration+of+the+portal+view"></a>
+<h3 class="h4">Administration of the portal view</h3>
+<p>Displaying the administration page of the portal is as simple as displaying
+the portal. The difference lies in changing the generator to the "portal-conf"
+generator:</p>
+<pre>&lt;map:match pattern="sunbank-conf"&gt;
+  &lt;map:act type="auth-protect"&gt;
+    &lt;map:parameter name="handler" value="portalhandler"/&gt;
+    &lt;map:parameter name="application" value="sunBank"/&gt;
+    &lt;map:generate type="portal-conf"/&gt;
+    &lt;map:transform src="sunbank/styles/portalconfHTML.xsl"/&gt;
+    &lt;map:serialize/&gt;
+  &lt;/map:act&gt;
+&lt;/map:match&gt;</pre>
+<p>Make sure to protect the portal configuration generator as the administrator
+can change all profiles, clear the cache etc. It should only be available for
+real portal administrators.</p>
+<a name="N1019C"></a><a name="The+Generated+Administration+View"></a>
+<h4>The Generated Administration View</h4>
+<p>The XML generated by the "portal-conf" generator is not exactly the same as
+the user profile. The portal addes some information to the profile. All fields
+(or nodes) which are changeable have the attributes "formdescription",
+"formpath" and "formtype". "formdescription" is a user readable description of
+the field, "formpath" is the name of the form parameter which can be used to set
+the value and "formtype" indicates the type of the field. The belonging type can
+be found in the types section of the profile.</p>
+<pre>&lt;!-- The portalconf node indicates that the following is the portal administration view --&gt;
+&lt;portalconf&gt;
+  &lt;!-- The configuration of the portal --&gt;
+  &lt;configuration&gt;
+    &lt;!-- This is the uri which should be invoked for rebuilding the portal view
+             and for changing the view. The parameter portalprofile is always
+             present and indicates the current profile. --&gt;
+    &lt;uri&gt;finance-portlets?portalprofile=uprofile:sunBank:user_admin_cocoon&lt;/uri&gt;
+    &lt;!-- This is the uniquie portal profile ID --&gt;
+    &lt;profile&gt;uprofile:sunBank:user_admin_cocoon&lt;/profile&gt;
+    &lt;media&gt;html&lt;/media&gt;
+    &lt;!-- The current media: html or wap --&gt;

[... 402 lines stripped ...]


Mime
View raw message