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/06/23 07:36:34 UTC
svn commit: r193078 [38/65] - in /forrest/site: ./ docs_0_60/
docs_0_60/howto/ docs_0_60/howto/bugzilla-patch/
docs_0_60/howto/bugzilla-patch/my-images/ docs_0_60/howto/multi/
docs_0_60/images/ docs_0_70/ docs_0_70/howto/ docs_0_70/howto/cvs-ssh/
docs_...
Added: forrest/site/docs_0_80/howto/forrest.xmap.html
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_80/howto/forrest.xmap.html?rev=193078&view=auto
==============================================================================
--- forrest/site/docs_0_80/howto/forrest.xmap.html (added)
+++ forrest/site/docs_0_80/howto/forrest.xmap.html Wed Jun 22 22:36:19 2005
@@ -0,0 +1,525 @@
+<!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">
+<meta name="generator" content="">
+<title>Annotated forrest.xmap (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">
+<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>
+<div class="header">
+<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>
+<div class="projectlogo">
+<a href="http://forrest.apache.org/"><img class="logoImage" alt="Forrest" src="../../images/project-logo.gif" title="Apache Forrest"></a>
+</div>
+<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 attr="value" name="Search" value="Search" type="submit">
+</form>
+</div>
+<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>
+</div>
+</div>
+<div id="main">
+<div id="publishedStrip">
+<div id="level2tabs"></div>
+<script type="text/javascript"><!--
+document.write("<text>Last Published:</text> " + document.lastModified);
+// --></script>
+</div>
+<div class="breadtrail">
+
+
+ </div>
+<div id="menu">
+<div onclick="SwitchMenu('menu_1.1', '../../skin/')" id="menu_1.1Title" class="menutitle">About</div>
+<div id="menu_1.1" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../index.html">Index</a>
+</div>
+<div class="menuitem">
+<a href="../../license.html">License</a>
+</div>
+<div class="menuitem">
+<a href="http://forrest.apache.org/mirrors.cgi">Download</a>
+</div>
+<div class="menuitem">
+<a href="../../who.html">Who we are</a>
+</div>
+<div class="menuitem">
+<a href="../../events.html">Events</a>
+</div>
+<div class="menuitem">
+<a href="../../flyer.html">Flyer</a>
+</div>
+<div class="menuitem">
+<a href="../../live-sites.html">Example sites</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.2', '../../skin/')" id="menu_1.2Title" class="menutitle">Getting Involved</div>
+<div id="menu_1.2" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../contrib.html">Contributing</a>
+</div>
+<div class="menuitem">
+<a href="http://svn.apache.org/viewcvs.cgi/forrest/trunk/">Browse SVN</a>
+</div>
+<div class="menuitem">
+<a href="../../mail-lists.html">Mail lists</a>
+</div>
+<div class="menuitem">
+<a href="http://issues.apache.org/jira/secure/BrowseProject.jspa?id=12310000">Bugs and Issues</a>
+</div>
+<div class="menuitem">
+<a href="../../forrest-issues.html">Release Issues</a>
+</div>
+<div class="menuitem">
+<a href="http://vmgump.apache.org/gump/public/forrest/">Gump Integration</a>
+</div>
+<div class="menuitem">
+<a href="../../guidelines.html">Project guidelines</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.3', '../../skin/')" id="menu_1.3Title" class="menutitle">Proposals</div>
+<div id="menu_1.3" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../proposal-asf-forrestbot.html">ASF Forrestbot</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.4', '../../skin/')" id="menu_1.4Title" class="menutitle">Related projects</div>
+<div id="menu_1.4" class="menuitemgroup">
+<div class="menuitem">
+<a href="http://gump.apache.org/">Apache Gump</a>
+</div>
+<div class="menuitem">
+<a href="http://cocoon.apache.org/">Apache Cocoon</a>
+</div>
+<div class="menuitem">
+<a href="http://lenya.apache.org/">Apache Lenya</a>
+</div>
+<div class="menuitem">
+<a href="http://xml.apache.org/">Apache XML</a>
+</div>
+</div>
+<div onclick="SwitchMenu('menu_1.5', '../../skin/')" id="menu_1.5Title" class="menutitle">Tools</div>
+<div id="menu_1.5" class="menuitemgroup">
+<div class="menuitem">
+<a href="../../tools/index.html">Index</a>
+</div>
+<div class="menuitem">
+<a href="../../tools/forrestbar.html">ForrestBar</a>
+</div>
+<div class="menuitem">
+<a href="../../tools/forrestbot.html">Forrestbot</a>
+</div>
+<div class="menuitem">
+<a href="../../tools/forrestbot-web-interface.html">Forrestbot Webapp</a>
+</div>
+<div class="menuitem">
+<a href="../../tools/xxe.html">XXE-Editor</a>
+</div>
+</div>
+<div id="credit">
+<hr>
+ This is documentation for development version v0.8
+ (<a href="/versions/index.html">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>
+<div id="credit2">
+<a href="http://apachecon.com/"><img border="0" title="ApacheCon Europe 2005" alt="ApacheCon Europe 2005 - logo" src="http://apache.org/images/ac2005eu_135x50.gif" style="width: 135px;height: 50px;"></a>
+</div>
+</div>
+<div id="content">
+<div title="Portable Document Format" class="pdflink">
+<a class="dida" href="forrest.xmap.pdf"><img alt="PDF -icon" src="../../skin/images/pdfdoc.gif" class="skin"><br>
+ PDF</a>
+</div>
+<div class="trail">
+<text>Font size:</text>
+ <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>Annotated forrest.xmap</h1>
+<div id="motd-area">
+ This is documentation for development version v0.8
+ (<a href="/versions/index.html">More</a>)</div>
+<div id="minitoc-area">
+<ul class="minitoc">
+<li>
+<a href="#sitemap.xmap">sitemap.xmap</a>
+<ul class="minitoc">
+<li>
+<a href="#Definition+of+File-Resolver-Resource">Definition of File-Resolver-Resource</a>
+</li>
+<li>
+<a href="#Second+Match+for+%27**.xml%27">Second Match for '**.xml'</a>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<a name="N10010"></a><a name="sitemap.xmap"></a>
+<h2 class="underlined_10">sitemap.xmap</h2>
+<div class="section">
+<pre>
+<?xml version="1.0"?>
+<!-- ===============================================
+Pipelines defining all Source XML types Forrest can handle.
+Converts from arbitrary formats to standard Forrest doc-v12 XML.
+
+First, determines if a simple format file exists.
+Candidates are: .html .ihtml .txt .sxw .jspwiki
+
+Otherwise, the default *.xml handling is used. The XML's DTD type is
+discovered using the SourceTypeAction, and an appropriate transformation
+applied. Thus to add new XML types, just define a new <sourcetype>
+and an appropriate <map:when> handler.
+
+Generates : Source XML, Body HTML for *.ehtml
+Example URL: http://localhost:8888/index.xml
+Used by : *.html and *.pdf pipelines in sitemap.xmap
+Uses : content/xdocs/**.xml
+
+$Revision: 1.8 $
+==================================================== -->
+
+<map:sitemap xmlns:map="http://apache.org/cocoon/sitemap/1.0">
+ <map:components>
+ <map:generators default="file">
+ <map:generator name="html" src="org.apache.cocoon.generation.HTMLGenerator">
+ <jtidy-config>WEB-INF/jtidy.properties</jtidy-config>
+ </map:generator>
+ <map:generator name="text2xml" logger="sitemap.generator.textgenerator"
+ src="org.apache.cocoon.generation.TextGenerator">
+ <parameter name="localizable" value="true"/>
+ </map:generator>
+ <map:generator name="exception"
+ src="org.apache.cocoon.generation.ParseExceptionGenerator"/>
+
+ </map:generators>
+ <map:serializers default="html"/>
+ <map:matchers default="wildcard"/>
+
+ <map:transformers default="xslt">
+ <map:transformer name="pattern"
+ src="org.apache.cocoon.transformation.PatternTransformer"
+ logger="sitemap.transformer.pattern">
+ <parameter name="groups" value="true"/>
+ </map:transformer>
+ <map:transformer name="lexer"
+ src="org.apache.cocoon.transformation.LexicalTransformer"
+ logger="sitemap.transformer.lexer">
+ <parameter name="localizable" value="true"/>
+ </map:transformer>
+ <map:transformer name="parser"
+ src="org.apache.cocoon.transformation.ParserTransformer"
+ logger="sitemap.transformer.parser">
+ <parameter name="flatten" value="true"/>
+ <parameter name="recovery" value="true"/>
+ <parameter name="localizable" value="true"/>
+ </map:transformer>
+
+ <map:transformer name="extparser"
+ src="org.apache.cocoon.transformation.ExtendedParserTransformer"
+ logger="sitemap.transformer.extendedparser">
+ </map:transformer>
+ </map:transformers>
+
+ <map:actions>
+ <map:action logger="sitemap.action.sourcetype" name="sourcetype" src="org.apache.forrest.sourcetype.SourceTypeAction">
+ <sourcetype name="document-v10">
+ <document-declaration public-id="-//APACHE//DTD Documentation V1.0//EN" />
+ </sourcetype>
+ <sourcetype name="howto-v10">
+ <document-declaration public-id="-//APACHE//DTD How-to V1.0//EN" />
+ </sourcetype>
+ <sourcetype name="todo-v10">
+ <document-declaration public-id="-//APACHE//DTD Todo V1.0//EN" />
+ </sourcetype>
+ <sourcetype name="changes-v10">
+ <document-declaration public-id="-//APACHE//DTD Changes V1.0//EN" />
+ </sourcetype>
+ <sourcetype name="document-v11">
+ <document-declaration public-id="-//APACHE//DTD Documentation V1.1//EN" />
+ </sourcetype>
+ <sourcetype name="howto-v11">
+ <document-declaration public-id="-//APACHE//DTD How-to V1.1//EN" />
+ </sourcetype>
+ <sourcetype name="todo-v11">
+ <document-declaration public-id="-//APACHE//DTD Todo V1.1//EN" />
+ </sourcetype>
+ <sourcetype name="changes-v11">
+ <document-declaration public-id="-//APACHE//DTD Changes V1.1//EN" />
+ </sourcetype>
+ <sourcetype name="todo-v12">
+ <document-declaration public-id="-//APACHE//DTD Todo V1.2//EN" />
+ </sourcetype>
+ <sourcetype name="changes-v12">
+ <document-declaration public-id="-//APACHE//DTD Changes V1.2//EN" />
+ </sourcetype>
+ <sourcetype name="howto-v12">
+ <document-declaration public-id="-//APACHE//DTD How-to V1.2//EN" />
+ </sourcetype>
+ <sourcetype name="todo-v13">
+ <document-declaration public-id="-//APACHE//DTD Todo V1.3//EN" />
+ </sourcetype>
+ <sourcetype name="changes-v13">
+ <document-declaration public-id="-//APACHE//DTD Changes V1.3//EN" />
+ </sourcetype>
+ <sourcetype name="howto-v13">
+ <document-declaration public-id="-//APACHE//DTD How-to V1.3//EN" />
+ </sourcetype>
+ <sourcetype name="document-v20a">
+ <document-declaration public-id="-//APACHE//DTD Documentation V2.0a//EN" />
+ </sourcetype>
+ <sourcetype name="document-v20">
+ <document-declaration public-id="-//APACHE//DTD Documentation V2.0//EN" />
+ </sourcetype>
+ <sourcetype name="todo-v20">
+ <document-declaration public-id="-//APACHE//DTD Todo V2.0//EN" />
+ </sourcetype>
+ <sourcetype name="changes-v20">
+ <document-declaration public-id="-//APACHE//DTD Changes V2.0//EN" />
+ </sourcetype>
+ <sourcetype name="howto-v20">
+ <document-declaration public-id="-//APACHE//DTD How-to V2.0//EN" />
+ </sourcetype>
+ </map:action>
+ <map:action logger="sitemap.action.locale" name="locale" src="org.apache.cocoon.acting.LocaleAction">
+ </map:action>
+ </map:actions>
+ <map:selectors default="parameter">
+ <map:selector logger="sitemap.selector.parameter" name="parameter" src="org.apache.cocoon.selection.ParameterSelector" />
+ <map:selector logger="sitemap.selector.exception" name="exception"
+ src="org.apache.cocoon.selection.ExceptionSelector">
+ <exception name="syntax" class="net.sourceforge.chaperon.process.ParseException"/>
+ <exception class="java.lang.Throwable" unroll="true"/>
+ </map:selector>
+ <map:selector logger="sitemap.selector.config" name="config" src="org.apache.cocoon.selection.SimpleSelector" />
+ </map:selectors>
+ </map:components>
+
+ <map:resources>
+ <map:resource name="transform-to-document">
+ <map:act type="sourcetype" src="{src}">
+ <map:select type="parameter">
+ <map:parameter name="parameter-selector-test" value="{sourcetype}" />
+
+ <map:when test="document-v10">
+ <!-- FIXME (JJP): This should use the v12 now-->
+ <map:transform src="{forrest:stylesheets}/docv10todocv11.xsl" />
+ </map:when>
+
+ <map:when test="document-v20a">
+ <map:transform src="{forrest:stylesheets}/docv20todocv12.xsl" />
+ </map:when>
+
+ <map:when test="document-v20">
+ <map:transform src="{forrest:stylesheets}/docv20todocv13.xsl" />
+ </map:when>
+
+ <map:when test="howto-v10">
+ <map:transform src="{forrest:stylesheets}/howto2document.xsl" />
+ </map:when>
+
+ <map:when test="howto-v11">
+ <map:transform src="{forrest:stylesheets}/howto2document.xsl" />
+ </map:when>
+ <map:when test="howto-v12">
+ <map:transform src="{forrest:stylesheets}/howto2document.xsl" />
+ </map:when>
+ <map:when test="howto-v13">
+ <map:transform src="{forrest:stylesheets}/howto2document.xsl" />
+ </map:when>
+ <map:when test="howto-v20">
+ <map:transform src="{forrest:stylesheets}/howto2document.xsl" />
+ </map:when>
+
+ <map:when test="todo-v10">
+ <map:transform src="{forrest:stylesheets}/todo2document.xsl" />
+ </map:when>
+
+ <map:when test="todo-v11">
+ <map:transform src="{forrest:stylesheets}/todo2document.xsl" />
+ </map:when>
+
+ <map:when test="todo-v12">
+ <map:transform src="{forrest:stylesheets}/todo2document.xsl" />
+ </map:when>
+
+ <map:when test="todo-v13">
+ <map:transform src="{forrest:stylesheets}/todo2document.xsl" />
+ </map:when>
+
+ <map:when test="todo-v20">
+ <map:transform src="{forrest:stylesheets}/todo2document.xsl" />
+ </map:when>
+
+ <map:when test="changes-v10">
+ <map:transform src="{forrest:stylesheets}/changesv10tochangesv11.xsl" />
+ <map:transform src="{forrest:stylesheets}/changes2document.xsl" />
+ </map:when>
+
+ <map:when test="changes-v11">
+ <map:transform src="{forrest:stylesheets}/changes2document.xsl" />
+ </map:when>
+
+ <map:when test="changes-v12">
+ <map:transform src="{forrest:stylesheets}/changes2document.xsl" />
+ </map:when>
+
+ <map:when test="changes-v13">
+ <map:transform src="{forrest:stylesheets}/changes2document.xsl" />
+ </map:when>
+
+ <map:when test="changes-v20">
+ <map:transform src="{forrest:stylesheets}/changes2document.xsl" />
+ </map:when>
+ <map:otherwise />
+ </map:select>
+ </map:act>
+ </map:resource>
+</pre>
+<a name="N10016"></a><a name="Definition+of+File-Resolver-Resource"></a>
+<h3 class="underlined_5">Definition of File-Resolver-Resource</h3>
+<pre>
+ <map:resource name="file-resolver">
+ <map:select type="exists">
+ <map:when test="{project:content.xdocs}{uri}.ihtml">
+ <map:generate src="{project:content.xdocs}{uri}.ihtml" type="html" />
+ <map:transform src="{forrest:stylesheets}/html2document.xsl" />
+ <map:transform type="idgen" />
+ <map:serialize type="xml-document"/>
+ </map:when>
+ <map:when test="{project:content.xdocs}{uri}.html">
+ <map:generate src="{project:content.xdocs}{uri}.html" type="html" />
+ <map:transform src="{forrest:stylesheets}/html2document.xsl" />
+ <map:transform type="idgen" />
+ <map:serialize type="xml-document"/>
+ </map:when>
+ <map:when test="{project:content.xdocs}{uri}.txt">
+ <map:match type="regexp" pattern="^(.*?)([^/]*).xml$">
+ <map:generate type="text2xml" src="{project:content.xdocs}{1}{2}.txt" />
+ <map:transform src="{forrest:stylesheets}/text2document.xsl">
+ <map:parameter name="filename" value="{2}" />
+ </map:transform>
+ <map:serialize type="xml-document"/>
+ </map:match>
+ </map:when>
+ <map:otherwise>
+
+ <map:select type="exists">
+ <map:when test="{project:temp-dir}/input.xmap">
+ <map:mount uri-prefix=""
+ src="{project:temp-dir}/input.xmap"
+ check-reload="yes"
+ pass-through="true"/>
+ </map:when>
+ </map:select>
+
+ <map:generate src="{project:content.xdocs}{uri}.xml" />
+ <map:call resource="transform-to-document">
+ <map:parameter name="src" value="{project:content.xdocs}{uri}.xml" />
+ </map:call>
+ <map:serialize type="xml-document"/>
+ </map:otherwise>
+ </map:select>
+ </map:resource>
+ </map:resources>
+
+ <map:pipelines>
+ <map:pipeline>
+
+ <!-- ============================================================ -->
+ <!-- INTERMEDIATE FORMATS -->
+ <!-- ============================================================ -->
+
+ <map:match pattern="**body-*.html">
+ <map:select type="exists">
+ <map:when test="{project:content.xdocs}{1}{2}.ehtml">
+ <map:generate src="{project:content.xdocs}{1}{2}.ehtml" />
+ <map:transform src="{forrest:stylesheets}/html2htmlbody.xsl" />
+ <map:serialize type="xml" />
+ </map:when>
+ </map:select>
+ </map:match>
+
+ <!-- ============================================================ -->
+ <!-- SOURCE FORMATS -->
+ <!-- ============================================================ -->
+</pre>
+<a name="N1001C"></a><a name="Second+Match+for+%27**.xml%27"></a>
+<h3 class="underlined_5">Second Match for '**.xml'</h3>
+<pre>
+ <map:match pattern="**.xml">
+ <map:select type="config">
+ <map:parameter name="value" value="{defaults:i18n}"/>
+ <map:when test="true">
+ <map:act type="locale">
+ <map:call resource="file-resolver">
+ <map:parameter name="uri" value="{../1}_{language}"/>
+ </map:call>
+ </map:act>
+ </map:when>
+ <map:otherwise>
+ <map:call resource="file-resolver">
+ <map:parameter name="uri" value="{1}"/>
+ </map:call>
+ </map:otherwise>
+ </map:select>
+ </map:match>
+
+ </map:pipeline>
+ </map:pipelines>
+</map:sitemap>
+</pre>
+</div>
+</div>
+<div class="clearboth"> </div>
+</div>
+<div id="footer">
+<div class="lastmodified">
+<script type="text/javascript"><!--
+document.write("<text>Last Published:</text> " + document.lastModified);
+// --></script>
+</div>
+<div class="copyright">
+ Copyright ©
+ 2002-2005 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
+</div>
+</div>
+</body>
+</html>
Propchange: forrest/site/docs_0_80/howto/forrest.xmap.html
------------------------------------------------------------------------------
svn:eol-style = native
Added: forrest/site/docs_0_80/howto/forrest.xmap.pdf
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_80/howto/forrest.xmap.pdf?rev=193078&view=auto
==============================================================================
Binary file - no diff available.
Propchange: forrest/site/docs_0_80/howto/forrest.xmap.pdf
------------------------------------------------------------------------------
svn:mime-type = application/pdf
Added: forrest/site/docs_0_80/howto/howto-asf-mirror.html
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_80/howto/howto-asf-mirror.html?rev=193078&view=auto
==============================================================================
--- forrest/site/docs_0_80/howto/howto-asf-mirror.html (added)
+++ forrest/site/docs_0_80/howto/howto-asf-mirror.html Wed Jun 22 22:36:19 2005
@@ -0,0 +1,433 @@
+<!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>Generate an ASF mirrors page using interactive web form (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">
+<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>
+<div class="header">
+<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>
+<div class="projectlogo">
+<a href="http://forrest.apache.org/"><img class="logoImage" alt="Forrest" src="../../images/project-logo.gif" title="Apache Forrest"></a>
+</div>
+<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 attr="value" name="Search" value="Search" type="submit">
+</form>
+</div>
+<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>
+</div>
+</div>
+<div id="main">
+<div id="publishedStrip">
+<div id="level2tabs"></div>
+<script type="text/javascript"><!--
+document.write("<text>Last Published:</text> " + document.lastModified);
+// --></script>
+</div>
+<div class="breadtrail">
+
+
+ </div>
+<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/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-dev</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.14', '../../skin/')" id="menu_selected_1.1.14Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">How-To</div>
+<div id="menu_selected_1.1.14" 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="menupage">
+<div class="menupagetitle">Download mirror</div>
+</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.14.10', '../../skin/')" id="menu_1.1.14.10Title" class="menutitle">Multipage HowTo</div>
+<div id="menu_1.1.14.10" 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_1.1.14.11', '../../skin/')" id="menu_1.1.14.11Title" class="menutitle">Views</div>
+<div id="menu_1.1.14.11" 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.15', '../../skin/')" id="menu_1.1.15Title" class="menutitle">Advanced Topics</div>
+<div id="menu_1.1.15" 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.17', '../../skin/')" id="menu_1.1.17Title" class="menutitle">Reference docs</div>
+<div id="menu_1.1.17" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.17.1', '../../skin/')" id="menu_1.1.17.1Title" class="menutitle">DTD documentation</div>
+<div id="menu_1.1.17.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.17.2', '../../skin/')" id="menu_1.1.17.2Title" class="menutitle">Doc samples</div>
+<div id="menu_1.1.17.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.18', '../../skin/')" id="menu_1.1.18Title" class="menutitle">Older Docs</div>
+<div id="menu_1.1.18" 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="/versions/index.html">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>
+<div id="credit2">
+<a href="http://apachecon.com/"><img border="0" title="ApacheCon Europe 2005" alt="ApacheCon Europe 2005 - logo" src="http://apache.org/images/ac2005eu_135x50.gif" style="width: 135px;height: 50px;"></a>
+</div>
+</div>
+<div id="content">
+<div title="Portable Document Format" class="pdflink">
+<a class="dida" href="howto-asf-mirror.pdf"><img alt="PDF -icon" src="../../skin/images/pdfdoc.gif" class="skin"><br>
+ PDF</a>
+</div>
+<div class="trail">
+<text>Font size:</text>
+ <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>Generate an ASF mirrors page using interactive web form</h1>
+<div class="abstract">Include html form elements
+ into a forrest-generated html page. For example, this enables building
+ automated download mirror pages for ASF project websites.
+ </div>
+<div id="motd-area">
+ This is documentation for development version v0.8
+ (<a href="/versions/index.html">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="#cgi">Add the mirrors.cgi as a raw file</a>
+</li>
+<li>
+<a href="#html">Add the mirrors.html to xdocs directory</a>
+</li>
+<li>
+<a href="#menu">Add a menu entry for Download</a>
+</li>
+<li>
+<a href="#link">Cause the mirrors.html to be processed as an extra file</a>
+</li>
+<li>
+<a href="#forrest">Run 'forrest' to build your site</a>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<a name="N10010"></a><a name="Intended Audience"></a>
+<h2 class="underlined_10">Intended Audience</h2>
+<div class="section">
+<ul>
+
+<li>Any Apache project that uses Forrest to generate their website
+ will need to have a mirrors page.</li>
+
+<li>Also anyone interested in the use of embedding html form
+ elements into a generated Forrest page.</li>
+
+</ul>
+</div>
+<a name="N1001E"></a><a name="Purpose"></a>
+<h2 class="underlined_10">Purpose</h2>
+<div class="section">
+<p>All Apache projects use dynamically generated download pages
+ which determine the closest mirror and provide an interactive list of
+ the current alternative mirrors.
+ This HowTo describes the procedure to generate the template page
+ that is utilised by the mirrors.cgi script.
+ </p>
+<p>The mirrors.cgi and mirrors.html are "extra" documents,
+ i.e. have no links from anywhere in the site. So we explain
+ how to process additional files.
+ </p>
+</div>
+<a name="N10029"></a><a name="Prerequisites"></a>
+<h2 class="underlined_10">Prerequisites</h2>
+<div class="section">
+<ul>
+
+<li>Followed the documentation about
+ <a href="http://www.apache.org/~bodewig/mirror.html">Making your
+ downloads mirrorable</a> and
+ <a href="http://www.apache.org/dev/mirrors.html">Apache Mirroring Information</a>
+ .
+ </li>
+
+<li>Established your ASF distribution space as described.</li>
+
+<li>Already building your project website with Forrest.</li>
+
+</ul>
+</div>
+<a name="N10042"></a><a name="Steps"></a>
+<h2 class="underlined_10">Steps</h2>
+<div class="section">
+<a name="N10047"></a><a name="cgi"></a>
+<h3 class="underlined_5">Add the mirrors.cgi as a raw file</h3>
+<p>As explained in the mirrors document, there will be a two-line CGI
+ wrapper script at the top-level of your website called
+ <span class="codefrag">mirrors.cgi</span>
+</p>
+<p>Utilising the Forrest concept of raw un-processed content,
+ add the file as <span class="codefrag">src/documentation/mirrors.cgi</span>
+ (copy the Forrest project's
+ <a href="http://svn.apache.org/repos/asf/forrest/trunk/site-author/content/mirrors.cgi">mirrors.cgi</a>)
+ </p>
+<a name="N1005D"></a><a name="html"></a>
+<h3 class="underlined_5">Add the mirrors.html to xdocs directory</h3>
+<p>This file contains the html content of your mirror page, including
+ the html form elements which drive the mirror selection. It also
+ contains the specific tokens that are interpreted by the mirrors.cgi
+ script to add the list of mirrors and select the closest.
+ </p>
+<p>
+ Add the file as <span class="codefrag">src/documentation/xdocs/mirrors.html</span>
+ (Use the Forrest project's
+ <a href="http://svn.apache.org/repos/asf/forrest/trunk/site-author/content/xdocs/mirrors.html">mirrors.html</a>
+ as a template and edit it to suit.)
+ </p>
+<a name="N10071"></a><a name="menu"></a>
+<h3 class="underlined_5">Add a menu entry for Download</h3>
+<p>Add an entry to your site.xml navigation. For example ...
+ </p>
+<pre class="code">
+ <about label="About">
+ <index label="Index" href="index.html"/>
+ <license label="License" href="license.html"/>
+ <download label="Download" href="http://forrest.apache.org/mirrors.cgi"/>
+ <download_html href="mirrors.html"/><!-- so the page is part of a tab -->
+ ...</pre>
+<a name="N1007F"></a><a name="link"></a>
+<h3 class="underlined_5">Cause the mirrors.html to be processed as an extra file</h3>
+<p>Forrest gathers the links that are to be crawled, by reading site.xml
+ and by finding any other internal links in the actual documents.
+ There is no link to mirrors.html because it is an extra file that needs
+ to be generated and skinned, but not linked in any way.
+ </p>
+<p>The Cocoon command-line interface
+ (<a href="http://cocoon.apache.org/2.1/userdocs/offline/">CLI</a>)
+ to the rescue. Add an entry to your project's cli.xconf by copying the
+ default one from
+ <span class="codefrag">$FORREST_HOME/main/webapp/WEB-INF/cli.xconf</span> to your
+ <span class="codefrag">src/documentation/conf/</span> directory (or wherever
+ ${forrest.conf-dir} points). Add the following entry ...
+ </p>
+<pre class="code">
+<uris name="mirrors" follow-links="false">
+ <uri type="append" src="mirrors.html"/>
+</uris></pre>
+<a name="N1009A"></a><a name="forrest"></a>
+<h3 class="underlined_5">Run 'forrest' to build your site</h3>
+<p>
+ That is all that you need to do, Forrest will take care of it from
+ there. Run the '<span class="codefrag">forrest</span>' command. The mirrors.html page
+ will be generated with the skin applied.
+ </p>
+<div class="frame note">
+<div class="label">Note</div>
+<div class="content">
+Due to Issue
+<a href="http://issues.apache.org/jira/browse/FOR-480">FOR-480</a>,
+the generated mirror.html will end up in forrest/main/site/mirrors.html
+rather than in the project's build directory.
+</div>
+</div>
+</div>
+</div>
+<div class="clearboth"> </div>
+</div>
+<div id="footer">
+<div class="lastmodified">
+<script type="text/javascript"><!--
+document.write("<text>Last Published:</text> " + document.lastModified);
+// --></script>
+</div>
+<div class="copyright">
+ Copyright ©
+ 2002-2005 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
+</div>
+</div>
+</body>
+</html>
Propchange: forrest/site/docs_0_80/howto/howto-asf-mirror.html
------------------------------------------------------------------------------
svn:eol-style = native
Added: forrest/site/docs_0_80/howto/howto-asf-mirror.pdf
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_80/howto/howto-asf-mirror.pdf?rev=193078&view=auto
==============================================================================
Binary file - no diff available.
Propchange: forrest/site/docs_0_80/howto/howto-asf-mirror.pdf
------------------------------------------------------------------------------
svn:mime-type = application/pdf
Added: forrest/site/docs_0_80/howto/howto-buildPlugin.html
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_80/howto/howto-buildPlugin.html?rev=193078&view=auto
==============================================================================
--- forrest/site/docs_0_80/howto/howto-buildPlugin.html (added)
+++ forrest/site/docs_0_80/howto/howto-buildPlugin.html Wed Jun 22 22:36:19 2005
@@ -0,0 +1,679 @@
+<!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 Build a Plugin (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">
+<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>
+<div class="header">
+<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>
+<div class="projectlogo">
+<a href="http://forrest.apache.org/"><img class="logoImage" alt="Forrest" src="../../images/project-logo.gif" title="Apache Forrest"></a>
+</div>
+<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 attr="value" name="Search" value="Search" type="submit">
+</form>
+</div>
+<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>
+</div>
+</div>
+<div id="main">
+<div id="publishedStrip">
+<div id="level2tabs"></div>
+<script type="text/javascript"><!--
+document.write("<text>Last Published:</text> " + document.lastModified);
+// --></script>
+</div>
+<div class="breadtrail">
+
+
+ </div>
+<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/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-dev</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.14', '../../skin/')" id="menu_selected_1.1.14Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">How-To</div>
+<div id="menu_selected_1.1.14" 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-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="menupage">
+<div class="menupagetitle">Build a Plugin</div>
+</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.14.10', '../../skin/')" id="menu_1.1.14.10Title" class="menutitle">Multipage HowTo</div>
+<div id="menu_1.1.14.10" 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_1.1.14.11', '../../skin/')" id="menu_1.1.14.11Title" class="menutitle">Views</div>
+<div id="menu_1.1.14.11" 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.15', '../../skin/')" id="menu_1.1.15Title" class="menutitle">Advanced Topics</div>
+<div id="menu_1.1.15" 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.17', '../../skin/')" id="menu_1.1.17Title" class="menutitle">Reference docs</div>
+<div id="menu_1.1.17" class="menuitemgroup">
+<div onclick="SwitchMenu('menu_1.1.17.1', '../../skin/')" id="menu_1.1.17.1Title" class="menutitle">DTD documentation</div>
+<div id="menu_1.1.17.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.17.2', '../../skin/')" id="menu_1.1.17.2Title" class="menutitle">Doc samples</div>
+<div id="menu_1.1.17.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.18', '../../skin/')" id="menu_1.1.18Title" class="menutitle">Older Docs</div>
+<div id="menu_1.1.18" 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="/versions/index.html">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>
+<div id="credit2">
+<a href="http://apachecon.com/"><img border="0" title="ApacheCon Europe 2005" alt="ApacheCon Europe 2005 - logo" src="http://apache.org/images/ac2005eu_135x50.gif" style="width: 135px;height: 50px;"></a>
+</div>
+</div>
+<div id="content">
+<div title="Portable Document Format" class="pdflink">
+<a class="dida" href="howto-buildPlugin.pdf"><img alt="PDF -icon" src="../../skin/images/pdfdoc.gif" class="skin"><br>
+ PDF</a>
+</div>
+<div class="trail">
+<text>Font size:</text>
+ <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 Build a Plugin</h1>
+<div class="abstract">This How-To describes the steps necessary to build a plugin for
+ Forrest. Forrest uses plugins to add new input formats, output formats
+ and to change its default behaviour. Since plugins are downloaded when
+ needed and can be hosted at any location, plugin code can be developed
+ independently of Apache Forrest. This how-to describes each of the major
+ steps in creating a plugin and then works through some examples of
+ plugin creation in order to illustrate the materials.</div>
+<div id="motd-area">
+ This is documentation for development version v0.8
+ (<a href="/versions/index.html">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="#typeOfPlugin">Type of Plugin</a>
+</li>
+<li>
+<a href="#ant">Make ant available on the command-line</a>
+</li>
+<li>
+<a href="#seed">Seed a New Plugin</a>
+<ul class="minitoc">
+<li>
+<a href="#edit-template">Edit the Plugin Template</a>
+</li>
+</ul>
+</li>
+<li>
+<a href="#edit-sitemap">Edit the Plugin sitemap file(s)</a>
+<ul class="minitoc">
+<li>
+<a href="#components">Components, Actions and Resources</a>
+</li>
+</ul>
+</li>
+<li>
+<a href="#resources">Create the Necessary Resource Files</a>
+</li>
+<li>
+<a href="#samples">Create Samples in the Documentation</a>
+</li>
+<li>
+<a href="#test">Testing a Plugin</a>
+</li>
+<li>
+<a href="#release">Releasing a Plugin</a>
+<ul class="minitoc">
+<li>
+<a href="#register">Register the Plugin with Apache Forrest</a>
+</li>
+<li>
+<a href="#deploy">Deploying the Plugin</a>
+</li>
+</ul>
+</li>
+<li>
+<a href="#examples">Examples</a>
+<ul class="minitoc">
+<li>
+<a href="#input">Input Plugin</a>
+</li>
+<li>
+<a href="#output">Output Plugin</a>
+</li>
+<li>
+<a href="#internal">Internal Plugin</a>
+</li>
+</ul>
+</li>
+<li>
+<a href="#extension">Further Reading</a>
+</li>
+<li>
+<a href="#summarise">Summarise the Entire Process</a>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<a name="N10013"></a><a name="Intended Audience"></a>
+<h2 class="underlined_10">Intended Audience</h2>
+<div class="section">
+<p>Users needing to add additional input formats or output formats or
+ to change the operation of the Forrest internals.</p>
+<div class="frame warning">
+<div class="label">Warning</div>
+<div class="content">The Plugin Infrastructure is still at an early stage of design
+ and implementation, consequently this How-To <em>may</em> be out of date
+ and/or incomplete. If you are having problems with any of the steps
+ described, please ask for help on the developers mailing list (and then
+ provide patches for this document).</div>
+</div>
+<div class="frame warning">
+<div class="label">Warning</div>
+<div class="content">Please make sure that you are using forrest 0.7 if you want use
+ plugins. Forrest 0.6 will not work!!!</div>
+</div>
+</div>
+<a name="N10024"></a><a name="Purpose"></a>
+<h2 class="underlined_10">Purpose</h2>
+<div class="section">
+<p>This How-To will illustrate how to build a plugin, publish a plugin
+ and configure a Forrest project to use their plugin.</p>
+</div>
+<a name="N1002C"></a><a name="Prerequisites"></a>
+<h2 class="underlined_10">Prerequisites</h2>
+<div class="section">
+<p>Plugin developers should have:</p>
+<ul>
+
+<li>a basic knowledge of XML, XSLT and Cocoon pipelines</li>
+
+<li>a clear use-case for extending Forrest</li>
+
+<li>read
+ <a href="../../pluginDocs/plugins_0_80/pluginInfrastructure.html">Plugin Infrastructure</a>
+
+</li>
+
+<li>verified with the Apache Forrest developer community that the
+ requried functionality does not already exist</li>
+
+</ul>
+</div>
+<a name="N10047"></a><a name="Steps"></a>
+<h2 class="underlined_10">Steps</h2>
+<div class="section">
+<p>Here is how to proceed.</p>
+<a name="N1004F"></a><a name="typeOfPlugin"></a>
+<h3 class="underlined_5">Type of Plugin</h3>
+<p>There are three types of plugin, each with a clear purpose, you
+ must first decide which
+ <a href="../../pluginDocs/plugins_0_80/pluginInfrastructure.html">type of plugin</a>
+ you need to build.</p>
+<a name="N1005D"></a><a name="ant"></a>
+<h3 class="underlined_5">Make ant available on the command-line</h3>
+<p>
+ The following instructions rely heavily on
+ <a href="http://ant.apache.org/">Apache Ant</a>
+ to automate some steps in the process. Since ant
+ is distributed as part of Forrest, all you need to do
+ is add the ant executable directory to your system path. The
+ name of this directory is <span class="codefrag">tools/ant/bin</span>
+ in your Forrest program directory.
+ (Alternatively you can prefix all calls to ant in
+ the following instructions with the full path of the ant binary directory.)
+ Also clear the ANT_HOME environment variable.
+ </p>
+<p>
+ If instead you really want to use your own version of Ant,
+ then you will need to copy
+ forrest/lib/core/xml-commons-resolver.jar
+ to $ANT_HOME/lib directory, otherwise your plugins will go across
+ the network to get the DTDs on every parse.
+ </p>
+<a name="N10071"></a><a name="seed"></a>
+<h3 class="underlined_5">Seed a New Plugin</h3>
+<p>Regardless of the type of plugin you are building, the directory
+ structure is almost identical, as are most of the requried
+ configuration files. In this How-To we will assume that you are creating a
+ plugin in the Forrest source tree. All plugins are developed in the
+ <span class="codefrag">forrest/plugins</span> directory.</p>
+<p class="instruction">Run the following set of commands:</p>
+<pre class="code">
+ cd [path_to_forrest]/plugins
+ ant seedPlugin
+ </pre>
+<p>The above ant target will ask you the name of the plugin and will
+ build a minimal plugin directory structure and configuration. You will
+ need to customise these files to build your plugin.</p>
+<div class="frame note">
+<div class="label">Note</div>
+<div class="content">Although you can name your project anything you like we do have
+ some <a href="../../pluginDocs/plugins_0_80/pluginInfrastructure.html">naming
+ conventions</a> that we recommend you follow. Plugins intended to be
+ held at forrest.apache.org must follow the naming convention.</div>
+</div>
+<div class="frame note">
+<div class="label">Note</div>
+<div class="content">If you plan on building your plugin elsewhere you can copy the
+ <span class="codefrag">build.xml</span> build file to your own plugin work directory and
+ use it there.</div>
+</div>
+<p>See
+ <a href="../../pluginDocs/plugins_0_80/pluginInfrastructure.html">Plugin
+ Infrastructure</a> for more information about the plugin
+ directory structure and configuration files.</p>
+<a name="N1009C"></a><a name="edit-template"></a>
+<h4>Edit the Plugin Template</h4>
+<p>You now have a skeleton plugin project. However, it doesn't do
+ anything useful yet. Now is a good time to edit some of the files
+ provided.</p>
+<div class="frame note">
+<div class="label">Note</div>
+<div class="content">
+ For plugins intended to be held at forrest.apache.org please
+ adjust the skinconf.xml etc to be in accordance with the other
+ forrest plugins. See <a href="#hosted">notes</a> below.
+ </div>
+</div>
+<p>Here are some general notes:</p>
+<a name="N100AF"></a><a name="status"></a>
+<h5>status.xml</h5>
+<p>This file is used to track changes to the plugin
+ project and to manage lists of things that still need to be done.
+ At this stage you should correct the <span class="codefrag">person</span> entry
+ near the top of the file. It is also a good idea to add a few key
+ milestones in the task list towards the bottom of the file.</p>
+<p>As you work on the plugin you should record all major changes in
+ this file so that it can then be used as a changelog for your
+ plugin.</p>
+<a name="N100BF"></a><a name="forrest-properties"></a>
+<h5>forrest.properties</h5>
+<p>This file defines many configuration parameters for Forrest. It
+ does not need to be customised in most cases. However, see
+ for more details.</p>
+<a name="N100C9"></a><a name="skinconf"></a>
+<h5>src/documentation/skinconf.xml</h5>
+<p>This configures the skin for your plugins documentation. There
+ are some items that need to be configured in here, for example, the
+ copyright information. The file is heavily commented so probably
+ best to read through it, changing what you need to.</p>
+<a name="N100D3"></a><a name="doc"></a>
+<h5>Documentation</h5>
+<p>It is also a good idea to start writing the documentation at this
+ stage. The above process created a very simple plugin documentation
+ site for you. All you have to do is add the content.</p>
+<a name="N100DD"></a><a name="hosted"></a>
+<h5>Style notes for plugins hosted at forrest.apapche.org</h5>
+<p>
+ After seeding a new plugin, copy the configuration from an
+ exisiting plugin (e.g. org.apache.forrest.plugin.input.projectInfo).
+ Copy src/documentation/skinconf.xml and
+ src/documentation/content/xdocs/images/project-logo.gif
+ </p>
+<a name="N100E9"></a><a name="edit-sitemap"></a>
+<h3 class="underlined_5">Edit the Plugin sitemap file(s)</h3>
+<p>The plugin <span class="codefrag">xmap</span> file is a Cocoon sitemap that is mounted
+ at a strategic place in the Forrest pipeline. It is in this file
+ that you will instruct Forrest how to operate. An input plugin
+ must provide a <span class="codefrag">input.xmap</span> file, an output plugin
+ must provide a <span class="codefrag">output.xmap</span> file, whilst an internal
+ plugin provides a <span class="codefrag">internal.xmap</span> file. In addition, an
+ input plugin may provide a <span class="codefrag">resources.xmap</span> file to
+ allow the plugin to handle items such as JavaScript files.</p>
+<p>It is beyond the scope of this How-To to give details about how to
+ build your plugins XMap. See the
+ <a href="../../docs_0_80/sitemap-ref.html">Sitemap Reference</a> for general
+ information. See also
+ <a href="../../pluginDocs/plugins_0_80/pluginInfrastructure.html">Plugin Infrastructure</a>
+ for some hints and tips on creating plugin sitemaps. In addition, as with
+ all development work on Forrest, you will find
+ the <a href="../../mail-lists.html#forrest-dev">developer mailing list</a>
+ a very good resource (check the archives before posting, please).</p>
+<a name="N10110"></a><a name="components"></a>
+<h4>Components, Actions and Resources</h4>
+<p>If your plugin uses any components (i.e. generators, transformers or
+ serializers), actions or resources they must
+ be defined in either the xmap for this plugin or one of its parents. The parents
+ of an <span class="codefrag">input.xmap</span> are <span class="codefrag">sitemap.xmap</span> and
+ <span class="codefrag">forrest.xmap</span>, whilst the parent of both
+ <span class="codefrag">output.xmap</span> and <span class="codefrag">internal.xmap</span> are
+ <span class="codefrag">sitemap.xmap</span>
+</p>
+<p>If you want to use the realpath where the sitemap.xmap of your plugin
+ resides then you need to use
+ <span class="codefrag">{forrest:plugins}/PLUGIN_NAME</span> instead of <span class="codefrag">{realpath:/}</span>.
+ </p>
+<p>See the examples below for more details.</p>
+<a name="N10138"></a><a name="resources"></a>
+<h3 class="underlined_5">Create the Necessary Resource Files</h3>
+<div class="frame fixme">
+<div class="label">Fixme (rdg)</div>
+<div class="content">Discuss the XSL files and other such resources</div>
+</div>
+<a name="N10143"></a><a name="samples"></a>
+<h3 class="underlined_5">Create Samples in the Documentation</h3>
+<p>Plugin documentation should provide (as a minimum) an
+ index page that provides an overview and a set of samples that demonstrate
+ the functionality of the plugin. Typically these samples will be
+ provided in a <span class="codefrag">samples</span> subdirectory in the plugin
+ documentation and will be referenced from both <span class="codefrag">site.xml</span>
+ and <span class="codefrag">tabs.xml</span> configuration files.</p>
+<p>Try to provide a sample for all the major functions of your plugin
+ and document any configuration that is available.</p>
+<a name="N10159"></a><a name="test"></a>
+<h3 class="underlined_5">Testing a Plugin</h3>
+<p>Since your documentation for the plugin illustrates all of its
+ functionality, you can use that site for testing the plugin. However, you
+ must first deploy in your local install of Forrest. Each plugin contains
+ a buildfile that includes a <span class="codefrag">test</span> target. This target, by
+ default, builds the documentation for your plugin.</p>
+<p class="instruction">Run the command <span class="codefrag">ant test</span> in
+ the plugins directory.</p>
+<p>Of course, the build should complete without errors.</p>
+<div class="frame note">
+<div class="label">Note</div>
+<div class="content">You can also use <span class="codefrag">forrest run</span> to interactively examine
+ your documentation (point your browser at
+ <a href="http://localhost:8888">http://localhost:8888</a>).</div>
+</div>
+<p>It is also a really good idea to build proper tests for your
+ plugins using a suitable testing framework, for example,
+ <a href="http://webtest.canoo.com/">WebTest</a>. We recommend that you
+ extend the <span class="codefrag">test</span> target in your plugins build file because
+ this target is also used when performing integration tests on Forrest.
+ In addition, we recommend that you use the samples in your documentation
+ for your tests, this way you are documenting your plugin at the same time
+ as writing your tests.</p>
+<p>Ensure that your sitemaps are robust and handle matches for files
+ in sub-directories, as well as those at the root level.</p>
+<a name="N10187"></a><a name="release"></a>
+<h3 class="underlined_5">Releasing a Plugin</h3>
+<a name="N1018D"></a><a name="register"></a>
+<h4>Register the Plugin with Apache Forrest</h4>
+<div class="frame fixme">
+<div class="label">Fixme (rdg)</div>
+<div class="content">Describe the plugins.xml file</div>
+</div>
+<div class="frame fixme">
+<div class="label">Fixme (rdg)</div>
+<div class="content">Describe making a request of Forrest devs for
+ inclusion</div>
+</div>
+<a name="N1019C"></a><a name="deploy"></a>
+<h4>Deploying the Plugin</h4>
+<p>To deploy the plugin so that others can use it, it must be made
+ available as a zip from the URL indicated in the
+ <span class="codefrag">plugins.xml</span> file. The plugins build file provides targets
+ to assist with this task.</p>
+<p class="instruction">To deploy a plugin simply run the command
+ <span class="codefrag">ant deploy</span> from within the plugin directory.</p>
+<p>This command will, by default, deploy to the Apache Forrest web site.
+ In order to do this you need commit access to Forrest. If you want to
+ deploy your plugin to a different location you
+ can build the zip of your plugin with <span class="codefrag">ant dist</span>
+ and then copy the zip file from <span class="codefrag">build/dist</span> to wherever
+ you intend to host the plugin.</p>
+<div class="frame note">
+<div class="label">Note</div>
+<div class="content">Running this command on any plugin will also deploy any
+ changes to the <span class="codefrag">plugins.xml</span> file. If you are deploying to
+ your own website you will have to request changes to the
+ <span class="codefrag">plugins.xml</span> and ask the Forrest committers to publish the new
+ document.</div>
+</div>
+<div class="frame warning">
+<div class="label">Warning</div>
+<div class="content">Running the <span class="codefrag">deploy</span> or <span class="codefrag">dist</span> targets
+ will always run the <span class="codefrag">test</span> target first. This is to ensure
+ that your only deploy working plugins. This adds a little time to
+ the deploy cycle, but we feel the peace of mind is worth it.</div>
+</div>
+<a name="N101CF"></a><a name="examples"></a>
+<h3 class="underlined_5">Examples</h3>
+<p>This section will provide some example plugins to help illustrate the
+ steps discussed above.</p>
+<a name="N101D8"></a><a name="input"></a>
+<h4>Input Plugin</h4>
+<div class="frame fixme">
+<div class="label">Fixme (RDG)</div>
+<div class="content">Discuss OpenOffice.org plugin here</div>
+</div>
+<a name="N101E3"></a><a name="output"></a>
+<h4>Output Plugin</h4>
+<div class="frame fixme">
+<div class="label">Fixme (RDG)</div>
+<div class="content">Discuss s5 plugin here</div>
+</div>
+<a name="N101EE"></a><a name="internal"></a>
+<h4>Internal Plugin</h4>
+<div class="frame fixme">
+<div class="label">Fixme (RDG)</div>
+<div class="content">Discuss IMSManifest plugin here</div>
+</div>
+<a name="N101FA"></a><a name="extension"></a>
+<h3 class="underlined_5">Further Reading</h3>
+<ul>
+
+<li>
+<a href="../../pluginDocs/plugins_0_80/pluginInfrastructure.html">Plugin Infrastrucuture Documentation</a> for Developers</li>
+
+<li>
+<a href="../../pluginDocs/plugins_0_80/">Plugins Documentation</a> for users</li>
+
+</ul>
+<a name="N10210"></a><a name="summarise"></a>
+<h3 class="underlined_5">Summarise the Entire Process</h3>
+<div class="frame fixme">
+<div class="label">Fixme (rdg)</div>
+<div class="content">In a few sentences, remind the reader what they have just learned.
+ This helps to reinforce the main points of your How-To.</div>
+</div>
+</div>
+</div>
+<div class="clearboth"> </div>
+</div>
+<div id="footer">
+<div class="lastmodified">
+<script type="text/javascript"><!--
+document.write("<text>Last Published:</text> " + document.lastModified);
+// --></script>
+</div>
+<div class="copyright">
+ Copyright ©
+ 2002-2005 <a href="http://www.apache.org/licenses/">The Apache Software Foundation.</a>
+</div>
+</div>
+</body>
+</html>
Propchange: forrest/site/docs_0_80/howto/howto-buildPlugin.html
------------------------------------------------------------------------------
svn:eol-style = native
Added: forrest/site/docs_0_80/howto/howto-buildPlugin.pdf
URL: http://svn.apache.org/viewcvs/forrest/site/docs_0_80/howto/howto-buildPlugin.pdf?rev=193078&view=auto
==============================================================================
Binary file - no diff available.
Propchange: forrest/site/docs_0_80/howto/howto-buildPlugin.pdf
------------------------------------------------------------------------------
svn:mime-type = application/pdf