Redaxo
# Redaxo

Redaxo (Eigenschreibweise REDAXO) ist ein freies Content-Management-System (CMS) für Websites. Es basiert auf der Skriptsprache PHP und verwendet als Datenbank MySQL oder MariaDB. Redaxo wurde ab 1999 von der Agentur Pergopa (später Yakamara) mit dem Ziel als einfaches, schnell zu erlernendes Redaktionssystem entwickelt, steht seit Anfang 2004 unter der GNU General Public License und mit Erscheinen der Version 5 Anfang 2016 unter der MIT-Lizenz.

## Modularer Aufbau

### Kategorien und Artikel

Die Grundstruktur der Inhalte wird in Redaxo über eine Baumstruktur von Kategorien abgebildet, die Artikel enthalten. Jeder Artikel steht dabei für eine Einzelseite innerhalb der Website.

### Inhaltsmodule

Der Inhalt eines Artikels wird über beliebig viele Inhaltsmodule aufgebaut, die individuell von den Entwickelnden angelegt werden können. Sowohl die Moduleingabe als auch die Modulausgabe ist dabei gezielt steuerbar. Das ermöglicht zum einen, dass Inhalte, die ins System eingegeben werden, geprüft und verarbeitet werden können, bevor sie in der Datenbank abgelegt werden, und es ermöglicht zum anderen, dass die Inhalte in frei definierbarer Form auf der Website ausgegeben werden können.

Jede Bearbeitung eines Artikels kann protokolliert werden (seit Redaxo 5.2), so dass die Versionsgeschichte eines Artikels nachverfolgt und rückwirkend angepasst werden kann.

### Sprachen

Redaxo unterstützt die Nutzung mehrerer Sprachen für eine Website. Alle Kategorien und Artikel werden dann in jeder definierten Sprache vorgehalten und können unabhängig voneinander gepflegt werden. Inhalte können von einer Sprache in andere kopiert werden, und sprachunabhängige Inhalte können in allen Sprachen ausgegeben werden.

### Medien

Bilder und andere Medienobjekte werden in einem zentralen Medienpool hinterlegt und können über ihren Namen oder ihre ID eindeutig referenziert werden. Ein Mediengenerator ermöglicht die Verarbeitung eines Mediums, bevor es auf der Website ausgegeben wird. Die Art der Verarbeitung kann frei definiert werden und besteht z. B. aus der Skalierung von Bildern, der Anwendung von Bildeffekten oder der Bereitstellung eines Dokuments zum Herunterladen.

### Metadaten

Verschiedenste Elemente innerhalb des Systems, etwa Kategorien, Artikel, Medien oder Sprachen, können mit frei definierbaren Metadaten versehen werden, z. B. für Beschreibungen von Bildern, Schlagworte für Artikel oder die Sichtbarkeit von Kategorien.

### Templates

Neben Inhaltsmodulen werden Templates verwendet, um die Ausgabe von Inhalten zu strukturieren. Templates können ebenso frei definiert werden wie Module und beschreiben oftmals die verschiedenen Seitentypen einer Website, z. B. Startseite, Kategorieseite oder Detailseite. Und auch für die Ausgabe in verschiedenen Kontexten, etwa als JSON oder RSS-Feed, bietet sich die Nutzung von Templates an.

Templates können beliebig viele Spalten oder Inhaltsbereiche enthalten, die als cTypes bezeichnet werden, und die typischerweise die Bestandteile einer Seite beschreiben, etwa Kopfbereich, Randspalte oder Fußzeile.

## Framework

Aufgrund seiner Struktur mit frei definierbaren Templates und Inhaltsmodulen, die die Datenstruktur der Inhalte und ihre Ausgabe bestimmen, ist Redaxo kein System, das nach seiner Installation bereits produktionsfertige Websites ausliefern kann. Auch kann eine bestehende Website nicht ohne Weiteres in ihrem Aussehen verändert werden, indem ein anderer Skin (im Umfeld von Content-Management-Systemen oft Theme genannt) ausgewählt wird. Redaxo kennt das Konzept von vorgefertigten Themes nicht, sondern es agiert vielmehr als Framework, das verschiedenste Werkzeuge bereitstellt, um Websites zu entwickeln.

Dementsprechend ist eine neue Redaxo-Installation zu Beginn üblicherweise leer, enthält weder Inhalte noch vordefinierte Templates oder Module. Innerhalb der Community werden jedoch verschiedene Beispielwebsites als AddOns angeboten.

## Erweiterung der Funktionalität mittels AddOns

Redaxo verfolgt ab Version 5 das Konzept eines schlanken Kerns, so dass Funktionalität vornehmlich über Plug-ins (hier AddOns genannt) abgebildet wird. Das System bringt einige relevante AddOns bereits mit, etwa für Struktur und Inhalte, die Benutzerverwaltung oder die Medienverwaltung. Zusätzliche AddOns werden sowohl vom Entwicklungsteam selbst als auch von der Community angeboten. Sie erweitern Redaxo um typische Funktionen wie Formular- und Tabellenverwaltung, URL-Rewriting und Multi-Domainfähigkeit, Texteditoren auf Basis von Textile, Markdown oder WYSIWYG, Volltextsuche, Kalender, Inhaltsfilter oder Entwicklungswerkzeuge.

AddOns können über den Installer, einem systemeigenen AddOn, innerhalb von Redaxo heruntergeladen und installiert werden. Ein zentrales AddOn-Verzeichnis liefert dabei die Daten, die auch für Updates bereits installierter AddOns und des Kernsystems selbst verwendet werden.

Verschiedene Extension Points (in anderen Systemen oftmals als Hooks bezeichnet) ermöglichen AddOns, an markanten Stellen innerhalb des Systemprozesses einzuhaken, um Funktionalität einzubringen. Zudem können sie selbst Extension Points bereitstellen, die von anderen AddOns verwendet werden können.

## Versionshistorie

| Version | Unterversion | Veröffentlichung | Anmerkungen |
| - | - | - | - |
| 2.x | Ältere Version; nicht mehr unterstützt: 2.7.1 | August 2004 | |
| 2.x | Ältere Version; nicht mehr unterstützt: 2.7.4 | November 2004 | |
| 3.x | Ältere Version; nicht mehr unterstützt: 3.0 | August 2005 | |
| 3.x | Ältere Version; nicht mehr unterstützt: 3.1 | November 2005 | Extension Points, cTypes |
| 3.x | Ältere Version; nicht mehr unterstützt: 3.2 | April 2006 | |
| 4.x | Ältere Version; nicht mehr unterstützt: 4.0 | Oktober 2007 | Neue Ordnerstruktur, Accesskeys, rexVars API, rexGlobales API, Medienpool-Synchronisation |
| 4.x | Ältere Version; nicht mehr unterstützt: 4.1 | März 2008 | be_search-AddOn |
| 4.x | Ältere Version; nicht mehr unterstützt: 4.2 | April 2009 | Startseite und Standardtemplate festlegbar, Benutzerprofilseite, rex_navigation-Klasse |
| 4.x | Ältere Version; nicht mehr unterstützt: 4.3 | Mai 2010 | Image-Manager-AddOn (Bildgenerierung), Dashboard-AddOn und Cronjob-AddOn, Mountpoints |
| 4.x | Ältere Version; nicht mehr unterstützt: 4.4 | Juni 2012 | |
| 4.x | Ältere Version; nicht mehr unterstützt: 4.5 | April 2013 | Nur noch UTF-8-Zeichensatz, sha1 für Passwortverschlüsselung, Laufzeitlevels für Extension Points, XForm- und Community-AddOn |
| 4.x | Ältere Version; nicht mehr unterstützt: 4.6 | April 2014 | Installer (Download, Update und Upload von AddOns), neuer Ordner für AddOn-Daten, Customizer-PlugIn |
| 4.x | Ältere Version; nicht mehr unterstützt: 4.7 | April 2016 | Unterstützung von PHP 7 |
| 4.x | Ältere Version; nicht mehr unterstützt: 4.7.3 | Dezember 2018 | |
| 5.x | Ältere Version; noch unterstützt: 5.0 | Januar 2016 | Neue Code-Basis und Dateistruktur, Auslagerung von Kernfunktionalität in AddOns, Benutzerrollen, neues Backend-Design |
| 5.x | Ältere Version; noch unterstützt: 5.1 | März 2016 | Status (online/offline) und Metainformationen für Sprachen |
| 5.x | Ältere Version; noch unterstützt: 5.2 | Juli 2016 | Markdown-Parser, project-AddOn für projektspezifische Daten, history-PlugIn zur Protokollierung von Artikelanpassungen |
| 5.x | Ältere Version; noch unterstützt: 5.3 | Februar 2017 | Funktion dump zur Debug-Ausgabe, Whoops für Fehlerseiten, Cronjob-Umgebung „Skript“, Benutzer können mehrere Rollen bekommen |
| 5.x | Ältere Version; noch unterstützt: 5.4 | Oktober 2017 | Kommandozeilen-Skripte für AddOns, Passwort-Richtlinien, Unterstützung von WebP |
| 5.x | Ältere Version; noch unterstützt: 5.5 | Dezember 2017 | CSRF-Schutz, Italienische Sprache im Backend, neue Konsolen-Kommandos |
| 5.x | Ältere Version; noch unterstützt: 5.6 | Juni 2018 | Identität wechseln, Übersicht der Paket-Lizenzen, rex_config_form, utf8mb4 bei SQL-Verbindung |
| 5.x | Ältere Version; noch unterstützt: 5.7 | März 2019 | Zentrale Logdateien, Systembericht, E-Mail-Benachrichtigung bei Fehlern, Editor-Integration, Niederländische Sprache im Backend, letzte Version für PHP 5 |
| 5.x | Ältere Version; noch unterstützt: 5.8 | August 2019 | PHP 7.1.3 als Mindestversion, Assets nutzen immutable cache, im Debug-Modus wird das Frontend vor Crawlern versteckt |
| 5.x | Ältere Version; noch unterstützt: 5.9 | Februar 2020 | Unterstützung von PHP 7.4, MySQL 8 und utf8mb4 (vollständiger Unicode-Zeichensatz), Installation in der Konsole, zentraler Ordner für Logdateien |
| 5.x | Ältere Version; noch unterstützt: 5.10 | März 2020 | Status (online/offline) von Slices, Modul- und Template-Keys, Installation von AddOns in der Konsole |
| 5.x | Ältere Version; noch unterstützt: 5.11 | Juli 2020 | Neues Debug-AddOn zur Analyse der Laufzeitumgebung |
| 5.x | Ältere Version; noch unterstützt: 5.12 | März 2021 | PHP 7.3 als Mindestversion, Setup im laufenden Betrieb, neue Login-Seite, überarbeitetes User Interface |
| 5.x | Ältere Version; noch unterstützt: 5.13 | November 2021 | Dark Mode, überarbeitete Navigation, generische Medientypen |
| 5.x | Ältere Version; noch unterstützt: 5.14 | Juli 2022 | |
| 5.x | Aktuelle Version: 5.15 | Februar 2023 | PHP 8.1 als Mindestversion, Sessionverwaltung im Backend, Login mittels Passkey/WebAuthn, Unterstützung von AVIF |
| Legende:Ältere Version; nicht mehr unterstütztÄltere Version; noch unterstütztAktuelle VersionAktuelle VorabversionZukünftige Version ||||

## Community

### Friends Of Redaxo

Friends Of Redaxo (FOR) ist eine Initiative von und für Entwickelnde, die eine offene und gemeinschaftliche Zusammenarbeit anstreben. Code wird immer unter der MIT-Lizenz veröffentlicht. Projekte werden von allen interessierten Mitgliedern abgestimmt und gemeinsam bearbeitet. Diejenigen, die ein Projekt gestartet haben, bleiben dabei in besonderem Maße verantwortlich. Sollten sie sich mal nicht mehr beteiligen wollen, wird das Projekt von anderen Mitgliedern aufgefangen und weiterentwickelt. Aktuell besteht die Gruppierung aus 70 Entwickelnden, die gemeinsam 179 Projekte pflegen (Stand: März 2023).

