File Abstraction
          Layer
               Die neue Datei-Abstraktionsschicht in
                           TYPO3 6.0


File Abstraction Layer                                 3/31/2012   1
Agenda
• Grundlagen, Ziele

• Begrifflichkeiten

• Architektur-Übersicht

• FAL und DAM?

• Auswirkungen für Redakteure

• Verwendung durch Entwickler



 File Abstraction Layer            3/31/2012   2
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
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
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
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
Architektur
                         Klassen Struktur

                                 Womit im Code gearbeitet wird




                                 Was die Objekte sind



                                 Was im Dateisystem liegt
File Abstraction Layer                                      3/31/2012   7
Architektur
          Klassen Struktur - Treiber
• Eigenen Treiber erstellen?
     o AbstractDriver ableiten
     o An DriverRegistry registrieren




 File Abstraction Layer                 3/31/2012   8
Architektur
       was wird indexiert/gespeichert?
•     File:                   Datenbank (sys_file)
•     Folder:                 transient
•     Storage:                Datenbank (sys_storage)
•     FileReference:          Datenbank (sys_file_reference)
•     ProcessedFile:          Datenbank (sys_file_processedfile)



• Datenbank-Einträge: [UID]
• Folder: [???]

    File Abstraction Layer                                 3/31/2012   9
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
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
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
Architektur
                 Storage & Mount-Points
• Mount-Points: Top-Level Objekte für Datei-Baum

• Storages: „Top-Level-Funktion“

• File-Mount: wird „Filter“




 File Abstraction Layer                       3/31/2012   13
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
Auswirkungen für
                Redakteure
• Schauen wir uns einmal an…




File Abstraction Layer           3/31/2012   15
Auswirkungen für
                 Redakteure




• Zusätzlicher Pfeil zum Bearbeiten von Meta-Daten
• Meta-Daten durch Extensions erweiterbar


 File Abstraction Layer                       3/31/2012   16
Auswirkungen für
                Redakteure
                         • Meta-Daten ohne
                           Media-Extension




File Abstraction Layer                       3/31/2012   17
Auswirkungen für
                Redakteure
                         • Meta-Daten ohne
                           Media-Extension




File Abstraction Layer                       3/31/2012   18
Auswirkungen für
                Redakteure




File Abstraction Layer           3/31/2012   19
Auswirkungen für
                Redakteure




File Abstraction Layer           3/31/2012   20
Nutzung durch
                       Entwickler
• Collections in einer FlexForm, field „fileCollections“
   (Beispiel aus Controller der media_gallery)




 File Abstraction Layer                            3/31/2012   21
Nutzung durch
                       Entwickler
• File-Objekte aus einem typolink-Parameter
   (Code Beispiel aus dem Media-Element)




 File Abstraction Layer                       3/31/2012   22
Nutzung durch
                       Entwickler
• TypoScript Objekt FILES
   (Code Beispiel: Uploads Rendering CSS Styled Content)




 File Abstraction Layer                                    3/31/2012   23

Der File Abstraction Layer

  • 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 verwendetPHP 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 nurnoch 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
  • 9.
    Architektur was wird indexiert/gespeichert? • File: Datenbank (sys_file) • Folder: transient • Storage: Datenbank (sys_storage) • FileReference: Datenbank (sys_file_reference) • ProcessedFile: Datenbank (sys_file_processedfile) • Datenbank-Einträge: [UID] • Folder: [???] File Abstraction Layer 3/31/2012 9
  • 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
  • 13.
    Architektur Storage & Mount-Points • Mount-Points: Top-Level Objekte für Datei-Baum • Storages: „Top-Level-Funktion“ • File-Mount: wird „Filter“ File Abstraction Layer 3/31/2012 13
  • 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
  • 19.
    Auswirkungen für Redakteure File Abstraction Layer 3/31/2012 19
  • 20.
    Auswirkungen für Redakteure File Abstraction Layer 3/31/2012 20
  • 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