In 2006 I started working on my own Content Management System (CMS). Back then, major open-source Web site engines, content management systems, provided tons of features you seldom need, and they included GUIs for "Web site creation and installation". The "problem" persists to this day. I decided to make my own CMS which provides my clients with a very easy to use interface. I don't want my client to be able to change the logo, the site styling, or to install "plugins" from online repositories of some sorts. The idea is: I create the site and the client adds/modifies/deletes the content based on his/her liking.
I do not add features to my CMS for "developers". I try to keep it as simple as possible.
Agnezar only requires PHP 5 to run.
In general, the sites have permanent links (and, no, they are not hard-coded anywhere), and multi-language support. For simpler sites the CMS does not need any database server.
Pages and sub-pages hierarchy is technically unlimited, but practically limited by the design and layout picked for the desired Web site. As such, I have a variable which limits the maximum depth for adding pages.
For each page the user can change the title, the path and the "hidden" state. You can have a page which doesn't show up in the site navigation menus.
When the user adds a page, he can pick which module he wants to use: a simple article, a blog, a gallery, or an external link.
The "Insert image" option from Awebitor integrates the file manager, allowing the user to upload files while editing any HTML document. The user can browse the server to pick an image to insert into his/her document.
Site search and map
When the user makes any change, there's a module which indexes the content of the page. This is used for site search and for generating an XML Sitemap.
I use MySQL to store the search and site map data.
The file manager allows the user to upload multiple files, to create folders, delete and rename file/folders. The file manager also includes some plugins for editing HTML files (using Awebitor), page cleaning (using ReTidy), and image watermarking. Marius uses the image watermarker to the usual "© Year ROBO Design" on top of his images.
The blog module uses MySQL to store the posts. Each blog page provides Atom feeds.
Like the blog module, this one also uses MySQL, and it provides Atom feeds as well. Additionally, the gallery module automatically resizes the images uploaded by the user, and optionally it also watermarks the image. The user can pick from three types of watermarks: dark watermark, bright watermark, or just a banner at the bottom of the image.
The newsletter module allows the administrator to send HTML and plain text emails to the subscribed email addresses.