.. include:: ../Includes.txt
.. _administrator-upgrade-wizards:
Upgrade wizards
---------------
DCE ships a bunch of upgrade wizards with, to upgrade from older releases of DCE:
.. contents:: :local:
FixMalformedDceFieldVariableNamesUpdate
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
This update checks all DCE field variables for being valid. If not it can correct them automatically.
MigrateDceFieldDatabaseRelationUpdate
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In a very old version of DCE (0.x) the relations between DCE fields and DCEs were m:n. This wizard helps to migrate
old MM relations.
.. warning::
Do not delete the old MM tables, before you have performed this upgrade wizard.
Database compare offers you to delete the tables, what you can do, afterwards.
MigrateFlexformSheetIdentifierUpdate
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In the past DCE named tabs in FlexForm configuration like this:
::
But this has the effect that all your data is broken, when you change
the order of tabs in a DCE. Now the sheets have a named identifier. You
can set the identifier in the variable field which is also visible for
tab fields, now.
The FlexForm configuration looks like this now:
::
The very first sheet has the identifier/variable "tabGeneral" by default. This wizard takes are about this.
.. _administrator-upgrade-wizards-file2fal:
FileToFalUpdate
~~~~~~~~~~~~~~~
Migrates old "type: group, internal_type: file" DCEs and content elements based on it.
Moving files from uploads/ to fileadmin/ and index by FAL. Also migrating section fields, with old image configurations.
Required for TYPO3 10 and higher.
**All operations get logged in a separate log file:** ``var/log/dce_update_wizards.log``
What it does
^^^^^^^^^^^^
First, the update wizard detects DCEs with fields which got the old ``type: group, internal_type: file`` configuration given.
It also checks the existence of media files within content elements based on those DCEs.
When executing the update wizard, the following changes get applied:
1. Create new directories in fileadmin (based on configured ``uploadfolder``). When your files were located in ``/public/uploads/pics``
the directory ``/public/fileadmin/uploads/pics`` will get created
2. Moving the media files
3. Indexing moved media files in FAL
4. Updating the old DCE field configuration with "FAL: File Abstraction Layer" configuration, respecting
- minitems
- maxitems
- allowed (file extensions)
5. Create new sys_file_reference entries (one for each media file)
6. Update tt_content's pi_flexform contents (replace comma separated list of file names with amount of existing sys_file_references)
The steps 4 and 5 work differently for section fields. Instead of using FAL/inline it creates a group field pointing to sys_file.
And instead of creating sys_file_reference entries, it writes the uids of sys_file in the pi_flexform.
In order to apply the changes to TYPO3's system caches, **you need to flush all system caches manually**.
Next steps
^^^^^^^^^^
Unfortunately this migration script is not able to also update your Fluid templates automatically.
To help you with that, the log file (``var/log/dce_update_wizards.log``) contains a list of affected DCEs,
once the update wizard has been executed successfully.
There are two common cases:
**Single image output**
When you limited the field to one single image, your Fluid template probably looks like that, when it's about outputting the image:
.. code-block:: html
Because FAL **always** returns a collection of images, you need to change this output to:
.. code-block:: html
Because we use FAL now, we replace the **src** by the **image** attribute. Now, within ``{field.img.0}`` we got a
FileReference object. In order to only return the first (and only) image in this collection, we append ``.0`` to the variable.
Also we get rid of the image base path, which get handled by FAL now.
**Multi image output**
When you already dealt with multiple images, your template most likely looks like that:
.. code-block:: html
With the old configuration multiple images has been stored as comma separated string (e.g. ``image1.jpg,image2.jpg``).
Now, ``field.images`` contains the collection of FileReference objects, which we can iterate through this way:
.. code-block:: html
We just need to remove the usage of ``-> dce:explode()`` view helper and apply the same changes to the image view helper,
as we did for a single image.
This adjustment also works with images inside of sections (there, ``sys_file`` is being used instead of ``sys_file_reference``).
InlineFalToFileUpdate
~~~~~~~~~~~~~~~~~~~~~
Migrates old FAL `type: inline` DCE field configurations to new `type: file`.
MigrateFlexformSysFileReferencesUpdate
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Migrates records in `sys_file_reference` used by DCEs (FlexForms).