You are viewing a plain text version of this content. The canonical link for it is here.
Posted to svn@forrest.apache.org by th...@apache.org on 2006/08/01 23:29:59 UTC

svn commit: r427744 [2/5] - in /forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher: ./ how/ images/ themes/ themes/images/

Added: forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-contracts.html
URL: http://svn.apache.org/viewvc/forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-contracts.html?rev=427744&view=auto
==============================================================================
--- forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-contracts.html (added)
+++ forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-contracts.html Tue Aug  1 14:29:56 2006
@@ -0,0 +1,516 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+        <link href="../themes/common.css" media="screen" rel="alternate stylesheet" title="common" type="text/css" />
+        <link href="../themes/leather-dev.css" media="screen" rel="alternate stylesheet" title="common" type="text/css" />
+        <link href="../themes/pelt.screen.css" media="screen" rel="stylesheet" title="Pelt" type="text/css" />
+        
+        <link href="../how/howto-dispatcher-contracts.dispatcher.css" media="screen" rel="stylesheet" title="Pelt" type="text/css" />
+        <link href="../themes/pelt.print.css" media="print" rel="stylesheet" title="pelt.print.css" type="text/css" />
+        <style type="text/css">/* Extra css */ 
+p.quote {
+ margin-left: 2em; 
+ padding: .5em; 
+ background-color: #f0f0f0; 
+ font-family: monospace; 
+}</style>
+      <meta content="Apache Forrest" name="Generator" />
+<meta content="0.8" name="Forrest-version" />
+<meta content="pelt" name="Forrest-theme-name" />
+<meta content="text/html; charset=UTF-8" http-equiv="content-type" />
+<!--+ |start navigation links +-->
+<link href="../index.html" rel="Index" title="Index..." />
+<link href="../linkmap.html" rel="CONTENTS" title="Site map..." />
+<link href="../how/howto-dispatcher-structurer.html" rel="PREVIOUS" title="Structurer" />
+<link href="../how/howto-dispatcher-quickstart.html" rel="FIRST" title="Quickstart" />
+<!--+ |end navigation links +-->
+<!--+|start favicon +-->
+<link href="../favicon.ico" rel="shortcut icon" />
+<!--+|start favicon +-->
+<script src="../themes/getBlank.js" type="text/javascript"> </script>
+<script src="../themes/menu.js" type="text/javascript"> </script>
+<!--+ |start content-title +-->
+<title>How to write a forrest:contract</title>
+<!--+ |end content-title +-->
+</head>
+<body>
+<div id="container">
+<!--+
+    | start breadtrail
+    +-->
+<div class="breadtrail">
+<a href="http://www.apache.org/">MyGroup</a>
+                   &gt; <a href="http://forrest.apache.org/">MyProject</a>
+<script src="../themes/breadcrumbs.js" type="text/javascript"> </script>
+</div>
+<!--+
+    | end breadtrail
+    +-->
+<div id="header">
+<div id="branding-tagline-name">new 
+            seed</div>
+<div id="branding-tagline-tagline">powered by the 
+            dispatcher</div>
+<div class="logo">
+<!--+
+    |start Logo
+    +-->
+<a href="http://mygroup.org/">
+<img alt="MyGroup" class="logoImage" src="../images/group.png" title="MyGroup Description" />
+</a>
+<!--+
+    |end group Logo
+    +-->
+</div>
+<div class="logo">
+<!--+
+    |start Logo
+    +-->
+<a href="http://myproj.mygroup.org/">
+<img alt="MyProject" class="logoImage" src="../images/project.png" title="MyProject Description" />
+</a>
+<!--+
+    |end group Logo
+    +-->
+</div>
+<!--+
+  |start Search
+  +-->
+<div class="searchbox">
+<div class="round-top-left-small">
+<div class="round-top-right-small">
+<div class="search-input">
+<form action="http://www.google.com/search" method="get">
+<div class="search-hidden">
+<input name="sitesearch" type="hidden" value="mydomain" />
+</div>
+<div class="search-field">
+<input name="q" size="25" type="text" value="Search the site with google" />
+</div>
+<div class="search-submit">
+<input name="Search" type="submit" value="Search" />
+</div>
+</form>
+</div>
+</div>
+</div>
+</div>
+<!--+ |end search +-->
+<div id="nav-main-hook">
+<!--+ |start Tabs new +-->
+<ul id="nav-main">
+<li>
+<a class="base-not-selected" href="../index.html">Home</a>
+</li>
+<li class="current">
+<a class="base-selected" href="../how/howto-dispatcher-quickstart.html">HowTo</a>
+</li>
+</ul>
+<!--+ |end Tabs +-->
+<div id="publishedStrip"> <!--+
+    |start nav-main-sub
+    +--><!--+
+    |end Endtabs
+    +--><script type="text/javascript">document.write("Last Published: " + document.lastModified);</script>
+</div>
+</div>
+</div>
+<div id="page">
+<div class="breadtrail"> </div>
+<div id="leftbar">
+<!--+ |start 0 menu +-->
+<!--+ |start Menu +-->
+<div id="nav-section">
+<ul>
+<li class="pagegroupselected" id="menu_selected_1.1Title">
+<span onclick="SwitchMenu('menu_selected_1.1')">How to</span>
+<ul class="&#10;               selectedmenuitemgroup" id="menu_selected_1.1">
+<li class="menuitem">
+<a href="../how/howto-dispatcher-quickstart.html" title="">Quickstart</a>
+</li>
+<li class="menuitem">
+<a href="../how/howto-dispatcher-structurer.html" title="">Structurer</a>
+</li>
+<li class="menupage">
+<div class="menupagetitle">Contracts</div>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!--+ |end menu +-->
+<!--+ |start content-motd-page +-->
+<!--+ |end content-motd-page +-->
+<div id="roundbottom">
+<div id="roundbottomLeft">
+<img alt="spacer" src="../themes/images/spacer.gif" />
+</div>
+</div>
+</div>
+<div id="export-link">
+<a class="format" href="howto-dispatcher-contracts.pdf">
+<img alt="PDF - icon" class="skin" src="../themes/images/pdfdoc.gif" />
+<span class="caption">PDF</span>
+</a>
+</div>
+<div id="content">
+<!--+ |start content-title +-->
+<h1 class="content-title">How to write a forrest:contract</h1>
+<!--+ |end content-title +-->
+<!--+ |start content-abstract +-->
+    This How-To will explain how we wrote the contracts for the dispatcher and hope afterwards you will be able to do the same.
+  <!--+ |end content-abstract +--><!--+ |start content-minitoc +--><div id="content-minitoc-area">
+<ul class="minitoc">
+<li>
+<a href="#Intended Audience">Intended Audience</a>
+</li>
+<li>
+<a href="#Purpose">Purpose</a>
+</li>
+<li>
+<a href="#Prerequisites">Prerequisites</a>
+</li>
+<li>
+<a href="#Steps">Steps</a>
+<ul class="minitoc">
+<li>
+<a href="#enhanceMaintenance">Enhance the maintenance</a>
+</li>
+<li>
+<a href="#blankContract">Explaining the blank forrest:contract</a>
+</li>
+<li>
+<a href="#newContract">Create a new contract</a>
+</li>
+<li>
+<a href="#structurerContract">Activating the contract</a>
+</li>
+</ul>
+</li>
+<li>
+<a href="#Further Reading">Further Reading</a>
+</li>
+<li>
+<a href="#Feedback">Feedback</a>
+</li>
+</ul>
+</div>
+<!--+ |end minitoc +-->
+<!--+ |start content-main +-->
+<a name="Intended Audience" title="Intended Audience"> </a>
+<h2 class="underlined_10">Intended Audience</h2>
+<div class="section">
+<div class="warning">
+<div class="label">Warning</div>
+<div class="content">
+The "Dispatcher" (aka "Views") is new functionality which is still in development phase. That is why it is in the
+"whiteboard" section of the Forrest distribution. This HowTo is a good start but still needs more work.
+      See <a href="http://forrest.apache.org/docs_0_80/status-themes.html">Status of Themes: Skins and Dispatcher</a>.
+</div>
+</div>
+<p>
+      Devs and skin developer that wants to get started with forrest:contract development. 
+      To really understand this how-to you need basic and sometimes advanced understanding of 
+      the "old fashion" skin development process.
+    </p>
+</div>
+<a name="Purpose" title="Purpose"> </a>
+<h2 class="underlined_10">Purpose</h2>
+<div class="section">
+<p>
+      This setup guide will explain how to create a forrest:contract from scratch and 
+      how this forrest:contract work with the core parts of forrest.
+    </p>
+</div>
+<a name="Prerequisites" title="Prerequisites"> </a>
+<h2 class="underlined_10">Prerequisites</h2>
+<div class="section">
+<ul>
+      <li>Installing a mozilla browser and the forrestbar helps a lot in developing.</li>
+    </ul>
+</div>
+<a name="Steps" title="Steps"> </a>
+<h2 class="underlined_10">Steps</h2>
+<div class="section">
+<div class="note">
+<div class="label">Note</div>
+<div class="content">The following content is from many mails around the topic, this how-to tries to be the 
+      consolidation of this thread. It is mainly based on the thread "[RT] Why using views" - 
+      in comparison with "old fashion" skins - usecase i18n</div>
+</div>
+<p>
+      By working on the i18n integration for "pelt" we again encountered the reasons for using the dispatcher. ;-)
+      The maintenance problem was to change the captions of the skin features (contracts) to enable
+      support for i18n. The case is that the <span class="codefrag">site2xhtml.xsl</span> has a lot of repeating code. 
+    </p>
+<p>
+      For example the "last-publish"-contract could be found 2 times in the code.  
+      This is not the only contract that was (is) doubled in the code. The problem with that is that 
+      we needed to search the code for each caption and senselessly repeat the following 
+      maintenance step of adding the &lt;i18n:text/&gt;-tags.
+    </p>
+<pre class="code">
+
+- &lt;script language="JavaScript"
+- type="text/javascript"&gt;document.write("Published: " + document.lastModified);&lt;/script&gt;
+
++ &lt;script type="text/javascript"&gt;document.write("&lt;i18n:text &gt;Last
++ Published:&lt;/i18n:text&gt;&amp;#160;" + document.lastModified);
+
+    </pre>
+<a name="enhanceMaintenance" title="Enhance the maintenance"> </a>
+<h3 class="underlined_5">Enhance the maintenance</h3>
+<p>Now we can enhance the maintenance for the future and we give these code snippets 
+        contracts names (based on their functionality). This naming enables us to keep
+the contract separate from the position code itself. In xsl you would
+simply do:
+      </p>
+<ol>
+        <li>replace the script by &lt;xsl:call-template name="siteinfo-last-published"/&gt;</li>
+        <li>and add:</li>
+      </ol>
+<pre class="code">&lt;xsl:template name="siteinfo-last-published"&gt;
+ &lt;script type="text/javascript"&gt;
+  document.write("&lt;i18n:text &gt;Last Published:&lt;/i18n:text&gt;&amp;#160;" + document.lastModified);
+ &lt;/script&gt;
+&lt;/xsl:template&gt;
+      </pre>
+<p>
+        This allows us in a next maintenance to just change the code of
+        &lt;xsl:template name="siteinfo-last-published"/&gt; and apply it in any position where
+        it is placed.  
+      </p>
+<div class="note">
+<div class="label">Note</div>
+<div class="content">
+        Now this refactoring of the site2xhtml.xsl is exactly what we doing in creating contracts for the dispatcher.
+      </div>
+</div>
+<a name="blankContract" title="Explaining the blank forrest:contract"> </a>
+<h3 class="underlined_5">Explaining the blank forrest:contract</h3>
+<p>
+        To start a new forrest:contract you can copy the 'blank.ft' from
+        <span class="codefrag">org.apache.forrest.plugin.output.themer/resources/themes/common/html/blank.ft</span>. 
+      </p>
+<p>
+        The 'blank.ft' is a simple xml file with the following code which you can use to base new contracts 
+        on:
+      </p>
+<pre class="code">
+&lt;forrest:contract 
+  xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
+  xmlns:forrest="http://apache.org/forrest/templates/1.0"
+  name="blank" type="nugget"&gt;
+  
+  &lt;!--NOTE: 
+    When using the blank template as c'n p master just search and replace 'blank' by the {contract-name}!--&gt;
+  
+  &lt;description&gt;
+    {contract-name} will output {contract-funtion}. This is just a blank contract, it will output *nothing*.
+  &lt;/description&gt;
+  &lt;usage&gt;&lt;![CDATA[&lt;forrest:contract name="blank"/&gt;]]&gt;&lt;/usage&gt;
+  &lt;forrest:template xmlns:forrest="http://apache.org/forrest/templates/1.0"
+    format="html" name="blank" inputFormat="xsl" body="false" head="false"&gt;
+    &lt;xsl:stylesheet version="1.1" 
+        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;
+        &lt;!--
+          Add here the needed templates.
+          Remember to set the forrest:template @attributes!
+          --&gt;
+         &lt;!--
+        &lt;xsl:template name="blank-head"&gt;
+        &lt;/xsl:template&gt;
+        &lt;xsl:template name="blank-body"&gt;
+        &lt;/xsl:template&gt;
+        --&gt;
+    &lt;/xsl:stylesheet&gt;
+  &lt;/forrest:template&gt;
+&lt;/forrest:contract&gt;
+      </pre>
+<p>
+        The most important is the name of the contract <span class="codefrag">&lt;forrest:contract name="blank"/&gt;</span>. 
+        This name is the same as the file name of the contract (without file extension) <span class="codefrag">blank.ft</span>. 
+      </p>
+<div class="note">
+<div class="label">Note</div>
+<div class="content">This is a <strong>naming convention</strong> that you need
+        to always meet. All @name attributes must be the file name of the contract without file extension.
+      </div>
+</div>
+<p>
+        The <span class="codefrag">&lt;description/&gt;</span> tag needs to be filled in with some information
+        that is explaining the contract to the webdesigner. The better explained the more efficient
+        for the webdesigner to pick the right contract.
+      </p>
+<pre class="code">&lt;description&gt;
+  siteinfo-last-published-howto will output the last published date of the site with the help of jscript.
+&lt;/description&gt;
+      </pre>
+<p>
+        In the <span class="codefrag">&lt;usage/&gt;</span> tag we have to explain how the designer can use 
+        the contract in his structurer.
+      </p>
+<pre class="code">&lt;usage&gt;&lt;![CDATA[&lt;forrest:contract name="siteinfo-last-published-howto"/&gt;]]&gt;&lt;/usage&gt;
+      </pre>
+<p>
+        <span class="codefrag">&lt;forrest:template name="blank" body="false" head="false"&gt; </span> 
+        That leads to the template attribute @body="true" and
+        @head="false". In html a contract can add content to the &lt;body/&gt; or/and
+        &lt;head/&gt; part of &lt;html/&gt;. These values need to be changed when adding an actual template.
+        Besides this, a xsl-template needs to indicate this in the naming. A template that adds content to the 
+        html body needs to end with "<span class="codefrag">-body</span>"!!!
+      </p>
+<div class="warning">
+<div class="label">Warning</div>
+<div class="content">
+        The last paragraph about &lt;forrest:template name="blank" body="false" head="false"&gt; is due to change. 
+        Please be aware that this part of the dispatcher is the main moving target right now!!!
+      </div>
+</div>
+<div class="note">
+<div class="label">Note</div>
+<div class="content">
+        It is possible to use contracts in different in/output formats. 
+        We are focussing for now on format="html" as output and the inputFormat="xsl".
+      </div>
+</div>
+<p>
+        A &lt;forrest:template /&gt; has the child &lt;xsl:stylesheet/&gt; where we can create 
+        templates for the html-head and html-body. For adding content into the body of the final 
+        document change @body="true" and add:
+      </p>
+<pre class="code">
+&lt;xsl:stylesheet version="1.1" 
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;
+ &lt;!--Add here the needed templates--&gt;
+ &lt;xsl:template name="blank-body"/&gt;
+&lt;/xsl:stylesheet&gt;        
+      </pre>
+<a name="newContract" title="Create a new contract"> </a>
+<h3 class="underlined_5">Create a new contract</h3>
+<div class="note">
+<div class="label">Note</div>
+<div class="content">
+        We use basic naming convention for contracts. Like
+        "naming does not say anything about layout position, but functionality of the contract".
+      </div>
+</div>
+<p> 
+        Now let us pick up the example we started with and create a "siteinfo-last-published-howto" contract.
+        Save the blank.ft to <span class="codefrag">{project.home}/src/documentation/resources/themes/common/html/siteinfo-last-published-howto.ft</span>.
+      </p>
+<p>
+        Now the maintenance-optimized code (xpath="/html/body/*") was:
+      </p>
+<pre class="code">
+&lt;xsl:template name="siteinfo-last-published"&gt;
+ &lt;script type="text/javascript"&gt;
+  document.write("&lt;i18n:text &gt;Last Published:&lt;/i18n:text&gt;&amp;#160;" + document.lastModified);
+ &lt;/script&gt;
+&lt;/xsl:template&gt;</pre>
+<p>
+        In this code we have to do the following steps to use it in our contract:
+      </p>
+<ul>
+        <li>Search and replace "siteinfo-last-published" with "siteinfo-last-publish-howto-body"</li>
+        <li>Add a "debug string - " to the template</li>
+      </ul>
+<p>
+        The contract after this steps should look like:
+      </p>
+<pre class="code">
+&lt;xsl:template name="siteinfo-last-publish-howto-body"&gt;
+debug string - 
+ &lt;script type="text/javascript"&gt;
+  document.write("&lt;i18n:text &gt;Last Published:&lt;/i18n:text&gt;&amp;#160;" + document.lastModified);
+ &lt;/script&gt;
+&lt;/xsl:template&gt;</pre>
+<p>Now we have to do some last steps in the siteinfo-last-publish-howto.ft</p>
+<ul>
+        <li>Search and replace "blank" with "siteinfo-last-publish-howto"</li>
+        <li>Add description and usage of the contract</li>
+        <li>Set @body="true"</li>
+        <li>Copy the maintenance optimized code to the contract.</li>
+      </ul>
+<p>
+        As the result your code should look like this:
+      </p>
+<pre class="code">&lt;forrest:contract xmlns:forrest="http://apache.org/forrest/templates/1.0"
+  name="siteinfo-last-published-howto" type="nugget"&gt;
+  &lt;description&gt;
+    siteinfo-last-published-howto will output the last published date of the site with the help of jscript.
+  &lt;/description&gt;
+  &lt;usage&gt;&lt;![CDATA[&lt;forrest:contract name="siteinfo-last-published-howto"/&gt;]]&gt;&lt;/usage&gt;
+  &lt;forrest:template 
+    xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
+    xmlns:forrest="http://apache.org/forrest/templates/1.0"
+    format="html" name="siteinfo-last-published-howto" inputFormat="xsl" body="true" head="false"&gt;
+    &lt;xsl:stylesheet version="1.1" 
+        xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
+        xmlns:xsl="http://www.w3.org/1999/XSL/Transform"&gt;
+        &lt;xsl:template name="siteinfo-last-published-howto-body"&gt;
+          debug string - 
+          &lt;script type="text/javascript"&gt;document.write("&lt;i18n:text &gt;Last Published:&lt;/i18n:text&gt;&amp;#160;" + document.lastModified);&lt;/script&gt;
+        &lt;/xsl:template&gt;
+    &lt;/xsl:stylesheet&gt;
+  &lt;/forrest:template&gt;
+&lt;/forrest:contract&gt;
+      </pre>
+<a name="structurerContract" title="Activating the contract"> </a>
+<h3 class="underlined_5">Activating the contract</h3>
+<p>
+        To see whether the new contract works we need to add it to our structurer.
+        The contract usage contains the contract-tag <span class="codefrag">&lt;forrest:contract name="siteinfo-last-published-howto"/&gt;</span>
+        Please see <a href="../how/howto-dispatcher-structurer.html">Getting started with the "structurer"</a> for more details.
+      </p>
+<div class="note">
+<div class="label">Note</div>
+<div class="content">
+        Next to write are parameter-contracts with advanced features of the dispatcher. 
+      </div>
+</div>
+</div>
+<a name="Further Reading" title="Further Reading"> </a>
+<h2 class="underlined_10">Further Reading</h2>
+<div class="section">
+<p>
+      Congratulations you are now able to work with structurer contracts. 
+      From here we recommend to read the following How-To's (if not already done):
+    </p>
+<ul>
+      <li>
+<a href="../how/howto-dispatcher-structurer.html">Getting started with the "structurer"</a> </li>
+    </ul>
+</div>
+<a name="Feedback" title="Feedback"> </a>
+<h2 class="underlined_10">Feedback</h2>
+<div class="section">
+<p>
+      Please provide feedback about this document via the
+      <a href="http://forrest.apache.org/mail-lists.html">mailing lists</a>.
+    </p>
+</div>
+<!--+ |end content-main +-->
+</div>
+</div>
+<div id="footer">
+<div class="lastmodified">
+<script type="text/javascript">document.write("Last Published: " + document.lastModified);</script>
+</div>
+<div class="copyright">
+            Copyright ©
+             2002-2006 <a href="http://www.acme.org/licenses/">The Acme Software Organisation.</a> </div>
+<!--+ |start compliance links +-->
+<div id="siteinfo-compliance-links">
+<a href="http://validator.w3.org/check?uri=referer">
+<img alt="Valid XHTML 1.0!" height="31" src="http://www.w3.org/Icons/valid-xhtml10" width="88" />
+</a>
+<a href="http://jigsaw.w3.org/css-validator/check/referer">
+<img alt="Valid CSS!" src="http://jigsaw.w3.org/css-validator/images/vcss" style="border:0;width:88px;height:31px" />
+</a>
+</div>
+<!--+ |end compliance links +-->
+</div>
+</div>
+</body>
+</html>

Propchange: forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-contracts.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-contracts.pdf
URL: http://svn.apache.org/viewvc/forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-contracts.pdf?rev=427744&view=auto
==============================================================================
Binary file - no diff available.

Propchange: forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-contracts.pdf
------------------------------------------------------------------------------
    svn:mime-type = application/pdf

Added: forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-quickstart.dispatcher.css
URL: http://svn.apache.org/viewvc/forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-quickstart.dispatcher.css?rev=427744&view=auto
==============================================================================
--- forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-quickstart.dispatcher.css (added)
+++ forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-quickstart.dispatcher.css Tue Aug  1 14:29:56 2006
@@ -0,0 +1,50 @@
+
+  
+  
+  
+  
+  
+/* branding-theme-profiler-theme: Pelt */ 
+#header .round-top-left-small {
+    background-image: url(../themes/images/roundcorner-t-l-5-bg294563-stroke4a6d8c-fg4a6d8c.png);
+    background-repeat: no-repeat;
+    background-position: top left;
+}
+#header .round-top-right-small {
+    background-image: url(../themes/images/roundcorner-t-r-5-bg294563-stroke4a6d8c-fg4a6d8c.png);
+    background-repeat: no-repeat;
+    background-position: top right;
+}
+#nav-main li {
+    background-image: url(../themes/images/roundcorner-t-r-5-bg294563-strokeCEDFEF-fgCEDFEF.png);
+    background-repeat: no-repeat;
+    background-position: top right;
+}
+#nav-main li a {
+    background-image: url(../themes/images/roundcorner-t-l-5-bg294563-strokeCEDFEF-fgCEDFEF.png);
+    background-repeat: no-repeat;
+    background-position: top left;
+}
+#nav-main .current {
+    background-image: url(../themes/images/roundcorner-t-r-5-bg294563-stroke4a6d8c-fg4a6d8c.png);
+    background-repeat: no-repeat;
+    background-position: top right;
+}
+#nav-main .current a {
+    background-image: url(../themes/images/roundcorner-t-l-5-bg294563-stroke4a6d8c-fg4a6d8c.png);
+    background-repeat: no-repeat;
+    background-position: top left;
+}
+#roundbottom {
+    background-image: url(../themes/images/roundcorner-b-r-15-bgffffff-stroke4a6d8c-fg4a6d8c.png);
+    background-repeat: no-repeat;
+    background-position: bottom right;
+}
+#roundbottomLeft {
+    background-image: url(../themes/images/roundcorner-b-l-15-bgffffff-stroke4a6d8c-fg4a6d8c.png);
+    background-repeat: no-repeat;
+    background-position: bottom left;
+}
+            
+  
+  

Propchange: forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-quickstart.dispatcher.css
------------------------------------------------------------------------------
    svn:eol-style = native

Added: forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-quickstart.html
URL: http://svn.apache.org/viewvc/forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-quickstart.html?rev=427744&view=auto
==============================================================================
--- forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-quickstart.html (added)
+++ forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-quickstart.html Tue Aug  1 14:29:56 2006
@@ -0,0 +1,448 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+        <link href="../themes/common.css" media="screen" rel="alternate stylesheet" title="common" type="text/css" />
+        <link href="../themes/leather-dev.css" media="screen" rel="alternate stylesheet" title="common" type="text/css" />
+        <link href="../themes/pelt.screen.css" media="screen" rel="stylesheet" title="Pelt" type="text/css" />
+        
+        <link href="../how/howto-dispatcher-quickstart.dispatcher.css" media="screen" rel="stylesheet" title="Pelt" type="text/css" />
+        <link href="../themes/pelt.print.css" media="print" rel="stylesheet" title="pelt.print.css" type="text/css" />
+        <style type="text/css">/* Extra css */ 
+p.quote {
+ margin-left: 2em; 
+ padding: .5em; 
+ background-color: #f0f0f0; 
+ font-family: monospace; 
+}</style>
+      <meta content="Apache Forrest" name="Generator" />
+<meta content="0.8" name="Forrest-version" />
+<meta content="pelt" name="Forrest-theme-name" />
+<meta content="text/html; charset=UTF-8" http-equiv="content-type" />
+<!--+ |start navigation links +-->
+<link href="../index.html" rel="Index" title="Index..." />
+<link href="../linkmap.html" rel="CONTENTS" title="Site map..." />
+<link href="../how/howto-dispatcher-structurer.html" rel="NEXT" title="Structurer" />
+<link href="../how/howto-dispatcher-contracts.html" rel="LAST" title="Contracts" />
+<!--+ |end navigation links +-->
+<!--+|start favicon +-->
+<link href="../favicon.ico" rel="shortcut icon" />
+<!--+|start favicon +-->
+<script src="../themes/getBlank.js" type="text/javascript"> </script>
+<script src="../themes/menu.js" type="text/javascript"> </script>
+<!--+ |start content-title +-->
+<title>Dispatcher quickstart</title>
+<!--+ |end content-title +-->
+</head>
+<body>
+<div id="container">
+<!--+
+    | start breadtrail
+    +-->
+<div class="breadtrail">
+<a href="http://www.apache.org/">MyGroup</a>
+                   &gt; <a href="http://forrest.apache.org/">MyProject</a>
+<script src="../themes/breadcrumbs.js" type="text/javascript"> </script>
+</div>
+<!--+
+    | end breadtrail
+    +-->
+<div id="header">
+<div id="branding-tagline-name">new 
+            seed</div>
+<div id="branding-tagline-tagline">powered by the 
+            dispatcher</div>
+<div class="logo">
+<!--+
+    |start Logo
+    +-->
+<a href="http://mygroup.org/">
+<img alt="MyGroup" class="logoImage" src="../images/group.png" title="MyGroup Description" />
+</a>
+<!--+
+    |end group Logo
+    +-->
+</div>
+<div class="logo">
+<!--+
+    |start Logo
+    +-->
+<a href="http://myproj.mygroup.org/">
+<img alt="MyProject" class="logoImage" src="../images/project.png" title="MyProject Description" />
+</a>
+<!--+
+    |end group Logo
+    +-->
+</div>
+<!--+
+  |start Search
+  +-->
+<div class="searchbox">
+<div class="round-top-left-small">
+<div class="round-top-right-small">
+<div class="search-input">
+<form action="http://www.google.com/search" method="get">
+<div class="search-hidden">
+<input name="sitesearch" type="hidden" value="mydomain" />
+</div>
+<div class="search-field">
+<input name="q" size="25" type="text" value="Search the site with google" />
+</div>
+<div class="search-submit">
+<input name="Search" type="submit" value="Search" />
+</div>
+</form>
+</div>
+</div>
+</div>
+</div>
+<!--+ |end search +-->
+<div id="nav-main-hook">
+<!--+ |start Tabs new +-->
+<ul id="nav-main">
+<li>
+<a class="base-not-selected" href="../index.html">Home</a>
+</li>
+<li class="current">
+<a class="base-selected" href="../how/howto-dispatcher-quickstart.html">HowTo</a>
+</li>
+</ul>
+<!--+ |end Tabs +-->
+<div id="publishedStrip"> <!--+
+    |start nav-main-sub
+    +--><!--+
+    |end Endtabs
+    +--><script type="text/javascript">document.write("Last Published: " + document.lastModified);</script>
+</div>
+</div>
+</div>
+<div id="page">
+<div class="breadtrail"> </div>
+<div id="leftbar">
+<!--+ |start 0 menu +-->
+<!--+ |start Menu +-->
+<div id="nav-section">
+<ul>
+<li class="pagegroupselected" id="menu_selected_1.1Title">
+<span onclick="SwitchMenu('menu_selected_1.1')">How to</span>
+<ul class="&#10;               selectedmenuitemgroup" id="menu_selected_1.1">
+<li class="menupage">
+<div class="menupagetitle">Quickstart</div>
+</li>
+<li class="menuitem">
+<a href="../how/howto-dispatcher-structurer.html" title="">Structurer</a>
+</li>
+<li class="menuitem">
+<a href="../how/howto-dispatcher-contracts.html" title="">Contracts</a>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!--+ |end menu +-->
+<!--+ |start content-motd-page +-->
+<!--+ |end content-motd-page +-->
+<div id="roundbottom">
+<div id="roundbottomLeft">
+<img alt="spacer" src="../themes/images/spacer.gif" />
+</div>
+</div>
+</div>
+<div id="export-link">
+<a class="format" href="howto-dispatcher-quickstart.pdf">
+<img alt="PDF - icon" class="skin" src="../themes/images/pdfdoc.gif" />
+<span class="caption">PDF</span>
+</a>
+</div>
+<div id="content">
+<!--+ |start content-title +-->
+<h1 class="content-title">Dispatcher quickstart</h1>
+<!--+ |end content-title +-->
+<!--+ |start content-abstract +-->
+<!--+ |end content-abstract +-->
+<!--+ |start content-minitoc +-->
+<div id="content-minitoc-area">
+<ul class="minitoc">
+<li>
+<a href="#Intended Audience">Intended Audience</a>
+</li>
+<li>
+<a href="#Purpose">Purpose</a>
+</li>
+<li>
+<a href="#Prerequisites">Prerequisites</a>
+</li>
+<li>
+<a href="#Steps">Steps</a>
+<ul class="minitoc">
+<li>
+<a href="#patch">Get ready</a>
+</li>
+<li>
+<a href="#enable">Dispatcher-enable the existing site</a>
+</li>
+<li>
+<a href="#another-theme">Use another theme</a>
+</li>
+<li>
+<a href="#our-structurer">Create our own structurer by copy-and-customise</a>
+</li>
+<li>
+<a href="#remove-default-contract">Remove a default contract</a>
+</li>
+<li>
+<a href="#add-default-contract">Add a default contract</a>
+</li>
+<li>
+<a href="#add-project-contract">Add a new project contract</a>
+</li>
+<li>
+<a href="#manage">Decide how to manage your contracts</a>
+</li>
+</ul>
+</li>
+<li>
+<a href="#Further Reading">Further Reading</a>
+</li>
+<li>
+<a href="#Feedback">Feedback</a>
+</li>
+</ul>
+</div>
+<!--+ |end minitoc +-->
+<!--+ |start content-main +-->
+<a name="Intended Audience" title="Intended Audience"> </a>
+<h2 class="underlined_10">Intended Audience</h2>
+<div class="section">
+<p>People who are helping to develop the Dispatcher.</p>
+<div class="warning">
+<div class="label">Warning</div>
+<div class="content"> The "Dispatcher" (previously known as "Views") is new functionality which is 
+      still in development phase. That is why it is in the "whiteboard" section 
+      of Forrest. This document will also need to change to keep pace.
+      We are working at the moment on moving this plugin
+      from the whiteboard into the core plugins.
+      See <a href="http://forrest.apache.org/docs_0_80/status-themes.html">Status of Themes: Skins and Dispatcher</a>.
+    </div>
+</div>
+</div>
+<a name="Purpose" title="Purpose"> </a>
+<h2 class="underlined_10">Purpose</h2>
+<div class="section">
+<p>
+      This document will get you started. We will Dispatcher-enable an
+      existing site and show how to add/remove ready-made contacts.
+      Then we will discuss how add your own new contracts.
+    </p>
+<p>
+      This document encourages developers to get involved with
+      fine-tuning and testing the dispatcher. Please help to
+      enhance the current core contracts so that people do not
+      need to re-invent the wheel.
+    </p>
+</div>
+<a name="Prerequisites" title="Prerequisites"> </a>
+<h2 class="underlined_10">Prerequisites</h2>
+<div class="section">
+<ul>
+      <li>Using Forrest trunk of SVN (i.e. forrest-0.8-dev).
+      </li>
+      <li>Followed the installation instructions below.</li>
+      <li>You have an existing forrest site and want to try the
+        new Dispatcher. Otherwise create a 'forrest seed-sample' site.</li>
+    </ul>
+</div>
+<a name="Steps" title="Steps"> </a>
+<h2 class="underlined_10">Steps</h2>
+<div class="section">
+<div class="note">
+<div class="label">Note</div>
+<div class="content"> When developing with the dispatcher we assume you are using 'forrest 
+      run' and the following workflow "change files -&gt; refresh browser".<br /> 
+      Installing a mozilla browser and the 
+      <a href="http://forrest.apache.org/tools/forrestbar.html">Forrestbar</a> helps a lot with developing,
+      but is not necessary.
+    </div>
+</div>
+<a name="patch" title="Get ready"> </a>
+<h3 class="underlined_5">Get ready</h3>
+<ul>
+        <li>Do 'svn update' on forrest/trunk</li>
+        <li>Do the 'build clean; build' (necessary because the Dispatcher is changing rapidly and uses some Java)</li>
+      </ul>
+<a name="enable" title="Dispatcher-enable the existing site"> </a>
+<h3 class="underlined_5">Dispatcher-enable the existing site</h3>
+<ul>
+        <li>Add the new plugins to forrest.properties ...
+        ,org.apache.forrest.plugin.internal.dispatcher,org.apache.forrest.themes.core
+        </li>
+        <li>localhost:8888/index.html ... fantastic. See the default view.</li>
+      </ul>
+<a name="another-theme" title="Use another theme"> </a>
+<h3 class="underlined_5">Use another theme</h3>
+<ul>
+        <li>Add project.theme=pelt to forrest.properties</li>
+        <li>Re-start 'forrest run'</li>
+        <li>localhost:8888/index.html ... See the new view.</li>
+      </ul>
+<a name="our-structurer" title="Create our own structurer by copy-and-customise"> </a>
+<h3 class="underlined_5">Create our own structurer by copy-and-customise</h3>
+<p>
+        Copy the default structurer for the pelt theme and make local changes.
+      </p>
+<div class="note">
+<div class="label">Note</div>
+<div class="content">
+        At this stage of rapid development of the Dispatcher, be sure to keep
+        your copy synchronised. Use 'diff' against the known svn version of
+        the core pelt.fv to track your local changes.
+        Also please consider contributing new contracts and changes to the
+        default structurers to the Forrest projects. That eases your local
+        version management and everyone will benefit.
+      </div>
+</div>
+<ul>
+        <li>Copy THEMER_PLUGIN/resources/themes/pelt.fv into your project at
+          PROJECT_HOME/src/documentation/resources/themes/pelt.fv
+          (create the new directory folder first).
+        </li>
+        <li>Re-start 'forrest run'</li>
+        <li>localhost:8888/index.html ... See the same view, now structured
+          by us.
+        </li>
+      </ul>
+<p>
+        From here on there is no need to re-start 'forrest run'. Just edit
+        the structurer and see the effect.
+      </p>
+<a name="remove-default-contract" title="Remove a default contract"> </a>
+<h3 class="underlined_5">Remove a default contract</h3>
+<ul>
+        <li>Remove one of the search boxes. Edit your pelt.fv and find the
+          "search-input" contract (there are two). Comment one out.
+        </li>
+      </ul>
+<a name="add-default-contract" title="Add a default contract"> </a>
+<h3 class="underlined_5">Add a default contract</h3>
+<p>
+        Forrest provides many default contracts. If you are using the
+        Forrestbar then choose "Devs =&gt; ls.contracts". Otherwise visit
+        localhost:8888/ls.contracts.html
+      </p>
+<ul>
+        <li>
+          See the usage detail for your chosen contract via the abovementioned list.
+          e.g. "siteinfo-compliance-links"
+        </li>
+        <li>
+          Insert it at the appropriate point in your structurer. Note that it
+          will need to go inside the appropriate CSS hook, e.g.
+        <pre class="code">  ...
+  &lt;forrest:hook name="footer"&gt;
+    &lt;forrest:contract name="siteinfo-compliance-links"/&gt;
+    ...
+</pre>
+        </li>
+      </ul>
+<p>
+        Notice that you did not need to copy any other code to your project space.
+        Forrest finds the default contract in its core (the theme.core plugin).
+      </p>
+<a name="add-project-contract" title="Add a new project contract"> </a>
+<h3 class="underlined_5">Add a new project contract</h3>
+<div class="warning">
+<div class="label">Warning</div>
+<div class="content">
+        Carefully consider the purpose of your contracts. If they are useful
+        in a wider context, then they belong in plugins or the core of Forrest.
+        See below for further discussion on this important topic.
+      </div>
+</div>
+<p>
+        Project-based contracts are defined in theme-specific and
+        output-format-specific directory structure, e.g.
+        PROJECT_HOME/src/documentation/resources/themes/THEME_NAME/OUTPUT_FORMAT/
+      </p>
+<p>
+       Project-based contracts common to all themes go in
+        PROJECT_HOME/src/documentation/resources/themes/common/OUTPUT_FORMAT/
+      </p>
+<p>
+        To get started quickly (it is not a project-based contract but a demo),
+        copy one of the default contracts. e.g. copy siteinfo-current-time.ft to become siteinfo-doodad.ft ...
+      </p>
+<ul>
+        <li>
+          Copy THEMER_PLUGIN/resources/themes/common/html/siteinfo-current-time.ft
+          into your project at
+          PROJECT_HOME/src/documentation/resources/themes/common/html/siteinfo-doodad.ft
+          (create the new directory folders first).
+        </li>
+        <li>
+          Edit it to suit. Replace all occurrences of "siteinfo-current-time" with
+          "siteinfo-doodad" and make your other changes (e.g. the text and the
+          javascript function).
+        </li>
+        <li>
+          Declare your new contract in your structurer as done above for adding a
+          default contract.
+        </li>
+      </ul>
+<p>
+        See a list of your project-based contracts and their usage notes via 
+        Forrestbar "Devs =&gt; ls.contracts.project". Otherwise visit
+        localhost:8888/ls.contracts.project.html
+      </p>
+<a name="manage" title="Decide how to manage your contracts"> </a>
+<h3 class="underlined_5">Decide how to manage your contracts</h3>
+<div class="fixme">
+<div class="label">Fixme (open)</div>
+<div class="content">
+Glean content from Ross' discussion:
+<a href="http://marc.theaimsgroup.com/?l=forrest-dev&amp;m=113748831226697">Re: Dispatcher quickstart</a>.
+</div>
+</div>
+</div>
+<a name="Further Reading" title="Further Reading"> </a>
+<h2 class="underlined_10">Further Reading</h2>
+<div class="section">
+<p> Congratulations you are now able to work with the Dispatcher. From here 
+      we recommend to read the following How-Tos: </p>
+<ul>
+      <li>
+        <a href="../how/howto-dispatcher-structurer.html">How to use the structurer</a>
+      </li>
+      <li>
+        <a href="../how/howto-dispatcher-contracts.html">Create your own contract 
+          implementation</a>
+      </li>
+    </ul>
+</div>
+<a name="Feedback" title="Feedback"> </a>
+<h2 class="underlined_10">Feedback</h2>
+<div class="section">
+<p> Please provide feedback about this document via the <a href="http://forrest.apache.org/mail-lists.html">mailing lists</a>. </p>
+</div>
+<!--+ |end content-main +-->
+</div>
+</div>
+<div id="footer">
+<div class="lastmodified">
+<script type="text/javascript">document.write("Last Published: " + document.lastModified);</script>
+</div>
+<div class="copyright">
+            Copyright ©
+             2002-2006 <a href="http://www.acme.org/licenses/">The Acme Software Organisation.</a> </div>
+<!--+ |start compliance links +-->
+<div id="siteinfo-compliance-links">
+<a href="http://validator.w3.org/check?uri=referer">
+<img alt="Valid XHTML 1.0!" height="31" src="http://www.w3.org/Icons/valid-xhtml10" width="88" />
+</a>
+<a href="http://jigsaw.w3.org/css-validator/check/referer">
+<img alt="Valid CSS!" src="http://jigsaw.w3.org/css-validator/images/vcss" style="border:0;width:88px;height:31px" />
+</a>
+</div>
+<!--+ |end compliance links +-->
+</div>
+</div>
+</body>
+</html>

Propchange: forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-quickstart.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-quickstart.pdf
URL: http://svn.apache.org/viewvc/forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-quickstart.pdf?rev=427744&view=auto
==============================================================================
Binary file - no diff available.

Propchange: forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-quickstart.pdf
------------------------------------------------------------------------------
    svn:mime-type = application/pdf

Added: forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-structurer.dispatcher.css
URL: http://svn.apache.org/viewvc/forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-structurer.dispatcher.css?rev=427744&view=auto
==============================================================================
--- forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-structurer.dispatcher.css (added)
+++ forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-structurer.dispatcher.css Tue Aug  1 14:29:56 2006
@@ -0,0 +1,50 @@
+
+  
+  
+  
+  
+  
+/* branding-theme-profiler-theme: Pelt */ 
+#header .round-top-left-small {
+    background-image: url(../themes/images/roundcorner-t-l-5-bg294563-stroke4a6d8c-fg4a6d8c.png);
+    background-repeat: no-repeat;
+    background-position: top left;
+}
+#header .round-top-right-small {
+    background-image: url(../themes/images/roundcorner-t-r-5-bg294563-stroke4a6d8c-fg4a6d8c.png);
+    background-repeat: no-repeat;
+    background-position: top right;
+}
+#nav-main li {
+    background-image: url(../themes/images/roundcorner-t-r-5-bg294563-strokeCEDFEF-fgCEDFEF.png);
+    background-repeat: no-repeat;
+    background-position: top right;
+}
+#nav-main li a {
+    background-image: url(../themes/images/roundcorner-t-l-5-bg294563-strokeCEDFEF-fgCEDFEF.png);
+    background-repeat: no-repeat;
+    background-position: top left;
+}
+#nav-main .current {
+    background-image: url(../themes/images/roundcorner-t-r-5-bg294563-stroke4a6d8c-fg4a6d8c.png);
+    background-repeat: no-repeat;
+    background-position: top right;
+}
+#nav-main .current a {
+    background-image: url(../themes/images/roundcorner-t-l-5-bg294563-stroke4a6d8c-fg4a6d8c.png);
+    background-repeat: no-repeat;
+    background-position: top left;
+}
+#roundbottom {
+    background-image: url(../themes/images/roundcorner-b-r-15-bgffffff-stroke4a6d8c-fg4a6d8c.png);
+    background-repeat: no-repeat;
+    background-position: bottom right;
+}
+#roundbottomLeft {
+    background-image: url(../themes/images/roundcorner-b-l-15-bgffffff-stroke4a6d8c-fg4a6d8c.png);
+    background-repeat: no-repeat;
+    background-position: bottom left;
+}
+            
+  
+  

Propchange: forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-structurer.dispatcher.css
------------------------------------------------------------------------------
    svn:eol-style = native

Added: forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-structurer.html
URL: http://svn.apache.org/viewvc/forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-structurer.html?rev=427744&view=auto
==============================================================================
--- forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-structurer.html (added)
+++ forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-structurer.html Tue Aug  1 14:29:56 2006
@@ -0,0 +1,624 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+        <link href="../themes/common.css" media="screen" rel="alternate stylesheet" title="common" type="text/css" />
+        <link href="../themes/leather-dev.css" media="screen" rel="alternate stylesheet" title="common" type="text/css" />
+        <link href="../themes/pelt.screen.css" media="screen" rel="stylesheet" title="Pelt" type="text/css" />
+        
+        <link href="../how/howto-dispatcher-structurer.dispatcher.css" media="screen" rel="stylesheet" title="Pelt" type="text/css" />
+        <link href="../themes/pelt.print.css" media="print" rel="stylesheet" title="pelt.print.css" type="text/css" />
+        <style type="text/css">/* Extra css */ 
+p.quote {
+ margin-left: 2em; 
+ padding: .5em; 
+ background-color: #f0f0f0; 
+ font-family: monospace; 
+}</style>
+      <meta content="Apache Forrest" name="Generator" />
+<meta content="0.8" name="Forrest-version" />
+<meta content="pelt" name="Forrest-theme-name" />
+<meta content="text/html; charset=UTF-8" http-equiv="content-type" />
+<!--+ |start navigation links +-->
+<link href="../index.html" rel="Index" title="Index..." />
+<link href="../linkmap.html" rel="CONTENTS" title="Site map..." />
+<link href="../how/howto-dispatcher-contracts.html" rel="NEXT" title="Contracts" />
+<link href="../how/howto-dispatcher-quickstart.html" rel="PREVIOUS" title="Quickstart" />
+<link href="../how/howto-dispatcher-contracts.html" rel="LAST" title="Contracts" />
+<link href="../how/howto-dispatcher-quickstart.html" rel="FIRST" title="Quickstart" />
+<!--+ |end navigation links +-->
+<!--+|start favicon +-->
+<link href="../favicon.ico" rel="shortcut icon" />
+<!--+|start favicon +-->
+<script src="../themes/getBlank.js" type="text/javascript"> </script>
+<script src="../themes/menu.js" type="text/javascript"> </script>
+<!--+ |start content-title +-->
+<title>How to use the structurer</title>
+<!--+ |end content-title +-->
+</head>
+<body>
+<div id="container">
+<!--+
+    | start breadtrail
+    +-->
+<div class="breadtrail">
+<a href="http://www.apache.org/">MyGroup</a>
+                   &gt; <a href="http://forrest.apache.org/">MyProject</a>
+<script src="../themes/breadcrumbs.js" type="text/javascript"> </script>
+</div>
+<!--+
+    | end breadtrail
+    +-->
+<div id="header">
+<div id="branding-tagline-name">new 
+            seed</div>
+<div id="branding-tagline-tagline">powered by the 
+            dispatcher</div>
+<div class="logo">
+<!--+
+    |start Logo
+    +-->
+<a href="http://mygroup.org/">
+<img alt="MyGroup" class="logoImage" src="../images/group.png" title="MyGroup Description" />
+</a>
+<!--+
+    |end group Logo
+    +-->
+</div>
+<div class="logo">
+<!--+
+    |start Logo
+    +-->
+<a href="http://myproj.mygroup.org/">
+<img alt="MyProject" class="logoImage" src="../images/project.png" title="MyProject Description" />
+</a>
+<!--+
+    |end group Logo
+    +-->
+</div>
+<!--+
+  |start Search
+  +-->
+<div class="searchbox">
+<div class="round-top-left-small">
+<div class="round-top-right-small">
+<div class="search-input">
+<form action="http://www.google.com/search" method="get">
+<div class="search-hidden">
+<input name="sitesearch" type="hidden" value="mydomain" />
+</div>
+<div class="search-field">
+<input name="q" size="25" type="text" value="Search the site with google" />
+</div>
+<div class="search-submit">
+<input name="Search" type="submit" value="Search" />
+</div>
+</form>
+</div>
+</div>
+</div>
+</div>
+<!--+ |end search +-->
+<div id="nav-main-hook">
+<!--+ |start Tabs new +-->
+<ul id="nav-main">
+<li>
+<a class="base-not-selected" href="../index.html">Home</a>
+</li>
+<li class="current">
+<a class="base-selected" href="../how/howto-dispatcher-quickstart.html">HowTo</a>
+</li>
+</ul>
+<!--+ |end Tabs +-->
+<div id="publishedStrip"> <!--+
+    |start nav-main-sub
+    +--><!--+
+    |end Endtabs
+    +--><script type="text/javascript">document.write("Last Published: " + document.lastModified);</script>
+</div>
+</div>
+</div>
+<div id="page">
+<div class="breadtrail"> </div>
+<div id="leftbar">
+<!--+ |start 0 menu +-->
+<!--+ |start Menu +-->
+<div id="nav-section">
+<ul>
+<li class="pagegroupselected" id="menu_selected_1.1Title">
+<span onclick="SwitchMenu('menu_selected_1.1')">How to</span>
+<ul class="&#10;               selectedmenuitemgroup" id="menu_selected_1.1">
+<li class="menuitem">
+<a href="../how/howto-dispatcher-quickstart.html" title="">Quickstart</a>
+</li>
+<li class="menupage">
+<div class="menupagetitle">Structurer</div>
+</li>
+<li class="menuitem">
+<a href="../how/howto-dispatcher-contracts.html" title="">Contracts</a>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!--+ |end menu +-->
+<!--+ |start content-motd-page +-->
+<!--+ |end content-motd-page +-->
+<div id="roundbottom">
+<div id="roundbottomLeft">
+<img alt="spacer" src="../themes/images/spacer.gif" />
+</div>
+</div>
+</div>
+<div id="export-link">
+<a class="format" href="howto-dispatcher-structurer.pdf">
+<img alt="PDF - icon" class="skin" src="../themes/images/pdfdoc.gif" />
+<span class="caption">PDF</span>
+</a>
+</div>
+<div id="content">
+<!--+ |start content-title +-->
+<h1 class="content-title">How to use the structurer</h1>
+<!--+ |end content-title +-->
+<!--+ |start content-abstract +--> This How-To describes the usage of the structurer config domain 
+    specific language to create beautiful websites in no time. <!--+ |end content-abstract +--><!--+ |start content-minitoc +--><div id="content-minitoc-area">
+<ul class="minitoc">
+<li>
+<a href="#Intended Audience">Intended Audience</a>
+</li>
+<li>
+<a href="#Purpose">Purpose</a>
+</li>
+<li>
+<a href="#Prerequisites">Prerequisites</a>
+</li>
+<li>
+<a href="#Steps">Steps</a>
+<ul class="minitoc">
+<li>
+<a href="#emptystructurer">Empty structurer file</a>
+</li>
+<li>
+<a href="#firststructurer">Creating your first structurer</a>
+</li>
+<li>
+<a href="#hookstructurer">Hooks in the structurer</a>
+</li>
+<li>
+<a href="#cssstructurer">CSS in the structurer</a>
+</li>
+<li>
+<a href="#Linking+to+an+external+css+file">Linking to an external css file</a>
+</li>
+</ul>
+</li>
+<li>
+<a href="#Further Reading">Further Reading</a>
+</li>
+<li>
+<a href="#Feedback">Feedback</a>
+</li>
+</ul>
+</div>
+<!--+ |end minitoc +-->
+<!--+ |start content-main +-->
+<a name="Intended Audience" title="Intended Audience"> </a>
+<h2 class="underlined_10">Intended Audience</h2>
+<div class="section">
+<div class="warning">
+<div class="label">Warning</div>
+<div class="content"> The "Dispatcher" (aka "Views") is new functionality which is 
+      still in development phase. That is why it is in the "whiteboard" section 
+      of the Forrest distribution. This HowTo is a good start but still needs 
+      more work.
+      See <a href="http://forrest.apache.org/docs_0_80/status-themes.html">Status of Themes: Skins and Dispatcher</a>.
+    </div>
+</div>
+<p> This part of the the dispatcher is called the structurer and is 
+      dedicated to webdesigner and user with some knowledge of css. </p>
+</div>
+<a name="Purpose" title="Purpose"> </a>
+<h2 class="underlined_10">Purpose</h2>
+<div class="section">
+<p> This how-to will show you how to write a <strong>structurer</strong> 
+      from the ground up. We will focus on html as the output format. As well 
+      it will show how to add your own css implementation to the structurer. 
+      </p>
+</div>
+<a name="Prerequisites" title="Prerequisites"> </a>
+<h2 class="underlined_10">Prerequisites</h2>
+<div class="section">
+<ul>
+      <li>Installing a mozilla browser and the forrestbar helps a lot in 
+        developing.</li>
+    </ul>
+</div>
+<a name="Steps" title="Steps"> </a>
+<h2 class="underlined_10">Steps</h2>
+<div class="section">
+<div class="note">
+<div class="label">Note</div>
+<div class="content"> When developing with the dispatcher we assume you are using 'forrest 
+      run' and the following workflow "change files -&gt; refresh browser"<br /> 
+      Installing a mozilla browser and the forrestbar helps a lot in 
+      developing. Many instructions assumes that you have the forrestbar 
+      installed. </div>
+</div>
+<a name="emptystructurer" title="Empty structurer file"> </a>
+<h3 class="underlined_5">Empty structurer file</h3>
+<pre class="code">&lt;forrest:views 
+  xmlns:forrest="http://apache.org/forrest/templates/1.0"
+  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"&gt;
+  &lt;forrest:view type="html"&gt;
+  &lt;/forrest:view&gt;
+&lt;/forrest:views&gt;
+      </pre>
+<p> <strong> The structurer</strong> is designed to be open for any 
+        format that can use<strong> forrest:view</strong> as configuration 
+        file. The only format we implemented is html for now. This is as well 
+        true for the delivered contracts. </p>
+<a name="firststructurer" title="Creating your first structurer"> </a>
+<h3 class="underlined_5">Creating your first structurer</h3>
+<div class="warning">
+<div class="label">Warning</div>
+<div class="content"> The structurer is based on jx templates to allow simple 
+        presentation logic (all code starting with "jx:"). Please refer to the 
+        cocoon documentation about jx. </div>
+</div>
+<p> In this section we will create a new structurer. We will override the 
+        default structurer of the core themes for the index page of a new seed. 
+        For that we will create a file called <span class="codefrag">index.fv</span> and save it 
+        in the directory <span class="codefrag">{project:resources}/structurer/url</span> 
+        (create it if needed). This will make <strong>only</strong> the 
+        index.html page look different from the rest of the project. </p>
+<div class="note">
+<div class="label">RecursiveDirectoryTraversalAction</div>
+<div class="content"> You can set a view for an individual file, a directory, or the whole site. To address multiple files in a directory call your  <span class="codefrag">.fv</span> file <span class="codefrag">common.fv</span>. If Forrest doesn't find a <span class="codefrag">.fv</span> file with the same name as the current file it will use the common.fv file in that directory, or the first one it finds going upwards through the directory structure. 
+	<span class="codefrag">common.fv</span> files affect all subdirectories unless they are overidden by another <span class="codefrag">common.fv</span> or a file-specific <span class="codefrag">foo.fv</span> file. 
+	</div>
+</div>
+<p> Remember: pointing your browser to 
+        <span class="codefrag">http://localhost:8888/ls.contracts.html</span> will show a page 
+        with all contracts and themes that you can use in your project provided 
+        by forrest. </p>
+<p> Let us use the blank structurer from the earlier step and add the 
+        content-main contract. In ls.contracts.html we find the information for 
+        how to use the contract in our structurer. Our <span class="codefrag">index.fv</span> 
+        should look like: </p>
+<pre class="code">&lt;forrest:views 
+  xmlns:forrest="http://apache.org/forrest/templates/1.0"
+  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"&gt;
+  &lt;forrest:view type="html"&gt;
+    &lt;forrest:contract name="content-main"&gt;
+    &lt;forrest:properties contract="content-main"&gt;
+      &lt;forrest:property name="content-main" nugget="get.body"&gt;
+        &lt;jx:import uri="cocoon://#{$cocoon/parameters/getRequest}.body.xml"/&gt;
+      &lt;/forrest:property&gt;
+      &lt;!-- Heading types can be clean|underlined|boxed  --&gt;
+      &lt;forrest:property name="content-main-conf"&gt;
+        &lt;headings type="underlined"/&gt;
+      &lt;/forrest:property&gt;
+    &lt;/forrest:properties&gt;
+  &lt;/forrest:contract&gt;
+  &lt;/forrest:view&gt;
+&lt;/forrest:views&gt;
+      </pre>
+<p>A contract has to request the data model it want to transform. This 
+        happends by defining forrest:properties which have the same name like 
+        the contract. In our case we want the HTML rendered from intermediate 
+        format (**.body.xml). This we are going to include via: <span class="codefrag">&lt;jx:import uri="cocoon://#{$cocoon/parameters/getRequest}.body.xml"/&gt;
+         </span>
+</p>
+<p>Contracts can offer some property configuration of the outcome of 
+            the transformation. In our case <span class="codefrag">&lt;forrest:property name="content-main-conf"&gt;
+        &lt;headings type="underlined"/&gt;
+      &lt;/forrest:property&gt;. </span>
+</p>
+<p> Lets try our new structurer by pointing to 
+        <span class="codefrag">http://localhost:8888/index.html</span>. We will see only the 
+        main content. Now let us add the section navigation to our structurer. 
+        The contract usage in the structurer can be looked up in 
+        ls.contracts.html. Our structurer now looks like: </p>
+<pre class="code">&lt;forrest:views 
+  xmlns:forrest="http://apache.org/forrest/templates/1.0"
+  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"&gt;
+  &lt;forrest:view type="html"&gt;
+    &lt;forrest:contract name="nav-main"&gt;
+      &lt;forrest:properties contract="nav-main"&gt;
+        &lt;forrest:property name="nav-main" nugget="get.navigation"&gt;
+          &lt;jx:import 
+            uri="cocoon://#{$cocoon/parameters/getRequest}.navigation.xml"/&gt;
+        &lt;/forrest:property&gt;
+      &lt;/forrest:properties&gt;
+    &lt;/forrest:contract&gt;
+    &lt;forrest:contract name="content-main"&gt;
+      &lt;forrest:properties contract="content-main"&gt;
+        &lt;forrest:property name="content-main" nugget="get.body"&gt;
+          &lt;jx:import uri="cocoon://#{$cocoon/parameters/getRequest}.body.xml"/&gt;
+        &lt;/forrest:property&gt;
+        &lt;!-- Heading types can be clean|underlined|boxed  --&gt;
+        &lt;forrest:property name="content-main-conf"&gt;
+          &lt;headings type="underlined"/&gt;
+        &lt;/forrest:property&gt;
+      &lt;/forrest:properties&gt;
+    &lt;/forrest:contract&gt;
+  &lt;/forrest:view&gt;
+&lt;/forrest:views&gt;
+      </pre>
+<p> We now find the main content and the section navigation after each 
+        other and in the order we placed them in the structurer, but we want it 
+        next to each other (left: nav-section; right: content-main). </p>
+<a name="hookstructurer" title="Hooks in the structurer"> </a>
+<h3 class="underlined_5">Hooks in the structurer</h3>
+<p> We will use now the first time a <span class="codefrag">&lt;forrest:hook name="layoutId"/&gt;
+         </span>. Hooks are the styling side of the structurer. We can imitate 
+        arbitrary html skeleton with their help. Before we explain how to use 
+        your own css in the structurer, we will use the default css. You can 
+        see in our example that we have css included. That is a default 
+        fallback coming from the implementation. In this common.css we can find 
+        </p>
+<pre class="code">/* menu */
+#leftbar {
+    width: 25%;
+    float: left;
+    background: #eae8e3;
+    border: thin dashed #565248;
+}
+      </pre>
+<p> With this information we know to use <span class="codefrag">&lt;forrest:hook name="leftbar"/&gt;
+        </span> and add contracts into that container. </p>
+<p> If we want to put the nav-section contract into the left-hand side 
+        position of the site we need to place the contract into that hook. 
+        Like: </p>
+<pre class="code">&lt;forrest:hook name="leftbar"&gt;
+  &lt;!-- Include contract here --&gt;
+&lt;/forrest:hook&gt;
+      </pre>
+<p> Our structurer will then look like: </p>
+<pre class="code">&lt;forrest:views 
+  xmlns:forrest="http://apache.org/forrest/templates/1.0"
+  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"&gt;
+  &lt;forrest:view type="html"&gt;
+    &lt;forrest:hook name="leftbar"&gt;
+      &lt;forrest:contract name="nav-section"&gt;
+        &lt;forrest:properties contract="nav-section"&gt;
+          &lt;forrest:property name="nav-section" nugget="get.navigation"&gt;
+            &lt;jx:import 
+              uri="cocoon://#{$cocoon/parameters/getRequest}.navigation.xml"/&gt;
+          &lt;/forrest:property&gt;
+        &lt;/forrest:properties&gt;
+      &lt;/forrest:contract&gt;
+    &lt;/forrest:hook&gt;   
+    &lt;forrest:contract name="content-main"&gt;
+      &lt;forrest:properties contract="content-main"&gt;
+        &lt;forrest:property name="content-main" nugget="get.body"&gt;
+          &lt;jx:import uri="cocoon://#{$cocoon/parameters/getRequest}.body.xml"/&gt;
+        &lt;/forrest:property&gt;
+        &lt;!-- Heading types can be clean|underlined|boxed  --&gt;
+        &lt;forrest:property name="content-main-conf"&gt;
+          &lt;headings type="underlined"/&gt;
+        &lt;/forrest:property&gt;
+      &lt;/forrest:properties&gt;
+    &lt;/forrest:contract&gt;
+  &lt;/forrest:view&gt;
+&lt;/forrest:views&gt;
+      </pre>
+<a name="cssstructurer" title="CSS in the structurer"> </a>
+<h3 class="underlined_5">CSS in the structurer</h3>
+<p>We now know how to place contracts and hooks in our structurer. Until 
+        this stage we only used the common.css. CSS-support of the structurer 
+        is as easy as placing contracts/hooks. To override the common.css 
+        stylesheet we use another tag within our structurer <span class="codefrag">&lt;forrest:css /&gt;
+        </span>. </p>
+<p>You can add inline and linked css with the structurer. As soon as you 
+        use forrest:css you will disable the fallback css support from 
+        forrest. With this tag we tell the dispatcher that we want to override the common.css.  
+        After adding the following to our index.fv the design will be different.</p>
+<pre class="code">&lt;forrest:css &gt;
+/* Extra css */
+/* menu */
+#leftbar {
+  width: 25%;
+  float: left;
+  background: #CCCCFF;
+  border: thin solid #000000;
+}
+&lt;/forrest:css&gt; </pre>
+<p> We just changed the border-style to 'solid', the background to 
+        '#CCCCFF' and the color to '#000000'.  So you see a white page where the menu is surrounded by a solid 
+        border with the defined background.</p>
+<div class="note">
+<div class="label">Note</div>
+<div class="content">
+        <span class="codefrag">&lt;forrest:css /&gt;</span> needs to be the direct child of 
+        <span class="codefrag">&lt;forrest:view type="html"&gt;</span>
+      </div>
+</div>
+<pre class="code">&lt;forrest:views 
+  xmlns:forrest="http://apache.org/forrest/templates/1.0"
+  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"&gt;
+  &lt;forrest:view type="html"&gt;
+    &lt;forrest:css &gt;
+/* Extra css */
+/* menu */
+#leftbar {
+  width: 25%;
+  float: left;
+  background: #CCCCFF;
+  border: thin solid #000000;
+}
+    &lt;/forrest:css&gt;
+    &lt;forrest:hook name="leftbar"&gt;
+      &lt;forrest:contract name="nav-section"&gt;
+        &lt;forrest:properties contract="nav-section"&gt;
+          &lt;forrest:property name="nav-section" nugget="get.navigation"&gt;
+            &lt;jx:import 
+              uri="cocoon://#{$cocoon/parameters/getRequest}.navigation.xml"/&gt;
+          &lt;/forrest:property&gt;
+        &lt;/forrest:properties&gt;
+      &lt;/forrest:contract&gt;
+    &lt;/forrest:hook&gt;   
+    &lt;forrest:contract name="content-main"&gt;
+      &lt;forrest:properties contract="content-main"&gt;
+        &lt;forrest:property name="content-main" nugget="get.body"&gt;
+          &lt;jx:import uri="cocoon://#{$cocoon/parameters/getRequest}.body.xml"/&gt;
+        &lt;/forrest:property&gt;
+        &lt;!-- Heading types can be clean|underlined|boxed  --&gt;
+        &lt;forrest:property name="content-main-conf"&gt;
+          &lt;headings type="underlined"/&gt;
+        &lt;/forrest:property&gt;
+      &lt;/forrest:properties&gt;
+    &lt;/forrest:contract&gt;
+  &lt;/forrest:view&gt;
+&lt;/forrest:views&gt;
+      </pre>
+<p>As a second example, let us change 
+        as well the content-main by adding another hook <span class="codefrag">&lt;forrest:hook name="content"/&gt;
+        </span> We need to add the new layout container to our inline css: </p>
+<pre class="code">
+/* The actual content */
+#content {
+  margin-left: 25%;
+  padding: 0 20px 0 20px;
+  background: #B9D3EE;
+}</pre>
+<p> Then we have to add the 'content-main' contract to the 'content' 
+        hook. The resulting structurer looks like: </p>
+<pre class="code">&lt;forrest:views 
+  xmlns:forrest="http://apache.org/forrest/templates/1.0"
+  xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"&gt;
+  &lt;forrest:view type="html"&gt;
+    &lt;forrest:css &gt;
+/* Extra css */
+/* menu */
+#leftbar {
+  width: 25%;
+  float: left;
+  background: #CCCCFF;
+  border: thin solid #000000;
+}
+/* The actual content */
+#content {
+  margin-left: 25%;
+  padding: 0 20px 0 20px;
+  background: #B9D3EE;
+}
+    &lt;/forrest:css&gt;
+    &lt;forrest:hook name="leftbar"&gt;
+      &lt;forrest:contract name="nav-section"&gt;
+        &lt;forrest:properties contract="nav-section"&gt;
+          &lt;forrest:property name="nav-section" nugget="get.navigation"&gt;
+            &lt;jx:import 
+              uri="cocoon://#{$cocoon/parameters/getRequest}.navigation.xml"/&gt;
+          &lt;/forrest:property&gt;
+        &lt;/forrest:properties&gt;
+      &lt;/forrest:contract&gt;
+    &lt;/forrest:hook&gt;
+    &lt;forrest:hook name="content"&gt;
+      &lt;forrest:contract name="content-main"&gt;
+      &lt;forrest:properties contract="content-main"&gt;
+        &lt;forrest:property name="content-main" nugget="get.body"&gt;
+          &lt;jx:import uri="cocoon://#{$cocoon/parameters/getRequest}.body.xml"/&gt;
+        &lt;/forrest:property&gt;
+        &lt;!-- Heading types can be clean|underlined|boxed  --&gt;
+        &lt;forrest:property name="content-main-conf"&gt;
+          &lt;headings type="underlined"/&gt;
+        &lt;/forrest:property&gt;
+      &lt;/forrest:properties&gt;
+    &lt;/forrest:contract&gt;
+    &lt;/forrest:hook&gt;
+  &lt;/forrest:view&gt;
+&lt;/forrest:views&gt;
+      </pre>
+<p> We are now able to place contracts into the layout container and add 
+        custom css to the structurer. </p>
+<a name="Linking+to+an+external+css+file" title="Linking to an external css file"> </a>
+<h3 class="underlined_5">Linking to an external css file</h3>
+<div class="note">
+<div class="label">Note</div>
+<div class="content">This will change for the next version of views (v3) where we use a 
+        generic contract instead of the standalone element (forrest:css). </div>
+</div>
+<p>Make sure your project has the following directory structure. If it 
+        doesn't you'll have to create it. "common" is the fallback for all 
+        themes, if you want to override the css for a specific theme replace 
+        "common" with "themeName". This is where Forrest will look for external 
+        css stylesheets. </p>
+<pre class="code">
+        $projectHome\src\documentation\resources\themes\common\css</pre>
+<p>Where $projectHome is the directory where your project exists.</p>
+<p>Put your css stylesheets in this directory. For arguement's sake let's say 
+        it's called mystyles.css</p>
+<p>Edit your common.fv structurer (or whatever structurer (theme) you are using). This 
+        will probably be some where in: </p>
+<pre class="code">$projectHome\src\documentation\content\xdocs</pre>
+<p>or if you want to override it for the whole project in:</p>
+<pre class="code">$projectHome\src\documentation\resources\themes\</pre>
+<p>Add the following element to the *.fv file:</p>
+<pre class="code">&lt;forrest:css url="styles.css" media="screen" theme="pelt"/&gt;
+        </pre>
+<p>
+<strong>Important!</strong> This must appear straight after the "view 
+        type" element (as first child): </p>
+<pre class="code">&lt;forrest:view type="html"&gt;</pre>
+<pre class="code">&lt;forrest:css url="mystyles.css" media="screen" theme="pelt"/&gt;
+        </pre>
+<p>The attributes are: </p>
+<ol>
+        <li>the url where the css exist (NOTE: it will be rewritten to "../themes/mystyles.css").</li>
+        <li>the media type, you can set different styles for screen and print. 
+          This is really useful if you want to hide elements such as navigation 
+          in the print output (#nav-section{display:none} for example).</li>
+        <li>the theme, "pelt" is the default theme (another is the "common" theme). Change this if you 
+          are using your own theme.</li>
+      </ol>
+<p>You can have as many css links as you like, and they'll appear in the 
+        head of your document in same order as they are in the .fv file.</p>
+<div class="fixme">
+<div class="label">Fixme (thorsten)</div>
+<div class="content"> Add more information of recent threads around 
+        css in the structurer and information how you add an @import? Use e.g. 
+        <a href="http://marc.theaimsgroup.com/?t=113471292700001&amp;r=1&amp;w=2">http://marc.theaimsgroup.com/?t=113471292700001&amp;r=1&amp;w=2</a> 
+        </div>
+</div>
+</div>
+<a name="Further Reading" title="Further Reading"> </a>
+<h2 class="underlined_10">Further Reading</h2>
+<div class="section">
+<p> Congratulations you are now able to work with the structurer. From here 
+      we recommend to read the following How-Tos: </p>
+<ul>
+      <li>
+        <a href="../how/howto-dispatcher-contracts.html">Create your own contract 
+          implementation</a>
+      </li>
+    </ul>
+</div>
+<a name="Feedback" title="Feedback"> </a>
+<h2 class="underlined_10">Feedback</h2>
+<div class="section">
+<p> Please provide feedback about this document via the <a href="http://forrest.apache.org/mail-lists.html">mailing lists</a>. </p>
+</div>
+<!--+ |end content-main +-->
+</div>
+</div>
+<div id="footer">
+<div class="lastmodified">
+<script type="text/javascript">document.write("Last Published: " + document.lastModified);</script>
+</div>
+<div class="copyright">
+            Copyright ©
+             2002-2006 <a href="http://www.acme.org/licenses/">The Acme Software Organisation.</a> </div>
+<!--+ |start compliance links +-->
+<div id="siteinfo-compliance-links">
+<a href="http://validator.w3.org/check?uri=referer">
+<img alt="Valid XHTML 1.0!" height="31" src="http://www.w3.org/Icons/valid-xhtml10" width="88" />
+</a>
+<a href="http://jigsaw.w3.org/css-validator/check/referer">
+<img alt="Valid CSS!" src="http://jigsaw.w3.org/css-validator/images/vcss" style="border:0;width:88px;height:31px" />
+</a>
+</div>
+<!--+ |end compliance links +-->
+</div>
+</div>
+</body>
+</html>

Propchange: forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-structurer.html
------------------------------------------------------------------------------
    svn:eol-style = native

Added: forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-structurer.pdf
URL: http://svn.apache.org/viewvc/forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-structurer.pdf?rev=427744&view=auto
==============================================================================
Binary file - no diff available.

Propchange: forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-dispatcher-structurer.pdf
------------------------------------------------------------------------------
    svn:mime-type = application/pdf

Added: forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-structurer-contracts.dispatcher.css
URL: http://svn.apache.org/viewvc/forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-structurer-contracts.dispatcher.css?rev=427744&view=auto
==============================================================================
--- forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-structurer-contracts.dispatcher.css (added)
+++ forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-structurer-contracts.dispatcher.css Tue Aug  1 14:29:56 2006
@@ -0,0 +1,45 @@
+
+/* branding-theme-profiler-theme: Pelt */ 
+#header .round-top-left-small {
+    background-image: url(../themes/images/roundcorner-t-l-5-bg294563-stroke4a6d8c-fg4a6d8c.png);
+    background-repeat: no-repeat;
+    background-position: top left;
+}
+#header .round-top-right-small {
+    background-image: url(../themes/images/roundcorner-t-r-5-bg294563-stroke4a6d8c-fg4a6d8c.png);
+    background-repeat: no-repeat;
+    background-position: top right;
+}
+#nav-main li {
+    background-image: url(../themes/images/roundcorner-t-r-5-bg294563-strokeCEDFEF-fgCEDFEF.png);
+    background-repeat: no-repeat;
+    background-position: top right;
+}
+#nav-main li a {
+    background-image: url(../themes/images/roundcorner-t-l-5-bg294563-strokeCEDFEF-fgCEDFEF.png);
+    background-repeat: no-repeat;
+    background-position: top left;
+}
+#nav-main .current {
+    background-image: url(../themes/images/roundcorner-t-r-5-bg294563-stroke4a6d8c-fg4a6d8c.png);
+    background-repeat: no-repeat;
+    background-position: top right;
+}
+#nav-main .current a {
+    background-image: url(../themes/images/roundcorner-t-l-5-bg294563-stroke4a6d8c-fg4a6d8c.png);
+    background-repeat: no-repeat;
+    background-position: top left;
+}
+#roundbottom {
+    background-image: url(../themes/images/roundcorner-b-r-15-bgffffff-stroke4a6d8c-fg4a6d8c.png);
+    background-repeat: no-repeat;
+    background-position: bottom right;
+}
+#roundbottomLeft {
+    background-image: url(../themes/images/roundcorner-b-l-15-bgffffff-stroke4a6d8c-fg4a6d8c.png);
+    background-repeat: no-repeat;
+    background-position: bottom left;
+}
+            
+  
+  

Propchange: forrest/site/pluginDocs/plugins_0_80/org.apache.forrest.plugin.internal.dispatcher/how/howto-structurer-contracts.dispatcher.css
------------------------------------------------------------------------------
    svn:eol-style = native