IllusionPublish im Deep Dive
Workspaces, Freigabeketten, Feldrechte und visueller Editor: Wie IllusionPublish Redaktionen auf einem IllusionCMS arbeiten lässt.

IllusionCMS kennt bewusst nur einen Kontotyp: den Admin. Für Entwickler passt das. Sobald aber eine Agentur Kundenredaktionen betreut, kommen Fragen auf, die ein CMS für Entwickler nicht beantworten soll: Wer darf was ändern? Wer prüft? Wann geht etwas live – und kann dabei etwas Halbfertiges auf der Website landen?
Dafür habe ich IllusionPublish gebaut: ein eigenes Programm, das auf genau einer CMS-Instanz sitzt. Das CMS bleibt der Live-Stand, Publish ist der Arbeitsplatz der Redaktion mit Entwürfen, Freigaben und Rechten. Dieser Artikel zeigt, was es kann (Stand v0.4.1). Alle Bilder stammen aus einer Demo-Instanz.
Workspaces und Pakete
Ein Workspace besteht aus einem Bereich der Website (Seitenbäume, Collections, globale Blöcke, auf Wunsch Dateiordner), einem Team und einer Freigabekette – zum Beispiel pro Kunde, pro Sprache oder pro Projekt. Darin arbeitet die Redaktion in Paketen: zusammengehörige Änderungen an mehreren Seiten, Einträgen und globalen Blöcken, die gemeinsam geprüft und atomar veröffentlicht werden. Ganz oder gar nicht, als ein Batch ins CMS, sofort oder zu einem geplanten Zeitpunkt.
Die Paket-Seite zeigt feldgenau, was sich ändert, mit Kommentaren, @-Erwähnungen und Protokoll. Für die Endabnahme lässt sich ein Workspace einfrieren: Dann stoppen alle Änderungen, Lesen, Kommentieren und Prüfen bleiben möglich.
Hat sich die Live-Seite inzwischen geändert, gleicht Publish den Entwurf automatisch ab, solange nicht dieselben Felder betroffen sind. Überschneiden sie sich, gibt es einen Konflikt mit Live-Wert und Entwurf zur Entscheidung – statt eines stillen Überschreibens.
Freigabeketten
Jeder Workspace hat eine eigene Kette: Bearbeitung → die Stufen, die ich festlege → Bereit zur Veröffentlichung. Jede Stufe hat Prüfer und eine Regel (einer genügt, alle oder n von m) und optional eine Frist. Nach Fristablauf dürfen Vertreter mit freigeben und bekommen eine Benachrichtigung, die sich nicht abschalten lässt.
Ein Paket in der Freigabekette: Die Stufe „Launch-Freigabe“ verlangt zwei von drei Zustimmungen, eine liegt vor.
Ein paar Regeln sind fest eingebaut:
- Vier-Augen-Prinzip: Wer an einem Paket mitgearbeitet hat, gibt es nicht frei.
- Änderungen machen Zustimmungen ungültig: Wer während der Prüfung bearbeitet, startet die Prüfung neu.
- Eine Zustimmung gilt für den gesehenen Stand: Hat sich das Paket nach dem Lesen geändert, sieht die Prüferin zuerst die neue Fassung (neu in v0.4.0).
- Eine Ablehnung braucht immer einen Kommentar.
- Owner und Administratoren können die Kette übergehen, aber nur mit Begründung. Das steht sichtbar am Paket und im Protokoll.
- Vollständiges Protokoll: wer, wann, welcher Inhaltsstand.
Wird die Kette übergangen, stehen Person und Begründung sichtbar am Paket.
Rechte bis auf Feldebene
Rechte vergebe ich pro Bereich und Aktion (Lesen, Bearbeiten, Anlegen, Löschen, Veröffentlichen) und darunter pro Feld: Standard, ausgeblendet, nur lesbar oder bearbeitbar. Das gilt auch für Baustein-Parameter. So trenne ich Inhalt und Design: Redakteure ändern Texte und Bilder, Varianten und Layout bleiben tabu. Bei mehreren Gruppen gewinnt das großzügigste Recht, Verbote gibt es nicht.
Die Gruppe „Redaktion“: Design-Parameter sind ausgeblendet, die Bildunterschrift ist nur lesbar.
Durchgesetzt wird serverseitig. Neue Felder aus dem CMS sind zunächst ausgeblendet, bis ein Admin sie freigibt; dafür gibt es einen Eingang Neue Felder mit Benachrichtigung.
Editieren: Formular, visuell, Vergleich
- Formular-Editor mit Blockliste und Vorschau, mit denselben Komponenten wie im CMS.
- Visueller Editor: Texte direkt auf der Seite tippen, Blöcke verschieben, an Einfügepunkten neue setzen. Felder, die jemand nicht ändern darf, bleiben gesperrt.
- Vergleichsansicht: Entwurf, Live oder beides nebeneinander. Bei Blöcken zeigt Publish hinzugefügt, entfernt, verschoben und geändert, mit Parametern alt → neu.
- Reichweite globaler Blöcke: „wirkt auf N Seiten“, mit Liste und Vorschau je Seite. Gezählt werden die Seiten, die den Block direkt einbinden. Parameter lassen sich je Verwendung überschreiben, das Feldrecht gilt auch dort.
- Gleichzeitiges Bearbeiten: Eine Präsenzanzeige zeigt, wer ein Objekt geöffnet hat. Gesperrt wird nichts, Konflikte fängt die Revisionsprüfung ab.
- Vorschau-Links mit Ablaufzeit für externe Prüfer ohne Login, etwa die Anwältin, auf Wunsch mit Kommentaren.
Der visuelle Editor: Die Vorschau markiert den Block, den man gerade berührt, und Texte lassen sich direkt auf der Seite ändern.
Live und Entwurf nebeneinander.
Veröffentlichen
Vor dem Veröffentlichen läuft eine Vorabprüfung ohne Seiteneffekt: Aktion je Objekt, Pflichtfelder, Rechte, gelöschte Ziele, verwendete globale Blöcke, andere offene Pakete und Dateien, die dabei öffentlich werden. Veröffentlicht wird erst, wenn alles passt, und zwar als eine Transaktion im CMS. Bricht dabei etwas ab, wiederholt Publish den gespeicherten Batch, ohne doppelt zu schreiben.
Die Vorabprüfung listet vor dem Veröffentlichen alles auf, was sich ändert.
Geplante Veröffentlichungen laufen im Namen der planenden Person mit deren Rechten zum Zeitpunkt der Ausführung.
Dateien und Sprachen
Die Dateigalerie bringt Ordnerbaum, Suche, Upload, Verschieben und Ersetzen. Workspaces mounten Ordner, Gruppen bekommen Rechte je Ordner; wirksam ist, was beides zusammen erlaubt. Dateiaktionen wirken sofort im CMS, ohne Paket und Kette, und stehen im Protokoll. Gelöscht wird nur, was nirgends verwendet wird – auch nicht in Entwürfen offener Pakete.
Die Galerie zeigt, wo eine Datei benutzt wird, auch in Entwürfen offener Pakete.
Für mehrsprachige Websites gibt es einen Übersetzungsablauf mit einer Ausgangssprache je Instanz: Wird eine Seite oder ein Eintrag in dieser Sprache veröffentlicht, entstehen Aufträge für die übrigen Sprachfassungen. Wer nur seine Sprache bearbeiten darf, ergibt sich über eine Gruppe und einen Workspace je Sprache. Im Editor steht die Ausgangsfassung nur lesbar neben der eigenen.
Beim Übersetzen steht das Original lesbar neben der eigenen Fassung.
Anmeldung und Benutzerverwaltung
- OIDC-SSO (Entra ID, Google, Keycloak …) mit automatischer Gruppenzuordnung über Claims.
- SCIM 2.0: Der Identitätsanbieter legt Konten und Gruppen an. Wer deprovisioniert wird, ist sofort gesperrt, gelöscht wird nichts. Bestehende Gruppen übernimmt SCIM seit v0.4.0 nur, wenn ich sie dafür freigebe.
- Passkeys (WebAuthn) als Anmeldung ohne Passwort, daneben Passwort mit TOTP und Wiederherstellungscodes. Zwei-Faktor kann Pflicht sein.
- Lokale Administratoren können sich auch dann anmelden, wenn der Identitätsanbieter ausfällt. Für den Ernstfall gibt es zusätzlich
-reset-adminauf dem Server. - Als Benutzer ansehen zeigt Admins die Oberfläche aus Sicht eines Kontos, rein lesend.
Benachrichtigungen
In der App gibt es eine Glocke mit Live-Zähler, dazu E-Mails über den eigenen SMTP-Server in der Sprache des Empfängers. Jeder stellt selbst ein, was er bekommt; Pflichtmeldungen wie Eskalationen lassen sich nicht abschalten.
Betrieb
Publish ist wie das CMS ein einzelnes Programm mit SQLite und läuft als Docker- oder Coolify-Paket. Der Remote-Modus steuert eine Instanz auf dem Server von der lokalen Oberfläche aus. Die Konfiguration (Workspaces, Gruppen, Rechte, Ketten) lässt sich exportieren, mit Vorschau prüfen und in eine andere Instanz importieren, typisch von lokal nach produktiv; Konten und Geheimnisse sind nicht darin. Die Entwicklerlizenz gilt unbefristet für die lokale Einrichtung: Angemeldet ist dabei nur das erste Administratorkonto, andere Konten prüfe ich über „Als Benutzer ansehen“. Die Oberfläche gibt es in fünf Sprachen; im Deutschen wird gesiezt, weil Publish in den Redaktionen von Agenturkunden zu Hause ist.
Für wen ist das?
Für Agenturen, die für Kunden Redaktionen mit klaren Rollen einrichten, und für Teams, in denen nichts ohne Freigabe live gehen soll. Alles, was Publish im CMS braucht, ist eine allgemeine CMS-Funktion; das CMS selbst kennt keine Lizenzschalter.
Die aktuelle Version ist v0.4.1. Sie braucht IllusionCMS ab v0.6.0, empfohlen ist v0.7.3; beim Update zuerst das CMS, dann Publish. Einen Rundgang mit Screenshots und die Testversion gibt es auf illusioncms.com/publish. Für eine Langzeitlizenz bitte Kontakt aufnehmen.