(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 31:
Zeile 31:
Die angegebene Version hängt von der Version des TYPO3 Core ab, die Sie verwenden
Die angegebene Version hängt von der Version des TYPO3 Core ab, die Sie verwenden
== Technische Details ==
Die Versionsverwaltung muss für jede Tabelle in der [https://docs.typo3.org/m/typo3/reference-tca/main/en-us/Ctrl/Index.html#ctrl "ctrl"-Sektion des TCA-Arrays] für die jeweilige Tabelle aktiviert werden
* Darüber hinaus muss ein fester Satz von Feldern für die Verwaltung von Versionen vorhanden sein
* Alle diese technischen Details sind in der [https://docs.typo3.org/m/typo3/reference-tca/main/en-us/Ctrl/Index.html#ctrl-reference-versioningws Beschreibung der TCA-Eigenschaft "versioningWS"] aufgeführt
* Dort sind auch alle anderen versionierungs- und arbeitsbereichsbezogenen Eigenschaften beschrieben
Zukünftige und vergangene Versionen von Datensätzen in TYPO3 CMS bleiben in der gleichen Tabelle wie die Live-Version
* Allerdings haben alle "Offline"-Versionen einen pid-Wert von "-1", um sie zu unterscheiden
* Außerdem haben sie ein Datenbankfeld mit dem Namen "t3ver_oid", das auf ihr Live-Pendant ("online") verweist
Wenn eine zukünftige/vergangene Version mit der Live-Version ausgetauscht wird, geschieht dies durch ''Austausch aller Feldwerte außer den Feldern uid und pid'' (und natürlich werden versionierungsbezogene Felder entsprechend ihrer Funktion manipuliert)
* Das bedeutet, dass der Online-Inhalt immer durch dieselbe ID identifiziert wird wie zuvor und daher alle Referenzen intakt bleiben
Die Versionierung ist für bestehende Elemente einfach
* Das Verschieben, Erstellen und Löschen wirft jedoch andere Probleme auf
* Dies wird auf folgende Weise gelöst:* Das Löschen von Elementen erfolgt durch die Erstellung einer neuen Version des Elements ''und'' das Setzen einer Markierung in der neuen Version (<tt>t3ver_</tt>), die angibt, dass das aktive Element bei der Veröffentlichung der Versionen gelöscht werden muss
* Bei der Erstellung von Elementen wird zunächst ein Platzhalter-Element erstellt, das tatsächlich live ist, aber eine Markierung (<tt>t3ver_</tt>) trägt, die es online unsichtbar macht
* Dann wird eine neue Version dieses Platzhalters mit dem Flag (<tt>t3ver_</tt>) erstellt, die bis zur Veröffentlichung geändert wird
* Das Verschieben von Elementen erfolgt, indem zunächst ein Platzhalterelement erstellt wird, das in der Tat live ist, aber eine Markierung (<tt>t3ver_</tt>) trägt, die es online unsichtbar macht
* Es hat auch ein Feld, "t3ver_move_id", das die uid des zu verschiebenden Datensatzes (Quelldatensatz) enthält
* Außerdem wird eine neue Version des Quelldatensatzes mit <tt>t3ver_</tt> (move-to pointer) erstellt
* Diese Version ist notwendig, damit das Versionierungssystem etwas hat, das es für den Verschiebevorgang veröffentlichen kann
* Zusammengefasst werden also zwei Datensätze für einen Verschiebevorgang in einem Arbeitsbereich erstellt: Der Platzhalter (online, mit <tt>t3ver_</tt> und "t3ver_move_id") und eine neue Version (<tt>t3ver_</tt>) des Online-Quelldatensatzes (der, der verschoben wird)
==== Eindeutige Felder ====
* Eindeutige Felder wie ein Seitenalias oder ein Benutzername sind in einem Versionierungsszenario heikel, da der Veröffentlichungsprozess eine Prüfung durchführen muss, ob das Feld in der "Live"-Situation eindeutig ist
* Das bedeutet, dass wir eine Lösung gewählt haben, bei der eindeutige Felder überhaupt nicht ausgetauscht werden! Dies bedeutet, dass die Veröffentlichung einer neuen Version einer Seite den Alias der Live-Version nicht ändern kann und wird
* Der eindeutige Wert "Live" bleibt erhalten, bis er in der Live-Version geändert wird
* Sie können Felder mit dem Schlüsselwort "unique" ausblenden, wenn es Offline-Versionen gibt
Dies geschieht mit der Anzeigebedingung:
'displayCond' => 'VERSION:IS:false',
==== Berechtigungen ====
Dies ist ein Überblick über die Handhabung von Berechtigungen im Zusammenhang mit der Versionierung:
===== Anzeigen =====
* Leseberechtigungen werden auf der Grundlage der Live-Version von Seiten ausgewertet (als Grundregel)
* Die Leseberechtigungen der Offline-Seitenversion in einem Arbeitsbereich werden nicht berücksichtigt
* Es wird die ID des Live-Datensatzes verwendet, damit die Anzeigeberechtigungen des Live-Datensatzes ausgewertet werden
===== Versionierung von Datensätzen =====
* Um eine neue Version zu erstellen, muss der Benutzer Leserechte für den Live-Datensatz haben, den er versionieren möchte
* Eine neue Version einer Seite erbt die Einstellungen für den Eigentümer, die Gruppe und die Berechtigungen aus dem Live-Datensatz
===== Version veröffentlichen =====
* Um zu veröffentlichen, muss ein Benutzer über allgemeine Veröffentlichungsrechte im Arbeitsbereich verfügen, z.B
* muss er der Eigentümer des Arbeitsbereichs sein oder Zugriff auf den Live-Arbeitsbereich haben
* Außerdem muss der Benutzer Lese- und Bearbeitungsrechte für die zu veröffentlichende Offline-Version sowie Bearbeitungsrechte für die ''Live-Version'' haben, die durch eine Veröffentlichungsaktion ersetzt wird!
* Die Berechtigungen einer neuen Version einer Seite folgen der Seite, wenn sie veröffentlicht wird
===== Bearbeiten von Datensätzen =====
* Für alle Bearbeitungen ist es erforderlich, dass die Stufe des versionierten Datensatzes (oder der Wurzelpunkt) die Bearbeitung zulässt
* Seitendatensätze:
** Die Berechtigung zur Bearbeitung wird immer anhand der Berechtigungseinstellungen der Seite und nicht anhand der Live-Datensätze bewertet
* Datensätze aus Nicht-Seiten-Tabellen:
** Basiert immer auf der übergeordneten Live-Seite
===== Neue Datensätze =====
* Wenn neue Datensätze mit einer Version und einem Live-Platzhalter erstellt werden, hängen die Berechtigungen von der Live-Seite ab, unter der der Datensatz erstellt wird
===== Verschieben von Datensätzen =====
* Datensätze können verschoben werden, solange die Quell- und Zielwurzel auf eine Stufe zeigen, die dies zulässt
* Neue Datensätze, die mit einem Platzhalterelement erstellt wurden, können frei verschoben werden
* Im Allgemeinen muss die Stufe eines verschobenen Datensatzes die Bearbeitung sowie die regulären Berechtigungen für das Verschieben zulassen
===== Löschen von Datensätzen =====
* Wenn ein Datensatz die Versionierung unterstützt, wird er zum Löschen markiert, wenn alle üblichen Voraussetzungen zum Zeitpunkt der Löschanfrage erfüllt sind: Löschzugriff auf den Datensatz, keine Unterseiten, wenn rekursives Löschen nicht aktiviert ist, und keine unzulässigen Tabellensätze gefunden werden
* Sobald der Datensatz zum Löschen markiert ist, werden alle Änderungen am Datensatz und an den Unterseiten, die sonst das Löschen für den Benutzer verhindern würden, nicht mehr wirksam
* Der Datensatz ''wird'' bei Veröffentlichung gelöscht!
* Wenn Sie versuchen, einen Live-Datensatz zu löschen, für den eine Version im Arbeitsbereich gefunden wird, wird stattdessen diese Version gelöscht
* Das Entfernen von Versionen aus einem Arbeitsbereich und das Erhöhen der Versionsstufe ist möglich, solange der Benutzer Bearbeitungsrechte für den Datensatz besitzt
===== Dateien / Assets / Ressourcen =====
Zur Verwaltung von Dateien/Assets (im Gegensatz zu Datensätzen/Seiten) wird der Live-Arbeitsbereich verwendet
* Das bedeutet, dass für den Zugriff auf Backend-Module wie das Dateilistenmodul entsprechende Rechte für den Live-Arbeitsbereich festgelegt werden müssen
== Arbeitsbereiche ==
== Arbeitsbereiche ==
Zeile 165:
Zeile 88:
<div style="margin-left:1cm;">Wenn [https://docs.typo3.org/c/typo3/cms-workspaces/main/en-us/singlehtml/Index.html#users-guide-preview-link Vorschau-Links] erzeugt werden, werden sie in der Datenbank (in der Tabelle "sys_preview") gespeichert
<div style="margin-left:1cm;">Wenn [https://docs.typo3.org/c/typo3/cms-workspaces/main/en-us/singlehtml/Index.html#users-guide-preview-link Vorschau-Links] erzeugt werden, werden sie in der Datenbank (in der Tabelle "sys_preview") gespeichert
* Diese Aufgabe löscht jeden Link, der abgelaufen ist. </div>
* Diese Aufgabe löscht jeden Link, der abgelaufen ist. </div>
== PSR-14-Ereignisse ==
Die folgenden PSR-14-Ereignisse sind zur Erweiterung der Funktionalität verfügbar:
Findet alle cachebaren Daten von Versionen eines Arbeitsbereichs. [https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/Events/Events/Workspaces/AfterCompiledCacheableDataForWorkspaceEvent.html#AfterCompiledCacheableDataForWorkspaceEvent Mehr Details]
=== AfterDataGeneratedForWorkspaceEvent ===
Findet alle Daten von Versionen eines Arbeitsbereichs. [https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/Events/Events/Workspaces/AfterDataGeneratedForWorkspaceEvent.html#AfterDataGeneratedForWorkspaceEvent Mehr Details]
=== AfterRecordPublishedEvent ===
Das Ereignis wird ausgelöst, nachdem ein Datensatz in einem Arbeitsbereich veröffentlicht worden ist. [https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/Events/Events/Workspaces/AfterRecordPublishedEvent.html#AfterRecordPublishedEvent Mehr Details]
=== GetVersionedDataEvent ===
Findet alle vorbereiteten / bereinigten Daten von Versionen eines Arbeitsbereichs. [https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/Events/Events/Workspaces/GetVersionedDataEvent.html#GetVersionedDataEvent Mehr Details]
=== ModifyVersionDifferencesEvent ===
Ändern Sie die Daten der Versionsunterschiede. [https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/Events/Events/Workspaces/ModifyVersionDifferencesEvent.html#ModifyVersionDifferencesEvent Mehr Details]
=== SortVersionedDataEvent ===
Das Ereignis wird nach dem Sortieren aller Daten für Versionen eines Arbeitsbereichs ausgelöst. [https://docs.typo3.org/m/typo3/reference-coreapi/main/en-us/ApiOverview/Events/Events/Workspaces/SortVersionedDataEvent.html#SortVersionedDataEvent Mehr Details]
Zeile 199:
Zeile 101:
<br clear=all>
<br clear=all>
[[Kategorie:Typo3/Extension]]
[[Kategorie:Typo3/Workspaces]]
Aktuelle Version vom 30. Juli 2025, 12:48 Uhr
Versionierung
TYPO3 CMS bietet eine Versionierung der Datenbankelemente, die es verwaltet
Dieses Versionierungssystem ermöglicht es Ihnen, an zukünftigen Versionen von Inhalten zu arbeiten, ohne dass der aktuelle Inhalt beeinträchtigt wird
Es wird von Workflow-Systemen verwendet, um einen Prozess für solche Inhalte anzubieten, der von der Erstellung über die Bearbeitung bis zur Überprüfung und Veröffentlichung reicht
Die Versionierung ist in der Kern-API standardmäßig verfügbar, aber um Zugang zu den Verwaltungswerkzeugen zu erhalten, müssen Sie die Systemerweiterung "Workspaces" installieren
Installation
Diese Erweiterung ist Teil des TYPO3 Core, wird aber nicht standardmäßig installiert
Installation mit Extension-Manager
Bei einer Installation ohne Composer wird die Erweiterung bereits ausgeliefert, ist aber möglicherweise noch nicht aktiviert
Aktivieren Sie sie wie folgt
Navigieren Sie im Backend zum Modul Admin Tools > Extensions
Klicken Sie auf das Symbol Aktivieren für die Erweiterung "Workspaces"
Erweiterungsmanager mit der Erweiterung Workspaces
Installation mit Composer
Prüfen Sie, ob Sie die Erweiterung bereits mit verwenden:
composer show | grep workspaces
Dies sollte Ihnen entweder kein Ergebnis oder etwas ähnliches liefern:
typo3/cms-workspaces v12.4.11
Wenn sie noch nicht installiert ist, verwenden Sie den Befehl composer require, um die Erweiterung zu installieren:
composer require typo3/cms-workspaces
Die angegebene Version hängt von der Version des TYPO3 Core ab, die Sie verwenden
Arbeitsbereiche
Arbeitsbereiche sind die Benutzeroberfläche, die auf dem Versionierungskonzept aufbaut, um den Benutzern die Verwaltung der Versionen zu erleichtern
Darüber hinaus ermöglichen es Arbeitsbereiche, eine Reihe von Stufen für die Validierung einer bestimmten Änderung zu erstellen und so einen vollständigen Überprüfungsprozess vor der Veröffentlichung zu gewährleisten
Die Benutzer aller Stufen können über Änderungen im Überprüfungsprozess benachrichtigt werden
Ein Arbeitsbereich ist ein Zustand im Backend von TYPO3 CMS
Grundsätzlich gibt es zwei Arten von Arbeitsbereichen:
LIVE-Arbeitsbereich: Dies ist genau der Zustand, in dem sich TYPO3 CMS immer befunden hat
Jede Änderung, die Sie vornehmen, wird sofort live sein
Es hat sich nichts geändert, er hat nur einen Namen bekommen
Der Zugriff auf den Live-Arbeitsbereich muss den Backend-Benutzern und -Gruppen explizit gewährt werden (auf der Registerkarte "Mounts und Arbeitsbereiche")
Benutzerdefinierte Arbeitsbereiche: Wenn Benutzer einen benutzerdefinierten Arbeitsbereich auswählen, gelten neue Regeln für alles, was sie im Backend tun:
Sicherheit: Jede Änderung, die sie vornehmen wollen, hat keine Auswirkungen auf die aktuelle Website
Es ist ein sicherer Spielplatz
Transparente Versionierung: Sie können Seiten und Elemente bearbeiten, da eine neue Version automatisch erstellt und an den Arbeitsbereich angehängt wird
Keine Schulung erforderlich, kein Verwaltungsaufwand!
Vorschau: Wenn Sie die Frontend-Website besuchen, wird sie so angezeigt, wie sie erscheinen wird, wenn alle Versionen im Arbeitsbereich schließlich veröffentlicht werden
Überblick über Änderungen: Das Modul Workspace Manager bietet einen klaren Überblick über alle Änderungen, die innerhalb des Arbeitsbereichs auf der gesamten Website vorgenommen wurden
Dies ermöglicht eine unvergleichliche Kontrolle, bevor der Inhalt live geschaltet wird
Einschränkungen: Nur Tabellen, die die Versionierung unterstützen, können bearbeitet werden
Flexibilität: Benutzerdefinierte Arbeitsbereiche können mit Eigentümern, Mitgliedern und Prüfern sowie Datenbankmounts und mehr konfiguriert werden
Ein benutzerdefinierter Arbeitsbereich kann somit einen gezielteren Bearbeitungsbereich bieten als Backend-Benutzer und -Gruppen
Und ein Überprüfungsverfahren, das je nach Bedarf einfach oder vollständig ist
Veröffentlichen und Austauschen
Es gibt zwei Möglichkeiten, ein Element in einem Arbeitsbereich zu veröffentlichen: veröffentlichen oder austauschen
In beiden Fällen wird der Entwurfsinhalt live veröffentlicht
Beim Swappen bedeutet dies jedoch, dass das aktuelle Live-Element an den Arbeitsbereich angehängt wird, wenn es offline genommen wird
Dies steht im Gegensatz zum Veröffentlichungsmodus, bei dem das Live-Element aus dem Arbeitsbereich heraus und "ins Archiv" verschoben wird
Der Auslagerungsmodus ist nützlich, wenn Sie eine zeitlich begrenzte Kampagne haben, etwa eine spezielle Weihnachtsseite und einen Website-Bereich
Sie erstellen die Weihnachtsausgabe in einem benutzerdefinierten Arbeitsbereich und zwei Wochen vor Weihnachten tauschen Sie die Weihnachtsausgabe aus
Alle normalen Seiten und Elemente, die nicht veröffentlicht wurden, befinden sich jetzt im Arbeitsbereich und warten darauf, dass Weihnachten vorbei ist und die alte Titelseite usw. wieder eingefügt wird
Die Weihnachtsausgabe ist nun wieder im Arbeitsbereich und bereit für das nächste Jahr
Erweiterungen und Workspaces
Arbeitsbereiche setzen eine transparente Unterstützung im gesamten Backend und Frontend voraus, und Erweiterungen müssen unter diesem Gesichtspunkt programmiert werden
Obwohl das Ideal eine vollständige Transparenz im Backend und eine perfekte Vorschau im Frontend ist, ist dies fast unmöglich zu erreichen
Nichtsdestotrotz kann ein hohes Maß an Konsistenz erreicht werden, indem die von TYPO3 CMS bereitgestellte API genutzt wird
Diese Funktionen und die Herausforderungen, die sie lösen sollen, werden in TYPO3 erklärt behandelt
Planer-Aufgaben
Die "workspaces"-Erweiterung bietet zwei Scheduler-Aufgaben
Automatische Veröffentlichung von Arbeitsbereichen
Diese Aufgabe prüft, ob ein Arbeitsbereich ein geplantes Veröffentlichungsdatum hat
Wenn ja und wenn dieses Datum überschritten ist, werden alle Änderungen, die das Stadium "Bereit zur Veröffentlichung" erreicht haben, im Live-Arbeitsbereich veröffentlicht.
Arbeitsbereiche bereinigen Vorschau-Links
Wenn Vorschau-Links erzeugt werden, werden sie in der Datenbank (in der Tabelle "sys_preview") gespeichert
Diese Aufgabe löscht jeden Link, der abgelaufen ist.