Snap! Websites
An Open Source CMS System in C++
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 links plugin is actually an extension of the content plugin.
At some point we will change the database handling, most of which will be moved to the library instead of plugins. At that point we will also look into merging the links and content plugins into one single plugin.
The links plugin handles connections between pages through two way links. Links are small structures composed of the name of the reference, whether the link is a single link or a multiple link (one to one, many to one, one to many, or many to many).
Links are specific to branches. So if create a new branch for a ...
The layout plugin takes the data from a page and transform it to HTML for display in browsers.
The layout is in charge of generting the body from the page content, then generating the theme from the body and other parts of the page/website (i.e. the name of the author is specific to a page, although the author is not, similarly, the name of a website is defined site wide.)
The layout is also in charge of generating the <head> tag of the HTML page. This tag includes many entries such as the <title>, <meta> and <link> tags, and also we include JavaScript and CSS links ...
The JavaScript plugin is used to run server side JavaScript snippets.
At this time it is only used to determine what layout / theme to use. The layout name is defined in a script written in JavaScript.
We are likely to fade this plugin out because we now have our own snap_expr class which is easier to use and faster and integrated with our signal system. Also it looks like we would not need the full power of JavaScript when we can just use a C++-like expression as offered by snap_expr.
The info plugin helps with various basic settings for the website.
Some plugins are too low level (below the editor) and thus they cannot have their own settings defined within themselves. In this case, they either have their own user interface implementation (like the users_ui) or their settings are handled by the info plugin.
So the info plugin includes the basic installation and removal of plugins on your website. It also handles the unsubscribing of mailing lists (sendmail is really low level too.)
The main information settings include things like the name of the website and how to ...
The images plugin is used to tweak images, generate images from documents such as a PDF file, and whenever possible to optimize an image (i.e. you upload a 2000x1500 image that you show at a size of 500x325, Snap! can create an image of that smaller size automatically which will accelerate the download dramatically.)
The plugin offers an editor that allows one to write image scripts. These scripts can be used to tweak images in a completely automated way. For example, you create a blog and want to be able to add one image at the top right of each page. That image should have a nice edge, a ...
The header plugin gives you a way to edit the tags that appear in the HTML header of your pages. These are generally not accessible while you edit the visible part of your page.
There are already many entries automatically generated by the Snap! Websites system that go in the header. However, certain things cannot be automatically generated, or can be better if entered by you.
For example, your headers can include a description meta tag. This description can be generated using the teaser code (in effect, using the first X words of your page.) However, in most cases, the description should be ...
The hashtag plugin transforms your #<word> entries into links to types. This is very similar to what happens in Twitter and Facebook. Using the hashtag as a fast way of tagging your content. This allows people to go check out all the posts you have about a certain subject.
We will increase the usability with time as we want to make sure that you do not create new tags like crazy when not required/useful. (i.e. if you have a single page with a certain hashtag, it will be useless to sit by itself in that list of pages referencing that hashtag. This can often happen because you misspelled ...
The form plugin is used to generate forms using the standard HTML form widgets.
This plugin is being phased out. It is too difficult to maintain both: the Editor and the Form plugins. Not only that, the Form plugin widgets are limited to what the HTML form widget implementation offers. Although that has been extended with HTML 5, it is still less than what we can offer with the Editor. We will certainly keep a copy of the plugin handy, but not support its implementation. If someone else would like to take that job over, it would be great. That being said, it may also be a waste of time to ...
The Flash plugin helps with handling Flash animations and movies. It adds a capability to the editor to add Flash files and ways to properly place them in your page.
Once a Flash animation was added to a page, that page requires the Flash extension. However, some users may not have Flash installed and in such circumstances you probably want to let them know why your page is not fully functional.
Also in some cases, website administrators prefer to show an exciting image that shows that there is a movie that one can watch, but without actually loading Flash by default. This plugin allows you ...
The Filter plugin is a core plugin which is always installed.
Various filtering happens on the content that the end user can edit. It makes sure that the content is safe and allows for dynamism, which would not otherwise be available. For example, it supports tokens. If you write the word year between square brackets ([year]), it gets transformed to the current year. Most of the Snap! Websites users will want to use that token for their Copyright notice which thus will automatically be updated on each January first.
Some filters are applied just before the data gets displayed. Others are run ...
Snap! Websites
An Open Source CMS System in C++