Typo3/Workspaces/Technische Details: Unterschied zwischen den Versionen
Die Seite wurde neu angelegt: „== 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-refer…“ |
Keine Bearbeitungszusammenfassung |
||
Zeile 75: | Zeile 75: | ||
Zur Verwaltung von Dateien/Assets (im Gegensatz zu Datensätzen/Seiten) wird der Live-Arbeitsbereich verwendet | 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 | * Das bedeutet, dass für den Zugriff auf Backend-Module wie das Dateilistenmodul entsprechende Rechte für den Live-Arbeitsbereich festgelegt werden müssen | ||
[[Kategorie:Typo3/Workspaces]] |
Aktuelle Version vom 30. Juli 2025, 12:54 Uhr
Technische Details
Die Versionsverwaltung muss für jede Tabelle in der "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 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 (t3ver_), 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 (t3ver_) trägt, die es online unsichtbar macht
- Dann wird eine neue Version dieses Platzhalters mit dem Flag (t3ver_) 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 (t3ver_) 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 t3ver_ (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 t3ver_ und "t3ver_move_id") und eine neue Version (t3ver_) 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