The basic idea of the File Abstraction Layer is to have a DB driven layer between TYPO3 and your assets. Utilizing this will open up completely new possibilities like displaying usage information on a asset or to deny users to delete an asset which is used somewhere on the website. FAL will lower the amount of website traffic because duplicate images are avoided within the website. There is only one single reference to the file. No duplicates any more in your uploads folder.
The team started with four people on Thursday to discuss the basics of what we are going to do and how we are going to divide the tasks. On Friday most people arrived to participate in the code sprint.
New uploading feature
One exciting feature is the upload feature that will be integrated separately from the abstraction layer, replacing the flash mass up-loader. Plupload will be used for file upload. Plupload allows you to upload files using HTML5 Gears, Silverlight, Flash, BrowserPlus or normal forms, providing some unique features such as upload progress, image resizing and chunked uploads. You can also imagine using this in the front end, although that is out of the scope of the current project.
Another new feature is that an editor will be able to choose the path while uploading assets. If FAL detects that a given asset is already available in the selected folder it will prompt about that issue and offer the editor choices what to do prior to uploading.
Element browser with on-the-fly indexing
The element browser has been adapted for use with the File Abstraction Layer. It will look just like an editor would expect it to look with a listing of files within a given directory. If files are not yet indexed (because they were uploaded by FTP by example.) they will be indexed on the fly, so the editor does not have to worry about whether he/she already indexed the files to use.
Migration wizard
FAL will also ship with a migration task for scheduler which will check for files being referenced in the old way, copy or move them to a specified location within the standard mount “fileadmin” and index them. After these file operations it will create the necessary relation records.The migration task can be configured to work on any table within TYPO3, so migrating extensions can be done pretty quick.
The way the paths are being created are highly configurable with hooks that will offer placeholders for mapping folder names to values in the processed record.
Finally, if you don’t have access to CRON on your server you can simply tell the scheduler task how many DB records to process in one run, so you don’t risk running into timeouts on slow machines or huge websites.
New Typoscript features
There is a new Typoscript directive to access assets via TS. In addition to that, FAL will fill in file-fields in every content object to maintain 100% backwards compatibility. Extension authors can configure file-fields in their tables to be over layed transparently too.
Visual-Representation (former “thumbs”)
The generation of thumbnails will be brought to a whole new level of possibilities.Thumbnails can only be created for images right now, all other types of assets are not respected in either front- nor backend.
The new VR logic will offer a service-based approach to display information on any asset type. Imagine having a box for a MP3-file displaying cover-art, the artist, album and trackname for a given asset or an animated GIF for videos. The possibilities are quite big. Although it’s service-based we encourage extension developers to contribute VR-services to the FAL core.
Synopsis & Outlook
FAL will open up a whole lot of possibilites for extension authors to work with files. The file backend API will be extendable to use different backends like Amazons S3, Akamai CDN or even Flickr on a “per-asset” basis.
Also extension authors can hook into the file selection methods to implement Access Control Lists for files or generate usage statistics about assets.
Features like adding captions, alt- and title-tags for each individual asset are also possible without having to count newlines, as it currently is.
Thanks again wmdb (Mattes and Pekue) for hosting the code sprint. Thanks Marketing Factory (Ingo Schmitt) for the Argentinian dinner on friday. Thanks Cast Iron Coding (Zach Davis) and Web Consulting (Kurt Dirnbauer) for sponsoring the Italian pizza, Portuguese tapas and the German beer. A special thanks goes out to our American friend Dan Osipov for joining us.