Kajona
Encyclopedia
Kajona is a PHP5 based content management
Content management
Content management, or CM, is the set of processes and technologies that support the collection, managing, and publishing of information in any form or medium. In recent times this information is typically referred to as content or, to be precise, digital content...

 framework, released and developed as an open source project using the LGPL-licence.
The system requires a relational database system such as MySQL
MySQL
MySQL officially, but also commonly "My Sequel") is a relational database management system that runs as a server providing multi-user access to a number of databases. It is named after developer Michael Widenius' daughter, My...

, PostgreSQL
PostgreSQL
PostgreSQL, often simply Postgres, is an object-relational database management system available for many platforms including Linux, FreeBSD, Solaris, MS Windows and Mac OS X. It is released under the PostgreSQL License, which is an MIT-style license, and is thus free and open source software...

 or SQLite
SQLite
SQLite is an ACID-compliant embedded relational database management system contained in a relatively small C programming library. The source code for SQLite is in the public domain and implements most of the SQL standard...

. Due to the abstraction of the database provided by Kajonas database-layer, nearly all relational database systems can be connected. Kajona uses UTF-8
UTF-8
UTF-8 is a multibyte character encoding for Unicode. Like UTF-16 and UTF-32, UTF-8 can represent every character in the Unicode character set. Unlike them, it is backward-compatible with ASCII and avoids the complications of endianness and byte order marks...

 to store its content, resulting in a system predestinated to be used for international websites.
Since the system is written as a framework, external developers are able to enrich the system with new functionalities using one of the many hooks / plugin concepts Kajona provides. There are HotSpots for nearly every aspect such as for widgets, search plugins, elements or modules.

Functionalities

Kajona ships with a set of modules and page-elements by default, including a comprehensive page-management (including a WYSIWYG
WYSIWYG
WYSIWYG is an acronym for What You See Is What You Get. The term is used in computing to describe a system in which content displayed onscreen during editing appears in a form closely corresponding to its appearance when printed or displayed as a finished product...

 editor for in-site-editing), navigation management, a search-module and image-elements including the support of on-the-fly image manipulations such as resizing or cropping images. Due to the extensibility, additional modules and elements may be added or removed from existing installations. A complete list of modules may be obtained from the projects website. Besides English and German, the backend is also available in Russian, Portuguese and Bulgarian.
A review of the functions and the system was also published on the (german) content manager portal contentmanager.de.

Architecture

Kajona is separated in several layers, providing a separation of concerns.
As already mentioned, the database-layer can be used with nearly every relational database-system. By default, the system ships with drivers for MySQL
MySQL
MySQL officially, but also commonly "My Sequel") is a relational database management system that runs as a server providing multi-user access to a number of databases. It is named after developer Michael Widenius' daughter, My...

 (mysql, mysqli), PostgreSQL
PostgreSQL
PostgreSQL, often simply Postgres, is an object-relational database management system available for many platforms including Linux, FreeBSD, Solaris, MS Windows and Mac OS X. It is released under the PostgreSQL License, which is an MIT-style license, and is thus free and open source software...

 and SQLite
SQLite
SQLite is an ACID-compliant embedded relational database management system contained in a relatively small C programming library. The source code for SQLite is in the public domain and implements most of the SQL standard...

 (as on 01/11).

The business-logic layer consists of a number of business objects, each representing a single entity within the system, e.g. a page or an image. The layer provides the logic to handle those objects including CRUD-operations (create, read, update, delete). The system handles the lifecycle of each object including the logic to update or insert new object and synchronizing the objects with the database-layer.

Since the presentation-layer only makes use of the business objects, there is absolutely now database-knowledge required when working with the presentation. In addition, the presentation-layer contains the controller, triggering all further actions within the framework.

Templates

Kajona uses a template-engine in order to render the layout. The engine provides a way to separate layout from content and differentiates between page- and template-elements. This results in a flexible way to create layouts and provides a way to reuse templates.
The templates are enriched with placeholders, later being filled with the contents provided by the business objects.
Since all generated content is cached, the system delivers the pages out of the cache after the initial generation.
Templates can be used for the frontend and the (administrative) backend.

Permissions

The permissions are granted using a hierarchical structure, providing the possibility to inherit the settings from a parent-node.

History

In 2004 Kajona was built in its initial version reflecting a shared list of scripts often used by a few web developers. Those scripts were combined by introducing interfaces in order to provide easier interaction. Resulting in a first script library the idea of a framework was born and released as version 1.0.
Version 2 was released in 2005, followed by the version 2.1 in 2006. Since the project was still a rather unstructured list of independent scripts, a complete rewrite was done for version 3, released in January 2007. The codebase was reorganized to be fully object-oriented, providing a strict separation of concerns and a full division of logic and layout.
As of now (Jan 2011), Kajona has grown to a comprehensive, flexible and robust framework providing a large number of predefined modules and elements for a wide range of capabilities.
The framework is used by public institutes such as the University of Kassel
University of Kassel
The University of Kassel, founded in 1970, is one of the newer universities in the state of Hesse. The university is in Kassel, and as of September 2010 has about 18,113 students...

, the ETH Zürich
ETH Zurich
The Swiss Federal Institute of Technology Zurich or ETH Zürich is an engineering, science, technology, mathematics and management university in the City of Zurich, Switzerland....

 and a lot of small and middle-sized companies around Europe and all over the world as in South-Africa.
The release 3.3 was also featured on Heise Open and other websites.

Derivates

There are a few forks of Kajona such as Sycon being developed non-public.
In addition, the linux distribution Kajonix provides a live-cd containing the latest Kajona release.

Criticism

Though Kajona seems to be rather stable and major, the number of modules and extensions is not that high. In addition, the community seems to consist of mainly German members. Even if there are translated documents and tutorials, the German documentation is much more comprehensive.

External links

The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK