blob: ff6c1507a52295876e0c46a408341cba7ce12246 [file] [log] [blame]
Module categories:
==================
The modules in Lenya are currently split up into the following categories:
* modules-core
This set of modules implements the core functionality of Lenya.
Modules in the core will not have any dependencies outside of the core.
* modules
This is where most of the add-on functionality goes: support for specific
editors, document types, the nifty new feature of the day, etc.
* modules-optional
The scratchpad. Modules in here do not necessarily have to work or even
compile, nor have a stable API. (FIXME: should modules that require
external code to be useful also be moved here, such as tinymce or
fckeditor?
* modules-legacy
This is the place for modules that do not adhere to the programming
conventions of the trunk, but are still needed as no updated version is
available. For instance, modules that use the 1.2 way of handling usecases
without using the usecase framework should go here. (FIXME: does that make
the kupu module a candidate?)
Directory Layout:
=================
Each module should adhere to the following directory layout (subdirectories
if appropriate, take a look at the core modules if in doubt):
mymodule/
config/ configuration files
module.xml module descriptor
cocoon-xconf/ patches for cocoon.xconf:
component-mycomponent.xconf
usecase-myusecase.xconf
usecases/
myusecase.jx usecase view
java/
src/ Java source files
lib/ Java libraries
xslt/ XSLT stylesheets
sitemap.xmap main module sitemap
module.xml
==========
Each module must contain a description file config/module.xml:
<module xmlns="http://apache.org/lenya/module/1.0">
<!-- the ID *must* start with the package name of
your custom Java code -->
<id>org.myproject.lenya.modules.myeditor</id>
<!-- build dependencies; see note below -->
<depends module="org.apache.lenya.modules.usecase"/>
<depends module="org.apache.lenya.modules.webdav"/>
<!-- the Java package your module belongs to -->
FIXME: why is this needed? afaiu it could be gleaned from the id...
<package>org.myproject.lenya.modules</package>
<!-- a version string -->
FIXME: what does this do? just for information, or is there version
management?
<version>0.1-dev</version>
<!-- a short name for your module -->
<name>My Own Editor</name>
<!-- the required lenya version -->
FIXME: is this actually used?
<lenya-version>2.0-dev</lenya-version>
<!-- a detailed description of your module -->
<description>
This is my own editor.
For more information, visit http://myproject.org/editor.
</description>
</module>
NOTE: be careful to specify the depencies correctly. The <depends/> element
is meant for java code dependencies only, i.e. issues that affect
compilation. If a module merely links to another module's usecases in its
views, that does not qualify as a dependency (although maybe it should at
some point in the future).
see also:
=========
Please refer to the online docs at
http://lenya.apache.org/docs/1_4/reference/modules/index.html.