Zum Inhalt springen

Typo3/Workspaces/Technische Details

Aus Foxwiki
Version vom 30. Juli 2025, 12:40 Uhr von Dirkwagner (Diskussion | Beiträge) (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…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

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