# CMS Made Simple

CMS Made Simple ist ein freies Content-Management-System (CMS) für kleine bis mittelgroße Websites. Es ist nicht zu verwechseln mit CMSimple.
Es ist in der serverseitigen Skriptsprache PHP programmiert und verwendet MySQL als Datenbank, die über den Datenbank-Layer ADOdb Lite eingebunden wird. Für die Gestaltung des Layouts wird die aktuelle Version der Template-Engine Smarty3 eingesetzt. CMS Made Simple wurde unter der GNU General Public License veröffentlicht.

## Merkmale

CMS Made Simple kann durch verschiedene Erweiterungen für spezielle Verwendungszwecke angepasst werden. Die gängigsten Erweiterungen decken einen Großteil der Anwendungsfälle wie zum Beispiel News, Blog, Kalender, Gästebuch, Bildergalerie und weitere ab.

### Eigenschaften

* Template-Engine Smarty: Durch den Einsatz können Layout und Inhalt strikt voneinander getrennt bearbeitet werden.
* Ausgabeformat der generierten Webseite kann individuell festgelegt werden (HTML, XML, RSS etc.)
* Inhalte (Seiten) lassen sich bei adäquatem Ausbau des für PHP zur Verfügung stehenden Speichers hierarchisch in unbeschränkter Tiefe sortieren
* rollenbasiertes Rechtesystem: vordefiniert sind die Rollen Admin, Designer und Editor, die durch weitere individuell ergänzt werden können
* für jede Seite kann individuell eine URL festgelegt werden, unter der sie erreichbar sein soll
* Pretty URLs: CMS Made Simple kann für Mensch und Maschine einfach zu lesende URLs erzeugen
* integrierte Caching-Mechanismen zur Leistungsoptimierung
* bis auf die Grundkonfiguration werden alle eingegebenen Daten (sowohl die Inhalte von Seiten und Modulen als auch die Templates und Stylesheets) in der Datenbank gespeichert
* integrierte Erstellung von Prüfsummen zur Sicherung und Kontrolle der Systemintegrität
* kann durch Zusatzmodule Multisite-fähig gemacht werden
* Administration in 45 Sprachen verfügbar
* Sprache über Lokalisierungsdateien anpassbar
* Override: eigene Anpassungen sowohl von Templates als auch der Sprachdateien ohne Kern-/Modul-Code-Veränderungen möglich
* modularer Aufbau: die Funktionsbibliotheken installierter Module können über Instanzen miteinander kombiniert werden (z. B. News-/Feedback-/Captcha-/RSS-/Social-Media-Modul bis hin zu kompletten E-Commerce-Suiten)
* Event-Manager: stellt sowohl für den Systemkern als auch für Module Pseudo-Cronjobs bereit, über die auf verschiedenste Ereignisse im System mit frei definierbaren Aktionen reagiert werden kann (wird zum Beispiel voreingestellt genutzt, um nach Eingabe neuer Inhalte diese automatisch für das Suchmodul zu indizieren)
* vorinstalliertes CMS Made Simple als lokaler Webserver, virtuelle Maschine und Docker-Container als Bitnami-Stack verfügbar

### Anforderungen

CMS Made Simple wurde auf verschiedenen Plattformen und Versionen getestet. Die Minimalanforderungen sind folgende:
* Linux/Unix, Windows 2000/XP/ME/2003/7/8/10 oder Mac OS X
* Apache HTTP Server 1.3 / 2, Lighttpd 1+, Microsoft IIS 5+, Nginx oder Sun Webserver7
* MySQL 4.1+
* PHP 5.4+ mit aktivierter Tokenizer-Unterstützung

### Erweiterungsmöglichkeiten

CMS Made Simple bietet mehrere Möglichkeiten zur Erweiterung:
* Module: Mit diesen kann das System um komplexe Funktionalitäten wie Blogs, Kalender, Produktkataloge, Shops u. ä. erweitert werden. Deren Dateien sind im Verzeichnis /modules zu finden. Module können als XML-Dateien ex- und importiert werden.
* Tags: Das sind kleinere vorgegebene PHP-Skripte, mit denen einzelne Funktionen wie zum Beispiel die Ausgabe des Datums der letzten Seitenänderung u. ä. in den Inhalt und/oder die Templates eingefügt werden können. Diese Skripte sind im Verzeichnis /plugins abzulegen.
* Benutzerdefinierte Tags: Diese sind identisch mit den Tags mit dem Unterschied, dass sie vom Benutzer innerhalb der Administration erstellt, bearbeitet und in der Datenbank gespeichert werden.
Außerdem lässt sich CMS Made Simple mit den Smarty-eigenen Möglichkeiten erweitern:
* Smarty-Tags: Diese sind identisch mit den Tags mit dem Unterschied, dass für deren Nutzung lediglich eine Smarty-Instanz erforderlich ist. Die vielen, im Internet frei verfügbaren Smarty-Plugins (z. B. im SmartyWiki) müssen für deren Einsatz im Verzeichnis /lib/smarty/libs/plugins abgelegt werden.
* PHP-Skripte können direkt (mit {php}...{/php}) maskiert und im Inhalt und/oder in Templates eingefügt werden. Dies ist jedoch aus Sicherheitsgründen voreingestellt deaktiviert und bedarf einer separaten Aktivierung in der Konfigurationsdatei.
* Alternativ lassen sich ab der Verwendung von Smarty3 PHP-Befehle direkt in den Smarty-Templates verwenden.

### Lieferumfang

Neben zahlreichen Tags sind die folgenden Module bereits im Lieferumfang von CMS Made Simple enthalten:
* CMSMailer – stellt die Funktionsbibliothek des PHPMailers für andere Module bereit
* CMSPrinting – Aufbereitung der aufgerufenen Seite für den physischen Ausdruck
* FileManager – Dateiverwaltung
* MenuManager – automatisierte Erstellung von Webseiten-Navigationen aller Art (einfache Brotkrumen-Navigation über Sitemaps bis hin zu komplexen Menüs zur Darstellung mehrstufiger Seiten-Hierarchien)
* MicroTiny – Light-Version des TinyMCE-WYSIWYG-Editors
* ModuleManager – Anzeige aller verfügbaren Module im zentralen Moduldepot sowie deren Installation und Aktualisierung per Klick
* News – Erstellung von Nachrichten/Artikeln mit integrierter Zeitsteuerung
* Search – indexbasiertes Suchmodul
* ThemeManager – Im- und Export der Layout-Themes im XML-Format (die generierte Datei enthält sämtliche für die Nutzung des Themes erforderlichen Dateien – Template, CSS, Javascripte, Bilder, MenuManager-Templates inklusive der Verzeichnispfade).
Außerdem ist im Systemkern die Bildverwaltung aus HTMLArea verankert.

### Themes

Über Themes kann das Layout für jede einzelne Seite individuell angepasst werden; die Webseiten lassen sich ohne großen Aufwand sehr flexibel, nahezu barrierefrei und W3C-konform gestalten. Über den im Lieferumfang enthaltenen ThemeManager können die Themes als XML-Datei ex- oder importiert werden.
So können auf der Themes-Website eine kleinere Anzahl frei verfügbare Themes heruntergeladen werden. Jedoch lässt sich auch jedes andere Template, sei es reines HTML oder das Theme eines anderen CMS für CMS Made Simple anpassen.

### Erweiterungen

Außer den bereits im Lieferumfang enthaltenen Modulen werden folgende Erweiterungen häufig eingesetzt:
* TinyMCE – Vollversion des WYSIWYG-Editors
* Gallery – Bildergalerie
* Formbuilder – Erstellung und Anzeige von Formularen
* CGCalendar – Terminverwaltung mit Kalenderfunktionen
* FrontendUsers – Anlage und Verwaltung von Frontend-Benutzern
* Cataloger – Erstellung von Produktkatalogen aller Art
* Newsletter Made Simple – zeitgesteuerter Versand von Newslettern
* GBook – Gästebuch
* ListIt2 – universell einsetzbares Modul zur benutzerdefinierten Listenerstellung im weitesten Sinne … News, Kalender, FAQ, Links, Bilder etc.
Die Erweiterungen für CMS Made Simple sind im Forge, dem zentralen CMSMS-Software-Depot, zu finden.
Zudem verfügt CMSMS über eine eigene Programmierschnittstelle (API) und kann so einfach erweitert werden.

## Community

Im Laufe der bisherigen Entwicklung hat sich im Umfeld von CMS Made Simple weltweit eine Gemeinschaft von Anwendern und Programmierern gefunden. So sind derzeit im Forum der offiziellen Support-Website knapp 10.000 Anwender registriert. Neben dem Forum gibt es außerdem einen unregelmäßig erscheinende Newsletter sowie einen IRC-Channel im Freenode Netz als Informationsquellen.
Da mit 70 % Anteil viele der Anwender in Europa beheimatet sind, verwundert es nicht, dass sich sowohl für den deutsch- als auch den französischsprachigen Raum starke regionale Communities abseits der offiziellen Support-Webseite gebildet haben.
Die GeekMoot, die internationale Zusammenkunft der Anwender von CMS Made Simple, findet jährlich statt. Zunächst hatte sich nur das Entwickler-Team 2007 in Kopenhagen/Dänemark und 2008 in Philadelphia/USA zur Diskussion der weiteren Entwicklung getroffen. Aufgrund steigender Anwenderzahlen wurden die nachfolgenden Veranstaltungen (2009 in Sheffield/Großbritannien, 2010 in Amsterdam/Niederlande, 2012 in Northampton/Großbritannien) für die Anwendergemeinschaft geöffnet und um Fachvorträge rund um CMS Made Simple ergänzt.
Nachdem die für Ende 2013 / Anfang 2014 in den USA geplante Veranstaltung ausgefallen war, fand die GeekMoot 2015 in Ghent/Belgien statt. Die diesjährige Veranstaltung ist für Oktober 2016 in Leicester/Großbritannien geplant.

## Geschichte
### Entwicklung

Das Programmierung von CMS Made Simple wurde von dem in der Nähe von Philadelphia/USA beheimateten Programmierer Ted Kulp am 1. Juli 2004 begonnen, nachdem er laut eigenen Aussagen vergeblich nach einem geeigneten CMS für die Webseite des Music Player Daemon (MPD) gesucht hatte. Seit 2007 wurde Ted Kulp als Chefentwickler durch den Kanadier Robert Campbell unterstützt. Nach Kulps Rückzug aus dem Projekt übernahm er vorübergehend auch die Leitung des Projektes. Da Campbell sich jedoch wieder mehr auf die Programmierung des Systems konzentrieren wollte, übernahm ab Dezember 2014 ein 3-köpfiges „Board of Directors“ die Führung der laufenden Geschäfte, in welches die Niederländerin Anne-Mieke Bovelett, der Kanadier Matt Hornsby sowie der Franzose Kevin Danezis berufen wurden.
Ab der Version 0.8 erhalten die Versionen zusätzlich zu ihrer Versionsnummer einen südpazifischen Insel-Namen als Versionsnamen. Die finale Version 1.0 wurde am 10. September 2006 freigegeben.
Aktuell ist der 2.2.x-Entwicklungszweig.

### Name und Logo

Ziel war und ist es, Ein- und Umsteigern ein leicht und intuitiv zu bedienendes CMS-System bereitzustellen, welches aber gleichzeitig dem ambitionierten Anwender genügend Raum für Erweiterungen des Systems und mächtigere Funktionen lässt. Der Leitspruch des Projekts in den ersten Entwicklungsjahren war „So easy, it feels like taking a holiday“, hinterlegt mit einem Bild „Sandstrand mit einer Gruppe Palmen“, was diese Leichtigkeit in der Bedienung vermitteln soll.
In der Folge avancierte das Motiv der Palme, stilisiert und in hellem Orange gehalten, schnell zum Logo des Projekts.

## Versionen

| Legende: | Alte Version | Ältere Version; noch unterstützt | Aktuelle Version | Aktuelle Vorabversion | Zukünftige Version |
| Zweig | letzte Version | Veröffentlichung | Anmerkungen |
| 0.8 | Ältere Version; nicht mehr unterstützt: 0.8.2 | 17. Januar 2005 | |
| 0.9 | Ältere Version; nicht mehr unterstützt: 0.9.2 | 25. Februar 2005 | |
| 0.10 | Ältere Version; nicht mehr unterstützt: 0.10.4 | 9. November 2005 | |
| 0.11 | Ältere Version; nicht mehr unterstützt: 0.11.2 | 21. Dezember 2005 | |
| 0.12 | Ältere Version; nicht mehr unterstützt: 0.12.2 | 10. Mai 2006 | |
| 0.13 | Ältere Version; nicht mehr unterstützt: 0.13 | 18. Mai 2006 | |
| 1.0 | Ältere Version; nicht mehr unterstützt: 1.0.8 | 18. Juni 2007 | |
| 1.1 | Ältere Version; nicht mehr unterstützt: 1.1.4.1 | 7. Oktober 2007 | |
| 1.2 | Ältere Version; nicht mehr unterstützt: 1.2.5 | 12. Mai 2008 | |
| 1.3 | Ältere Version; nicht mehr unterstützt: 1.3.1 | 24. Juni 2008 | |
| 1.4 | Ältere Version; nicht mehr unterstützt: 1.4.1 | 9. August 2008 | |
| 1.5 | Ältere Version; nicht mehr unterstützt: 1.5.4 | 6. April 2009 | |
| 1.6 | Ältere Version; nicht mehr unterstützt: 1.6.10 | 25. Mai 2011 | |
| 1.7 | Ältere Version; nicht mehr unterstützt: 1.7.1 | 1. Mai 2010 | |
| 1.8 | Ältere Version; nicht mehr unterstützt: 1.8.2 | 12. August 2010 | |
| 1.9 | Ältere Version; nicht mehr unterstützt: 1.9.4.3 | 27. August 2011 | |
| 1.10 | Ältere Version; nicht mehr unterstützt: 1.10.3 | 9. Januar 2012 | |
| 1.11 | Ältere Version; nicht mehr unterstützt: 1.11.13 | 20. Februar 2015 | |
| 1.12 | Ältere Version; nicht mehr unterstützt: 1.12.2 | 28. März 2016 | |
| 2.2 | Ältere Version; nicht mehr unterstützt: 2.2.7 | 10. März 2018 | |
| 2.2 | Ältere Version; nicht mehr unterstützt: 2.2.8 | 28. Juli 2018 | Vollständige Unterstützung von PHP 7.2 |
| 2.2 | Ältere Version; nicht mehr unterstützt: 2.2.13 | 4. Dezember 2019 | An incremental bug fix and security release. |
| 2.2 | Aktuelle Version: 2.2.14 | 30. März 2020 | Maintenance release. |
| 2.2 | Aktuelle Version: 2.2.15 | 13. Oktober 2020 | An incremental bug fix and security release. |
Offiziell unterstützt werden immer die letzten beiden Versionen des aktuellen Zweigs, derzeit also 2.2.14 und 2.2.15.

## Distributionen

Üblicherweise wird CMS Made Simple im Forge in zwei Versionen veröffentlicht, einer Basis- und einer Vollversion. Der Unterschied zwischen diesen beiden Paketen besteht darin, dass in der Vollversion alle verfügbaren Sprachen enthalten sind, währenddessen sich die Basisversion auf Englisch beschränkt. In diesem Fall können die einzelnen Sprachpakete separat heruntergeladen werden. Ergänzend werden Prüfsummendateien für beide Pakete angeboten.
Außerdem werden innerhalb eines jeden Versionszweiges diff-Pakete bereitgestellt. Diese ermöglichen die einfache Aktualisierung eines bereits installierten Systems auf die aktuellste Version. Auch hier wird zwischen Basis- und Vollversion unterschieden. Soweit in diesen diff-Paketen ein Verzeichnis /install vorhanden ist, müssen nicht nur die neuen Dateien hochgeladen, sondern auch die Datenbank über den im Verzeichnis enthaltenen Assistenten aktualisiert werden.

## Forks

Im Laufe der Entwicklung gab es auch verschiedentlich Bemühungen, bestimmte Bereiche von CMS Made Simple zu optimieren.
Zunächst ist da der inoffizielle Fork CMSMS MLE (MLE = Multi Language Edition) zu nennen, der von einem russischen Anwender mit dem Foren-Nickname "Katon" begonnen und ab 2007 von dem Italiener Dr. Alberto Benati über mehrere Jahre weiterentwickelt wurde. Ziel dieses Forks war die Implementierung der nativen Unterstützung mehrerer Sprachen. Der Fork wurde über längere Zeit seitens des Entwickler-Teams geduldet, bis 2010 beschlossen wurde, dieses Projekt offiziell abzutrennen, da es immer wieder zu Inkompatibilitäten mit vorhandenen Erweiterungen kam. Dies war jedoch der Anfang von dessen Ende. Nicht zuletzt wegen des Zeitmangels des Entwicklers aufgrund beruflicher und familiärer Verpflichtungen wurde die Weiterentwicklung mit der Version 1.8.2 MLE eingestellt.
Einen anderen Weg beschritt der deutsche Entwickler Jan Czarnowski, der unabhängig von den Haupt-Entwicklern unter dem Namen PowerCMS einen eigenen Fork veröffentlichte, dessen Fokus primär auf der Optimierung der System-Performance lag. Doch auch diese Weiterentwicklung wurde 2008 mit der Version 1.1 Hanau Build 3.2.1 eingestellt.