Open CSP stores metadata of pages in slots. Pages are displayed with various components (for which the Chameleon skin is used), which can look differently based on the configuration found in class definition pages.

Metadata stored in slots

Before slots were used, there were two common ways to deal with structured data:

  • A) Have templates with structured data in between the content (free text) of a page.
  • B) Have one template that wraps the entire page content, with some parameters for structured data and also a parameter for free text

The advantage of using slots is that you can separate the metadata from the content and also separate the storing of the data from displaying it. This reduces the risk of making mistakes when editing, while allowing you to have forms for editing structured data and to use VisualEditor to edit the main content.

Note: data is stored in SMW properties as well, but class definitions do not rely on this. SMW is used for example for Search and Pages. It would technically be possible to modify the Open CSP framework to work with a different data storage extension, if you would make your own alternatives for the pages that use SMW queries or WikiSearch.

The following slots are used by Open CSP:

csp-base-props

In this slot Template:Base properties is used to store data dat is common to all pages, such as the Class and Title:

{{Base properties
|Class=
|Title=
}}

csp-class-props

In this slot Template:Csp class properties is used to store data that is specific to each class, based on the class definition:

{{Csp class properties
|Parameter1=Value1
|Parameter2=Value2
|...
}}

csp-data

This is a json slot which the framework only uses for class definition pages, but could be used for storing any json data on content pages as well (if you make your own templates/forms for this).

Example slots of a content page

Example slots of a class definition page

Components

Open CSP uses the Chameleon skin to be able to display pages with customizable components. The following components are used:

  • Header
  • Sub-header
  • Sidebar
  • Footer
  • Main

Open CSP uses system messages inside these components. These system message contain wikitext with some logic through various parser functions and lua functions, in order to display a component that takes into account class definitions.