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/04/11 16:59:16 UTC
svn commit: r160895 [23/28] - in forrest/site/0.7: ./ docs/ docs/howto/
docs/images/ docs/plugins/
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