1. File Abstraction
Layer
Die neue Datei-Abstraktionsschicht in
TYPO3 6.0
File Abstraction Layer 3/31/2012 1
2. Agenda
• Grundlagen, Ziele
• Begrifflichkeiten
• Architektur-Übersicht
• FAL und DAM?
• Auswirkungen für Redakteure
• Verwendung durch Entwickler
File Abstraction Layer 3/31/2012 2
3. Grundlagen
• TYPO3 verwendet PHP Datei-System Funktionen
• Problematisch teilweise schon auf Windows
• Alle Dateien müssen in TYPO3_site liegen
• Dateien Kopie nach uploads/ (auch mehrfach)
• Vorschau-Grafiken in typo3temp/
erhöhter Speicherplatz Verbrauch
Update von Dateien schwierig
Beschreibungen / Untertitel mehrfach zu pflegen
File Abstraction Layer 3/31/2012 3
4. Ziele
• Dateien nur noch per Referenz
überflüssige Kopien entfallen
• Zentrale Pflege von Basis Meta-Daten
• Kein direkter Aufruf von File-Funktionen in TYPO3
• Möglichkeiten für externe File-Systeme
Treiber-Ebene für Aktionen nötig
• DAM soll Core-Funktionalität nutzen können
File Abstraction Layer 3/31/2012 4
5. Begrifflichkeiten
Objekte in FAL
• Ressource – Element im FS
• File – reale Datei in FS
• Folder – Ordnungseinheit im FS
o Ordner in einem lokalen Dateisystem oder z.B. WebDav
o Tag für z.B. Flickr
• Storage – Unix: Mount
o Einhänge-Punkt eines Dateisystems
o Kombination aus Treiber, Name, Pfad im Zielsystem sowie „User-MountPoints“
• Driver – Schnittstellen-Handler
o Führt Aktionen im Zielsystem aus
o PHP-Filefunktionen / WebDav GET-POST-PUT / …
File Abstraction Layer 3/31/2012 5
6. Begrifflichkeiten
Objekte in FAL
• ProcessedFile - Bearbeitete Variante einer Datei
o Hält Referenz auf Original-Datei
o Bisher implementiert: verkleinertes Bild / Vorschau-Instanz
• Repositories - Referenzierte Objekte Laden
• Factory - Objekte erstellen
File Abstraction Layer 3/31/2012 6
7. Architektur
Klassen Struktur
Womit im Code gearbeitet wird
Was die Objekte sind
Was im Dateisystem liegt
File Abstraction Layer 3/31/2012 7
8. Architektur
Klassen Struktur - Treiber
• Eigenen Treiber erstellen?
o AbstractDriver ableiten
o An DriverRegistry registrieren
File Abstraction Layer 3/31/2012 8
10. Architektur
Ressourcen identifizieren
• 4 verschiedene Identifier:
o Identifier
o Combined Identifier
o Uid
o Sha1 (nur intern)
• Identifier user_upload/Admin/test.html
o String, eindeutig in der Storage
Bsp: relativer Pfad im Fileadmin
o nutzlos ohne Storage zu kennen
• Combined Identifier 1:user_upload/Admin/test.html
o Erweiterung des Identifier um Storage UID
o System weit gültig
o [StorageUid]:[Identifier]
• Uid
o Nur für bereits indizierte Elemente
o für Referenzen
File Abstraction Layer 3/31/2012 10
11. Architektur
Ressourcen identifizieren
• Was verwende ich wann?
o Combined-Identifier:
• TypoScript,
• erstmalige Übergabe „nach FAL“,
• wenn händisch Dateien eingetragen werden
o Uid: intern, wann immer Möglich
• FAL mit Legacy Files
o Virtuelle Storage 0: lokales Dateisystem, TYPO3_site
o 0:uploads/pics/bla.jpg
File Abstraction Layer 3/31/2012 11
12. Architektur
Collections
• TYPO3 4.7: Collection Interfaces
• Zentrale Möglichkeit Datensatz/Objekt-Gruppierung
• ähnlich JCF
• FAL erweitert zu FileCollections
o Folder-Collection: Alle Dateien in einem Ordner
o Static Collection: Auswahl von Dateien
• Extensions: verwenden Collections
Änderung der Collection an allen Punkten
File Abstraction Layer 3/31/2012 12
14. FAL und DAM
• FAL und DAM nicht kompatibel
• FAL ersetzt nicht DAM
• FAL = Dateibezogene Metadaten
• DAM = Medien-bezogene Metadaten + Kategorien
• DAM 2.0 Media Extension
o Statische Kollektionen - FAL
o Ordner-Basierte Kollektionen - FAL
o Filterbasierte Kollektionen - FAL/Media to be defined
o Status Migration noch unklar (Umfang)
o Jetzt startende Projekte eher mit 6.0 Alpha anstelle von DAM
File Abstraction Layer 3/31/2012 14
15. Auswirkungen für
Redakteure
• Schauen wir uns einmal an…
File Abstraction Layer 3/31/2012 15
16. Auswirkungen für
Redakteure
• Zusätzlicher Pfeil zum Bearbeiten von Meta-Daten
• Meta-Daten durch Extensions erweiterbar
File Abstraction Layer 3/31/2012 16
17. Auswirkungen für
Redakteure
• Meta-Daten ohne
Media-Extension
File Abstraction Layer 3/31/2012 17
18. Auswirkungen für
Redakteure
• Meta-Daten ohne
Media-Extension
File Abstraction Layer 3/31/2012 18
21. Nutzung durch
Entwickler
• Collections in einer FlexForm, field „fileCollections“
(Beispiel aus Controller der media_gallery)
File Abstraction Layer 3/31/2012 21
22. Nutzung durch
Entwickler
• File-Objekte aus einem typolink-Parameter
(Code Beispiel aus dem Media-Element)
File Abstraction Layer 3/31/2012 22
23. Nutzung durch
Entwickler
• TypoScript Objekt FILES
(Code Beispiel: Uploads Rendering CSS Styled Content)
File Abstraction Layer 3/31/2012 23