portals-jetspeed-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From rwat...@apache.org
Subject svn commit: r209969 - in /portals/jetspeed-2/branches/MENUS_BRANCH/design-docs/src/portal-site: portal-site-component-figure-1.jpeg portal-site-component.html portal-site-component.sxw
Date Sat, 09 Jul 2005 23:20:53 GMT
Author: rwatler
Date: Sat Jul  9 16:20:51 2005
New Revision: 209969

URL: http://svn.apache.org/viewcvs?rev=209969&view=rev
Log:
commit HTML version of document

Added:
    portals/jetspeed-2/branches/MENUS_BRANCH/design-docs/src/portal-site/portal-site-component-figure-1.jpeg
  (with props)
    portals/jetspeed-2/branches/MENUS_BRANCH/design-docs/src/portal-site/portal-site-component.html
  (with props)
Modified:
    portals/jetspeed-2/branches/MENUS_BRANCH/design-docs/src/portal-site/portal-site-component.sxw

Added: portals/jetspeed-2/branches/MENUS_BRANCH/design-docs/src/portal-site/portal-site-component-figure-1.jpeg
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/branches/MENUS_BRANCH/design-docs/src/portal-site/portal-site-component-figure-1.jpeg?rev=209969&view=auto
==============================================================================
Binary file - no diff available.

Propchange: portals/jetspeed-2/branches/MENUS_BRANCH/design-docs/src/portal-site/portal-site-component-figure-1.jpeg
------------------------------------------------------------------------------
    svn:mime-type = application/octet-stream

Added: portals/jetspeed-2/branches/MENUS_BRANCH/design-docs/src/portal-site/portal-site-component.html
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/branches/MENUS_BRANCH/design-docs/src/portal-site/portal-site-component.html?rev=209969&view=auto
==============================================================================
--- portals/jetspeed-2/branches/MENUS_BRANCH/design-docs/src/portal-site/portal-site-component.html
(added)
+++ portals/jetspeed-2/branches/MENUS_BRANCH/design-docs/src/portal-site/portal-site-component.html
Sat Jul  9 16:20:51 2005
@@ -0,0 +1,795 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+<HTML>
+<HEAD>
+	<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
+	<TITLE></TITLE>
+	<META NAME="GENERATOR" CONTENT="OpenOffice.org 1.0.2  (Linux)">
+	<META NAME="CREATED" CONTENT="20050502;21193200">
+	<META NAME="CHANGED" CONTENT="20050709;16421400">
+	<STYLE>
+	<!--
+		@page { size: 21.59cm 27.94cm; margin-left: 3.18cm; margin-right: 3.18cm; margin-top: 2.54cm;
margin-bottom: 2.54cm }
+		P { margin-bottom: 0.21cm }
+		P.text-body-indent { margin-left: 0.5cm }
+		H1 { margin-bottom: 0.21cm }
+		H1.western { font-family: "Luxi Sans", sans-serif; font-size: 16pt }
+		H1.cjk { font-size: 16pt }
+		H1.ctl { font-size: 16pt }
+		H4 { margin-bottom: 0.21cm }
+		H4.western { font-family: "Luxi Sans", sans-serif; font-size: 11pt; font-style: italic
}
+		H4.cjk { font-size: 11pt; font-style: italic }
+		H4.ctl { font-size: 11pt; font-style: italic }
+		H6 { margin-bottom: 0.21cm }
+		H6.western { font-family: "Luxi Sans", sans-serif; font-size: 10pt }
+		H6.cjk { font-size: 10pt }
+		H6.ctl { font-size: 10pt }
+		TD P { margin-bottom: 0.21cm }
+		TH P { margin-bottom: 0.21cm; font-style: italic }
+	-->
+	</STYLE>
+</HEAD>
+<BODY LANG="en-US">
+<H1 CLASS="western">J2 Portal Site Component Design</H1>
+<H4 CLASS="western">Overview</H4>
+<P>This document outlines a high to medium level design for the
+Portal Site component. This component is proposed as the resolution
+to JIRA issue: <I>JS2-69 Finalizing Portal Navigation using the
+Profiler</I>.</P>
+<P>Generally speaking, the Portal Site component is to use the
+underlying Page Manager component and Profile Locators generated by
+the Profiler to create various views of the portal site that can be
+rendered by the Layout Decorators. The views are composed of profiled
+reflections of the portal site model comprised of folders, pages,
+links and other documents, (PSML content). The Portal Site component
+is responsible for building and managing these views, (i.e. menu,
+nested menu, separator, and option elements), globally and per
+request as necessary.</P>
+<P>The Portal Site component is also to interpret request URLs
+processed by the J2 request pipeline and select PSML pages and
+folders for display in the portal. Generation of the menu based
+navigation URLs requires the inverse mapping functionality. The
+Portal Site component utilizes Profile Locators to perform the URL to
+PSML content mapping.</P>
+<P>Existing navigation and URL mapping capabilities currently
+implemented in the Page Manager components will be deprecated and
+replaced by the Portal Site component.</P>
+<H4 CLASS="western">High Level Requirements</H4>
+<P>The following requirements have been gathered from the JS2-69 JIRA
+issue and other email list sources.</P>
+<OL>
+	<LI><P CLASS="text-body-indent">The Portal Site component is
+	responsible for mapping request URLs to underlying PSML content and
+	constructing menu and option views that can be used to navigate to
+	all accessible content for the end user. 
+	</P>
+	<LI><P CLASS="text-body-indent">In addition to existing page
+	relative menu and option creation, this component must support a
+	simple static menu definition capability that can scale effectively
+	for all portal sites.</P>
+	<LI><P CLASS="text-body-indent">Menu definitions should include
+	simple options lists, regular expression wild card options, and
+	depth controlled recursive menu/option PSML reflection.</P>
+	<LI><P CLASS="text-body-indent">Menu definitions should be inherited
+	along the profiled folder hierarchy to implement global defaulting
+	and folder specific override capabilities.</P>
+	<LI><P CLASS="text-body-indent">Menu definitions must support nested
+	menus and be capable of capturing sufficient information to drive
+	localized pull down menus, (i.e. DHTML javascript site navigation
+	menus).</P>
+	<LI><P CLASS="text-body-indent">Menu definitions and this component
+	must provide a method of specifying and generating &quot;bread
+	crumb&quot; navigational aids for menu options.</P>
+	<LI><P CLASS="text-body-indent">The Portal Site component must
+	return the current PSML content page and folder within in a logical
+	content hierarchy that can be navigated directly by the Layout
+	Decoration Templates and that reflects the default menu view of the
+	site.</P>
+	<LI><P CLASS="text-body-indent">The existing DocumentSet
+	functionality is to be subsumed and deprecated by the menu
+	definition capabilities.</P>
+	<LI><P CLASS="text-body-indent">Existing navigations styles must be
+	supported, specifically the page relative &quot;back&quot;, &quot;page
+	tabs&quot;, &quot;folders&quot;, and &quot;additional links&quot;
+	elements.</P>
+	<LI><P CLASS="text-body-indent">Existing Portal Site component
+	functionality should be extracted out of Page Manager
+	implementations to promote component reuse and configuration.</P>
+	<LI><P CLASS="text-body-indent">The Portal Site component must
+	utilize the standard Page Manager interface to insulate it from
+	various PSML and access security implementations 
+	</P>
+	<LI><P CLASS="text-body-indent">Folder default page logic and
+	associated history state should be implemented and maintained by the
+	Portal Site component and/or its J2 integration objects.</P>
+	<LI><P CLASS="text-body-indent">Global and request specific caching
+	must be implemented to significantly reduce runtime costs of
+	maintaining view elements and must be reset or adjust to changes in
+	the underlying PSML content.</P>
+	<LI><P CLASS="text-body-indent">The Portal Site component should
+	compute and cache various content hierarchies and menu views
+	latently; that is only when explicitly requested from the Layout
+	Decorator Templates.</P>
+	<LI><P CLASS="text-body-indent">The Portal Site component is
+	instantiated within the J2 Component Architecture, (Spring), and is
+	integrated into the J2 request pipeline and request contexts.</P>
+</OL>
+<H4 CLASS="western">Components and Integration Objects</H4>
+<P>While the bulk of the functionality of the Portal Site component
+is to be modularized within the pluggable component itself, two other
+integration objects are required. The existing Profiler Valve will be
+extended to attach the Portal Site component to the request pipeline;
+references within the valve to the Page Manager component will be
+deprecated by this implementation. The valve will also instantiate
+and/or update the Portal Site Request Context and Portal Site Session
+Context objects. These objects are intended to maintain request state
+for later use by the Layout Decorator Templates and session history
+for use by the Portal Site component. The request context replaces
+the existing Profiled Page Context object that is currently
+referenced within the Layout Decorator Templates using the $site
+variable.</P>
+<P>Figure 1 illustrates the basic relationship between the Portal
+Site component, its contexts, and other existing J2 components.</P>
+<P ALIGN=CENTER STYLE="margin-top: 0.21cm"><SPAN ID="Frame1" STYLE="float: left;
width: 15.12cm; height: 12.5cm; border: none; padding: 0cm; background: #ffffff">
+	<P CLASS="frame-contents"><IMG SRC="portal-site-component-figure-1.jpeg" ALIGN=LEFT><BR><BR>
+	</P>
+</SPAN><BR CLEAR=LEFT><FONT SIZE=2><I>Figure 1, Components and
+Integration Objects</I></FONT>
+</P>
+<P><U>Profiler Valve</U>: instantiates the Portal Site request
+context with request specific information; retrieves current PSML
+page and folder selection from the Portal Site request context and
+injects results into the J2 request context.</P>
+<P><U>Portal Site Request Context</U>: encapsulates request specific
+state; forwards requests from the Profiler valve and Layout Decorator
+template to the Portal Site component with the relevant context
+information; caches request specific results for the Portal Site
+component.</P>
+<P><U>Portal Site Session Context</U>: maintains default page history
+for user session used by the Portal Site component to select default
+pages for folder requests.</P>
+<P><U>Layout Decorator Template</U>: accesses and renders PSML
+content and view menus/options retrieved from the Portal Site request
+context; the Portal Site component computes and caches information
+requested by the templates.</P>
+<P><U>Portal Site Component</U>: accesses the physical PSML content
+hierarchy using the Page Manager component; selects the current PSML
+page and folder content, maintaining a logical content hierarchy;
+generates profiled menu and option views of the PSML site content;
+caches computed menu views to maximize reuse between requests and
+sessions.</P>
+<P><U>Page Manager Component</U>: provides PSML access and security
+implementations; notifies Portal Site component of changes in the
+PSML content.</P>
+<P><U>Profiler Component</U>: existing component that generates
+Profile Locators for the current request using defined profiling
+rules for the user.</P>
+<H4 CLASS="western">General Operation</H4>
+<P>The high level interaction between these components and the host
+J2 architecture during a single portal request can be summarized as
+follows:</P>
+<OL>
+	<LI><P CLASS="text-body-indent">The J2 request pipeline invokes the
+	Profiler Valve.</P>
+	<LI><P CLASS="text-body-indent">The valve creates a set of Profile
+	Locators associated with the end user and the request being
+	processed using the Profiler component.</P>
+	<LI><P CLASS="text-body-indent">If necessary, the valve creates the
+	Portal Site Session Context object in the user's J2 portal session
+	context.</P>
+	<LI><P CLASS="text-body-indent">The valve instantiates the Portal
+	Site Request Context object in the J2 request context with the
+	current request, Profile Locators and session context.</P>
+	<LI><P CLASS="text-body-indent">The valve then queries the context
+	object for the PSML page and folder to insert into the J2 request
+	context.</P>
+	<LI><P CLASS="text-body-indent">To return the appropriate PSML page
+	and folder for the request, the context object queries the Portal
+	Site component with the request and Profile Locators.</P>
+	<LI><P CLASS="text-body-indent">The Portal Site component maps the
+	request, Profile Locators, and session default page history into a
+	page and folder from the an appropriate logical content hierarchy
+	derived from the PSML accessed via the Page Manager component.</P>
+	<LI><P CLASS="text-body-indent">The logical content hierarchy is
+	cached in the Portal Site component for use in computing menu views
+	or subsequent page and folder queries. Cached content hierarchies
+	are aged using a LRU algorithm or flushed by PSML change
+	notification events received from the Page Manager component.</P>
+	<LI><P CLASS="text-body-indent">Resulting logical content page and
+	folder mappings are used by the request context to update the
+	session context default page history while returning the mapping
+	results to the valve.</P>
+	<LI><P CLASS="text-body-indent">When the execution of the J2 request
+	pipeline reaches page rendering, the Layout Decorator template is
+	invoked with the context object retrieved from the J2 request
+	context.</P>
+	<LI><P CLASS="text-body-indent">The template then accesses the PSML
+	page and folder and/or the menu views via the context object and
+	again forwards these queries to the Portal Site component along with
+	the saved request and Profile Locators.</P>
+	<LI><P CLASS="text-body-indent">The Portal Site component selects
+	and computes the requested menu views using the the cached logical
+	content hierarchy and returns the results through the context object
+	to the templates.</P>
+	<LI><P CLASS="text-body-indent">Computed menu views are cached in
+	the Portal Site component for subsequent menu view queries. Cached
+	menu views are aged using a LRU algorithm or flushed by change
+	notifications.</P>
+</OL>
+<H4 CLASS="western">PSML Menu Definition Tag Reference</H4>
+<P>The following PSML Menu Definition is used to define the named
+menu views to be provided to the Layout Decoration Templates by the
+Portal Site component. Multiple menu views, (including all standard
+menu views made available via the existing Profiled Page Context
+object), are managed by this component. The Menu Definitions are
+specified in folder.metadata PSML documents. As with other PSML
+content, the definitions made available for a requested portal page
+are inherited and/or overridden by name from the current and parent
+folders. The request Profile Locators are used to aggregate Menu
+Definitions by name as would be done with the folders they appear in.</P>
+<H6 CLASS="western">Tag Reference</H6>
+<H6 CLASS="western">&lt;menu&gt;</H6>
+<P CLASS="text-body-indent">Defines a menu or nested menu within a
+menu.</P>
+<P CLASS="text-body-indent">Attributes:</P>
+<P CLASS="text-body-indent"><B><SPAN STYLE="text-decoration: none">name</SPAN></B>
+- identifies menu name for retrieval from template code and/or menu
+reference; [required for top level nodes: ignored otherwise]</P>
+<P CLASS="text-body-indent"><B>options</B> - specifies document path
+for this menu and/or default content elements if not included as
+explicit children; multiple option paths can be specified as a comma
+separated list and/or regexp patterns; relative paths interpreted as
+relative to current folder; special patterns, '~' or '@', can be used
+to reference the current page; [default: none]</P>
+<P CLASS="text-body-indent"><B>depth</B> - specifies deep inclusion
+of documents from option roots, (&lt;0 specifies infinite depth);
+[default: 0]</P>
+<P CLASS="text-body-indent"><B>paths</B> - boolean flag to indicate
+ordered path options to option value from root; [default: false]</P>
+<P CLASS="text-body-indent"><B>regexp</B> - specifies wild card
+processing be performed on option value; [default: false]</P>
+<P CLASS="text-body-indent"><B>profile</B> - specified name of
+Profile Locator to be used when evaluating option value or the
+default profile value for options and nested menus; specifying '*'
+forces the acceptance of all Profile Locator names if parent menus
+select a name; [default: none]</P>
+<P CLASS="text-body-indent"><B>order</B> – comma separated list of
+regexp patterns matched against list or regexp menu options path
+values to determine order of matched options; this attribute will be
+applied as a default options value for  any options children, but is
+not used to reorder multiple options children matches; if not
+specified, multiple options are included in the order returned by the
+underlying Page Manager component implementation; option paths not
+matched by this attribute are appended after ordered matches;
+[default: none]</P>
+<P CLASS="text-body-indent"><B>skin</B> - optional template defined
+layout hint and the default skin value for options and nested menus;
+[default: none]</P>
+<P CLASS="text-body-indent">Children:</P>
+<P CLASS="text-body-indent"><B>title</B> - specifies default
+locale-independent title for the menu; [1, optional]</P>
+<P CLASS="text-body-indent"><B>short-title</B> - specifies default
+locale-independent short title for the menu; [1, optional]  
+</P>
+<P CLASS="text-body-indent"><B>metadata</B> - additional meta data
+specified for the menu, normally used to specify locale-specific
+titles; [N, optional]</P>
+<P CLASS="text-body-indent"><B>options</B> - specifies content
+elements for this menu; [N, optional]</P>
+<P CLASS="text-body-indent"><B>menu</B> - nested menu contained in
+this menu; [N, optional]</P>
+<P CLASS="text-body-indent"><B>separator</B> - specifies text
+elements for this menu; [N, optional]</P>
+<P CLASS="text-body-indent"><B>include</B> - specifies a menu or menu
+options to be included in this menu; [N, optional]</P>
+<P CLASS="text-body-indent"><B>exclude</B> - specifies menu options
+to be excluded from this menu; [N, optional]</P>
+<H6 CLASS="western">&lt;options&gt;</H6>
+<P CLASS="text-body-indent">Defines a single or multiple options
+within a menu.</P>
+<P CLASS="text-body-indent">Attributes:</P>
+<P CLASS="text-body-indent"><B>depth</B> - specifies deep inclusion
+of documents from option value roots, (&lt;0 specifies infinite
+depth); [default: 0]</P>
+<P CLASS="text-body-indent"><B>paths</B> - boolean flag to indicate
+ordered path options to option value from root;   [default: false]</P>
+<P CLASS="text-body-indent"><B>regexp</B> - specifies wild card
+processing be performed on option value; [default: false]</P>
+<P CLASS="text-body-indent"><B>profile</B> - specified name of
+Profile Locator to be used when evaluating option value; specifying
+'*' forces the acceptance of all Profile Locator names if parent
+menus select a name; [default: none]</P>
+<P CLASS="text-body-indent"><B>order</B> – comma separated list of
+regexp patterns matched against list or regexp options path values to
+determine order of matched options; if not specified, multiple
+options are included in the order returned by the underlying Page
+Manager component implementation; option paths not matched by this
+attribute are appended after ordered matches; [default: none]</P>
+<P CLASS="text-body-indent"><B>skin</B> - optional template defined
+layout hint; [default: none]</P>
+<P CLASS="text-body-indent">Children:</P>
+<P CLASS="text-body-indent"><B>[text]</B> - options value; multiple
+option paths can be specified as a comma separated list and/or regexp
+patterns; relative paths interpreted as relative to current folder;
+special patterns, '~' or '@', can be used to reference the current
+page; [required]</P>
+<H6 CLASS="western">&lt;include&gt;</H6>
+<P CLASS="text-body-indent">Includes another menu's options or nests
+a menu within a menu.</P>
+<P CLASS="text-body-indent">Attributes:</P>
+<P CLASS="text-body-indent"><B>nest</B> – boolean flag that
+controls whether the specified menu is to be nested; [default: false]</P>
+<P CLASS="text-body-indent">Children:</P>
+<P CLASS="text-body-indent"><B>[text]</B> - identifies included menu
+name; circular inclusions are suppressed; [required]</P>
+<H6 CLASS="western">&lt;exclude&gt;</H6>
+<P CLASS="text-body-indent">Excludes another menu's options or nested
+menus if they appear above within a menu.</P>
+<P CLASS="text-body-indent">Children:</P>
+<P CLASS="text-body-indent"><B>[text]</B> - identifies excluded menu
+name; circular exclusions are suppressed; [required]</P>
+<H6 CLASS="western">&lt;separator&gt;</H6>
+<P CLASS="text-body-indent">Defines a separator to be included if
+options or nested menus appear below within a menu.</P>
+<P CLASS="text-body-indent">Attributes:</P>
+<P CLASS="text-body-indent"><B>skin</B> - optional template defined
+layout hint; [default: none]</P>
+<P CLASS="text-body-indent">Children:</P>
+<P CLASS="text-body-indent"><B>title</B> - specified default
+locale-independent title for the separator; [1, optional]</P>
+<P CLASS="text-body-indent"><B>metadata</B> - additional meta data
+specified for the separator text and title, normally used to specify
+locale-specific text; [N, optional]</P>
+<P CLASS="text-body-indent"><B>text</B> - specified default
+locale-independent separator text; [1, optional]</P>
+<P CLASS="text-body-indent"><B>[text]</B> - specified default
+locale-independent separator text; [1, optional]</P>
+<H6 CLASS="western">Examples</H6>
+<P>A simple menu definition:</P>
+<P><FONT FACE="Courier, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">
+<PRE>
+&lt;menu name=&quot;simple&quot;&gt;
+   &lt;options&gt;/some-top-page.psml,/custom/some-other-page.psml&lt;/options&gt;
+&lt;/menu&gt;
+</PRE>
+</FONT></FONT></P>
+<P>A top level menu definition that contains all site content down 2
+levels deep with DHTML javascript pull down rendering preferred:</P>
+<P><FONT FACE="Courier, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">
+<PRE>
+&lt;menu name=&quot;top-2-levels&quot; options=&quot;/&quot; depth=&quot;2&quot;
skin=&quot;dhtml-pull-down&quot;/&gt;
+</PRE>
+</FONT></FONT></P>
+<P>A menu comprised of all top level pages profiled by user role:</P>
+<P><FONT FACE="Courier, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">
+<PRE>
+&lt;menu name=&quot;top-role-pages&quot; regexp=&quot;true&quot; options=&quot;/*&quot;
profile=&quot;roles&quot;/&gt;
+</PRE>
+</FONT></FONT></P>
+<P>A menu used to display navigational &quot;bread crumbs&quot;
+paths:</P>
+<P><FONT FACE="Courier, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">
+<PRE>
+&lt;menu name=&quot;bread-crumbs&quot; options=&quot;./&quot; paths=&quot;true&quot;/&gt;
+</PRE>
+</FONT></FONT></P>
+<P>A complex nested menu definition:</P>
+<P><FONT FACE="Courier, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">
+<PRE>
+&lt;menu name=&quot;top-custom&quot;&gt;
+    &lt;title&gt;Top Menu&lt;/title&gt;
+    &lt;metadata name=&quot;title&quot; xml:lang=&quot;fr&quot;&gt;Haut&lt;/metadata&gt;
+    &lt;options regexp=&quot;true&quot; profile=&quot;groups&quot;&gt;/group-pages/*&lt;/options&gt;
+    &lt;menu options=&quot;/&quot; profile=&quot;page&quot;&gt;
+        &lt;separator&gt;
+            &lt;text&gt;-- Top Pages --&lt;/text&gt;
+            &lt;title&gt;Top Pages&lt;/title&gt;
+        &lt;/separator&gt;
+        &lt;options regexp=&quot;true&quot;&gt;/*&lt;/options&gt;
+        &lt;separator&gt;
+            &lt;title&gt;Custom Pages&lt;/title&gt;
+        &lt;/separator&gt;
+        &lt;options depth=&quot;2&quot;&gt;/custom-folder/&lt;/options&gt;
+    &lt;/menu&gt;
+    &lt;exclude&gt;top-role-pages&lt;/exclude&gt;
+    &lt;separator&gt;More Top Pages&lt;/separator&gt;
+    &lt;include nest=&quot;true&quot;&gt;top-role-pages&lt;/include&gt;
+&lt;/menu&gt;
+</PRE>
+</FONT></FONT></P>
+<H6 CLASS="western">Standard Menu Definitions</H6>
+<P>The following standard menu definitions are available for all
+pages and are intended to replace the existing Profiled Page Context
+page relative navigation elements. These definitions can be
+overridden by specifying custom versions of these menus in
+folder.metadata PSML documents with the same name. Standard and
+custom menu definitions and views are segregated to facilitate
+iteration over custom menu definitions.</P>
+<P><FONT FACE="Courier, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">
+<PRE>
+&lt;menu name=&quot;back&quot; options=&quot;../&quot;/&gt;
+</PRE>
+</FONT></FONT></P>
+<P><FONT FACE="Courier, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">
+<PRE>
+&lt;menu name=&quot;pages&quot; regexp=&quot;true&quot; options=&quot;*.psml&quot;/&gt;
+</PRE>
+</FONT></FONT></P>
+<P><FONT FACE="Courier, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">
+<PRE>
+&lt;menu name=&quot;navigations&quot;&gt;
+  &lt;separator&gt;Folders and Pages&lt;/separator&gt;
+  &lt;options regexp=&quot;true&quot;&gt;./*/&lt;/options&gt;
+  &lt;include&gt;page-navigations&lt;/include&gt;
+  &lt;separator&gt;Additional Links&lt;/separator&gt;
+  &lt;options regexp=&quot;true&quot;&gt;/*.link&lt;/options&gt;
+&lt;/menu&gt;
+</PRE>
+</FONT></FONT></P>
+<H4 CLASS="western">Document Set to Menu Definition Conversion</H4>
+<P>Document Set PSML support is to be removed as part of the Portal
+Site component implementation. Here is a PSML tag/attribute mapping
+that can be used to convert the *.ds documents into the Menu
+Definition tags in the folder.metadata files:</P>
+<TABLE WIDTH=100% BORDER=1 BORDERCOLOR="#000000" CELLPADDING=5 CELLSPACING=0>
+	<COL WIDTH=128*>
+	<COL WIDTH=128*>
+	<THEAD>
+		<TR VALIGN=TOP>
+			<TH WIDTH=50%>
+				<P>Document Set</P>
+			</TH>
+			<TH WIDTH=50%>
+				<P>Menu Definition</P>
+			</TH>
+		</TR>
+	</THEAD>
+	<TBODY>
+		<TR VALIGN=TOP>
+			<TD WIDTH=50%>
+				<P>/document-set</P>
+			</TD>
+			<TD WIDTH=50%>
+				<P>/menu</P>
+			</TD>
+		</TR>
+		<TR VALIGN=TOP>
+			<TD WIDTH=50%>
+				<P>/document-set/title</P>
+			</TD>
+			<TD WIDTH=50%>
+				<P>/menu/title</P>
+			</TD>
+		</TR>
+		<TR VALIGN=TOP>
+			<TD WIDTH=50%>
+				<P>/document-set/metadata</P>
+			</TD>
+			<TD WIDTH=50%>
+				<P>/menu/metadata</P>
+			</TD>
+		</TR>
+		<TR VALIGN=TOP>
+			<TD WIDTH=50%>
+				<P>/document-set/profile-locator</P>
+			</TD>
+			<TD WIDTH=50%>
+				<P>/menu/@profile, /menu//option/@profile</P>
+			</TD>
+		</TR>
+		<TR VALIGN=TOP>
+			<TD WIDTH=50%>
+				<P>/document-set/document-path</P>
+			</TD>
+			<TD WIDTH=50%>
+				<P>/menu/@option, /menu//option</P>
+			</TD>
+		</TR>
+		<TR VALIGN=TOP>
+			<TD WIDTH=50%>
+				<P>/document-set/document-path/regexp</P>
+			</TD>
+			<TD WIDTH=50%>
+				<P>/menu/@regexp, /menu//option/@regexp</P>
+			</TD>
+		</TR>
+		<TR VALIGN=TOP>
+			<TD WIDTH=50%>
+				<P>/document-set/security-constraints</P>
+			</TD>
+			<TD WIDTH=50%>
+				<P>N/A</P>
+			</TD>
+		</TR>
+	</TBODY>
+</TABLE>
+<P ALIGN=CENTER STYLE="margin-top: 0.21cm"><FONT SIZE=2><I>Table 1,
+Document Set to Menu Definition Conversion</I></FONT></P>
+<H4 CLASS="western">Component and Integration Interfaces:</H4>
+<P>The following public interfaces and methods will be developed,
+modified, or deprecated from component and other object instances as
+part of the Portal Site component implementation.</P>
+<H6 CLASS="western">PortalSite</H6>
+<P CLASS="text-body-indent"><FONT SIZE=2 STYLE="font-size: 9pt"><FONT FACE="Courier,
monospace">PortalSiteSessionContext
+createSessionContext()</FONT></FONT><BR><FONT SIZE=2 STYLE="font-size:
9pt"><FONT FACE="Courier, monospace">PortalSiteRequestContext
+createRequestContext()</FONT></FONT></P>
+<H6 CLASS="western">PortalSiteRequestContext</H6>
+<P CLASS="text-body-indent"><FONT FACE="Courier, monospace"><FONT SIZE=2 STYLE="font-size:
9pt">void
+setProfileLocators(Map profileLocators)<BR>void
+setSessionContext(PortalSiteSessionContext context)<BR>Page
+getPage()<BR>Folder getFolder()<BR>Folder getRootFolder()<BR>Set
+getStandardMenuNames()<BR>Set getCustomMenuNames()<BR>Menu
+getMenu(String name)<BR><BR>Map getLocators()<BR>NodeSet
+getSiblingPages()<BR>Folder getParentFolder()<BR>NodeSet
+getSiblingFolders()<BR>NodeSet getRootLinks()</FONT></FONT></P>
+<H6 CLASS="western">PortalSiteSessionContext</H6>
+<H6 CLASS="western">DocumentImpl</H6>
+<P CLASS="text-body-indent"><FONT FACE="Courier, monospace"><FONT SIZE=2 STYLE="font-size:
9pt">Node
+getParent()</FONT></FONT></P>
+<H6 CLASS="western">FolderImpl</H6>
+<P CLASS="text-body-indent"><FONT FACE="Courier, monospace"><FONT SIZE=2 STYLE="font-size:
9pt">Node
+getParent()<BR>NodeSet getFolders()<BR>Folder getFolder(String
+name)<BR>NodeSet getPages()<BR>Page getPage(String name)<BR>NodeSet
+getLinks()<BR>Link getLink(String name)<BR>PageSecurity
+getPageSecurity()<BR>NodeSet getAll()</FONT></FONT></P>
+<H6 CLASS="western">MenuElement</H6>
+<P CLASS="text-body-indent"><FONT FACE="Courier, monospace"><FONT SIZE=2 STYLE="font-size:
9pt">String
+getElementType()<BR>Menu getParentMenu()<BR>String getTitle()<BR>String
+getTitle(Locale locale)<BR>String getShortTitle()<BR>String
+getShortTitle(Locale locale)<BR>GenericMetadata getMetadata()<BR>String
+getSkin()</FONT></FONT></P>
+<H6 CLASS="western">Menu</H6>
+<P CLASS="text-body-indent"><FONT FACE="Courier, monospace"><FONT SIZE=2 STYLE="font-size:
9pt">String
+getName()<BR>String getUrl()<BR>boolean isHidden()<BR>boolean
+isSelected(PortalSiteRequestContext context)<BR>List
+getElements()<BR>MenuElement
+getSelectedElement(PortalSiteRequestContext context)</FONT></FONT></P>
+<H6 CLASS="western">Option</H6>
+<P CLASS="text-body-indent"><FONT FACE="Courier, monospace"><FONT SIZE=2 STYLE="font-size:
9pt">String
+getType()<BR>String getUrl()<BR>boolean isHidden()<BR>boolean
+isSelected(PortalSiteRequestContext context)</FONT></FONT></P>
+<H6 CLASS="western">Separator</H6>
+<P CLASS="text-body-indent"><FONT FACE="Courier, monospace"><FONT SIZE=2 STYLE="font-size:
9pt">String
+getText()<BR>String getText(Locale locale)</FONT></FONT></P>
+<H6 CLASS="western">Profiler</H6>
+<P CLASS="text-body-indent"><FONT FACE="Courier, monospace"><FONT SIZE=2 STYLE="font-size:
9pt">public
+ProfiledPageContext createProfiledPageContext(Map locators) [delete]</FONT></FONT></P>
+<H6 CLASS="western">ProfilerValve</H6>
+<P CLASS="text-body-indent"><FONT FACE="Courier, monospace"><FONT SIZE=2 STYLE="font-size:
9pt">void
+invoke(RequestContext request, ValveContext context)</FONT></FONT></P>
+<H6 CLASS="western">PageManager</H6>
+<P CLASS="text-body-indent"><FONT FACE="Courier, monospace"><FONT SIZE=2 STYLE="font-size:
9pt">void
+addPageManagerEventListener(PageManagerEventListener listener)<BR>void
+removePageManagerEventListener(PageManagerEventListener
+listener)<BR>void computeProfiledPageContext(ProfiledPageContext
+pageContext) [delete]<BR>DocumentSet getDocumentSet(String name)
+[delete]</FONT></FONT></P>
+<H6 CLASS="western">PageManagerEventListener</H6>
+<P CLASS="text-body-indent"><FONT FACE="Courier, monospace"><FONT SIZE=2 STYLE="font-size:
9pt">void
+documentChanged(PageManagerEvent event)<BR>void
+folderChanged(PageManagerEvent event)</FONT></FONT></P>
+<H6 CLASS="western">PageManagerEvent</H6>
+<P CLASS="text-body-indent"><FONT FACE="Courier, monospace"><FONT SIZE=2 STYLE="font-size:
9pt">Document
+getDocument()<BR>Folder getFolder()</FONT></FONT></P>
+<H6 CLASS="western">Folder</H6>
+<P CLASS="text-body-indent"><FONT FACE="Courier, monospace"><FONT SIZE=2 STYLE="font-size:
9pt">NodeSet
+getDocumentSets() [delete]<BR>DocumentSet getDocumentSet(String
+name)[delete]</FONT></FONT></P>
+<H6 CLASS="western">Notes:</H6>
+<UL>
+	<LI><P CLASS="text-body-indent">The DocumentImpl and FolderImpl
+	classes are proxies for concrete Document and Folder PSML instances
+	returned by the Page Manager component. Simple delegation stubs are
+	not listed here. The methods listed are overridden simply to arrange
+	the underlying PSML  in a profiled logical content hierarchy.</P>
+	<LI><P CLASS="text-body-indent">The MenuElements class is a base
+	class for Menu, Option, and Separator.</P>
+	<LI><P CLASS="text-body-indent">Because the ProfiledPageContext
+	implementation is to be subsumed by PortalSiteRequestContext, the
+	createProfiledPageContext() method in Profiler is obsolete and will
+	be removed along with the interface and implementation.</P>
+	<LI><P CLASS="text-body-indent">Document Sets are to be replaced in
+	this implementation with named menus, so access methods in
+	PageManager and Folder are to be removed.</P>
+	<LI><P CLASS="text-body-indent">The PageManagerEventListener
+	listener interface and the PageManagerEvent notification event class
+	are extensions to the Page Manager component to allow the Portal
+	Site and other components to subscribe to PSML change notification
+	events. Events required to expire and refresh the Portal Site
+	component menu views and logical content hierarchy caches will be
+	added for this implementation.</P>
+</UL>
+<H4 CLASS="western">Layout Decorator Template Usage</H4>
+<P STYLE="font-style: normal">Velocity templates are the preferred
+implementation used by the J2 decorators. The Portal Site Request
+Context object API is directly accessible using the $site Velocity
+context variable. The $site variable currently exports the Profiled
+Page Context implementation. Even though a compatibility API is being
+supported by the Portal Site request context, the following
+conversion for the commonly used Profiled Page Context methods could
+be applied to existing Layout Decorator templates. Both PSML
+folder/page and menu/option styles are supported for many of the
+existing navigation accessors.</P>
+<TABLE WIDTH=100% BORDER=1 BORDERCOLOR="#000000" CELLPADDING=5 CELLSPACING=0>
+	<COL WIDTH=113*>
+	<COL WIDTH=143*>
+	<THEAD>
+		<TR VALIGN=TOP>
+			<TH WIDTH=44%>
+				<P>ProfiledPageContext method</P>
+			</TH>
+			<TH WIDTH=56%>
+				<P>PortalSiteRequestContext method</P>
+			</TH>
+		</TR>
+	</THEAD>
+	<TBODY>
+		<TR VALIGN=TOP>
+			<TD WIDTH=44%>
+				<P>$site.page, $site.getPage()</P>
+			</TD>
+			<TD WIDTH=56%>
+				<P>(supported)</P>
+			</TD>
+		</TR>
+		<TR VALIGN=TOP>
+			<TD WIDTH=44%>
+				<P>$site.folder, $site.getFolder()</P>
+			</TD>
+			<TD WIDTH=56%>
+				<P>(supported)</P>
+			</TD>
+		</TR>
+		<TR VALIGN=TOP>
+			<TD WIDTH=44%>
+				<P>$site.siblingPages, $site.getSiblingPages()</P>
+			</TD>
+			<TD WIDTH=56%>
+				<P>$site.folder.pages, $site.getFolder().getPages(),
+				$site.getMenu(&quot;pages&quot;).getElements()</P>
+			</TD>
+		</TR>
+		<TR VALIGN=TOP>
+			<TD WIDTH=44%>
+				<P>$site.parentFolder, $site.getParentFolder()</P>
+			</TD>
+			<TD WIDTH=56%>
+				<P>$site.folder.parent, $site.getFolder().getParent(),
+				$site.getMenu(&quot;back&quot;).getElements().get(0)</P>
+			</TD>
+		</TR>
+		<TR VALIGN=TOP>
+			<TD WIDTH=44%>
+				<P>$site.siblingFolders, $site.getSiblingFolders()</P>
+			</TD>
+			<TD WIDTH=56%>
+				<P>$site.folder.folders, $site.getFolder().getFolders(),
+				$site.getMenu(&quot;navigations&quot;).getElements()</P>
+			</TD>
+		</TR>
+		<TR VALIGN=TOP>
+			<TD WIDTH=44%>
+				<P>$site.rootLinks, $site.getRootLinks()</P>
+			</TD>
+			<TD WIDTH=56%>
+				<P>$site.rootFolder.links, $site.getRootFolder().getLinks(),
+				$site.getMenu(&quot;navigations&quot;).getElements()</P>
+			</TD>
+		</TR>
+		<TR VALIGN=TOP>
+			<TD WIDTH=44%>
+				<P>$site.getDocumentSet($name)</P>
+			</TD>
+			<TD WIDTH=56%>
+				<P>$site.getMenu($name)</P>
+			</TD>
+		</TR>
+		<TR VALIGN=TOP>
+			<TD WIDTH=44%>
+				<P>$site.getDocumentSetNodes($name)</P>
+			</TD>
+			<TD WIDTH=56%>
+				<P>$site.getMenu($name).getElements()</P>
+			</TD>
+		</TR>
+		<TR VALIGN=TOP>
+			<TD WIDTH=44%>
+				<P>$site.documentSetNames, $site.getDocumentSetNames()</P>
+			</TD>
+			<TD WIDTH=56%>
+				<P>$site.customMenuNames, $site.getCustomMenuNames()</P>
+			</TD>
+		</TR>
+	</TBODY>
+</TABLE>
+<P ALIGN=CENTER STYLE="margin-top: 0.21cm"><FONT SIZE=2><I>Table 2,
+Profiled Page Context to Portal Site Request Context Conversion</I></FONT></P>
+<P STYLE="font-style: normal">Here is an example of how the Portal
+Site menu views could be used to generate a &quot;bread crumbs&quot;
+navigational aid within a Velocity Layout Decorator template.</P>
+<P STYLE="font-style: normal">This example assumes that the following
+menu definition appears in a folder.metadata within the PSML content:</P>
+<P><FONT FACE="Courier, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">
+<PRE>
+&lt;menu name=&quot;bread-crumbs&quot; option=&quot;./&quot; paths=&quot;true&quot;/&gt;
+</PRE>
+</FONT></FONT></P>
+<P STYLE="font-style: normal">The following Velocity fragment would
+generate a series of HTML anchor tags that would render the menu
+options into the familiar series of links within the portal layout:</P>
+<P><FONT FACE="Courier, monospace"><FONT SIZE=2 STYLE="font-size: 9pt">
+<PRE>
+&lt;div class=&quot;BreadCrumbs&quot;&gt;
+#foreach($option in $site.getMenu(&quot;bread-crumbs&quot;).getElements())
+   #if($option.getType() == &quot;folder&quot;)
+        &amp;nbsp;
+        &lt;span&gt;
+            &lt;a href=&quot;$jetspeed.getAbsoluteUrl($option.url)&quot;
+               title=&quot;$option.getTitle($preferredLocale)&quot;
+               class=&quot;BreadCrumbsLink&quot;&gt;
+                $option.getShortTitle($preferredLocale)
+            &lt;/a&gt;
+        &lt;/span&gt;
+        &amp;nbsp;
+    #end
+#end
+&lt;/div&gt;
+</PRE>
+</FONT></FONT></P>
+<H4 CLASS="western">Component and Integration Object State</H4>
+<P>In order for the Portal Site component to perform reasonably,
+aggressive caching must be implemented to maximize reuse within and
+across sessions. In addition, request information and intermediate
+results, (those, for example, related to profiling), are cached in
+the Portal Site request context object. A catalog of the high level
+state managed by the components and integration objects is outlined
+here.</P>
+<H6 CLASS="western">PortalSiteRequestContext</H6>
+<UL>
+	<LI><P CLASS="text-body-indent">portal request URL</P>
+	<LI><P CLASS="text-body-indent"><I>logical content search paths</I></P>
+	<LI><P CLASS="text-body-indent">Portal Site session context</P>
+</UL>
+<H6 CLASS="western">PortalSiteSessionContext</H6>
+<UL>
+	<LI><P CLASS="text-body-indent"><I>logical default page path</I>
+	cache by <I>logical folder path</I></P>
+</UL>
+<H6 CLASS="western">PortalSite</H6>
+<UL>
+	<LI><P CLASS="text-body-indent"><I>logical content hierarchies</I>
+	cache by <I>logical content search paths</I></P>
+	<LI><P CLASS="text-body-indent" STYLE="font-style: normal">custom
+	menu names cache by <I>logical content search paths</I> and <I>logical
+	folder path</I></P>
+	<LI><P CLASS="text-body-indent"><I>menu definitions</I> cache by
+	<I>logical content search paths</I>, menu name, and <I>logical
+	folder path</I></P>
+	<LI><P CLASS="text-body-indent"><I>menu views</I> cache by <I>logical
+	content search paths</I>, menu name, and <I>logical folder path</I></P>
+</UL>
+<H6 CLASS="western">State Definitions:</H6>
+<P CLASS="text-body-indent">The <I>logical content search paths</I>
+are constructed by the Profile Locators which are generated by the
+Profiler component based upon the end user's profiling rules.</P>
+<P CLASS="text-body-indent">The <I>logical content hierarchies </I><SPAN
STYLE="font-style: normal">are
+made up of FolderImpl and DocumentImpl proxies constructed using
+specific </SPAN><I>logical content search paths.</I></P>
+<P CLASS="text-body-indent"><SPAN STYLE="font-style: normal">The
+</SPAN><I>logical folder path </I><SPAN STYLE="font-style: normal">is
+the effective request path to a folder in </SPAN><I>logical content
+hierarchies</I>.</P>
+<P CLASS="text-body-indent">The <I>logical default page path </I><SPAN
STYLE="font-style: normal">is
+the effective request path to the historical default page  in </SPAN><I>logical
+content hierarchies</I><SPAN STYLE="font-style: normal">.</SPAN></P>
+<P CLASS="text-body-indent"><SPAN STYLE="font-style: normal">The </SPAN><I>menu
+descriptions </I><SPAN STYLE="font-style: normal">are references to
+PSML objects defined in PSML folder content</SPAN> located via
+FolderImpl proxies in <I>logical content hierarchies</I><SPAN STYLE="font-style:
normal">.</SPAN></P>
+<P CLASS="text-body-indent" STYLE="font-style: normal">The <I>menu
+views </I>are composed of Menu, Option, and Separator objects
+instantiated from menu definitions defined from folders in <I>logical
+content hierarchies</I>.</P>
+<H4 CLASS="western" STYLE="font-style: normal; font-weight: medium"><BR><BR>
+</H4>
+</BODY>
+</HTML>

Propchange: portals/jetspeed-2/branches/MENUS_BRANCH/design-docs/src/portal-site/portal-site-component.html
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: portals/jetspeed-2/branches/MENUS_BRANCH/design-docs/src/portal-site/portal-site-component.sxw
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/branches/MENUS_BRANCH/design-docs/src/portal-site/portal-site-component.sxw?rev=209969&r1=209968&r2=209969&view=diff
==============================================================================
Binary files - no diff available.



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org


Mime
View raw message