Open source cms for mobile and desktop websites

CMS - Basic concepts

a short overview of the components and essential terms of nive applications

Definitions and basics

Pages, Content elements, Element container and Objects

Page refers to the basic container grouping all elements to be rendered as a single web page. It manages content elements and columns.

Element container refers to pages, columns or boxes, that manage content elements. A column can only be added to pages and must be included in the main template.

Content elements refers to different kinds of data included in pages, f.e. texts, images …

Object refers to any of the above, distinguished by types. All objects are stored in the database.

Roots

Root refers to the entry points to access objects stored in the database. Roots provide search functionality, object lookup and other utility functions. They do not store any data themselves.

Nive uses two different roots: one for the edit mode (website/editor) and one for public rendering of the website (website/root).

  • See api/root for development

Application and Portal

Application refers to the CMS itself. It manages all configurations and roots.

The portal manages applications and additional components like the user database. You can combine multiple websites in one portal. Technically the portal is the pyramid/WSGI root object.

  • See api/application, api/portal for api details

Structure

The CMS uses a tree structure to store and access content, such as the following with the components explained above:

Portal
  |- CMS application
       |- Root / ElementContainer
            |- Element
            |- Page / ElementContainer
                 |- Element

Tools

Tools provide special functions for object extension, administration or maintenance, f.e. to send mails or export data.

  • See api/tools for api details

Toolbox widgets

The toolbox contains widgets loaded for the current context and the website in general. Extension modules may define further useful widgets.

Editor pages

Editor pages provide forms and user interfaces for adding, editing and sorting. The selection of available editor pages are object specific. Extension modules may define further useful editor pages.

Workflow

Pages can be attached to a publishing workflow. The workflow is by default disabled.

Development

Configuration

Most parts of nive are defined and registered by configuration objects. Each configuration defines required and optional settings for a certain component.

  • See api/definitions for api details

Views

Pages (and all objects) are looked up by their path. The path is made up of ids (in numbers) or readable path names (by default of readable path names). If the browser requests a certain page, the page itself is never called directly by the pyramid. Instead an intermediary view is called with the page object to be rendered as context.

In other words the rendering functionality including templates is separated from the objects. The connection is established by view definitions. (Technically this is provided by the pyramid viewing machinery. For an in depth documentation refer to pyramid views)

  • See templates
  • See api/view for api details

Modules

Nive provides various plugin points for modular development and extension. The most important are for object types, tools and views. Modules need specific meta definitions to be simply plugged in.

  • See api/definitions for api details

Forms

Object definitions include default form configurations for adding and editing objects. These forms are defined in the object type configuration.

  • See api/forms for api details

Events

The application includes an object based event mechanism to easily include custom python functions on object load, commit, update etc.

  • See api/events for api details

Data storage and lookup

Every object has its own unique id (a number), no matter what type and where in the hierarchy. Objects are referenced in a tree structure and loaded as subobjects of their parent.

Objects have a meta, data and file layer accessible as object attributes to load and store data. You can use these to get and change values in any template or python function. Storing data requires to call object.Commit() to finally write to the database.

Meta fields are the same for all objects. Data fields and files are type specific. Files are stored in the file system.

© 2013 Nive GmbH