Kajona

From Wikipedia, the free encyclopedia
Jump to: navigation, search
Kajona
Developer(s) Kajona Community
Stable release 4.5 / June 23, 2014 (2014-06-23)[1]
Development status Active
Written in PHP PHP5 JavaScript HTML CSS SQL LESS
Operating system Cross-platform
Type Content management system
License GNU Lesser General Public License
Website http://www.kajona.de/

Kajona is a PHP5 based content management framework, released and developed as an open source project using the LGPL-licence. The system requires a relational database system such as MySQL, PostgreSQL or SQLite. Due to the abstraction of the database provided by Kajonas database-layer, nearly all relational database systems can be connected. Kajona uses UTF-8 to store its content, resulting in a system suitable 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.

Features[edit]

Kajona ships with a set of modules and page-elements by default, including a comprehensive page-management (including a WYSIWYG 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.[2] Besides English and German, the backend is also available in Russian, Portuguese, Swedish and Bulgarian. A review of the functions and the system was also published on the (German) content manager portal contentmanager.de.[3]

Architecture[edit]

Kajona is separated in several layers, providing a separation of concerns. The database-layer can be used with nearly every relational database-system. By default, the system ships with drivers for MySQL, MariaDB (mysql, mysqli), PostgreSQL, Oracle and SQLite (as on 01/13).

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 no database-knowledge required when working with the presentation. In addition, the presentation-layer contains the controller, triggering all further actions within the framework.

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 are granted using a hierarchical structure, providing the possibility to inherit the settings from a parent-node.

Since Version 4, all modules and templates are distributed as packages. The code-files of different modules are no longer merged into common folders, instead a new filesystem-layout separates each package and provides a virtual filesystem in order to overwrite or redefine files shipped with the packages without having to modify the original files. Therefore updates can be enrolled without the danger of breaking former modification.

Starting with version 4.3, the framework-aspect is now way more present. Many modules are now fully decoupled. This results in independent backend- and portal-parts, making the backend usable for rapid web application development.[4]

History[edit]

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.[5] The codebase was reorganized to be fully object-oriented, providing a strict separation of concerns and a full division of logic and layout.[6] 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.[7][8] The framework is used by public institutes such as the University of Kassel, the ETH Zürich and a lot of small and middle-sized companies around Europe and all over the world as in South-Africa.[9] The release 3.3 was also featured on Heise Open [10] and other websites.[11] The project is now working on a new major release, version 4.[12] The development-progress may be followed in a blog created for the v4-development.[13] Since v4 will introduce fundamental changes such as a new filesystem-layout,[14] the release is not yet scheduled. In addition, the feature-development of the v3-branch was stopped, only security-fixes will be deployed and released.

Derivatives[edit]

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

External links[edit]

References[edit]