Added by Niels van Kampenhout, last edited by Niels van Kampenhout on Dec 06, 2007

Labels:

Enter labels to add to this page:
Wait Image 
Looking for a label? Just start typing.

Starting point / basic requirements

An easy to (learn to) use tool to make simple backend templates, which form the vast majority of use cases. The tool should however be "optional" so that complex templates can be created using the full possibilities of the frontend framework.

Design

A document is represented by a little node tree ("bonsai tree") in JCR.

A document type is described by a JCR node type.

A template is a collection of form widgets through which the user edits the various properties of a document of a certain type. There are four aspects to a template:

  • layout: the ordering of the widgets
  • plugins: the GUI plugins used for each widget
  • coupling: which JCR property is represented by which widget
  • validation: allowed input

A template is described by a document (== a "bonsai tree" in the JCR) of a special node type "template".

The tool is implemented by a Wicket plugin ("template plugin") which dynamically adds children to itself based on the template document in the JCR. This is technically the same construction as the dynamically loaded workflow plugins based on node type (already implemented).

Because a template is a document with a node type, it can be edited using the same tool!

So simple templates can be created using the template plugin itself. Complex templates can be created by working at JCR node (type) level, by creating custom widgets, or by creating a completely custom template plugin.

Action plan

Our first aim is a basic proof of concept which support very simple templates (e.g. only containing a title and a date and a body). Layout will be hardcoded, validation not implemented yet.

The second step is to make a template for editing such simple templates.

From this point we can add features as needed.