Überblick

Das Problem

Ob eine Contao-Website barrierefrei ist, entscheidet sich nicht an einer Stelle, sondern in Hunderten kleiner. Der Alternativtext liegt in den Meta-Angaben der Datei, die Überschriftenebene im Inhaltselement, der Linktext im Fließtext, die Feldbeschriftung im Formular-Generator, die Seitensprache im Startpunkt, der Rest im gerenderten HTML. Jede dieser Stellen ist für sich harmlos. Zusammen ergeben sie einen Zustand, den niemand kennt, weil es keinen Bildschirm gibt, der ihn zeigt.

  • Niemand weiß, wo Sie stehen. Die Frage „Sind wir barrierefrei?“ lässt sich ohne ein Werkzeug nur mit „Wir haben uns Mühe gegeben“ beantworten – und das trägt weder gegenüber der Geschäftsführung noch gegenüber einer Behörde.
  • Alt-Texte fehlen genau dort, wo niemand hinsieht. Bilder in Galerien, Slidern und Theme-Elementen tauchen in keiner Inhaltsprüfung auf, weil sie nicht im Text stehen, sondern als Datei-Referenz.
  • Jeder Prüfdurchlauf beginnt bei null. Ein externer Test liefert eine PDF-Liste. Vier Wochen später ist unklar, welcher Punkt erledigt wurde, welcher bewusst akzeptiert und welcher neu dazugekommen ist.
  • Redaktionsarbeit macht Behobenes wieder kaputt. Ein neues Inhaltselement mit einer übersprungenen Überschriftenebene, ein „Hier klicken“, ein Formularfeld ohne Beschriftung – niemand merkt es beim Speichern.
  • PDFs fallen komplett durchs Raster. Verlinkte Dokumente ohne Titel, ohne Sprache, ohne Tags gehören zum Auftritt, werden aber von keiner Seitenprüfung erfasst.
  • Pflichtangaben und Meldekanal entstehen als Handarbeit. Erklärung zur Barrierefreiheit, Kontaktadresse, Rückmeldeformular: alles einzeln gebaut, alles einzeln zu pflegen, bei mehreren Domains mehrfach.

Am härtesten trifft es die Redaktion und die betreuende Agentur: Sie sollen einen Zustand verantworten, den sie nicht sehen, mit Werkzeugen, die außerhalb von Contao liegen und deren Ergebnisse sich nirgendwo festhalten lassen.

Die Lösung

Das Grundprinzip in einem Satz: AccessPlus prüft die Inhalte dort, wo sie liegen – in der Contao-Datenbank und auf der fertig gerenderten Seite – und trennt konsequent zwischen dem, was ein Werkzeug entscheiden darf, und dem, was ein Mensch entscheiden muss.

Aus einem einmaligen Test wird damit ein laufender Zustand: Befunde werden wiedererkannt, überleben den nächsten Scan, behalten ihre Bewertung („bestätigt“, „ignoriert“) und verschwinden erst, wenn sie tatsächlich nicht mehr gefunden werden. Alles, was ein Werkzeug nur vorschlagen kann – ein Alt-Text, ein barrierefreier Name, ein Text in einfacher Sprache –, landet als Entwurf in einer Prüfschleife und wird nie automatisch veröffentlicht.

AufgabeOhne ZusatzwerkzeugMit AccessPlus
Zustand feststellenexterner Testlauf, Ergebnis als DokumentVoll-Scan im Backend: Datenbank-Checks plus axe-core auf den gerenderten Seiten
Befunde verwaltenTabelle in einer Datei, jedes Mal neuBericht mit Status je Befund; bestätigt/ignoriert bleibt über Scans hinweg erhalten
Alt-Texte nachziehenDatei für Datei in der DateiverwaltungKI-Vorschläge nur für Bilder ohne Alt-Text, einzeln freizugeben, geschrieben nach tl_files.meta
Namenlose Links und ButtonsTemplates suchen und anpassenARIA-Namen aus dem Scan, geprüft übernommen, zur Laufzeit gesetzt – nie überschreibend
PDF-Dokumentegar nicht geprüftPrüfung auf Titel, Sprache und Tags; Befunde im selben Bericht
PflichtangabenHandarbeit je DomainErklärung und Meldekanal als Backend-Formular plus zwei Frontend-Module
Rückfall verhindernZufallgedrosselter Re-Scan nach jedem Speichern und über den Contao-Cron
Änderungen zurücknehmennicht vorgesehenVerlauf mit „Vorher → Nachher“ und Rückgängig-Schaltfläche

Die Punkte aus dem Problemabschnitt bekommen damit jeweils ein Gegenstück:

  • Zustand unbekanntDashboard mit A11Y-Score, Kacheln und Lauf-Verlauf.
  • Fehlende Alt-Texte in Galerien und Modulen → der Check Bilder ohne Alternativtext arbeitet dateizentriert über tatsächlich verwendete Bilder, nicht über Fließtext.
  • Prüfung beginnt bei nullBericht mit Status, der über Scans hinweg klebt.
  • Rückfall durch RedaktionsarbeitMonitoring nach dem Speichern.
  • PDFsPDF-Prüfung auf Titel, Sprache, Tags.
  • PflichtangabenErklärung & Meldekanal und der Posteingang.

Wann das Paket passt

SituationEinschätzung
Redaktionell gepflegte Contao-Website mit vielen Bildern, Formularen und PDFsPasst. Genau dieser Inhaltsbestand wird geprüft.
Eine Installation, mehrere Domains / StartpunktePasst. Lizenz, Overlay-Aktivierung, Erklärung und einfache Sprache werden je Startpunkt gesetzt; die Datenbank-Analyse arbeitet install-weit.
Sie brauchen ein belastbares Konformitäts-TestatNicht dieses Paket. Der Score ist im Produkt ausdrücklich als „Richtwert, keine Konformitätsaussage“ gekennzeichnet. Ein Testat kommt von einer Prüfstelle, nicht von einem Scanner.
Sie möchten Barrierefreiheit durch ein Overlay „herstellen“Nicht dieses Paket. Das Komfort-Overlay ist im Backend selbst als „Kein Ersatz für barrierefreie Inhalte“ ausgewiesen und nicht als Barrierefreiheits-Lösung zu vermarkten.
Sie brauchen zertifizierte Leichte SpracheNicht dieses Paket. Erzeugt werden KI-Entwürfe; das Modul weist ausdrücklich auf die nötige menschliche Prüfung hin.
Auf dem Server dürfen keine externen Aufrufe stattfindenPasst eingeschränkt. Datenbank-Checks, Frontend-Scan, PDF-Prüfung, Overlay, Erklärung, Meldekanal und Monitoring laufen vollständig lokal. Alle KI-Funktionen sind dann gesperrt.
Contao älter als 4.13 oder PHP älter als 8.1Nein. Siehe Voraussetzungen.

Teil 1 – Einrichtung

Der Weg von der leeren Installation bis zum ersten auswertbaren Scan:

  1. Voraussetzungen prüfen.
  2. Vor der Installation: Backup, Entscheidungen, Schreibrechte.
  3. Installation über den Contao Manager – der empfohlene Weg.
  4. Alternativ: Installation über Composer.
  5. Installation überprüfen.
  6. Lizenz aktivieren – ohne diesen Schritt bleibt das Paket wirkungslos.
  7. Einstellungen setzen (KI-Anbieter, Datenschutz, WCAG-Ziel, Monitoring).
  8. Ersten Voll-Scan ausführen.

Voraussetzungen

AnforderungVersionBemerkung
PHP>=8.1
Contao^4.13 || ^5.3contao/core-bundle
Symfony-Komponenten^5.4 || ^6.4 || ^7.0Config, DependencyInjection, HttpClient, HttpFoundation, HttpKernel, Mime
defuse/php-encryption^2.3wird mitinstalliert
smalot/pdfparser^2.7wird mitinstalliert
ext-sodiumempfohlenab PHP 8.1 auf nahezu allen Hostings bereits aktiv
ext-intlempfohlenbei internationalisierten Domainnamen

Ausgeschlossen sind contao/core (die alte Nicht-Composer-Installation) und contao/manager-bundle vor 4.13.

Zusätzlich brauchen Sie: eine gültige Lizenz je Startpunkt (siehe Lizenz aktivieren), und – nur für die KI-Funktionen – einen API-Schlüssel bei OpenAI oder einem OpenAI-kompatiblen Anbieter.

Vor der Installation

  1. Backup anlegen. Datenbank und Dateisystem. Das Paket legt eigene Tabellen additiv an und ändert keine Kerntabellen, aber contao:migrate ist immer ein Zeitpunkt für ein Backup.
  2. Domain am Startpunkt eintragen. Die Lizenz gilt für genau die Hostnamen, die im Startpunkt unter Routing konfiguriert sind – ohne Platzhalter. example.com und www.example.com sind zwei verschiedene Identitäten. Ist dort nichts eingetragen, lässt sich keine Lizenz aktivieren.
  3. Entscheiden, ob externe Aufrufe erlaubt sind. Der Schalter Keine externen Aufrufe ist standardmäßig aktiv; alle KI-Funktionen sind damit gesperrt, bis ihn jemand bewusst deaktiviert.
  4. Testumgebung wählen. Den ersten Voll-Scan möglichst auf einer Kopie ausführen: Er ruft jede veröffentlichte Seite einmal auf.

Schreibrechte. Das Paket legt seine Betriebsdaten in einem privaten Verzeichnis unterhalb von var/ ab – außerhalb des öffentlichen Webverzeichnisses und nicht über HTTP erreichbar. Es wird beim ersten Schreibzugriff selbst angelegt, muss für den Webserver beschreibbar sein und gehört in die Datensicherung. Von Hand ist dort nichts zu bearbeiten.

Installation über den Contao Manager

  1. Contao Manager öffnen und anmelden.
  2. Bereich Entdecken öffnen. Neue Pakete werden immer dort gesucht und hinzugefügt; der Bereich Pakete daneben zeigt unter Installierte Pakete nur, was bereits vorhanden ist. Entdecken ist zugleich die Startansicht.
  3. Über Pakete suchen nach vtinnovations/accessplus suchen und beim Treffer Paket hinzufügen wählen.
  4. Änderungen anwenden. Der Contao Manager installiert das Paket und aktualisiert den Autoloader.
  5. Bereich SystemwartungDatenbank-Migrationen und -BackupsDatenbank prüfen; die angezeigten Datenbank-Änderungen bestätigen. Dabei entstehen die acht Tabellen tl_accessplus_*.
  6. Unter Systemwartung den Anwendungs-Cache leeren (in der Navigation auch als Cache erneuern).

Installation über Composer

composer require vtinnovations/accessplus
vendor/bin/contao-console contao:migrate
vendor/bin/contao-console cache:clear

Auf einer Managed Edition erledigt contao:setup das Anlegen der Verzeichnisse und das Veröffentlichen der Bundle-Assets in einem Schritt:

vendor/bin/contao-console contao:setup

Aktualisieren:

composer update vtinnovations/accessplus
vendor/bin/contao-console contao:migrate
vendor/bin/contao-console cache:clear
Achtung

Die Frontend-Bestandteile (Komfort-Overlay, Sprachumschalter, Scanner) werden aus public/bundles/vtinnovationsaccessplus/ ausgeliefert. Wird das Paket per ZIP über ein bestehendes Verzeichnis kopiert statt über Composer aktualisiert, bleiben diese Dateien auf dem alten Stand und passen dann nicht mehr zum PHP-Code. Immer über Composer bzw. den Contao Manager aktualisieren und anschließend contao:setup (Managed Edition) oder assets:install ausführen.

Installation überprüfen

Dass das Bundle registriert ist, zeigt am schnellsten die Befehlsliste – ohne Registrierung erscheint keiner der Befehle:

vendor/bin/contao-console list accessplus

Erwartet werden sechs Befehle: accessplus:scan, accessplus:monitor, accessplus:pdf:scan, accessplus:alt:generate, accessplus:simplify und accessplus:subtitles:generate.

Im Backend erscheint eine neue Navigationsgruppe Barrierefreiheit mit zwei Einträgen:

  • Barrierefreiheit – „Prüfen, erzeugen, absichern – alle Werkzeuge in Tabs“ (do=accessplus)
  • Meldungen – „Eingegangene Barriere-Meldungen“ (do=accessplus_feedback)

Nach contao:migrate existieren die Tabellen aus Datenbanktabellen.

Lizenz aktivieren

AccessPlus wird je Startpunkt lizenziert, nicht install-weit. Verwaltet wird die Lizenz an genau einer Stelle, und die liegt nicht im Modul selbst, sondern in den Einstellungen des Startpunkts:

Seitenstruktur → Startpunkt bearbeiten → Abschnitt AccessPlus Licence management

Der Abschnitt steht direkt oberhalb des Zugriffsschutz-Abschnitts und erscheint ausschließlich bei Startpunkten. Das Feld heißt Lizenz mit dem Hilfetext „Lizenz dieses Startpunkts. Sie wird exakt an die hier konfigurierte Domain gebunden.“

So aktivieren Sie eine Lizenz

  1. Melden Sie sich im Contao-Backend an. Die Lizenzverwaltung erfordert ein Konto mit entsprechender Berechtigung; andernfalls meldet der Abschnitt „Keine Berechtigung für die Lizenzverwaltung.“
  2. Öffnen Sie Seitenstruktur und bearbeiten Sie den Startpunkt, für den die Lizenz gelten soll.
  3. Prüfen Sie zuerst im Abschnitt Routing, dass die Domain eingetragen ist. Ohne Domain meldet der Lizenzabschnitt: „Für diesen Startpunkt ist keine Domain hinterlegt.“
  4. Scrollen Sie zum Abschnitt AccessPlus Licence management. Er zeigt oben den aktuellen Stand: Status, Domain(s) dieses Startpunkts, Schlüssel, Paket, Gültig ab, Gültig bis und Zuletzt geprüft.
  5. Tragen Sie den Lizenzschlüssel in das Feld Lizenzschlüssel ein.
  6. Klicken Sie Lizenz prüfen und aktivieren. Der Server nimmt dafür eine ausgehende HTTPS-Verbindung auf – die Prüfung läuft serverseitig, nicht im Browser. Die Seite lädt anschließend neu.
  7. Kontrollieren Sie den Status. Bei Erfolg erscheint „Lizenz geprüft und aktiviert.“ und der Status steht auf aktiv.
  8. Wiederholen Sie die Schritte 2 bis 7 für jeden weiteren Startpunkt, der AccessPlus nutzen soll.

Bedienelemente des Abschnitts

Schaltfläche / FeldWirkung
LizenzschlüsselEingabefeld. Ist bereits ein Schlüssel hinterlegt, steht dahinter „(hinterlegt — Feld leer lassen, um ihn beizubehalten)“ und im Feld der Platzhalter „unverändert lassen“. Sonst: „Lizenzschlüssel eingeben“.
Lizenz prüfen und aktivierenAktiviert die Lizenz für diesen Startpunkt. Bestätigung: „Lizenz geprüft und aktiviert.“
Lizenz aktualisierenHolt den aktuellen Stand erneut, ohne den Schlüssel neu einzugeben. Der Weg, wenn sich an Ihrer Lizenz etwas geändert hat.
Lizenz entfernen + Entfernen bestätigenNimmt die Lizenz von diesem Startpunkt. Ohne gesetztes Häkchen: „Entfernen nicht bestätigt.“ Danach: „Lizenz entfernt. Für diesen Startpunkt gilt wieder das Contao-Standardverhalten.“

Zum Schlüsselfeld gehört der Hilfetext: „Der Schlüssel wird ausschließlich serverseitig verwendet und nie wieder vollständig angezeigt.“

Was der Status bedeutet

AnzeigeBedeutung
„aktiv“Alle Funktionen stehen für diesen Startpunkt zur Verfügung.
„abgelaufen — die Funktionen sind für diesen Startpunkt deaktiviert“Laufzeit zu Ende. Es gibt keinen Rückfall auf eine eingeschränkte Stufe.
„widerrufen — die Funktionen sind für diesen Startpunkt deaktiviert“Rücksprache mit dem Hersteller.
„nicht gültig: <Grund>“Der genannte Grund steht im Klartext dabei; die häufigsten sind unten aufgeführt.
„keine Lizenz hinterlegt“Für diesen Startpunkt wurde noch nie eine Lizenz eingetragen.
Achtung

Ohne gültige Lizenz verhält sich Contao für diesen Startpunkt exakt so, als wäre das Paket nicht installiert. Das Modul zeigt dann: „Für diesen Startpunkt liegt keine gültige Lizenz vor. Die Funktionen dieses Bundles sind für ihn deaktiviert; Contao verhält sich unverändert.“ Es werden keine Skripte, kein Overlay und keine zusätzlichen Attribute ins Frontend eingefügt. Inhalte werden dabei nicht angefasst: Bereits übernommene Alt-Texte, gespeicherte Untertitel und eingegangene Barriere-Meldungen bleiben vollständig erhalten.

Warum eine Aktivierung abgelehnt wird

MeldungWas zu tun ist
„Bitte einen Lizenzschlüssel eingeben.“Das Feld war leer.
„Für diesen Startpunkt ist keine Domain hinterlegt.“Im Startpunkt unter Routing eine Domain eintragen.
„Die Lizenz gilt nicht für die Domain dieses Startpunkts.“Hostnamen vergleichen – www. zählt als eigene Identität.
„Dieses Lizenzpaket ist für dieses Produkt nicht zugelassen.“Der Schlüssel gehört zu einem anderen Produkt.
„Die Lizenz ist abgelaufen.“ / „Die Lizenz ist noch nicht gültig.“Laufzeit prüfen.
„Die Lizenz wurde für diesen Startpunkt entzogen.“Rücksprache mit dem Hersteller.
„Die hinterlegte Lizenz muss einmalig aktualisiert werden.“Lizenz aktualisieren drücken.
„Es liegt bereits ein neuerer Lizenzstand vor.“Lizenz aktualisieren drücken.
„Der Lizenzserver ist derzeit nicht erreichbar. Der bisherige Stand bleibt erhalten.“Später erneut versuchen. Ein fehlgeschlagener Aufruf ändert den gespeicherten Status nicht.
„Der Lizenzserver hat die Anfrage abgelehnt. Bitte Schlüssel und Domain prüfen.“Schlüssel und Domain gegenprüfen.
„Ungültiger Startpunkt.“Die bearbeitete Seite ist kein Startpunkt.
Hinweis

Der Schalter Keine externen Aufrufe aus den Einstellungen betrifft ausschließlich die KI-Funktionen. Die Lizenzprüfung ist davon nicht berührt – dort verlassen keine Inhalts- oder KI-Daten den Server.

Einstellungen

Barrierefreiheit → Tab Einstellungen. Diese Werte gelten install-weit für alle Startpunkte.

So richten Sie die Einstellungen ein

  1. Öffnen Sie Barrierefreiheit und wechseln Sie auf den Tab Einstellungen.
  2. Setzen Sie unter Barrierefreiheit das WCAG-Zielniveau (Standard: AA (empfohlen)) und die Aktiven Sprachen als Komma-Liste, etwa de, en.
  3. Prüfen Sie unter Monitoring, ob Nach Speichern automatisch neu prüfen aktiv bleiben soll, und passen Sie bei Bedarf das Drossel-Intervall an.
  4. Wenn Sie die KI-Funktionen nutzen möchten: Wählen Sie unter KI-Anbieter den Anbieter. Bei OpenAI-kompatibel ist die Basis-URL Pflicht.
  5. Tragen Sie den API-Schlüssel ein. Für Alt-Texte gehört zusätzlich ein Vision-fähiges Modell in das Feld Modell.
  6. Entfernen Sie unter Datenschutz das Häkchen bei Keine externen Aufrufe. Solange es gesetzt ist, bleiben alle KI-Funktionen und der Verbindungstest gesperrt.
  7. Klicken Sie Speichern. Bestätigungen: „API-Schlüssel verschlüsselt gespeichert.“ und „Einstellungen gespeichert.“
  8. Klicken Sie Verbindung testen. Bei Erfolg: „Verbindung ok (<Anbieter> / <Modell>, <ms> ms).“

KI-Anbieter

FeldWerte / HilfetextStandard
AnbieterOpenAI oder OpenAI-kompatibel (eigene Basis-URL)OpenAI
Basis-URL (optional, Pflicht für „kompatibel“)nur http(s) mit Hostname; leer = Standard-Endpunkt https://api.openai.com/v1leer
Modell (optional, leer = Standard; für Alt-Texte ein Vision-Modell)freileer
API-Schlüssel (gesetzt|leer)„Wird verschlüsselt gespeichert und nie angezeigt. Feld leer lassen = unverändert.“leer
Schlüssel entfernenKontrollkästchen; löscht den gespeicherten Schlüssel. Bestätigung: „API-Schlüssel entfernt.“aus

Datenschutz

FeldBeschreibungStandard
Keine externen Aufrufe„— blockiert jeden KI-/Egress-Aufruf. Standardmäßig aktiv. Zum Nutzen der KI-Funktionen deaktivieren.“aktiv

Hilfetext: „Ist dies aktiv, verlassen keine Inhalts-/KI-Daten den Server. Der Verbindungstest unten ist dann gesperrt.“

Hinweis

Ein nicht angehaktes Kontrollkästchen wird beim Speichern als sicherer Zustand gewertet: Fehlt der Wert im Formular, gilt „Keine externen Aufrufe“ als aktiv. Das Paket fällt im Zweifel nie in Richtung mehr Egress zurück.

Barrierefreiheit

FeldWerteStandard
WCAG-ZielniveauA, AA (empfohlen), AAAAA
Aktive Sprachen (Komma-getrennt, z. B. „de, en“)Sprachcodes; steuert, für welche Sprachen fehlende Alt-Texte gemeldet werdende

Das Zielniveau bestimmt, welche axe-core-Regelgruppen der Frontend-Scan ausführt:

Zielniveauaxe-Tags
Awcag2a, wcag21a
AAwcag2a, wcag2aa, wcag21a, wcag21aa, wcag22aa
AAAwie AA, zusätzlich wcag2aaa, wcag21aaa

Monitoring

FeldBeschreibungStandard
Nach Speichern automatisch neu prüfen„— re-scannt die Datenbank-Checks nach Inhalts-Änderungen (gedrosselt). Kein externer Aufruf.“an
Drossel-Intervall (Sekunden, min. 30)„Verhindert Dauer-Scans bei vielen Speichervorgängen. Gilt auch für den Contao-Cron.“ Eingaben werden auf 30 … 86400 begrenzt.120

Erster Voll-Scan

Barrierefreiheit → Tab Dashboard. Der Lauf hat zwei Phasen: zuerst die Datenbank-Checks auf dem Server, danach axe-core auf den gerenderten Seiten im Browser. Die ausführliche Beschreibung steht unter Dashboard und Voll-Scan.

  1. Öffnen Sie Barrierefreiheit. Der Tab Dashboard ist voreingestellt.
  2. Sind mehrere Startpunkte lizenziert, wählen Sie oben in der Leiste Domain den gewünschten Startpunkt und klicken Wechseln.
  3. Klicken Sie im Abschnitt Voll-Scan auf Voll-Scan starten.
  4. Lassen Sie den Browser-Tab geöffnet, bis der Fortschrittsbalken durchgelaufen ist und „Fertig“ erscheint. Die Frontend-Phase läuft in Ihrem Browser; wird der Tab geschlossen, bricht sie ab.
  5. Prüfen Sie anschließend den A11Y-Score und die Kacheln. Die Befunde selbst bearbeiten Sie im Tab Bericht.

Teil 2 – Funktionen im Detail

Das Modul und seine Tabs

Das Paket belegt einen einzigen Navigationseintrag. Alle Werkzeuge liegen als Tabs darin (contao?do=accessplus&tab=…):

TabInhalt
DashboardVoll-Scan, Score, Kennzahlen, Lauf-Verlauf
BerichtBefundliste mit Bewertung
PDFPrüfung verlinkter PDF-Dokumente
KI-Alt-TexteAlt-Text-Vorschläge zur Freigabe
ARIA-Namenbarrierefreie Namen für namenlose Elemente
KI-UntertitelWebVTT-Entwürfe für Video und Audio
Einfache Sprachevereinfachte Textfassungen zur Freigabe
OverlayKomfort-Overlay konfigurieren
ErklärungBarrierefreiheitserklärung und Meldekanal
Verlaufangewendete Änderungen mit Rückgängig-Funktion
Einstellungensiehe Einstellungen
MeldungenLink auf das eigene Modul do=accessplus_feedback

So wählen Sie die Domain

  1. Sind mehrere Startpunkte lizenziert, erscheint unter der Tab-Leiste eine Leiste Domain.
  2. Wählen Sie den Startpunkt aus der Liste und klicken Sie Wechseln.
  3. Die Auswahl bleibt beim Tab-Wechsel erhalten. Jeder Tab arbeitet danach im Rahmen dieses Startpunkts.

Zur Auswahl stehen ausschließlich lizenzierte Startpunkte – eine install-weite Option gibt es bewusst nicht. Ist gar kein Startpunkt angelegt, meldet das Modul: „Es ist noch kein Startpunkt angelegt.“

Dashboard und Voll-Scan

Der Einstiegsbildschirm beantwortet die Frage „Wo stehen wir?“ mit einer Zahl und acht Kennzahlen und ist der Ort, an dem ein Scan gestartet wird.

So führen Sie einen Voll-Scan durch

  1. Öffnen Sie Barrierefreiheit → Dashboard und wählen Sie gegebenenfalls die Domain.
  2. Lesen Sie den Hilfetext im Abschnitt Voll-Scan: „Prüft erst die Datenbank-Inhalte, dann die gerenderten Seiten (axe-core: Kontrast, DOM, Landmarks). Verändert nichts.“
  3. Klicken Sie Voll-Scan starten. Neben der Schaltfläche erscheint der aktuelle Arbeitsschritt, darunter ein Fortschrittsbalken.
  4. Warten Sie, ohne den Tab zu wechseln oder zu schließen. Phase 1 läuft auf dem Server. Phase 2 lädt jede veröffentlichte Seite nacheinander in einem unsichtbaren Rahmen und prüft sie in Ihrem Browser – das dauert bei vielen Seiten entsprechend lange.
  5. Der Lauf ist fertig, wenn „Fertig“ erscheint. Die Seite zeigt danach den neuen Score und die aktualisierten Kacheln.
  6. Klicken Sie in einer Kachel oder im Frontend-Abschnitt auf einen Befund, um zum Bericht zu wechseln.
Achtung

Die Frontend-Phase ist an den geöffneten Backend-Tab gebunden. Schließen Sie ihn, bricht sie ab – die bereits übertragenen Ergebnisse bleiben erhalten, der Rest der Seiten wurde nicht geprüft. Geschützte Seiten werden übersprungen, weil im Rahmen nur die Anmeldemaske erschiene. Der Sweep ist auf 300 Seiten begrenzt; ist die Grenze erreicht, wird das angezeigt und nicht verschwiegen. Von dynamischen Listen (News, Termine) wird eine Stichprobe der 25 neuesten Detailseiten geprüft, weil alle dieselbe Vorlage nutzen.

Nur die Datenbank prüfen

  1. Klicken Sie stattdessen Nur Datenbank-Analyse (ohne Frontend).
  2. Der Lauf erfolgt vollständig auf dem Server und ist nach dem Neuladen der Seite fertig.
  3. Bestätigung: „Datenbank-Analyse fertig. Score: … · Ein-Klick: … · Manuell: … · Erledigt: …“

Das ist der verlässliche Weg, wenn die Frontend-Phase in Ihrer Umgebung Probleme macht: Er braucht kein JavaScript im Frontend und schreibt in jedem Fall einen Lauf mit, sodass ein Score erscheint.

A11Y-Score und Kennzahlen

Der Ring zeigt „<Zahl>% optimiert“ mit der Bildunterschrift A11Y-SCORE und darunter unmissverständlich: „Richtwert auf Basis der gefundenen Probleme – keine Konformitätsaussage.“ Solange noch kein Lauf gespeichert wurde, steht daneben „(live · noch kein Lauf gespeichert)“.

KachelBedeutung
Offene Befundealles, was weder erledigt noch ignoriert ist
Kritisch / ErnstBefunde mit Schweregrad Kritisch bzw. Schwer
Ein-Klick lösbarBefunde, für die ein unterstützter Reparaturweg existiert
Nur manuellBefunde, die eine menschliche Entscheidung brauchen
Erledigtbeim letzten Lauf nicht mehr gefunden
Frontend (axe)Befunde aus der gerenderten Seite
Bilder ohne AltKurzzugriff auf den häufigsten Fall

Dahinter steht die Einteilung in drei Kategorien: Erledigt (✅), Ein-Klick (🔘) und Nur manuell (👤). In „Ein-Klick“ landet derzeit ausschließlich der Check Bilder ohne Alternativtext, weil nur dort ein unterstützter Weg zur Behebung existiert. Der Hinweis dazu lautet: „Automatisch lösbar — im Modul KI-Alt-Texte erzeugen & übernehmen.“

Hinweis

„Ein-Klick“ heißt unterstützt, nicht automatisch. Kein Befund wird ohne menschliche Freigabe live verändert – die Liste der Prüfungen, die live angewendet werden dürfen, ist im Code bewusst leer.

Frontend-Befunde zurücksetzen

  1. Öffnen Sie den Abschnitt Frontend-Analyse (axe) – <Anzahl>.
  2. Klicken Sie Frontend-Befunde zurücksetzen.
  3. Bestätigung: „<Anzahl> Frontend-Befunde zurückgesetzt. Nächster Voll-Scan prüft die Seiten neu.“
  4. Starten Sie anschließend erneut einen Voll-Scan.

Das ist der vorgesehene Weg bei offensichtlichen Falschmeldungen, etwa aus Einblend-Animationen. Ist der Abschnitt leer, steht dort: „Keine offenen Frontend-Befunde. (Voll-Scan starten, um gerenderte Seiten zu prüfen.)“

Mehrere Domains und Lauf-Verlauf

Bedient eine Installation mehrere Domains, erscheint der Hinweis: „Diese Installation bedient mehrere Domains. Frontend-Funktionen (Komfort-Overlay, Einfache Sprache, Untertitel) und der Frontend-Scan gelten je Domain – den Scan jeweils dort ausführen. Die Datenbank-Analyse arbeitet install-weit und ist davon unabhängig.“ Zu jeder Domain wird die Seitenzahl gezeigt und, wo sinnvoll, ein Link „dortiges Backend öffnen ›“.

Die Tabelle Lauf-Verlauf zeigt Zeitpunkt und Score vergangener Läufe. An den Kennzahlen steht zusätzlich die Veränderung: „(seit letztem Lauf: +<neu> neu, −<behoben> behoben)“.

Bericht

Barrierefreiheit → Tab Bericht. Die Arbeitsliste: hier wird jeder Befund angesehen, bewertet und abgearbeitet.

So arbeiten Sie einen Befund ab

  1. Öffnen Sie den Tab Bericht. Sind noch keine Befunde da, klicken Sie Scan jetzt – das startet ausschließlich die Datenbank-Checks: „Liest die Contao-Inhalte (Datenbank) — verändert nichts.“
  2. Nach dem Lauf erscheint die Zusammenfassung „Scan fertig. Neu: … · Wieder offen: … · Behoben: … · Offen: … · Score: …“.
  3. Suchen Sie sich einen Befund aus der Liste. Jeder Eintrag nennt Schweregrad, Prüfung und das betroffene Element.
  4. Bei Frontend-Befunden (axe) klicken Sie Auf der Seite zeigen →. Es öffnet sich in einem neuen Tab eine Vorschau, in der das Element markiert wird.
  5. Klicken Sie Jetzt fixen ›. Das öffnet in einem neuen Tab die Contao-eigene Bearbeitungsmaske des zugrunde liegenden Datensatzes – je nach Befund die Dateiverwaltung, den Artikel, den Formulargenerator oder die Seitenstruktur.
  6. Beheben Sie das Problem dort und speichern Sie.
  7. Zurück im Bericht: Klicken Sie Bestätigen, wenn es ein echtes Problem war, oder Ignorieren, wenn Sie es bewusst akzeptieren. Bestätigung: „Status aktualisiert.“
  8. Starten Sie später erneut einen Scan. Tatsächlich behobene Befunde wechseln von selbst auf Erledigt.
Hinweis

Jetzt fixen › führt nicht in ein AccessPlus-Werkzeug, sondern in Contaos normale Bearbeitungsmaske – der Befund wird also dort behoben, wo der Inhalt ohnehin gepflegt wird. Die Schaltfläche erscheint nur, wenn sich ein bearbeitbarer Datensatz zuordnen lässt. Auf der Seite zeigen → erscheint nur bei Frontend-Befunden aus dem axe-Scan, für die eine Beispiel-URL vorliegt.

Die fünf Datenbank-Checks

BezeichnungKennungWCAGSchweregradWas geprüft wird
Bilder ohne Alternativtextimage_alt_missing1.1.1MittelBilddateien, die tatsächlich verwendet werden (Einzelbild, Galerie, Slider, Modul oder Insert-Tag im Fließtext) und in tl_files.meta für eine aktive Sprache keinen Alt-Text haben. Geprüft werden jpg, jpeg, png, gif, webp.
Überschriften-Hierarchieheading_hierarchy1.3.1, 2.4.6MittelÜbersprungene Ebenen und mehrfache H1 innerhalb eines Artikels, ermittelt aus den Überschrift-Inhaltselementen in Dokumentreihenfolge.
Seitensprache (lang) fehltpage_language_missing3.1.1SchwerStartpunkte ohne gesetzte Sprache – davon hängt <html lang> für den gesamten Baum ab.
Wenig aussagekräftige Linktextelink_text_vague2.4.4MittelHyperlink-Elemente und Inline-Anker im Fließtext mit nichtssagender Beschriftung.
Formularfelder ohne Beschriftungform_field_no_label1.3.1, 3.3.2SchwerFelder in tl_form_field, die eine sichtbare Beschriftung brauchen und keine haben. Strukturelle Typen (html, headline, submit) sind ausgenommen.

Status eines Befunds

StatusBedeutungWie er entsteht
offenfrisch gefunden, noch nicht bewertetautomatisch beim Scan
bestätigtein echtes Problem – im Bericht als [bestätigt] markiertSchaltfläche Bestätigen
ignoriertbewusst akzeptiertSchaltfläche Ignorieren
erledigtbeim letzten Lauf nicht mehr gefundenautomatisch beim Scan

Mit Wieder offen holen Sie einen bewerteten Befund zurück in die Bearbeitung. Von Menschen gesetzte Zustände sind klebend: Ein erneuter Scan setzt sie nicht zurück, er setzt einen Befund nur dann auf erledigt, wenn er in der Quelle nicht mehr auftaucht.

Weitere Elemente der Liste

  • Das Abzeichen Best Practice mit dem Titel „Empfehlung – kein WCAG/BFSG-Pflichtverstoß“ markiert Frontend-Befunde ohne zugeordnetes Erfolgskriterium.
  • Mehrfach auftretende Befunde werden zusammengefasst und mit „ × <Anzahl> Seiten“ ausgewiesen.
  • Die Score-Zeile lautet: „Score: <Zahl>/100 (<Anzahl> offene Befunde · Richtwert, keine Konformitätsaussage)“.
  • Ist nichts offen: „Keine offenen Befunde. Entweder noch nicht gescannt oder alles erledigt.“
  • Lässt sich die Vorschau nicht erzeugen, erscheint „(Cross-Origin – nicht markierbar)“, „(Element nicht gefunden – Seite evtl. geändert)“ oder „(Vorschau nicht möglich)“.

PDF-Dokumente

Barrierefreiheit → Tab PDF. Prüft verlinkte PDF-Dateien auf drei Grundangaben. Hilfetext: „Liest verlinkte PDFs (Titel, Sprache, Tags). Verändert die Dateien NICHT.“

So prüfen Sie Ihre PDF-Dokumente

  1. Öffnen Sie den Tab PDF.
  2. Klicken Sie PDFs prüfen. Der Lauf erfolgt auf dem Server; die Seite lädt danach neu.
  3. Lesen Sie die Zusammenfassung: „PDF-Prüfung fertig. Geprüft: … · Probleme: … · Unklar (komprimiert): … · Unlesbar: …“
  4. Arbeiten Sie den Abschnitt Offene PDF-Befunde (<Anzahl>) durch. Jeder Eintrag nennt die betroffene Datei und die fehlende Angabe.
  5. Öffnen Sie das Ausgangsdokument (Word, InDesign, LibreOffice) und ergänzen Sie dort Titel und Sprache.
  6. Exportieren Sie das PDF erneut – mit aktivierter Tag-Erzeugung („barrierefreies PDF“ / „PDF/UA“, je nach Programm).
  7. Ersetzen Sie die Datei in der Contao-Dateiverwaltung und klicken Sie erneut PDFs prüfen.
KennungPrüfungWCAGSchweregrad
pdf_no_titleDokumenttitel fehlt2.4.2Mittel
pdf_no_langDokumentsprache fehlt3.1.1Mittel
pdf_not_taggedDokument ist nicht getaggt1.3.1Schwer
Achtung

Der Abschnitt trägt den Hinweis: „PDFs werden nicht automatisch repariert — echte Barrierefreiheit (Tags/Struktur) entsteht beim getaggten Export aus der Quelle. Das Tool zeigt, welche Dokumente betroffen sind.“ Es gibt also bewusst keine Schaltfläche, die ein PDF korrigiert. Die Kategorie unklar ist ebenso ehrlich gemeint: Bei komprimierten Dokumenten lässt sich der Tagging-Zustand nicht sicher feststellen, und das Werkzeug behauptet dann nichts. Ist nichts offen: „Keine PDF-Probleme offen. Entweder noch nicht geprüft, alles ok, oder Status unklar (komprimierte PDFs).“

KI-Alt-Texte

Barrierefreiheit → Tab KI-Alt-Texte. Erzeugt Alt-Text-Vorschläge, ausschließlich für Bilder ohne vorhandenen Alt-Text. Hilfetext: „Erzeugt Alt-Text-Vorschläge nur für Bilder OHNE vorhandenen Alt-Text. Nichts wird automatisch veröffentlicht.“

So erzeugen und übernehmen Sie Alt-Texte

  1. Stellen Sie sicher, dass in den Einstellungen ein API-Schlüssel gesetzt, ein Vision-fähiges Modell eingetragen und Keine externen Aufrufe deaktiviert ist. Sonst steht dort statt der Schaltfläche: „„Keine externen Aufrufe“ ist aktiv – Generierung gesperrt. In den Einstellungen freigeben.“
  2. Öffnen Sie den Tab KI-Alt-Texte.
  3. Setzen Sie das Feld Anzahl: auf die gewünschte Menge – erlaubt sind 1 bis 100, voreingestellt ist 25. Beginnen Sie klein, um die Qualität zu beurteilen.
  4. Klicken Sie Vorschläge erzeugen. Der Aufruf läuft synchron auf dem Server; warten Sie, bis die Seite neu geladen ist. Ergebnis: „Erzeugt: … · Erneut vorgelegt: … · Fehler: …“
  5. Gehen Sie den Abschnitt Offene Vorschläge (<Anzahl>) Eintrag für Eintrag durch. Jeder zeigt das Bild und den Vorschlag in einem Textfeld.
  6. Korrigieren Sie den Text im Feld. Trägt der Eintrag das Abzeichen dekorativ → leeres alt, hält die KI das Bild für rein dekorativ – prüfen Sie das und leeren Sie in dem Fall das Feld.
  7. Klicken Sie Übernehmen. Bestätigung: „Alt-Text übernommen (in tl_files.meta geschrieben).“ Passt der Vorschlag nicht, klicken Sie Verwerfen – „Vorschlag verworfen.“
  8. Ist die Liste leer, erscheint „Keine offenen Vorschläge.“ Ein erneuter Voll-Scan zeigt den verbesserten Score.
ElementVerhaltenStandard
Anzahl:Obergrenze für einen Durchlauf, 1 bis 10025
TextfeldPlatzhalter „Alt-Text – leer lassen = dekoratives (leeres) alt“Vorschlag der KI
Übernehmenschreibt nach tl_files.meta
Verwerfenschließt den Vorschlag, ohne etwas zu schreiben
Achtung

Ein manuell gepflegter Alt-Text wird niemals überschrieben. Der Versuch wird abgewiesen mit: „Nicht übernommen: es existiert bereits ein manueller Alt-Text (wird nie überschrieben).“ Fehlt die Datei: „Nicht übernommen: Datei nicht gefunden.“ Bilder werden mit maximal 4 MB an den Anbieter übertragen; größere werden mit „Bild zu groß (<Größe> KB, max <max> KB).“ abgelehnt.

Weil der Alt-Text in tl_files.meta landet, wirkt eine Freigabe an jeder Stelle, an der die Datei eingebunden ist – ein Bild in fünf Galerien wird einmal bearbeitet.

ARIA-Namen

Barrierefreiheit → Tab ARIA-Namen. Sammelt Elemente ohne barrierefreien Namen aus dem Frontend-Scan und setzt nach Freigabe zur Laufzeit ein aria-label. Die Modulbeschreibung: „Elemente ohne barrierefreien Namen (Links/Schaltflächen/iframes ohne Text) werden beim Frontend-Scan gesammelt. Prüfe den vorgeschlagenen Namen, passe ihn an und übernimm ihn — er wird dann zur Laufzeit als aria-label gesetzt, aber nur wo das Element noch keinen Namen hat (nie überschrieben). Der saubere Fix gehört langfristig ins Template.“

So vergeben Sie barrierefreie Namen

  1. Führen Sie zuerst im Dashboard einen Voll-Scan aus. Ohne ihn bleibt die Liste leer: „Keine offenen Elemente. Führe im Dashboard einen Voll-Scan aus.“
  2. Öffnen Sie den Tab ARIA-Namen. Die Einträge stehen unter Offen.
  3. Sehen Sie sich den Eintrag an: Er nennt die Regel (etwa „Link ohne erkennbaren Namen“), den Selektor: und einen Ausschnitt des Elements. Über Auf der Seite zeigen → öffnen Sie die betroffene Seite in einem neuen Tab.
  4. Tragen Sie im Feld mit dem Platzhalter „Barrierefreier Name (aria-label)“ einen Namen ein, der beschreibt, wohin der Link führt oder was die Schaltfläche tut.
  5. Optional: Klicken Sie KI-Vorschlag, um einen Vorschlag eintragen zu lassen – „KI-Vorschlag eingetragen: „…“. Bitte prüfen und übernehmen.“ Das erfordert einen freigegebenen KI-Anbieter.
  6. Klicken Sie Übernehmen. Bestätigung: „Name übernommen und aktiv: „…“.“ Der Eintrag wandert in den Abschnitt Aktiv.
  7. Passt ein Eintrag nicht, klicken Sie Verwerfen. Einen bereits aktiven Namen nehmen Sie mit Deaktivieren zurück.
  8. Planen Sie parallel die dauerhafte Lösung im Template ein – das Modul sagt selbst, dass der saubere Fix dorthin gehört.
RegelBezeichnung im Modul
link-nameLink ohne erkennbaren Namen
button-nameSchaltfläche ohne Namen
frame-titleiframe ohne Titel
aria-input-field-nameEingabefeld ohne Namen
input-button-nameButton-Eingabe ohne Namen
aria-command-nameBedienelement ohne Namen
aria-toggle-field-nameUmschalter ohne Namen
input-image-altBild-Button ohne Alt-Text
Hinweis

Freigegebene Namen werden auf jeder Seite ausgeliefert; ein Selektor, der auf der aktuellen Seite nicht greift, bleibt wirkungslos. Ein Fix an Kopf- oder Fußzeile wirkt dadurch site-weit. Gesetzt wird das Attribut nur dort, wo das Element noch keinen Namen hat – ein vorhandener Name oder sichtbarer Text wird nie überschrieben. Ohne Eingabe meldet das Modul: „Bitte einen Namen eingeben.“

KI-Untertitel

Barrierefreiheit → Tab KI-Untertitel. Erzeugt WebVTT-Untertitel aus Video- und Audiodateien. Hilfetext: „Erzeugt WebVTT-Untertitel aus Video/Audio (Whisper). KI-Entwurf – muss geprüft und freigegeben werden, bevor er als Datei gespeichert wird. Limit 25 MB pro Datei; nur Anbieter OpenAI / kompatibel.“

So erstellen Sie Untertitel

  1. Prüfen Sie, dass in den Einstellungen als Anbieter OpenAI oder OpenAI-kompatibel gewählt und Keine externen Aufrufe deaktiviert ist.
  2. Öffnen Sie den Tab KI-Untertitel. Unter Medien (<Anzahl>) stehen die gefundenen Dateien; tatsächlich eingebundene tragen das Abzeichen verwendet.
  3. Wählen Sie bei der gewünschten Datei unter Sprache: die gesprochene Sprache.
  4. Klicken Sie Untertitel erzeugen. Die Übertragung läuft synchron – bei längeren Medien dauert das mehrere Minuten; lassen Sie den Tab offen. Ergebnis: „Untertitel-Entwurf erzeugt (<Sprache>, <ms> ms). Bitte prüfen und freigeben.“
  5. Lesen Sie den Entwurf im Textfeld gegen. Whisper-Zeitstempel und Text müssen kontrolliert werden – Eigennamen und Fachbegriffe sind die üblichen Fehlerquellen.
  6. Zwischenstand sichern: Entwurf speichern („Entwurf gespeichert.“). Der Text bleibt Entwurf und wird nicht ausgeliefert.
  7. Klicken Sie Freigeben & speichern. Erst jetzt entsteht die VTT-Datei: „Untertitel freigegeben und gespeichert: <Pfad>“. Passt der Entwurf nicht, nehmen Sie Verwerfen oder Neu erzeugen.
  8. Prüfen Sie die Seite im Frontend. Die Untertitel erscheinen automatisch am Video, sofern es noch keinen eigenen Untertitel-Track hat.
ElementVerhalten
Status:Entwurf, ungeprüft · freigegeben · verworfen
Entwurf speichernsichert den bearbeiteten Text, ohne eine Datei zu schreiben
Freigeben & speichernschreibt die VTT-Datei in die Dateiverwaltung
Neu erzeugenverwirft den Entwurf und transkribiert erneut

Für die Einbindung gilt der Hinweis: „Untertitel danach im Video-Element als <track> einbinden (Contao 5.4+ / zoglo). Whisper-Zeitstempel und Text bitte gegenlesen.“ Das Paket übernimmt das zusätzlich selbst: Für jedes <video> ohne eigenen <track> sucht es zu jeder lokalen Quelle eine gleichnamige Untertiteldatei nach dem Muster clip.mp4clip.de.vtt und fügt ein <track kind="captions"> ein. Die erste Sprache wird als default markiert; Videos ohne passende Datei bleiben unangetastet.

Achtung

Harte Grenze von 25 MB je Datei: „Datei größer als 25 MB – bitte kürzen/komprimieren oder via Konsole verarbeiten.“ Untertitel funktionieren nur mit den Anbietern OpenAI und kompatibel; sonst: „Untertitel benötigen einen Whisper-kompatiblen Anbieter (OpenAI oder „kompatibel“). Aktueller Anbieter unterstützt keine Audio-Transkription.“ Sind gar keine Medien vorhanden: „Keine Audio-/Videodateien in der Dateiverwaltung gefunden.“

Einfache / Leichte Sprache

Barrierefreiheit → Tab Einfache Sprache. Erzeugt vereinfachte Fassungen der Seitentexte, zwischen denen Besucherinnen und Besucher im Frontend umschalten können. Der Disclaimer steht über dem Modul: „KI erstellt Entwürfe in vereinfachter Sprache. Keine zertifizierte Leichte Sprache – menschliche Prüfung nötig, nichts wird automatisch veröffentlicht.“

So richten Sie die einfache Sprache ein

  1. Öffnen Sie den Tab Einfache Sprache und wählen Sie oben die Domain, für die die Funktion gelten soll.
  2. Setzen Sie im Abschnitt Einstellungen das Häkchen bei Funktion aktiv (Umschalter im Frontend anzeigen).
  3. Wählen Sie unter Angebotene Register: aus Einfache Sprache und Leichte Sprache.
  4. Wählen Sie unter Umschalter: die Darstellung: im Komfort-Overlay, Floating-Button und/oder Nav-Link-Modul.
  5. Klicken Sie Einstellungen speichern. Bestätigung: „Einstellungen gespeichert (Aktivierung für diese Domain).“

So erzeugen und veröffentlichen Sie Entwürfe

  1. Wählen Sie im Abschnitt Seite wählen eine Seite (Platzhalter „– bitte wählen –“) oder ★ Alle Inhalte (ganze Website). Für die zweite Variante gilt: „Bereich: ganze Website – alle Inhaltselemente (auch modul-/theme-eingebundene Karten).“
  2. Setzen Sie Register: und Sprache: und klicken Sie Laden. Gibt es nichts zu tun: „Keine vereinfachbaren Textelemente gefunden.“
  3. Klicken Sie Entwürfe erzeugen (<Anzahl> Elemente). Der Lauf ist synchron – bei vielen Elementen dauert er entsprechend. Ergebnis: „Erzeugt: … · Übersprungen: … · Fehler: …“
  4. Vergleichen Sie je Element Original: und Entwurf:. Bearbeiten Sie den Entwurf direkt im Textfeld.
  5. Sichern Sie Zwischenstände mit Speichern („Entwurf gespeichert.“).
  6. Klicken Sie Freigeben. Bestätigung: „Entwurf freigegeben (erscheint im Frontend bei aktivem Umschalter).“ Unpassende Entwürfe entfernen Sie mit Verwerfen.
  7. Haben Sie einen Text redaktionell nachgearbeitet, klicken Sie 🔒 Sperren – „Freigeben + vor Neu-Generierung schützen“. Bestätigung: „Bereich gesperrt – wird nicht mehr neu generiert und bleibt live.“
  8. Sind Sie mit allem einverstanden, geht es gebündelt mit Alle Entwürfe freigeben – „<Anzahl> Entwürfe freigegeben.“
  9. Prüfen Sie das Ergebnis im Frontend über den Umschalter.
Feld / SchaltflächeWerteStandard
Funktion aktiv (Umschalter im Frontend anzeigen)je Startpunktaus
Angebotene Register:Einfache Sprache, Leichte Sprachebeide
Umschalter:im Komfort-Overlay, Floating-Button, Nav-Link-ModulOverlay an, Button an, Nav-Link aus
Status je Elementkein Entwurf · Entwurf, ungeprüft · freigegeben · verworfenkein Entwurf
🔓 Entsperrenhebt die Sperre auf – „Sperre aufgehoben.“
Hinweis

Der Umschalter setzt das Cookie accessplus_simple (Wert einfach oder leicht) und lädt die Seite neu. Freigegebene Entwürfe werden dann im gerenderten HTML an die Stelle des Originaltexts gesetzt. Das funktioniert deshalb auch bei Theme- und RockSolid-Elementen, die über eigene Templates rendern. Die Inhalte in tl_content werden nie verändert; Textstellen ohne freigegebenen Entwurf bleiben unverändert stehen. Anfragen mit gesetztem Cookie gelten als privat und landen nicht im geteilten Cache. Zurück zur Normalfassung führt der Eintrag Alltagssprache.

Komfort-Overlay

Barrierefreiheit → Tab Overlay. Eine optionale Bedienleiste im Frontend mit Anzeige- und Komfortoptionen. Der Hinweis ist Teil des Produkts: „Komfort-/Anzeigeoptionen fürs Frontend. Kein Ersatz für barrierefreie Inhalte und nicht als „Barrierefreiheits-Lösung“ zu vermarkten.“

So aktivieren und gestalten Sie das Overlay

  1. Öffnen Sie den Tab Overlay und wählen Sie oben die Domain. Der Abschnitt Aktivierung weist darauf hin: „Diese Aktivierung gilt nur für die gewählte Domain. Design und Funktionen unten gelten install-weit für alle Domains.“
  2. Setzen Sie das Häkchen bei Overlay im Frontend anzeigen.
  3. Wählen Sie im Abschnitt Design die Button-Farbe und die Button-Position.
  4. Gehen Sie die vier Funktionsgruppen durch und nehmen Sie das Häkchen bei allem heraus, was Sie nicht anbieten möchten. Standardmäßig sind alle 30 Funktionen aktiv.
  5. Klicken Sie Speichern. Bestätigung: „Overlay-Einstellungen gespeichert (Aktivierung für diese Domain).“
  6. Rufen Sie die Website auf und prüfen Sie die Schaltfläche an der gewählten Position.
FeldWerteStandard
Overlay im Frontend anzeigenje Domainaus
Button-FarbeFarbwert#1d4ed8
Button-PositionUnten rechts · Unten links · Mitte rechts · Mitte links · Oben rechts · Oben linksUnten rechts
GruppeFunktionen
ModiEpilepsie-sicherer Modus · Sehbehinderten-Modus · ADHS-freundlicher Modus
LesenInhaltliche Skalierung · Schriftgröße · Zeilenhöhe · Buchstabenabstand · Lesbare Schriftart · Legasthenie-Schrift · Titel hervorheben · Links hervorheben · Kognitives Lesen · Link-Navigator
OrientierungDunkler Kontrast · Heller Kontrast · Hoher Kontrast · Einfarbig · Animationen stoppen · Töne stummschalten · Großer Cursor · Bilder ausblenden · Lesehilfe (Leselineal) · Vorlesen (Text in Sprache) · Fokus hervorheben · Hover hervorheben · Textausrichtung
FarbenTextfarbe anpassen · Titelfarbe anpassen · Linkfarbe anpassen · Hintergrundfarbe anpassen

Die Bestandteile werden lokal ausgeliefert – kein externer Loader, kein Inline-Skript, keine Tokens, kein Tracking.

Erklärung & Meldekanal

Barrierefreiheit → Tab Erklärung. Stellt die Pflichtangaben zusammen und speichert sie je Domain. Zwei Hinweise stehen fest im Modul:

  • „Dies ist keine Rechtsberatung. Das Tool stellt die Pflichtangaben zusammen; für die rechtliche Richtigkeit ist der Betreiber verantwortlich.“
  • „Diese Erklärung gilt für die gewählte Domain. Jede Domain hat ihre eigene Erklärung; ohne eigene Angaben greift die install-weite Vorlage („Alle Domains“).“

So erstellen Sie die Barrierefreiheitserklärung

  1. Führen Sie zuerst einen Voll-Scan aus – das Modul leitet daraus einen Vorschlag ab: „Status-Vorschlag aus aktuellen Befunden: <Status> (nur Empfehlung).“
  2. Öffnen Sie den Tab Erklärung und wählen Sie oben die Domain.
  3. Füllen Sie den Abschnitt Angaben aus: Betreiber / Organisation, Website (URL), Stand der Vereinbarkeit und Nicht barrierefreie Inhalte (frei). In das Freitextfeld gehören die bekannten Barrieren aus dem Bericht.
  4. Füllen Sie Kontakt / Meldekanal aus. Die Adresse unter E-Mail für Meldungen (Meldekanal) bekommt jede eingehende Barriere-Meldung zugestellt.
  5. Füllen Sie Erstellung & Durchsetzung aus: Erstellt am (Datum), Methode und Durchsetzungsverfahren / Schlichtungsstelle (frei).
  6. Klicken Sie Speichern. Bestätigung: „Barrierefreiheitserklärung für diese Domain gespeichert.“ Bei einer unplausiblen Adresse: „Meldekanal-E-Mail ungültig — nicht gespeichert.“
  7. Legen Sie die Erklärung auf eine Seite: „Im Frontend einbinden: Modul-Typ Barrierefreiheitserklärung (zeigt diese Angaben) und Meldekanal (Meldeformular) auf eine Seite legen.“ Siehe Frontend-Module.
  8. Verlinken Sie diese Seite gut auffindbar, üblicherweise in der Fußzeile.
AbschnittFeldWerte / Standard
AngabenBetreiber / Organisationfrei
Website (URL)frei
Stand der Vereinbarkeitvollständig konform · teilweise konform (Standard) · nicht konform
Nicht barrierefreie Inhalte (frei)Freitext für bekannte Barrieren
Kontakt / MeldekanalKontakt-Namefrei
Kontakt-E-Mailfrei
Kontakt-Telefonfrei
E-Mail für Meldungen (Meldekanal)Empfänger der Barriere-Meldungen
Erstellung & DurchsetzungErstellt am (Datum)frei
MethodeSelbstbewertung (Standard) · Externe Prüfung
Durchsetzungsverfahren / Schlichtungsstelle (frei)Freitext

Meldungen (Posteingang)

Barrierefreiheit → Meldungen (eigener Navigationseintrag, do=accessplus_feedback). Hier landen die Zuschriften aus dem Frontend-Formular. Eine „Neu“-Schaltfläche gibt es nicht – Einträge entstehen ausschließlich über den Meldekanal.

So bearbeiten Sie eine Meldung

  1. Öffnen Sie Barrierefreiheit → Meldungen, entweder über die Navigation oder über den Tab Meldungen im Modul.
  2. Filtern Sie die Liste bei Bedarf nach Status.
  3. Öffnen Sie eine Meldung über Bearbeiten. Name, E-Mail, URL und Nachricht sind schreibgeschützt – es ist die Zuschrift einer anderen Person.
  4. Setzen Sie Status auf progress, während Sie daran arbeiten, und speichern Sie.
  5. Beheben Sie die gemeldete Barriere und antworten Sie der meldenden Person, sofern eine E-Mail-Adresse angegeben wurde.
  6. Setzen Sie Status abschließend auf done.
AbschnittFelder
MeldungName, E-Mail, URL, Nachricht – alle schreibgeschützt
Statusnew · progress · done (Standard new) – das einzige bearbeitbare Feld
Hinweis

Ist kein Startpunkt lizenziert, wird der Posteingang schreibgeschützt und meldet: „Keine gültige Lizenz für einen Startpunkt: Die Meldungen sind nur lesbar. Die Lizenz wird unter Seitenstruktur → Startpunkt bearbeiten → AccessPlus Licence management hinterlegt.“ Bereits eingegangene Meldungen werden dabei weder ausgeblendet noch gelöscht – sie sind die rechtliche Korrespondenz des Betreibers.

Verlauf / Undo

Barrierefreiheit → Tab Verlauf. Jede angewendete Änderung wird protokolliert und lässt sich zurücknehmen.

So nehmen Sie eine Änderung zurück

  1. Öffnen Sie den Tab Verlauf. Ist noch nichts passiert: „Noch keine angewendeten Änderungen.“
  2. Suchen Sie den Eintrag anhand von Zeit, Aktion, Ziel und Benutzer.
  3. Prüfen Sie die Spalte Vorher → Nachher. Stand vorher kein Wert, zeigt sie ∅ (kein alt).
  4. Klicken Sie Rückgängig. Bestätigung: „Änderung rückgängig gemacht; Vorschlag wieder offen.“
  5. Der zugehörige Vorschlag steht danach wieder im jeweiligen Tab zur Bearbeitung bereit.
Achtung

Rückgängig funktioniert nur, solange niemand das Ziel zwischenzeitlich anderweitig geändert hat. Sonst meldet das Modul: „Rückgängig nicht möglich (inzwischen geändert oder bereits rückgängig).“ Das ist Absicht – ein Undo, das eine neuere Redaktionsänderung überschreibt, wäre schlimmer als kein Undo. Bereits zurückgenommene Einträge tragen die Markierung rückgängig.

Monitoring

Damit der Zustand zwischen zwei bewussten Scans nicht wegdriftet, prüft das Paket auf zwei Wegen nach – beide ausschließlich lokal, ohne externen Aufruf.

So richten Sie das Monitoring ein

  1. Öffnen Sie Barrierefreiheit → Einstellungen, Abschnitt Monitoring.
  2. Lassen Sie Nach Speichern automatisch neu prüfen aktiviert. Danach löst jedes Speichern eines Inhaltselements, einer Seite oder eines Formularfelds einen erneuten Durchlauf der Datenbank-Checks aus.
  3. Setzen Sie das Drossel-Intervall. 120 Sekunden sind voreingestellt; bei sehr aktiver Redaktion erhöhen Sie den Wert, um Dauer-Scans zu vermeiden.
  4. Klicken Sie Speichern.
  5. Kontrollieren Sie den Verlauf gelegentlich im Dashboard unter Lauf-Verlauf.

Zusätzlich stößt ein täglicher Contao-Cronjob denselben Lauf an. Er ignoriert den Speichern-Schalter, bleibt aber an dasselbe Intervall gebunden. Contaos „Poor-Man-Cron“ genügt – ein System-Cron ist nicht erforderlich. Ein Fehler beim Monitoring blockiert nie den Speichervorgang der Redaktion; er wird protokolliert und übersprungen.

Auf der Konsole zeigt accessplus:monitor zusätzlich die Veränderung: „Score: … · Offen: …“ und „Seit letztem Lauf: +… neu · -… behoben · Score …“ – beim allerersten Lauf „Erstlauf — kein Vergleich.“

Frontend-Module

Drei Modultypen in der Gruppe Barrierefreiheit:

ModultypBeschreibungTemplate
Barrierefreiheitserklärung„Zeigt die Erklärung zur Barrierefreiheit“mod_accessplus_statement
Barriere-Meldekanal„Formular zum Melden von Barrieren“mod_accessplus_feedback
Einfache/Leichte Sprache – Umschalter„Links zum Umschalten der Sprachebene“mod_accessplus_simple_switch

So binden Sie Erklärung und Meldekanal ein

  1. Legen Sie in der Seitenstruktur eine Seite an, etwa „Erklärung zur Barrierefreiheit“.
  2. Öffnen Sie Layout → Module und erstellen Sie ein Modul vom Typ Barrierefreiheitserklärung.
  3. Erstellen Sie ein zweites Modul vom Typ Barriere-Meldekanal.
  4. Legen Sie beide Module über je ein Inhaltselement Modul auf die neue Seite – die Erklärung oben, das Formular darunter.
  5. Verlinken Sie die Seite in der Fußzeile, damit sie von überall erreichbar ist.
  6. Rufen Sie die Seite auf und senden Sie eine Testmeldung ab. Sie muss im Posteingang Meldungen erscheinen.

Alle drei Modultypen benutzen die Standard-Palette: Titel, Überschrift, Typ, Zugriffsschutz und CSS-ID/Klasse. Bestehende tl_module-Felder werden nicht verändert.

Barrierefreiheitserklärung

Rendert die Angaben aus dem Tab Erklärung unter der Überschrift „Erklärung zur Barrierefreiheit“, mit den Abschnitten Stand der Vereinbarkeit, Nicht barrierefreie Inhalte, Erstellung dieser Erklärung, Feedback und Kontaktangaben und Durchsetzungsverfahren.

Barriere-Meldekanal

Formular mit der Überschrift Barriere melden und den Feldern Name (optional), E-Mail (optional, für Rückfragen), Betroffene Seite (URL, optional), Ihre Meldung sowie der Schaltfläche Meldung absenden. Ein verstecktes Feld „Website (bitte leer lassen)“ dient als Spam-Falle. Nach dem Absenden: „Vielen Dank — Ihre Meldung wurde übermittelt.“

PrüfungMeldung
Nachricht fehlt oder zu lang„Bitte eine Nachricht eingeben (max. 5000 Zeichen).“
E-Mail unplausibel„E-Mail-Adresse ungültig.“
URL ohne Schema„Seiten-URL muss mit http(s):// beginnen.“
Name zu lang„Name zu lang.“
Token abgelaufen„Sicherheits-Token ungültig. Bitte erneut senden.“

Ist im Tab Erklärung eine E-Mail für Meldungen hinterlegt, geht zusätzlich eine Benachrichtigung mit dem Betreff „Neue Barrierefreiheits-Meldung“ dorthin.

Umschalter Einfache/Leichte Sprache

Navigations-Links zum Wechsel der Sprachebene, beschriftet mit „Sprache wählen“. Nur nötig, wenn in den Einstellungen die Variante Nav-Link-Modul gewählt wurde – Floating-Button und Overlay-Variante kommen ohne Modul aus.

Teil 3 – Für Entwickler

Konsolenbefehle

Sechs Befehle, alle unter dem Namensraum accessplus:. Sie setzen mindestens einen lizenzierten Startpunkt voraus; andernfalls brechen sie ab mit „Keine gültige Lizenz für einen Startpunkt hinterlegt.“

BefehlBeschreibung (aus --help)Optionen (Standard)
accessplus:scanRun the accessibility checks over the content.
accessplus:monitorRe-check accessibility and show the change since the previous run.
accessplus:pdf:scanCheck linked PDFs for title, language and tags.
accessplus:alt:generateGenerate AI alt-text suggestions for images without alt text (review).--limit (25)
accessplus:simplifyGenerate AI drafts in plain/easy language for all pages (review).--register (einfach) · --lang (de) · --limit (1000)
accessplus:subtitles:generateGenerate AI subtitle drafts (VTT) for media without subtitles (review).--lang (de) · --limit (10)
vendor/bin/contao-console accessplus:scan
vendor/bin/contao-console accessplus:alt:generate --limit=25
vendor/bin/contao-console accessplus:simplify --register=leicht --lang=de --limit=200
vendor/bin/contao-console accessplus:subtitles:generate --lang=de --limit=5
Hinweis

Befehlsnamen, Beschreibungen und Optionshilfen sind englische Literale: Symfony liest sie für list und --help aus, bevor das Contao-Framework für den Befehl initialisiert ist – der Sprachlader steht dort noch nicht zur Verfügung. Die Laufzeitausgabe ist dagegen vollständig übersetzt, etwa „Scan fertig. Neu: … · Wieder offen: … · Behoben: … · Offen gesamt: … · Score: …“.

Die drei KI-Befehle erzeugen ausschließlich Entwürfe und hängen die Aufforderung „Bitte im Backend prüfen und freigeben.“ an. Sie respektieren den Schalter Keine externen Aufrufe: Ist er aktiv, ist der Lauf ein Nulldurchgang mit klarer Meldung.

Datenbanktabellen

Acht additive Tabellen. Keine Contao-Kerntabelle wird verändert.

TabelleInhaltBackend-Bildschirm
tl_accessplus_findingBefunde aus allen Quellen (Datenbank, Frontend, manuell), deduplizierteigene Bericht-Oberfläche
tl_accessplus_runLauf-Historie mit Score und KategoriezählernDashboard
tl_accessplus_altsuggestionAlt-Text-VorschlägeTab „KI-Alt-Texte“
tl_accessplus_ariafixbarrierefreie Namen (Selektor, Regel, Wert)Tab „ARIA-Namen“
tl_accessplus_trackUntertitel-Aufträge und VTT-InhalteTab „KI-Untertitel“
tl_accessplus_simplificationEntwürfe in einfacher/leichter SpracheTab „Einfache Sprache“
tl_accessplus_auditPrüfpfad angewendeter ÄnderungenTab „Verlauf“
tl_accessplus_feedbackBarriere-Meldungen aus dem Frontendechtes DCA-Modul do=accessplus_feedback
Hinweis

Bis auf tl_accessplus_feedback sind alle DCAs closed und notEditable – sie existieren, damit contao:migrate die Tabellen anlegt und die Models eine Definition haben. Die eigentliche Oberfläche rendert das Bundle selbst. Diese Tabellen sind Speicher, keine Redaktionsbildschirme.

Die Spalte rootId auf tl_accessplus_finding und tl_accessplus_run ordnet einen Befund einem Startpunkt zu; 0 bedeutet install-weit bzw. geteilt (etwa bei tl_files). Die Spalte fingerprint ist der Dedup-Schlüssel und trägt einen Unique-Index.

Dateien und Verzeichnisse

OrtZweck
ein privates Verzeichnis unterhalb von var/Betriebsdaten des Pakets. Liegt außerhalb des öffentlichen Webverzeichnisses und ist nicht über HTTP erreichbar. Wird beim ersten Schreibzugriff angelegt und muss für den Webserver beschreibbar sein. Weder zur Bearbeitung von Hand noch als Schnittstelle gedacht.
public/bundles/vtinnovationsaccessplus/Frontend- und Backend-Assets (Overlay, Sprachumschalter, ARIA-Injektor, Scanner, axe.min.js).
Achtung

Das Verzeichnis unterhalb von var/ gehört vollständig in Sicherungen und Deployments. Geht es verloren, müssen der API-Schlüssel neu hinterlegt und alle Lizenzen neu aktiviert werden. In die Versionsverwaltung gehört es nicht.

Routen

Vier Backend-Routen, geladen über config/routes.yaml durch das Contao-Manager-Plugin.

NamePfadMethodeZweck
vtinnovations_accessplus_db_analyze/contao/accessplus/db-analyzePOSTstartet die Datenbank-Analyse des Voll-Scans
vtinnovations_accessplus_axe_ingest/contao/accessplus/axe-ingestPOSTnimmt die axe-Ergebnisse der gescannten Seiten entgegen
vtinnovations_accessplus_aria_ingest/contao/accessplus/aria-ingestPOSTnimmt Elemente ohne barrierefreien Namen entgegen
vtinnovations_accessplus_highlight/contao/accessplus/highlightGETVorschau „Auf der Seite zeigen“

Alle vier liegen unter dem Backend-Präfix /contao und damit hinter der Backend-Firewall; die Controller prüfen das Request-Token zusätzlich selbst. Contaos automatische Token-Prüfung ist für sie abgeschaltet, weil sie den Token nur aus dem POST-Body liest und die JSON-Anfragen ihn im Header mitschicken.

Hooks, Callbacks und Cron

IntegrationHook / ZielAufgabe
OverlayInjectionListenergeneratePagebindet das Komfort-Overlay ein, wenn es für den Startpunkt aktiviert ist
SimpleSwitchInjectorgeneratePagebindet den Sprachumschalter ein
AriaInjectormodifyFrontendPageliefert freigegebene aria-label-Zuordnungen aus (max. 500 je Seite)
SimpleLanguageRenderermodifyFrontendPageersetzt Originaltexte durch freigegebene Entwürfe
SubtitleTrackInjectormodifyFrontendPageergänzt <track kind="captions"> an Videos ohne Track
MonitorOnChangeListenerconfig.onsubmit auf tl_content, tl_page, tl_form_fieldgedrosselter Re-Scan nach dem Speichern
MonitorCroncontao.cronjob, Intervall dailytäglicher Re-Scan

Die Frontend-Einbindungen sind an eine gültige Lizenz für den jeweiligen Startpunkt gebunden. Ohne sie liefert Contao die Seite Byte für Byte so aus, wie es das ohne dieses Bundle täte.

Erweiterungspunkte

Eigene Prüfungen

Der vorgesehene Erweiterungspunkt: VTInnovations\AccessPlus\Check\CheckInterface implementieren. Über _instanceof wird die Klasse automatisch mit vtinnovations.accessplus.check getaggt und von CheckRegistry eingesammelt – keine weitere Registrierung nötig. Für Prüfungen über die Datenbank bietet AbstractDatabaseCheck die Verbindung, die aktiven Sprachen sowie tableExists() und columnExists(), mit denen eine Prüfung sauber aussetzt, wenn die Tabelle fehlt.

Eine Prüfung liefert Finding-Objekte mit checkId, wcagCriteria, severity, sourceType, ptable, pid, field, elementLabel, message und suggestion.

Templates

Die drei Frontend-Templates lassen sich wie üblich im Theme überschreiben: mod_accessplus_statement, mod_accessplus_feedback, mod_accessplus_simple_switch.

Was ausdrücklich kein Erweiterungspunkt ist

  • Die Automatik-Regel. AutoFixPolicy ist die einzige Stelle, die entscheidet, was als „Ein-Klick“ gilt und was live angewendet werden darf. Die Liste der live anwendbaren Prüfungen ist bewusst leer und durch einen Test festgenagelt.
  • Der Funktionskatalog des Overlays. OverlayFeatures ist ein statischer Katalog; Backend und Injektor lesen dieselbe Quelle.
  • Die deutschen CLI-Texte. Befehlsname, Beschreibung und Optionshilfe sind englische Literale (siehe Konsolenbefehle).

Migrationen

Drei Migrationen laufen über contao:migrate und melden sich nur, wenn sie tatsächlich etwas zu tun haben:

MigrationWirkung
Umbenennung tl_tca11y_*tl_accessplus_*benennt Tabellen per RENAME TABLE um (Daten bleiben erhalten) und verschiebt das zugehörige Verzeichnis unter var/ mit
Umbenennung tl_vta11y_*tl_accessplus_*dasselbe für den zwischenzeitlichen Präfix
Ergänzung rootIdfügt die Spalte rootId auf tl_accessplus_finding und tl_accessplus_run hinzu und ordnet vorhandene Befunde ihrem Startpunkt zu

Wer von einer älteren Version mit einem der alten Präfixe aktualisiert, verliert also weder Befunde noch Lizenzen – vorausgesetzt, contao:migrate läuft und das Verzeichnis unter var/ ist beschreibbar.

Deployment und Cache

  • Nach jedem Update: contao:migrate, dann cache:clear. Auf einer Managed Edition erledigt contao:setup zusätzlich das Veröffentlichen der Assets.
  • Assets: Overlay, Sprachumschalter und ARIA-Injektor werden mit einem Versions-Parameter eingebunden, damit Browser-Caches beim Update sicher greifen. Diese Tags landen bewusst nicht in Contaos Combiner, weil dieser keine Query-Strings akzeptiert.
  • Page-Cache: Anfragen mit gesetztem Cookie accessplus_simple gelten als privat und landen nicht im geteilten Cache. Ohne Cookie ist die Seite unverändert cachefähig.
  • Mitzusichern: das Verzeichnis unterhalb von var/ – siehe Dateien und Verzeichnisse.
  • Ausgehende Verbindungen: Für die Lizenzaktivierung muss HTTPS nach außen möglich sein. Für die KI-Funktionen zusätzlich der Endpunkt des gewählten Anbieters – aber nur, wenn Keine externen Aufrufe deaktiviert wurde.

Fehlerbehebung

SymptomUrsache und Prüfung
Im Backend erscheint keine Gruppe Barrierefreiheit. Bundle nicht registriert oder Cache alt. vendor/bin/contao-console list accessplus ausführen; erscheint nichts, greift das Contao-Manager-Plugin nicht. Danach cache:clear.
Das Modul zeigt nur „Für diesen Startpunkt liegt keine gültige Lizenz vor. …“ Der gewählte Startpunkt ist nicht lizenziert. Siehe Lizenz aktivieren.
„Für diesen Startpunkt ist keine Domain hinterlegt.“ Im Startpunkt unter Routing fehlt die Domain.
„Die Lizenz gilt nicht für die Domain dieses Startpunkts.“ Der eingetragene Hostname weicht vom lizenzierten ab – meist das www.-Präfix. Bei Umlautdomains zusätzlich ext-intl aktivieren.
Die Aktivierung bricht mit einer Meldung über eine fehlende PHP-Erweiterung ab. Die unter Voraussetzungen empfohlenen PHP-Erweiterungen aktivieren und den Vorgang wiederholen.
„Der Lizenzserver ist derzeit nicht erreichbar. Der bisherige Stand bleibt erhalten.“ Ausgehendes HTTPS ist blockiert oder der Dienst kurzzeitig gestört. Der gespeicherte Status bleibt unverändert; später erneut Lizenz aktualisieren.
Eine geänderte Lizenz ist im Backend noch nicht sichtbar. Im Startpunkt Lizenz aktualisieren drücken.
KI-Schaltflächen fehlen oder sind gesperrt. Keine externen Aufrufe ist aktiv – das ist der Standard. Meldung: „„Keine externen Aufrufe“ ist aktiv – Generierung gesperrt. In den Einstellungen freigeben.“
„Kein API-Schlüssel hinterlegt. Bitte in den Einstellungen setzen.“ Der Schlüssel wurde nie gespeichert oder mit Schlüssel entfernen gelöscht. Achtung: Ein leeres Feld bedeutet unverändert, nicht löschen.
„Ungültige Basis-URL. Nur http(s) mit Hostname erlaubt.“ Beim Anbieter OpenAI-kompatibel muss eine vollständige Basis-URL eingetragen sein.
„Test nicht ausgeführt: „Keine externen Aufrufe“ ist aktiv. Zum Testen erst freigeben.“ Der Verbindungstest ist bei aktivem Schalter bewusst gesperrt.
Der Voll-Scan bleibt bei der Frontend-Phase stehen. Er läuft im Browser-Tab des Backends. Das Tab muss offen bleiben, bis „Fertig“ erscheint. Alternativ Nur Datenbank-Analyse (ohne Frontend) verwenden.
„Keine veröffentlichten, öffentlichen Seiten gefunden.“ Es gibt keine Seite vom Typ „regulär“, die veröffentlicht, nicht geschützt und innerhalb ihres Zeitfensters ist.
Es werden weniger Seiten gescannt als erwartet. Der Sweep ist auf 300 Seiten begrenzt; der Hinweis „auf <Anzahl> Seiten begrenzt.“ wird angezeigt. Von dynamischen Listen wird eine Stichprobe der 25 neuesten Detailseiten geprüft.
Frontend-Befunde wirken falsch (z. B. Kontrastfehler durch Einblend-Animationen). Auf dem Dashboard Frontend-Befunde zurücksetzen und den Voll-Scan wiederholen. Siehe Dashboard und Voll-Scan.
Jetzt fixen › erscheint bei einem Befund nicht. Die Schaltfläche führt in Contaos Bearbeitungsmaske und erscheint nur, wenn sich ein bearbeitbarer Datensatz zuordnen lässt. Bei Frontend-Befunden ohne konkreten Datensatz führt der Weg über das Template.
„Nicht übernommen: es existiert bereits ein manueller Alt-Text (wird nie überschrieben).“ Kein Fehler, sondern die Regel: Redaktionell gepflegte Alt-Texte haben Vorrang. Ist der Vorschlag besser, den Text direkt in der Dateiverwaltung ändern.
„Bild zu groß (<Größe> KB, max <max> KB).“ Für die Alt-Text-Erzeugung gilt eine Obergrenze von 4 MB je Bild.
Alt-Text-Vorschläge sind unbrauchbar oder es kommen keine. Das eingestellte Modell kann keine Bilder lesen. Im Feld Modell ein Vision-fähiges Modell eintragen.
„Untertitel benötigen einen Whisper-kompatiblen Anbieter …“ Nur OpenAI und OpenAI-kompatibel unterstützen die Audio-Transkription.
„Datei größer als 25 MB – bitte kürzen/komprimieren oder via Konsole verarbeiten.“ Harte Grenze der Transkription. Datei kürzen, komprimieren oder in Abschnitten verarbeiten.
Der Umschalter für einfache Sprache erscheint im Frontend nicht. Drei Bedingungen: Startpunkt lizenziert, Funktion aktiv für diesen Startpunkt gesetzt, mindestens eine Umschalter-Variante gewählt. Für die Nav-Variante muss zusätzlich das Modul auf einer Seite liegen.
Der Umschalter erscheint, aber der Text bleibt gleich. Für die betreffenden Elemente ist noch kein Entwurf freigegeben. Nur freigegebene Entwürfe werden ersetzt.
Das Komfort-Overlay erscheint auf einer Domain nicht. Die Aktivierung gilt je Domain. Im Tab Overlay zuerst über die Domain-Leiste den richtigen Startpunkt wählen, dann Overlay im Frontend anzeigen setzen.
Untertitel erscheinen im Video nicht. Ergänzt wird nur bei einem <video> ohne eigenen <track>, und nur bei passender Benennung: clip.mp4clip.de.vtt im selben Verzeichnis.
Der Posteingang Meldungen lässt sich nicht bearbeiten. „Keine gültige Lizenz für einen Startpunkt: Die Meldungen sind nur lesbar. …“ Bestehende Meldungen bleiben bewusst sichtbar.
„Rückgängig nicht möglich (inzwischen geändert oder bereits rückgängig).“ Das Ziel wurde nach der Übernahme anderweitig bearbeitet. Die Änderung ist von Hand an der Quelle zurückzunehmen.
„Ungültiges Sicherheits-Token. Bitte erneut versuchen.“ Die Backend-Sitzung ist abgelaufen oder das Formular lag zu lange offen. Neu anmelden und die Aktion wiederholen.
Der Score springt ohne erkennbaren Anlass. Das Monitoring hat nach einem Speichervorgang oder über den Cron neu gescannt. Frequenz über Drossel-Intervall steuern.
Nach einem Update fehlen Befunde. contao:migrate wurde nicht ausgeführt oder var/ ist nicht beschreibbar. Siehe Migrationen.
Overlay oder Umschalter verhalten sich nach einem Update seltsam. Alte Asset-Dateien in public/bundles/vtinnovationsaccessplus/. contao:setup bzw. assets:install ausführen und den Browser-Cache leeren.

Bekannte Einschränkungen

  • Der Score ist kein Konformitätsnachweis. Er ist im Produkt selbst als Richtwert gekennzeichnet und ersetzt keine Prüfung durch eine Prüfstelle.
  • Automatische Prüfungen finden nicht alles. Verständlichkeit, sinnvolle Bedienreihenfolge, aussagekräftige Alternativtexte – das bleibt menschliche Arbeit. Genau deshalb trennt das Dashboard „Ein-Klick“ und „Nur manuell“, statt Häkchen zu verteilen.
  • Die Datenbank-Checks sehen nur die Datenbank. Überschriften, die fest in einem Template stehen, tauchen dort nicht auf; sie erreicht erst die Frontend-Analyse.
  • Der Frontend-Scan ist auf 300 Seiten begrenzt und überspringt geschützte Seiten. Von dynamischen Listen wird eine Stichprobe geprüft.
  • Der Frontend-Scan braucht ein offenes Backend-Tab. Er läuft im Browser, nicht auf dem Server.
  • PDFs werden nie repariert. Bei komprimierten Dokumenten bleibt der Tagging-Zustand ausdrücklich „unklar“.
  • Untertitel: 25 MB je Datei, nur mit Whisper-fähigem Anbieter, und die Erzeugung läuft synchron.
  • Alt-Text-Erzeugung: 4 MB je Bild, Formate jpg, jpeg, png, gif, webp, Vision-Modell erforderlich.
  • Kein Auto-Publish. Es gibt derzeit keine Prüfung, deren Behebung ohne menschliche Freigabe live angewendet wird – eine bewusste Festlegung, keine Lücke.
  • Einfache Sprache ist keine zertifizierte Leichte Sprache und wird durch Ersetzung im gerenderten HTML umgesetzt; Textstellen ohne freigegebenen Entwurf bleiben unverändert.
  • ARIA-Namen sind eine Zwischenlösung. Das Modul sagt es selbst: der saubere Fix gehört ins Template.
  • Das Komfort-Overlay ist ausdrücklich kein Ersatz für barrierefreie Inhalte.
  • Rückgängig hat ein Zeitfenster. Wurde das Ziel zwischenzeitlich anderweitig geändert, ist das Undo nicht mehr möglich.
  • Ohne Lizenz ist alles aus. Es gibt genau eine Lizenzstufe: keine kostenlose Stufe, keine Testphase, kein Rückfall nach Ablauf. Was nicht aktiv ist, verhält sich für diesen Startpunkt wie ein nicht installiertes Paket.

Deinstallation

  1. Optional: Lizenzen entfernen. Je Startpunkt über Lizenz entfernen + Entfernen bestätigen. Bestätigung: „Lizenz entfernt. Für diesen Startpunkt gilt wieder das Contao-Standardverhalten.“ Inhalte werden dabei nicht gelöscht.
  2. Meldungen sichern. Barriere-Meldungen sind Ihre Korrespondenz mit Nutzerinnen und Nutzern. Vor dem Entfernen aus tl_accessplus_feedback exportieren.
  3. Frontend-Module entfernen. Module vom Typ Barrierefreiheitserklärung, Barriere-Meldekanal und Einfache/Leichte Sprache – Umschalter aus den Layouts und Artikeln nehmen.
  4. Paket entfernen. Im Contao Manager unter PaketeInstallierte Pakete, oder auf der Konsole:
    composer remove vtinnovations/accessplus
    vendor/bin/contao-console cache:clear
  5. Rückstände aufräumen. Contao entfernt die Tabellen nicht automatisch. Nach einem Backup können die acht Tabellen tl_accessplus_* gelöscht werden. Löschen Sie außerdem das nach dem Paket benannte Verzeichnis unterhalb von var/ – sonst bleibt unter anderem der gespeicherte API-Schlüssel auf der Festplatte liegen.
Hinweis

Bereits übernommene Alt-Texte bleiben erhalten: Sie stehen in tl_files.meta und gehören damit Contao, nicht dem Bundle. Ebenso bleiben freigegebene Untertiteldateien in der Dateiverwaltung liegen. Verloren gehen dagegen Befunde, Lauf-Verlauf, Entwürfe, ARIA-Namen und der Prüfpfad – prüfen Sie vor dem endgültigen Löschen, ob Sie etwas davon aufheben möchten.