Zena (software)

From Wikipedia, the free encyclopedia

Zena
Zena logo
Developed by Gaspard Bucher
Latest release alpha
OS Cross-platform
Genre Content management system
License MIT license
Website http://zenadmin.org

Zena is a content management system (CMS) written in the Ruby programming language and built upon the Ruby on Rails web framework.

Contents

[edit] Design

Zena runs on the Apache web server as frontend to Mongrel web server on the Linux, BSD, Mac OS X and Solaris platforms. It uses MySQL as it's primary database management system. Any other databases supported by Ruby on rails should also work but are not tested yet.

Zena is inherently a multi language, multi user CMS with a powerful xhtml templating language called Zafu. The design of the software has been made to focus on the user's information domain by letting users create new classes of objects to represent their data. For example, a musician might create classes such as "Concert" or "Album". The look and feel of the websites created using Zena are totally defined by the templating language with support for drag&drop, inline ajax editing and live filters.

All data in Zena are subclasses of the base class "Node". A page is displayed depending on the class of the Node, a mode and a format. For example, a "Concert" entry might be displayed by a specialized template for "Concert" in mode "print", a "ConcertList" entry could be displayed in "rss" format, a "Contact" entry could be downloaded as vCard format.

[edit] Zafu example

Display the list of the next five concerts with an "add" button to create new "Concert" entries. The add button will reveal a form created from the content of the "each" element.

<ul do='concerts' order='event_at DESC' limit='5'>
  <li do='each'><<span class='date' do='show' date='log_at' tformat='short_date'>03.08</span> <r:link/></li>
  <li do='add' klass='Concert'/>
</ul>

The resulting html page:

Image:Zafu_result_ex1.png

The same example with the "+" button pressed:

Image:Zafu_form_ex1.png

As we can see, zena guessed that we need a date input and a text input from the definition of the 'each' loop.

[edit] See also

[edit] References

[edit] External links