Added: forrest/site/0.7/docs/menu-index.html URL: http://svn.apache.org/viewcvs/forrest/site/0.7/docs/menu-index.html?view=auto&rev=160895 ============================================================================== --- forrest/site/0.7/docs/menu-index.html (added) +++ forrest/site/0.7/docs/menu-index.html Mon Apr 11 07:58:59 2005 @@ -0,0 +1,243 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> +<div id="menu"> +<ul> +<li> +<h1>Documentation</h1> +<ul> + +<li> +<div class="current">Overview</div> +</li> + +<li> +<a href="../docs/faq.html">FAQs</a> +</li> + +<li> +<a href="../docs/changes.html">Changes</a> +</li> + +<li> +<a href="../docs/todo.html">Todo</a> +</li> + +<li> +<a href="../docs/your-project.html">Using Forrest</a> +</li> + +<li> +<a href="../docs/validation.html">XML Validation</a> +</li> + +<li> +<a href="../docs/linking.html">Menus and Linking</a> +</li> + +<li> +<a href="../docs/searching.html">Searching</a> +</li> + +<li> +<a href="../docs/skins.html">Default Skins</a> +</li> + +<li> +<a href="../docs/skin-package.html">Skin Packages</a> +</li> + +<li> +<a href="../docs/plugins/usingPlugins.html">Plugins</a> +</li> + +<li> +<a href="../docs/views.html">Views-dev</a> +</li> + + +<li> +<a href="../docs/forrest-contract.html">Our Contract</a> +</li> + +<li> +<a href="../docs/compliance.html">Standards Compliance</a> +</li> + + +<li> +<h1>Advanced Topics</h1> +<ul> + +<li> +<a href="../docs/build.html">Building Forrest</a> +</li> + +<li> +<a href="../docs/catalog.html">Using DTD Catalogs</a> +</li> + +<li> +<a href="../docs/sitemap-ref.html">Sitemap Reference</a> +</li> + +<li> +<a href="../docs/project-sitemap.html">Project sitemap</a> +</li> + +<li> +<a href="../docs/plugins/pluginInfrastructure.html">Plugin Infrastructure</a> +</li> + +<li> +<a href="../docs/cap.html">Sourcetype Action</a> +</li> + +</ul> +</li> + + +<li> +<h1>Other versions</h1> +<ul> + +<li> +<a href="../docs.html">Overview</a> +</li> + +<li> +<a href="http://forrest.apache.org/docs/../0.8/">0.8-dev</a> +</li> + +<li> +<div class="current">0.7 (current)</div> +</li> + +<li> +<a href="http://forrest.apache.org/docs/../0.6/">0.6</a> +</li> + +</ul> +</li> + + +<li> +<h1>Upgrading</h1> +<ul> + +<li> +<a href="../docs/upgrading_07.html">Upgrading to 0.7</a> +</li> + +<li> +<a href="../docs/upgrading_06.html">Upgrading to 0.6</a> +</li> + + +</ul> +</li> + + +<li> +<h1>SubProjects</h1> +<ul> + +<li> +<a href="../docs/forrestbar.html">ForrestBar</a> +</li> + +<li> +<a href="../docs/forrestbot.html">Forrestbot</a> +</li> + +<li> +<a href="../docs/forrestbot-web-interface.html">Forrestbot Webapp</a> +</li> + +</ul> +</li> + + +<li> +<h1>Reference docs</h1> +<ul> + +<li> +<h1>DTD documentation</h1> +<ul> + +<li> +<a href="../docs/dtd-docs.html">Overview</a> +</li> + +<li> +<a href="../docs/document-v20.dtdx.html">document-v20</a> +</li> + +<li> +<a href="../docs/howto-v20.dtdx.html">howto-v20</a> +</li> + +<li> +<a href="../docs/faq-v20.dtdx.html">faq-v20</a> +</li> + +<li> +<a href="../docs/document-v13.dtdx.html">document-v13</a> +</li> + +<li> +<a href="../docs/howto-v13.dtdx.html">howto-v13</a> +</li> + +<li> +<a href="../docs/faq-v13.dtdx.html">faq-v13</a> +</li> + +</ul> +</li> + +<li> +<h1>Doc samples</h1> +<ul> + + + +<li> +<a href="../docs/document-v13.html">document-v13</a> +</li> + +<li> +<a href="../docs/document-v20.html">document-v20</a> +</li> + +</ul> +</li> + +</ul> +</li> + + +<li> +<h1>Older Docs</h1> +<ul> + +<li> +<a href="../docs/primer.html">Forrest Primer</a> +</li> + +<li> +<a href="../docs/libre-intro.html">Libre</a> +</li> + +<li> +<a href="../docs/dreams.html">Dream list</a> +</li> + +</ul> +</li> + + + +</ul> +</li> +</ul> +</div>
Propchange: forrest/site/0.7/docs/menu-index.html ------------------------------------------------------------------------------ svn:eol-style = native Added: forrest/site/0.7/docs/plugins/pluginInfrastructure.html URL: http://svn.apache.org/viewcvs/forrest/site/0.7/docs/plugins/pluginInfrastructure.html?view=auto&rev=160895 ============================================================================== --- forrest/site/0.7/docs/plugins/pluginInfrastructure.html (added) +++ forrest/site/0.7/docs/plugins/pluginInfrastructure.html Mon Apr 11 07:58:59 2005 @@ -0,0 +1,588 @@ +<!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.7-dev"> +<meta name="Forrest-skin-name" content="pelt"> +<meta-data></meta-data> +<title>Plugin Infrastructure (v0.7)</title> +<link type="text/css" href="../../skin/basic.css" rel="stylesheet"> +<link media="screen" type="text/css" href="../../skin/screen.css" rel="stylesheet"> +<link media="print" type="text/css" href="../../skin/print.css" rel="stylesheet"> +<link type="text/css" href="../../skin/profile.css" rel="stylesheet"> +<script src="../../skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="../../skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="../../skin/fontsize.js" language="javascript" type="text/javascript"></script> +<link rel="shortcut icon" href="../../favicon.ico"> +</head> +<body onload="init()"> +<script type="text/javascript">ndeSetTextSize();</script> +<div id="top"> +<!--+ + |breadtrail + +--> +<div class="breadtrail"> +<a href="http://www.apache.org/">apache</a> > <a href="http://forrest.apache.org/">forrest</a><script src="../../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script> +</div> +<!--+ + |header + +--> +<div class="header"> +<!--+ + |start group logo + +--> +<div class="grouplogo"> +<a href="http://www.apache.org/"><img class="logoImage" alt="Apache" src="../../images/apache-forrest.png" title="The Apache Software Foundation"></a> +</div> +<!--+ + |end group logo + +--> +<!--+ + |start Project Logo + +--> +<div class="projectlogo"> +<a href="http://forrest.apache.org/"><img class="logoImage" alt="Forrest" src="../../images/project-logo.gif" title="Apache Forrest"></a> +</div> +<!--+ + |end Project Logo + +--> +<!--+ + |start Search + +--> +<div class="searchbox"> +<form action="http://www.google.com/search" method="get" class="roundtopsmall"> +<input value="forrest.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with google:');" value="Search the site with google:" size="25" name="q" id="query" type="text"> + <input name="Search" value="Search" type="submit"> +</form> +</div> +<!--+ + |end search + +--> +<!--+ + |start Tabs + +--> +<ul id="tabs"> +<li> +<a class="base-not-selected" href="../../index.html">Welcome</a> +</li> +<li> +<a class="base-not-selected" href="../../contrib.html">Project</a> +</li> +<li class="current"> +<a class="base-selected" href="../../docs/index.html">0.7 Docs</a> +</li> +<li> +<a class="base-not-selected" href="../../docs/howto/index.html">0.7 How-To</a> +</li> +</ul> +<!--+ + |end Tabs + +--> +</div> +</div> +<div id="main"> +<div id="publishedStrip"> +<!--+ + |start Subtabs + +--> +<div id="level2tabs"> +<a class="base-not-selected" href="../..">Core</a> | <a class="base-not-selected" href="../..">ForrestBot</a> | <a class="base-not-selected" href="../..">ForrestBar</a> +</div> +<!--+ + |end Endtabs + +--> +<script type="text/javascript" language="JavaScript"><!-- + document.write("Published: " + document.lastModified); + // --></script> +</div> +<!--+ + |breadtrail + +--> +<div class="breadtrail"> + + + </div> +<!--+ + |start Menu, mainarea + +--> +<!--+ + |start Menu + +--> +<div id="menu"> +<div onclick="SwitchMenu('menu_selected_1.1', '../../skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">Documentation</div> +<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;"> +<div class="menuitem"> +<a title="" href="../../docs/index.html">Overview</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/faq.html">FAQs</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/changes.html">Changes</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/todo.html">Todo</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/your-project.html">Using Forrest</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/validation.html">XML Validation</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/linking.html">Menus and Linking</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/searching.html">Searching</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/skins.html">Default Skins</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/skin-package.html">Skin Packages</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/plugins/usingPlugins.html">Plugins</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/views.html">Views-dev</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/forrest-contract.html">Our Contract</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/compliance.html">Standards Compliance</a> +</div> +<div onclick="SwitchMenu('menu_selected_1.1.15', '../../skin/')" id="menu_selected_1.1.15Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">Advanced Topics</div> +<div id="menu_selected_1.1.15" class="selectedmenuitemgroup" style="display: block;"> +<div class="menuitem"> +<a title="" href="../../docs/build.html">Building Forrest</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/catalog.html">Using DTD Catalogs</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/sitemap-ref.html">Sitemap Reference</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/project-sitemap.html">Project sitemap</a> +</div> +<div class="menupage"> +<div class="menupagetitle">Plugin Infrastructure</div> +</div> +<div class="menuitem"> +<a title="" href="../../docs/cap.html">Sourcetype Action</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.16', '../../skin/')" id="menu_1.1.16Title" class="menutitle">Other versions</div> +<div id="menu_1.1.16" class="menuitemgroup"> +<div class="menuitem"> +<a title="" href="../../docs.html">Overview</a> +</div> +<div class="menuitem"> +<a title="" href="http://forrest.apache.org/docs/../0.8/">0.8-dev</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/index.html">0.7 (current)</a> +</div> +<div class="menuitem"> +<a title="" href="http://forrest.apache.org/docs/../0.6/">0.6</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.17', '../../skin/')" id="menu_1.1.17Title" class="menutitle">Upgrading</div> +<div id="menu_1.1.17" class="menuitemgroup"> +<div class="menuitem"> +<a title="" href="../../docs/upgrading_07.html">Upgrading to 0.7</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/upgrading_06.html">Upgrading to 0.6</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.18', '../../skin/')" id="menu_1.1.18Title" class="menutitle">SubProjects</div> +<div id="menu_1.1.18" class="menuitemgroup"> +<div class="menuitem"> +<a title="" href="../../docs/forrestbar.html">ForrestBar</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/forrestbot.html">Forrestbot</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/forrestbot-web-interface.html">Forrestbot Webapp</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.19', '../../skin/')" id="menu_1.1.19Title" class="menutitle">Reference docs</div> +<div id="menu_1.1.19" class="menuitemgroup"> +<div onclick="SwitchMenu('menu_1.1.19.1', '../../skin/')" id="menu_1.1.19.1Title" class="menutitle">DTD documentation</div> +<div id="menu_1.1.19.1" class="menuitemgroup"> +<div class="menuitem"> +<a title="" href="../../docs/dtd-docs.html">Overview</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/document-v20.dtdx.html">document-v20</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/howto-v20.dtdx.html">howto-v20</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/faq-v20.dtdx.html">faq-v20</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/document-v13.dtdx.html">document-v13</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/howto-v13.dtdx.html">howto-v13</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/faq-v13.dtdx.html">faq-v13</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.19.2', '../../skin/')" id="menu_1.1.19.2Title" class="menutitle">Doc samples</div> +<div id="menu_1.1.19.2" class="menuitemgroup"> +<div class="menuitem"> +<a title="" href="../../docs/document-v13.html">document-v13</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/document-v20.html">document-v20</a> +</div> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.20', '../../skin/')" id="menu_1.1.20Title" class="menutitle">Older Docs</div> +<div id="menu_1.1.20" class="menuitemgroup"> +<div class="menuitem"> +<a title="" href="../../docs/primer.html">Forrest Primer</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/libre-intro.html">Libre</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/dreams.html">Dream list</a> +</div> +</div> +</div> +<div id="credit"> +<hr> + This is documentation for current release v0.7 + (<a href="http://forrest.apache.org/docs.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> +<!--+ + |alternative credits + +--> +</div> +<!--+ + |end Menu + +--> +<!--+ + |start content + +--> +<div id="content"> +<div title="Portable Document Format" class="pdflink"> +<a class="dida" href="pluginInfrastructure.pdf"><img alt="PDF -icon" src="../../skin/images/pdfdoc.gif" class="skin"><br> + PDF</a> +</div> +<div class="trail"> + Font size: + <input value="Reset" class="resetfont" title="Reset text" onclick="ndeSetTextSize('reset'); return false;" type="button"> + <input value="-a" class="smallerfont" title="Shrink text" onclick="ndeSetTextSize('decr'); return false;" type="button"> + <input value="+a" class="biggerfont" title="Enlarge text" onclick="ndeSetTextSize('incr'); return false;" type="button"> +</div> +<h1>Plugin Infrastructure</h1> +<div id="motd-area"> + This is documentation for current release v0.7 + (<a href="http://forrest.apache.org/docs.html">More</a> ...)</div> +<div id="minitoc-area"> +<ul class="minitoc"> +<li> +<a href="#overview">Overview</a> +</li> +<li> +<a href="#What+is+a+Forrest+Plugin%3F">What is a Forrest Plugin?</a> +<ul class="minitoc"> +<li> +<a href="#pluginTypes">Types of Plugin</a> +<ul class="minitoc"> +<li> +<a href="#inputPlugins">Input Plugins</a> +</li> +<li> +<a href="#outputPlugins">Output Plugins</a> +</li> +<li> +<a href="#internalPlugins">Internal Plugins</a> +</li> +</ul> +</li> +<li> +<a href="#Naming+Conventions">Naming Conventions</a> +</li> +<li> +<a href="#An+Example+Plugin">An Example Plugin</a> +</li> +</ul> +</li> +<li> +<a href="#What+Does+a+Forrest+Plugin+Look+Like%3F">What Does a Forrest Plugin Look Like?</a> +<ul class="minitoc"> +<li> +<a href="#The+IMS+Manifest+Plugin">The IMS Manifest Plugin</a> +</li> +</ul> +</li> +<li> +<a href="#How+does+Installation+work%3F">How does Installation work?</a> +</li> +</ul> +</div> + +<a name="N1000D"></a><a name="overview"></a> +<h2 class="underlined_10">Overview</h2> +<div class="section"> +<p>Forrest can be extended with the addition of plugins. This document + describes what a plugin is and outlines the plugin infrastructure so + that you can start building your own Forrest extensions.</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 document <em>may</em> be out of date. + If you are having problems with any of the details, please search for help + on the developer mailing list. If you can't find your answer ask + for help on that list.</div> +</div> +</div> + + +<a name="N1001D"></a><a name="What+is+a+Forrest+Plugin%3F"></a> +<h2 class="underlined_10">What is a Forrest Plugin?</h2> +<div class="section"> +<p>A Forrest plugin is a set of resources and configuration files that + extend the functionality of Forrest. They will typically consist of a + sitemap, zero or more stylesheets and zero or more schemas.</p> +<p>The plugins sitemap is mounted by Forrest's sitemap after the project + specific sitemap but before the Forrest default matchers. This allows + a plugin to override/extend default Forrest behaviour. By adopting a + plugin model we can keep the core of Forrest tightly + focused on the basic functionality, whilst still facilitating extensions + to suit individual projects needs.</p> +<a name="N10029"></a><a name="pluginTypes"></a> +<h3 class="underlined_5">Types of Plugin</h3> +<p>There are three types of plugin, <span class="codefrag">input</span>, + <span class="codefrag">output</span> and <span class="codefrag">internal</span>. Each plugin has a + specific role to play and extends a different part of Forrest:</p> +<pre class="code"> + internal plugins + (site.xml, abs-linkmap etc.) + | + \|/ + . + input format --> intermediate format --> output format + . . + /|\ /|\ + | | + input plugin output plugin + (**.xml) (**.html, **.pdf etc.) +</pre> +<a name="N1003F"></a><a name="inputPlugins"></a> +<h4>Input Plugins</h4> +<p>Input plugins provide a new source format. For example, the + OpenOffice.org plugin extends Forrest to allow the use of + OpenOffice.org Application file formats.</p> +<p>An input plugin provides an <span class="codefrag">input.xmap</span> file. + This provides the source matchers (i.e. **.xml), it is + mounted in forrest.xmap before the default forrest **.xml behaviour + and therefore can override that default behaviour but it will not + interfere with any internal Forrest infrastructure matches, or any + other plugins infrastructure matches.</p> +<p>An input plugin may also provide a <span class="codefrag">resources.xmap</span> + file. This can be used to match additional resources that are not + stored in XML files, for example, javascript files.</p> +<a name="N10055"></a><a name="outputPlugins"></a> +<h4>Output Plugins</h4> +<p>Output plugins provide a new output format. For example, the + s5 plugin extends Forrest to produce HTML slides from Forrest + documents.</p> +<p>An output plugin provides an <span class="codefrag">output.xmap</span> file. + This provides the relevant output matchers (i.e. + **.html, **.pdf, **.slides), it is mounted before any of the default + matchers for Forrest and so can override this default behaviour.</p> +<a name="N10065"></a><a name="internalPlugins"></a> +<h4>Internal Plugins</h4> +<p>Internal plugins are for advanced use only. They provide ways + of extending or overriding Forrest's + internal operations. For example, the IMSManifest plugin + allows Forrest projects to use an IMS Manifest file instead of + a site.xml and tabs.xml configuration files.</p> +<p>Internal plugins provide an <span class="codefrag">internal.xmap</span> file. + This provides the infrastructure matchers (i.e. + site.xml, faq.xml, issues.xml), and will be mounted before + *any* of the Forrest matches. This sitemap can override any behaviour + within Forrest and so developers of these plugins must be especially + careful with the construction of their matchers, since they will be + processed before any other matchers and consequently can easily break + existing functionality. You must only do a <map:generate ...> + if you are certain you are going to process the full result. </p> +<a name="N10076"></a><a name="Naming+Conventions"></a> +<h3 class="underlined_5">Naming Conventions</h3> +<p>Technically you can name a plugin anything you like. However, we + do have some naming conventions that we recomend you follow. This is + to minimise the chances of collision between plugins from different + developers.</p> +<p>The name should be structured like a java package name, and should + include a relevant reverse domain name. For example:</p> +<pre class="code">org.apache.forrest.plugin.PLUGINNAME</pre> +<pre class="code">net.sf.forrestPlugins.PLUGINNAME</pre> +<p>In addition the name of the plugin should indicate the type of plugin + it is:</p> +<pre class="code">NAME-input</pre> +<pre class="code">NAME-output</pre> +<pre class="code">NAME-internal</pre> +<a name="N1009A"></a><a name="An+Example+Plugin"></a> +<h3 class="underlined_5">An Example Plugin</h3> +<p>In order to fully understand the applicability of Forrest Plugins we + will consider an extension to the way in which Forrest defines the + structure of the site. By default Forrest uses a site.xml file to + define navigation through the site and a tabs.xml file to define the + tabs across the top of the page. But what if we want to use a different + file to describe site structure? For example, what if we want to use an + IMS Manifest file from the SCORM content package standards + (http://www.adlnet.org/).</p> +<p>An IMS Manifest file describes the structure of a site. It is also + possible to define a set of rules for extracting tab information from + such a file. Consequently, it is possible to use an IMSManifest file to + create Forrest's site.xml and tabs.xml files. The advantage would be that + we can then use SCORM compliant content objects within Forrest.</p> +<p>Unfortunately, IMS Manifests are much more complex than site.xml and + tabs.xml files. Therefore, not all users will want to use them. Adding + the functionality as an optional plugin seems to be the ideal + solution.</p> +</div> + + +<a name="N100AB"></a><a name="What+Does+a+Forrest+Plugin+Look+Like%3F"></a> +<h2 class="underlined_10">What Does a Forrest Plugin Look Like?</h2> +<div class="section"> +<p>Plugins will need to conform to a specified directory structure. + This mirrors the default forrest directory structure:</p> +<pre class="code"> +[plugin_name] + | + |-- config files (xmap, skinconf etc.) + | + |-- resources + | + |-- schema + | | + | |-- catalog.xcat + | | + | |-- dtd (DTDs etc.) + | + |-- stylesheets (XSLs etc.) +</pre> +<a name="N100B8"></a><a name="The+IMS+Manifest+Plugin"></a> +<h3 class="underlined_5">The IMS Manifest Plugin</h3> +<p>If we consider the IMS Manifest Plugin described above, we see that we + will need the following files and directory structure:</p> +<pre class="code"> +org.apache.forrest.plugin.IMSManifest-internal + | + |-- sitemap.xmap + | + |-- resources + | + |-- stylesheets + | + |- imsmanifest2site.xsl + |- imsmanifest2tabs.xsl + |- pathutils.xsl + |- repositoryUtils.xsl +</pre> +<p>The sitemap.xmap file will override the default behaviour for the + navigation generation matchers in Forrest, for example, it contains + a matcher as follows:</p> +<pre class="code"> +<map:match pattern="abs-menulinks"> + <map:select type="exists"> + <map:when test="{project:content.xdocs}imsmanifest.xml"> + <map:generate src="{project:content.xdocs}imsmanifest.xml" /> + <map:transform src="resources/stylesheets/imsmanifest2site.xsl"/> + <map:transform src="{forrest:stylesheets}/absolutize-linkmap.xsl" /> + <map:transform src="{forrest:stylesheets}/site2site-normalizetabs.xsl" /> + <map:serialize type="xml"/> + </map:when> + <map:when test="{project:content.xdocs}site.xml"> + <map:generate src="{project:content.xdocs}site.xml" /> + <map:transform src="{forrest:stylesheets}/absolutize-linkmap.xsl" /> + <map:transform src="{forrest:stylesheets}/site2site-normalizetabs.xsl" /> + <map:transform src="{forrest:stylesheets}/normalizehrefs.xsl"/> + <map:serialize type="xml"/> + </map:when> + </map:select> +</map:match> +</pre> +<div class="frame note"> +<div class="label">Note</div> +<div class="content">Note that this matcher will default to the behaviour provided by + Forrest if there is no imsmanifest.xml file present in the project. + At present it is necessary to copy this default behaviour from the original + Forrest *.xmap files. We hope to improve on this in the future.</div> +</div> +</div> + + +<a name="N100D1"></a><a name="How+does+Installation+work%3F"></a> +<h2 class="underlined_10">How does Installation work?</h2> +<div class="section"> +<p>When Forrest installs a plugin it downloads a zip of the plugin code and + extracts it into the <span class="codefrag">plugins</span> directory of Forrest and an entry is made + in <span class="codefrag">src/plugins/sitemap.xmap</span>. For example, installing the + IMSManifest plugin described above will result in the following entry + being added to the plugin sitemap:</p> +<pre class="code"> +<map:select type="exists"> + <map:when test="sitemap.xmap"> + <map:mount uri-prefix="" + src="sitemap.xmap" + check-reload="yes" + pass-through="true"/> + </map:when> +</map:select> + </pre> +<p>Installed plugins are managed by the + FORREST_INSTALL_DIR/plugins/sitemap.xmap file. This file is mounted + by the main Forrest sitemap with the following code:</p> +<pre class="code"> + <map:pipeline internal-only="false"> + <map:mount uri-prefix="" + src="{forrest:plugins}/sitemap.xmap" + check-reload="yes" + pass-through="true"/> + </map:pipeline> + </pre> +<div class="frame note"> +<div class="label">Note</div> +<div class="content">The plugin sitemap.xmap file is automatically managed by Forrest, the + end user need never edit this file.</div> +</div> +</div> + +</div> +<!--+ + |end content + +--> +<div class="clearboth"> </div> +</div> +<div id="footer"> +<!--+ + |start bottomstrip + +--> +<div class="lastmodified"> +<script type="text/javascript"><!-- +document.write("Last Published: " + document.lastModified); +// --></script> +</div> +<div class="copyright"> + Copyright © 2002-2005 The Apache Software Foundation.</div> +<!--+ + |end bottomstrip + +--> +</div> +</body> +</html> Propchange: forrest/site/0.7/docs/plugins/pluginInfrastructure.html ------------------------------------------------------------------------------ svn:eol-style = native Added: forrest/site/0.7/docs/plugins/pluginInfrastructure.pdf URL: http://svn.apache.org/viewcvs/forrest/site/0.7/docs/plugins/pluginInfrastructure.pdf?view=auto&rev=160895 ============================================================================== Binary file - no diff available. Propchange: forrest/site/0.7/docs/plugins/pluginInfrastructure.pdf ------------------------------------------------------------------------------ svn:mime-type = application/pdf Added: forrest/site/0.7/docs/plugins/usingPlugins.html URL: http://svn.apache.org/viewcvs/forrest/site/0.7/docs/plugins/usingPlugins.html?view=auto&rev=160895 ============================================================================== --- forrest/site/0.7/docs/plugins/usingPlugins.html (added) +++ forrest/site/0.7/docs/plugins/usingPlugins.html Mon Apr 11 07:58:59 2005 @@ -0,0 +1,427 @@ +<!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.7-dev"> +<meta name="Forrest-skin-name" content="pelt"> +<meta-data></meta-data> +<title>Extending Forrest with Plugins (v0.7)</title> +<link type="text/css" href="../../skin/basic.css" rel="stylesheet"> +<link media="screen" type="text/css" href="../../skin/screen.css" rel="stylesheet"> +<link media="print" type="text/css" href="../../skin/print.css" rel="stylesheet"> +<link type="text/css" href="../../skin/profile.css" rel="stylesheet"> +<script src="../../skin/getBlank.js" language="javascript" type="text/javascript"></script><script src="../../skin/getMenu.js" language="javascript" type="text/javascript"></script><script src="../../skin/fontsize.js" language="javascript" type="text/javascript"></script> +<link rel="shortcut icon" href="../../favicon.ico"> +</head> +<body onload="init()"> +<script type="text/javascript">ndeSetTextSize();</script> +<div id="top"> +<!--+ + |breadtrail + +--> +<div class="breadtrail"> +<a href="http://www.apache.org/">apache</a> > <a href="http://forrest.apache.org/">forrest</a><script src="../../skin/breadcrumbs.js" language="JavaScript" type="text/javascript"></script> +</div> +<!--+ + |header + +--> +<div class="header"> +<!--+ + |start group logo + +--> +<div class="grouplogo"> +<a href="http://www.apache.org/"><img class="logoImage" alt="Apache" src="../../images/apache-forrest.png" title="The Apache Software Foundation"></a> +</div> +<!--+ + |end group logo + +--> +<!--+ + |start Project Logo + +--> +<div class="projectlogo"> +<a href="http://forrest.apache.org/"><img class="logoImage" alt="Forrest" src="../../images/project-logo.gif" title="Apache Forrest"></a> +</div> +<!--+ + |end Project Logo + +--> +<!--+ + |start Search + +--> +<div class="searchbox"> +<form action="http://www.google.com/search" method="get" class="roundtopsmall"> +<input value="forrest.apache.org" name="sitesearch" type="hidden"><input onFocus="getBlank (this, 'Search the site with google:');" value="Search the site with google:" size="25" name="q" id="query" type="text"> + <input name="Search" value="Search" type="submit"> +</form> +</div> +<!--+ + |end search + +--> +<!--+ + |start Tabs + +--> +<ul id="tabs"> +<li> +<a class="base-not-selected" href="../../index.html">Welcome</a> +</li> +<li> +<a class="base-not-selected" href="../../contrib.html">Project</a> +</li> +<li class="current"> +<a class="base-selected" href="../../docs/index.html">0.7 Docs</a> +</li> +<li> +<a class="base-not-selected" href="../../docs/howto/index.html">0.7 How-To</a> +</li> +</ul> +<!--+ + |end Tabs + +--> +</div> +</div> +<div id="main"> +<div id="publishedStrip"> +<!--+ + |start Subtabs + +--> +<div id="level2tabs"> +<a class="base-not-selected" href="../..">Core</a> | <a class="base-not-selected" href="../..">ForrestBot</a> | <a class="base-not-selected" href="../..">ForrestBar</a> +</div> +<!--+ + |end Endtabs + +--> +<script type="text/javascript" language="JavaScript"><!-- + document.write("Published: " + document.lastModified); + // --></script> +</div> +<!--+ + |breadtrail + +--> +<div class="breadtrail"> + + + </div> +<!--+ + |start Menu, mainarea + +--> +<!--+ + |start Menu + +--> +<div id="menu"> +<div onclick="SwitchMenu('menu_selected_1.1', '../../skin/')" id="menu_selected_1.1Title" class="menutitle" style="background-image: url('../../skin/images/chapter_open.gif');">Documentation</div> +<div id="menu_selected_1.1" class="selectedmenuitemgroup" style="display: block;"> +<div class="menuitem"> +<a title="" href="../../docs/index.html">Overview</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/faq.html">FAQs</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/changes.html">Changes</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/todo.html">Todo</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/your-project.html">Using Forrest</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/validation.html">XML Validation</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/linking.html">Menus and Linking</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/searching.html">Searching</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/skins.html">Default Skins</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/skin-package.html">Skin Packages</a> +</div> +<div class="menupage"> +<div class="menupagetitle">Plugins</div> +</div> +<div class="menuitem"> +<a title="" href="../../docs/views.html">Views-dev</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/forrest-contract.html">Our Contract</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/compliance.html">Standards Compliance</a> +</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 title="" href="../../docs/build.html">Building Forrest</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/catalog.html">Using DTD Catalogs</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/sitemap-ref.html">Sitemap Reference</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/project-sitemap.html">Project sitemap</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/plugins/pluginInfrastructure.html">Plugin Infrastructure</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/cap.html">Sourcetype Action</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.16', '../../skin/')" id="menu_1.1.16Title" class="menutitle">Other versions</div> +<div id="menu_1.1.16" class="menuitemgroup"> +<div class="menuitem"> +<a title="" href="../../docs.html">Overview</a> +</div> +<div class="menuitem"> +<a title="" href="http://forrest.apache.org/docs/../0.8/">0.8-dev</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/index.html">0.7 (current)</a> +</div> +<div class="menuitem"> +<a title="" href="http://forrest.apache.org/docs/../0.6/">0.6</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.17', '../../skin/')" id="menu_1.1.17Title" class="menutitle">Upgrading</div> +<div id="menu_1.1.17" class="menuitemgroup"> +<div class="menuitem"> +<a title="" href="../../docs/upgrading_07.html">Upgrading to 0.7</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/upgrading_06.html">Upgrading to 0.6</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.18', '../../skin/')" id="menu_1.1.18Title" class="menutitle">SubProjects</div> +<div id="menu_1.1.18" class="menuitemgroup"> +<div class="menuitem"> +<a title="" href="../../docs/forrestbar.html">ForrestBar</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/forrestbot.html">Forrestbot</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/forrestbot-web-interface.html">Forrestbot Webapp</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.19', '../../skin/')" id="menu_1.1.19Title" class="menutitle">Reference docs</div> +<div id="menu_1.1.19" class="menuitemgroup"> +<div onclick="SwitchMenu('menu_1.1.19.1', '../../skin/')" id="menu_1.1.19.1Title" class="menutitle">DTD documentation</div> +<div id="menu_1.1.19.1" class="menuitemgroup"> +<div class="menuitem"> +<a title="" href="../../docs/dtd-docs.html">Overview</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/document-v20.dtdx.html">document-v20</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/howto-v20.dtdx.html">howto-v20</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/faq-v20.dtdx.html">faq-v20</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/document-v13.dtdx.html">document-v13</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/howto-v13.dtdx.html">howto-v13</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/faq-v13.dtdx.html">faq-v13</a> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.19.2', '../../skin/')" id="menu_1.1.19.2Title" class="menutitle">Doc samples</div> +<div id="menu_1.1.19.2" class="menuitemgroup"> +<div class="menuitem"> +<a title="" href="../../docs/document-v13.html">document-v13</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/document-v20.html">document-v20</a> +</div> +</div> +</div> +<div onclick="SwitchMenu('menu_1.1.20', '../../skin/')" id="menu_1.1.20Title" class="menutitle">Older Docs</div> +<div id="menu_1.1.20" class="menuitemgroup"> +<div class="menuitem"> +<a title="" href="../../docs/primer.html">Forrest Primer</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/libre-intro.html">Libre</a> +</div> +<div class="menuitem"> +<a title="" href="../../docs/dreams.html">Dream list</a> +</div> +</div> +</div> +<div id="credit"> +<hr> + This is documentation for current release v0.7 + (<a href="http://forrest.apache.org/docs.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> +<!--+ + |alternative credits + +--> +</div> +<!--+ + |end Menu + +--> +<!--+ + |start content + +--> +<div id="content"> +<div title="Portable Document Format" class="pdflink"> +<a class="dida" href="usingPlugins.pdf"><img alt="PDF -icon" src="../../skin/images/pdfdoc.gif" class="skin"><br> + PDF</a> +</div> +<div class="trail"> + Font size: + <input value="Reset" class="resetfont" title="Reset text" onclick="ndeSetTextSize('reset'); return false;" type="button"> + <input value="-a" class="smallerfont" title="Shrink text" onclick="ndeSetTextSize('decr'); return false;" type="button"> + <input value="+a" class="biggerfont" title="Enlarge text" onclick="ndeSetTextSize('incr'); return false;" type="button"> +</div> +<h1>Extending Forrest with Plugins</h1> +<div id="motd-area"> + This is documentation for current release v0.7 + (<a href="http://forrest.apache.org/docs.html">More</a> ...)</div> +<div id="minitoc-area"> +<ul class="minitoc"> +<li> +<a href="#overview">Overview</a> +<ul class="minitoc"> +<li> +<a href="#What+plugins+are+available%3F">What plugins are available?</a> +</li> +</ul> +</li> +<li> +<a href="#How+is+a+Plugin+Installed%3F">How is a Plugin Installed?</a> +<ul class="minitoc"> +<li> +<a href="#Upgrading+from+a+Version+of+Forrest+Without+Plugins">Upgrading from a Version of Forrest Without Plugins</a> +</li> +</ul> +</li> +<li> +<a href="#Avoiding+Plugin+Conflicts">Avoiding Plugin Conflicts</a> +</li> +<li> +<a href="#Further+Reading">Further Reading</a> +</li> +</ul> +</div> + +<a name="N1000D"></a><a name="overview"></a> +<h2 class="underlined_10">Overview</h2> +<div class="section"> +<p>Forrest provides the core functionality for generating documentation + in various output formats from a range of input formats. However, it + does not end there. Forrest can be extended through the addition of + plugins. This document serves as an introduction to the Forrest + plugin mechanism.</p> +<a name="N10016"></a><a name="What+plugins+are+available%3F"></a> +<h3 class="underlined_5">What plugins are available?</h3> +<p>You can run the command <span class="codefrag">forrest available-plugins</span> to get + a list of the known plugins for Forrest.</p> +<p>If you would like to have your own plugin added to this list then + contact the <a href="http://forrest.apache.org/mail-lists.html">developer mailing list</a>.</p> +</div> + + +<a name="N1002B"></a><a name="How+is+a+Plugin+Installed%3F"></a> +<h2 class="underlined_10">How is a Plugin Installed?</h2> +<div class="section"> +<p>If a site requires one or more plugins then the site designer will + have named them in the <span class="codefrag">project.required.plugins</span> property + in the projects <span class="codefrag">forrest.properties</span> file. When Forrest + builds the site it will automatically discover the plugin and install + it. In otherwords, the user need do nothing. For example, + <span class="codefrag">project.required.plugins=org.apache.forrest.plugin.OpenOffice.org,simplified-docbook</span> + will cause Forrest to load the plugins called "org.apache.forrest.plugin.OpenOffice.org" and + "simplified-docbook".</p> +<p>By default a new forrest project includes plugins to generate + PDF output from your source documents.</p> +<a name="N10040"></a><a name="Upgrading+from+a+Version+of+Forrest+Without+Plugins"></a> +<h3 class="underlined_5">Upgrading from a Version of Forrest Without Plugins</h3> +<p>The plugin functionality was introduced in version 0.7 of Forrest. + At this time some of the functionality previously in Forrest was + extracted into a plugin. However, we have not broken backward + compatability with earlier versions. In the absence of a + <span class="codefrag">project.required.plugins</span> property in the projects + <span class="codefrag">forrest.properties</span> file all plugins that contain + functionality previously part of Forrest itself will be loaded + automatically. Unless you intend to use new functionality provided + by a plugin you will not need to make any changes top your project.</p> +<p>If you do require additional plugin functionality, be sure to + include all required plugins in the + <span class="codefrag">project.required.plugins</span> property in the project's + <span class="codefrag">forrest.properties</span>. You can view + <span class="codefrag">main/webapp/default-forrest.properties</span> + to see the names of plugins that provide previously core + functionality.</p> +<p>It is also worth noting that there is a small performance + improvement if you remove plugins that are not in use. Therefore, + if you do not use one or more of the plugins named in the + <span class="codefrag">project.required.plugins</span> property of + <span class="codefrag">main/webapp/default-forrest.properties</span> + it is recomended that you override this value in your project's + <span class="codefrag">forrest.properties</span> file.</p> +</div> + + +<a name="N10069"></a><a name="Avoiding+Plugin+Conflicts"></a> +<h2 class="underlined_10">Avoiding Plugin Conflicts</h2> +<div class="section"> +<p>Clashes between plugins can occur. For example, the simplified-docbook + and full docbook plugins may try and process the same files. In this + instance the one that is mounted first will take precedence. Plugins + are mounted in the order they appear in the + <span class="codefrag">project.required.plugins</span> property, therefore the mounting + order and therefore processing precedence is under user control.</p> +</div> + + +<a name="N10076"></a><a name="Further+Reading"></a> +<h2 class="underlined_10">Further Reading</h2> +<div class="section"> +<ul> + +<li> +<a href="../../docs/plugins/pluginInfrastructure.html">Plugin Infrastructure</a> +</li> + +<li> +<a href="../../docs/howto/howto-buildPlugin.html">How to build a Plugin</a> +</li> + +</ul> +</div> + +</div> +<!--+ + |end content + +--> +<div class="clearboth"> </div> +</div> +<div id="footer"> +<!--+ + |start bottomstrip + +--> +<div class="lastmodified"> +<script type="text/javascript"><!-- +document.write("Last Published: " + document.lastModified); +// --></script> +</div> +<div class="copyright"> + Copyright © 2002-2005 The Apache Software Foundation.</div> +<!--+ + |end bottomstrip + +--> +</div> +</body> +</html> Propchange: forrest/site/0.7/docs/plugins/usingPlugins.html ------------------------------------------------------------------------------ svn:eol-style = native Added: forrest/site/0.7/docs/plugins/usingPlugins.pdf URL: http://svn.apache.org/viewcvs/forrest/site/0.7/docs/plugins/usingPlugins.pdf?view=auto&rev=160895 ============================================================================== Binary file - no diff available. Propchange: forrest/site/0.7/docs/plugins/usingPlugins.pdf ------------------------------------------------------------------------------ svn:mime-type = application/pdf