Default upload folder
Make it possible to configure the default upload folder for a certain TCA column, (*1)
How to use:, (*2)
- Download from TER or require (
composer require beechit/default-upload-folder
) extension default_upload_folder
- Install extension default_upload_folder via the extension manager
- Create the default folders or the folder is automatically created (Editors needs access to storage and the folder
root)
- Add configuration to pageTs
default_upload_folders {
# folder can be a combined identifier
tx_news_domain_model_news = 1:news
# Or a folder relative to the default upload folder of the user
tx_news_domain_model_news = news
# You can set a folder for the whole table or for a specific field of that table
tx_news_domain_model_news.fal_related_files = news_downloads
tx_news_domain_model_news.fal_media = news_media
# You can set a fallback for all tables
defaultForAllTables = 1:myDefaultUploadFolderForThisPartOfTheTree
# You can set a default year/month/day folder within the set default folder
tx_news_domain_model_news.dateformat = 1
tx_news_domain_model_news = 1:news/{Y}/{m}
}
FAQ, (*3)
What happens when the editor does not have access to the upload folder?, (*4)
The "Select & upload files" and "Add media by URL" buttons are not available for the editor, (*5)
How do the fallbacks work?, (*6)
- First it will check if there is a default upload folder for the table & field combination.
- Then it will check if there is a default upload folder for the table.
- Finally, it will check if there is configuration for
defaultForAllTables
Are folders automatically created?, (*7)
Yes, but only if path set with combined identifiers like 1:myNewsPicturesFolder, (*8)
How to use the year/month/week/day feature?, (*9)
- Make sure the variable
tx_mews_domain_model_news
has the dateformat
value set to 1
.
- Then (over)write the original variable however you prefer:
tx_news_domain_model_news = 1:news/{Y}/{m}
- This will translate into:
1:news/2023/06
which in turn creates the directory: news/2023/06
Why does the year/month/week/day feature not use the php strftime function & format?, (*10)
The strftime function has been deprecated in PHP 8.1, and will
be removed in PHP 9., (*11)
Currently, there is no proper solution that takes localisation in consideration. Hence, the choice to create a custom
interpreter.
The values used are based on the date() -> Parameter Values
format.
the values currently in use are:
- Y - A four digit representation of a year
- y - A two digit representation of a year
- m - A numeric representation of a month (from 01 to 12)
- n - A numeric representation of a month, without leading zeros (1 to 12)
- d - The day of the month (from 01 to 31)
- j - The day of the month without leading zeros (1 to 31)
- W - The ISO-8601 week number of year (weeks starting on Monday)
- w - A numeric representation of the day (0 for Sunday, 6 for Saturday), (*12)
The other values are currently not in use., (*13)
This functionality might be refactored in the future when php offers a proper replacement to the removal
of strftime
., (*14)
Requirements:, (*15)
TYPO3 V12.4, (*16)
Changes TYPO3 V12:, (*17)
Converted from Hook to Event, as Hooks are depricated., (*18)
Specifically: https://docs.typo3.org/m/typo3/reference-coreapi/12.4/en-us/ApiOverview/Events/Events/Core/Resource/AfterDefaultUploadFolderWasResolvedEvent.html, (*19)
Added Services.yaml (as required for Event handling)
Now receives $backendUserAuthentication directly from $GLOBALS['BE_USER']., (*20)