Snap! Websites
An Open Source CMS System in C++
The OAuth2 capability allows you to access your website using OAuth2 credentials. The oauth2 plugin offers a way to generate an OAuth2 login and password which you can use to log in your account using other tools (from another website, a desktop application, or an automated background process.)
The OAuth2 system currently supports a way to log in as an administrator. At some point we will allow each user to have an OAuth2 account so we can implement a really fast desktop application one can use to create post very quickly.
Files that get uploaded to the server are all assigned a MIME type. This includes all the files that come with a plugin or a layout.
This plugin handles hundred of MIME types. It includes icons to dislpay for a given type. It knows the name and equivalents of many types.
This includes the ability to determine the MIME type on the client side (through JavaScript.)
The messages plugin is a low level plugin that handles error, warning, and informational messages that other plugins are generating.
A few really low level plugins cannot use the messages plugin (because the messages plugin depends on them.) Those plugins will only generate logs and throw when an unrecoverable error occurs.
The output.js scripts from the output plugin include the necessary code to actually display the messages on the screen. It is done using JavaScript because the messages are shown in a fixed popup box which the server does not know anything about.
The server_access plugin ...
The menu plugin allows for website owners to setup navigation menus. By default a website comes with an administrative menu only. This administrative menu will allow a user to navigate the website in order to create and manage its pages and plugins.
The plugin includes the building of such menus and the way it is displayed and other menu administration features.
The mailinglist plugin offers a website a way to send emails to a group of people who signed up to a certain mailing list.
The system offers a way to enter a mailing list email and the Snap! system converts that special email address in one email per user who registered. Although it would be possible to have the list of emails defined in your mail system instead, by having it in Snap! directly allows us to enforce emailing policies defined on the Snap! Websites. For example, a user could ask to receive one email per week maximum with a digest of whatever was sent to him within that week. ...
The Snap! locale environment includes three plugins.
The locale plugin is a very low level plugin that is used by others to setup the locale (language/country) and timezone (date/time) to be used on a hit from a client.
By default, the website is set to "en_US" and "America/Los Angeles" because we started the development of the Snap! system in California. However, a logged in user may have changed that locale to his own locale. The total list of available locales is defined using the list found on your server (some 460 on Linux at time of writing.) Also other ...
The listener plugin is used to listen for a Client / Server signal.
At times the client sends data to the server and it wants to know once the server is ready for the next step (i.e. maybe we sent an image and the server is responsible for resizing, rotating, bordering the image.)
This plugin will call your callback whenever the server is done and your data is ready to be retrieved.
The list plugin is the lower level plugin that knows how to build lists from the website pages.
The plugin makes use of expression to check whether a page is a candidate for being part of that list. For example, a list made of the children pages of a certain page will use a simple expression such as:
parent(page_path) == "<this page path>"
When the expression is true, the page is added to the list.
The pages can then be sorted using a simple sort mechanism (at this time, it does not work with international languages because that will require a different database context ...
The Credit Card e-Payment extension allows for actual credit card implementations to work with the e-Payment system. At this time, this plugin handles the user entering data information such as his name, address, and credit card numbers.
The plugin also allows for saving the user address information in the user account if the user allows it.
The Date Widgets plugin offers various widgets that are used to enter a Date in a form.
At this time we support a Line Edit which opens a dropdown that looks like a calendar.
We also offer a date one can define using dropdowns instead of a line edit. This way you can easily control what the end user can enter in terms of years. This feature will be entended to allow users to type in whatever numbers they want (i.e. we need the dropdown that allows typing data in directly.)
Snap! Websites
An Open Source CMS System in C++