Chon CMS ALPHA
We really want to keep things simple, but when we developed the framework we wanted to be able to create each use case that is currently implemented online. That is the big challenge, keep things simple while enabling a model for anything. With help of great opensource techologies available online we were able to do so.
- OSGI - plugin architecture (using apache felix implementation)
- Java Content Reposotory (JCR) - great specification for storing hierarchical data (using apache jackrabbit implementation)
- Velocity Template - apache templating engine
org.chon.cms.core plugin defines Velocity Template renderer for node. That is usually used for HTML rendering of a node with apache velocity template. Node is merged with template using $this variable, and with all its properties and childs it is enabled in design.
Core plugins defines several types of nodes that will by default use predefined template file for rendering a node:
- RootNode - root node (Home Page), that is www public node in repository, usually redirects to html node, but can be rendered in pages/home.html
- CategoryNode - simple hierarchy node that contains childs, rendered in pages/category.html
- HtmlNode - node that contains html content and can also have childs (images, documents), rendered in pages/view.html
Each node requested is checked in its type definition to find a renderer. All above will use velocity template renderer that merge node content with velocity template.
Page can have additional widgets that are injected by designer using extenstions (eg, menus).
Main concept would be:
JCR Node + HTML (Velocity) Design + Extenstions (Registered in User Plugins) = Page View