OrsaCMS source code is Open Source and has source code located at Google Hosted Projects http://code.google.com/p/orsacms/ and is primarily developed by Orsa Studio and the open source community.

This document changes from day to day!
This software is pre-alpha quality and should not be used on a live website (up to your discretion of course). (21st March 2010)
Any alerts or critical notices will appear here

1. General Introduction

Orsa CMS is a Content Management System designed to allow people to update the contents of their website easily. A user can log into the CMS application and modify the contents of their website including the page contents, news, events and articles which appear on the website.

From the users point of view, this CMS is designed to be user friendly to allow normal users to easily access the contents they wish to update and change them dynamically. This allows the website to be updated as needed. From the computer programmers point of view this CMS is designed to allow rapid development of a website.

1.a. Open Source Licence, attribution and helping the community

Creative Commons License
This work is licensed under a Creative Commons Attribution 3.0 Unported License.

OrsaCMS is an open source CMS released under the same open source licence as Liftweb which is the Apache 2.0 Licence. This is a very permissive licence allowing you to create either commercial or non-commercial works derived from, containing or communicating with Orsa CMS. The reason the licence is so free and the software so free is that I believe in principle that you should be free to do what you like with the source code you use.

In return, I expect you to contribute back to the community to enhance Orsa CMS. Not only does this enhance the CMS for the good of everyone involved but it also improves the CMS for your own use within your company or individual use. Please share your enhancements of Orsa CMS as either commercial plugins, commercial software or open source software.

OrsaCMS is developed mainly by staff at Orsa Studio for the purpose of being the main Content Management System for the customers and in the companies website development. The word Orsa has no special meaning, the relationship between Orsa Studio and OrsaCMS is one of intentional coincidental naming only.

Another small request I have (but I do not legally require from you, you have the option to NOT do this) is to attribute OrsaCMS as the CMS you use to build your website. Please provide a link from your website to OrsaCMS website saying "Developed with OrsaCMS" http://www.orsacms.org/. This helps OrsaCMS become more widely known which also helps you.

2. Technical Introduction

Orsa CMS (Content Management System) is a Scala language, Liftweb based CMS and is built on the latest and greatest technology combining Adobe Flex 4, GraniteDS, Seam Framework, LiftWeb, H2 database, Scala, Java and Jackrabbit Content Store.

Since OrsaCMS uses LiftWeb and Scala for the public view of the website, familiarity with this framework and language is a must in order to develop a website.

In my opinion, if you are not familiar Scala and Liftweb, then please note that Scala is not as easy as straight HTML and PHP and therefore requires some learning time. However the benefits of the language and framework can result in a faster time to develop your website and a more secure website. For a website development company this combination of CMS and Liftweb framework can lead to a faster turn-around time on development of websites and therefore decreased cost for website production. Also the ease of use of the CMS can be more satisfactory for the customer. Conversely, Scala developers may cost more than PHP developers or may have to be trained in-house.

2.a. Software Structure

The CMS software is split into three conceptual parts, the public website which is html pages, the CMS server side and the CMS client side. To simplify discussion the terms I will use is Website, Client CMS and Server CMS. This separation allows each software part to be developed relatively independently and fortunately for the new OrsaCMS developer it is only necessary to know Liftweb framework (Scala of course) and how to use the CMS client side from a users perspective. For developers who already use Liftweb framework or choose to use Liftweb framework this makes OrsaCMS a good choice as a CMS for their data.

Another way to view the software can be in a stack. In the following image the website is "HTML Website", the client CMS is "FLEX/HTML based client CMS" and the server CMS is the "SEAM Framework" and the code developed within.

2.b. Software architecture

The software is developed with the following principles:

The different technologies chosen fulfill a purpose, the H2 database stores all data, Jackrabbit is also configured to store all its data in the same H2 database. Although this uses the H2 database by default, any other database could be configured in place of H2, H2 is just convenient and small with a simple administration panel built in. Some data is stored on the file system but this is only configuration files and the Apache Lucene index files. (Lucene is part of Jackrabbit). The general principle here is to store all data in the database so that if we move the CMS to a different computer it is a simple process to copy the database across.

Jackrabbit is a content store designed to handle data typically used within CMS and Document Management Systems. At this time it is poorly utilized by OrsaCMS, the main features being used are the hierarchical content store and the ordering of nodes. This allows pages to be placed in a tree structure reflecting the menu structure of the website and the menu items to be ordered. Jackrabbit has many more features such as searching content stored, versioning of nodes and so much more which are not yet being used. It is the longer term intention to use Jackrabbit for most of the content stored.

There is a link between the content stored in Jackrabbit and the database, the database table o_page contains the page data, o_page has a column jcr_node which is the location of the page within Jackrabbit. A typical value may be /root/aboutus which would be the about us page. So there is a duplication of data in the Jackrabbit and database, an update in one would require an update in the other. Also this link is not a database reference, it is just a logical link.

Scala and Liftweb are a powerful technology for the development of the public side of the website, arguably, a programmer who understands Liftweb well could produce a website very quickly. I have a preference to use JQuery and Blueprint on the website which is also the general preference for Liftweb framework. By embracing Liftweb, Orsa CMS can take advantage of the existing code for functionality such as RSS feeds, Paypal integration, Open-ID and also the community surrounding Liftweb.

The user interface of the CMS is programmed in FLEX 4 (codename Gumbo) which is in Beta at this moment (24th March 2010), the CMS uses the WYSIWYG editor called CKEditor. Although this editor is a HTML based editor, it can be used within FLEX by use of a IFrame embedded at a higher z-index than the FLEX user interface. This is facilitated by a library called FlexIFrame which allows HTML to be placed in this IFrame and managed by the Flex application. One of the benefits of FLEX is that there are many rich application libraries around which are commercial and non-commercial and these can give a fantastic user interface looking and behaving close to a desktop application, all within the web browser.

Communications between the FLEX user interface and the server side use GraniteDS. This is a library which connects FLEX with Java server sides to allow data to be transferred easily between the two, in this case we have SEAM Framework on the server side using Hibernate to access the database. GraniteDS keep track of objects going into and out of the database and caching occurs on both client and server sides. Also it automatically generates Actionscript proxy code from the Hibernate entities on the server side. This code can then be used within the FLEX application to allow for typed access to objects on the client side.

The software build process uses Maven builds.

3. User Guide

3.a. Login

Navigate to the URL of the CMS such as http://www.youwebsite.com/orsacms/ and enter the username and password to login to the CMS.

3.b. Layout of CMS screen

After logging into Orsa CMS the page screen is shown first to allow changes to be made to web-pages within the website. Other tabs across the top allow for navigation to different areas of the CMS. A rich editor is located on the right hand side to allow for editing of content in a WYSIWYG editor.

On the Pages screen it is possible to edit the pages by clicking on the page name on the left hand side, this brings the pages contents into the WYSIWYG editor to allow it to be edited. After editing the content here, it can be saved by pressing the save button at the top of the page.

3.c. Navigation of CMS

After logging into the CMS, a top tab bar is present which allows navigation to the main areas of content administration. Currently these areas are Pages, Articles, News and Events. By clicking on different tabs the user can navigate to the different areas.

3.d. Creating a normal web-page

A new web page can be created by clicking on the create page button on the Pages screen. This leads to a page creation wizard where page details can be entered to facilitate the creation of the page.

After entering these details, proceed to the next page of the wizard. In this case I wish to create my page as a sub-page of an existing menu item, "About Us". Then proceed through the remainder of the wizard and press the Finish button at the end.

After the page has been created it can be seen in the menu structure, click on the parent page to see its child pages, in this case it has been created under "About Us". In the following two images, the left hand image shows the menu structure on the live website and the menu structure within the CMS. Notice that "Menu Page" has been created here under "About Us".


Glossary