Development Status Not Applicable

Some pages in the book are details about a feature or combination of features. This special status is used for those pages since they are not expected to have a status per se.

See a complete list of features sorted by Snap! Websites Development Status (note that not applicable pages are not shown in that list.)


The content plugin is part of the core plugins that you cannot remove. It handles the content, what you see as a page.

Actually, the content plugin handles:

  • pages
  • branches (various major versions of a page)
  • revisions (various minor versions of a page)
  • secret data
  • caches
  • attachment, although the attachment plugin takes care of many of the features in link with attachments, the content plugin still handles the pages for attachments
  • handling of plugin specific fields (read/write from the database)
  • links with the help of the links plugin

The ...


The char_chart plugin is mainly a test plugin. We created this plugin to make sure that we could properly handle dynamic paths (paths that represent content which does not exist in our database.)

This was a success and we kept the plugin to continuously prove that our changes do not break the feature.

The output are all the possible Unicode pages. This is quite practical to verify a character, not so much to search one unless you have a good idea where it should be.


The avatar module gives you and the themer a way to access a user's avatar using various tokens.

By default, the avatar module will show you an image the author uploaded on the internet. The image may come from a location that is supported by the module, such as Gravatar. We also offer to make use of an image that the user would have uploaded of himself in his account.

The settings let you choose the acceptable sources of avatars.


The attachment plugin handles the upload and download of attachments to a page.

Attachments come in various forms. The main one in the system are files extending the HTML environment such as CSS, JavaScript, and image files.

User attachments include images, PDF documents, mp3, etc.

This module makes sure that the same file does not get duplicated in the database. It also works with the antivirus module to mark files that are likely viruses.

At this time there are no settings for the attachment plugin. Your theme is in charge of showing the attachments one way or another.


The antivirus plugin allows you to have the system check each uploaded file to be checked against an antivirus software. If the file is decidedly viewed as a potential virus, then it is marked as such and download are then forbidden.

When the plugin is installed, it prevents all downloads from anyone except the person who uploaded the file until the file gets checked.

Although this will not prevent a certain number of files with viruses to be uploaded and offered for download, it certainly will reduce the amount of such problems in the long run.


The following pages describe core plugins available on your Snap! Websites.


Setting up postfix for redirecting bounced emails is actually very easy, but I have to say that the documentation is total crap in that regard. Also most of the posts I found about it are blatantly wrong! They often speak of using VERP, which is a cheap way of knowing to whom the email was sent. But that means you need to have hundred of emails and it causes problems with greylists. Also some mail systems do not correctly support VERP.

First you want to make sure that the snapbounce package is installed. You may check for the availability with:

snapbounce --version

The ...

The permissions have been implemented for a little while now and have proven to be working very well even in a rather complicated environment where various new pages are only accessible to a small group of users.

When a user or a page are linked to permission page, the permission gets added recursively. That means that one page and all of its children, children of children, etc. recursively, all get added.

1) Gathering of User Rights

When gathering the user rights, the permissions plugin first determines the user login capability. The user does not need to currently be logged in. That ...

The editor uses a similar form capability which allows one to create a form without having to write all the HTML tags needed to handle each widget. Actually, one widget may include many tags and it can be so complicated that attempting to rewrite those tags by hand each time would be really tedious.

The core system offers the basic widgets such as a simple text edit and image drag and drop area. We already support one widget extension called locale allowing the user to select a timezone. This is an external extension to the editor.

Each widget needs at least one attribute defining their ...

Editor Implementation

Implementation Details

The following shows you a UML like graph of the current editor.js implementation. Click on the figure to see a full size version. The original file (editor.odg) can be downloaded as an attachment (see below).

Current Editor Implementation.

Snap! Websites
An Open Source CMS System in C++

Contact Us Directly