Modified: forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/documentation/content/xdocs/dispatcher-glossary.xml
URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/documentation/content/xdocs/dispatcher-glossary.xml?rev=886147&r1=886146&r2=886147&view=diff
==============================================================================
--- forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/documentation/content/xdocs/dispatcher-glossary.xml (original)
+++ forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/documentation/content/xdocs/dispatcher-glossary.xml Wed Dec 2 13:58:18 2009
@@ -20,28 +20,25 @@
<glossary>
<title>Dispatcher Glossary</title>
<introduction>
- <p>
- This is a glossary of terms and their definitions for the Dispatcher (aka
- views).
- </p>
+ <p>This is a glossary of terms and their definitions for the Dispatcher
+ (aka views).</p>
</introduction>
<part id="a">
<title>A</title>
<item id="AddContent">
<term>Add content to this Glossary</term>
<definitions>
- <definition>This glossary is incomplete, please help where you can by adding definitions to
- existing items where needed. Also, add new Dispatcher related Items to the glossary as
- appropriate.</definition>
+ <definition>This glossary is incomplete, please help where you can by
+ adding definitions to existing items where needed. Also, add new
+ Dispatcher related Items to the glossary as appropriate.</definition>
</definitions>
<notes>
<item-note>See
<link href="http://marc.theaimsgroup.com/?l=forrest-dev&m=112596689428172&w=2#1">
- Archive Mail</link>
- </item-note>
+ Archive Mail</link></item-note>
<item-note>See
- <link href="http://issues.apache.org/jira/browse/FOR-639">Issue FOR-639</link>
- </item-note>
+ <link href="http://issues.apache.org/jira/browse/FOR-639">Issue
+ FOR-639</link></item-note>
</notes>
</item>
</part>
@@ -50,15 +47,20 @@
<item id="Contracts">
<term>Contracts</term>
<definitions>
- <definition>A contract is a snippet of re-usable code that gets used in a structurer file.</definition>
- <definition>Contracts can be used or omitted as neccessary, though a few are really compulsary in
- order to define a basic skeleton structure and to include some styling (CSS)</definition>
- <definition>Contracts mainly come in three (3) types, static, semi-static & dynamic.<br />
- Static Contracts are pre-defined snippets of code that need no further information.<br />
- Semi-static Contracts can include extra configuration variables, these would over-ride otherwise
- default variables.<br />
- Dynamic Contracts can have extra configuration variables, but can also define their own snippets
- of code information. (Such as extra CSS elements, or generic markup elements).</definition>
+ <definition>A contract is a snippet of re-usable code that gets used in
+ a structurer file.</definition>
+ <definition>Contracts can be used or omitted as neccessary, though a
+ few are really compulsary in order to define a basic skeleton structure
+ and to include some styling (CSS)</definition>
+ <definition>Contracts mainly come in three (3) types, static,
+ semi-static & dynamic.
+ <br />Static Contracts are pre-defined snippets of code that need no
+ further information.
+ <br />Semi-static Contracts can include extra configuration variables,
+ these would over-ride otherwise default variables.
+ <br />Dynamic Contracts can have extra configuration variables, but can
+ also define their own snippets of code information. (Such as extra CSS
+ elements, or generic markup elements).</definition>
</definitions>
</item>
<item id="Class">
@@ -68,10 +70,12 @@
<text>Name</text>
</see>
<definitions>
- <definition>In the context of the dispatcher, a <strong>Class</strong> is used as an optional attribute to
- the forrest:hook. This converts to <code>
-<![CDATA[<div class="example"></div>]]></code>.
- </definition>
+ <definition>In the context of the dispatcher, a
+ <strong>Class</strong>is used as an optional attribute to the
+ forrest:hook. This converts to
+ <code>
+ <![CDATA[<div class="example"></div>]]>
+</code>.</definition>
</definitions>
</item>
</part>
@@ -100,13 +104,14 @@
<text>Views</text>
</see>
<definitions>
- <definition>The Dispatcher is the codename for the Forrest Implementation of the Core J2EE
- Dispatcher View.
+ <definition>The Dispatcher is the codename for the Forrest
+ Implementation of the Core J2EE Dispatcher View.
<link href="http://java.sun.com/blueprints/corej2eepatterns/Patterns/DispatcherView.html">
- java.sun.com</link> has more information on its origins.</definition>
- <definition>What we at 'Forrest' relate the Dispatcher to, is the overall technology and
- implementation of the replacement 'skins' system. Combining 'Views', 'Contracts' , 'Themes'
- enables separation of concerns to provide a fast and efficient documentation
+ java.sun.com</link>has more information on its origins.</definition>
+ <definition>What we at 'Forrest' relate the Dispatcher to, is the
+ overall technology and implementation of the replacement 'skins'
+ system. Combining 'Views', 'Contracts' , 'Themes' enables separation of
+ concerns to provide a fast and efficient documentation
framework.</definition>
</definitions>
</item>
@@ -124,18 +129,19 @@
<text>Structurer</text>
</see>
<definitions>
- <definition>forrest:hooks is a concept of defining format independent hooks to structure
- the output.</definition>
- <definition>Hooks are used to help define the layout of a page. Hooks are only used to
- define the structure in our output that is required to enable a theme to apply its look and
- feel.</definition>
- <definition>Hooks convert to layout <![CDATA[<div></div>]]> container blocks and usually only consist
- of forrest:contracts</definition>
+ <definition>forrest:hooks is a concept of defining format independent
+ hooks to structure the output.</definition>
+ <definition>Hooks are used to help define the layout of a page. Hooks
+ are only used to define the structure in our output that is required to
+ enable a theme to apply its look and feel.</definition>
+ <definition>Hooks convert to layout
+<![CDATA[<div></div>]]>
+container blocks and usually only consist of forrest:contracts</definition>
<definition>Hooks are applied currently in the themes.core plugin as
-part of a themes structurer configuration file such as %themename
-%-html.panel.xml (e.g pelt-html.panel.xml) or included in such configuration
-files via a panel file such as %themename%-%format%.panel.xml (e.g
-pelt-html.panel.xml)</definition>
+ part of a themes structurer configuration file such as %themename
+ %-html.panel.xml (e.g pelt-html.panel.xml) or included in such
+ configuration files via a panel file such as
+ %themename%-%format%.panel.xml (e.g pelt-html.panel.xml)</definition>
</definitions>
</item>
</part>
@@ -148,9 +154,12 @@
<text>Class</text>
</see>
<definitions>
- <definition>In the context of the dispatcher, a <strong>name</strong> is used as an optional attribute to
- the forrest:hook. This converts to <code>
-<![CDATA[<div id="example"></div>]]></code>.</definition>
+ <definition>In the context of the dispatcher, a
+ <strong>name</strong>is used as an optional attribute to the
+ forrest:hook. This converts to
+ <code>
+ <![CDATA[<div id="example"></div>]]>
+</code>.</definition>
</definitions>
</item>
</part>
@@ -169,7 +178,8 @@
<text>Tiles</text>
</see>
<definitions>
- <definition>Panels is the new name for a tile - a collection of contracts. </definition>
+ <definition>Panels is the new name for a tile - a collection of
+ contracts.</definition>
</definitions>
</item>
</part>
@@ -194,9 +204,12 @@
<text>Themes</text>
</see>
<definitions>
- <definition>The Structurer allows a user to define the layout and content of a site or parts of a site.</definition>
- <definition>Structurer files contain hooks & contracts which you can include to build up a site structure template</definition>
- <definition>A completed structurer file defines an overall theme (look and feel) for a site</definition>
+ <definition>The Structurer allows a user to define the layout and
+ content of a site or parts of a site.</definition>
+ <definition>Structurer files contain hooks & contracts which you
+ can include to build up a site structure template</definition>
+ <definition>A completed structurer file defines an overall theme (look
+ and feel) for a site</definition>
</definitions>
</item>
<item id="Skins">
@@ -210,9 +223,12 @@
<text>Dispatcher</text>
</see>
<definitions>
- <definition>Skins is the name of the older alternative way for structuring and styling your site pages.</definition>
- <definition>Skins is still used in Forrest versions 0.7 and 0.8-dev, though for 0.8-dev and beyond it can be
- concidered an option with Dispatcher being the other.(It is enabled as the default option currently)</definition>
+ <definition>Skins is the name of the older alternative way for
+ structuring and styling your site pages.</definition>
+ <definition>Skins is still used in Forrest versions 0.7 and 0.8-dev,
+ though for 0.8-dev and beyond it can be concidered an option with
+ Dispatcher being the other.(It is enabled as the default option
+ currently)</definition>
</definitions>
</item>
</part>
@@ -225,18 +241,25 @@
<text>Panels</text>
</see>
<definitions>
- <definition>A tile is a collection of contracts that are grouped together for easy inclusion into a theme.</definition>
- <definition>Tiles was the original but deprecated name for a collection of contracts, it is now
- re-named and re-implemented as a 'Panels'</definition>
+ <definition>A tile is a collection of contracts that are grouped
+ together for easy inclusion into a theme.</definition>
+ <definition>Tiles was the original but deprecated name for a collection
+ of contracts, it is now re-named and re-implemented as a
+ 'Panels'</definition>
</definitions>
</item>
<item id="Themes">
<term>Themes</term>
<definitions>
- <definition>A more extensible and adaptable solution than its alternative 'Skins'. A 'Theme' is an overall content & style set.</definition>
- <definition>A master 'common' theme provides the basis in which you can extend, over-ride or add to in order to make your own theme, you do not
- have to create a complete theme from scratch, simply include/exclude/over-ride/add what you need. The current 'Pelt Theme' based on its
- 'Pelt Skin' counterpart, but uses functionality and extends/inherits what it needs to from the 'common' theme.</definition>
+ <definition>A more extensible and adaptable solution than its
+ alternative 'Skins'. A 'Theme' is an overall content & style
+ set.</definition>
+ <definition>A master 'common' theme provides the basis in which you can
+ extend, over-ride or add to in order to make your own theme, you do not
+ have to create a complete theme from scratch, simply
+ include/exclude/over-ride/add what you need. The current 'Pelt Theme'
+ based on its 'Pelt Skin' counterpart, but uses functionality and
+ extends/inherits what it needs to from the 'common' theme.</definition>
</definitions>
</item>
</part>
@@ -249,9 +272,11 @@
<text>Dispatcher</text>
</see>
<definitions>
- <definition>Views is the older now deprecated name for what is now the 'Dispatcher'</definition>
- <definition>Views also, confusingly, was used as a term for the Structurer, and forrest:views is a
- deprecated code that has been replaced with forrest:template.</definition>
+ <definition>Views is the older now deprecated name for what is now the
+ 'Dispatcher'</definition>
+ <definition>Views also, confusingly, was used as a term for the
+ Structurer, and forrest:structurer is a deprecated code that has been
+ replaced with forrest:template.</definition>
</definitions>
</item>
</part>
Modified: forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/documentation/content/xdocs/examples/index.xml
URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/documentation/content/xdocs/examples/index.xml?rev=886147&r1=886146&r2=886147&view=diff
==============================================================================
--- forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/documentation/content/xdocs/examples/index.xml (original)
+++ forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/documentation/content/xdocs/examples/index.xml Wed Dec 2 13:58:18 2009
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
@@ -15,46 +15,48 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN"
- "http://forrest.apache.org/dtd/document-v20.dtd">
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN"
+"http://forrest.apache.org/dtd/document-v20.dtd">
<document>
<header>
<title>Dispatcher (Draft - feature under development)</title>
</header>
<body>
- <warning>
- The "dispatcher" is new functionality which is still in development phase.
- That is why it is in the "whiteboard" section of the Forrest distribution.
- We are working at the moment on moving this plugin from the whiteboard
- into the core plugins. Further all dispatcher related documents will be
- moved into the plugin as well. See
- <a
- href="http://forrest.apache.org/docs_0_90/status-themes.html">Status
- of Themes: Skins and Dispatcher</a>.
- </warning>
+ <warning>The "dispatcher" is new functionality which is still in
+ development phase. That is why it is in the "whiteboard" section of the
+ Forrest distribution. We are working at the moment on moving this plugin
+ from the whiteboard into the core plugins. Further all dispatcher related
+ documents will be moved into the plugin as well. See
+ <a href="http://forrest.apache.org/docs_0_90/status-themes.html">Status of
+ Themes: Skins and Dispatcher</a>.</warning>
<section id="introduction">
<title>Introduction</title>
- <p>
- This section will grow and show example usage of contracts in action -
- either standalone contracts or those that work in conjunction with
- plugins. Contributions Welcome.
- </p>
+ <p>This section will grow and show example usage of contracts in action -
+ either standalone contracts or those that work in conjunction with
+ plugins. Contributions Welcome.</p>
</section>
<section id="examples">
- <title>Some examples to help you on your way</title>
- <section id="pod-example">
- <title>Enabling and adding the POD plugin</title>
- <p>On this page you will see a link to a .pod version of this page. Below are
- the steps taken :-</p>
- <ul><li>Add POD plugin to forrest.properties file</li>
- <li><code><![CDATA[org.apache.forrest.plugin.output.POD]]></code></li>
- <li>Add contract to include pod link - this can either be enabled in a
- master theme file (such as pelt.fv) or on a per folder basis (by altering a
- nested pelt.fv to point to modified *.panels.xml). In this case, we want a
- modified option to only alter files in this examples folder.
-</li></ul>
-<fixme author="GM">Example not yet complete, will expand on it soon.</fixme>
-</section>
-</section>
+ <title>Some examples to help you on your way</title>
+ <section id="pod-example">
+ <title>Enabling and adding the POD plugin</title>
+ <p>On this page you will see a link to a .pod version of this page.
+ Below are the steps taken :-</p>
+ <ul>
+ <li>Add POD plugin to forrest.properties file</li>
+ <li>
+ <code>
+ <![CDATA[org.apache.forrest.plugin.output.POD]]>
+</code>
+ </li>
+ <li>Add contract to include pod link - this can either be enabled in
+ a master theme file (such as pelt.fv) or on a per folder basis (by
+ altering a nested pelt.fv to point to modified *.panels.xml). In this
+ case, we want a modified option to only alter files in this examples
+ folder.</li>
+ </ul>
+ <fixme author="GM">Example not yet complete, will expand on it
+ soon.</fixme>
+ </section>
+ </section>
</body>
</document>
Modified: forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/documentation/content/xdocs/how/howto-dispatcher-contracts.xml
URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/documentation/content/xdocs/how/howto-dispatcher-contracts.xml?rev=886147&r1=886146&r2=886147&view=diff
==============================================================================
--- forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/documentation/content/xdocs/how/howto-dispatcher-contracts.xml (original)
+++ forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/documentation/content/xdocs/how/howto-dispatcher-contracts.xml Wed Dec 2 13:58:18 2009
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
@@ -15,111 +15,94 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<!DOCTYPE howto PUBLIC "-//APACHE//DTD How-to V2.0//EN" "http://forrest.apache.org/dtd/howto-v20.dtd">
+<!DOCTYPE howto PUBLIC "-//APACHE//DTD How-to V2.0//EN"
+"http://forrest.apache.org/dtd/howto-v20.dtd">
<howto>
<header>
<title>How to write a forrest:contract</title>
- <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.
- </abstract>
- <last-modified-content-date date="2007-03-24"/>
+ <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.</abstract>
+ <last-modified-content-date date="2007-03-24" />
</header>
<audience title="Intended Audience">
- <warning>
- 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="ext:forrest/status-themes">Status of Themes: Skins and
- Dispatcher</a>.
- </warning>
- <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>
+ <warning>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="ext:forrest/status-themes">Status of Themes: Skins and
+ Dispatcher</a>.</warning>
+ <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>
</audience>
<purpose title="Purpose">
- <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>
+ <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>
</purpose>
<prerequisites title="Prerequisites">
<ul>
- <li>Installing a mozilla browser and the forrestbar helps a lot in developing.</li>
+ <li>Installing a mozilla browser and the forrestbar helps a lot in
+ developing.</li>
</ul>
</prerequisites>
<steps title="Steps">
- <note>
- 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
- </note>
- <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 <code>site2xhtml.xsl</code> 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
+ <note>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</note>
+ <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
+ <code>site2xhtml.xsl</code>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
<![CDATA[<i18n:text/>]]>
- -tags.
- </p>
+-tags.</p>
<source>
-<![CDATA[
+ <![CDATA[
- <script
- type="text/javascript">document.write("Published: " + document.lastModified);</script>
+ <script type="text/javascript">document.write("<i18n:text >Last
+ Published:</i18n:text> " + document.lastModified);
]]>
- </source>
+</source>
<section id="enhanceMaintenance">
<title>Enhance the maintenance</title>
- <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>
+ <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 <![CDATA[<xsl:call-template name="siteinfo-last-published"/>]]></li>
+ <li>replace the script by
+<![CDATA[<xsl:call-template name="siteinfo-last-published"/>]]>
+</li>
<li>and add:</li>
</ol>
<source>
-<![CDATA[<xsl:template name="siteinfo-last-published">
+ <![CDATA[<xsl:template name="siteinfo-last-published">
<script type="text/javascript">
document.write("<i18n:text >Last Published:</i18n:text> " + document.lastModified);
</script>
</xsl:template>]]>
- </source>
- <p>
- This allows us in a next maintenance to just change the code of
+</source>
+ <p>This allows us in a next maintenance to just change the code of
<![CDATA[<xsl:template name="siteinfo-last-published"/>]]>
- and apply it in any position where it is placed.
- </p>
- <note>
- Now this refactoring of the site2xhtml.xsl is exactly what we doing in
- creating contracts for the dispatcher.
- </note>
+and apply it in any position where it is placed.</p>
+ <note>Now this refactoring of the site2xhtml.xsl is exactly what we doing
+ in creating contracts for the dispatcher.</note>
</section>
<section id="blankContract">
<title>Explaining the blank forrest:contract</title>
- <p>
- To start a new forrest:contract you can copy the 'blank.ft' from
- <code>org.apache.forrest.plugin.themes.core/themes/common/html/blank.ft</code>.
- </p>
- <p>
- The 'blank.ft' is a simple xml file with the following code which you
- can use to base new contracts on:
- </p>
+ <p>To start a new forrest:contract you can copy the 'blank.ft' from
+ <code>
+ org.apache.forrest.plugin.themes.core/themes/common/html/blank.ft</code>.</p>
+ <p>The 'blank.ft' is a simple xml file with the following code which you
+ can use to base new contracts on:</p>
<source>
<![CDATA[<forrest:contract
xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
@@ -132,13 +115,17 @@
<description>
blank will output {contract-function}. This is just a blank contract, it will output *nothing*.
</description>
- <usage>]]><![CDATA[<![CDATA[<forrest:contract name="blank"/>]]>><![CDATA[</usage>
+ <usage>]]>
+<![CDATA[
+<![CDATA[<forrest:contract name="blank"/>]]>
+>
+<![CDATA[</usage>
<forrest:template xmlns:forrest="http://apache.org/forrest/templates/1.0"
name="blank" inputFormat="xsl">
<xsl:stylesheet version="1.1"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!--<xsl:param name="defaultVariables" select="'test.html'"/>-->
- <!--<xsl:variable name="skin-img-dir" select="$defaultVariables/*/*[@name='skin-img-dir']/@value"/>-->
+ <!--<xsl:variable name="skin-img-dir" select="$defaultVariables/*[@name='skin-img-dir']/@value"/>-->
<xsl:template match="/">
<forrest:content>
<!--<forrest:part/>-->
@@ -148,121 +135,113 @@
</xsl:stylesheet>
</forrest:template>
</forrest:contract>]]>
- </source>
- <p>
- The most important is the name of the contract <code>
-<![CDATA[<forrest:contract name="blank"/>]]>
- </code>. This name is the same as the file name of the contract (without
- file extension) <code>blank.ft</code>.
- </p>
- <note>
- 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.
- </note>
- <p>
- The <code>
-<![CDATA[<description/>]]>
- </code> 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 web designer to pick the right contract.
- </p>
+</source>
+ <p>The most important is the name of the contract
+ <code>
+ <![CDATA[<forrest:contract name="blank"/>]]>
+</code>. This name is the same as the file name of the contract (without file
+extension)
+ <code>blank.ft</code>.</p>
+ <note>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.</note>
+ <p>The
+ <code>
+ <![CDATA[<description/>]]>
+</code>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
+web designer to pick the right contract.</p>
<source>
-<![CDATA[<description>
+ <![CDATA[<description>
siteinfo-last-published-howto will output the last published date of the site with the help of jscript.
</description>]]>
- </source>
- <p>
- In the <code>
-<![CDATA[<usage/>]]>
- </code> tag we have to explain how the designer can use the contract in
- his structurer.
- </p>
+</source>
+ <p>In the
+ <code>
+ <![CDATA[<usage/>]]>
+</code>tag we have to explain how the designer can use the contract in his
+structurer.</p>
<source>
-<![CDATA[<usage>]]><![CDATA[<![CDATA[<forrest:contract name="siteinfo-last-published-howto"/>]]>]]><![CDATA[</usage>]]>
- </source>
- <p>
- To put contract code into the <code>
-<![CDATA[<head></head>]]>
- </code> section, this needs to be declared in the contract as :- <code>
-<![CDATA[<forrest:part xpath="/html/head">...</forrest:part>]]>
- </code> Simply by leaving out the xpath declaration and the code will go
- into body. You can use <code>
-<![CDATA[<forrest:part xpath="/html/head">...</forrest:part><forrest:part>...</forrest:part>]]>
- </code> if you need content in both head and body.
- </p>
- <warning>
- The last paragraph about
+<![CDATA[<usage>]]>
+<![CDATA[
+<![CDATA[<forrest:contract name="siteinfo-last-published-howto"/>]]>
+]]>
+<![CDATA[</usage>]]>
+</source>
+ <p>To put contract code into the
+ <code>
+ <![CDATA[<head></head>]]>
+</code>section, this needs to be declared in the contract as :-
+ <code>
+ <![CDATA[<forrest:part xpath="/html/head">...</forrest:part>]]>
+</code>Simply by leaving out the xpath declaration and the code will go into
+body. You can use
+ <code>
+ <![CDATA[<forrest:part xpath="/html/head">...</forrest:part><forrest:part>...</forrest:part>]]>
+</code>if you need content in both head and body.</p>
+ <warning>The last paragraph about
<![CDATA[<forrest:part/>]]>
- has replaced the older way of
+has replaced the older way of
<![CDATA[<forrest:template name="blank" body="false" head="false">]]>
- . Please be aware that this part of the dispatcher is still a moving
- target and may change still.
- </warning>
- <note>
- It is possible to use contracts in different input/output formats. We
- are focusing for now on format="html" as output and the
- inputFormat="xsl".
- </note>
+. Please be aware that this part of the dispatcher is still a moving target and
+may change still.</warning>
+ <note>It is possible to use contracts in different input/output formats.
+ We are focusing for now on format="html" as output and the
+ inputFormat="xsl".</note>
</section>
<section id="newContract">
<title>Create a new contract</title>
- <note >
- We use basic naming convention for contracts. Like "naming does not say
- anything about layout position, but functionality of the contract".
- </note>
- <p>
- Now let us pick up the example we started with and create a
- "siteinfo-last-published-howto" contract. Save the blank.ft to
- <code>{project.home}/src/documentation/resources/themes/common/html/siteinfo-last-published-howto.ft</code>.
- </p>
- <p>
- Now the maintenance-optimized code (xpath="/html/body/*") was:
- </p>
+ <note>We use basic naming convention for contracts. Like "naming does not
+ say anything about layout position, but functionality of the
+ contract".</note>
+ <p>Now let us pick up the example we started with and create a
+ "siteinfo-last-published-howto" contract. Save the blank.ft to
+ <code>
+ {project.home}/src/documentation/resources/themes/common/html/siteinfo-last-published-howto.ft</code>.</p>
+ <p>Now the maintenance-optimized code (xpath="/html/body/*") was:</p>
<source>
-<![CDATA[<xsl:template name="siteinfo-last-published">
+ <![CDATA[<xsl:template name="siteinfo-last-published">
<script type="text/javascript">
document.write("<i18n:text >Last Published:</i18n:text> " + document.lastModified);
</script>
</xsl:template>]]>
- </source>
- <p>
- In this code we have to do the following steps to use it in our
- contract:
- </p>
+</source>
+ <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>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>
+ <p>The contract after this steps should look like:</p>
<source>
-<![CDATA[<xsl:template name="siteinfo-last-publish-howto-body">
+ <![CDATA[<xsl:template name="siteinfo-last-publish-howto-body">
debug string -
<script type="text/javascript">
document.write("<i18n:text >Last Published:</i18n:text> " + document.lastModified);
</script>
</xsl:template>]]>
- </source>
- <p>
- Now we have to do some last steps in the siteinfo-last-publish-howto.ft
- </p>
+</source>
+ <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>Copy the maintenance optimized code to the contract.</li>
</ul>
- <p>
- As the result your code should look like this:
- </p>
+ <p>As the result your code should look like this:</p>
<source>
<![CDATA[<forrest:contract xmlns:forrest="http://apache.org/forrest/templates/1.0"
name="siteinfo-last-published-howto">
<description>
siteinfo-last-published-howto will output the last published date of the site with the help of jscript.
</description>
- <usage>]]><![CDATA[<![CDATA[<forrest:contract name="siteinfo-last-published-howto"/>]]>]]><![CDATA[</usage>
+ <usage>]]>
+<![CDATA[
+<![CDATA[<forrest:contract name="siteinfo-last-published-howto"/>]]>
+]]>
+<![CDATA[</usage>
<forrest:template
xmlns:i18n="http://apache.org/cocoon/i18n/2.1"
xmlns:forrest="http://apache.org/forrest/templates/1.0"
@@ -281,45 +260,40 @@
</xsl:stylesheet>
</forrest:template>
</forrest:contract>]]>
- </source>
+</source>
</section>
<section id="structurerContract">
<title>Activating the contract</title>
- <p>
- To see whether the new contract works we need to add it to our
- structurer. The contract usage contains the contract-tag <code>
-<![CDATA[<forrest:contract name="siteinfo-last-published-howto"/>]]>
- </code> Please see <a href="site:dispatcher/structurer">Getting started
- with the "structurer"</a> for more details.
- </p>
- <note>
- Next to write are parameter-contracts with advanced features of the
- dispatcher.
- </note>
+ <p>To see whether the new contract works we need to add it to our
+ structurer. The contract usage contains the contract-tag
+ <code>
+ <![CDATA[<forrest:contract name="siteinfo-last-published-howto"/>]]>
+</code>Please see
+ <a href="site:dispatcher/structurer">Getting started with the
+ "structurer"</a>for more details.</p>
+ <note>Next to write are parameter-contracts with advanced features of the
+ dispatcher.</note>
</section>
<section id="pluginContracts">
<title>Plugin Supplied Contracts</title>
- <p>
- It is possible for plugins to provide contracts for use in the
- dispatcher. For details on how this is done see the
- <a href="http://forrest.apache.org/docs/howto/howto-buildPlugin.html#Dispatcher">Plugin
- HowTo</a>.
- </p>
+ <p>It is possible for plugins to provide contracts for use in the
+ dispatcher. For details on how this is done see the
+ <a href="http://forrest.apache.org/docs/howto/howto-buildPlugin.html#Dispatcher">
+ Plugin HowTo</a>.</p>
</section>
</steps>
<extension title="Further Reading">
- <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>
+ <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="site:dispatcher/structurer">Getting started with the "structurer"</a></li>
+ <li>
+ <a href="site:dispatcher/structurer">Getting started with the
+ "structurer"</a>
+ </li>
</ul>
</extension>
<feedback title="Feedback">
- <p>
- Please provide feedback about this document via the
- <a href="ext:mail-lists">mailing lists</a>.
- </p>
+ <p>Please provide feedback about this document via the
+ <a href="ext:mail-lists">mailing lists</a>.</p>
</feedback>
</howto>
Modified: forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/documentation/content/xdocs/how/howto-dispatcher-quickstart.xml
URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/documentation/content/xdocs/how/howto-dispatcher-quickstart.xml?rev=886147&r1=886146&r2=886147&view=diff
==============================================================================
--- forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/documentation/content/xdocs/how/howto-dispatcher-quickstart.xml (original)
+++ forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/documentation/content/xdocs/how/howto-dispatcher-quickstart.xml Wed Dec 2 13:58:18 2009
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
@@ -15,7 +15,8 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<!DOCTYPE howto PUBLIC "-//APACHE//DTD How-to V2.0//EN" "http://forrest.apache.org/dtd/howto-v20.dtd">
+<!DOCTYPE howto PUBLIC "-//APACHE//DTD How-to V2.0//EN"
+"http://forrest.apache.org/dtd/howto-v20.dtd">
<howto>
<header>
<title>Dispatcher quickstart</title>
@@ -23,234 +24,183 @@
<last-modified-content-date date="2007-04-09" />
</header>
<audience title="Intended Audience">
- <p>
- People who are helping to develop the Dispatcher.
- </p>
- <warning>
- 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="ext:forrest/status-themes">Status of
- Themes: Skins and Dispatcher</a>.
- </warning>
+ <p>People who are helping to develop the Dispatcher.</p>
+ <warning>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="ext:forrest/status-themes">Status of Themes: Skins and
+ Dispatcher</a>.</warning>
</audience>
<purpose title="Purpose">
- <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>
+ <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>
</purpose>
<prerequisites title="Prerequisites">
<ul>
- <li>Using Forrest trunk of SVN (i.e. head of development).
- </li>
+ <li>Using Forrest trunk of SVN (i.e. head of development).</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>
+ <li>You have an existing forrest site and want to try the new Dispatcher.
+ Otherwise create a 'forrest seed-sample' site.</li>
</ul>
</prerequisites>
<steps title="Steps">
- <note>
- When developing with the dispatcher we assume you are using 'forrest run'
- and the following workflow "change files -> refresh browser".
- <br/>
- Installing a mozilla browser and the
- <a href="ext:forrestbar">Forrestbar</a> helps a lot with developing, but
- is not necessary.
- </note>
+ <note>When developing with the dispatcher we assume you are using 'forrest
+ run' and the following workflow "change files -> refresh browser".
+ <br />Installing a mozilla browser and the
+ <a href="ext:forrestbar">Forrestbar</a>helps a lot with developing, but is
+ not necessary.</note>
<section id="patch">
<title>Get ready</title>
<ul>
<li>Do 'svn update' on forrest/trunk</li>
- <li>Do the 'cd main; build clean; build' (necessary because the Dispatcher is changing rapidly and uses some Java)</li>
+ <li>Do the 'cd main; build clean; build' (necessary because the
+ Dispatcher is changing rapidly and uses some Java)</li>
</ul>
</section>
<section id="enable">
<title>Dispatcher-enable the existing site</title>
<ul>
<li>Add the new plugins to forrest.properties ...
- ,org.apache.forrest.plugin.internal.dispatcher,org.apache.forrest.themes.core
- </li>
+ ,org.apache.forrest.plugin.internal.dispatcher,org.apache.forrest.themes.core</li>
<li>localhost:8888/index.html ... fantastic. See the pelt view.</li>
</ul>
</section>
<section id="another-theme">
<title>Use another theme</title>
<ul>
- <li>Add <![CDATA[<property name="dispatcher.theme" value="pelt"/>]]>
- to your forrest.properties.xml</li>
+ <li>Add
+<![CDATA[<property name="dispatcher.theme" value="pelt"/>]]>
+to your forrest.properties.xml</li>
<li>Re-start 'forrest run'</li>
<li>localhost:8888/index.html ... See the new view.</li>
</ul>
</section>
<section id="our-structurer">
<title>Create our own structurer by copy-and-customise</title>
- <p>
- Copy the default structurer for the pelt theme and make local changes.
- </p>
- <note>
- 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.
- </note>
- <note>
- We use <code>${themer.project.dir}</code> for
- PROJECT_HOME/src/documentation/resources/themes (create the new
- directory first). You can change this location by adding
+ <p>Copy the default structurer for the pelt theme and make local
+ changes.</p>
+ <note>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.</note>
+ <note>We use
+ <code>${themer.project.dir}</code>for
+ PROJECT_HOME/src/documentation/resources/themes (create the new directory
+ first). You can change this location by adding
<![CDATA[<match pattern="themer.project.dir">
<location src="{properties:resources}/themes" />
</match> ]]>
- to your locationmap and point to another directory.
- </note>
- <note>
- By default THEMER_PLUGIN can be located at FORREST_HOME/whiteboard/plugins/org.apache.forrest.themes.core
- </note>
+to your locationmap and point to another directory.</note>
+ <note>By default THEMER_PLUGIN can be located at
+ FORREST_HOME/whiteboard/plugins/org.apache.forrest.themes.core</note>
<ul>
<li>Copy THEMER_PLUGIN/themes/pelt.fv into your project at
- ${themer.project.dir}/pelt.fv
- </li>
- <li>Copy THEMER_PLUGIN/themes/pelt/panels/pelt-html.header.panel.xml into your
- project at ${themer.project.dir}/pelt/panels/pelt-html.header.panel.xml
- </li>
+ ${themer.project.dir}/pelt.fv</li>
+ <li>Copy THEMER_PLUGIN/themes/pelt/panels/pelt-html.header.panel.xml
+ into your project at
+ ${themer.project.dir}/pelt/panels/pelt-html.header.panel.xml</li>
<li>Re-start 'forrest run'</li>
- <li>localhost:8888/index.html ... See the same view, now structured
- by us.
- </li>
- <li>In localhost:8888/resolve.structurer.index you can find a copy of your current structurer. Any change made to your pelt.fv file will be added here.
- </li>
+ <li>localhost:8888/index.html ... See the same view, now structured by
+ us.</li>
+ <li>In localhost:8888/resolve.structurer.index you can find a copy of
+ your current structurer. Any change made to your pelt.fv file will be
+ added here.</li>
</ul>
- <p>
- From here on there is no need to re-start 'forrest run'. Just edit the
- structurer and see the effect.
- </p>
- <warning>
- Right now the dispatcher is heavely cached, so maybe in the current version it should be
- necessary to reboot the system in order to see the changes. To avoid temporally this problem,
- turn off the cache system changing:
-
+ <p>From here on there is no need to re-start 'forrest run'. Just edit the
+ structurer and see the effect.</p>
+ <warning>Right now the dispatcher is heavely cached, so maybe in the
+ current version it should be necessary to reboot the system in order to
+ see the changes. To avoid temporally this problem, turn off the cache
+ system changing:
<![CDATA[
-<forrest:views xmlns:forrest="http://apache.org/forrest/templates/1.0"
- xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
- jx:cache-key="#{$cocoon/parameters/getRequest}"
- jx:cache-validity="${Packages.org.apache.excalibur.source.impl.validity.NOPValidity()}">
+<forrest:structurer xmlns:forrest="http://apache.org/forrest/templates/1.0"
+ xmlns:jx="http://apache.org/cocoon/templates/jx/1.0"
+ jx:cache-key="#{$cocoon/parameters/getRequest}"
+ jx:cache-validity="${Packages.org.apache.excalibur.source.impl.validity.NOPValidity()}">
]]>
-
- to
-
+to
<![CDATA[
-<forrest:views xmlns:forrest="http://apache.org/forrest/templates/1.0"
- xmlns:jx="http://apache.org/cocoon/templates/jx/1.0">
+<forrest:structurer xmlns:forrest="http://apache.org/forrest/templates/1.0"
+ xmlns:jx="http://apache.org/cocoon/templates/jx/1.0">
]]>
-
- in your THEMER_PLUGIN/themes/pelt.fv file.
- </warning>
+in your THEMER_PLUGIN/themes/pelt.fv file.</warning>
</section>
<section id="remove-default-contract">
<title>Remove a default contract</title>
<ul>
- <li>Remove the top breadcrumb trail. Edit your pelt-html.header.panel.xml, find the
- "branding-breadcrumbs" contract and comment it out.
- </li>
+ <li>Remove the top breadcrumb trail. Edit your
+ pelt-html.header.panel.xml, find the "branding-breadcrumbs" contract
+ and comment it out.</li>
</ul>
</section>
<section id="add-default-contract">
<title>Add a default contract</title>
- <p>
- Forrest provides many default contracts. If you are using the Forrestbar
- then choose "dispatcher-devs => ls.contracts". Otherwise visit
- localhost:8888/ls.contracts.html
- </p>
+ <p>Forrest provides many default contracts. If you are using the
+ Forrestbar then choose "dispatcher-devs => ls.contracts". Otherwise
+ visit localhost:8888/ls.contracts.html</p>
<ul>
- <li>
- See the usage detail for your chosen contract via the above mentioned list.
- e.g. "siteinfo-current-time"
- </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.
+ <li>See the usage detail for your chosen contract via the above
+ mentioned list. e.g. "siteinfo-current-time"</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.
<source>
-<![CDATA[ ...
+ <![CDATA[ ...
<forrest:hook name="footer">
<forrest:contract name="siteinfo-current-time"/>
...
]]>
- </source></li>
+</source></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 themes.core
- plugin).
- </p>
- <p>
- You will find some commonly used contracts in place but commented out in
- both the common and the pelt structurer files. Feel free to uncomment
- them to activate them, move them around into other hooks or create new
- hooks for them.
- </p>
- <note>
- Work is currently under way for implementing Panels (was tiles).
- Currently we now have a 'panels' sub-dir for each 'theme'. This panels
- sub-dir currently contains a main html panel
- '%themename%-html.panel.xml' and a CSS panel
- '%themename%-css.panel.xml'. So you can change a collection of HTML and
- CSS outputs from these two XML files.
- </note>
+ <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 themes.core
+ plugin).</p>
+ <p>You will find some commonly used contracts in place but commented out
+ in both the common and the pelt structurer files. Feel free to uncomment
+ them to activate them, move them around into other hooks or create new
+ hooks for them.</p>
+ <note>Work is currently under way for implementing Panels (was tiles).
+ Currently we now have a 'panels' sub-dir for each 'theme'. This panels
+ sub-dir currently contains a main html panel '%themename%-html.panel.xml'
+ and a CSS panel '%themename%-css.panel.xml'. So you can change a
+ collection of HTML and CSS outputs from these two XML files.</note>
</section>
<section id="add-project-contract">
<title>Add a new project contract</title>
- <warning>
- 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.
- </warning>
- <p>
- Project-based contracts are defined in theme-specific and
- output-format-specific directory structure, e.g.
- ${themer.project.dir}/THEME_NAME/OUTPUT_FORMAT/
- </p>
- <p>
- Project-based contracts common to all themes go in
- ${themer.project.dir}/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>
+ <warning>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.</warning>
+ <p>Project-based contracts are defined in theme-specific and
+ output-format-specific directory structure, e.g.
+ ${themer.project.dir}/THEME_NAME/OUTPUT_FORMAT/</p>
+ <p>Project-based contracts common to all themes go in
+ ${themer.project.dir}/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/themes/common/html/siteinfo-current-time.ft
- into your project at
- ${themer.project.dir}/common/html/siteinfo-doodad.ft
- (create the new directory 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>
+ <li>Copy THEMER_PLUGIN/themes/common/html/siteinfo-current-time.ft into
+ your project at ${themer.project.dir}/common/html/siteinfo-doodad.ft
+ (create the new directory 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 "dispatcher-devs => ls.contracts.project". Otherwise visit
- localhost:8888/ls.contracts.project.html
- </p>
+ <p>See a list of your project-based contracts and their usage notes via
+ Forrestbar "dispatcher-devs => ls.contracts.project". Otherwise visit
+ localhost:8888/ls.contracts.project.html</p>
</section>
-<!--
+ <!--
<section id="newSection">
<title>newSection</title>
<ul>
@@ -258,7 +208,7 @@
</ul>
</section>
-->
-<!--
+ <!--
<section id="notes">
<title>Notes</title>
<source><![CDATA[
@@ -268,56 +218,48 @@
-->
<section id="manage">
<title>Decide how to manage your contracts</title>
- <p>
- Depending on the use of a new contract you can place it in different
- locations. General use contracts should be placed in the THEME_PLUGIN
- directory. Contracts only suitable for one theme should be stored in
- the specific theme directory, that is,
- <code>THEMER_PLUGIN/resources/themes/THEME_NAME/OUTPUT_FORMAT</code>.
+ <p>Depending on the use of a new contract you can place it in different
+ locations. General use contracts should be placed in the THEME_PLUGIN
+ directory. Contracts only suitable for one theme should be stored in the
+ specific theme directory, that is,
+ <code>THEMER_PLUGIN/resources/themes/THEME_NAME/OUTPUT_FORMAT</code>.
Otherwise, common contracts should be place in the common folder:
- <code>THEMER_PLUGIN/resources/themes/common/OUTPUT_FORMAT</code>.
- </p>
- <p>
- If the contract is specific to a particular purpose, that is a
- particular plugin, it should be included with the plugin itself.
- For example, the "employment history" contract is specific to the
- resume plugin so it should be placed there. The correct location for
- contrats with a particular purpose is
- <code>PLUGIN_NAME/resources/themes/THEME_NAME/OUTPUT_FORMAT</code>.
- </p>
- <p>
- There is another category for contracts, those that are both specific
- to a particular purpose and defined for a specific site. For example,
- a "process order" contract that integrates with an in-house order
- management system. In this case, another location is more suitable.
+ <code>THEMER_PLUGIN/resources/themes/common/OUTPUT_FORMAT</code>.</p>
+ <p>If the contract is specific to a particular purpose, that is a
+ particular plugin, it should be included with the plugin itself. For
+ example, the "employment history" contract is specific to the resume
+ plugin so it should be placed there. The correct location for contrats
+ with a particular purpose is
+ <code>PLUGIN_NAME/resources/themes/THEME_NAME/OUTPUT_FORMAT</code>.</p>
+ <p>There is another category for contracts, those that are both specific
+ to a particular purpose and defined for a specific site. For example, a
+ "process order" contract that integrates with an in-house order
+ management system. In this case, another location is more suitable.
However, before proceed think again about the uniqueness of the contract.
- Most contracts can be generalised to be useful in more than one
- environment and so one of the above locations can be used. If you are
+ Most contracts can be generalised to be useful in more than one
+ environment and so one of the above locations can be used. If you are
still sure that this is a site-specific contract then place it in
- <code>PROJECT_HOME/src/documentation/resources/themes/common</code>.
- </p>
- <p>
- If you develop a new contract, please provide a patch via our
- <a href="ext:issues">issue tracker</a> so that we
- can include it in future releases of Forrest.
- </p>
+ <code>PROJECT_HOME/src/documentation/resources/themes/common</code>.</p>
+ <p>If you develop a new contract, please provide a patch via our
+ <a href="site:issues">issue tracker</a>so that we can include it in
+ future releases of Forrest.</p>
</section>
</steps>
<extension title="Further Reading">
- <p>
- Congratulations you are now able to work with the Dispatcher. From here we
- recommend to read the following How-Tos:
- </p>
+ <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="site:dispatcher/structurer">How to use the structurer</a></li>
- <li><a href="site:dispatcher/contracts">Create your own contract
- implementation</a></li>
+ <li>
+ <a href="site:dispatcher/structurer">How to use the structurer</a>
+ </li>
+ <li>
+ <a href="site:dispatcher/contracts">Create your own contract
+ implementation</a>
+ </li>
</ul>
</extension>
<feedback title="Feedback">
- <p>
- Please provide feedback about this document via the
- <a href="ext:mail-lists">mailing lists</a>.
- </p>
+ <p>Please provide feedback about this document via the
+ <a href="ext:mail-lists">mailing lists</a>.</p>
</feedback>
</howto>
Modified: forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/documentation/content/xdocs/how/howto-dispatcher-structurer.xml
URL: http://svn.apache.org/viewvc/forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/documentation/content/xdocs/how/howto-dispatcher-structurer.xml?rev=886147&r1=886146&r2=886147&view=diff
==============================================================================
--- forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/documentation/content/xdocs/how/howto-dispatcher-structurer.xml (original)
+++ forrest/trunk/whiteboard/plugins/org.apache.forrest.plugin.internal.dispatcher/src/documentation/content/xdocs/how/howto-dispatcher-structurer.xml Wed Dec 2 13:58:18 2009
@@ -1,4 +1,4 @@
-<?xml version="1.0" encoding="UTF-8"?>
+<?xml version="1.0" encoding="utf-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
@@ -15,109 +15,98 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-<!DOCTYPE howto PUBLIC "-//APACHE//DTD How-to V2.0//EN" "http://forrest.apache.org/dtd/howto-v20.dtd">
+<!DOCTYPE howto PUBLIC "-//APACHE//DTD How-to V2.0//EN"
+"http://forrest.apache.org/dtd/howto-v20.dtd">
<howto>
<header>
<title>How to use the structurer</title>
- <abstract>
- This How-To describes the usage of the structurer config domain specific
- language to create beautiful websites in no time.
- </abstract>
- <last-modified-content-date date="2005-07-17"/>
+ <abstract>This How-To describes the usage of the structurer config domain
+ specific language to create beautiful websites in no time.</abstract>
+ <last-modified-content-date date="2005-07-17" />
</header>
<audience title="Intended Audience">
- <warning>
- 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="ext:forrest/status-themes">Status of Themes: Skins and
- Dispatcher</a>.
- </warning>
- <p>
- This part of the the dispatcher is called the structurer and is dedicated
- to webdesigner and user with some knowledge of css.
- </p>
+ <warning>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="ext:forrest/status-themes">Status of Themes: Skins and
+ Dispatcher</a>.</warning>
+ <p>This part of the the dispatcher is called the structurer and is
+ dedicated to webdesigner and user with some knowledge of css.</p>
</audience>
<purpose title="Purpose">
- <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>
+ <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>
</purpose>
<prerequisites title="Prerequisites">
<ul>
- <li>Installing a mozilla browser and the forrestbar helps a lot in
- developing.</li>
+ <li>Installing a mozilla browser and the forrestbar helps a lot in
+ developing.</li>
</ul>
</prerequisites>
<steps title="Steps">
- <note>
- When developing with the dispatcher we assume you are using 'forrest run'
- and the following workflow "change files -> refresh browser"
- <br/>
- Installing a mozilla browser and the forrestbar helps a lot in developing.
- Many instructions assumes that you have the forrestbar installed.
- </note>
+ <note>When developing with the dispatcher we assume you are using 'forrest
+ run' and the following workflow "change files -> refresh browser"
+ <br />Installing a mozilla browser and the forrestbar helps a lot in
+ developing. Many instructions assumes that you have the forrestbar
+ installed.</note>
<section id="emptystructurer">
<title>Empty structurer file</title>
<source>
-<![CDATA[<forrest:views
+ <![CDATA[<forrest:structurer
xmlns:forrest="http://apache.org/forrest/templates/1.0"
xmlns:jx="http://apache.org/cocoon/templates/jx/1.0">
- <forrest:view type="html">
- </forrest:view>
-</forrest:views>]]>
- </source>
- <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>
+ <forrest:structure type="html">
+ </forrest:structure>
+</forrest:structurer>]]>
+</source>
+ <p>
+ <strong>The structurer</strong>is designed to be open for any format that
+ can use
+ <strong>forrest:structure</strong>as configuration file. The only format
+ we implemented is html for now. This is as well true for the delivered
+ contracts.</p>
</section>
<section id="firststructurer">
<title>Creating your first structurer</title>
- <warning>
- 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.
- </warning>
- <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 <code>index.fv</code> and save it
- in the directory <code>{properties:resources}/structurer/url</code>
- (create it if needed). This will make <strong>only</strong> the
- index.html page look different from the rest of the project.
- </p>
- <note label="RecursiveDirectoryTraversalAction">
- You can set a view for an individual file, a directory, or the whole
- site. To address multiple files in a directory call your
- <code>.fv</code> file <code>common.fv</code>. If Forrest doesn't find a
- <code>.fv</code> 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. <code>common.fv</code> files
- affect all subdirectories unless they are overidden by another
- <code>common.fv</code> or a file-specific <code>foo.fv</code> file.
- </note>
- <p>
- Remember: pointing your browser to
- <code>http://localhost:8888/ls.contracts.html</code> 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 <code>index.fv</code>
- should look like:
- </p>
+ <warning>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.</warning>
+ <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
+ <code>index.fv</code>and save it in the directory
+ <code>{properties:resources}/structurer/url</code>(create it if needed).
+ This will make
+ <strong>only</strong>the index.html page look different from the rest of
+ the project.</p>
+ <note label="RecursiveDirectoryTraversalAction">You can set a view for an
+ individual file, a directory, or the whole site. To address multiple
+ files in a directory call your
+ <code>.fv</code>file
+ <code>common.fv</code>. If Forrest doesn't find a
+ <code>.fv</code>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.
+ <code>common.fv</code>files affect all subdirectories unless they are
+ overidden by another
+ <code>common.fv</code>or a file-specific
+ <code>foo.fv</code>file.</note>
+ <p>Remember: pointing your browser to
+ <code>http://localhost:8888/ls.contracts.html</code>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
+ <code>index.fv</code>should look like:</p>
<source>
-<![CDATA[<forrest:views
+ <![CDATA[<forrest:structurer
xmlns:forrest="http://apache.org/forrest/templates/1.0"
xmlns:jx="http://apache.org/cocoon/templates/jx/1.0">
- <forrest:view type="html">
+ <forrest:structure type="html">
<forrest:contract name="content-main">
<forrest:properties contract="content-main">
<forrest:property name="content-main" nugget="get.body">
@@ -129,37 +118,33 @@
</forrest:property>
</forrest:properties>
</forrest:contract>
- </forrest:view>
-</forrest:views>]]>
- </source>
- <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: <code>
-<![CDATA[<jx:import uri="cocoon://#{$cocoon/parameters/getRequest}.body.xml"/>]]>
- </code>
- </p>
- <p>
- Contracts can offer some property configuration of the outcome of the
- transformation. In our case <code>
+ </forrest:structure>
+</forrest:structurer>]]>
+</source>
+ <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:
+ <code>
+ <![CDATA[<jx:import uri="cocoon://#{$cocoon/parameters/getRequest}.body.xml"/>]]>
+</code></p>
+ <p>Contracts can offer some property configuration of the outcome of the
+ transformation. In our case
+ <code>
<![CDATA[<forrest:property name="content-main-conf">
<headings type="underlined"/>
</forrest:property>]]>
- . </code>
- </p>
- <p>
- Lets try our new structurer by pointing to
- <code>http://localhost:8888/index.html</code>. 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>
+.</code></p>
+ <p>Lets try our new structurer by pointing to
+ <code>http://localhost:8888/index.html</code>. 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>
<source>
-<![CDATA[<forrest:views
+ <![CDATA[<forrest:structurer
xmlns:forrest="http://apache.org/forrest/templates/1.0"
xmlns:jx="http://apache.org/cocoon/templates/jx/1.0">
- <forrest:view type="html">
+ <forrest:structure type="html">
<forrest:contract name="nav-main">
<forrest:properties contract="nav-main">
<forrest:property name="nav-main" nugget="get.navigation">
@@ -179,56 +164,43 @@
</forrest:property>
</forrest:properties>
</forrest:contract>
- </forrest:view>
-</forrest:views>]]>
- </source>
- <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>
+ </forrest:structure>
+</forrest:structurer>]]>
+</source>
+ <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>
</section>
<section id="hookstructurer">
<title>Hooks in the structurer</title>
- <p>
- We will use now the first time a <code>
-<![CDATA[<forrest:hook name="layoutId"/>]]>
- </code>. 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>
- <source>/* menu */
-#leftbar {
- width: 25%;
- float: left;
- background: #eae8e3;
- border: thin dashed #565248;
-}
- </source>
- <p>
- With this information we know to use <code>
-<![CDATA[<forrest:hook name="leftbar"/>]]>
- </code> 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>
+ <p>We will use now the first time a
+ <code>
+ <![CDATA[<forrest:hook name="layoutId"/>]]>
+</code>. 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>
+ <source>/* menu */ #leftbar { width: 25%; float: left; background:
+ #eae8e3; border: thin dashed #565248; }</source>
+ <p>With this information we know to use
+ <code>
+ <![CDATA[<forrest:hook name="leftbar"/>]]>
+</code>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>
<source>
-<![CDATA[<forrest:hook name="leftbar">
+ <![CDATA[<forrest:hook name="leftbar">
<!-- Include contract here -->
</forrest:hook>]]>
- </source>
- <p>
- Our structurer will then look like:
- </p>
+</source>
+ <p>Our structurer will then look like:</p>
<source>
-<![CDATA[<forrest:views
+ <![CDATA[<forrest:structurer
xmlns:forrest="http://apache.org/forrest/templates/1.0"
xmlns:jx="http://apache.org/cocoon/templates/jx/1.0">
- <forrest:view type="html">
+ <forrest:structure type="html">
<forrest:hook name="leftbar">
<forrest:contract name="nav-section">
<forrest:properties contract="nav-section">
@@ -250,21 +222,20 @@
</forrest:property>
</forrest:properties>
</forrest:contract>
- </forrest:view>
-</forrest:views>]]>
- </source>
+ </forrest:structure>
+</forrest:structurer>]]>
+</source>
</section>
<section id="cssstructurer">
<title>CSS in the structurer</title>
- <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 <code>
-<![CDATA[<forrest:css />]]>
- </code>.
- </p>
-<!-- <p>We will now create a file in <code><![CDATA[<!-#-
+ <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
+ <code>
+ <![CDATA[<forrest:css />]]>
+</code>.</p>
+ <!-- <p>We will now create a file in <code><![CDATA[<!-#-
{1} name
{2} extension (note we assume e.g. PATH/css/{1}.css)
-#->
@@ -272,15 +243,13 @@
we will save a file called howTo.css in v2/src/documentation/resources/themes/common/css/howTo.css containing only
the following css:
</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>
+ <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>
<source>
-<![CDATA[<forrest:css >
+ <![CDATA[<forrest:css >
/* Extra css */
/* menu */
#leftbar {
@@ -290,25 +259,23 @@
border: thin solid #000000;
}
</forrest:css>]]>
- </source>
-<!--<fixme author="thorsten">from here</fixme>-->
- <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>
+</source>
+ <!--<fixme author="thorsten">from here</fixme>-->
+ <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>
<note>
- <code>
-<![CDATA[<forrest:css />]]>
- </code> needs to be the direct child of <code>
-<![CDATA[<forrest:view type="html">]]>
- </code>
- </note>
+ <code>
+ <![CDATA[<forrest:css />]]>
+</code>needs to be the direct child of
+ <code>
+ <![CDATA[<forrest:structure type="html">]]>
+</code></note>
<source>
-<![CDATA[<forrest:views
+ <![CDATA[<forrest:structurer
xmlns:forrest="http://apache.org/forrest/templates/1.0"
xmlns:jx="http://apache.org/cocoon/templates/jx/1.0">
- <forrest:view type="html">
+ <forrest:structure type="html">
<forrest:css >
/* Extra css */
/* menu */
@@ -340,31 +307,23 @@
</forrest:property>
</forrest:properties>
</forrest:contract>
- </forrest:view>
-</forrest:views>]]>
- </source>
- <p>
- As a second example, let us change as well the content-main by adding
- another hook <code>
-<![CDATA[<forrest:hook name="content"/>]]>
- </code> We need to add the new layout container to our inline css:
- </p>
+ </forrest:structure>
+</forrest:structurer>]]>
+</source>
+ <p>As a second example, let us change as well the content-main by adding
+ another hook
+ <code>
+ <![CDATA[<forrest:hook name="content"/>]]>
+</code>We need to add the new layout container to our inline css:</p>
+ <source>/* The actual content */ #content { margin-left: 25%; padding: 0
+ 20px 0 20px; background: #B9D3EE; }</source>
+ <p>Then we have to add the 'content-main' contract to the 'content' hook.
+ The resulting structurer looks like:</p>
<source>
-/* The actual content */
-#content {
- margin-left: 25%;
- padding: 0 20px 0 20px;
- background: #B9D3EE;
-}</source>
- <p>
- Then we have to add the 'content-main' contract to the 'content' hook.
- The resulting structurer looks like:
- </p>
- <source>
-<![CDATA[<forrest:views
+ <![CDATA[<forrest:structurer
xmlns:forrest="http://apache.org/forrest/templates/1.0"
xmlns:jx="http://apache.org/cocoon/templates/jx/1.0">
- <forrest:view type="html">
+ <forrest:structure type="html">
<forrest:css >
/* Extra css */
/* menu */
@@ -404,98 +363,74 @@
</forrest:properties>
</forrest:contract>
</forrest:hook>
- </forrest:view>
-</forrest:views>]]>
- </source>
- <p>
- We are now able to place contracts into the layout container and add
- custom css to the structurer.
- </p>
+ </forrest:structure>
+</forrest:structurer>]]>
+</source>
+ <p>We are now able to place contracts into the layout container and add
+ custom css to the structurer.</p>
</section>
<section>
<title>Linking to an external css file</title>
- <note>
- This will change for the next version of views (v3) where we use a
- generic contract instead of the standalone element (forrest:css).
- </note>
- <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>
- <source>
- $projectHome\src\documentation\resources\themes\common\css</source>
- <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>
+ <note>This will change for the next version of views (v3) where we use a
+ generic contract instead of the standalone element (forrest:css).</note>
+ <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>
+ <source>
+ $projectHome\src\documentation\resources\themes\common\css</source>
+ <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>
<source>$projectHome\src\documentation\content\xdocs</source>
- <p>
- or if you want to override it for the whole project in:
- </p>
+ <p>or if you want to override it for the whole project in:</p>
<source>$projectHome\src\documentation\resources\themes\</source>
- <p>
- Add the following element to the *.fv file:
- </p>
+ <p>Add the following element to the *.fv file:</p>
<source>
-<![CDATA[<forrest:css url="styles.css" media="screen" theme="pelt"/>]]>
- </source>
+ <![CDATA[<forrest:css url="styles.css" media="screen" theme="pelt"/>]]>
+</source>
<p>
- <strong>Important!</strong> This must appear straight after the "view
- type" element (as first child):
- </p>
+ <strong>Important!</strong>This must appear straight after the "view
+ type" element (as first child):</p>
<source>
-<![CDATA[<forrest:view type="html">]]>
- </source>
+ <![CDATA[<forrest:structure type="html">]]>
+</source>
<source>
-<![CDATA[<forrest:css url="mystyles.css" media="screen" theme="pelt"/>]]>
- </source>
- <p>
- The attributes are:
- </p>
+ <![CDATA[<forrest:css url="mystyles.css" media="screen" theme="pelt"/>]]>
+</source>
+ <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>
+ <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>
- <fixme author="thorsten">
- 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&r=1&w=2">http://marc.theaimsgroup.com/?t=113471292700001&r=1&w=2</a>
- </fixme>
+ <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>
+ <fixme author="thorsten">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&r=1&w=2">
+ http://marc.theaimsgroup.com/?t=113471292700001&r=1&w=2</a></fixme>
</section>
</steps>
<extension title="Further Reading">
- <p>
- Congratulations you are now able to work with the structurer. From here we
- recommend to read the following How-Tos:
- </p>
+ <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="site:dispatcher/contracts">Create your own contract
- implementation</a></li>
+ <li>
+ <a href="site:dispatcher/contracts">Create your own contract
+ implementation</a>
+ </li>
</ul>
</extension>
<feedback title="Feedback">
- <p>
- Please provide feedback about this document via the
- <a href="ext:mail-lists">mailing lists</a>.
- </p>
+ <p>Please provide feedback about this document via the
+ <a href="ext:mail-lists">mailing lists</a>.</p>
</feedback>
</howto>
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.