You are viewing a plain text version of this content. The canonical link for it is here.
Posted to svn@forrest.apache.org by cr...@apache.org on 2005/10/15 02:49:10 UTC
svn commit: r321269 [2/4] - in /forrest/site: ./ docs_0_60/ docs_0_60/howto/
docs_0_60/howto/bugzilla-patch/ docs_0_60/howto/multi/ docs_0_70/
docs_0_70/howto/ docs_0_70/howto/cvs-ssh/ docs_0_70/howto/multi/ docs_0_80/
docs_0_80/howto/ docs_0_80/howto/...
Added: forrest/site/docs_0_80/howto/howto-structurer-contracts.html
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_80/howto/howto-structurer-contracts.html?rev=321269&view=auto
==============================================================================
--- forrest/site/docs_0_80/howto/howto-structurer-contracts.html (added)
+++ forrest/site/docs_0_80/howto/howto-structurer-contracts.html Fri Oct 14 17:42:44 2005
@@ -0,0 +1,704 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta content="Apache Forrest" name="Generator">
+<meta name="Forrest-version" content="0.8-dev">
+<meta name="Forrest-skin-name" content="pelt">
+<title>How to write a forrest:contract? (v0.8-dev)</title>
+<link type="text/css" href="../../skin/basic.css" rel="stylesheet">
+<link media="screen" type="text/css" href="../../skin/screen.css" rel="stylesheet">
+<link media="print" type="text/css" href="../../skin/print.css" rel="stylesheet">
+<link type="text/css" href="../../skin/profile.css" rel="stylesheet">
+<script src="../../skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="../../skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="../../skin/fontsize.js" language="javascript" type="text/javascript"></script>
+<link rel="shortcut icon" href="../../favicon.ico">
+</head>
+<body onload="init()">
+<script type="text/javascript">ndeSetTextSize();</script>
+<div id="top">
+<!--+
+ |breadtrail
+ +-->
+<div class="breadtrail">
+<a href="http://www.apache.org/">apache</a> > <a href="http://forrest.apache.org/">forrest</a><script src="../../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script>
+</div>
+<!--+
+ |header
+ +-->
+<div class="header">
+<!--+
+ |start group logo
+ +-->
+<div class="grouplogo">
+<a href="http://www.apache.org/"><img class="logoImage" alt="Apache" src="../../images/apache-forrest.png" title="The Apache Software Foundation"></a>
+</div>
+<!--+
+ |end group logo
+ +-->
+<!--+
+ |start Project Logo
+ +-->
+<div class="projectlogo">
+<a href="http://forrest.apache.org/"><img class="logoImage" alt="Forrest" src="../../images/project-logo.gif" title="Apache Forrest"></a>
+</div>
+<!--+
+ |end Project Logo
+ +-->
+<!--+
+ |start Search
+ +-->
+<div class="searchbox">
+<form action="http://www.google.com/search" method="get" class="roundtopsmall">
+<input value="forrest.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google">
+ <input name="Search" value="Search" type="submit">
+</form>
+</div>
+<!--+
+ |end search
+ +-->
+<!--+
+ |start Tabs
+ +-->
+<ul id="tabs">
+<li>
+<a class="base-not-selected" href="../../index.html">Welcome</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../contrib.html">Project</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../versions/index.html">Versioned Docs</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../pluginDocs/index.html">Plugins</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../tools/index.html">Tools</a>
+</li>
+</ul>
+<!--+
+ |end Tabs
+ +-->
+</div>
+</div>
+<div id="main">
+<div id="publishedStrip">
+<!--+
+ |start Subtabs
+ +-->
+<div id="level2tabs"></div>
+<!--+
+ |end Endtabs
+ +-->
+<script type="text/javascript"><!--
+document.write("Last Published: " + document.lastModified);
+// --></script>
+</div>
+<!--+
+ |breadtrail
+ +-->
+<div class="breadtrail">
+
+
+ </div>
+<!--+
+ |start Menu, mainarea
+ +-->
+<!--+
+ |start Menu
+ +-->
+<div id="menu">
+<div onclick="SwitchMenu('menu_selected_1.1', '../../skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">0.80-dev</div>
+<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="../../docs_0_80/index.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/faq.html">FAQs</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/changes.html">Changes</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/todo.html">Todo</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/your-project.html">Using Forrest</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/locationmap.html">Locationmap</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/validation.html">XML Validation</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/linking.html">Menus and Linking</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/searching.html">Searching</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/skins.html">Default Skins</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/skin-package.html">Skin Packages</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/views.html">Views development</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/forrest-contract.html">Our Contract</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/compliance.html">Standards Compliance</a>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.1.15', '../../skin/')" id="menu_selected_1.1.15Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">How-To</div>
+<div id="menu_selected_1.1.15" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="../../docs_0_80/howto/index.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-howto.html">Write a How-to</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-dev.html">Be a developer</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-asf-mirror.html">Download mirror</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-pdf-tab.html">Create tab PDF</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-editcss.html">Edit CSS (WYSIWYG)</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-corner-images.html">CSS corner SVG</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-forrest-from-maven.html">Maven Integration</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-buildPlugin.html">Build a Plugin</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-custom-html-source.html">Custom html source</a>
+</div>
+<div onclick="SwitchMenu('menu_1.1.15.11', '../../skin/')" id="menu_1.1.15.11Title" class="menutitle">Multipage HowTo</div>
+<div id="menu_1.1.15.11" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../docs_0_80/howto/multi/howto-multi.html">Introduction</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/multi/step1.html">Step 1</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/multi/step2.html">Step 2</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/multi/step3.html">Step 3</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.1.15.12', '../../skin/')" id="menu_selected_1.1.15.12Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">Dispatcher</div>
+<div id="menu_selected_1.1.15.12" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-structurer-install.html">Install</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-structurer-dsl.html">forrest:view DSL</a>
+</div>
+<div class="menupage">
+<div class="menupagetitle">Contract implementations</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.15.13', '../../skin/')" id="menu_1.1.15.13Title" class="menutitle">Old Views (deprecated)</div>
+<div id="menu_1.1.15.13" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-view-install.html">Install views</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-view-dsl.html">forrest:view DSL</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-view-contracts.html">Contract implementations</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.16', '../../skin/')" id="menu_1.1.16Title" class="menutitle">Advanced Topics</div>
+<div id="menu_1.1.16" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../docs_0_80/build.html">Building Forrest</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/catalog.html">Using DTD Catalogs</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/sitemap-ref.html">Sitemap Reference</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/project-sitemap.html">Project sitemap</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/cap.html">Sourcetype Action</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/upgrading_08.html">Upgrading to 0.8</a>
+</div>
+<div onclick="SwitchMenu('menu_1.1.18', '../../skin/')" id="menu_1.1.18Title" class="menutitle">Reference docs</div>
+<div id="menu_1.1.18" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.18.1', '../../skin/')" id="menu_1.1.18.1Title" class="menutitle">DTD documentation</div>
+<div id="menu_1.1.18.1" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../dtdx/dtd-docs.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/document-v20.dtdx.html">document-v20</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/howto-v20.dtdx.html">howto-v20</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/faq-v20.dtdx.html">faq-v20</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/document-v13.dtdx.html">document-v13</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/howto-v13.dtdx.html">howto-v13</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/faq-v13.dtdx.html">faq-v13</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.18.2', '../../skin/')" id="menu_1.1.18.2Title" class="menutitle">Doc samples</div>
+<div id="menu_1.1.18.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../dtdx/document-v13.html">document-v13</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/document-v20.html">document-v20</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.19', '../../skin/')" id="menu_1.1.19Title" class="menutitle">Older Docs</div>
+<div id="menu_1.1.19" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../docs_0_80/primer.html">Forrest Primer</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/libre-intro.html">Libre</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/dreams.html">Dream list</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/cvs-ssh/howto-cvs-ssh.html">CVS over SSH</a>
+</div>
+</div>
+</div>
+<div id="credit">
+<hr>
+ This is documentation for development version v0.8
+ (<a href="http://forrest.apache.org/versions/">More</a>)</div>
+<div id="roundbottom">
+<img style="display: none" class="corner" height="15" width="15" alt="" src="../../skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
+<!--+
+ |alternative credits
+ +-->
+<div id="credit2">
+<a href="http://apachecon.com/"><img border="0" title="ApacheCon US 2005" alt="ApacheCon US 2005 - logo" src="http://apache.org/images/ac2005us_blue_125x125.jpg" style="width: 125px;height: 125px;"></a>
+</div>
+</div>
+<!--+
+ |end Menu
+ +-->
+<!--+
+ |start content
+ +-->
+<div id="content">
+<div title="Portable Document Format" class="pdflink">
+<a class="dida" href="howto-structurer-contracts.pdf"><img alt="PDF -icon" src="../../skin/images/pdfdoc.gif" class="skin"><br>
+ PDF</a>
+</div>
+<div class="trail">Font size:
+ <input value="Reset" class="resetfont" title="Reset text" onclick="ndeSetTextSize('reset'); return false;" type="button">
+ <input value="-a" class="smallerfont" title="Shrink text" onclick="ndeSetTextSize('decr'); return false;" type="button">
+ <input value="+a" class="biggerfont" title="Enlarge text" onclick="ndeSetTextSize('incr'); return false;" type="button">
+</div>
+<h1>How to write a forrest:contract?</h1>
+<div class="abstract">
+ This How-To will explain how we wrote the contracts for views and hope afterwards you will be able to do the same.
+ </div>
+<div id="motd-area">
+ This is documentation for development version v0.8
+ (<a href="http://forrest.apache.org/versions/">More</a>)</div>
+<div id="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="#viewContract">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>
+<a name="N10010"></a><a name="Intended Audience"></a>
+<h2 class="underlined_10">Intended Audience</h2>
+<div class="section">
+<div class="warning">
+<div class="label">Warning</div>
+<div class="content">
+"Views" are 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.
+</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="N1001B"></a><a name="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="N10023"></a><a name="Prerequisites"></a>
+<h2 class="underlined_10">Prerequisites</h2>
+<div class="section">
+<ul>
+
+<li>
+ You have a ready-to-go new seed (newSeed) based on views like described in <a href="../../docs_0_80/howto/howto-view-install.html">Install views</a>.
+ </li>
+
+<li>
+ This includes as well all additional plugins that are mentioned in <a href="../../docs_0_80/howto/howto-view-install.html">Install views</a>.
+ </li>
+
+<li>
+ Reading that how-to is as well a good idea to understand the used directory structure in this how-to.
+ </li>
+
+</ul>
+</div>
+<a name="N1003C"></a><a name="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 views. ;-)
+ 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 <i18n:text/>-tags.
+ </p>
+<pre class="code">
+
+- <script language="JavaScript"
+- type="text/javascript">document.write("Published: " + document.lastModified);</script>
+
++ <script type="text/javascript">document.write("<i18n:text >Last
++ Published:</i18n:text>&#160;" + document.lastModified);
+
+ </pre>
+<a name="N10051"></a><a name="enhanceMaintenance"></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 <xsl:call-template name="siteinfo-last-published"/></li>
+
+<li>and add:</li>
+
+</ol>
+<pre class="code"><xsl:template name="siteinfo-last-published">
+ <script type="text/javascript">
+ document.write("<i18n:text >Last Published:</i18n:text>&#160;" + document.lastModified);
+ </script>
+</xsl:template>
+ </pre>
+<p>
+ This allows us in a next maintenance to just change the code of
+ <xsl:template name="siteinfo-last-published"/> 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 views.
+ </div>
+</div>
+<a name="N1006E"></a><a name="blankContract"></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.viewHelper.xhtml/resources/templates</span>.
+ The exact file system path can be looked up at <span class="codefrag">http://localhost:8888/ls.contracts.html</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">
+<forrest:contract
+ xmlns:forrest="http://apache.org/forrest/templates/1.0"
+ name="blank" type="nugget">
+
+ <!--NOTE:
+ When using the blank template as copy-and-paste master,
+ just search and replace 'blank' by the {contract-name}!-->
+
+ <description>
+ {contract-name} will output {contract-funtion}.
+ This is just a blank contract, it will output *nothing*.
+ </description>
+ <usage><![CDATA[<forrest:contract name="blank"/>]]></usage>
+ <forrest:template xmlns:forrest="http://apache.org/forrest/templates/1.0"
+ format="xhtml" name="blank" inputFormat="xsl" body="false" head="false">
+ <xsl:stylesheet version="1.1"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <!--Add here the needed templates-->
+ </xsl:stylesheet>
+ </forrest:template>
+</forrest:contract>
+
+ </pre>
+<p>
+ The most important is the name of the contract <span class="codefrag"><forrest:contract name="blank"/></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"><description/></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"><description>
+ siteinfo-last-published-howto will output the last published date of the site with the help of jscript.
+</description>
+ </pre>
+<p>
+ In the <span class="codefrag"><usage/></span> tag we have to explain how the designer can use
+ the contract in his view.
+ </p>
+<pre class="code"><usage><![CDATA[<forrest:contract name="siteinfo-last-published-howto"/>]]></usage>
+ </pre>
+<p>
+
+<span class="codefrag"><forrest:template name="blank" body="false" head="false"> </span>
+ That leads to the template attribute @body="true" and
+ @head="false". In xhtml a contract can add content to the <body/> or/and
+ <head/> part of <html/>. 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="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="xhtml" as output and the inputFormat="xsl".
+ </div>
+</div>
+<p>
+ A <forrest:template /> has the child <xsl:stylesheet/> 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">
+<xsl:stylesheet version="1.1"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <!--Add here the needed templates-->
+ <xsl:template name="blank-body"/>
+</xsl:stylesheet>
+ </pre>
+<a name="N100BB"></a><a name="newContract"></a>
+<h3 class="underlined_5">Create a new contract</h3>
+<div class="fixme">
+<div class="label">Fixme (thorsten)</div>
+<div class="content">
+ We need to explain 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/templates/siteinfo-last-published-howto.ft</span>.
+ </p>
+<p>
+ Now the maintenance-optimized code (xpath="/html/body/*") was:
+ </p>
+<pre class="code">
+<xsl:template name="siteinfo-last-published">
+ <script type="text/javascript">
+ document.write("<i18n:text >Last Published:</i18n:text>&#160;" + document.lastModified);
+ </script>
+</xsl:template></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">
+<xsl:template name="siteinfo-last-publish-howto-body">
+debug string -
+ <script type="text/javascript">
+ document.write("<i18n:text >Last Published:</i18n:text>&#160;" + document.lastModified);
+ </script>
+</xsl:template></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"><forrest:contract xmlns:forrest="http://apache.org/forrest/templates/1.0"
+ name="siteinfo-last-published-howto" type="nugget">
+ <description>
+ siteinfo-last-published-howto will output the last published date of the site with the help of jscript.
+ </description>
+ <usage><![CDATA[<forrest:contract name="siteinfo-last-published-howto"/>]]></usage>
+ <forrest:template
+ xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
+ xmlns:forrest="http://apache.org/forrest/templates/1.0"
+ format="xhtml" name="siteinfo-last-published-howto" inputFormat="xsl" body="true" head="false">
+ <xsl:stylesheet version="1.1"
+ xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+ <xsl:template name="siteinfo-last-published-howto-body">
+ debug string -
+ <script type="text/javascript">document.write("<i18n:text >Last Published:</i18n:text>&#160;" + document.lastModified);</script>
+ </xsl:template>
+ </xsl:stylesheet>
+ </forrest:template>
+</forrest:contract>
+ </pre>
+<a name="N100FF"></a><a name="viewContract"></a>
+<h3 class="underlined_5">Activating the contract</h3>
+<p>
+ To see whether the new contract works we need to add it to our view.
+ The contract usage contains the contract-tag <span class="codefrag"><forrest:contract name="siteinfo-last-published-howto"/></span>
+ Please see <a href="../../docs_0_80/howto/howto-view-dsl.html">Getting started with forrest:view DSL</a> for more details.
+ </p>
+<div class="fixme">
+<div class="label">Fixme (thorsten)</div>
+<div class="content">
+ Let us now look into advanced features of views.
+ I will write a how-to for advanced contracts soon. :)
+ </div>
+</div>
+</div>
+<a name="N10114"></a><a name="Further Reading"></a>
+<h2 class="underlined_10">Further Reading</h2>
+<div class="section">
+<p>
+ Congratulations you are now able to work with view contracts.
+ From here we recommend to read the following How-To's:
+ </p>
+<ul>
+
+<li>
+<a href="../../docs_0_80/howto/howto-view-dsl.html">Getting started with forrest:view DSL</a>
+</li>
+
+</ul>
+</div>
+<a name="N10125"></a><a name="Feedback"></a>
+<h2 class="underlined_10">Feedback</h2>
+<div class="section">
+<p>
+ Please provide feedback about this document via the
+ <a href="../../mail-lists.html">mailing lists</a>.
+ </p>
+</div>
+</div>
+<!--+
+ |end content
+ +-->
+<div class="clearboth"> </div>
+</div>
+<div id="footer">
+<!--+
+ |start bottomstrip
+ +-->
+<div class="lastmodified">
+<script type="text/javascript"><!--
+document.write("Last Published: " + document.lastModified);
+// --></script>
+</div>
+<div class="copyright">
+ Copyright ©
+ 2002-2005 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
+</div>
+<!--+
+ |end bottomstrip
+ +-->
+</div>
+</body>
+</html>
Propchange: forrest/site/docs_0_80/howto/howto-structurer-contracts.html
------------------------------------------------------------------------------
svn:eol-style = native
Added: forrest/site/docs_0_80/howto/howto-structurer-contracts.pdf
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_80/howto/howto-structurer-contracts.pdf?rev=321269&view=auto
==============================================================================
Binary file - no diff available.
Propchange: forrest/site/docs_0_80/howto/howto-structurer-contracts.pdf
------------------------------------------------------------------------------
svn:mime-type = application/pdf
Added: forrest/site/docs_0_80/howto/howto-structurer-dsl.html
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_80/howto/howto-structurer-dsl.html?rev=321269&view=auto
==============================================================================
--- forrest/site/docs_0_80/howto/howto-structurer-dsl.html (added)
+++ forrest/site/docs_0_80/howto/howto-structurer-dsl.html Fri Oct 14 17:42:44 2005
@@ -0,0 +1,686 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta content="Apache Forrest" name="Generator">
+<meta name="Forrest-version" content="0.8-dev">
+<meta name="Forrest-skin-name" content="pelt">
+<title>How to use the forrest:view config-DSL (v0.8-dev)</title>
+<link type="text/css" href="../../skin/basic.css" rel="stylesheet">
+<link media="screen" type="text/css" href="../../skin/screen.css" rel="stylesheet">
+<link media="print" type="text/css" href="../../skin/print.css" rel="stylesheet">
+<link type="text/css" href="../../skin/profile.css" rel="stylesheet">
+<script src="../../skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="../../skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="../../skin/fontsize.js" language="javascript" type="text/javascript"></script>
+<link rel="shortcut icon" href="../../favicon.ico">
+</head>
+<body onload="init()">
+<script type="text/javascript">ndeSetTextSize();</script>
+<div id="top">
+<!--+
+ |breadtrail
+ +-->
+<div class="breadtrail">
+<a href="http://www.apache.org/">apache</a> > <a href="http://forrest.apache.org/">forrest</a><script src="../../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script>
+</div>
+<!--+
+ |header
+ +-->
+<div class="header">
+<!--+
+ |start group logo
+ +-->
+<div class="grouplogo">
+<a href="http://www.apache.org/"><img class="logoImage" alt="Apache" src="../../images/apache-forrest.png" title="The Apache Software Foundation"></a>
+</div>
+<!--+
+ |end group logo
+ +-->
+<!--+
+ |start Project Logo
+ +-->
+<div class="projectlogo">
+<a href="http://forrest.apache.org/"><img class="logoImage" alt="Forrest" src="../../images/project-logo.gif" title="Apache Forrest"></a>
+</div>
+<!--+
+ |end Project Logo
+ +-->
+<!--+
+ |start Search
+ +-->
+<div class="searchbox">
+<form action="http://www.google.com/search" method="get" class="roundtopsmall">
+<input value="forrest.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google">
+ <input name="Search" value="Search" type="submit">
+</form>
+</div>
+<!--+
+ |end search
+ +-->
+<!--+
+ |start Tabs
+ +-->
+<ul id="tabs">
+<li>
+<a class="base-not-selected" href="../../index.html">Welcome</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../contrib.html">Project</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../versions/index.html">Versioned Docs</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../pluginDocs/index.html">Plugins</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../tools/index.html">Tools</a>
+</li>
+</ul>
+<!--+
+ |end Tabs
+ +-->
+</div>
+</div>
+<div id="main">
+<div id="publishedStrip">
+<!--+
+ |start Subtabs
+ +-->
+<div id="level2tabs"></div>
+<!--+
+ |end Endtabs
+ +-->
+<script type="text/javascript"><!--
+document.write("Last Published: " + document.lastModified);
+// --></script>
+</div>
+<!--+
+ |breadtrail
+ +-->
+<div class="breadtrail">
+
+
+ </div>
+<!--+
+ |start Menu, mainarea
+ +-->
+<!--+
+ |start Menu
+ +-->
+<div id="menu">
+<div onclick="SwitchMenu('menu_selected_1.1', '../../skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">0.80-dev</div>
+<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="../../docs_0_80/index.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/faq.html">FAQs</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/changes.html">Changes</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/todo.html">Todo</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/your-project.html">Using Forrest</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/locationmap.html">Locationmap</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/validation.html">XML Validation</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/linking.html">Menus and Linking</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/searching.html">Searching</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/skins.html">Default Skins</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/skin-package.html">Skin Packages</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/views.html">Views development</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/forrest-contract.html">Our Contract</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/compliance.html">Standards Compliance</a>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.1.15', '../../skin/')" id="menu_selected_1.1.15Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">How-To</div>
+<div id="menu_selected_1.1.15" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="../../docs_0_80/howto/index.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-howto.html">Write a How-to</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-dev.html">Be a developer</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-asf-mirror.html">Download mirror</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-pdf-tab.html">Create tab PDF</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-editcss.html">Edit CSS (WYSIWYG)</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-corner-images.html">CSS corner SVG</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-forrest-from-maven.html">Maven Integration</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-buildPlugin.html">Build a Plugin</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-custom-html-source.html">Custom html source</a>
+</div>
+<div onclick="SwitchMenu('menu_1.1.15.11', '../../skin/')" id="menu_1.1.15.11Title" class="menutitle">Multipage HowTo</div>
+<div id="menu_1.1.15.11" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../docs_0_80/howto/multi/howto-multi.html">Introduction</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/multi/step1.html">Step 1</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/multi/step2.html">Step 2</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/multi/step3.html">Step 3</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.1.15.12', '../../skin/')" id="menu_selected_1.1.15.12Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">Dispatcher</div>
+<div id="menu_selected_1.1.15.12" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-structurer-install.html">Install</a>
+</div>
+<div class="menupage">
+<div class="menupagetitle">forrest:view DSL</div>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-structurer-contracts.html">Contract implementations</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.15.13', '../../skin/')" id="menu_1.1.15.13Title" class="menutitle">Old Views (deprecated)</div>
+<div id="menu_1.1.15.13" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-view-install.html">Install views</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-view-dsl.html">forrest:view DSL</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-view-contracts.html">Contract implementations</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.16', '../../skin/')" id="menu_1.1.16Title" class="menutitle">Advanced Topics</div>
+<div id="menu_1.1.16" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../docs_0_80/build.html">Building Forrest</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/catalog.html">Using DTD Catalogs</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/sitemap-ref.html">Sitemap Reference</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/project-sitemap.html">Project sitemap</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/cap.html">Sourcetype Action</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/upgrading_08.html">Upgrading to 0.8</a>
+</div>
+<div onclick="SwitchMenu('menu_1.1.18', '../../skin/')" id="menu_1.1.18Title" class="menutitle">Reference docs</div>
+<div id="menu_1.1.18" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.18.1', '../../skin/')" id="menu_1.1.18.1Title" class="menutitle">DTD documentation</div>
+<div id="menu_1.1.18.1" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../dtdx/dtd-docs.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/document-v20.dtdx.html">document-v20</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/howto-v20.dtdx.html">howto-v20</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/faq-v20.dtdx.html">faq-v20</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/document-v13.dtdx.html">document-v13</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/howto-v13.dtdx.html">howto-v13</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/faq-v13.dtdx.html">faq-v13</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.18.2', '../../skin/')" id="menu_1.1.18.2Title" class="menutitle">Doc samples</div>
+<div id="menu_1.1.18.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../dtdx/document-v13.html">document-v13</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/document-v20.html">document-v20</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.19', '../../skin/')" id="menu_1.1.19Title" class="menutitle">Older Docs</div>
+<div id="menu_1.1.19" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../docs_0_80/primer.html">Forrest Primer</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/libre-intro.html">Libre</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/dreams.html">Dream list</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/cvs-ssh/howto-cvs-ssh.html">CVS over SSH</a>
+</div>
+</div>
+</div>
+<div id="credit">
+<hr>
+ This is documentation for development version v0.8
+ (<a href="http://forrest.apache.org/versions/">More</a>)</div>
+<div id="roundbottom">
+<img style="display: none" class="corner" height="15" width="15" alt="" src="../../skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
+<!--+
+ |alternative credits
+ +-->
+<div id="credit2">
+<a href="http://apachecon.com/"><img border="0" title="ApacheCon US 2005" alt="ApacheCon US 2005 - logo" src="http://apache.org/images/ac2005us_blue_125x125.jpg" style="width: 125px;height: 125px;"></a>
+</div>
+</div>
+<!--+
+ |end Menu
+ +-->
+<!--+
+ |start content
+ +-->
+<div id="content">
+<div title="Portable Document Format" class="pdflink">
+<a class="dida" href="howto-structurer-dsl.pdf"><img alt="PDF -icon" src="../../skin/images/pdfdoc.gif" class="skin"><br>
+ PDF</a>
+</div>
+<div class="trail">Font size:
+ <input value="Reset" class="resetfont" title="Reset text" onclick="ndeSetTextSize('reset'); return false;" type="button">
+ <input value="-a" class="smallerfont" title="Shrink text" onclick="ndeSetTextSize('decr'); return false;" type="button">
+ <input value="+a" class="biggerfont" title="Enlarge text" onclick="ndeSetTextSize('incr'); return false;" type="button">
+</div>
+<h1>How to use the forrest:view config-DSL</h1>
+<div class="abstract">
+ This How-To describes the usage of the forrest:view config Domain Specific Language
+ to create beautiful websites in no time.
+ </div>
+<div id="motd-area">
+ This is documentation for development version v0.8
+ (<a href="http://forrest.apache.org/versions/">More</a>)</div>
+<div id="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="#emptyView">Empty view file</a>
+</li>
+<li>
+<a href="#firstView">Creating your first view</a>
+</li>
+<li>
+<a href="#hookView">Hooks in views</a>
+</li>
+<li>
+<a href="#cssView">CSS in views</a>
+</li>
+</ul>
+</li>
+<li>
+<a href="#Further Reading">Further Reading</a>
+</li>
+<li>
+<a href="#Feedback">Feedback</a>
+</li>
+</ul>
+</div>
+<a name="N10010"></a><a name="Intended Audience"></a>
+<h2 class="underlined_10">Intended Audience</h2>
+<div class="section">
+<div class="warning">
+<div class="label">Warning</div>
+<div class="content">
+"Views" are new functionality which is still in development phase. That is why it is in the
+"whiteboard" section of the Forrest distribution.
+This HowTo is far from being finished.
+</div>
+</div>
+<p>
+ This part of the views is dedicated to webdesigner and user with some knowlegde of css.
+ </p>
+</div>
+<a name="N1001B"></a><a name="Purpose"></a>
+<h2 class="underlined_10">Purpose</h2>
+<div class="section">
+<p>
+ This how-to will show you how to write a <strong>forrest:view</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 view.
+ </p>
+</div>
+<a name="N10026"></a><a name="Prerequisites"></a>
+<h2 class="underlined_10">Prerequisites</h2>
+<div class="section">
+<ul>
+
+<li>
+ You have a ready-to-go new seed (newSeed) based on views as described in <a href="../../docs_0_80/howto/howto-view-install.html">Install views</a>.
+ </li>
+
+<li>
+ This includes as well as all additional plugins that are mentioned in <a href="../../docs_0_80/howto/howto-view-install.html">Install views</a>.
+ </li>
+
+<li>
+ Reading that how-to is as well a good idea to understand the used directory structure in this how-to.
+ </li>
+
+</ul>
+</div>
+<a name="N1003F"></a><a name="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 views we assume you are using 'forrest run' and the following workflow:<br>
+ change files -> refresh browser
+ </div>
+</div>
+<p>
+ We developed<strong> forrest:view</strong> to let the user decide where to place elements in e.g. html pages.
+ We started this work with the <span class="codefrag">skinconf.xml</span> where you could configure certain elements and
+ their positions. These elements were known under certain names. It was up to the skin designer to support
+ this configuration and the elements.
+ </p>
+<p>
+ The work started with grouping elements (the ones from skinconf). We used css-contracts that
+ we added as @attributes e.g. <span class="codefrag"><div id="content-main"/> </span>. That made it
+ possible to use the same elements in different skins. For the full list refer to the
+ <a href="http://svn.apache.org/repos/asf/forrest/trunk/main/webapp/skins/leather-dev/contracts.initial.txt">
+ initial contract list
+ </a>
+
+</p>
+<p>
+ Around this contracts we developed a configuration Domain Specific Language and called it<strong>forrest:view</strong>.
+ These <strong>forrest:view</strong>s allows us to define the order in which <strong>forrest:contract</strong>s appear, and also to group
+ them using <strong>forrest:hook</strong>s.
+ </p>
+<p>
+
+<strong>forrest:hook</strong>s are containers that are only used for layout reasons. They <strong>do not</strong> add
+ any content or functionality to the output. They add <strong>only</strong> layout information to
+ the output. Actually a <span class="codefrag"><forrest:hook name="layoutId"/></span> will be transformed
+ to <span class="codefrag"><div id="layoutId"/> </span>
+
+</p>
+<p>
+
+<strong>forrest:contract</strong>s are functionality or extra content that a skin can use to display the requested
+ document (content-main). Sometimes a contract delivers <strong>format-specific markup</strong>, other times it delivers
+ a <strong>format-independent string</strong>.
+ </p>
+<a name="N10089"></a><a name="emptyView"></a>
+<h3 class="underlined_5">Empty view file</h3>
+<pre class="code"><forrest:views xmlns:forrest="http://apache.org/forrest/templates/1.0">
+ <forrest:view type="xhtml">
+ </forrest:view>
+</forrest:views>
+ </pre>
+<p>
+
+<strong> forrest:view</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 xhtml for now. This is as well true for the delivered contracts.
+ </p>
+<p>
+ Now let us start to skin our site.
+ </p>
+<a name="N100A0"></a><a name="firstView"></a>
+<h3 class="underlined_5">Creating your first view</h3>
+<p>
+ In this section we will create a new view. We will override the default view of the view-plugin
+ for the index page of the <a href="../../docs_0_80/howto/howto-view-install.html">newSeed</a>.
+ For that we will create a file called <span class="codefrag">index.fv</span> and save it in our xdocs directory.
+ This will make <strong>only</strong> the index.html page look different from the rest of the project.
+ </p>
+<p>
+ Remember: pointing your browser to <span class="codefrag">http://localhost:8888/ls.contracts.html</span> will
+ show a page with all contracts that you can use in your project.
+ </p>
+<p>
+ Let use the blank view 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 view. Our
+ <span class="codefrag">index.fv</span> should look like:
+ </p>
+<pre class="code"><forrest:views xmlns:forrest="http://apache.org/forrest/templates/1.0">
+ <forrest:view type="xhtml">
+ <forrest:contract name="content-main"/>
+ </forrest:view>
+</forrest:views>
+ </pre>
+<p>
+ Lets try our new view 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 view.
+ The contract usage in the view can be looked up in ls.contracts.html. Our view now looks like:
+ </p>
+<pre class="code"><forrest:views xmlns:forrest="http://apache.org/forrest/templates/1.0">
+ <forrest:view type="xhtml">
+ <forrest:contract name="content-main"/>
+ <forrest:contract name="nav-section"/>
+ </forrest:view>
+</forrest:views>
+ </pre>
+<p>
+ We now find the main content and the section navigation after each other and in the order
+ we placed them in the view, but we want it next to each other
+ (left: nav-section; right: content-main).
+ </p>
+<a name="N100D1"></a><a name="hookView"></a>
+<h3 class="underlined_5">Hooks in views</h3>
+<p>
+ We will use now the first time a <span class="codefrag"><forrest:hook name="layoutId"/></span>.
+ Hooks are the styling side of views. We can imitate arbitrary html skeleton
+ with their help. Before we explain how to use your own css in views, we will use the default css.
+ In the default.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"><forrest:hook name="leftbar"/></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"><forrest:hook name="leftbar">
+ <forrest:contract name="nav-section"/>
+</forrest:hook>
+ </pre>
+<p>
+ Our view will then look like:
+ </p>
+<pre class="code"><forrest:views xmlns:forrest="http://apache.org/forrest/templates/1.0" >
+ <forrest:view type="xhtml">
+ <forrest:hook name="leftbar">
+ <forrest:contract name="nav-section"/>
+ </forrest:hook>
+ <forrest:contract name="content-main"/>
+ </forrest:view>
+</forrest:views>
+ </pre>
+<a name="N100F6"></a><a name="cssView"></a>
+<h3 class="underlined_5">CSS in views</h3>
+<p>
+ We now know how to place contracts and hooks in our view. Until this stage we only used the default.css.
+ CSS-support of views is as easy as placing contracts/hooks. To override the default.css
+ stylesheet we use another tag within our view <span class="codefrag"><forrest:css url="default.css"/></span>.
+ </p>
+<p>
+ We will now create a file in <span class="codefrag">{project:skins-dir}{path}/{name}.css</span>. In our case
+ we will save a file called howTo.css in newSeed/src/documentation/skins/css/howTo.css containing only
+ the following css:
+ </p>
+<pre class="code">/* menu */
+#leftbar {
+ width: 25%;
+ float: left;
+ background: #CCCCFF;
+ border: thin solid #000000;
+}
+ </pre>
+<p>
+ We just changed the border-style to 'solid', the background to '#CCCCFF' and the color to '#000000'.
+ Now we have to add a new tag to tell that we want to override the default.css. We are doing this
+ by adding the tag <span class="codefrag"><forrest:css url="howTo.css"/></span> to our view.
+ </p>
+<div class="note">
+<div class="label">Note</div>
+<div class="content">
+
+<span class="codefrag"><forrest:css url="howTo.css"/></span> needs to be the direct child of
+ <span class="codefrag"><forrest:view type="xhtml"></span>
+
+</div>
+</div>
+<pre class="code"><forrest:views xmlns:forrest="http://apache.org/forrest/templates/1.0" >
+ <forrest:view type="xhtml">
+ <forrest:css url="howTo.css"/>
+ <forrest:hook name="leftbar">
+ <forrest:contract name="nav-section"/>
+ </forrest:hook>
+ <forrest:contract name="content-main"/>
+ </forrest:view>
+</forrest:views>
+ </pre>
+<p>
+ Now you see a white page where the menu is surrounded by a solid border with the defined background.
+ As a second example, let us change as well the content-main by adding another hook
+ <span class="codefrag"><forrest:hook name="content"/></span> We need to add the new layout container
+ to our howTo.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 view looks like:
+ </p>
+<pre class="code"><forrest:views xmlns:forrest="http://apache.org/forrest/templates/1.0" >
+ <forrest:view type="xhtml">
+ <forrest:css url="howTo.css"/>
+ <forrest:hook name="leftbar">
+ <forrest:contract name="nav-section"/>
+ </forrest:hook>
+ <forrest:hook name="content">
+ <forrest:contract name="content-main"/>
+ </forrest:hook>
+ </forrest:view>
+</forrest:views>
+ </pre>
+<p>
+ We are now able to place contracts into the layout container and add custom css to the view.
+ </p>
+<div class="fixme">
+<div class="label">Fixme (thorsten)</div>
+<div class="content">
+ Let us now look into advanced features of views.
+ I will write a how-to for advanced contracts soon. :)
+ </div>
+</div>
+</div>
+<a name="N1013A"></a><a name="Further Reading"></a>
+<h2 class="underlined_10">Further Reading</h2>
+<div class="section">
+<p>
+ Congratulations you are now able to work with the view DSL.
+ From here we recommend to read the following How-Tos:
+ </p>
+<ul>
+
+<li>
+<a href="../../docs_0_80/howto/howto-view-contracts.html">Create your own contract implementation</a>
+</li>
+
+</ul>
+</div>
+<a name="N1014B"></a><a name="Feedback"></a>
+<h2 class="underlined_10">Feedback</h2>
+<div class="section">
+<p>
+ Please provide feedback about this document via the
+ <a href="../../mail-lists.html">mailing lists</a>.
+ </p>
+</div>
+</div>
+<!--+
+ |end content
+ +-->
+<div class="clearboth"> </div>
+</div>
+<div id="footer">
+<!--+
+ |start bottomstrip
+ +-->
+<div class="lastmodified">
+<script type="text/javascript"><!--
+document.write("Last Published: " + document.lastModified);
+// --></script>
+</div>
+<div class="copyright">
+ Copyright ©
+ 2002-2005 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
+</div>
+<!--+
+ |end bottomstrip
+ +-->
+</div>
+</body>
+</html>
Propchange: forrest/site/docs_0_80/howto/howto-structurer-dsl.html
------------------------------------------------------------------------------
svn:eol-style = native
Added: forrest/site/docs_0_80/howto/howto-structurer-dsl.pdf
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_80/howto/howto-structurer-dsl.pdf?rev=321269&view=auto
==============================================================================
Binary file - no diff available.
Propchange: forrest/site/docs_0_80/howto/howto-structurer-dsl.pdf
------------------------------------------------------------------------------
svn:mime-type = application/pdf
Added: forrest/site/docs_0_80/howto/howto-structurer-install.html
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_80/howto/howto-structurer-install.html?rev=321269&view=auto
==============================================================================
--- forrest/site/docs_0_80/howto/howto-structurer-install.html (added)
+++ forrest/site/docs_0_80/howto/howto-structurer-install.html Fri Oct 14 17:42:44 2005
@@ -0,0 +1,570 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+<head>
+<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<meta content="Apache Forrest" name="Generator">
+<meta name="Forrest-version" content="0.8-dev">
+<meta name="Forrest-skin-name" content="pelt">
+<title>How to install the views (v0.8-dev)</title>
+<link type="text/css" href="../../skin/basic.css" rel="stylesheet">
+<link media="screen" type="text/css" href="../../skin/screen.css" rel="stylesheet">
+<link media="print" type="text/css" href="../../skin/print.css" rel="stylesheet">
+<link type="text/css" href="../../skin/profile.css" rel="stylesheet">
+<script src="../../skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="../../skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="../../skin/fontsize.js" language="javascript" type="text/javascript"></script>
+<link rel="shortcut icon" href="../../favicon.ico">
+</head>
+<body onload="init()">
+<script type="text/javascript">ndeSetTextSize();</script>
+<div id="top">
+<!--+
+ |breadtrail
+ +-->
+<div class="breadtrail">
+<a href="http://www.apache.org/">apache</a> > <a href="http://forrest.apache.org/">forrest</a><script src="../../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script>
+</div>
+<!--+
+ |header
+ +-->
+<div class="header">
+<!--+
+ |start group logo
+ +-->
+<div class="grouplogo">
+<a href="http://www.apache.org/"><img class="logoImage" alt="Apache" src="../../images/apache-forrest.png" title="The Apache Software Foundation"></a>
+</div>
+<!--+
+ |end group logo
+ +-->
+<!--+
+ |start Project Logo
+ +-->
+<div class="projectlogo">
+<a href="http://forrest.apache.org/"><img class="logoImage" alt="Forrest" src="../../images/project-logo.gif" title="Apache Forrest"></a>
+</div>
+<!--+
+ |end Project Logo
+ +-->
+<!--+
+ |start Search
+ +-->
+<div class="searchbox">
+<form action="http://www.google.com/search" method="get" class="roundtopsmall">
+<input value="forrest.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with google');" size="25" name="q" id="query" type="text" value="Search the site with google">
+ <input name="Search" value="Search" type="submit">
+</form>
+</div>
+<!--+
+ |end search
+ +-->
+<!--+
+ |start Tabs
+ +-->
+<ul id="tabs">
+<li>
+<a class="base-not-selected" href="../../index.html">Welcome</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../contrib.html">Project</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../versions/index.html">Versioned Docs</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../pluginDocs/index.html">Plugins</a>
+</li>
+<li>
+<a class="base-not-selected" href="../../tools/index.html">Tools</a>
+</li>
+</ul>
+<!--+
+ |end Tabs
+ +-->
+</div>
+</div>
+<div id="main">
+<div id="publishedStrip">
+<!--+
+ |start Subtabs
+ +-->
+<div id="level2tabs"></div>
+<!--+
+ |end Endtabs
+ +-->
+<script type="text/javascript"><!--
+document.write("Last Published: " + document.lastModified);
+// --></script>
+</div>
+<!--+
+ |breadtrail
+ +-->
+<div class="breadtrail">
+
+
+ </div>
+<!--+
+ |start Menu, mainarea
+ +-->
+<!--+
+ |start Menu
+ +-->
+<div id="menu">
+<div onclick="SwitchMenu('menu_selected_1.1', '../../skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">0.80-dev</div>
+<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="../../docs_0_80/index.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/faq.html">FAQs</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/changes.html">Changes</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/todo.html">Todo</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/your-project.html">Using Forrest</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/locationmap.html">Locationmap</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/validation.html">XML Validation</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/linking.html">Menus and Linking</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/searching.html">Searching</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/skins.html">Default Skins</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/skin-package.html">Skin Packages</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/views.html">Views development</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/forrest-contract.html">Our Contract</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/compliance.html">Standards Compliance</a>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.1.15', '../../skin/')" id="menu_selected_1.1.15Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">How-To</div>
+<div id="menu_selected_1.1.15" class="selectedmenuitemgroup" style="display: block;">
+<div class="menuitem">
+<a href="../../docs_0_80/howto/index.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-howto.html">Write a How-to</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-dev.html">Be a developer</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-asf-mirror.html">Download mirror</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-pdf-tab.html">Create tab PDF</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-editcss.html">Edit CSS (WYSIWYG)</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-corner-images.html">CSS corner SVG</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-forrest-from-maven.html">Maven Integration</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-buildPlugin.html">Build a Plugin</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-custom-html-source.html">Custom html source</a>
+</div>
+<div onclick="SwitchMenu('menu_1.1.15.11', '../../skin/')" id="menu_1.1.15.11Title" class="menutitle">Multipage HowTo</div>
+<div id="menu_1.1.15.11" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../docs_0_80/howto/multi/howto-multi.html">Introduction</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/multi/step1.html">Step 1</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/multi/step2.html">Step 2</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/multi/step3.html">Step 3</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.1.15.12', '../../skin/')" id="menu_selected_1.1.15.12Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">Dispatcher</div>
+<div id="menu_selected_1.1.15.12" class="selectedmenuitemgroup" style="display: block;">
+<div class="menupage">
+<div class="menupagetitle">Install</div>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-structurer-dsl.html">forrest:view DSL</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-structurer-contracts.html">Contract implementations</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.15.13', '../../skin/')" id="menu_1.1.15.13Title" class="menutitle">Old Views (deprecated)</div>
+<div id="menu_1.1.15.13" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-view-install.html">Install views</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-view-dsl.html">forrest:view DSL</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-view-contracts.html">Contract implementations</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.16', '../../skin/')" id="menu_1.1.16Title" class="menutitle">Advanced Topics</div>
+<div id="menu_1.1.16" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../docs_0_80/build.html">Building Forrest</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/catalog.html">Using DTD Catalogs</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/sitemap-ref.html">Sitemap Reference</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/project-sitemap.html">Project sitemap</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/cap.html">Sourcetype Action</a>
+</div>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/upgrading_08.html">Upgrading to 0.8</a>
+</div>
+<div onclick="SwitchMenu('menu_1.1.18', '../../skin/')" id="menu_1.1.18Title" class="menutitle">Reference docs</div>
+<div id="menu_1.1.18" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.18.1', '../../skin/')" id="menu_1.1.18.1Title" class="menutitle">DTD documentation</div>
+<div id="menu_1.1.18.1" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../dtdx/dtd-docs.html">Overview</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/document-v20.dtdx.html">document-v20</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/howto-v20.dtdx.html">howto-v20</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/faq-v20.dtdx.html">faq-v20</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/document-v13.dtdx.html">document-v13</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/howto-v13.dtdx.html">howto-v13</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/faq-v13.dtdx.html">faq-v13</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.18.2', '../../skin/')" id="menu_1.1.18.2Title" class="menutitle">Doc samples</div>
+<div id="menu_1.1.18.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../dtdx/document-v13.html">document-v13</a>
+</div>
+<div class="menuitem">
+<a href="../../dtdx/document-v20.html">document-v20</a>
+</div>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.1.19', '../../skin/')" id="menu_1.1.19Title" class="menutitle">Older Docs</div>
+<div id="menu_1.1.19" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../docs_0_80/primer.html">Forrest Primer</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/libre-intro.html">Libre</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/dreams.html">Dream list</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/cvs-ssh/howto-cvs-ssh.html">CVS over SSH</a>
+</div>
+</div>
+</div>
+<div id="credit">
+<hr>
+ This is documentation for development version v0.8
+ (<a href="http://forrest.apache.org/versions/">More</a>)</div>
+<div id="roundbottom">
+<img style="display: none" class="corner" height="15" width="15" alt="" src="../../skin/images/rc-b-l-15-1body-2menu-3menu.png"></div>
+<!--+
+ |alternative credits
+ +-->
+<div id="credit2">
+<a href="http://apachecon.com/"><img border="0" title="ApacheCon US 2005" alt="ApacheCon US 2005 - logo" src="http://apache.org/images/ac2005us_blue_125x125.jpg" style="width: 125px;height: 125px;"></a>
+</div>
+</div>
+<!--+
+ |end Menu
+ +-->
+<!--+
+ |start content
+ +-->
+<div id="content">
+<div title="Portable Document Format" class="pdflink">
+<a class="dida" href="howto-structurer-install.pdf"><img alt="PDF -icon" src="../../skin/images/pdfdoc.gif" class="skin"><br>
+ PDF</a>
+</div>
+<div class="trail">Font size:
+ <input value="Reset" class="resetfont" title="Reset text" onclick="ndeSetTextSize('reset'); return false;" type="button">
+ <input value="-a" class="smallerfont" title="Shrink text" onclick="ndeSetTextSize('decr'); return false;" type="button">
+ <input value="+a" class="biggerfont" title="Enlarge text" onclick="ndeSetTextSize('incr'); return false;" type="button">
+</div>
+<h1>How to install the views</h1>
+<div class="abstract">
+ This How-To describes the setup of the plugins (needed to work with forrest:views and forrest:contracts) and a fresh seed site.
+ </div>
+<div id="motd-area">
+ This is documentation for development version v0.8
+ (<a href="http://forrest.apache.org/versions/">More</a>)</div>
+<div id="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="#localBuild">Build the internal.structurer and the output.themes plugins</a>
+</li>
+<li>
+<a href="#jxpath">Upgrade the JXPath library</a>
+</li>
+<li>
+<a href="#newSeed">Seed a new project</a>
+</li>
+<li>
+<a href="#forrestProperties">Modifying forrest.properties</a>
+</li>
+<li>
+<a href="#testing">Test your new view based project</a>
+</li>
+<li>
+<a href="#availableContracts">Available contracts</a>
+</li>
+</ul>
+</li>
+<li>
+<a href="#Further Reading">Further Reading</a>
+</li>
+<li>
+<a href="#Feedback">Feedback</a>
+</li>
+</ul>
+</div>
+<a name="N10010"></a><a name="Intended Audience"></a>
+<h2 class="underlined_10">Intended Audience</h2>
+<div class="section">
+<div class="warning">
+<div class="label">Warning</div>
+<div class="content">
+"Views" are 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.
+</div>
+</div>
+<p>
+ Developers who want to get started with view development.
+ </p>
+</div>
+<a name="N1001B"></a><a name="Purpose"></a>
+<h2 class="underlined_10">Purpose</h2>
+<div class="section">
+<p>
+ To help with installing views. This is the "getting started" setup guide.
+ </p>
+</div>
+<a name="N10023"></a><a name="Prerequisites"></a>
+<h2 class="underlined_10">Prerequisites</h2>
+<div class="section">
+<ul>
+
+<li>Need the SVN trunk version of Forrest for using views because it is in an early stage.</li>
+
+<li>Read <a href="../../docs_0_80/howto/howto-buildPlugin.html">How to Build a Plugin</a>
+ especially the section about using Forrest's own Ant.</li>
+
+</ul>
+</div>
+<a name="N10035"></a><a name="Steps"></a>
+<h2 class="underlined_10">Steps</h2>
+<div class="section">
+<p>
+ The process of setting up the plugin is quite heavy. We promise it will be easier in the future.
+ Some of the instructions need to be modified with your local settings.
+ </p>
+<a name="N1003D"></a><a name="localBuild"></a>
+<h3 class="underlined_5">Build the internal.structurer and the output.themes plugins</h3>
+<p>
+ The first step is to build and deploy the internal.structurer and the output.themes plugins. Change to a terminal window of your choice
+ and go (cd) to the trunk version of forrest {forrest-trunk}. Then do an SVN update and after this
+ deploy both plugins locally.
+ </p>
+<pre class="code">
+cd {forrest-trunk}
+svn up
+cd whiteboard/plugins/org.apache.forrest.plugin.internal.structurer/
+ant local-deploy
+cd ../org.apache.forrest.plugin.output.themes/
+ant local-deploy
+ </pre>
+<p>
+ Alternatively, run the script <span class="codefrag">etc/structurer.sh</span>
+
+</p>
+<a name="N10051"></a><a name="jxpath"></a>
+<h3 class="underlined_5">Upgrade the JXPath library</h3>
+<p>
+ Replace lib/core/commons-jxpath-20030909.jar with commons-jxpath-1.2.jar
+ </p>
+<div class="note">
+<div class="label">Note</div>
+<div class="content">
+That will introduce Issue
+<a href="http://issues.apache.org/jira/browse/FOR-675">FOR-675</a>
+- please help to fix it.
+</div>
+</div>
+<a name="N10062"></a><a name="newSeed"></a>
+<h3 class="underlined_5">Seed a new project</h3>
+<p>
+ Go to the directory where you want to seed a new project and seed it.
+ </p>
+<pre class="code">
+cd ~/src/newSeed
+forrest seed
+ </pre>
+<a name="N10070"></a><a name="forrestProperties"></a>
+<h3 class="underlined_5">Modifying forrest.properties</h3>
+<p>
+ Tell forrest that we are using the view plugins. Edit
+ forrest.properties to add the required plugins:
+ </p>
+<pre class="code">
+project.required.plugins=org.apache.forrest.plugin.output.themes,org.apache.forrest.plugin.internal.structurer
+ </pre>
+<p>
+ Change the project skin to leather-dev. The reason is that the plugins are still
+ not independent from the "old fashion skins".
+ </p>
+<div class="note">
+<div class="label">Note</div>
+<div class="content">We are exchanging only
+ site2xhtml.xsl of leather-dev skin with the plugins, and some contracts are based
+ on e.g. document2html.xsl output of leather-dev.</div>
+</div>
+<pre class="code">
+project.skin=leather-dev
+ </pre>
+<a name="N10088"></a><a name="testing"></a>
+<h3 class="underlined_5">Test your new view based project</h3>
+<p>
+ Now you have finished the preparation and the setup to finally do
+ </p>
+<pre class="code">
+forrest run
+ </pre>
+<p>Then point to <span class="codefrag">http://localhost:8888/</span> and you will see the default
+ views-based site.</p>
+<a name="N1009C"></a><a name="availableContracts"></a>
+<h3 class="underlined_5">Available contracts</h3>
+<p>
+ To start working with views, you need to know which contracts you can use.
+ For this we will install another plugin <span class="codefrag">org.apache.forrest.plugin.input.viewHelper.xhtml.ls</span>.
+ The setup is:
+ </p>
+<pre class="code">
+cd {forrest-trunk}
+svn up
+cd whiteboard/plugins/org.apache.forrest.plugin.input.viewHelper.xhtml.ls/
+ant local-deploy
+</pre>
+<p>
+ The newly installed plugin will show the available contracts as html pages.
+ First we have to tell Forrest that we are planning to use the new plugin. We will do that
+ by editing the forrest.properties of the <a href="#newSeed">newSeed</a>
+ to add the plugin:
+ </p>
+<pre class="code">
+project.required.plugins=org.apache.forrest.plugin.input.viewHelper.xhtml.ls
+ </pre>
+<p>
+ Now point your browser to <span class="codefrag">http://localhost:8888/ls.contracts.html</span>.
+ On this page you will find all contracts that you can use in your project.
+ </p>
+</div>
+<a name="N100BE"></a><a name="Further Reading"></a>
+<h2 class="underlined_10">Further Reading</h2>
+<div class="section">
+<p>
+ Congratulations you are now able to work with views.
+ From here we recommend to read the following How-To's:
+ </p>
+<ul>
+
+<li>
+<a href="../../docs_0_80/howto/howto-view-dsl.html">Getting started with forrest:view DSL</a>
+</li>
+
+<li>
+<a href="../../docs_0_80/howto/howto-view-contracts.html">Create your own contract implementation</a>
+</li>
+
+</ul>
+</div>
+<a name="N100D5"></a><a name="Feedback"></a>
+<h2 class="underlined_10">Feedback</h2>
+<div class="section">
+<p>
+ Please provide feedback about this document via the "dev"
+ <a href="../../mail-lists.html">mailing list</a>.
+ </p>
+</div>
+</div>
+<!--+
+ |end content
+ +-->
+<div class="clearboth"> </div>
+</div>
+<div id="footer">
+<!--+
+ |start bottomstrip
+ +-->
+<div class="lastmodified">
+<script type="text/javascript"><!--
+document.write("Last Published: " + document.lastModified);
+// --></script>
+</div>
+<div class="copyright">
+ Copyright ©
+ 2002-2005 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
+</div>
+<!--+
+ |end bottomstrip
+ +-->
+</div>
+</body>
+</html>
Propchange: forrest/site/docs_0_80/howto/howto-structurer-install.html
------------------------------------------------------------------------------
svn:eol-style = native
Added: forrest/site/docs_0_80/howto/howto-structurer-install.pdf
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_80/howto/howto-structurer-install.pdf?rev=321269&view=auto
==============================================================================
Binary file - no diff available.
Propchange: forrest/site/docs_0_80/howto/howto-structurer-install.pdf
------------------------------------------------------------------------------
svn:mime-type = application/pdf
Modified: forrest/site/docs_0_80/howto/howto-view-contracts.html
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_80/howto/howto-view-contracts.html?rev=321269&r1=321268&r2=321269&view=diff
==============================================================================
--- forrest/site/docs_0_80/howto/howto-view-contracts.html (original)
+++ forrest/site/docs_0_80/howto/howto-view-contracts.html Fri Oct 14 17:42:44 2005
@@ -5,7 +5,7 @@
<meta content="Apache Forrest" name="Generator">
<meta name="Forrest-version" content="0.8-dev">
<meta name="Forrest-skin-name" content="pelt">
-<title>How to write a forrest:contract? (v0.8-dev)</title>
+<title>How to write a forrest:contract? (deprecated) (v0.8-dev)</title>
<link type="text/css" href="../../skin/basic.css" rel="stylesheet">
<link media="screen" type="text/css" href="../../skin/screen.css" rel="stylesheet">
<link media="print" type="text/css" href="../../skin/print.css" rel="stylesheet">
@@ -199,8 +199,20 @@
<a href="../../docs_0_80/howto/multi/step3.html">Step 3</a>
</div>
</div>
-<div onclick="SwitchMenu('menu_selected_1.1.15.12', '../../skin/')" id="menu_selected_1.1.15.12Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">Views</div>
-<div id="menu_selected_1.1.15.12" class="selectedmenuitemgroup" style="display: block;">
+<div onclick="SwitchMenu('menu_1.1.15.12', '../../skin/')" id="menu_1.1.15.12Title" class="menutitle">Dispatcher</div>
+<div id="menu_1.1.15.12" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-structurer-install.html">Install</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-structurer-dsl.html">forrest:view DSL</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-structurer-contracts.html">Contract implementations</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.1.15.13', '../../skin/')" id="menu_selected_1.1.15.13Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">Old Views (deprecated)</div>
+<div id="menu_selected_1.1.15.13" class="selectedmenuitemgroup" style="display: block;">
<div class="menuitem">
<a href="../../docs_0_80/howto/howto-view-install.html">Install views</a>
</div>
@@ -208,7 +220,7 @@
<a href="../../docs_0_80/howto/howto-view-dsl.html">forrest:view DSL</a>
</div>
<div class="menupage">
-<div class="menupagetitle">contract implementations</div>
+<div class="menupagetitle">Contract implementations</div>
</div>
</div>
</div>
@@ -314,7 +326,7 @@
<input value="-a" class="smallerfont" title="Shrink text" onclick="ndeSetTextSize('decr'); return false;" type="button">
<input value="+a" class="biggerfont" title="Enlarge text" onclick="ndeSetTextSize('incr'); return false;" type="button">
</div>
-<h1>How to write a forrest:contract?</h1>
+<h1>How to write a forrest:contract? (deprecated)</h1>
<div class="abstract">
This How-To will explain how we wrote the contracts for views and hope afterwards you will be able to do the same.
</div>
@@ -368,13 +380,21 @@
This HowTo is a good start but still needs more work.
</div>
</div>
+<div class="warning">
+<div class="label">Warning</div>
+<div class="content">
+This document relates to an early development version of "views".
+Please use the current development instead. Start at
+<a href="../../docs_0_80/howto/howto-structurer-install.html">howto-structurer-install</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="N1001B"></a><a name="Purpose"></a>
+<a name="N10022"></a><a name="Purpose"></a>
<h2 class="underlined_10">Purpose</h2>
<div class="section">
<p>
@@ -382,7 +402,7 @@
how this forrest:contract work with the core parts of forrest.
</p>
</div>
-<a name="N10023"></a><a name="Prerequisites"></a>
+<a name="N1002A"></a><a name="Prerequisites"></a>
<h2 class="underlined_10">Prerequisites</h2>
<div class="section">
<ul>
@@ -401,7 +421,7 @@
</ul>
</div>
-<a name="N1003C"></a><a name="Steps"></a>
+<a name="N10043"></a><a name="Steps"></a>
<h2 class="underlined_10">Steps</h2>
<div class="section">
<div class="note">
@@ -430,7 +450,7 @@
+ Published:</i18n:text>&#160;" + document.lastModified);
</pre>
-<a name="N10051"></a><a name="enhanceMaintenance"></a>
+<a name="N10058"></a><a name="enhanceMaintenance"></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
@@ -461,7 +481,7 @@
Now this refactoring of the site2xhtml.xsl is exactly what we doing in creating contracts for views.
</div>
</div>
-<a name="N1006E"></a><a name="blankContract"></a>
+<a name="N10075"></a><a name="blankContract"></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
@@ -549,7 +569,7 @@
<xsl:template name="blank-body"/>
</xsl:stylesheet>
</pre>
-<a name="N100BB"></a><a name="newContract"></a>
+<a name="N100C2"></a><a name="newContract"></a>
<h3 class="underlined_5">Create a new contract</h3>
<div class="fixme">
<div class="label">Fixme (thorsten)</div>
@@ -627,7 +647,7 @@
</forrest:template>
</forrest:contract>
</pre>
-<a name="N100FF"></a><a name="viewContract"></a>
+<a name="N10106"></a><a name="viewContract"></a>
<h3 class="underlined_5">Activating the contract</h3>
<p>
To see whether the new contract works we need to add it to our view.
@@ -642,7 +662,7 @@
</div>
</div>
</div>
-<a name="N10114"></a><a name="Further Reading"></a>
+<a name="N1011B"></a><a name="Further Reading"></a>
<h2 class="underlined_10">Further Reading</h2>
<div class="section">
<p>
@@ -657,7 +677,7 @@
</ul>
</div>
-<a name="N10125"></a><a name="Feedback"></a>
+<a name="N1012C"></a><a name="Feedback"></a>
<h2 class="underlined_10">Feedback</h2>
<div class="section">
<p>
Modified: forrest/site/docs_0_80/howto/howto-view-contracts.pdf
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_80/howto/howto-view-contracts.pdf?rev=321269&r1=321268&r2=321269&view=diff
==============================================================================
Binary files - no diff available.
Modified: forrest/site/docs_0_80/howto/howto-view-dsl.html
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_80/howto/howto-view-dsl.html?rev=321269&r1=321268&r2=321269&view=diff
==============================================================================
--- forrest/site/docs_0_80/howto/howto-view-dsl.html (original)
+++ forrest/site/docs_0_80/howto/howto-view-dsl.html Fri Oct 14 17:42:44 2005
@@ -5,7 +5,7 @@
<meta content="Apache Forrest" name="Generator">
<meta name="Forrest-version" content="0.8-dev">
<meta name="Forrest-skin-name" content="pelt">
-<title>How to use the forrest:view config-DSL (v0.8-dev)</title>
+<title>How to use the forrest:view config-DSL (deprecated) (v0.8-dev)</title>
<link type="text/css" href="../../skin/basic.css" rel="stylesheet">
<link media="screen" type="text/css" href="../../skin/screen.css" rel="stylesheet">
<link media="print" type="text/css" href="../../skin/print.css" rel="stylesheet">
@@ -199,8 +199,20 @@
<a href="../../docs_0_80/howto/multi/step3.html">Step 3</a>
</div>
</div>
-<div onclick="SwitchMenu('menu_selected_1.1.15.12', '../../skin/')" id="menu_selected_1.1.15.12Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">Views</div>
-<div id="menu_selected_1.1.15.12" class="selectedmenuitemgroup" style="display: block;">
+<div onclick="SwitchMenu('menu_1.1.15.12', '../../skin/')" id="menu_1.1.15.12Title" class="menutitle">Dispatcher</div>
+<div id="menu_1.1.15.12" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-structurer-install.html">Install</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-structurer-dsl.html">forrest:view DSL</a>
+</div>
+<div class="menuitem">
+<a href="../../docs_0_80/howto/howto-structurer-contracts.html">Contract implementations</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_selected_1.1.15.13', '../../skin/')" id="menu_selected_1.1.15.13Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">Old Views (deprecated)</div>
+<div id="menu_selected_1.1.15.13" class="selectedmenuitemgroup" style="display: block;">
<div class="menuitem">
<a href="../../docs_0_80/howto/howto-view-install.html">Install views</a>
</div>
@@ -208,7 +220,7 @@
<div class="menupagetitle">forrest:view DSL</div>
</div>
<div class="menuitem">
-<a href="../../docs_0_80/howto/howto-view-contracts.html">contract implementations</a>
+<a href="../../docs_0_80/howto/howto-view-contracts.html">Contract implementations</a>
</div>
</div>
</div>
@@ -314,7 +326,7 @@
<input value="-a" class="smallerfont" title="Shrink text" onclick="ndeSetTextSize('decr'); return false;" type="button">
<input value="+a" class="biggerfont" title="Enlarge text" onclick="ndeSetTextSize('incr'); return false;" type="button">
</div>
-<h1>How to use the forrest:view config-DSL</h1>
+<h1>How to use the forrest:view config-DSL (deprecated)</h1>
<div class="abstract">
This How-To describes the usage of the forrest:view config Domain Specific Language
to create beautiful websites in no time.
@@ -369,11 +381,19 @@
This HowTo is far from being finished.
</div>
</div>
+<div class="warning">
+<div class="label">Warning</div>
+<div class="content">
+This document relates to an early development version of "views".
+Please use the current development instead. Start at
+<a href="../../docs_0_80/howto/howto-structurer-install.html">howto-structurer-install</a>.
+</div>
+</div>
<p>
This part of the views is dedicated to webdesigner and user with some knowlegde of css.
</p>
</div>
-<a name="N1001B"></a><a name="Purpose"></a>
+<a name="N10022"></a><a name="Purpose"></a>
<h2 class="underlined_10">Purpose</h2>
<div class="section">
<p>
@@ -381,7 +401,7 @@
We will focus on html as the output format. As well it will show how to add your own css implementation to the view.
</p>
</div>
-<a name="N10026"></a><a name="Prerequisites"></a>
+<a name="N1002D"></a><a name="Prerequisites"></a>
<h2 class="underlined_10">Prerequisites</h2>
<div class="section">
<ul>
@@ -400,7 +420,7 @@
</ul>
</div>
-<a name="N1003F"></a><a name="Steps"></a>
+<a name="N10046"></a><a name="Steps"></a>
<h2 class="underlined_10">Steps</h2>
<div class="section">
<div class="note">
@@ -444,7 +464,7 @@
document (content-main). Sometimes a contract delivers <strong>format-specific markup</strong>, other times it delivers
a <strong>format-independent string</strong>.
</p>
-<a name="N10089"></a><a name="emptyView"></a>
+<a name="N10090"></a><a name="emptyView"></a>
<h3 class="underlined_5">Empty view file</h3>
<pre class="code"><forrest:views xmlns:forrest="http://apache.org/forrest/templates/1.0">
<forrest:view type="xhtml">
@@ -459,7 +479,7 @@
<p>
Now let us start to skin our site.
</p>
-<a name="N100A0"></a><a name="firstView"></a>
+<a name="N100A7"></a><a name="firstView"></a>
<h3 class="underlined_5">Creating your first view</h3>
<p>
In this section we will create a new view. We will override the default view of the view-plugin
@@ -499,7 +519,7 @@
we placed them in the view, but we want it next to each other
(left: nav-section; right: content-main).
</p>
-<a name="N100D1"></a><a name="hookView"></a>
+<a name="N100D8"></a><a name="hookView"></a>
<h3 class="underlined_5">Hooks in views</h3>
<p>
We will use now the first time a <span class="codefrag"><forrest:hook name="layoutId"/></span>.
@@ -539,7 +559,7 @@
</forrest:view>
</forrest:views>
</pre>
-<a name="N100F6"></a><a name="cssView"></a>
+<a name="N100FD"></a><a name="cssView"></a>
<h3 class="underlined_5">CSS in views</h3>
<p>
We now know how to place contracts and hooks in our view. Until this stage we only used the default.css.
@@ -624,7 +644,7 @@
</div>
</div>
</div>
-<a name="N1013A"></a><a name="Further Reading"></a>
+<a name="N10141"></a><a name="Further Reading"></a>
<h2 class="underlined_10">Further Reading</h2>
<div class="section">
<p>
@@ -639,7 +659,7 @@
</ul>
</div>
-<a name="N1014B"></a><a name="Feedback"></a>
+<a name="N10152"></a><a name="Feedback"></a>
<h2 class="underlined_10">Feedback</h2>
<div class="section">
<p>
Modified: forrest/site/docs_0_80/howto/howto-view-dsl.pdf
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_80/howto/howto-view-dsl.pdf?rev=321269&r1=321268&r2=321269&view=diff
==============================================================================
Binary files - no diff available.
Modified: forrest/site/docs_0_80/howto/howto-view-install.pdf
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_80/howto/howto-view-install.pdf?rev=321269&r1=321268&r2=321269&view=diff
==============================================================================
Binary files - no diff available.